summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--[-rwxr-xr-x]include/battle.h393
-rw-r--r--include/battle_ai.h1
-rw-r--r--include/battle_records.h5
-rw-r--r--include/contest_painting.h5
-rw-r--r--[-rwxr-xr-x]include/decoration.h13
-rw-r--r--include/decoration_inventory.h2
-rw-r--r--include/event_data.h16
-rw-r--r--include/field_effect.h12
-rw-r--r--include/field_fadetransition.h2
-rw-r--r--include/field_map_obj.h2
-rw-r--r--include/field_special_scene.h1
-rw-r--r--include/field_specials.h8
-rw-r--r--include/flags.h24
-rw-r--r--include/global.fieldmap.h2
-rw-r--r--include/global.h53
-rw-r--r--include/graphics.h15
-rw-r--r--include/item.h6
-rw-r--r--include/item_use.h25
-rw-r--r--include/libgncmultiboot.h1
-rw-r--r--[-rwxr-xr-x]include/menu.h4
-rw-r--r--[-rwxr-xr-x]include/menu_helpers.h23
-rw-r--r--include/mystery_event_script.h6
-rw-r--r--[-rwxr-xr-x]include/pokeblock.h11
-rw-r--r--[-rwxr-xr-x]include/pokemon.h21
-rw-r--r--include/pokemon_menu.h1
-rw-r--r--[-rwxr-xr-x]include/pokenav.h0
-rw-r--r--include/record_mixing.h10
-rw-r--r--[-rwxr-xr-x]include/region_map.h73
-rw-r--r--include/rom3.h22
-rw-r--r--include/rom4.h12
-rw-r--r--include/save.h2
-rw-r--r--include/script.h4
-rw-r--r--include/secret_base.h1
-rw-r--r--[-rwxr-xr-x]include/strings.h0
-rw-r--r--include/text.h2
-rw-r--r--include/trainer_card.h16
-rw-r--r--[-rwxr-xr-x]include/use_pokeblock.h3
-rw-r--r--include/util.h1
-rw-r--r--[-rwxr-xr-x]include/vars.h1
39 files changed, 505 insertions, 294 deletions
diff --git a/include/battle.h b/include/battle.h
index d4cb53689..12faee537 100755..100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -21,101 +21,109 @@
#define AI_ACTION_DONE 0x0001
#define AI_ACTION_FLEE 0x0002
-#define AI_ACTION_WATCH 0x0004
-#define AI_ACTION_DO_NOT_ATTACK 0x0008
+#define AI_ACTION_WATCH 0x0004
+#define AI_ACTION_DO_NOT_ATTACK 0x0008
#define AI_ACTION_UNK5 0x0010
#define AI_ACTION_UNK6 0x0020
#define AI_ACTION_UNK7 0x0040
#define AI_ACTION_UNK8 0x0080
-#define STATUS_SLEEP 0x7
-#define STATUS_POISON 0x8
-#define STATUS_BURN 0x10
-#define STATUS_FREEZE 0x20
-#define STATUS_PARALYSIS 0x40
-#define STATUS_TOXIC_POISON 0x80
+#define STATUS_SLEEP 0x7
+#define STATUS_POISON 0x8
+#define STATUS_BURN 0x10
+#define STATUS_FREEZE 0x20
+#define STATUS_PARALYSIS 0x40
+#define STATUS_TOXIC_POISON 0x80
#define STATUS2_CONFUSION 0x00000007
#define STATUS2_UPROAR 0x00000070
+#define STATUS2_BIDE 0x00000300 //two bits 0x100 0x200
#define STATUS2_LOCK_CONFUSE 0x00000C00
#define STATUS2_MULTIPLETURNS 0x00001000
#define STATUS2_WRAPPED 0x0000E000
+#define STATUS2_INFATUATION 0x000F0000
#define STATUS2_FOCUS_ENERGY 0x00100000
#define STATUS2_TRANSFORMED 0x00200000
#define STATUS2_RECHARGE 0x00400000
#define STATUS2_RAGE 0x00800000
#define STATUS2_SUBSTITUTE 0x01000000
+#define STATUS2_DESTINY_BOND 0x02000000
#define STATUS2_ESCAPE_PREVENTION 0x04000000
#define STATUS2_NIGHTMARE 0x08000000
#define STATUS2_CURSED 0x10000000
#define STATUS2_FORESIGHT 0x20000000
+#define STATUS2_DEFENSE_CURL 0x40000000
+#define STATUS2_TORMENT 0x80000000
-#define STATUS3_LEECHSEED_RECEIVER 0x3 //two bits for the bank that gets hp
+#define STATUS3_LEECHSEED_BANK 0x3
#define STATUS3_LEECHSEED 0x4
#define STATUS3_ALWAYS_HITS 0x18 //two bits
#define STATUS3_PERISH_SONG 0x20
#define STATUS3_ON_AIR 0x40
#define STATUS3_UNDERGROUND 0x80
#define STATUS3_MINIMIZED 0x100
-#define STATUS3_CHARGED_UP 0x200
#define STATUS3_ROOTED 0x400
+#define STATUS3_CHARGED_UP 0x200
+#define STATUS3_YAWN 0x1800 //two bits
+#define STATUS3_IMPRISIONED 0x2000
#define STATUS3_GRUDGE 0x4000
#define STATUS3_CANT_SCORE_A_CRIT 0x8000
#define STATUS3_MUDSPORT 0x10000
#define STATUS3_WATERSPORT 0x20000
#define STATUS3_UNDERWATER 0x40000
-#define HITMARKER_x20 0x0000020
-#define HITMARKER_DESTINYBOND 0x0000040
-#define HITMARKER_NO_ANIMATIONS 0x0000080
-#define HITMARKER_IGNORE_SUBSTITUTE 0x0000100
-#define HITMARKER_NO_ATTACKSTRING 0x0000200
-#define HITMARKER_ATTACKSTRING_PRINTED 0x0000400
-#define HITMARKER_NO_PPDEDUCT 0x0000800
-#define HITMARKER_IGNORE_SAFEGUARD 0x0002000
-#define HITMARKER_SYNCHRONISE_EFFECT 0x0004000
-#define HITMARKER_IGNORE_ON_AIR 0x0010000
-#define HITMARKER_IGNORE_UNDERGROUND 0x0020000
-#define HITMARKER_IGNORE_UNDERWATER 0x0040000
-#define HITMARKER_x80000 0x0080000
-#define HITMARKER_x100000 0x0100000
-#define HITMARKER_x400000 0x0400000
-#define HITMARKER_x800000 0x0800000
-#define HITMARKER_GRUDGE 0x1000000
-#define HITMARKER_OBEYS 0x2000000
+#define STATUS3_SEMI_INVULNERABLE ((STATUS3_UNDERGROUND | STATUS3_ON_AIR | STATUS3_UNDERWATER))
+
+#define HITMARKER_x20 0x00000020
+#define HITMARKER_DESTINYBOND 0x00000040
+#define HITMARKER_NO_ANIMATIONS 0x00000080
+#define HITMARKER_IGNORE_SUBSTITUTE 0x00000100
+#define HITMARKER_NO_ATTACKSTRING 0x00000200
+#define HITMARKER_ATTACKSTRING_PRINTED 0x00000400
+#define HITMARKER_NO_PPDEDUCT 0x00000800
+#define HITMARKER_PURSUIT_TRAP 0x00001000
+#define HITMARKER_IGNORE_SAFEGUARD 0x00002000
+#define HITMARKER_SYNCHRONISE_EFFECT 0x00004000
+#define HITMARKER_IGNORE_ON_AIR 0x00010000
+#define HITMARKER_IGNORE_UNDERGROUND 0x00020000
+#define HITMARKER_IGNORE_UNDERWATER 0x00040000
+#define HITMARKER_x80000 0x00080000
+#define HITMARKER_x100000 0x00100000
+#define HITMARKER_x400000 0x00400000
+#define HITMARKER_x800000 0x00800000
+#define HITMARKER_GRUDGE 0x01000000
+#define HITMARKER_OBEYS 0x02000000
+#define HITMARKER_x8000000 0x08000000
#define HITMARKER_FAINTED(bank) ((gBitTable[bank] << 0x1C))
#define HITMARKER_UNK(bank) ((0x10000000 << bank))
+#define SIDE_STATUS_REFLECT (1 << 0)
+#define SIDE_STATUS_LIGHTSCREEN (1 << 1)
+#define SIDE_STATUS_SPIKES (1 << 4)
+#define SIDE_STATUS_SAFEGUARD (1 << 5)
+#define SIDE_STATUS_FUTUREATTACK (1 << 6)
+#define SIDE_STATUS_MIST (1 << 8)
+#define SIDE_STATUS_SPIKES_DAMAGED (1 << 9)
+
#define MAX_TRAINER_ITEMS 4
#define MAX_MON_MOVES 4
#define MAX_BANKS_BATTLE 4
-#define weather_rain 1
-#define weather_downpour 2
-#define weather_permament_rain 4
-#define WEATHER_RAINY ((weather_rain | weather_downpour | weather_permament_rain))
-
-#define weather_sandstorm 8
-#define weather_permament_sandstorm 0x10
-#define WEATHER_SANDSTORMY ((weather_sandstorm | weather_permament_sandstorm))
-
-#define weather_sun 0x20
-#define weather_permament_sun 0x40
-#define WEATHER_SUNNY ((weather_sun | weather_permament_sun))
-
-#define weather_hail 0x80
+#define WEATHER_RAIN_TEMPORARY (1 << 0)
+#define WEATHER_RAIN_DOWNPOUR (1 << 1)
+#define WEATHER_RAIN_PERMANENT (1 << 2)
+#define WEATHER_RAIN_ANY ((WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_DOWNPOUR | WEATHER_RAIN_PERMANENT))
+#define WEATHER_SANDSTORM_TEMPORARY (1 << 3)
+#define WEATHER_SANDSTORM_PERMANENT (1 << 4)
+#define WEATHER_SANDSTORM_ANY ((WEATHER_SANDSTORM_TEMPORARY | WEATHER_SANDSTORM_PERMANENT))
+#define WEATHER_SUN_TEMPORARY (1 << 5)
+#define WEATHER_SUN_PERMANENT (1 << 6)
+#define WEATHER_SUN_ANY ((WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT))
+#define WEATHER_HAIL (1 << 7)
// needed to match the hack that is get_item, thanks cam, someone else clean this up later.
extern u8 unk_2000000[];
-enum
-{
- WEATHER_SUN,
- WEATHER_RAIN,
- WEATHER_SANDSTORM,
- WEATHER_HAIL,
-};
-
struct Trainer
{
/*0x00*/ u8 partyFlags;
@@ -165,31 +173,28 @@ struct BattleStruct /* 0x2000000 */
/*0x15DDE*/ u8 unk15DDE;
/*0x15DDF*/ u8 unk15DDF;
/*0x15DE0*/ u8 filler15DE0[0x222];
- /*0x16002*/ u8 AnimTurn;
- /*0x16003*/ u8 ScriptingActive;
- /*0x16004*/ u8 WrappedMove1[4];
- /*0x16008*/ u8 WrappedMove2[4];
+ /*0x16002*/ u8 animTurn;
+ /*0x16003*/ u8 scriptingActive;
+ /*0x16004*/ u8 wrappedMove1[4];
+ /*0x16008*/ u8 wrappedMove2[4];
/*0x1600C*/ u8 cmd49StateTracker;
/*0x1600D*/ u8 unk1600D;
/*0x1600E*/ u8 unk1600E;
- /*0x1600F*/ u8 atk23StateTracker;
- /*0x16010*/ u8 unk16010;
- /*0x16011*/ u8 unk16011;
- /*0x16012*/ u8 unk16012;
- /*0x16013*/ u8 unk16013;
+ /*0x1600F*/ u8 cmd23StateTracker;
+ /*0x16010*/ u8 moveTarget[4];
/*0x16014*/ u8 unk16014;
/*0x16015*/ u8 unk16015;
/*0x16016*/ u8 unk16016;
/*0x16017*/ u8 unk16017;
/*0x16018*/ u8 expGetterID;
/*0x16019*/ u8 unk16019;
- /*0x1601A*/ u8 unk1601A;
+ /*0x1601A*/ u8 atk5A_StateTracker; //also atk5B, statetracker
/*0x1601B*/ u8 wildVictorySong;
- /*0x1601C*/ u8 DynamicMoveType;
+ /*0x1601C*/ u8 dynamicMoveType;
/*0x1601D*/ u8 unk1601D;
/*0x1601E*/ u8 statChanger;
- /*0x1601F*/ u8 DmgMultiplier;
- /*0x16020*/ u8 WrappedBy[4];
+ /*0x1601F*/ u8 dmgMultiplier;
+ /*0x16020*/ u8 wrappedBy[4];
/*0x16024*/ u8 unk16024;
/*0x16025*/ u8 unk16025;
/*0x16026*/ u8 unk16026;
@@ -240,7 +245,7 @@ struct BattleStruct /* 0x2000000 */
/*0x16053*/ u8 unk16053;
/*0x16054*/ u8 unk16054;
/*0x16055*/ u8 unk16055;
- /*0x16056*/ u8 unk16056;
+ /*0x16056*/ u8 moneyMultiplier;
/*0x16057*/ u8 unk16057;
/*0x16058*/ u8 unk16058;
/*0x16059*/ u8 unk16059;
@@ -250,38 +255,11 @@ struct BattleStruct /* 0x2000000 */
/*0x1605E*/ u8 unk1605E;
/*0x1605F*/ u8 sentInPokes;
/*0x16060*/ u8 unk16060[4];
- /*0x16064*/ u8 unk16064;
- /*0x16065*/ u8 unk16065;
- /*0x16066*/ u8 unk16066;
- /*0x16067*/ u8 unk16067;
- /*0x16068*/ u8 unk16068;
- /*0x16069*/ u8 unk16069;
- /*0x1606A*/ u8 unk1606A;
- /*0x1606B*/ u8 unk1606B;
- /*0x1606C*/ u8 unk1606C;
- /*0x1606D*/ u8 unk1606D;
- /*0x1606E*/ u8 unk1606E;
- /*0x1606F*/ u8 unk1606F;
- /*0x16070*/ u8 unk16070;
- /*0x16071*/ u8 unk16071;
- /*0x16072*/ u8 unk16072;
- /*0x16073*/ u8 unk16073;
- /*0x16074*/ u8 unk16074;
- /*0x16075*/ u8 unk16075;
- /*0x16076*/ u8 unk16076;
- /*0x16077*/ u8 unk16077;
+ /*0x16064*/ u8 unk16064[4];
+ /*0x16068*/ u8 unk16068[4];
+ /*0x1606C*/ u8 unk1606C[4][3];
/*0x16078*/ u8 unk16078;
- /*0x16079*/ u8 unk16079;
- /*0x1607A*/ u8 unk1607A;
- /*0x1607B*/ u8 unk1607B;
- /*0x1607C*/ u8 unk1607C;
- /*0x1607D*/ u8 unk1607D;
- /*0x1607E*/ u8 unk1607E;
- /*0x1607F*/ u8 unk1607F;
- /*0x16080*/ u8 unk16080;
- /*0x16081*/ u8 unk16081;
- /*0x16082*/ u8 unk16082;
- /*0x16083*/ u8 unk16083;
+ /*0x16079*/ u8 caughtNick[11];
/*0x16084*/ u8 unk16084;
/*0x16085*/ u8 unk16085;
/*0x16086*/ u8 unk16086;
@@ -302,17 +280,17 @@ struct BattleStruct /* 0x2000000 */
/*0x16098*/ u8 unk16098;
/*0x16099*/ u8 unk16099;
/*0x1609A*/ u8 unk1609a;
- /*0x1609B*/ u8 unk1609b;
- /*0x1609C*/ u8 unk1609C;
+ /*0x1609B*/ u8 castformToChangeInto;
+ /*0x1609C*/ u8 atk6C_statetracker;
/*0x1609D*/ u8 unk1609D;
/*0x1609E*/ u8 unk1609E;
/*0x1609F*/ u8 unk1609F;
/*0x160A0*/ u8 unk160a0;
- /*0x160A1*/ u8 AnimTargetsHit;
+ /*0x160A1*/ u8 animTargetsHit;
/*0x160A2*/ u8 expGetterBank;
/*0x160A3*/ u8 unk160A3;
- /*0x160A4*/ u8 AnimArg1;
- /*0x160A5*/ u8 AnimArg2;
+ /*0x160A4*/ u8 animArg1;
+ /*0x160A5*/ u8 animArg2;
/*0x160A6*/ u8 unk160A6;
/*0x160A7*/ u8 unk160A7;
/*0x160A8*/ u8 unk160A8;
@@ -335,12 +313,9 @@ struct BattleStruct /* 0x2000000 */
/*0x160B9*/ u8 unk160B9;
/*0x160BA*/ u8 unk160Ba;
/*0x160BB*/ u8 unk160Bb;
- /*0x160BC*/ u8 unk160BC;
- /*0x160BD*/ u8 unk160BD;
- /*0x160BE*/ u8 unk160BE;
- /*0x160BF*/ u8 unk160BF;
+ /*0x160BC*/ u16 HP_OnSwitchout[2];
/*0x160C0*/ u8 unk160C0;
- /*0x160C1*/ u8 unk160C1;
+ /*0x160C1*/ u8 hpScale;
/*0x160C2*/ u8 unk160C2;
/*0x160C3*/ u8 unk160C3;
/*0x160C4*/ u8 unk160C4;
@@ -349,59 +324,70 @@ struct BattleStruct /* 0x2000000 */
/*0x160C7*/ u8 unk160C7;
/*0x160C8*/ u8 unk160C8;
/*0x160C9*/ u8 unk160C9;
- /*0x160CA*/ u8 SynchroniseEffect;
+ /*0x160CA*/ u8 synchroniseEffect;
/*0x160CB*/ u8 linkPlayerIndex;
- /*0x160CC*/ u16 UsedHeldItems[4];
+ /*0x160CC*/ u16 usedHeldItems[4];
u8 filler2[0x72E];
/* 0x16A00 */ struct UnkBattleStruct1 unk_2016A00_2;
};
struct DisableStruct
{
- /*0x00*/ u8 filler0[0x3];
- /*0x04*/ u16 DisabledMove;
- /*0x06*/ u16 EncoredMove;
- /*0x08*/ u8 ProtectUses;
- /*0x09*/ u8 StockpileCounter;
- /*0x0A*/ u8 SubstituteHP;
- u8 fillerB[4];
- u8 unkF_0:4;
- u8 unkF_4:4;
- u8 filler10[3];
- /*0x13*/ u8 taunt:4;
- /*0x13*/ u8 unkC:4;
- /*0x14*/ u8 BankPreventingEscape;
- /*0x15*/ u8 BankWithSureHit;
- /*0x16*/ u8 IsFirstTurn;
+ /*0x00*/ u32 unk0;
+ /*0x04*/ u16 disabledMove;
+ /*0x06*/ u16 encoredMove;
+ /*0x08*/ u8 protectUses;
+ /*0x09*/ u8 stockpileCounter;
+ /*0x0A*/ u8 substituteHP;
+ /*0x0B*/ u8 disableTimer1 : 4;
+ /*0x0B*/ u8 disableTimer2 : 4;
+ /*0x0C*/ u8 encoredMovePos;
+ /*0x0D*/ u8 unkD;
+ /*0x0E*/ u8 encoreTimer1 : 4;
+ /*0x0E*/ u8 encoreTimer2 : 4;
+ /*0x0F*/ u8 perishSong1 : 4;
+ /*0x0F*/ u8 perishSong2 : 4;
+ /*0x10*/ u8 furyCutterCounter;
+ /*0x11*/ u8 rolloutTimer1 : 4;
+ /*0x11*/ u8 rolloutTimer2 : 4;
+ /*0x12*/ u8 chargeTimer1 : 4;
+ /*0x12*/ u8 chargeTimer2 : 4;
+ /*0x13*/ u8 tauntTimer1:4;
+ /*0x13*/ u8 tauntTimer2:4;
+ /*0x14*/ u8 bankPreventingEscape;
+ /*0x15*/ u8 bankWithSureHit;
+ /*0x16*/ u8 isFirstTurn;
/*0x17*/ u8 unk17;
- /*0x18*/ u8 TruantCounter;
- /*0x19*/ u8 RechargeCounter;
+ /*0x18*/ u8 truantCounter : 1;
+ /*0x18*/ u8 unk18_a : 3;
+ /*0x18*/ u8 unk18_b : 4;
+ /*0x19*/ u8 rechargeCounter;
/*0x1A*/ u8 unk1A[2];
};
struct BattleResults
{
- u8 PlayerFaintCounter; // 0x0
- u8 OpponentFaintCounter; // 0x1
+ u8 playerFaintCounter; // 0x0
+ u8 opponentFaintCounter; // 0x1
u8 unk2; // 0x2
u8 unk3; // 0x3
u8 unk4; // 0x4
u8 unk5_0:1; // 0x5
u8 unk5_1:1; // 0x5
- u16 Poke1Species; // 0x6
- u8 PokeString1[10]; // 0x8
+ u16 poke1Species; // 0x6
+ u8 pokeString1[10]; // 0x8
u8 unk12;
- u8 BattleTurnCounter; // 0x13
- u8 PokeString2[10]; // 0x14
+ u8 battleTurnCounter; // 0x13
+ u8 pokeString2[10]; // 0x14
u8 filler1E[2];
- u16 LastOpponentSpecies; // 0x20
- u16 LastUsedMove; // 0x22
- u16 OpponentMove; // 0x24
- u16 OpponentSpecies; // 0x26
- u16 CaughtPoke; // 0x28
- u8 CaughtNick[10]; // 0x2A
+ u16 lastOpponentSpecies; // 0x20
+ u16 lastUsedMove; // 0x22
+ u16 opponentMove; // 0x24
+ u16 opponentSpecies; // 0x26
+ u16 caughtPoke; // 0x28
+ u8 caughtNick[10]; // 0x2A
u8 filler34[2];
- u8 unk36[10];
+ u8 unk36[10]; // usedBalls?
};
struct Struct2017800
@@ -454,34 +440,34 @@ struct Struct20238C8
struct ProtectStruct
{
/*field0*/
- u32 Protected:1;
- u32 Endured:1;
- u32 OnlyStruggle:1;
- u32 HelpingHand:1;
- u32 BounceMove:1;
- u32 StealMove:1;
- u32 Flag0Unknown:1;
- u32 PrlzImmobility:1;
+ u32 protected:1;
+ u32 endured:1;
+ u32 onlyStruggle:1;
+ u32 helpingHand:1;
+ u32 bounceMove:1;
+ u32 stealMove:1;
+ u32 flag0Unknown:1;
+ u32 prlzImmobility:1;
/*field1*/
- u32 ConfusionSelfDmg:1;
- u32 NotEffective:1;
- u32 ChargingTurn:1;
- u32 FleeFlag:2; //for RunAway and Smoke Ball
- u32 UsedImprisionedMove:1;
- u32 LoveImmobility:1;
- u32 UsedDisabledMove:1;
+ u32 confusionSelfDmg:1;
+ u32 notEffective:1;
+ u32 chargingTurn:1;
+ u32 fleeFlag:2; //for RunAway and Smoke Ball
+ u32 usedImprisionedMove:1;
+ u32 loveImmobility:1;
+ u32 usedDisabledMove:1;
/*field2*/
- u32 UsedTauntedMove:1;
- u32 Flag2Unknown:1;
- u32 FlinchImmobility:1;
- u32 NotFirstStrike:1;
- u32 Free : 4;
+ u32 usedTauntedMove:1;
+ u32 flag2Unknown:1;
+ u32 flinchImmobility:1;
+ u32 notFirstStrike:1;
+ u32 free : 4;
/*field3*/
u32 field3 : 8;
- u32 PhysicalDmg;
- u32 SpecialDmg;
- u8 PhysicalBank;
- u8 SpecialBank;
+ u32 physicalDmg;
+ u32 specialDmg;
+ u8 physicalBank;
+ u8 specialBank;
u16 fieldE;
};
@@ -497,7 +483,7 @@ struct SpecialStatus
u8 focusBanded : 1;
u8 field1[3];
u32 moveturnLostHP;
- u32 moveturnlostHP_physical;
+ u32 moveturnLostHP_physical;
u32 moveturnLostHP_special;
u8 moveturnPhysicalBank;
u8 moveturnSpecialBank;
@@ -507,18 +493,18 @@ struct SpecialStatus
struct sideTimer
{
- u8 reflectTimer;
- u8 reflectBank;
- u8 lightscreenTimer;
- u8 lightscreenBank;
- u8 mistTimer;
- u8 mistBank;
- u8 safeguardTimer;
- u8 safeguardBank;
- u8 followmeTimer;
- u8 followmeTarget;
- u8 spikesAmount;
- u8 fieldB;
+ u8 reflectTimer; //0x0
+ u8 lightscreenTimer; //0x1
+ u8 mistTimer; //0x2
+ u8 field3; //0x3
+ u8 field4; //0x4
+ u8 field5; //0x5
+ u8 spikesAmount; //0x6
+ u8 safeguardTimer; //0x7
+ u8 followmeTimer; //0x8
+ u8 followmeTarget; //0x9
+ u8 fieldA; //0xA
+ u8 fieldB; //0xB
};
struct WishFutureKnock
@@ -528,7 +514,7 @@ struct WishFutureKnock
s32 futureSightDmg[MAX_BANKS_BATTLE];
u16 futureSightMove[MAX_BANKS_BATTLE];
u8 wishCounter[MAX_BANKS_BATTLE];
- u8 wishUserBank[MAX_BANKS_BATTLE];
+ u8 wishUserID[MAX_BANKS_BATTLE];
u8 weatherDuration;
u8 knockedOffPokes[2];
};
@@ -551,10 +537,62 @@ extern u8 ewram[];
#define UNK_2016A00_STRUCT ((struct UnkBattleStruct1 *) (ewram + 0x16A00))
#define AI_STACK ((struct AI_Stack *) (ewram + 0x16C00))
#define AI_ARRAY_160CC ((struct SmallItemStruct *) (ewram + 0x160CC))
+#define B_FUNCTION_STACK ((struct funcStack *) (ewram + 0x17140))
#define ewram17800 ((struct Struct2017800 *) (ewram + 0x17800))
#define ewram17810 ((struct Struct2017810 *) (ewram + 0x17810))
#define ewram17840 (*(struct Struct2017840 *) (ewram + 0x17840))
+struct funcStack
+{
+ void* ptr[8];
+ u8 size;
+};
+
+extern u8 gBattleTextBuff1[];
+
+//function declarations of buffer emits
+void EmitGetAttributes(u8 buffID, u8 request, u8 c); //0x0
+void dp01_build_cmdbuf_x01_a_b_0(u8 a, u8 b, u8 c); //0x1
+void EmitSetAttributes(u8 a, u8 request, u8 c, u8 bytes, void *data); //0x2
+void EmitSwitchInAnim(u8 a, u8 b, u8 c); //0x5
+void EmitReturnPokeToBall(u8 a, u8 b); //0x6
+void EmitTrainerSlide(u8 a); //0x8
+void EmitFaintAnimation(u8 a); //0xA
+void EmitBallThrowAnim(u8 a, u8 shakes); //0xD
+//void EmitMoveAnimation(u8 a, u16 move, u8 turn, u16 power, s32 dmg, u8 happiness, void *disable_struct); //0xF
+void EmitPrintString(u8 a, u16 stringID); //0x10
+//void EmitPrintStringPlayerOnly(u8 a, u16 stringID); //0x11
+void EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e); //0x16
+//void EmitHealthBarUpdate(u8 a, u16 b); //0x18; Had to declare the second arg as u16 because s16 wont match in atk0b
+//void EmitExpBarUpdate(u8 a, u8 b, u16 c); //0x19
+void EmitStatusIconUpdate(u8 a, u32 b, u32 c); //0x1A
+void EmitStatusAnimation(u8 a, u8 b, u32 c); //0x1B
+void EmitStatusXor(u8 a, u8 b); //0x1C
+void EmitHitAnimation(u8 a); //0x29
+void EmitEffectivenessSound(u8 a, u16 sound); //0x2B
+void EmitPlaySound(u8 a, u16 sound); //0x2C
+void EmitFaintingCry(u8 a); //0x2D
+void EmitBattleIntroSlide(u8 a, u8 b); //0x2E
+void dp01_build_cmdbuf_x30_TODO(u8 a, u8 *b, u8 c); //0x30
+void dp01_build_cmdbuf_x31_31_31_31(u8 a); //0x31
+void EmitSpriteInvisibility(u8 a, u8 b); //0x33
+void EmitBattleAnimation(u8 a, u8 b, u16 c); //0x34
+void EmitResetActionMoveSelection(u8 a, u8 b); //0x36
+void dp01_build_cmdbuf_x37_a(u8 a, u8 b); //0x37
+
+#define REQUEST_ALL_BATTLE 0x0
+#define REQUEST_SPECIES_BATTLE 0x1
+#define REQUEST_HELDITEM_BATTLE 0x2
+#define REQUEST_MOVES_PP_BATTLE 0x3
+#define REQUEST_PPMOVE1_BATTLE 0x9
+#define REQUEST_PPMOVE2_BATTLE 0xA
+#define REQUEST_PPMOVE3_BATTLE 0xB
+#define REQUEST_PPMOVE4_BATTLE 0xC
+#define REQUEST_STATUS_BATTLE 0x28
+#define REQUEST_HP_BATTLE 0x2A
+
+void MarkBufferBankForExecution(u8 bank);
+
extern u8 gBattleTextBuff1[];
// asm/battle_1.o
@@ -611,7 +649,6 @@ u8 b_first_side(u8, u8, u8);
void TurnValuesCleanUp(u8);
void SpecialStatusesClear(void);
void sub_80138F0(void);
-void MarkBufferBankForExecution();
void sub_80155A4();
void CancelMultiTurnMoves(u8);
void PrepareStringBattle();
@@ -625,11 +662,11 @@ u8 TurnBasedEffects();
u8 sub_80170DC();
u8 sub_80173A4();
u8 AbilityBattleEffects(u8, u8, u8, u8, u16);
-u8 sub_801A02C();
+u8 ItemBattleEffects();
// asm/battle_4.o
void AI_CalcDmg(u8, u8);
-void TypeCalc(u16, u8, u8);
+u8 TypeCalc(u16 move, u8 bank_atk, u8 bank_def);
// asm/battle_5.o
void nullsub_91(void);
diff --git a/include/battle_ai.h b/include/battle_ai.h
index 028da2c27..2922da0b3 100644
--- a/include/battle_ai.h
+++ b/include/battle_ai.h
@@ -23,6 +23,7 @@ enum
// battle_ai
void BattleAI_SetupAIData(void);
+u8 BattleAI_GetAIActionToUse(void);
void BattleAI_DoAIProcessing(void);
void sub_810745C(void);
void AIStackPushVar(u8 *);
diff --git a/include/battle_records.h b/include/battle_records.h
index f0c1a101b..ac6c3cbdb 100644
--- a/include/battle_records.h
+++ b/include/battle_records.h
@@ -2,7 +2,8 @@
#define GUARD_BATTLE_RECORDS_H
void InitLinkBattleRecords(void);
-void PrintLinkBattleWinsLossesDraws(void *);
-void PrintLinkBattleRecord(void *, u8);
+void UpdateLinkBattleRecords(int id);
+void ShowLinkBattleRecords(void);
+void ShowBattleTowerRecords(void);
#endif // GUARD_BATTLE_RECORDS_H
diff --git a/include/contest_painting.h b/include/contest_painting.h
index ad1cecfed..48ab95fbc 100644
--- a/include/contest_painting.h
+++ b/include/contest_painting.h
@@ -49,11 +49,6 @@ struct ContestEntry
/*0x16*/ u8 trainer_name[OT_NAME_LENGTH];
};
-struct Unk3000756
-{
- /*0x00*/ u8 var_0;
-};
-
struct LabelPair
{
const u8 *prefix;
diff --git a/include/decoration.h b/include/decoration.h
index 7a6d8ef5a..2e72e305a 100755..100644
--- a/include/decoration.h
+++ b/include/decoration.h
@@ -289,16 +289,6 @@ extern u8 sub_8134194(u8); // src/decoration_inventory
extern bool8 sub_81341D4(void); // src/decoration_inventory
extern void sub_8134104(u8); // src/decoration_inventory
extern bool8 sub_807D770(void);
-extern void sub_80F944C(void); // src/menu_helpers
-extern void sub_80F9480(u8 *, u8); // src/menu_helpers
-extern void sub_80F94A4(u8, u8 *, u8, s16); // src/menu_helpers
-extern void sub_80F94F8(u8 *); // src/menu_helpers
-extern void sub_80F9520(u8 *, u8); // src/menu_helpers
-extern void DestroyVerticalScrollIndicator(u8); // src/menu_helpers
-extern void CreateVerticalScrollIndicators(u8, u8, u8); // src/menu_helpers
-extern void LoadScrollIndicatorPalette(void); // src/menu_helpers
-extern void DisplayItemMessageOnField(u8, const u8 *, TaskFunc, u16); // src/menu_helpers
-extern void BuyMenuFreeMemory(void); // src/menu_helpers
extern void sub_8109DAC(u8); // src/trader
extern void ReshowPlayerPC(u8); // src/player_pc
@@ -310,6 +300,8 @@ void sub_80FE5AC(u8);
void sub_80FE604(u8);
void sub_80FE728(u8);
void sub_80FE758(u8);
+void sub_80FE7A8(u8);
+void sub_80FE7D4(u8 *, u8);
void sub_80FE868(u8);
void sub_80FE948(u8);
void sub_80FEABC(u8, u8);
@@ -317,6 +309,7 @@ void sub_80FEC94(u8);
void sub_80FECB8(u8);
void sub_80FECE0(u8);
void sub_80FEF50(u8);
+bool8 sub_80FEFA4(void);
void sub_80FF394(u16, u16, u16);
void sub_80FF6AC(u8);
void sub_80FF960(u8);
diff --git a/include/decoration_inventory.h b/include/decoration_inventory.h
index afc354237..e59a23008 100644
--- a/include/decoration_inventory.h
+++ b/include/decoration_inventory.h
@@ -2,9 +2,11 @@
#define GUARD_DECORATION_INVENTORY_H
void ClearDecorationInventories(void);
+s8 sub_8133F9C(u8);
u8 sub_8133FE4(u8);
u8 IsThereStorageSpaceForDecoration(u8);
u8 sub_8134074(u8);
s8 sub_81340A8(u8);
+u8 sub_8134194(u8);
#endif // GUARD_DECORATION_INVENTORY_H
diff --git a/include/event_data.h b/include/event_data.h
index 5cac27cc8..98e4a6da3 100644
--- a/include/event_data.h
+++ b/include/event_data.h
@@ -25,4 +25,20 @@ u8 FlagSet(u16 id);
u8 FlagReset(u16 id);
bool8 FlagGet(u16 id);
+extern u16 gSpecialVar_0x8000;
+extern u16 gSpecialVar_0x8001;
+extern u16 gSpecialVar_0x8002;
+extern u16 gSpecialVar_0x8003;
+extern u16 gSpecialVar_0x8004;
+extern u16 gSpecialVar_0x8005;
+extern u16 gSpecialVar_0x8006;
+extern u16 gSpecialVar_0x8007;
+extern u16 gSpecialVar_0x8008;
+extern u16 gSpecialVar_0x8009;
+extern u16 gSpecialVar_0x800A;
+extern u16 gSpecialVar_0x800B;
+extern u16 gScriptResult;
+extern u16 gScriptLastTalked;
+extern u16 gScriptFacing;
+
#endif // GUARD_EVENT_DATA_H
diff --git a/include/field_effect.h b/include/field_effect.h
index cd84652b1..ea02c4131 100644
--- a/include/field_effect.h
+++ b/include/field_effect.h
@@ -109,6 +109,8 @@ void SpriteCB_PokeballGlow(struct Sprite *);
void SpriteCB_PokecenterMonitor(struct Sprite *);
void SpriteCB_HallOfFameMonitor(struct Sprite *);
+void sub_80865BC(void);
+
void PokecenterHealEffect_0(struct Task *);
void PokecenterHealEffect_1(struct Task *);
void PokecenterHealEffect_2(struct Task *);
@@ -128,6 +130,8 @@ void PokeballGlowEffect_5(struct Sprite *);
void PokeballGlowEffect_6(struct Sprite *);
void PokeballGlowEffect_7(struct Sprite *);
+void sub_8086748(void);
+
bool8 sub_80867AC(struct Task *);
bool8 sub_8086854(struct Task *);
bool8 sub_8086870(struct Task *);
@@ -136,6 +140,8 @@ bool8 sub_808699C(struct Task *);
bool8 sub_80869B8(struct Task *);
bool8 sub_80869F8(struct Task *);
+void sub_8086A2C(u8, u8);
+
bool8 sub_8086AA0(struct Task *);
bool8 sub_8086AC0(struct Task *);
bool8 sub_8086B30(struct Task *);
@@ -161,6 +167,8 @@ bool8 sub_8087124(struct Task *);
bool8 dive_2_unknown(struct Task *);
bool8 dive_3_unknown(struct Task *);
+void sub_80871B8(u8);
+
bool8 sub_808722C(struct Task *, struct MapObject *, struct Sprite *);
bool8 sub_8087264(struct Task *, struct MapObject *, struct Sprite *);
bool8 sub_8087298(struct Task *, struct MapObject *, struct Sprite *);
@@ -173,6 +181,8 @@ bool8 sub_80874FC(struct Task *, struct MapObject *, struct Sprite *);
bool8 sub_8087548(struct Task *, struct MapObject *, struct Sprite *);
bool8 sub_808759C(struct Task *, struct MapObject *, struct Sprite *);
+void sub_8087654(u8);
+
bool8 sub_80876C8(struct Task *, struct MapObject *, struct Sprite *);
bool8 sub_80876F8(struct Task *, struct MapObject *, struct Sprite *);
bool8 sub_8087774(struct Task *, struct MapObject *, struct Sprite *);
@@ -243,4 +253,6 @@ void MultiplyInvertedPaletteRGBComponents(u16, u8, u8, u8);
void sub_80878A8(void);
void sub_8087BA8(void);
+extern u32 gUnknown_0202FF84[8];
+
#endif // GUARD_FIELD_EFFECT_H
diff --git a/include/field_fadetransition.h b/include/field_fadetransition.h
index 764adfc9a..111dc92a6 100644
--- a/include/field_fadetransition.h
+++ b/include/field_fadetransition.h
@@ -16,7 +16,7 @@ void sub_8080B60(void);
void atk17_seteffectuser(void);
void sub_8080E28(void);
void sub_8080E44(void);
-int sub_8080E70(void);
+bool32 sub_8080E70(void);
void sub_8080E88(void);
void sub_8080E88();
void sp13E_warp_to_last_warp(void);
diff --git a/include/field_map_obj.h b/include/field_map_obj.h
index 6595a51ca..d2a1a9b1f 100644
--- a/include/field_map_obj.h
+++ b/include/field_map_obj.h
@@ -70,8 +70,6 @@ extern struct CameraSomething gUnknown_03004880;
extern u16 gUnknown_03004898;
extern u16 gUnknown_0300489C;
-extern u32 gUnknown_0202FF84[];
-
extern const struct Coords16 gDirectionToVector[];
void FieldObjectCB_BerryTree(struct Sprite *);
diff --git a/include/field_special_scene.h b/include/field_special_scene.h
index ef3f07120..d674f09df 100644
--- a/include/field_special_scene.h
+++ b/include/field_special_scene.h
@@ -9,5 +9,6 @@ void Task_Truck3(u8 taskId);
void Task_HandleTruckSequence(u8 taskId);
void ExecuteTruckSequence(void);
void EndTruckSequence(u8);
+void sub_80C791C(void);
#endif // GUARD_FIELD_SPECIAL_SCENE_H
diff --git a/include/field_specials.h b/include/field_specials.h
index 710f0a2a0..d61aa3b20 100644
--- a/include/field_specials.h
+++ b/include/field_specials.h
@@ -8,11 +8,6 @@ struct ElevatorMenu {
u8 var3;
};
-extern struct ElevatorMenu gUnknown_03000760[20];
-extern struct WarpData gUnknown_020297F0;
-extern u8 gBattleOutcome;
-
-extern u16 gScriptResult;
extern u8 gUnknown_02039250;
extern u8 gUnknown_02039251;
extern u32 gUnknown_02039254;
@@ -22,9 +17,6 @@ extern u8 gUnknown_0203925A;
extern u8 gUnknown_0203925B;
extern u8 gUnknown_0203925C;
-extern u16 gSpecialVar_0x8004;
-extern u16 gSpecialVar_0x8005;
-
void ResetCyclingRoadChallengeData(void);
bool32 CountSSTidalStep(u16);
u8 GetSSTidalLocation(s8 *, s8 *, s16 *, s16 *);
diff --git a/include/flags.h b/include/flags.h
index 0e408a833..a60de6ea0 100644
--- a/include/flags.h
+++ b/include/flags.h
@@ -22,6 +22,24 @@
#define BADGE07_GET 0x80D
#define BADGE08_GET 0x80E
+// cities and towns
+#define FLAG_VISITED_LITTLEROOT_TOWN 0x80F
+#define FLAG_VISITED_OLDALE_TOWN 0x810
+#define FLAG_VISITED_DEWFORD_TOWN 0x811
+#define FLAG_VISITED_LAVARIDGE_TOWN 0x812
+#define FLAG_VISITED_FALLARBOR_TOWN 0x813
+#define FLAG_VISITED_VERDANTURF_TOWN 0x814
+#define FLAG_VISITED_PACIFIDLOG_TOWN 0x815
+#define FLAG_VISITED_PETALBURG_CITY 0x816
+#define FLAG_VISITED_SLATEPORT_CITY 0x817
+#define FLAG_VISITED_MAUVILLE_CITY 0x818
+#define FLAG_VISITED_RUSTBORO_CITY 0x819
+#define FLAG_VISITED_FORTREE_CITY 0x81A
+#define FLAG_VISITED_LILYCOVE_CITY 0x81B
+#define FLAG_VISITED_MOSSDEEP_CITY 0x81C
+#define FLAG_VISITED_SOOTOPOLIS_CITY 0x81D
+#define FLAG_VISITED_EVER_GRANDE_CITY 0x81E
+
#define SYS_USE_FLASH 0x828
#define SYS_USE_STRENGTH 0x829
#define SYS_WEATHER_CTRL 0x82A
@@ -42,6 +60,9 @@
#define SYS_SHOAL_TIDE 0x83A
#define SYS_RIBBON_GET 0x83B
+#define FLAG_UNLOCK_BATTLE_TOWER 0x848
+#define FLAG_UNLOCK_SOUTHERN_ISLAND 0x849
+
#define SYS_PC_LANETTE 0x84B
#define SYS_EXDATA_ENABLE 0x84C
#define SYS_ENC_UP_ITEM 0x84D
@@ -50,6 +71,9 @@
#define SYS_BRAILLE_STRENGTH 0x850
#define SYS_BRAILLE_WAIT 0x851
#define SYS_BRAILLE_FLY 0x852
+#define SYS_HAS_EON_TICKET 0x853
+
+#define SYS_POKEMON_LEAGUE_FLY 0x854
#define SYS_TV_LATI 0x85D
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index 7589de029..4029132e8 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -166,7 +166,7 @@ struct MapHeader
/* 0x0C */ struct MapConnections *connections;
/* 0x10 */ u16 music;
/* 0x12 */ u16 mapDataId;
- /* 0x14 */ u8 name;
+ /* 0x14 */ u8 regionMapSectionId;
/* 0x15 */ u8 cave;
/* 0x16 */ u8 weather;
/* 0x17 */ u8 mapType;
diff --git a/include/global.h b/include/global.h
index 4d20ea4fc..f076274cc 100644
--- a/include/global.h
+++ b/include/global.h
@@ -469,10 +469,20 @@ struct UnkMauvilleOldManStruct2
u8 fillerF[0x2];
}; /*size = 0x2C*/
+struct MauvilleOldManTrader
+{
+ u8 unk0;
+ u8 unk1[4];
+ u8 unk5[4][11];
+ u8 unk31;
+};
+
typedef union OldMan
{
struct UnkMauvilleOldManStruct oldMan1;
struct UnkMauvilleOldManStruct2 oldMan2;
+ struct MauvilleOldManTrader trader;
+ u8 filler[0x40];
} OldMan;
struct Unk_SB_Access_Struct1
@@ -526,7 +536,9 @@ struct GabbyAndTyData
struct RecordMixing_UnknownStructSub
{
- u8 data[0x38];
+ u32 unk0;
+ u8 data[0x34];
+ //u8 data[0x38];
};
struct RecordMixing_UnknownStruct
@@ -536,6 +548,29 @@ struct RecordMixing_UnknownStruct
u16 unk74[0x2];
};
+struct LinkBattleRecord
+{
+ u8 name[8];
+ u16 trainerId;
+ u16 wins;
+ u16 losses;
+ u16 draws;
+};
+
+struct RecordMixingGiftData
+{
+ u8 unk0;
+ u8 quantity;
+ u16 itemId;
+ u8 filler4[8];
+};
+
+struct RecordMixingGift
+{
+ int checksum;
+ struct RecordMixingGiftData data;
+};
+
struct SaveBlock1 /* 0x02025734 */
{
/*0x00*/ struct Coords16 pos;
@@ -606,7 +641,6 @@ struct SaveBlock1 /* 0x02025734 */
/*0x2D8C*/ u8 unk2D8C[4];
/*0x2D90*/ u8 filler_2D90[0x4];
/*0x2D94*/ OldMan oldMan;
- /*0x2DC0*/ u8 unk_2DC0[0x14];
/*0x2DD4*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff
/*0x2DFC*/ u8 filler_2DFC[0x8];
/*0x2E04*/ SB_Struct sbStruct;
@@ -615,14 +649,14 @@ struct SaveBlock1 /* 0x02025734 */
/*0x30AC*/ u8 filler_30B4[0x2];
/*0x30B6*/ u8 filler_30B6;
/*0x30B7*/ u8 filler_30B7[1];
- /*0x30B8*/ u8 linkBattleRecords[5][16];
+ /*0x30B8*/ struct LinkBattleRecord linkBattleRecords[5];
/*0x3108*/ u8 filler_3108[8];
/*0x3110*/ u8 giftRibbons[7];
/*0x3117*/ u8 filler_311B[0x2D];
/*0x3144*/ struct Roamer roamer;
/*0x3160*/ struct EnigmaBerry enigmaBerry;
/*0x3690*/ struct RamScript ramScript;
- /*0x3A7C*/ u8 filler_3A7C[0x10];
+ /*0x3A7C*/ struct RecordMixingGift recordMixingGift;
/*0x3A8C*/ u8 unk3A8C[52]; //pokedex related
};
@@ -654,19 +688,20 @@ struct SaveBlock2_Sub
/*0x0000, 0x00A8*/ u8 filler_000[0x3D8];
/*0x03D8, 0x0480*/ u16 var_480;
/*0x03DA, 0x0482*/ u16 var_482;
- /*0x03DC, 0x0484*/ u8 filler_3DC[0xD0];
+ /*0x03DC, 0x0484*/ u8 filler_3DC[0x14];
+ /*0x03F0, 0x0498*/ u8 ereaderTrainer[0xBC];
/*0x04AC, 0x0554*/ u8 var_4AC;
/*0x04AD, 0x0555*/ u8 var_4AD;
- /*0x04AE, 0x0556*/ u8 var_4AE;
- /*0x04AF, 0x0557*/ u8 var_4AF;
+ /*0x04AE, 0x0556*/ u8 var_4AE[2];
/*0x04B0, 0x0558*/ u16 var_4B0;
/*0x04B2, 0x055A*/ u16 var_4B2;
/*0x04B4, 0x055C*/ u16 var_4B4;
/*0x04B6, 0x055E*/ u16 var_4B6;
- /*0x04B8, 0x0560*/ u8 filler_4B8[0x10];
+ /*0x04B8, 0x0560*/ u16 recordWinStreak[2];
+ /*0x04BC, 0x0564*/ u8 filler_4BC[0xC];
/*0x04C8, 0x0570*/ u16 var_4C8;
/*0x04CA, 0x0572*/ u16 var_4CA;
- /*0x04CC, 0x0574*/ u8 filler_4CC[4];
+ /*0x04CC, 0x0574*/ u16 winStreak[2];
/*0x04D0, 0x0578*/ u8 var_4D0;
/*0x04D1, 0x0579*/ u8 filler_4D1[0x317];
};
diff --git a/include/graphics.h b/include/graphics.h
index fb9781147..5632cb831 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -2435,6 +2435,10 @@ extern const u8 gMonFrontPic_UnownQuestionMark[];
extern const u8 gMonBackPic_UnownQuestionMark[];
extern const u8 gMonIcon_UnownQuestionMark[];
+extern const u8 gMonIcon_QuestionMark[];
+extern const u8 gMonIcon_Egg[];
+extern const u16 gMonIconPalettes[][16];
+
// data/graphics.s
extern const u8 gBagMaleTiles[];
extern const u8 gBagFemaleTiles[];
@@ -2549,4 +2553,15 @@ extern const u8 gBerryPalette_Enigma[];
extern const u8 gUnknown_08E96EC8[];
+extern const u8 gMenuTrainerCard_Gfx[];
+extern const u16 gMenuTrainerCard0Star_Pal[];
+extern const u16 gMenuTrainerCard1Star_Pal[];
+extern const u16 gMenuTrainerCard2Star_Pal[];
+extern const u16 gMenuTrainerCard3Star_Pal[];
+extern const u16 gMenuTrainerCard4Star_Pal[];
+extern const u8 gUnknown_08E8CAC0[];
+extern const u8 gUnknown_08E8CFC0[];
+extern const u8 gUnknown_08E8D4C0[];
+extern const u8 gUnknown_08E8D9C0[];
+
#endif // GUARD_GRAPHICS_H
diff --git a/include/item.h b/include/item.h
index 80a460caa..8f6cc883b 100644
--- a/include/item.h
+++ b/include/item.h
@@ -11,7 +11,7 @@ struct Item
u16 price;
u8 holdEffect;
u8 holdEffectParam;
- u8 *description;
+ const u8 *description;
u8 importance;
u8 unk19;
u8 pocket;
@@ -45,12 +45,12 @@ bool8 CheckPCHasItem(u16 itemId, u16 count);
bool8 AddPCItem(u16 itemId, u16 count);
void RemovePCItem(u8 index, u16 count);
void SwapRegisteredBike(void);
-struct Item *ItemId_GetItem(u16 itemId);
+const struct Item *ItemId_GetItem(u16 itemId);
u16 ItemId_GetId(u16 itemId);
u16 ItemId_GetPrice(u16 itemId);
u8 ItemId_GetHoldEffect(u16 itemId);
u8 ItemId_GetHoldEffectParam(u16 itemId);
-u8 *ItemId_GetDescription(u16 itemId);
+const u8 *ItemId_GetDescription(u16 itemId);
bool32 ItemId_CopyDescription(u8 *a, u32 itemId, u32 c);
u8 ItemId_GetImportance(u16 itemId);
u8 ItemId_GetUnknownValue(u16 itemId);
diff --git a/include/item_use.h b/include/item_use.h
index 61a3b4f7a..1558f7691 100644
--- a/include/item_use.h
+++ b/include/item_use.h
@@ -3,28 +3,51 @@
extern u16 gScriptItemId;
+void ItemUseOutOfBattle_Mail(u8);
+void ItemUseOutOfBattle_Bike(u8);
void ItemUseOnFieldCB_Bike(u8);
+void ItemUseOutOfBattle_Rod(u8);
void ItemUseOnFieldCB_Rod(u8);
+void ItemUseOutOfBattle_Itemfinder(u8);
void ItemUseOnFieldCB_Itemfinder(u8);
void RunItemfinderResults(u8);
void ExitItemfinder(u8);
-bool8 ItemfinderCheckForHiddenItems(struct MapEvents *events, u8 taskId);
+bool8 ItemfinderCheckForHiddenItems(struct MapEvents *, u8);
void sub_80C9720(u8);
void sub_80C9838(u8, s16, s16);
u8 GetPlayerDirectionTowardsHiddenItem(s16, s16);
void SetPlayerDirectionTowardsItem(u8);
void DisplayItemRespondingMessageAndExitItemfinder(u8);
void RotatePlayerAndExitItemfinder(u8);
+void ItemUseOutOfBattle_PokeblockCase(u8);
+void ItemUseOutOfBattle_CoinCase(u8);
+void ItemUseOutOfBattle_SSTicket(u8);
void sub_80C9D00(u8);
+void ItemUseOutOfBattle_WailmerPail(u8);
void sub_80C9D74(u8);
+void ItemUseOutOfBattle_Medicine(u8);
+void ItemUseOutOfBattle_SacredAsh(u8);
+void ItemUseOutOfBattle_PPRecovery(u8);
+void ItemUseOutOfBattle_PPUp(u8);
+void ItemUseOutOfBattle_RareCandy(u8);
void ItemUseOutOfBattle_TMHM(u8);
void sub_80C9EE4(u8);
void sub_80C9F10(u8);
void sub_80C9F80(u8);
void sub_80C9FC0(u8);
+void ItemUseOutOfBattle_Repel(u8);
+void ItemUseOutOfBattle_BlackWhiteFlute(u8);
void task08_080A1C44(u8);
u8 sub_80CA1C8(void);
+void ItemUseOutOfBattle_EscapeRope(u8);
void ItemUseOutOfBattle_EvolutionStone(u8);
+void ItemUseInBattle_PokeBall(u8);
+void ItemUseInBattle_StatIncrease(u8);
+void ItemUseInBattle_Medicine(u8);
+void ItemUseInBattle_PPRecovery(u8);
+void ItemUseInBattle_Escape(u8);
+void ItemUseOutOfBattle_EnigmaBerry(u8);
+void ItemUseInBattle_EnigmaBerry(u8);
void ItemUseOutOfBattle_CannotUse(u8);
#endif // GUARD_ITEM_USE_H
diff --git a/include/libgncmultiboot.h b/include/libgncmultiboot.h
index 33c9f6bfa..23ac64d17 100644
--- a/include/libgncmultiboot.h
+++ b/include/libgncmultiboot.h
@@ -5,6 +5,7 @@ struct GcmbStruct
{
u16 gcmb_field_0;
u8 gcmb_field_2;
+ u8 filler3[0x2C - 0x3];
};
void GameCubeMultiBoot_Main(struct GcmbStruct *pStruct);
diff --git a/include/menu.h b/include/menu.h
index 9b48ab79b..e1bb4f1e4 100755..100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -38,7 +38,7 @@ void MenuFillWindowRectWithBlankTile(u8, u8, u8, u8);
void MenuZeroFillScreen(void);
void MenuDrawTextWindow(u8, u8, u8, u8);
void sub_8071F40(const u8 *);
-void sub_8071F60(u8, u8, u8, u8);
+void sub_8071F60(u8, u8, u8);
u16 unref_sub_8071F98(u8, u8);
void unref_sub_8071FBC(u16, u8, u8, u8, u8);
void MenuDisplayMessageBox(void);
@@ -67,7 +67,7 @@ u8 MenuPrint_PixelCoords(const u8 *, u8, u16, u8);
u8 sub_8072A18(const u8 *, u8, u16, u8, u32);
u8 unref_sub_8072A5C(u8 *, u8 *, u8, u16, u8, u32);
int sub_8072AB0(const u8 *, u8, u16, u8, u8, u32);
-void MenuPrint_RightAligned(u8 *, u8, u8);
+void MenuPrint_RightAligned(const u8 *, u8, u8);
void sub_8072B80(const u8 *, u8, u8, const u8 *);
void sub_8072BD8(const u8 *, u8, u8, u16);
u8 *sub_8072C14(u8 *, s32, u8, u8);
diff --git a/include/menu_helpers.h b/include/menu_helpers.h
index 1df5053e7..993d698bd 100755..100644
--- a/include/menu_helpers.h
+++ b/include/menu_helpers.h
@@ -9,22 +9,31 @@ struct YesNoFuncTable
void (*noFunc)(u8);
};
+void sub_80F9020(void);
+void DisplayItemMessageOnField(u8, const u8 *, TaskFunc, u16);
void DoYesNoFuncWithChoice(u8, const struct YesNoFuncTable *);
void sub_80F914C(u8, const struct YesNoFuncTable *);
-void DisplayItemMessageOnField(u8, const u8 *, TaskFunc, u16);
+u8 sub_80F9284(void);
+u8 sub_80F92BC(void);
+bool8 sub_80F92F4(u16);
+bool8 sub_80F931C(u16);
bool8 sub_80F9344(void);
-u8 sub_80F9344(void);
void sub_80F9368(void);
void sub_80F9438(void);
void sub_80F944C(void);
-void CreateVerticalScrollIndicators(u8, u8, u8); // include/decoration.h
-void sub_80F979C(u32, u32); // unknown args
+void sub_80F9480(u8 *, u8);
+void sub_80F94A4(u8, u8 *, s16, s16);
+void sub_80F94F8(u8 *);
+void sub_80F9520(u8 *, u8);
+void CreateVerticalScrollIndicators(u8, u16, u16);
+void sub_80F979C(u8, bool8);
void DestroyVerticalScrollIndicator(u8);
-void BuyMenuFreeMemory(void);
-void sub_80F98DC(int);
-void sub_80F996C(u8);
void LoadScrollIndicatorPalette(void);
+void BuyMenuFreeMemory(void);
void sub_80F98A4(u8);
void StartVerticalScrollIndicators(u8);
+void sub_80F98DC(u8);
+void PauseVerticalScrollIndicator(u8);
+void sub_80F9988(u8, u8);
#endif // GUARD_MENU_HELPERS_H
diff --git a/include/mystery_event_script.h b/include/mystery_event_script.h
index 766303588..ab23a8d00 100644
--- a/include/mystery_event_script.h
+++ b/include/mystery_event_script.h
@@ -1,8 +1,8 @@
#ifndef GUARD_MYSTERY_EVENT_SCRIPT_H
#define GUARD_MYSTERY_EVENT_SCRIPT_H
-u32 sub_812613C(u8 *);
-void sub_8126160(u32 val);
-u16 sub_8126338(void);
+u32 RunMysteryEventScript(u8 *);
+void SetMysteryEventScriptStatus(u32 val);
+u16 GetRecordMixingGift(void);
#endif // GUARD_MYSTERY_EVENT_SCRIPT_H
diff --git a/include/pokeblock.h b/include/pokeblock.h
index 0d8e965e4..f78ed40c3 100755..100644
--- a/include/pokeblock.h
+++ b/include/pokeblock.h
@@ -1,11 +1,6 @@
#ifndef GUARD_POKEBLOCK_H
#define GUARD_POKEBLOCK_H
-struct YesNoCBTable {
- void (*yesFunc)(void);
- void (*noFunc)(void);
-};
-
enum {
PBLOCK_CLR_BLACK,
PBLOCK_CLR_RED,
@@ -15,12 +10,6 @@ enum {
PBLOCK_CLR_YELLOW
};
-extern u8 ewram[];
-extern u8 gUnknown_02039244;
-extern u8 gUnknown_02039248[4];
-extern u8 gUnknown_0203924C;
-extern const u8 *gUnknown_03000758;
-
void sub_810B96C(void);
u8 sub_810BA50(s16, s16, u8);
u8 sub_810C9B0(struct Pokeblock *);
diff --git a/include/pokemon.h b/include/pokemon.h
index c69fb87e0..be6ccfe74 100755..100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -349,6 +349,18 @@ struct BattlePokemon
/*0x54*/ u32 otId;
};
+enum
+{
+ STAT_STAGE_HP, // 0
+ STAT_STAGE_ATK, // 1
+ STAT_STAGE_DEF, // 2
+ STAT_STAGE_SPEED, // 3
+ STAT_STAGE_SPATK, // 4
+ STAT_STAGE_SPDEF, // 5
+ STAT_STAGE_ACC, // 6
+ STAT_STAGE_EVASION, // 7
+};
+
struct BaseStats
{
/*0x00*/ u8 baseHP;
@@ -392,9 +404,14 @@ struct BattleMove
u8 secondaryEffectChance;
u8 target;
u8 priority;
- u32 flags;
+ u8 flags;
+ u8 pad[3];
};
+#define FLAG_PROTECT_AFFECTED 0x2
+#define FLAG_MAGICCOAT_AFFECTED 0x4
+#define FLAG_SNATCH_AFFECTED 0x8
+
struct PokemonStorage
{
/*0x00*/ u8 currentBox;
@@ -464,7 +481,9 @@ struct EvolutionData
struct Evolution evolutions[5];
};
+extern u8 gPlayerPartyCount;
extern struct Pokemon gPlayerParty[PARTY_SIZE];
+extern u8 gEnemyPartyCount;
extern struct Pokemon gEnemyParty[PARTY_SIZE];
extern const u8 *const gItemEffectTable[];
extern const struct BaseStats gBaseStats[];
diff --git a/include/pokemon_menu.h b/include/pokemon_menu.h
index d22dbb708..fc43a44c6 100644
--- a/include/pokemon_menu.h
+++ b/include/pokemon_menu.h
@@ -6,6 +6,7 @@ void sub_808A004();
void sub_808AB90(void);
void sub_808AB90(void); // unknown args
void sub_808AB90(void);
+void sub_808AD58(void);
void sub_808B020(void);
void sub_808B0C0(u8);
void sub_808B508(u8);
diff --git a/include/pokenav.h b/include/pokenav.h
index 70cc4135f..70cc4135f 100755..100644
--- a/include/pokenav.h
+++ b/include/pokenav.h
diff --git a/include/record_mixing.h b/include/record_mixing.h
index 103f5ad64..ca60b04a7 100644
--- a/include/record_mixing.h
+++ b/include/record_mixing.h
@@ -14,8 +14,8 @@ void Task_RecordMixing_CopyReceiveBuffer(u8 taskId);
void sub_80B99B4(u8 taskId);
void Task_RecordMixing_ReceivePacket(u8 taskId);
void Task_RecordMixing_SendPacket_SwitchToReceive(u8 taskId);
-void *LoadPtrFromTaskData(u16 *ptr);
-void StorePtrInTaskData(void *ptr, u16 *data);
+void *LoadPtrFromTaskData(u16 *);
+void StorePtrInTaskData(void *, u16 *);
u8 GetMultiplayerId_(void);
u16 *GetPlayerRecvBuffer(u8 player);
void sub_80B9A78(void);
@@ -23,12 +23,12 @@ void sub_80B9A88(u8 *a);
void sub_80B9B1C(u8 *a, size_t size, u8 index);
void sub_80B9B70(u8 *a, size_t size, u8 index);
u8 sub_80B9BBC(u16 *a);
-void sub_80B9BC4(struct RecordMixing_UnknownStruct *, size_t, u8 [][2], u8, u8);
+void sub_80B9BC4(u8 *, size_t, u8[][2], u8 d, u8 e);
u8 sub_80B9C4C(u8 *a);
// ASM
-void sub_80B9C6C(struct RecordMixing_UnknownStruct *, u32, u8, void *);
-void sub_80B9F3C(void *, u8);
+void sub_80B9C6C(u8 *, u32, u8, void *);
+void sub_80B9F3C(u16 *, u8);
void sub_80BA00C(u8);
#endif // GUARD_RECORD_MIXING_H
diff --git a/include/region_map.h b/include/region_map.h
index 6dfa4dcf0..3d970fa0a 100755..100644
--- a/include/region_map.h
+++ b/include/region_map.h
@@ -1,13 +1,72 @@
#ifndef GUARD_REGION_MAP_H
#define GUARD_REGION_MAP_H
-void sub_80FA8EC(u32, u8);
-void sub_80FAB10(void);
+struct RegionMap
+{
+ u8 mapSecName[0x14];
+ u16 mapSecId;
+ u8 unk16;
+ u8 everGrandeCityArea;
+ u8 (*inputCallback)(void);
+ struct Sprite *cursorSprite;
+ struct Sprite *playerIconSprite;
+ s32 bg2x;
+ s32 bg2y;
+ u32 unk2C; //
+ u32 unk30; // Map rotation parameters
+ u32 unk34; // Likely a scrapped feature
+ u32 unk38; //
+ s32 unk3C;
+ s32 unk40;
+ s32 unk44;
+ s32 unk48;
+ s32 unk4C;
+ s32 unk50;
+ u16 cursorPosX;
+ u16 cursorPosY;
+ u16 cursorTileTag;
+ u16 cursorPaletteTag;
+ s16 scrollX;
+ s16 scrollY;
+ s16 unk60;
+ s16 unk62;
+ u16 unk64;
+ u16 unk66;
+ u16 unk68;
+ u16 unk6A;
+ u16 unk6C;
+ u16 unk6E;
+ u16 playerIconTileTag;
+ u16 playerIconPaletteTag;
+ u16 unk74;
+ u16 unk76;
+ bool8 zoomed;
+ u8 initStep;
+ s8 unk7A;
+ s8 cursorDeltaX;
+ s8 cursorDeltaY;
+ bool8 needUpdateVideoRegs;
+ bool8 blinkPlayerIcon;
+ bool8 playerIsInCave;
+ /*0x080*/ u8 filler80[0x100];
+ /*0x180*/ u8 cursorSmallImage[0x100];
+ /*0x280*/ u8 cursorLargeImage[0x600];
+};
+
+void InitRegionMap(struct RegionMap *regionMap, bool8 zoomed);
+void sub_80FA904(struct RegionMap *regionMap, bool8 zoomed);
+bool8 sub_80FA940(void);
+void FreeRegionMapIconResources(void);
u8 sub_80FAB60(void);
-void sub_80FBB3C(u16, u16);
-void sub_80FBCF0(u32, u8);
-void sub_80FBFB4(u8 *str, u16 region, u8);
-void CopyMapName();
-u8 *CopyLocationName(u8 *dest, u8 location);
+void sub_80FAEC4(void);
+u8 sub_80FAFC0(void);
+void UpdateRegionMapVideoRegs(void);
+void sub_80FB2A4(s16, s16);
+u16 sub_80FBA04(u16 mapSecId);
+void CreateRegionMapCursor(u16, u16);
+void CreateRegionMapPlayerIcon(u16, u16);
+const u8 *GetMapSectionName(u8 *dest, u16 mapSecId, u16 length);
+const u8 *CopyMapName(u8 *dest, u16 b);
+const u8 *CopyLocationName(u8 *dest, u16 b);
#endif // GUARD_REGION_MAP_H
diff --git a/include/rom3.h b/include/rom3.h
index a45ec7dc4..1fa55d11a 100644
--- a/include/rom3.h
+++ b/include/rom3.h
@@ -1,6 +1,8 @@
#ifndef GUARD_ROM3_H
#define GUARD_ROM3_H
+struct DisableStruct;
+
void sub_800B858(void);
void setup_poochyena_battle();
void sub_800B950(void);
@@ -14,26 +16,26 @@ void sub_800C35C(void);
void sub_800C47C(u8);
void EmitGetAttributes(u8 a, u8 b, u8 c);
void dp01_build_cmdbuf_x01_a_b_0(u8 a, u8 b, u8 c);
-void EmitSetAttributes(u8 a, u8 b, u8 c, u8 d, u8 *e);
void dp01_build_cmdbuf_x04_4_4_4(u8 a);
-void sub_800C704(u8, u8, u8);
-void dp01_build_cmdbuf_x06_a(u8 a, u8 b);
+void EmitSwitchInAnim(u8, u8, u8);
+void EmitReturnPokeToBall(u8 a, u8 b);
void dp01_build_cmdbuf_x07_7_7_7(u8 a);
-void dp01_build_cmdbuf_x08_8_8_8(u8 a);
+void EmitTrainerSlide(u8 a);
void dp01_build_cmdbuf_x09_9_9_9(u8 a);
void EmitFaintAnimation(u8 a);
void dp01_build_cmdbuf_x0B_B_B_B(u8 a);
void dp01_build_cmdbuf_x0C_C_C_C(u8 a);
-void dp01_build_cmdbuf_x0D_a(u8 a, u8 b);
-void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, u8 *g);
+void EmitBallThrowAnim(u8 a, u8 b);
+void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, struct DisableStruct *g);
void EmitPrintString(u8 a, u16 b);
+void EmitPrintStringPlayerOnly(u8 a, u16 stringID);
void dp01_build_cmdbuf_x12_a_bb(u8 a, u8 b, u16 c);
void sub_800CBA4(u8 a, u8 b, u8 c, u8 *d);
void sub_800CBE0(u8 a, u8 *b);
-void dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f(u8 a, u8 b, u8 c, u8 d, u8 *e);
+void EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e);
void dp01_build_cmdbuf_x17_17_17_17(u8 a);
-void EmitHealthBarUpdate(u8 a, s16 b);
-void EmitExpBarUpdate(u8 a, u8 b, s16 c);
+void EmitHealthBarUpdate(u8 a, u16 b);
+void EmitExpBarUpdate(u8 a, u8 b, u16 c);
void EmitStatusIconUpdate(u8 a, u32 b, u32 c);
void EmitStatusAnimation(u8 a, u8 b, u32 c);
void EmitStatusXor(u8 a, u8 b);
@@ -49,7 +51,7 @@ void dp01_build_cmdbuf_x28_28_28_28(u8 a);
void EmitHitAnimation(u8 a);
void dp01_build_cmdbuf_x2A_2A_2A_2A(u8 a);
void EmitEffectivenessSound(u8 a, u16 b);
-void sub_800D074(u8 a, u16 b);
+void EmitPlaySound(u8 a, u16 b);
void EmitFaintingCry(u8 a);
void EmitBattleIntroSlide(u8 a, u8 b);
void dp01_build_cmdbuf_x2F_2F_2F_2F(u8 a);
diff --git a/include/rom4.h b/include/rom4.h
index 803a38162..8d5b1bfa2 100644
--- a/include/rom4.h
+++ b/include/rom4.h
@@ -55,7 +55,7 @@ void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpId);
void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId);
void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused);
-// sub_8053538
+void sub_8053538(u8);
void sub_8053570(void);
void sub_8053588(u8);
void sub_80535C4(s16 a1, s16 a2);
@@ -99,9 +99,9 @@ void sub_8053F0C(void);
void sub_8053F84(void);
void sub_8053FB0(u16);
// is_warp1_light_level_8_or_9
-// sub_8053FF8
-// sub_8054034
-// sub_8054044
+void sub_8053FF8(void);
+bool8 sub_8054034(void);
+void sub_8054044(void);
// sub_8054050
void sub_80540D0(s16 *, u16 *);
void sub_8054164(void);
@@ -129,8 +129,8 @@ void CB2_NewGame(void);
void CB2_WhiteOut(void);
void CB2_LoadMap(void);
void CB2_LoadMap2(void);
-// sub_8054534
-// sub_8054588
+void sub_8054534(void);
+void sub_8054588(void);
void c2_80567AC(void);
void c2_exit_to_overworld_2_switch(void);
void c2_exit_to_overworld_2_local(void);
diff --git a/include/save.h b/include/save.h
index 3feaa1f3d..6c47c6f60 100644
--- a/include/save.h
+++ b/include/save.h
@@ -74,7 +74,7 @@ bool8 sub_8125DA8(void);
u8 sub_8125DDC(void);
u8 sub_8125E04(void);
u8 sub_8125E2C(void);
-u8 sub_8125E6C(void);
+bool8 sub_8125E6C(void);
u8 sub_8125EC8(u8 a1);
bool8 unref_sub_8125F4C(struct UnkSaveSection *a1);
u8 unref_sub_8125FA0(void);
diff --git a/include/script.h b/include/script.h
index e35ec7608..2a738698c 100644
--- a/include/script.h
+++ b/include/script.h
@@ -25,7 +25,7 @@ void InitScriptContext(struct ScriptContext *ctx, void *cmdTable, void *cmdTable
u8 SetupBytecodeScript(struct ScriptContext *ctx, const u8 *ptr);
void SetupNativeScript(struct ScriptContext *ctx, void *ptr);
void StopScript(struct ScriptContext *ctx);
-u8 RunScript(struct ScriptContext *ctx);
+u8 RunScriptCommand(struct ScriptContext *ctx);
u8 ScriptPush(struct ScriptContext *ctx, const u8 *ptr);
const u8 *ScriptPop(struct ScriptContext *ctx);
void ScriptJump(struct ScriptContext *ctx, u8 *ptr);
@@ -55,7 +55,5 @@ u32 CalculateRamScriptChecksum(void);
void ClearRamScript(void);
bool8 InitRamScript(u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8 objectId);
u8 *GetRamScript(u8 objectId, u8 *script);
-u16 gScriptResult;
-extern u16 gScriptLastTalked;
#endif // GUARD_SCRIPT_H
diff --git a/include/secret_base.h b/include/secret_base.h
index 3ea75ce27..bb747bb02 100644
--- a/include/secret_base.h
+++ b/include/secret_base.h
@@ -7,6 +7,7 @@ u8 sub_80BBB24(void);
void sub_80BBCCC(u8);
void sub_80BC038();
u8 sub_80BC050();
+u8 *GetSecretBaseMapName(u8 *);
void sub_80BC300();
const u8 sub_80BCCA4(u8);
u8 *sub_80BCCE8(void);
diff --git a/include/strings.h b/include/strings.h
index fe9cfc6ba..fe9cfc6ba 100755..100644
--- a/include/strings.h
+++ b/include/strings.h
diff --git a/include/text.h b/include/text.h
index e9e8eb8c2..99987d2c3 100644
--- a/include/text.h
+++ b/include/text.h
@@ -66,6 +66,8 @@
#define CHAR_y 0xED
#define CHAR_z 0xEE
#define CHAR_COLON 0xF0
+#define CHAR_PROMPT_SCROLL 0xFA // waits for button press and scrolls dialog
+#define CHAR_PROMPT_CLEAR 0xFB // waits for button press and clears dialog
#define EXT_CTRL_CODE_BEGIN 0xFC // extended control code
#define PLACEHOLDER_BEGIN 0xFD // string placeholder
#define CHAR_NEWLINE 0xFE
diff --git a/include/trainer_card.h b/include/trainer_card.h
index bd0c808dd..b9d3ca081 100644
--- a/include/trainer_card.h
+++ b/include/trainer_card.h
@@ -33,20 +33,6 @@ void sub_8093130(u8, void (*)(void));
void sub_8093390(struct TrainerCard *);
u8 sub_80934C4(u8 id);
-// gUnknown_083B5EBC:: @ 83B5EBC
-bool8 sub_8093864();
-bool8 sub_80938A8();
-bool8 sub_80938CC();
-bool8 sub_8093918();
-bool8 sub_8093938();
-bool8 sub_8093954();
-bool8 sub_8093980();
-
-// gUnknown_083B5ED8:: @ 83B5ED8
-bool8 sub_8093AA0();
-bool8 sub_8093AF0();
-bool8 sub_8093C0C(struct TrainerCard *trainerCard);
-bool8 sub_8093C38();
-bool8 sub_8093D50(void);
+extern struct TrainerCard gTrainerCards[4];
#endif // GUARD_TRAINER_CARD_H
diff --git a/include/use_pokeblock.h b/include/use_pokeblock.h
index 978476d89..f34857cf1 100755..100644
--- a/include/use_pokeblock.h
+++ b/include/use_pokeblock.h
@@ -5,9 +5,6 @@
#ifndef POKERUBY_USE_POKEBLOCK_H
#define POKERUBY_USE_POKEBLOCK_H
-extern void *gUnknown_02030400;
-extern s16 gUnknown_02039312;
-
void sub_8136130(struct Pokeblock *, MainCallback);
#endif //POKERUBY_USE_POKEBLOCK_H
diff --git a/include/util.h b/include/util.h
index 1851c2e82..cd50b75cc 100644
--- a/include/util.h
+++ b/include/util.h
@@ -9,5 +9,6 @@ extern const u32 gBitTable[];
u8 CreateInvisibleSpriteWithCallback(void (*)(struct Sprite *));
void StoreWordInTwoHalfwords(u16 *, u32);
void LoadWordFromTwoHalfwords(u16 *, u32 *);
+u16 CalcCRC16(u8 *data, int length);
#endif // GUARD_UTIL_H
diff --git a/include/vars.h b/include/vars.h
index e08f344d4..efbb462a4 100755..100644
--- a/include/vars.h
+++ b/include/vars.h
@@ -1,6 +1,7 @@
#ifndef GUARD_VARS_H
#define GUARD_VARS_H
+#define VAR_0x4000 0x4000
#define VAR_0x4001 0x4001
#define VAR_0x4002 0x4002
#define VAR_0x4003 0x4003