summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/battle.h61
-rw-r--r--include/battle_2.h2
-rw-r--r--include/battle_anim.h79
-rw-r--r--include/battle_controller_player.h7
-rw-r--r--include/battle_controllers.h182
-rw-r--r--include/battle_interface.h36
-rw-r--r--include/battle_util.h1
-rw-r--r--include/contest.h31
-rw-r--r--include/data/decoration/description.h581
-rw-r--r--include/data/decoration/header.h1100
-rw-r--r--include/data/decoration/icon.h132
-rw-r--r--include/data/decoration/tilemaps.h239
-rw-r--r--include/data/decoration/tiles.h646
-rw-r--r--include/decompress.h2
-rw-r--r--include/decoration.h53
-rw-r--r--include/decoration_inventory.h10
-rwxr-xr-xinclude/event_scripts.h4
-rwxr-xr-xinclude/field_map_obj.h1
-rw-r--r--include/field_screen.h12
-rw-r--r--include/fieldmap.h3
-rw-r--r--include/gba/io_reg.h8
-rw-r--r--include/gba/macro.h10
-rw-r--r--include/gba/types.h14
-rw-r--r--include/global.h18
-rw-r--r--include/graphics.h95
-rw-r--r--include/international_string_util.h28
-rw-r--r--include/item_icon.h17
-rw-r--r--include/librfu.h108
-rw-r--r--include/link.h7
-rw-r--r--include/list_menu.h54
-rw-r--r--include/mail_data.h12
-rw-r--r--include/map_object_constants.h239
-rw-r--r--include/menu.h24
-rw-r--r--include/menu_helpers.h20
-rw-r--r--include/menu_indicators.h12
-rw-r--r--include/naming_screen.h2
-rw-r--r--include/new_game.h1
-rw-r--r--include/new_menu_helpers.h7
-rw-r--r--include/overworld.h5
-rw-r--r--include/player_pc.h12
-rw-r--r--include/pokemon.h8
-rw-r--r--include/pokemon_icon.h5
-rw-r--r--include/recorded_battle.h3
-rw-r--r--include/secret_base.h1
-rw-r--r--include/sprite.h2
-rw-r--r--include/strings.h47
-rw-r--r--include/tilesets.h13
-rw-r--r--include/trader.h11
-rw-r--r--include/tv.h1
-rw-r--r--include/walda_phrase.h8
50 files changed, 3887 insertions, 87 deletions
diff --git a/include/battle.h b/include/battle.h
index f00b7f9ab..3328c691f 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -27,7 +27,9 @@
#define BIT_SIDE 0x1
#define BIT_MON 0x2
+#define GET_BANK_IDENTITY(bank)((gBanksByIdentity[bank]))
#define GET_BANK_SIDE(bank)((GetBankIdentity(bank) & BIT_SIDE))
+#define GET_BANK_SIDE2(bank)((GET_BANK_IDENTITY(bank) & BIT_SIDE))
#define BATTLE_TYPE_DOUBLE 0x0001
#define BATTLE_TYPE_LINK 0x0002
@@ -254,6 +256,25 @@
#define TYPE_MUL_NORMAL 10
#define TYPE_MUL_SUPER_EFFECTIVE 20
+#define BS_GET_TARGET 0
+#define BS_GET_ATTACKER 1
+#define BS_GET_EFFECT_BANK 2
+#define BS_ATTACKER_WITH_PARTNER 4 // for atk98_status_icon_update
+#define BS_GET_ATTACKER_SIDE 8 // for atk1E_jumpifability
+#define BS_GET_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability
+#define BS_GET_SCRIPTING_BANK 10
+#define BS_GET_OPPONENT1 12
+#define BS_GET_PLAYER2 13
+#define BS_GET_OPPONENT2 14
+
+// for battle script commands
+#define CMP_EQUAL 0x0
+#define CMP_NOT_EQUAL 0x1
+#define CMP_GREATER_THAN 0x2
+#define CMP_LESS_THAN 0x3
+#define CMP_COMMON_BITS 0x4
+#define CMP_NO_COMMON_BITS 0x5
+
struct TrainerMonNoItemDefaultMoves
{
u16 iv;
@@ -261,6 +282,9 @@ struct TrainerMonNoItemDefaultMoves
u16 species;
};
+u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg);
+u8 GetBankSide(u8 bank);
+
struct TrainerMonItemDefaultMoves
{
u16 iv;
@@ -655,7 +679,9 @@ struct BattleStruct
u8 field_1A1;
bool8 overworldWeatherDone;
u8 atkCancellerTracker;
- u8 field_1A4[240];
+ u8 field_1A4[96];
+ u8 field_204[104];
+ u8 field_26C[40];
u8 field_294[4];
u8 field_298[8];
u8 field_2A0;
@@ -826,6 +852,7 @@ void LoadBattleTextboxAndBackground(void);
void LoadBattleEntryBackground(void);
void ApplyPlayerChosenFrameToBattleMenu(void);
bool8 LoadChosenBattleElement(u8 caseId);
+void DrawMainBattleBackground(void);
void task00_0800F6FC(u8 taskId);
// battle_5
@@ -883,6 +910,19 @@ struct BattleSpriteInfo
struct BattleAnimationInfo
{
u16 field; // to fill up later
+ u8 field_2;
+ u8 field_3;
+ u8 field_4;
+ u8 field_5;
+ u8 field_6;
+ u8 field_7;
+ u8 field_8;
+ u8 field_9_x1 : 1;
+ u8 field_9_x2 : 1;
+ u8 field_9_x1C : 3;
+ u8 field_9_x20 : 1;
+ u8 field_9_x40 : 1;
+ u8 field_9_x80 : 1;
};
struct BattleHealthboxInfo
@@ -890,6 +930,8 @@ struct BattleHealthboxInfo
u8 flag_x1 : 1;
u8 flag_x2 : 1;
u8 flag_x4 : 1;
+ u8 flag_x8 : 1;
+ u8 flag_x10 : 1;
u8 field_1;
u8 field_2;
u8 field_3;
@@ -903,15 +945,30 @@ struct BattleHealthboxInfo
u8 field_B;
};
+struct BattleBarInfo
+{
+ u8 healthboxSpriteId;
+ s32 maxValue;
+ s32 currentValue;
+ s32 field_C;
+ s32 field_10;
+};
+
struct BattleSpriteData
{
struct BattleSpriteInfo *bankData;
struct BattleHealthboxInfo *healthBoxesData;
struct BattleAnimationInfo *animationData;
+ struct BattleBarInfo *battleBars;
};
extern struct BattleSpriteData *gBattleSpritesDataPtr;
+#define BATTLE_BUFFER_LINK_SIZE 0x1000
+
+extern u8 *gLinkBattleSendBuffer;
+extern u8 *gLinkBattleRecvBuffer;
+
// Move this somewhere else
#include "sprite.h"
@@ -921,6 +978,8 @@ struct MonSpritesGfx
void* firstDecompressed; // ptr to the decompressed sprite of the first pokemon
void* sprites[4];
struct SpriteTemplate templates[4];
+ u8 field_74[0x100];
+ u8 *fontPixels;
};
extern struct BattleSpritesGfx* gMonSpritesGfx;
diff --git a/include/battle_2.h b/include/battle_2.h
index 677bf0505..ceec2aa00 100644
--- a/include/battle_2.h
+++ b/include/battle_2.h
@@ -17,6 +17,8 @@ void RunBattleScriptCommands_PopCallbacksStack(void);
void RunBattleScriptCommands(void);
u32 sub_80397C4(u32 setId, u32 tableId);
void sub_8039E9C(struct Sprite *sprite);
+void nullsub_20(void);
+void BeginBattleIntro(void);
extern const u8 gStatusConditionString_PoisonJpn[8];
extern const u8 gStatusConditionString_SleepJpn[8];
diff --git a/include/battle_anim.h b/include/battle_anim.h
new file mode 100644
index 000000000..5282916c0
--- /dev/null
+++ b/include/battle_anim.h
@@ -0,0 +1,79 @@
+#ifndef GUARD_BATTLE_ANIM_H
+#define GUARD_BATTLE_ANIM_H
+
+enum
+{
+ ANIM_BANK_ATTACKER,
+ ANIM_BANK_TARGET,
+ ANIM_BANK_ATK_PARTNER,
+ ANIM_BANK_DEF_PARTNER,
+};
+
+enum
+{
+ BG_ANIM_SCREEN_SIZE,
+ BG_ANIM_AREA_OVERFLOW_MODE,
+ BG_ANIM2,
+ BG_ANIM3,
+ BG_ANIM_PRIORITY,
+ BG_ANIM_5,
+ BG_ANIM_6
+};
+
+struct UnknownAnimStruct2
+{
+ void *unk0;
+ u16 *unk4;
+ u8 unk8;
+ u8 unk9;
+ u16 unkA;
+ u16 unkC;
+};
+
+struct BattleAnimBackground
+{
+ void *image;
+ void *palette;
+ void *tilemap;
+};
+
+#define ANIM_ARGS_COUNT 8
+
+#define PAN_SIDE_PLAYER -64
+#define PAN_SIDE_OPPONENT 63
+
+extern void (*gAnimScriptCallback)(void);
+extern bool8 gAnimScriptActive;
+extern u8 gAnimVisualTaskCount;
+extern u8 gAnimSoundTaskCount;
+extern struct DisableStruct *gAnimDisableStructPtr;
+extern u32 gAnimMoveDmg;
+extern u16 gAnimMovePower;
+extern u8 gAnimFriendship;
+extern u16 gWeatherMoveAnim;
+extern s16 gBattleAnimArgs[ANIM_ARGS_COUNT];
+extern u8 gAnimMoveTurn;
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+extern u16 gAnimSpeciesByBanks[BATTLE_BANKS_COUNT];
+extern u8 gUnknown_02038440;
+
+void ClearBattleAnimationVars(void);
+void DoMoveAnim(u16 move);
+void DoBattleAnim(const u8 *const animsTable[], u16 tableId, bool8 isMoveAnim);
+void DestroyAnimSprite(struct Sprite *sprite);
+void DestroyAnimVisualTask(u8 taskId);
+void DestroyAnimSoundTask(u8 taskId);
+bool8 IsAnimBankSpriteVisible(u8 bank);
+void sub_80A438C(u8 bank, bool8 toBG_2, bool8 setSpriteInvisible);
+bool8 IsContest(void);
+s8 BattleAnimAdjustPanning(s8 pan);
+s8 BattleAnimAdjustPanning2(s8 pan);
+s16 sub_80A52EC(s16 a);
+s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan);
+
+// battle_anim_80FE840.s
+void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value);
+void sub_8118FBC(u8 arg0, u8 arg1, u8 arg2, u8 bankIdentity, u8 arg4, void *arg5, u16 *arg6, u16 arg7);
+
+#endif // GUARD_BATTLE_ANIM_H
diff --git a/include/battle_controller_player.h b/include/battle_controller_player.h
deleted file mode 100644
index 6d095efe7..000000000
--- a/include/battle_controller_player.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef GUARD_BATTLE_CONTROLLER_PLAYER_H
-#define GUARD_BATTLE_CONTROLLER_PLAYER_H
-
-void ActionSelectionCreateCursorAt(u8 cursorPos, u8 unused);
-void ActionSelectionDestroyCursorAt(u8 cursorPos);
-
-#endif // GUARD_BATTLE_CONTROLLER_PLAYER_H
diff --git a/include/battle_controllers.h b/include/battle_controllers.h
index e710deea5..4bc6b7b84 100644
--- a/include/battle_controllers.h
+++ b/include/battle_controllers.h
@@ -1,8 +1,6 @@
#ifndef GUARD_BATTLE_CONTROLLERS_H
#define GUARD_BATTLE_CONTROLLERS_H
-#include "battle_controller_player.h"
-
#define REQUEST_ALL_BATTLE 0x0
#define REQUEST_SPECIES_BATTLE 0x1
#define REQUEST_HELDITEM_BATTLE 0x2
@@ -48,44 +46,162 @@ struct ChooseMoveStruct
u8 monType2;
};
-// rom3.s, emitters
-void EmitSetMonData(u8 bufferId, u8 request, u8 c, u8 bytes, void *data);
-void EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct* disableStructPtr, u8 multihit);
-void EmitHealthBarUpdate(u8 bufferId, u16 hpValue);
-void EmitEffectivenessSound(u8 bufferId, u16 songId);
-void EmitPlaySound(u8 bufferId, u16 songId, u8 arg2);
-void EmitPrintStringPlayerOnly(u8 bufferId, u16 stringId);
-void EmitFaintAnimation(u8 bufferId);
-void Emit_x2A(u8 bufferId);
-void EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints);
-void EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument);
-void EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible);
-void EmitReturnPokeToBall(u8 bufferId, u8 arg1);
+enum
+{
+ CONTROLLER_GETMONDATA,
+ CONTROLLER_GETRAWMONDATA,
+ CONTROLLER_SETMONDATA,
+ CONTROLLER_SETRAWMONDATA,
+ CONTROLLER_LOADMONSPRITE,
+ CONTROLLER_SWITCHINANIM,
+ CONTROLLER_RETURNMONTOBALL,
+ CONTROLLER_DRAWTRAINERPIC,
+ CONTROLLER_TRAINERSLIDE,
+ CONTROLLER_TRAINERSLIDEBACK,
+ CONTROLLER_FAINTANIMATION,
+ CONTROLLER_11,
+ CONTROLLER_12,
+ CONTROLLER_BALLTHROW,
+ CONTROLLER_PAUSE,
+ CONTROLLER_MOVEANIMATION,
+ CONTROLLER_PRINTSTRING,
+ CONTROLLER_PRINTSTRINGPLAYERONLY,
+ CONTROLLER_CHOOSEACTION,
+ CONTROLLER_19,
+ CONTROLLER_CHOOSEMOVE,
+ CONTROLLER_OPENBAG,
+ CONTROLLER_CHOOSEPOKEMON,
+ CONTROLLER_23,
+ CONTROLLER_HEALTHBARUPDATE,
+ CONTROLLER_EXPUPDATE,
+ CONTROLLER_STATUSICONUPDATE,
+ CONTROLLER_STATUSANIMATION,
+ CONTROLLER_STATUSXOR,
+ CONTROLLER_DATATRANSFER,
+ CONTROLLER_DMA3TRANSFER,
+ CONTROLLER_31,
+ CONTROLLER_32,
+ CONTROLLER_33,
+ CONTROLLER_34,
+ CONTROLLER_35,
+ CONTROLLER_36,
+ CONTROLLER_37,
+ CONTROLLER_38,
+ CONTROLLER_39,
+ CONTROLLER_40,
+ CONTROLLER_HITANIMATION,
+ CONTROLLER_42,
+ CONTROLLER_EFFECTIVENESSSOUND,
+ CONTROLLER_PLAYFANFAREORBGM,
+ CONTROLLER_FAINTINGCRY,
+ CONTROLLER_INTROSLIDE,
+ CONTROLLER_INTROTRAINERBALLTHROW,
+ CONTROLLER_DRAWPARTYSTATUSSUMMARY,
+ CONTROLLER_49,
+ CONTROLLER_50,
+ CONTROLLER_SPRITEINVISIBILITY,
+ CONTROLLER_BATTLEANIMATION,
+ CONTROLLER_LINKSTANDBYMSG,
+ CONTROLLER_RESETACTIONMOVESELECTION,
+ CONTROLLER_55,
+ CONTROLLER_56
+};
+
+#define LAST_CONTROLLER_CMD_ID CONTROLLER_56 + 1
+
+// general functions
+void HandleLinkBattleSetup(void);
+void SetUpBattleVarsAndBirchZigzagoon(void);
+void sub_8032768(void);
+void sub_8033648(void);
+void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data);
+
+// emitters
void EmitGetMonData(u8 bufferId, u8 arg1, u8 arg2);
+void EmitGetRawMonData(u8 bufferId, u8 monId, u8 bytes); // unused
+void EmitSetMonData(u8 bufferId, u8 request, u8 c, u8 bytes, void *data);
+void EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data); // unused
+void EmitLoadMonSprite(u8 bufferId);
void EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit);
-void EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8* arg4);
-void EmitLinkStandbyMsg(u8 bufferId, u8 arg1, bool32 arg2);
+void EmitReturnMonToBall(u8 bufferId, u8 arg1);
+void EmitDrawTrainerPic(u8 bufferId);
void EmitTrainerSlide(u8 bufferId);
void EmitTrainerSlideBack(u8 bufferId);
-void EmitFaintingCry(u8 bufferId);
-void Emit_x37(u8 bufferId, u8 arg1);
-void EmitHitAnimation(u8 bufferId);
-void EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 arg2);
-void EmitCmd49(u8 bufferId);
-void EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status);
-void EmitCmd13(u8 bufferId);
+void EmitFaintAnimation(u8 bufferId);
+void EmitCmd11(u8 bufferId); // unused
+void EmitCmd12(u8 bufferId); // unused
+void EmitBallThrow(u8 bufferId, u8 caseId);
+void EmitPause(u8 bufferId, u8 toWait, void *data); // unused
+void EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr, u8 multihit);
+void EmitPrintString(u8 bufferId, u16 stringId);
+void EmitPrintStringPlayerOnly(u8 bufferId, u16 stringId);
+void EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2);
+void EmitCmd19(u8 bufferId);
+void EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData);
+void EmitOpenBag(u8 bufferId, u8* arg1);
+void EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8* arg4);
+void EmitCmd23(u8 bufferId); // unused
+void EmitHealthBarUpdate(u8 bufferId, u16 hpValue);
+void EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints);
void EmitStatusIconUpdate(u8 bufferId, u32 status1, u32 status2);
+void EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status);
+void EmitStatusXor(u8 bufferId, u8 b); // unused
+void EmitDataTransfer(u8 bufferId, u16 size, void *data);
+void EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data); // unused
+void EmitPlayBGM(u8 bufferId, u16 songId, void *unusedDumbDataParameter); // unused
+void EmitCmd32(u8 bufferId, u16 size, void *c); // unused
+void EmitCmd33(u8 bufferId, u8 arg1, u16 arg2);
+void EmitCmd34(u8 bufferId, u8 b, u8 *c);
+void EmitCmd35(u8 bufferId, u16 b);
+void EmitCmd36(u8 bufferId, u16 b);
+void EmitCmd37(u8 bufferId);
+void EmitCmd38(u8 bufferId, u8 b);
+void EmitCmd39(u8 bufferId);
+void EmitCmd40(u8 bufferId);
+void EmitHitAnimation(u8 bufferId);
+void EmitCmd42(u8 bufferId);
+void EmitEffectivenessSound(u8 bufferId, u16 songId);
+void EmitPlayFanfareOrBGM(u8 bufferId, u16 songId, bool8 playBGM);
+void EmitFaintingCry(u8 bufferId);
void EmitIntroSlide(u8 bufferId, u8 terrainId);
-void EmitDrawTrainerPic(u8 bufferId);
-void EmitLoadMonSprite(u8 bufferId);
void EmitIntroTrainerBallThrow(u8 bufferId);
-void EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2);
-void EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct* movePpData);
-void EmitOpenBag(u8 bufferId, u8* arg1);
-void Emit_x32(u8 bufferId);
-void EmitPrintString(u8 bufferId, u16 stringId);
+void EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 arg2);
+void EmitCmd49(u8 bufferId);
+void EmitCmd50(u8 bufferId);
+void EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible);
+void EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument);
+void EmitLinkStandbyMsg(u8 bufferId, u8 arg1, bool32 arg2);
void EmitResetActionMoveSelection(u8 bufferId, u8 caseId);
-void EmitBallThrow(u8 bufferId, u8 caseId);
-void EmitCmd_x21(u8 bufferId, u8 arg1, u16 arg2);
+void EmitCmd55(u8 bufferId, u8 arg1);
+
+// player controller
+void SetBankFuncToPlayerBufferRunCommand(void);
+void nullsub_21(void);
+void ActionSelectionCreateCursorAt(u8 cursorPos, u8 unused);
+void ActionSelectionDestroyCursorAt(u8 cursorPos);
+
+// recorded player controller
+void SetBankFuncToRecordedPlayerBufferRunCommand(void);
+
+// opponent controller
+void SetBankFuncToOpponentBufferRunCommand(void);
+
+// player partner controller
+void SetBankFuncToPlayerPartnerBufferRunCommand(void);
+
+// safari controller
+void SetBankFuncToSafariBufferRunCommand(void);
+
+// wally controller
+void SetBankFuncToWallyBufferRunCommand(void);
+
+// recorded opponent controller
+void SetBankFuncToRecordedOpponentBufferRunCommand(void);
+
+// link opponent
+void SetBankFuncToLinkOpponentBufferRunCommand(void);
+
+// link partner
+void SetBankFuncToLinkPartnerBufferRunCommand(void);
#endif // GUARD_BATTLE_CONTROLLERS_H
diff --git a/include/battle_interface.h b/include/battle_interface.h
index cecc7bd1f..05ea1c021 100644
--- a/include/battle_interface.h
+++ b/include/battle_interface.h
@@ -1,6 +1,22 @@
#ifndef GUARD_BATTLE_INTERFACE_H
#define GUARD_BATTLE_INTERFACE_H
+#include "battle_controllers.h"
+
+#define TAG_HEALTHBOX_PLAYER1_TILE 0xD6FF
+#define TAG_HEALTHBOX_PLAYER2_TILE 0xD700
+#define TAG_HEALTHBOX_OPPONENT1_TILE 0xD701
+#define TAG_HEALTHBOX_OPPONENT2_TILE 0xD702
+
+#define TAG_HEALTHBOX_SAFARI_TILE 0xD70B
+
+#define TAG_STATUS_SUMMARY_BAR_TILE 0xD70C
+#define TAG_STATUS_SUMMARY_BALLS_TILE 0xD714
+
+#define TAG_HEALTHBOX_PAL 0xD6FF
+#define TAG_STATUS_SUMMARY_BAR_PAL 0xD710
+#define TAG_STATUS_SUMMARY_BALLS_PAL 0xD712
+
enum
{
HEALTHBOX_ALL,
@@ -10,8 +26,8 @@ enum
HEALTHBOX_NICK,
HEALTHBOX_HEALTH_BAR,
HEALTHBOX_EXP_BAR,
- HEALTHBOX_7,
- HEALTHBOX_8,
+ HEALTHBOX_UNUSED_7,
+ HEALTHBOX_UNUSED_8,
HEALTHBOX_STATUS_ICON,
HEALTHBOX_SAFARI_ALL_TEXT,
HEALTHBOX_SAFARI_BALLS_TEXT
@@ -19,10 +35,20 @@ enum
u8 CreateBankHealthboxSprites(u8 bank);
u8 CreateSafariPlayerHealthboxSprites(void);
-void SetBankHealthboxSpritePos(u8 bank);
-void SetHealthboxSpriteVisible(u8 healthboxSpriteId);
+void SetBattleBarStruct(u8 bank, u8 healthboxSpriteId, s32 maxVal, s32 currVal, s32 field_C);
void SetHealthboxSpriteInvisible(u8 healthboxSpriteId);
+void SetHealthboxSpriteVisible(u8 healthboxSpriteId);
+void DestoryHealthboxSprite(u8 healthboxSpriteId);
+void DummyBattleInterfaceFunc(u8 healthboxSpriteId, bool8 isDoubleBattleBankOnly);
+void UpdateOamPriorityInAllHealthboxes(u8 priority);
+void SetBankHealthboxSpritePos(u8 bank);
+void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent);
+void SwapHpBarsWithHpText(void);
+u8 CreatePartyStatusSummarySprites(u8 bank, struct HpAndStatus *partyInfo, u8 arg2, bool8 isBattleStart);
+void sub_8073C30(u8 taskId);
void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elementId);
-void nullsub_30(u8 healthboxSpriteId, bool8 isDoubleBattleBankOnly);
+s32 sub_8074AA0(u8 bank, u8 healthboxSpriteId, u8 whichBar, u8 arg3);
+u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale);
+u8 GetHPBarLevel(s16 hp, s16 maxhp);
#endif // GUARD_BATTLE_INTERFACE_H
diff --git a/include/battle_util.h b/include/battle_util.h
index c1ff7d8ab..b21b250c4 100644
--- a/include/battle_util.h
+++ b/include/battle_util.h
@@ -33,6 +33,7 @@
#define ITEMEFFECT_ON_SWITCH_IN 0x0
#define WEATHER_HAS_EFFECT ((!AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_AIR_LOCK, 0, 0)))
+#define WEATHER_HAS_EFFECT2 ((!AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_AIR_LOCK, 0, 0)))
#define BS_GET_TARGET 0
#define BS_GET_ATTACKER 1
diff --git a/include/contest.h b/include/contest.h
index 5c473bd2c..7dcde7da2 100644
--- a/include/contest.h
+++ b/include/contest.h
@@ -1,7 +1,8 @@
#ifndef GUARD_CONTEST_H
#define GUARD_CONTEST_H
-struct ContestStruct_02039E00 {
+struct ContestStruct_02039E00
+{
u16 unk_00;
u8 unk_02[11];
u8 unk_0d[8];
@@ -11,8 +12,30 @@ struct ContestStruct_02039E00 {
extern struct ContestStruct_02039E00 gUnknown_02039E00[4];
extern u8 gUnknown_02039F24;
-extern EWRAM_DATA u16 gScriptContestCategory;
-extern EWRAM_DATA u8 gUnknown_02039F2E;
-extern EWRAM_DATA u8 gUnknown_02039F30;
+extern u16 gScriptContestCategory;
+extern u8 gUnknown_02039F2E;
+extern u8 gUnknown_02039F30;
+
+struct ContestStruct_field_18
+{
+ // unknown size
+ u16 field_0;
+};
+
+struct ContestResources
+{
+ void *field_0;
+ void *field_4;
+ void *field_8;
+ void *field_C;
+ void *field_10;
+ void *field_14;
+ struct ContestStruct_field_18 *field_18;
+};
+
+extern struct ContestResources *gContestResources;
+
+bool8 IsSpeciesNotUnown(u16 species);
+void LoadContestBgAfterMoveAnim(void);
#endif //GUARD_CONTEST_H
diff --git a/include/data/decoration/description.h b/include/data/decoration/description.h
new file mode 100644
index 000000000..ba4c3dd54
--- /dev/null
+++ b/include/data/decoration/description.h
@@ -0,0 +1,581 @@
+//
+// Created by scott on 10/21/2017.
+//
+
+#ifndef GUARD_DATA_DECORATION_DESCRIPTION_H
+#define GUARD_DATA_DECORATION_DESCRIPTION_H
+
+const u8 DecorDesc_SMALL_DESK[] = _(
+ "A small desk built\n"
+ "for one.");
+
+const u8 DecorDesc_POKEMON_DESK[] = _(
+ "A small desk built in\n"
+ "the shape of a POKé\n"
+ "BALL.");
+
+const u8 DecorDesc_HEAVY_DESK[] = _(
+ "A large desk made\n"
+ "of steel. Put some\n"
+ "decorations on it.");
+
+const u8 DecorDesc_RAGGED_DESK[] = _(
+ "A large desk made\n"
+ "of wood. Put some\n"
+ "decorations on it.");
+
+const u8 DecorDesc_COMFORT_DESK[] = _(
+ "A large desk made\n"
+ "of leaves. Put some\n"
+ "decorations on it.");
+
+const u8 DecorDesc_PRETTY_DESK[] = _(
+ "A huge desk made\n"
+ "of glass. Holds lots\n"
+ "of decorations.");
+
+const u8 DecorDesc_BRICK_DESK[] = _(
+ "A huge desk made\n"
+ "of brick. Holds lots\n"
+ "of decorations.");
+
+const u8 DecorDesc_CAMP_DESK[] = _(
+ "A huge desk made\n"
+ "of logs. Put lots of\n"
+ "decorations on it.");
+
+const u8 DecorDesc_HARD_DESK[] = _(
+ "A huge desk made\n"
+ "of rocks. Holds\n"
+ "many decorations.");
+
+const u8 DecorDesc_SMALL_CHAIR[] = _(
+ "A small chair made\n"
+ "for one.");
+
+const u8 DecorDesc_POKEMON_CHAIR[] = _(
+ "A small chair built\n"
+ "in the shape of a\n"
+ "POKé BALL.");
+
+const u8 DecorDesc_HEAVY_CHAIR[] = _(
+ "A small chair made\n"
+ "of steel.");
+
+const u8 DecorDesc_PRETTY_CHAIR[] = _(
+ "A small chair made\n"
+ "of glass.");
+
+const u8 DecorDesc_COMFORT_CHAIR[] = _(
+ "A small chair made\n"
+ "of leaves.");
+
+const u8 DecorDesc_RAGGED_CHAIR[] = _(
+ "A small chair made\n"
+ "of wood.");
+
+const u8 DecorDesc_BRICK_CHAIR[] = _(
+ "A small chair made\n"
+ "of brick.");
+
+const u8 DecorDesc_CAMP_CHAIR[] = _(
+ "A small chair made\n"
+ "of logs.");
+
+const u8 DecorDesc_HARD_CHAIR[] = _(
+ "A small chair made\n"
+ "of rock.");
+
+const u8 DecorDesc_RED_PLANT[] = _(
+ "A vivid red potted\n"
+ "plant.");
+
+const u8 DecorDesc_TROPICAL_PLANT[] = _(
+ "A flowering tropical\n"
+ "plant in a pot.");
+
+const u8 DecorDesc_PRETTY_FLOWERS[] = _(
+ "A pot of cute\n"
+ "flowers.");
+
+const u8 DecorDesc_COLORFUL_PLANT[] = _(
+ "A large pot with\n"
+ "many colorful\n"
+ "flowers.");
+
+const u8 DecorDesc_BIG_PLANT[] = _(
+ "A large, umbrella-\n"
+ "shaped plant in a\n"
+ "big pot.");
+
+const u8 DecorDesc_GORGEOUS_PLANT[] = _(
+ "A large, impressive\n"
+ "plant in a big pot.");
+
+const u8 DecorDesc_RED_BRICK[] = _(
+ "A red-colored brick.\n"
+ "Decorations can be\n"
+ "placed on top.");
+
+const u8 DecorDesc_YELLOW_BRICK[] = _(
+ "A yellow-colored\n"
+ "brick. Put some\n"
+ "decorations on top.");
+
+const u8 DecorDesc_BLUE_BRICK[] = _(
+ "A blue-colored\n"
+ "brick. Put some\n"
+ "decorations on top.");
+
+const u8 DecorDesc_RED_BALLOON[] = _(
+ "A red balloon filled\n"
+ "with water. Bursts\n"
+ "if stepped on.");
+
+const u8 DecorDesc_BLUE_BALLOON[] = _(
+ "A blue balloon filled\n"
+ "with water. Bursts\n"
+ "if stepped on.");
+
+const u8 DecorDesc_YELLOW_BALLOON[] = _(
+ "A yellow balloon\n"
+ "filled with water.\n"
+ "Pops if stepped on.");
+
+const u8 DecorDesc_RED_TENT[] = _(
+ "A large red tent.\n"
+ "You can hide inside\n"
+ "it.");
+
+const u8 DecorDesc_BLUE_TENT[] = _(
+ "A large blue tent.\n"
+ "You can hide inside\n"
+ "it.");
+
+const u8 DecorDesc_SOLID_BOARD[] = _(
+ "Place over a hole to\n"
+ "cross to the other\n"
+ "side.");
+
+const u8 DecorDesc_SLIDE[] = _(
+ "Use to slide down\n"
+ "from the platform.");
+
+const u8 DecorDesc_FENCE_LENGTH[] = _(
+ "A small fence that\n"
+ "blocks passage.");
+
+const u8 DecorDesc_FENCE_WIDTH[] = _(
+ "A small fence that\n"
+ "blocks passage.");
+
+const u8 DecorDesc_TIRE[] = _(
+ "An old large tire.\n"
+ "Decorations can be\n"
+ "placed on top.");
+
+const u8 DecorDesc_STAND[] = _(
+ "A large pedestal\n"
+ "with steps.");
+
+const u8 DecorDesc_MUD_BALL[] = _(
+ "A large ball of mud.\n"
+ "Crumbles if stepped\n"
+ "on.");
+
+const u8 DecorDesc_BREAKABLE_DOOR[] = _(
+ "A weird door that\n"
+ "people can walk\n"
+ "right through.");
+
+const u8 DecorDesc_SAND_ORNAMENT[] = _(
+ "An ornament made\n"
+ "of sand. Crumbles if\n"
+ "touched.");
+
+const u8 DecorDesc_SILVER_SHIELD[] = _(
+ "Awarded for 50\n"
+ "straight wins at\n"
+ "the BATTLE TOWER.");
+
+const u8 DecorDesc_GOLD_SHIELD[] = _(
+ "Awarded for 100\n"
+ "straight wins at\n"
+ "the BATTLE TOWER.");
+
+const u8 DecorDesc_GLASS_ORNAMENT[] = _(
+ "A glass replica of\n"
+ "a famous sculpture\n"
+ "at the ART MUSEUM.");
+
+const u8 DecorDesc_TV[] = _(
+ "A small, gray-\n"
+ "colored toy TV.");
+
+const u8 DecorDesc_ROUND_TV[] = _(
+ "A toy TV modeled\n"
+ "in the image of a\n"
+ "SEEDOT.");
+
+const u8 DecorDesc_CUTE_TV[] = _(
+ "A toy TV modeled\n"
+ "in the image of a\n"
+ "SKITTY.");
+
+const u8 DecorDesc_GLITTER_MAT[] = _(
+ "An odd mat that\n"
+ "glitters if stepped\n"
+ "on.");
+
+const u8 DecorDesc_JUMP_MAT[] = _(
+ "A trick mat that\n"
+ "jumps when it is\n"
+ "stepped on.");
+
+const u8 DecorDesc_SPIN_MAT[] = _(
+ "A trick mat that\n"
+ "spins around when\n"
+ "stepped on.");
+
+const u8 DecorDesc_C_LOW_NOTE_MAT[] = _(
+ "A mat that plays\n"
+ "a low C note when\n"
+ "stepped on.");
+
+const u8 DecorDesc_D_NOTE_MAT[] = _(
+ "A mat that plays\n"
+ "a D note when\n"
+ "stepped on.");
+
+const u8 DecorDesc_E_NOTE_MAT[] = _(
+ "A mat that plays\n"
+ "an E note when\n"
+ "stepped on.");
+
+const u8 DecorDesc_F_NOTE_MAT[] = _(
+ "A mat that plays\n"
+ "an F note when\n"
+ "stepped on.");
+
+const u8 DecorDesc_G_NOTE_MAT[] = _(
+ "A mat that plays\n"
+ "a G note when\n"
+ "stepped on.");
+
+const u8 DecorDesc_A_NOTE_MAT[] = _(
+ "A mat that plays\n"
+ "an A note when\n"
+ "stepped on.");
+
+const u8 DecorDesc_B_NOTE_MAT[] = _(
+ "A mat that plays\n"
+ "a B note when\n"
+ "stepped on.");
+
+const u8 DecorDesc_C_HIGH_NOTE_MAT[] = _(
+ "A mat that plays\n"
+ "a high C note when\n"
+ "stepped on.");
+
+const u8 DecorDesc_SURF_MAT[] = _(
+ "A mat designed with\n"
+ "a SURF image.\n"
+ "Put items on top.");
+
+const u8 DecorDesc_THUNDER_MAT[] = _(
+ "A mat designed with\n"
+ "a THUNDER image.\n"
+ "Put items on top.");
+
+const u8 DecorDesc_FIRE_BLAST_MAT[] = _(
+ "A mat designed with\n"
+ "a FIRE BLAST image.\n"
+ "Put items on top.");
+
+const u8 DecorDesc_POWDER_SNOW_MAT[] = _(
+ "A mat with a POWDER\n"
+ "SNOW image design.\n"
+ "Put items on top.");
+
+const u8 DecorDesc_ATTRACT_MAT[] = _(
+ "A mat designed with\n"
+ "an ATTRACT image.\n"
+ "Put items on top.");
+
+const u8 DecorDesc_FISSURE_MAT[] = _(
+ "A mat designed with\n"
+ "a FISSURE image.\n"
+ "Put items on top.");
+
+const u8 DecorDesc_SPIKES_MAT[] = _(
+ "A mat designed with\n"
+ "a SPIKES image.\n"
+ "Put items on top.");
+
+const u8 DecorDesc_BALL_POSTER[] = _(
+ "A small poster\n"
+ "printed with POKé\n"
+ "BALLS.");
+
+const u8 DecorDesc_GREEN_POSTER[] = _(
+ "A small poster with\n"
+ "a TREECKO print.");
+
+const u8 DecorDesc_RED_POSTER[] = _(
+ "A small poster with\n"
+ "a TORCHIC print.");
+
+const u8 DecorDesc_BLUE_POSTER[] = _(
+ "A small poster with\n"
+ "a MUDKIP print.");
+
+const u8 DecorDesc_CUTE_POSTER[] = _(
+ "A small poster with\n"
+ "an AZURILL print.");
+
+const u8 DecorDesc_PIKA_POSTER[] = _(
+ "A large poster with\n"
+ "a PIKACHU and\n"
+ "PICHU print.");
+
+const u8 DecorDesc_LONG_POSTER[] = _(
+ "A large poster with\n"
+ "a SEVIPER print.");
+
+const u8 DecorDesc_SEA_POSTER[] = _(
+ "A large poster with\n"
+ "a RELICANTH print.");
+
+const u8 DecorDesc_SKY_POSTER[] = _(
+ "A large poster with\n"
+ "a WINGULL print.");
+
+const u8 DecorDesc_KISS_POSTER[] = _(
+ "A large poster with\n"
+ "a SMOOCHUM print.");
+
+const u8 DecorDesc_PICHU_DOLL[] = _(
+ "A PICHU doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_PIKACHU_DOLL[] = _(
+ "A PIKACHU doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_MARILL_DOLL[] = _(
+ "A MARILL doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_TOGEPI_DOLL[] = _(
+ "A TOGEPI doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_CYNDAQUIL_DOLL[] = _(
+ "A CYNDAQUIL doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_CHIKORITA_DOLL[] = _(
+ "A CHIKORITA doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_TOTODILE_DOLL[] = _(
+ "A TOTODILE doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_JIGGLYPUFF_DOLL[] = _(
+ "A JIGGLYPUFF doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_MEOWTH_DOLL[] = _(
+ "A MEOWTH doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_CLEFAIRY_DOLL[] = _(
+ "A CLEFAIRY doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_DITTO_DOLL[] = _(
+ "A DITTO doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_SMOOCHUM_DOLL[] = _(
+ "A SMOOCHUM doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_TREECKO_DOLL[] = _(
+ "A TREECKO doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_TORCHIC_DOLL[] = _(
+ "A TORCHIC doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_MUDKIP_DOLL[] = _(
+ "A MUDKIP doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_DUSKULL_DOLL[] = _(
+ "A DUSKULL doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_WYNAUT_DOLL[] = _(
+ "A WYNAUT doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_BALTOY_DOLL[] = _(
+ "A BALTOY doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_KECLEON_DOLL[] = _(
+ "A KECLEON doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_AZURILL_DOLL[] = _(
+ "An AZURILL doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_SKITTY_DOLL[] = _(
+ "A SKITTY doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_SWABLU_DOLL[] = _(
+ "A SWABLU doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_GULPIN_DOLL[] = _(
+ "A GULPIN doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_LOTAD_DOLL[] = _(
+ "A LOTAD doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_SEEDOT_DOLL[] = _(
+ "A SEEDOT doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_PIKA_CUSHION[] = _(
+ "A PIKACHU cushion.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_ROUND_CUSHION[] = _(
+ "A MARILL cushion.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_KISS_CUSHION[] = _(
+ "A SMOOCHUM\n"
+ "cushion. Place it on\n"
+ "a mat or a desk.");
+
+const u8 DecorDesc_ZIGZAG_CUSHION[] = _(
+ "A ZIGZAGOON\n"
+ "cushion. Place it on\n"
+ "a mat or a desk.");
+
+const u8 DecorDesc_SPIN_CUSHION[] = _(
+ "A SPINDA cushion.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_DIAMOND_CUSHION[] = _(
+ "A SABLEYE cushion.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_BALL_CUSHION[] = _(
+ "A BALL cushion.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_GRASS_CUSHION[] = _(
+ "A grass-mark\n"
+ "cushion. Place it on\n"
+ "a mat or a desk.");
+
+const u8 DecorDesc_FIRE_CUSHION[] = _(
+ "A fire-mark\n"
+ "cushion. Place it on\n"
+ "a mat or a desk.");
+
+const u8 DecorDesc_WATER_CUSHION[] = _(
+ "A water-mark\n"
+ "cushion. Place it on\n"
+ "a mat or a desk.");
+
+const u8 DecorDesc_SNORLAX_DOLL[] = _(
+ "A large doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_RHYDON_DOLL[] = _(
+ "A large doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_LAPRAS_DOLL[] = _(
+ "A large doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_VENUSAUR_DOLL[] = _(
+ "A large doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_CHARIZARD_DOLL[] = _(
+ "A large doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_BLASTOISE_DOLL[] = _(
+ "A large doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_WAILMER_DOLL[] = _(
+ "A large doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_REGIROCK_DOLL[] = _(
+ "A large doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_REGICE_DOLL[] = _(
+ "A large doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_REGISTEEL_DOLL[] = _(
+ "A large doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+#endif //GUARD_DATA_DECORATION_DESCRIPTION_H
diff --git a/include/data/decoration/header.h b/include/data/decoration/header.h
new file mode 100644
index 000000000..64bed1c7e
--- /dev/null
+++ b/include/data/decoration/header.h
@@ -0,0 +1,1100 @@
+//
+// Created by scott on 10/21/2017.
+//
+
+#ifndef GUARD_DATA_DECORATION_HEADER_H
+#define GUARD_DATA_DECORATION_HEADER_H
+
+const struct Decoration gDecorations[] = {
+ {
+ DECOR_NONE,
+ _("SMALL DESK"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_DESK,
+ 0,
+ DecorDesc_SMALL_DESK,
+ DecorGfx_SMALL_DESK
+ }, {
+ DECOR_SMALL_DESK,
+ _("SMALL DESK"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_DESK,
+ 3000,
+ DecorDesc_SMALL_DESK,
+ DecorGfx_SMALL_DESK
+ }, {
+ DECOR_POKEMON_DESK,
+ _("POKéMON DESK"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_DESK,
+ 3000,
+ DecorDesc_POKEMON_DESK,
+ DecorGfx_POKEMON_DESK
+ }, {
+ DECOR_HEAVY_DESK,
+ _("HEAVY DESK"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_3x2,
+ DECORCAT_DESK,
+ 6000,
+ DecorDesc_HEAVY_DESK,
+ DecorGfx_HEAVY_DESK
+ }, {
+ DECOR_RAGGED_DESK,
+ _("RAGGED DESK"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_3x2,
+ DECORCAT_DESK,
+ 6000,
+ DecorDesc_RAGGED_DESK,
+ DecorGfx_RAGGED_DESK
+ }, {
+ DECOR_COMFORT_DESK,
+ _("COMFORT DESK"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_3x2,
+ DECORCAT_DESK,
+ 6000,
+ DecorDesc_COMFORT_DESK,
+ DecorGfx_COMFORT_DESK
+ }, {
+ DECOR_PRETTY_DESK,
+ _("PRETTY DESK"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_3x3,
+ DECORCAT_DESK,
+ 9000,
+ DecorDesc_PRETTY_DESK,
+ DecorGfx_PRETTY_DESK
+ }, {
+ DECOR_BRICK_DESK,
+ _("BRICK DESK"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_3x3,
+ DECORCAT_DESK,
+ 9000,
+ DecorDesc_BRICK_DESK,
+ DecorGfx_BRICK_DESK
+ }, {
+ DECOR_CAMP_DESK,
+ _("CAMP DESK"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_3x3,
+ DECORCAT_DESK,
+ 9000,
+ DecorDesc_CAMP_DESK,
+ DecorGfx_CAMP_DESK
+ }, {
+ DECOR_HARD_DESK,
+ _("HARD DESK"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_3x3,
+ DECORCAT_DESK,
+ 9000,
+ DecorDesc_HARD_DESK,
+ DecorGfx_HARD_DESK
+ }, {
+ DECOR_SMALL_CHAIR,
+ _("SMALL CHAIR"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_CHAIR,
+ 2000,
+ DecorDesc_SMALL_CHAIR,
+ DecorGfx_SMALL_CHAIR
+ }, {
+ DECOR_POKEMON_CHAIR,
+ _("POKéMON CHAIR"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_CHAIR,
+ 2000,
+ DecorDesc_POKEMON_CHAIR,
+ DecorGfx_POKEMON_CHAIR
+ }, {
+ DECOR_HEAVY_CHAIR,
+ _("HEAVY CHAIR"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_CHAIR,
+ 2000,
+ DecorDesc_HEAVY_CHAIR,
+ DecorGfx_HEAVY_CHAIR
+ }, {
+ DECOR_PRETTY_CHAIR,
+ _("PRETTY CHAIR"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_CHAIR,
+ 2000,
+ DecorDesc_PRETTY_CHAIR,
+ DecorGfx_PRETTY_CHAIR
+ }, {
+ DECOR_COMFORT_CHAIR,
+ _("COMFORT CHAIR"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_CHAIR,
+ 2000,
+ DecorDesc_COMFORT_CHAIR,
+ DecorGfx_COMFORT_CHAIR
+ }, {
+ DECOR_RAGGED_CHAIR,
+ _("RAGGED CHAIR"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_CHAIR,
+ 2000,
+ DecorDesc_RAGGED_CHAIR,
+ DecorGfx_RAGGED_CHAIR
+ }, {
+ DECOR_BRICK_CHAIR,
+ _("BRICK CHAIR"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_CHAIR,
+ 2000,
+ DecorDesc_BRICK_CHAIR,
+ DecorGfx_BRICK_CHAIR
+ }, {
+ DECOR_CAMP_CHAIR,
+ _("CAMP CHAIR"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_CHAIR,
+ 2000,
+ DecorDesc_CAMP_CHAIR,
+ DecorGfx_CAMP_CHAIR
+ }, {
+ DECOR_HARD_CHAIR,
+ _("HARD CHAIR"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_CHAIR,
+ 2000,
+ DecorDesc_HARD_CHAIR,
+ DecorGfx_HARD_CHAIR
+ }, {
+ DECOR_RED_PLANT,
+ _("RED PLANT"),
+ DECORPERM_BEHIND_FLOOR,
+ DECORSHAPE_1x2,
+ DECORCAT_PLANT,
+ 3000,
+ DecorDesc_RED_PLANT,
+ DecorGfx_RED_PLANT
+ }, {
+ DECOR_TROPICAL_PLANT,
+ _("TROPICAL PLANT"),
+ DECORPERM_BEHIND_FLOOR,
+ DECORSHAPE_1x2,
+ DECORCAT_PLANT,
+ 3000,
+ DecorDesc_TROPICAL_PLANT,
+ DecorGfx_TROPICAL_PLANT
+ }, {
+ DECOR_PRETTY_FLOWERS,
+ _("PRETTY FLOWERS"),
+ DECORPERM_BEHIND_FLOOR,
+ DECORSHAPE_1x2,
+ DECORCAT_PLANT,
+ 3000,
+ DecorDesc_PRETTY_FLOWERS,
+ DecorGfx_PRETTY_FLOWERS
+ }, {
+ DECOR_COLORFUL_PLANT,
+ _("COLORFUL PLANT"),
+ DECORPERM_BEHIND_FLOOR,
+ DECORSHAPE_2x2,
+ DECORCAT_PLANT,
+ 5000,
+ DecorDesc_COLORFUL_PLANT,
+ DecorGfx_COLORFUL_PLANT
+ }, {
+ DECOR_BIG_PLANT,
+ _("BIG PLANT"),
+ DECORPERM_BEHIND_FLOOR,
+ DECORSHAPE_2x2,
+ DECORCAT_PLANT,
+ 5000,
+ DecorDesc_BIG_PLANT,
+ DecorGfx_BIG_PLANT
+ }, {
+ DECOR_GORGEOUS_PLANT,
+ _("GORGEOUS PLANT"),
+ DECORPERM_BEHIND_FLOOR,
+ DECORSHAPE_2x2,
+ DECORCAT_PLANT,
+ 5000,
+ DecorDesc_GORGEOUS_PLANT,
+ DecorGfx_GORGEOUS_PLANT
+ }, {
+ DECOR_RED_BRICK,
+ _("RED BRICK"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_1x2,
+ DECORCAT_ORNAMENT,
+ 500,
+ DecorDesc_RED_BRICK,
+ DecorGfx_RED_BRICK
+ }, {
+ DECOR_YELLOW_BRICK,
+ _("YELLOW BRICK"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_1x2,
+ DECORCAT_ORNAMENT,
+ 500,
+ DecorDesc_YELLOW_BRICK,
+ DecorGfx_YELLOW_BRICK
+ }, {
+ DECOR_BLUE_BRICK,
+ _("BLUE BRICK"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_1x2,
+ DECORCAT_ORNAMENT,
+ 500,
+ DecorDesc_BLUE_BRICK,
+ DecorGfx_BLUE_BRICK
+ }, {
+ DECOR_RED_BALLOON,
+ _("RED BALLOON"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_ORNAMENT,
+ 500,
+ DecorDesc_RED_BALLOON,
+ DecorGfx_RED_BALLOON
+ }, {
+ DECOR_BLUE_BALLOON,
+ _("BLUE BALLOON"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_ORNAMENT,
+ 500,
+ DecorDesc_BLUE_BALLOON,
+ DecorGfx_BLUE_BALLOON
+ }, {
+ DECOR_YELLOW_BALLOON,
+ _("YELLOW BALLOON"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_ORNAMENT,
+ 500,
+ DecorDesc_YELLOW_BALLOON,
+ DecorGfx_YELLOW_BALLOON
+ }, {
+ DECOR_RED_TENT,
+ _("RED TENT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_3x3,
+ DECORCAT_ORNAMENT,
+ 10000,
+ DecorDesc_RED_TENT,
+ DecorGfx_RED_TENT
+ }, {
+ DECOR_BLUE_TENT,
+ _("BLUE TENT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_3x3,
+ DECORCAT_ORNAMENT,
+ 10000,
+ DecorDesc_BLUE_TENT,
+ DecorGfx_BLUE_TENT
+ }, {
+ DECOR_SOLID_BOARD,
+ _("SOLID BOARD"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x2,
+ DECORCAT_ORNAMENT,
+ 3000,
+ DecorDesc_SOLID_BOARD,
+ DecorGfx_SOLID_BOARD
+ }, {
+ DECOR_SLIDE,
+ _("SLIDE"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_2x4,
+ DECORCAT_ORNAMENT,
+ 8000,
+ DecorDesc_SLIDE,
+ DecorGfx_SLIDE
+ }, {
+ DECOR_FENCE_LENGTH,
+ _("FENCE LENGTH"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_ORNAMENT,
+ 500,
+ DecorDesc_FENCE_LENGTH,
+ DecorGfx_FENCE_LENGTH
+ }, {
+ DECOR_FENCE_WIDTH,
+ _("FENCE WIDTH"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_ORNAMENT,
+ 500,
+ DecorDesc_FENCE_WIDTH,
+ DecorGfx_FENCE_WIDTH
+ }, {
+ DECOR_TIRE,
+ _("TIRE"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_2x2,
+ DECORCAT_ORNAMENT,
+ 800,
+ DecorDesc_TIRE,
+ DecorGfx_TIRE
+ }, {
+ DECOR_STAND,
+ _("STAND"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_4x2,
+ DECORCAT_ORNAMENT,
+ 7000,
+ DecorDesc_STAND,
+ DecorGfx_STAND
+ }, {
+ DECOR_MUD_BALL,
+ _("MUD BALL"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_ORNAMENT,
+ 200,
+ DecorDesc_MUD_BALL,
+ DecorGfx_MUD_BALL
+ }, {
+ DECOR_BREAKABLE_DOOR,
+ _("BREAKABLE DOOR"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x2,
+ DECORCAT_ORNAMENT,
+ 3000,
+ DecorDesc_BREAKABLE_DOOR,
+ DecorGfx_BREAKABLE_DOOR
+ }, {
+ DECOR_SAND_ORNAMENT,
+ _("SAND ORNAMENT"),
+ DECORPERM_BEHIND_FLOOR,
+ DECORSHAPE_1x2,
+ DECORCAT_ORNAMENT,
+ 3000,
+ DecorDesc_SAND_ORNAMENT,
+ DecorGfx_SAND_ORNAMENT
+ }, {
+ DECOR_SILVER_SHIELD,
+ _("SILVER SHIELD"),
+ DECORPERM_BEHIND_FLOOR,
+ DECORSHAPE_1x2,
+ DECORCAT_ORNAMENT,
+ 0,
+ DecorDesc_SILVER_SHIELD,
+ DecorGfx_SILVER_SHIELD
+ }, {
+ DECOR_GOLD_SHIELD,
+ _("GOLD SHIELD"),
+ DECORPERM_BEHIND_FLOOR,
+ DECORSHAPE_1x2,
+ DECORCAT_ORNAMENT,
+ 0,
+ DecorDesc_GOLD_SHIELD,
+ DecorGfx_GOLD_SHIELD
+ }, {
+ DECOR_GLASS_ORNAMENT,
+ _("GLASS ORNAMENT"),
+ DECORPERM_BEHIND_FLOOR,
+ DECORSHAPE_1x2,
+ DECORCAT_ORNAMENT,
+ 0,
+ DecorDesc_GLASS_ORNAMENT,
+ DecorGfx_GLASS_ORNAMENT
+ }, {
+ DECOR_TV,
+ _("TV"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_ORNAMENT,
+ 3000,
+ DecorDesc_TV,
+ DecorGfx_TV
+ }, {
+ DECOR_ROUND_TV,
+ _("ROUND TV"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_ORNAMENT,
+ 4000,
+ DecorDesc_ROUND_TV,
+ DecorGfx_ROUND_TV
+ }, {
+ DECOR_CUTE_TV,
+ _("CUTE TV"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_ORNAMENT,
+ 4000,
+ DecorDesc_CUTE_TV,
+ DecorGfx_CUTE_TV
+ }, {
+ DECOR_GLITTER_MAT,
+ _("GLITTER MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_MAT,
+ 2000,
+ DecorDesc_GLITTER_MAT,
+ DecorGfx_GLITTER_MAT
+ }, {
+ DECOR_JUMP_MAT,
+ _("JUMP MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_MAT,
+ 2000,
+ DecorDesc_JUMP_MAT,
+ DecorGfx_JUMP_MAT
+ }, {
+ DECOR_SPIN_MAT,
+ _("SPIN MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_MAT,
+ 2000,
+ DecorDesc_SPIN_MAT,
+ DecorGfx_SPIN_MAT
+ }, {
+ DECOR_C_LOW_NOTE_MAT,
+ _("C Low NOTE MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_MAT,
+ 500,
+ DecorDesc_C_LOW_NOTE_MAT,
+ DecorGfx_C_LOW_NOTE_MAT
+ }, {
+ DECOR_D_NOTE_MAT,
+ _("D NOTE MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_MAT,
+ 500,
+ DecorDesc_D_NOTE_MAT,
+ DecorGfx_D_NOTE_MAT
+ }, {
+ DECOR_E_NOTE_MAT,
+ _("E NOTE MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_MAT,
+ 500,
+ DecorDesc_E_NOTE_MAT,
+ DecorGfx_E_NOTE_MAT
+ }, {
+ DECOR_F_NOTE_MAT,
+ _("F NOTE MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_MAT,
+ 500,
+ DecorDesc_F_NOTE_MAT,
+ DecorGfx_F_NOTE_MAT
+ }, {
+ DECOR_G_NOTE_MAT,
+ _("G NOTE MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_MAT,
+ 500,
+ DecorDesc_G_NOTE_MAT,
+ DecorGfx_G_NOTE_MAT
+ }, {
+ DECOR_A_NOTE_MAT,
+ _("A NOTE MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_MAT,
+ 500,
+ DecorDesc_A_NOTE_MAT,
+ DecorGfx_A_NOTE_MAT
+ }, {
+ DECOR_B_NOTE_MAT,
+ _("B NOTE MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_MAT,
+ 500,
+ DecorDesc_B_NOTE_MAT,
+ DecorGfx_B_NOTE_MAT
+ }, {
+ DECOR_C_HIGH_NOTE_MAT,
+ _("C High NOTE MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_MAT,
+ 500,
+ DecorDesc_C_HIGH_NOTE_MAT,
+ DecorGfx_C_HIGH_NOTE_MAT
+ }, {
+ DECOR_SURF_MAT,
+ _("SURF MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_3x3,
+ DECORCAT_MAT,
+ 4000,
+ DecorDesc_SURF_MAT,
+ DecorGfx_SURF_MAT
+ }, {
+ DECOR_THUNDER_MAT,
+ _("THUNDER MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_3x3,
+ DECORCAT_MAT,
+ 4000,
+ DecorDesc_THUNDER_MAT,
+ DecorGfx_THUNDER_MAT
+ }, {
+ DECOR_FIRE_BLAST_MAT,
+ _("FIRE BLAST MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_3x3,
+ DECORCAT_MAT,
+ 4000,
+ DecorDesc_FIRE_BLAST_MAT,
+ DecorGfx_FIRE_BLAST_MAT
+ }, {
+ DECOR_POWDER_SNOW_MAT,
+ _("POWDER SNOW MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_3x3,
+ DECORCAT_MAT,
+ 4000,
+ DecorDesc_POWDER_SNOW_MAT,
+ DecorGfx_POWDER_SNOW_MAT
+ }, {
+ DECOR_ATTRACT_MAT,
+ _("ATTRACT MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_3x3,
+ DECORCAT_MAT,
+ 4000,
+ DecorDesc_ATTRACT_MAT,
+ DecorGfx_ATTRACT_MAT
+ }, {
+ DECOR_FISSURE_MAT,
+ _("FISSURE MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_3x3,
+ DECORCAT_MAT,
+ 4000,
+ DecorDesc_FISSURE_MAT,
+ DecorGfx_FISSURE_MAT
+ }, {
+ DECOR_SPIKES_MAT,
+ _("SPIKES MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_3x3,
+ DECORCAT_MAT,
+ 4000,
+ DecorDesc_SPIKES_MAT,
+ DecorGfx_SPIKES_MAT
+ }, {
+ DECOR_BALL_POSTER,
+ _("BALL POSTER"),
+ DECORPERM_NA_WALL,
+ DECORSHAPE_1x1,
+ DECORCAT_POSTER,
+ 1000,
+ DecorDesc_BALL_POSTER,
+ DecorGfx_BALL_POSTER
+ }, {
+ DECOR_GREEN_POSTER,
+ _("GREEN POSTER"),
+ DECORPERM_NA_WALL,
+ DECORSHAPE_1x1,
+ DECORCAT_POSTER,
+ 1000,
+ DecorDesc_GREEN_POSTER,
+ DecorGfx_GREEN_POSTER
+ }, {
+ DECOR_RED_POSTER,
+ _("RED POSTER"),
+ DECORPERM_NA_WALL,
+ DECORSHAPE_1x1,
+ DECORCAT_POSTER,
+ 1000,
+ DecorDesc_RED_POSTER,
+ DecorGfx_RED_POSTER
+ }, {
+ DECOR_BLUE_POSTER,
+ _("BLUE POSTER"),
+ DECORPERM_NA_WALL,
+ DECORSHAPE_1x1,
+ DECORCAT_POSTER,
+ 1000,
+ DecorDesc_BLUE_POSTER,
+ DecorGfx_BLUE_POSTER
+ }, {
+ DECOR_CUTE_POSTER,
+ _("CUTE POSTER"),
+ DECORPERM_NA_WALL,
+ DECORSHAPE_1x1,
+ DECORCAT_POSTER,
+ 1000,
+ DecorDesc_CUTE_POSTER,
+ DecorGfx_CUTE_POSTER
+ }, {
+ DECOR_PIKA_POSTER,
+ _("PIKA POSTER"),
+ DECORPERM_NA_WALL,
+ DECORSHAPE_2x1,
+ DECORCAT_POSTER,
+ 1500,
+ DecorDesc_PIKA_POSTER,
+ DecorGfx_PIKA_POSTER
+ }, {
+ DECOR_LONG_POSTER,
+ _("LONG POSTER"),
+ DECORPERM_NA_WALL,
+ DECORSHAPE_2x1,
+ DECORCAT_POSTER,
+ 1500,
+ DecorDesc_LONG_POSTER,
+ DecorGfx_LONG_POSTER
+ }, {
+ DECOR_SEA_POSTER,
+ _("SEA POSTER"),
+ DECORPERM_NA_WALL,
+ DECORSHAPE_2x1,
+ DECORCAT_POSTER,
+ 1500,
+ DecorDesc_SEA_POSTER,
+ DecorGfx_SEA_POSTER
+ }, {
+ DECOR_SKY_POSTER,
+ _("SKY POSTER"),
+ DECORPERM_NA_WALL,
+ DECORSHAPE_2x1,
+ DECORCAT_POSTER,
+ 1500,
+ DecorDesc_SKY_POSTER,
+ DecorGfx_SKY_POSTER
+ }, {
+ DECOR_KISS_POSTER,
+ _("KISS POSTER"),
+ DECORPERM_NA_WALL,
+ DECORSHAPE_2x1,
+ DECORCAT_POSTER,
+ 1500,
+ DecorDesc_KISS_POSTER,
+ DecorGfx_KISS_POSTER
+ }, {
+ DECOR_PICHU_DOLL,
+ _("PICHU DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_PICHU_DOLL,
+ DecorGfx_PICHU_DOLL
+ }, {
+ DECOR_PIKACHU_DOLL,
+ _("PIKACHU DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_PIKACHU_DOLL,
+ DecorGfx_PIKACHU_DOLL
+ }, {
+ DECOR_MARILL_DOLL,
+ _("MARILL DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_MARILL_DOLL,
+ DecorGfx_MARILL_DOLL
+ }, {
+ DECOR_TOGEPI_DOLL,
+ _("TOGEPI DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_TOGEPI_DOLL,
+ DecorGfx_TOGEPI_DOLL
+ }, {
+ DECOR_CYNDAQUIL_DOLL,
+ _("CYNDAQUIL DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_CYNDAQUIL_DOLL,
+ DecorGfx_CYNDAQUIL_DOLL
+ }, {
+ DECOR_CHIKORITA_DOLL,
+ _("CHIKORITA DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_CHIKORITA_DOLL,
+ DecorGfx_CHIKORITA_DOLL
+ }, {
+ DECOR_TOTODILE_DOLL,
+ _("TOTODILE DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_TOTODILE_DOLL,
+ DecorGfx_TOTODILE_DOLL
+ }, {
+ DECOR_JIGGLYPUFF_DOLL,
+ _("JIGGLYPUFF DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_JIGGLYPUFF_DOLL,
+ DecorGfx_JIGGLYPUFF_DOLL
+ }, {
+ DECOR_MEOWTH_DOLL,
+ _("MEOWTH DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_MEOWTH_DOLL,
+ DecorGfx_MEOWTH_DOLL
+ }, {
+ DECOR_CLEFAIRY_DOLL,
+ _("CLEFAIRY DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_CLEFAIRY_DOLL,
+ DecorGfx_CLEFAIRY_DOLL
+ }, {
+ DECOR_DITTO_DOLL,
+ _("DITTO DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_DITTO_DOLL,
+ DecorGfx_DITTO_DOLL
+ }, {
+ DECOR_SMOOCHUM_DOLL,
+ _("SMOOCHUM DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_SMOOCHUM_DOLL,
+ DecorGfx_SMOOCHUM_DOLL
+ }, {
+ DECOR_TREECKO_DOLL,
+ _("TREECKO DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_TREECKO_DOLL,
+ DecorGfx_TREECKO_DOLL
+ }, {
+ DECOR_TORCHIC_DOLL,
+ _("TORCHIC DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_TORCHIC_DOLL,
+ DecorGfx_TORCHIC_DOLL
+ }, {
+ DECOR_MUDKIP_DOLL,
+ _("MUDKIP DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_MUDKIP_DOLL,
+ DecorGfx_MUDKIP_DOLL
+ }, {
+ DECOR_DUSKULL_DOLL,
+ _("DUSKULL DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_DUSKULL_DOLL,
+ DecorGfx_DUSKULL_DOLL
+ }, {
+ DECOR_WYNAUT_DOLL,
+ _("WYNAUT DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_WYNAUT_DOLL,
+ DecorGfx_WYNAUT_DOLL
+ }, {
+ DECOR_BALTOY_DOLL,
+ _("BALTOY DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_BALTOY_DOLL,
+ DecorGfx_BALTOY_DOLL
+ }, {
+ DECOR_KECLEON_DOLL,
+ _("KECLEON DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_KECLEON_DOLL,
+ DecorGfx_KECLEON_DOLL
+ }, {
+ DECOR_AZURILL_DOLL,
+ _("AZURILL DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_AZURILL_DOLL,
+ DecorGfx_AZURILL_DOLL
+ }, {
+ DECOR_SKITTY_DOLL,
+ _("SKITTY DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_SKITTY_DOLL,
+ DecorGfx_SKITTY_DOLL
+ }, {
+ DECOR_SWABLU_DOLL,
+ _("SWABLU DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_SWABLU_DOLL,
+ DecorGfx_SWABLU_DOLL
+ }, {
+ DECOR_GULPIN_DOLL,
+ _("GULPIN DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_GULPIN_DOLL,
+ DecorGfx_GULPIN_DOLL
+ }, {
+ DECOR_LOTAD_DOLL,
+ _("LOTAD DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_LOTAD_DOLL,
+ DecorGfx_LOTAD_DOLL
+ }, {
+ DECOR_SEEDOT_DOLL,
+ _("SEEDOT DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_SEEDOT_DOLL,
+ DecorGfx_SEEDOT_DOLL
+ }, {
+ DECOR_PIKA_CUSHION,
+ _("PIKA CUSHION"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_CUSHION,
+ 2000,
+ DecorDesc_PIKA_CUSHION,
+ DecorGfx_PIKA_CUSHION
+ }, {
+ DECOR_ROUND_CUSHION,
+ _("ROUND CUSHION"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_CUSHION,
+ 2000,
+ DecorDesc_ROUND_CUSHION,
+ DecorGfx_ROUND_CUSHION
+ }, {
+ DECOR_KISS_CUSHION,
+ _("KISS CUSHION"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_CUSHION,
+ 2000,
+ DecorDesc_KISS_CUSHION,
+ DecorGfx_KISS_CUSHION
+ }, {
+ DECOR_ZIGZAG_CUSHION,
+ _("ZIGZAG CUSHION"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_CUSHION,
+ 2000,
+ DecorDesc_ZIGZAG_CUSHION,
+ DecorGfx_ZIGZAG_CUSHION
+ }, {
+ DECOR_SPIN_CUSHION,
+ _("SPIN CUSHION"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_CUSHION,
+ 2000,
+ DecorDesc_SPIN_CUSHION,
+ DecorGfx_SPIN_CUSHION
+ }, {
+ DECOR_DIAMOND_CUSHION,
+ _("DIAMOND CUSHION"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_CUSHION,
+ 2000,
+ DecorDesc_DIAMOND_CUSHION,
+ DecorGfx_DIAMOND_CUSHION
+ }, {
+ DECOR_BALL_CUSHION,
+ _("BALL CUSHION"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_CUSHION,
+ 2000,
+ DecorDesc_BALL_CUSHION,
+ DecorGfx_BALL_CUSHION
+ }, {
+ DECOR_GRASS_CUSHION,
+ _("GRASS CUSHION"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_CUSHION,
+ 2000,
+ DecorDesc_GRASS_CUSHION,
+ DecorGfx_GRASS_CUSHION
+ }, {
+ DECOR_FIRE_CUSHION,
+ _("FIRE CUSHION"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_CUSHION,
+ 2000,
+ DecorDesc_FIRE_CUSHION,
+ DecorGfx_FIRE_CUSHION
+ }, {
+ DECOR_WATER_CUSHION,
+ _("WATER CUSHION"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_CUSHION,
+ 2000,
+ DecorDesc_WATER_CUSHION,
+ DecorGfx_WATER_CUSHION
+ }, {
+ DECOR_SNORLAX_DOLL,
+ _("SNORLAX DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x2,
+ DECORCAT_DOLL,
+ 10000,
+ DecorDesc_SNORLAX_DOLL,
+ DecorGfx_SNORLAX_DOLL
+ }, {
+ DECOR_RHYDON_DOLL,
+ _("RHYDON DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x2,
+ DECORCAT_DOLL,
+ 10000,
+ DecorDesc_RHYDON_DOLL,
+ DecorGfx_RHYDON_DOLL
+ }, {
+ DECOR_LAPRAS_DOLL,
+ _("LAPRAS DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x2,
+ DECORCAT_DOLL,
+ 10000,
+ DecorDesc_LAPRAS_DOLL,
+ DecorGfx_LAPRAS_DOLL
+ }, {
+ DECOR_VENUSAUR_DOLL,
+ _("VENUSAUR DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x2,
+ DECORCAT_DOLL,
+ 10000,
+ DecorDesc_VENUSAUR_DOLL,
+ DecorGfx_VENUSAUR_DOLL
+ }, {
+ DECOR_CHARIZARD_DOLL,
+ _("CHARIZARD DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x2,
+ DECORCAT_DOLL,
+ 10000,
+ DecorDesc_CHARIZARD_DOLL,
+ DecorGfx_CHARIZARD_DOLL
+ }, {
+ DECOR_BLASTOISE_DOLL,
+ _("BLASTOISE DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x2,
+ DECORCAT_DOLL,
+ 10000,
+ DecorDesc_BLASTOISE_DOLL,
+ DecorGfx_BLASTOISE_DOLL
+ }, {
+ DECOR_WAILMER_DOLL,
+ _("WAILMER DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x2,
+ DECORCAT_DOLL,
+ 10000,
+ DecorDesc_WAILMER_DOLL,
+ DecorGfx_WAILMER_DOLL
+ }, {
+ DECOR_REGIROCK_DOLL,
+ _("REGIROCK DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x2,
+ DECORCAT_DOLL,
+ 10000,
+ DecorDesc_REGIROCK_DOLL,
+ DecorGfx_REGIROCK_DOLL
+ }, {
+ DECOR_REGICE_DOLL,
+ _("REGICE DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x2,
+ DECORCAT_DOLL,
+ 10000,
+ DecorDesc_REGICE_DOLL,
+ DecorGfx_REGICE_DOLL
+ }, {
+ DECOR_REGISTEEL_DOLL,
+ _("REGISTEEL DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x2,
+ DECORCAT_DOLL,
+ 10000,
+ DecorDesc_REGISTEEL_DOLL,
+ DecorGfx_REGISTEEL_DOLL}
+};
+
+#endif //GUARD_DATA_DECORATION_HEADER_H
diff --git a/include/data/decoration/icon.h b/include/data/decoration/icon.h
new file mode 100644
index 000000000..1f11bc19f
--- /dev/null
+++ b/include/data/decoration/icon.h
@@ -0,0 +1,132 @@
+//
+// Created by scott on 10/21/2017.
+//
+
+#ifndef GUARD_ICON_H
+#define GUARD_ICON_H
+
+const u8 *const gUnknown_085A6BE8[][2] = {
+ {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ {NULL, NULL},
+ {NULL, NULL},
+ {gUnknown_08DB7AA0, gUnknown_08DB7B34},
+ {gUnknown_08DB7B5C, gUnknown_08DB7BEC},
+ {gUnknown_08DB7C08, gUnknown_08DB7CE8},
+ {gUnknown_08DB7D08, gUnknown_08DB7DCC},
+ {gUnknown_08DB7DF4, gUnknown_08DB7EA0},
+ {gUnknown_08DB7EC4, gUnknown_08DB7F60},
+ {gUnknown_08DB7F7C, gUnknown_08DB8070},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {gUnknown_08DB808C, gUnknown_08DB8138},
+ {gUnknown_08DB8160, gUnknown_08DB8218},
+ {gUnknown_08DB823C, gUnknown_08DB8300},
+ {gUnknown_08DB8328, gUnknown_08DB8430},
+ {gUnknown_08DB8458, gUnknown_08DB8528},
+ {gUnknown_08DB854C, gUnknown_08DB862C},
+ {gUnknown_08DB8654, gUnknown_08DB86C4},
+ {gUnknown_08DB86E0, gUnknown_08DB8750},
+ {gUnknown_08DB876C, gUnknown_08DB87DC},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {gUnknown_08DB87F8, gUnknown_08DB88D8},
+ {gUnknown_08DB8900, gUnknown_08DB89E0},
+ {gUnknown_08DB8A08, gUnknown_08DB8A68},
+ {gUnknown_08DB8A84, gUnknown_08DB8B40},
+ {NULL, NULL},
+ {NULL, NULL},
+ {gUnknown_08DB8B68, gUnknown_08DB8C40},
+ {gUnknown_08DB8C5C, gUnknown_08DB8CF4},
+ {NULL, NULL},
+ {gUnknown_08DB8D18, gUnknown_08DB8DB0},
+ {gUnknown_08DB8DD4, gUnknown_08DB8E80},
+ {NULL, NULL},
+ {NULL, NULL},
+ {gUnknown_08DB8EA0, gUnknown_08DB8F58},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {gUnknown_08DB8F7C, gUnknown_08DB9038},
+ {gUnknown_08DB9058, gUnknown_08DB9130},
+ {gUnknown_08DB9154, gUnknown_08DB9218},
+ {gUnknown_08DB9234, gUnknown_08DB92FC},
+ {gUnknown_08DB931C, gUnknown_08DB93E8},
+ {gUnknown_08DB940C, gUnknown_08DB94CC},
+ {gUnknown_08DB94E8, gUnknown_08DB95AC},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {gUnknown_08DB95D0, gUnknown_08DB96C4},
+ {gUnknown_08DB96EC, gUnknown_08DB97F4},
+ {gUnknown_08DB981C, gUnknown_08DB9908},
+ {gUnknown_08DB9930, gUnknown_08DB9A54},
+ {gUnknown_08DB9A7C, gUnknown_08DB9B7C},
+ {gUnknown_08DB9BA4, gUnknown_08DB9CB0},
+ {gUnknown_08DB9CD8, gUnknown_08DB9DAC},
+ {gUnknown_08DB9F08, gUnknown_08DB9FFC},
+ {gUnknown_08DB9DD4, gUnknown_08DB9EE4},
+ {gUnknown_08DBA020, gUnknown_08DBA12C}
+};
+
+#endif //GUARD_ICON_H
diff --git a/include/data/decoration/tilemaps.h b/include/data/decoration/tilemaps.h
new file mode 100644
index 000000000..1cca7ae0b
--- /dev/null
+++ b/include/data/decoration/tilemaps.h
@@ -0,0 +1,239 @@
+//
+// Created by scott on 10/21/2017.
+//
+
+#ifndef GUARD_TILEMAPS_H
+#define GUARD_TILEMAPS_H
+
+const u8 Unknown_085A6FB0[] = {
+ 0x00, 0x01, 0x02, 0x03
+};
+
+const u8 Unknown_085A6FB4[] = {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d
+};
+
+const u8 Unknown_085A6FC0[] = {
+ 0x00, 0x01, 0x02, 0x03,
+ 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b,
+ 0x0c, 0x0d, 0x0e, 0x0f
+};
+
+const u8 Unknown_085A6FD0[] = {
+ 0x00, 0x01, 0x04, 0x05,
+ 0x08, 0x09, 0x0c, 0x0d,
+ 0x10, 0x11, 0x14, 0x15
+};
+
+const u8 Unknown_085A6FDC[] = {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
+};
+
+const u8 Unknown_085A6FE4[] = {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f
+};
+
+const u8 Unknown_085A7004[] = {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d
+};
+
+const u8 Unknown_085A7028[] = {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d
+};
+
+const u8 Unknown_085A7040[] = {
+ 0x00, 0x00, 0x00, 0x00
+};
+
+const u8 Unknown_085A7044[] = {
+ 0x00, 0x00, 0x01, 0x01,
+ 0x00, 0x00, 0x01, 0x01
+};
+
+const u8 Unknown_085A704C[] = {
+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x02,
+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x02
+};
+
+const u8 Unknown_085A7058[] = {
+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03,
+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03,
+ 0x04, 0x04, 0x05, 0x05, 0x06, 0x06, 0x07, 0x07,
+ 0x04, 0x04, 0x05, 0x05, 0x06, 0x06, 0x07, 0x07
+};
+
+const u8 Unknown_085A7078[] = {
+ 0x00, 0x00, 0x01, 0x01,
+ 0x00, 0x00, 0x01, 0x01,
+ 0x02, 0x02, 0x03, 0x03,
+ 0x02, 0x02, 0x03, 0x03
+};
+
+const u8 Unknown_085A7088[] = {
+ 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01
+};
+
+const u8 Unknown_085A7090[] = {
+ 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01,
+ 0x02, 0x02, 0x02, 0x02
+};
+
+const u8 Unknown_085A709C[] = {
+ 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01,
+ 0x02, 0x02, 0x03, 0x03, 0x02, 0x02, 0x03, 0x03,
+ 0x04, 0x04, 0x05, 0x05, 0x04, 0x04, 0x05, 0x05,
+ 0x06, 0x06, 0x07, 0x07, 0x06, 0x06, 0x07, 0x07
+};
+
+const u8 Unknown_085A70BC[] = {
+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x02,
+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x02,
+ 0x03, 0x03, 0x04, 0x04, 0x05, 0x05,
+ 0x03, 0x03, 0x04, 0x04, 0x05, 0x05,
+ 0x06, 0x06, 0x07, 0x07, 0x08, 0x08,
+ 0x06, 0x06, 0x07, 0x07, 0x08, 0x08
+};
+
+const u8 Unknown_085A70E0[] = {
+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x02,
+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x02,
+ 0x03, 0x03, 0x04, 0x04, 0x05, 0x05,
+ 0x03, 0x03, 0x04, 0x04, 0x05, 0x05
+};
+
+const u8 Unknown_085A70F8[] = {
+ 0x04, 0x05, 0x06, 0x07
+};
+
+const u8 Unknown_085A70FC[] = {
+ 0x04, 0x05, 0x04, 0x05,
+ 0x06, 0x07, 0x06, 0x07
+};
+
+const u8 Unknown_085A7104[] = {
+ 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
+ 0x06, 0x07, 0x06, 0x07, 0x06, 0x07
+};
+
+const u8 Unknown_085A7110[] = {
+ 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
+ 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07,
+ 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
+ 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07
+};
+
+const u8 Unknown_085A7130[] = {
+ 0x04, 0x05, 0x04, 0x05,
+ 0x06, 0x07, 0x06, 0x07,
+ 0x04, 0x05, 0x04, 0x05,
+ 0x06, 0x07, 0x06, 0x07
+};
+
+const u8 Unknown_085A7140[] = {
+ 0x04, 0x05, 0x06, 0x07,
+ 0x04, 0x05, 0x06, 0x07
+};
+
+const u8 Unknown_085A7148[] = {
+ 0x04, 0x05, 0x06, 0x07,
+ 0x04, 0x05, 0x06, 0x07,
+ 0x04, 0x05, 0x06, 0x07
+};
+
+const u8 Unknown_085A7154[] = {
+ 0x04, 0x05, 0x04, 0x05, 0x06, 0x07, 0x06, 0x07,
+ 0x04, 0x05, 0x04, 0x05, 0x06, 0x07, 0x06, 0x07,
+ 0x04, 0x05, 0x04, 0x05, 0x06, 0x07, 0x06, 0x07,
+ 0x04, 0x05, 0x04, 0x05, 0x06, 0x07, 0x06, 0x07
+};
+
+const u8 Unknown_085A7174[] = {
+ 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
+ 0x06, 0x07, 0x06, 0x07, 0x06, 0x07,
+ 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
+ 0x06, 0x07, 0x06, 0x07, 0x06, 0x07,
+ 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
+ 0x06, 0x07, 0x06, 0x07, 0x06, 0x07
+};
+
+const u8 Unknown_085A7198[] = {
+ 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
+ 0x06, 0x07, 0x06, 0x07, 0x06, 0x07,
+ 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
+ 0x06, 0x07, 0x06, 0x07, 0x06, 0x07
+};
+
+const struct {
+ const u8 *tiles;
+ const u8 *y;
+ const u8 *x;
+ u8 size;
+} gUnknown_085A71B0[] = {
+ {
+ Unknown_085A6FB0,
+ Unknown_085A7040,
+ Unknown_085A70F8,
+ 0x04
+ }, {
+ Unknown_085A6FDC,
+ Unknown_085A7044,
+ Unknown_085A70FC,
+ 0x08
+ }, {
+ Unknown_085A6FB4,
+ Unknown_085A704C,
+ Unknown_085A7104,
+ 0x0c
+ }, {
+ Unknown_085A6FE4,
+ Unknown_085A7058,
+ Unknown_085A7110,
+ 0x20
+ }, {
+ Unknown_085A6FC0,
+ Unknown_085A7078,
+ Unknown_085A7130,
+ 0x10
+ }, {
+ Unknown_085A6FDC,
+ Unknown_085A7088,
+ Unknown_085A7140,
+ 0x08
+ }, {
+ Unknown_085A6FD0,
+ Unknown_085A7090,
+ Unknown_085A7148,
+ 0x0c
+ }, {
+ Unknown_085A6FE4,
+ Unknown_085A709C,
+ Unknown_085A7154,
+ 0x20
+ }, {
+ Unknown_085A7004,
+ Unknown_085A70BC,
+ Unknown_085A7174,
+ 0x24
+ }, {
+ Unknown_085A7028,
+ Unknown_085A70E0,
+ Unknown_085A7198,
+ 0x18
+ }};
+
+#endif //GUARD_TILEMAPS_H
diff --git a/include/data/decoration/tiles.h b/include/data/decoration/tiles.h
new file mode 100644
index 000000000..9a3f8a222
--- /dev/null
+++ b/include/data/decoration/tiles.h
@@ -0,0 +1,646 @@
+#ifndef GUARD_DATA_DECORATION_TILES
+#define GUARD_DATA_DECORATION_TILES
+
+const u16 DecorGfx_SMALL_DESK[] = {
+ 0x87
+};
+
+const u16 DecorGfx_POKEMON_DESK[] = {
+ 0x8F
+};
+
+const u16 DecorGfx_HEAVY_DESK[] = {
+ 0x90,
+ 0x91,
+ 0x92,
+ 0x98,
+ 0x99,
+ 0x9A
+};
+
+const u16 DecorGfx_RAGGED_DESK[] = {
+ 0x93,
+ 0x94,
+ 0x95,
+ 0x9B,
+ 0x9C,
+ 0x9D
+};
+
+const u16 DecorGfx_COMFORT_DESK[] = {
+ 0x96,
+ 0x97,
+ 0xA3,
+ 0x9E,
+ 0x9F,
+ 0xAB
+};
+
+const u16 DecorGfx_PRETTY_DESK[] = {
+ 0xBD,
+ 0xBE,
+ 0xBF,
+ 0xC5,
+ 0xC6,
+ 0xC7,
+ 0xCD,
+ 0xCE,
+ 0xCF
+};
+
+const u16 DecorGfx_BRICK_DESK[] = {
+ 0xA0,
+ 0xA1,
+ 0xA2,
+ 0xA8,
+ 0xA9,
+ 0xAA,
+ 0xB0,
+ 0xB1,
+ 0xB2
+};
+
+const u16 DecorGfx_CAMP_DESK[] = {
+ 0xA4,
+ 0xA5,
+ 0xA6,
+ 0xAC,
+ 0xAD,
+ 0xAE,
+ 0xB4,
+ 0xB5,
+ 0xB6
+};
+
+const u16 DecorGfx_HARD_DESK[] = {
+ 0xA7,
+ 0xBB,
+ 0xBC,
+ 0xAF,
+ 0xC3,
+ 0xC4,
+ 0xB7,
+ 0xCB,
+ 0xCC
+};
+
+const u16 DecorGfx_SMALL_CHAIR[] = {
+ 0xB8
+};
+
+const u16 DecorGfx_POKEMON_CHAIR[] = {
+ 0xB9
+};
+
+const u16 DecorGfx_HEAVY_CHAIR[] = {
+ 0xBA
+};
+
+const u16 DecorGfx_PRETTY_CHAIR[] = {
+ 0xC0
+};
+
+const u16 DecorGfx_COMFORT_CHAIR[] = {
+ 0xC1
+};
+
+const u16 DecorGfx_RAGGED_CHAIR[] = {
+ 0xC2
+};
+
+const u16 DecorGfx_BRICK_CHAIR[] = {
+ 0xC8
+};
+
+const u16 DecorGfx_CAMP_CHAIR[] = {
+ 0xC9
+};
+
+const u16 DecorGfx_HARD_CHAIR[] = {
+ 0xCA
+};
+
+const u16 DecorGfx_RED_PLANT[] = {
+ 0xD0,
+ 0xD8
+};
+
+const u16 DecorGfx_TROPICAL_PLANT[] = {
+ 0xD2,
+ 0xDA
+};
+
+const u16 DecorGfx_PRETTY_FLOWERS[] = {
+ 0xD4,
+ 0xDC
+};
+
+const u16 DecorGfx_COLORFUL_PLANT[] = {
+ 0xE0,
+ 0xE2,
+ 0xE8,
+ 0xE9
+};
+
+const u16 DecorGfx_BIG_PLANT[] = {
+ 0xE4,
+ 0xE6,
+ 0xEC,
+ 0xED
+};
+
+const u16 DecorGfx_GORGEOUS_PLANT[] = {
+ 0xF0,
+ 0xF2,
+ 0xF8,
+ 0xF9
+};
+
+const u16 DecorGfx_RED_BRICK[] = {
+ 0x25,
+ 0x2D
+};
+
+const u16 DecorGfx_YELLOW_BRICK[] = {
+ 0x26,
+ 0x2E
+};
+
+const u16 DecorGfx_BLUE_BRICK[] = {
+ 0x27,
+ 0x2F
+};
+
+const u16 DecorGfx_RED_BALLOON[] = {
+ 0x138
+};
+
+const u16 DecorGfx_BLUE_BALLOON[] = {
+ 0x13C
+};
+
+const u16 DecorGfx_YELLOW_BALLOON[] = {
+ 0x140
+};
+
+const u16 DecorGfx_RED_TENT[] = {
+ 0x30,
+ 0x31,
+ 0x32,
+ 0x38,
+ 0x39,
+ 0x3A,
+ 0x40,
+ 0x41,
+ 0x3B
+};
+
+const u16 DecorGfx_BLUE_TENT[] = {
+ 0x48,
+ 0x49,
+ 0x68,
+ 0x50,
+ 0x51,
+ 0x70,
+ 0x58,
+ 0x59,
+ 0x69
+};
+
+const u16 DecorGfx_SOLID_BOARD[] = {
+ 0x34,
+ 0x3C
+};
+
+const u16 DecorGfx_SLIDE[] = {
+ 0x35,
+ 0x36,
+ 0x3D,
+ 0x3E,
+ 0x63,
+ 0x64,
+ 0x6F,
+ 0x77
+};
+
+const u16 DecorGfx_FENCE_LENGTH[] = {
+ 0x33
+};
+
+const u16 DecorGfx_FENCE_WIDTH[] = {
+ 0x2C
+};
+
+const u16 DecorGfx_TIRE[] = {
+ 0x80,
+ 0x81,
+ 0x88,
+ 0x89
+};
+
+const u16 DecorGfx_STAND[] = {
+ 0x6A,
+ 0x6B,
+ 0x6C,
+ 0x6D,
+ 0x72,
+ 0x73,
+ 0x74,
+ 0x75
+};
+
+const u16 DecorGfx_MUD_BALL[] = {
+ 0x28
+};
+
+const u16 DecorGfx_BREAKABLE_DOOR[] = {
+ 0x37,
+ 0x3F
+};
+
+const u16 DecorGfx_SAND_ORNAMENT[] = {
+ 0x85,
+ 0x8D
+};
+
+const u16 DecorGfx_SILVER_SHIELD[] = {
+ 0xD6,
+ 0xDE
+};
+
+const u16 DecorGfx_GOLD_SHIELD[] = {
+ 0x12E,
+ 0x136
+};
+
+const u16 DecorGfx_GLASS_ORNAMENT[] = {
+ 0x82,
+ 0x8A
+};
+
+const u16 DecorGfx_TV[] = {
+ 0xF4
+};
+
+const u16 DecorGfx_ROUND_TV[] = {
+ 0xF5
+};
+
+const u16 DecorGfx_CUTE_TV[] = {
+ 0xF6
+};
+
+const u16 DecorGfx_GLITTER_MAT[] = {
+ 0x60
+};
+
+const u16 DecorGfx_JUMP_MAT[] = {
+ 0x61
+};
+
+const u16 DecorGfx_SPIN_MAT[] = {
+ 0x62
+};
+
+const u16 DecorGfx_C_LOW_NOTE_MAT[] = {
+ 0x78
+};
+
+const u16 DecorGfx_D_NOTE_MAT[] = {
+ 0x79
+};
+
+const u16 DecorGfx_E_NOTE_MAT[] = {
+ 0x7A
+};
+
+const u16 DecorGfx_F_NOTE_MAT[] = {
+ 0x7B
+};
+
+const u16 DecorGfx_G_NOTE_MAT[] = {
+ 0x7C
+};
+
+const u16 DecorGfx_A_NOTE_MAT[] = {
+ 0x7D
+};
+
+const u16 DecorGfx_B_NOTE_MAT[] = {
+ 0x7E
+};
+
+const u16 DecorGfx_C_HIGH_NOTE_MAT[] = {
+ 0xB3
+};
+
+const u16 DecorGfx_SURF_MAT[] = {
+ 0x42,
+ 0x43,
+ 0x44,
+ 0x4A,
+ 0x4B,
+ 0x4C,
+ 0x52,
+ 0x53,
+ 0x54
+};
+
+const u16 DecorGfx_THUNDER_MAT[] = {
+ 0x45,
+ 0x46,
+ 0x47,
+ 0x4D,
+ 0x4E,
+ 0x4F,
+ 0x55,
+ 0x56,
+ 0x57
+};
+
+const u16 DecorGfx_FIRE_BLAST_MAT[] = {
+ 0x5A,
+ 0x5B,
+ 0x5C,
+ 0x5D,
+ 0x5E,
+ 0x5F,
+ 0x65,
+ 0x66,
+ 0x67
+};
+
+const u16 DecorGfx_POWDER_SNOW_MAT[] = {
+ 0x100,
+ 0x101,
+ 0x102,
+ 0x108,
+ 0x109,
+ 0x10A,
+ 0x110,
+ 0x111,
+ 0x112
+};
+
+const u16 DecorGfx_ATTRACT_MAT[] = {
+ 0x103,
+ 0x104,
+ 0x105,
+ 0x10B,
+ 0x10C,
+ 0x10D,
+ 0x113,
+ 0x114,
+ 0x115
+};
+
+const u16 DecorGfx_FISSURE_MAT[] = {
+ 0x106,
+ 0x107,
+ 0x118,
+ 0x10E,
+ 0x10F,
+ 0x120,
+ 0x116,
+ 0x117,
+ 0x128
+};
+
+const u16 DecorGfx_SPIKES_MAT[] = {
+ 0x119,
+ 0x11A,
+ 0x11B,
+ 0x121,
+ 0x122,
+ 0x123,
+ 0x129,
+ 0x12A,
+ 0x12B
+};
+
+const u16 DecorGfx_BALL_POSTER[] = {
+ 0x130
+};
+
+const u16 DecorGfx_GREEN_POSTER[] = {
+ 0x131
+};
+
+const u16 DecorGfx_RED_POSTER[] = {
+ 0x132
+};
+
+const u16 DecorGfx_BLUE_POSTER[] = {
+ 0x133
+};
+
+const u16 DecorGfx_CUTE_POSTER[] = {
+ 0x134
+};
+
+const u16 DecorGfx_PIKA_POSTER[] = {
+ 0x11C,
+ 0x11D
+};
+
+const u16 DecorGfx_LONG_POSTER[] = {
+ 0x11E,
+ 0x11F
+};
+
+const u16 DecorGfx_SEA_POSTER[] = {
+ 0x124,
+ 0x125
+};
+
+const u16 DecorGfx_SKY_POSTER[] = {
+ 0x126,
+ 0x127
+};
+
+const u16 DecorGfx_KISS_POSTER[] = {
+ 0x12C,
+ 0x12D
+};
+
+const u16 DecorGfx_PICHU_DOLL[] = {
+ MAP_OBJ_GFX_PICHU_DOLL
+};
+
+const u16 DecorGfx_PIKACHU_DOLL[] = {
+ MAP_OBJ_GFX_PIKACHU_DOLL
+};
+
+const u16 DecorGfx_MARILL_DOLL[] = {
+ MAP_OBJ_GFX_MARILL_DOLL
+};
+
+const u16 DecorGfx_TOGEPI_DOLL[] = {
+ MAP_OBJ_GFX_TOGEPI_DOLL
+};
+
+const u16 DecorGfx_CYNDAQUIL_DOLL[] = {
+ MAP_OBJ_GFX_CYNDAQUIL_DOLL
+};
+
+const u16 DecorGfx_CHIKORITA_DOLL[] = {
+ MAP_OBJ_GFX_CHIKORITA_DOLL
+};
+
+const u16 DecorGfx_TOTODILE_DOLL[] = {
+ MAP_OBJ_GFX_TOTODILE_DOLL
+};
+
+const u16 DecorGfx_JIGGLYPUFF_DOLL[] = {
+ MAP_OBJ_GFX_JIGGLYPUFF_DOLL
+};
+
+const u16 DecorGfx_MEOWTH_DOLL[] = {
+ MAP_OBJ_GFX_MEOWTH_DOLL
+};
+
+const u16 DecorGfx_CLEFAIRY_DOLL[] = {
+ MAP_OBJ_GFX_CLEFAIRY_DOLL
+};
+
+const u16 DecorGfx_DITTO_DOLL[] = {
+ MAP_OBJ_GFX_DITTO_DOLL
+};
+
+const u16 DecorGfx_SMOOCHUM_DOLL[] = {
+ MAP_OBJ_GFX_SMOOCHUM_DOLL
+};
+
+const u16 DecorGfx_TREECKO_DOLL[] = {
+ MAP_OBJ_GFX_TREECKO_DOLL
+};
+
+const u16 DecorGfx_TORCHIC_DOLL[] = {
+ MAP_OBJ_GFX_TORCHIC_DOLL
+};
+
+const u16 DecorGfx_MUDKIP_DOLL[] = {
+ MAP_OBJ_GFX_MUDKIP_DOLL
+};
+
+const u16 DecorGfx_DUSKULL_DOLL[] = {
+ MAP_OBJ_GFX_DUSKULL_DOLL
+};
+
+const u16 DecorGfx_WYNAUT_DOLL[] = {
+ MAP_OBJ_GFX_WYNAUT_DOLL
+};
+
+const u16 DecorGfx_BALTOY_DOLL[] = {
+ MAP_OBJ_GFX_BALTOY_DOLL
+};
+
+const u16 DecorGfx_KECLEON_DOLL[] = {
+ MAP_OBJ_GFX_KECLEON_DOLL
+};
+
+const u16 DecorGfx_AZURILL_DOLL[] = {
+ MAP_OBJ_GFX_AZURILL_DOLL
+};
+
+const u16 DecorGfx_SKITTY_DOLL[] = {
+ MAP_OBJ_GFX_SKITTY_DOLL
+};
+
+const u16 DecorGfx_SWABLU_DOLL[] = {
+ MAP_OBJ_GFX_SWABLU_DOLL
+};
+
+const u16 DecorGfx_GULPIN_DOLL[] = {
+ MAP_OBJ_GFX_GULPIN_DOLL
+};
+
+const u16 DecorGfx_LOTAD_DOLL[] = {
+ MAP_OBJ_GFX_LOTAD_DOLL
+};
+
+const u16 DecorGfx_SEEDOT_DOLL[] = {
+ MAP_OBJ_GFX_SEEDOT_DOLL
+};
+
+const u16 DecorGfx_PIKA_CUSHION[] = {
+ MAP_OBJ_GFX_PIKA_CUSHION
+};
+
+const u16 DecorGfx_ROUND_CUSHION[] = {
+ MAP_OBJ_GFX_ROUND_CUSHION
+};
+
+const u16 DecorGfx_KISS_CUSHION[] = {
+ MAP_OBJ_GFX_KISS_CUSHION
+};
+
+const u16 DecorGfx_ZIGZAG_CUSHION[] = {
+ MAP_OBJ_GFX_ZIGZAG_CUSHION
+};
+
+const u16 DecorGfx_SPIN_CUSHION[] = {
+ MAP_OBJ_GFX_SPIN_CUSHION
+};
+
+const u16 DecorGfx_DIAMOND_CUSHION[] = {
+ MAP_OBJ_GFX_DIAMOND_CUSHION
+};
+
+const u16 DecorGfx_BALL_CUSHION[] = {
+ MAP_OBJ_GFX_BALL_CUSHION
+};
+
+const u16 DecorGfx_GRASS_CUSHION[] = {
+ MAP_OBJ_GFX_GRASS_CUSHION
+};
+
+const u16 DecorGfx_FIRE_CUSHION[] = {
+ MAP_OBJ_GFX_FIRE_CUSHION
+};
+
+const u16 DecorGfx_WATER_CUSHION[] = {
+ MAP_OBJ_GFX_WATER_CUSHION
+};
+
+const u16 DecorGfx_SNORLAX_DOLL[] = {
+ MAP_OBJ_GFX_BIG_SNORLAX_DOLL
+};
+
+const u16 DecorGfx_RHYDON_DOLL[] = {
+ MAP_OBJ_GFX_BIG_RHYDON_DOLL
+};
+
+const u16 DecorGfx_LAPRAS_DOLL[] = {
+ MAP_OBJ_GFX_BIG_LAPRAS_DOLL
+};
+
+const u16 DecorGfx_VENUSAUR_DOLL[] = {
+ MAP_OBJ_GFX_BIG_VENUSAUR_DOLL
+};
+
+const u16 DecorGfx_CHARIZARD_DOLL[] = {
+ MAP_OBJ_GFX_BIG_CHARIZARD_DOLL
+};
+
+const u16 DecorGfx_BLASTOISE_DOLL[] = {
+ MAP_OBJ_GFX_BIG_BLASTOISE_DOLL
+};
+
+const u16 DecorGfx_WAILMER_DOLL[] = {
+ MAP_OBJ_GFX_BIG_WAILMER_DOLL
+};
+
+const u16 DecorGfx_REGIROCK_DOLL[] = {
+ MAP_OBJ_GFX_BIG_REGIROCK_DOLL
+};
+
+const u16 DecorGfx_REGICE_DOLL[] = {
+ MAP_OBJ_GFX_BIG_REGICE_DOLL
+};
+
+const u16 DecorGfx_REGISTEEL_DOLL[] = {
+ MAP_OBJ_GFX_BIG_REGISTEEL_DOLL
+};
+
+#endif // GUARD_DATA_DECORATION_TILES
diff --git a/include/decompress.h b/include/decompress.h
index 6c925f730..c3a771893 100644
--- a/include/decompress.h
+++ b/include/decompress.h
@@ -8,7 +8,7 @@ void LZDecompressVram(const void *src, void *dest);
u16 LoadCompressedObjectPic(const struct CompressedSpriteSheet *src);
void LoadCompressedObjectPicOverrideBuffer(const struct CompressedSpriteSheet *src, void *buffer);
-bool8 LoadCompressedObjectPicUsingHeap(struct CompressedSpriteSheet* src);
+bool8 LoadCompressedObjectPicUsingHeap(const struct CompressedSpriteSheet* src);
void LoadCompressedObjectPalette(const struct CompressedSpritePalette *src);
void LoadCompressedObjectPaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer);
diff --git a/include/decoration.h b/include/decoration.h
index bbb77d127..adefb2fd1 100644
--- a/include/decoration.h
+++ b/include/decoration.h
@@ -125,6 +125,47 @@ enum DecoId {
/*120*/ DECOR_REGISTEEL_DOLL
};
+enum DecorPerm {
+ /*
+ * The nomenclature here describes collision and placement permissions, in that order.
+ */
+ DECORPERM_SOLID_FLOOR,
+ DECORPERM_PASS_FLOOR,
+ DECORPERM_BEHIND_FLOOR,
+ DECORPERM_NA_WALL,
+ DECORPERM_SOLID_MAT
+};
+
+enum DecorShape {
+ /*
+ * Width-x-height
+ */
+ DECORSHAPE_1x1,
+ DECORSHAPE_2x1,
+ DECORSHAPE_3x1, // unused
+ DECORSHAPE_4x2,
+ DECORSHAPE_2x2,
+ DECORSHAPE_1x2,
+ DECORSHAPE_1x3, // unused
+ DECORSHAPE_2x4,
+ DECORSHAPE_3x3,
+ DECORSHAPE_3x2
+};
+
+enum DecorCat {
+ /*
+ * In which category you can find the decoration in the PC.
+ */
+ /*0*/ DECORCAT_DESK,
+ /*1*/ DECORCAT_CHAIR,
+ /*2*/ DECORCAT_PLANT,
+ /*3*/ DECORCAT_ORNAMENT,
+ /*4*/ DECORCAT_MAT,
+ /*5*/ DECORCAT_POSTER,
+ /*6*/ DECORCAT_DOLL,
+ /*7*/ DECORCAT_CUSHION
+};
+
struct Decoration
{
/*0x00*/ u8 id;
@@ -137,6 +178,18 @@ struct Decoration
/*0x1c*/ const u16 *tiles;
};
+struct DecorPCPointers
+{
+ /* 0x00 */ u8 *items;
+ /* 0x04 */ u8 *pos;
+ /* 0x08 */ u8 size;
+ /* 0x09 */ u8 isPlayerRoom;
+};
+
extern const struct Decoration gDecorations[];
+extern EWRAM_DATA u8 *gCurDecorInventoryItems;
+extern EWRAM_DATA u8 gCurDecorationIndex;
+
+void sub_8126968(void);
#endif //GUARD_DECORATION_H
diff --git a/include/decoration_inventory.h b/include/decoration_inventory.h
index 5ca345933..e1fec36ea 100644
--- a/include/decoration_inventory.h
+++ b/include/decoration_inventory.h
@@ -1,10 +1,20 @@
#ifndef GUARD_DECORATION_INVENTORY_H
#define GUARD_DECORATION_INVENTORY_H
+struct DecorationInventory {
+ u8 *items;
+ u8 size;
+};
+
+extern struct DecorationInventory gDecorationInventories[];
void ClearDecorationInventories(void);
+s8 GetFirstEmptyDecorSlot(u8 idx);
u8 CheckHasDecoration(u8);
u8 DecorationAdd(u8);
u8 DecorationCheckSpace(u8);
s8 DecorationRemove(u8);
+void CondenseDecorationCategoryN(u8);
+u8 CountDecorationCategoryN(u8 idx);
+u8 CountDecorations(void);
#endif // GUARD_DECORATION_INVENTORY_H
diff --git a/include/event_scripts.h b/include/event_scripts.h
index bb0d6731b..ff02a110a 100755
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -5,6 +5,10 @@
#ifndef GUARD_EVENT_SCRIPTS_H
#define GUARD_EVENT_SCRIPTS_H
+extern const u8 gUnknown_0823B4E8[];
+extern const u8 gUnknown_08275D0C[];
+extern const u8 gUnknown_08275D1F[];
+extern const u8 gUnknown_08275D2E[];
extern const u8 gUnknown_082766A2[];
extern const u8 gUnknown_082766A6[];
diff --git a/include/field_map_obj.h b/include/field_map_obj.h
index b18b6cfd3..038233fe6 100755
--- a/include/field_map_obj.h
+++ b/include/field_map_obj.h
@@ -74,6 +74,7 @@ u8 npc_block_way(struct MapObject *, s16, s16, u32);
void MoveCoords(u8, s16 *, s16 *);
bool8 FieldObjectIsSpecialAnimActive(struct MapObject *);
u8 FieldObjectClearAnimIfSpecialAnimFinished(struct MapObject *);
+u8 GetFieldObjectIdByXYZ(u16 x, u16 y, u8 z);
// Exported data declarations
diff --git a/include/field_screen.h b/include/field_screen.h
new file mode 100644
index 000000000..b15fdba7d
--- /dev/null
+++ b/include/field_screen.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_FIELD_SCREEN_H
+#define GUARD_FIELD_SCREEN_H
+
+// Exported type declarations
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+void pal_fill_black(void);
+bool8 sub_80ABDFC(void);
+
+#endif //GUARD_FIELD_SCREEN_H
diff --git a/include/fieldmap.h b/include/fieldmap.h
index 3efc5e36f..06cb7cc77 100644
--- a/include/fieldmap.h
+++ b/include/fieldmap.h
@@ -6,11 +6,14 @@ extern struct MapCoords {
int height;
} gUnknown_03005DC0;
+u32 MapGridGetMetatileIdAt(int, int);
u32 MapGridGetMetatileBehaviorAt(int, int);
void MapGridSetMetatileIdAt(int, int, u16);
+void MapGridSetMetatileEntryAt(int, int, u16);
void GetCameraCoords(u16*, u16*);
bool8 MapGridIsImpassableAt(s16, s16);
s32 GetMapBorderIdAt(s16, s16);
bool32 CanCameraMoveInDirection(u8);
+u16 GetBehaviorByMetatileId(u16 metatileId);
#endif //GUARD_FIELDMAP_H
diff --git a/include/gba/io_reg.h b/include/gba/io_reg.h
index 5234e5b6c..83a2a123b 100644
--- a/include/gba/io_reg.h
+++ b/include/gba/io_reg.h
@@ -137,6 +137,8 @@
#define REG_OFFSET_DMA3CNT_H 0xde
#define REG_OFFSET_TMCNT 0x100
+#define REG_OFFSET_TMCNT_L 0x100
+#define REG_OFFSET_TMCNT_H 0x102
#define REG_OFFSET_TM0CNT 0x100
#define REG_OFFSET_TM0CNT_L 0x100
#define REG_OFFSET_TM0CNT_H 0x102
@@ -298,6 +300,8 @@
#define REG_ADDR_DMA3CNT_H (REG_BASE + REG_OFFSET_DMA3CNT_H)
#define REG_ADDR_TMCNT (REG_BASE + REG_OFFSET_TMCNT)
+#define REG_ADDR_TMCNT_L (REG_BASE + REG_OFFSET_TMCNT_L)
+#define REG_ADDR_TMCNT_H (REG_BASE + REG_OFFSET_TMCNT_H)
#define REG_ADDR_TM0CNT (REG_BASE + REG_OFFSET_TM0CNT)
#define REG_ADDR_TM0CNT_L (REG_BASE + REG_OFFSET_TM0CNT_L)
#define REG_ADDR_TM0CNT_H (REG_BASE + REG_OFFSET_TM0CNT_H)
@@ -458,6 +462,8 @@
#define REG_DMA3CNT_H (*(vu16 *)REG_ADDR_DMA3CNT_H)
#define REG_TMCNT(n) (*(vu16 *)(REG_ADDR_TMCNT + ((n) * 4)))
+#define REG_TMCNT_L(n) (*(vu16 *)(REG_ADDR_TMCNT_L + ((n) * 4)))
+#define REG_TMCNT_H(n) (*(vu16 *)(REG_ADDR_TMCNT_H + ((n) * 4)))
#define REG_TM0CNT (*(vu32 *)REG_ADDR_TM0CNT)
#define REG_TM0CNT_L (*(vu16 *)REG_ADDR_TM0CNT_L)
#define REG_TM0CNT_H (*(vu16 *)REG_ADDR_TM0CNT_H)
@@ -521,6 +527,8 @@
#define DISPSTAT_HBLANK_INTR 0x0010 // H-Blank interrupt enabled
#define DISPSTAT_VCOUNT_INTR 0x0020 // V-Count interrupt enabled
+// BLDCNT
+
// SOUNDCNT_H
#define SOUND_CGB_MIX_QUARTER 0x0000
#define SOUND_CGB_MIX_HALF 0x0001
diff --git a/include/gba/macro.h b/include/gba/macro.h
index 0217898e8..7b6b98c06 100644
--- a/include/gba/macro.h
+++ b/include/gba/macro.h
@@ -86,4 +86,14 @@
dmaRegs[5]; \
}
+#define IntrEnable(flags) \
+{ \
+ u16 imeTemp; \
+ \
+ imeTemp = REG_IME; \
+ REG_IME = 0; \
+ REG_IE |= flags; \
+ REG_IME = imeTemp; \
+} \
+
#endif // GUARD_GBA_MACRO_H
diff --git a/include/gba/types.h b/include/gba/types.h
index fd8a20a4c..e9a380023 100644
--- a/include/gba/types.h
+++ b/include/gba/types.h
@@ -39,18 +39,18 @@ struct PlttData
struct OamData
{
/*0x00*/ u32 y:8;
- /*0x01*/ u32 affineMode:2;
- u32 objMode:2;
- u32 mosaic:1;
- u32 bpp:1;
- u32 shape:2;
+ /*0x01*/ u32 affineMode:2; // 0x1, 0x2 -> 0x4
+ u32 objMode:2; // 0x4, 0x8 -> 0xC
+ u32 mosaic:1; // 0x10
+ u32 bpp:1; // 0x20
+ u32 shape:2; // 0x40, 0x80 -> 0xC0
/*0x02*/ u32 x:9;
u32 matrixNum:5; // bits 3/4 are h-flip/v-flip if not in affine mode
u32 size:2;
- /*0x04*/ u16 tileNum:10;
- u16 priority:2;
+ /*0x04*/ u16 tileNum:10; // 0x33F
+ u16 priority:2; // 0x400, 0x800 -> 0xC00
u16 paletteNum:4;
/*0x06*/ u16 affineParam;
};
diff --git a/include/global.h b/include/global.h
index 58a0d79dc..8860b4ae3 100644
--- a/include/global.h
+++ b/include/global.h
@@ -12,8 +12,10 @@
#define asm_unified(x) asm(".syntax unified\n" x "\n.syntax divided")
#if defined (__APPLE__) || defined (__CYGWIN__)
-void memset(void *, int, size_t);
-void memcpy(void *, const void *, size_t);
+void *memset(void *, int, size_t);
+void *memcpy(void *, const void *, size_t);
+int strcmp(const char *s1, const char *s2);
+char* strcpy(char *dst0, const char *src0);
#endif // __APPLE__
#define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0]))
@@ -500,6 +502,16 @@ typedef union // TODO
u8 id;
} LilycoveLady;
+struct WaldaPhrase
+{
+ u16 field_0;
+ u16 field_2;
+ u8 text[16];
+ u8 iconId;
+ u8 patternId;
+ bool8 patternUnlocked;
+};
+
struct SaveBlock1
{
/*0x00*/ struct Coords16 pos;
@@ -586,7 +598,7 @@ struct SaveBlock1
/*0x3B24*/ u8 seen2[52];
/*0x3B58*/ LilycoveLady lilycoveLady;
/*0x3B88*/ u8 filler_3B88[0x1E8];
- /*0x3D70*/ u8 babyPhrase[24]; // TODO: convert to a struct
+ /*0x3D70*/ struct WaldaPhrase waldaPhrase;
// sizeof: 0x3D88
};
diff --git a/include/graphics.h b/include/graphics.h
new file mode 100644
index 000000000..c50fdef3f
--- /dev/null
+++ b/include/graphics.h
@@ -0,0 +1,95 @@
+//
+// Created by scott on 10/21/2017.
+//
+
+#ifndef GUARD_GRAPHICS_H
+#define GUARD_GRAPHICS_H
+
+extern const u8 gItemIcon_QuestionMark[];
+extern const u8 gItemIconPalette_QuestionMark[];
+extern const u8 gUnknown_08DB7AA0[];
+extern const u8 gUnknown_08DB7B34[];
+extern const u8 gUnknown_08DB7B5C[];
+extern const u8 gUnknown_08DB7BEC[];
+extern const u8 gUnknown_08DB7C08[];
+extern const u8 gUnknown_08DB7CE8[];
+extern const u8 gUnknown_08DB7D08[];
+extern const u8 gUnknown_08DB7DCC[];
+extern const u8 gUnknown_08DB7DF4[];
+extern const u8 gUnknown_08DB7EA0[];
+extern const u8 gUnknown_08DB7EC4[];
+extern const u8 gUnknown_08DB7F60[];
+extern const u8 gUnknown_08DB7F7C[];
+extern const u8 gUnknown_08DB8070[];
+extern const u8 gUnknown_08DB808C[];
+extern const u8 gUnknown_08DB8138[];
+extern const u8 gUnknown_08DB8160[];
+extern const u8 gUnknown_08DB8218[];
+extern const u8 gUnknown_08DB823C[];
+extern const u8 gUnknown_08DB8300[];
+extern const u8 gUnknown_08DB8328[];
+extern const u8 gUnknown_08DB8430[];
+extern const u8 gUnknown_08DB8458[];
+extern const u8 gUnknown_08DB8528[];
+extern const u8 gUnknown_08DB854C[];
+extern const u8 gUnknown_08DB862C[];
+extern const u8 gUnknown_08DB8654[];
+extern const u8 gUnknown_08DB86C4[];
+extern const u8 gUnknown_08DB86E0[];
+extern const u8 gUnknown_08DB8750[];
+extern const u8 gUnknown_08DB876C[];
+extern const u8 gUnknown_08DB87DC[];
+extern const u8 gUnknown_08DB87F8[];
+extern const u8 gUnknown_08DB88D8[];
+extern const u8 gUnknown_08DB8900[];
+extern const u8 gUnknown_08DB89E0[];
+extern const u8 gUnknown_08DB8A08[];
+extern const u8 gUnknown_08DB8A68[];
+extern const u8 gUnknown_08DB8A84[];
+extern const u8 gUnknown_08DB8B40[];
+extern const u8 gUnknown_08DB8B68[];
+extern const u8 gUnknown_08DB8C40[];
+extern const u8 gUnknown_08DB8C5C[];
+extern const u8 gUnknown_08DB8CF4[];
+extern const u8 gUnknown_08DB8D18[];
+extern const u8 gUnknown_08DB8DB0[];
+extern const u8 gUnknown_08DB8DD4[];
+extern const u8 gUnknown_08DB8E80[];
+extern const u8 gUnknown_08DB8EA0[];
+extern const u8 gUnknown_08DB8F58[];
+extern const u8 gUnknown_08DB8F7C[];
+extern const u8 gUnknown_08DB9038[];
+extern const u8 gUnknown_08DB9058[];
+extern const u8 gUnknown_08DB9130[];
+extern const u8 gUnknown_08DB9154[];
+extern const u8 gUnknown_08DB9218[];
+extern const u8 gUnknown_08DB9234[];
+extern const u8 gUnknown_08DB92FC[];
+extern const u8 gUnknown_08DB931C[];
+extern const u8 gUnknown_08DB93E8[];
+extern const u8 gUnknown_08DB940C[];
+extern const u8 gUnknown_08DB94CC[];
+extern const u8 gUnknown_08DB94E8[];
+extern const u8 gUnknown_08DB95AC[];
+extern const u8 gUnknown_08DB95D0[];
+extern const u8 gUnknown_08DB96C4[];
+extern const u8 gUnknown_08DB96EC[];
+extern const u8 gUnknown_08DB97F4[];
+extern const u8 gUnknown_08DB981C[];
+extern const u8 gUnknown_08DB9908[];
+extern const u8 gUnknown_08DB9930[];
+extern const u8 gUnknown_08DB9A54[];
+extern const u8 gUnknown_08DB9A7C[];
+extern const u8 gUnknown_08DB9B7C[];
+extern const u8 gUnknown_08DB9BA4[];
+extern const u8 gUnknown_08DB9CB0[];
+extern const u8 gUnknown_08DB9CD8[];
+extern const u8 gUnknown_08DB9DAC[];
+extern const u8 gUnknown_08DB9DD4[];
+extern const u8 gUnknown_08DB9EE4[];
+extern const u8 gUnknown_08DB9F08[];
+extern const u8 gUnknown_08DB9FFC[];
+extern const u8 gUnknown_08DBA020[];
+extern const u8 gUnknown_08DBA12C[];
+
+#endif //GUARD_GRAPHICS_H
diff --git a/include/international_string_util.h b/include/international_string_util.h
index 0eb12a535..9d9735a52 100644
--- a/include/international_string_util.h
+++ b/include/international_string_util.h
@@ -1,13 +1,23 @@
-#ifndef GUARD_international_string_util_H
-#define GUARD_international_string_util_H
+#ifndef GUARD_INTERNATIONAL_STRING_UTIL_H
+#define GUARD_INTERNATIONAL_STRING_UTIL_H
-// Exported type declarations
+#include "menu.h"
-// Exported RAM declarations
-
-// Exported ROM declarations
-
-void TVShowConvertInternationalString(void *dest, const void *src, u8 language);
+void sub_81DB52C(const u8 *src);
+void TVShowConvertInternationalString(u8 *dest, const u8 *src, u8 language);
+s32 GetStringCenterAlignXOffset(s32 fontId, const u8 *str, s32 totalWidth);
+s32 GetStringRightAlignXOffset(s32 fontId, const u8 *str, s32 totalWidth);
+s32 GetStringCenterAlignXOffsetWithLetterSpacing(s32 fontId, const u8 *str, s32 totalWidth, s32 letterSpacing);
+s32 GetStringWidthDifference(s32 fontId, const u8 *str, s32 totalWidth, s32 letterSpacing);
+s32 GetMaxWidthInMenuTable(const struct MenuAction *str, s32 arg1);
+s32 sub_81DB3D8(const struct MenuAction *str, u8* arg1, s32 arg2);
+// sub_81DB41C
+// sub_81DB468
+// sub_81DB494
+// sub_81DB4DC
+// sub_81DB554
+// sub_81DB5AC
u32 sub_81DB604(const u8 *);
+// sub_81DB620
-#endif //GUARD_international_string_util_H
+#endif // GUARD_INTERNATIONAL_STRING_UTIL_H
diff --git a/include/item_icon.h b/include/item_icon.h
new file mode 100644
index 000000000..a43b72f39
--- /dev/null
+++ b/include/item_icon.h
@@ -0,0 +1,17 @@
+//
+// Created by scott on 10/20/2017.
+//
+
+#ifndef GUARD_ITEM_ICON_H
+#define GUARD_ITEM_ICON_H
+
+extern EWRAM_DATA void *gUnknown_0203CEBC;
+extern EWRAM_DATA void *gUnknown_0203CEC0;
+
+extern const struct SpriteTemplate gUnknown_08614FF4;
+
+bool8 AllocItemIconTemporaryBuffers(void);
+void CopyItemIconPicTo4x4Buffer(void *src, void *dest);
+void FreeItemIconTemporaryBuffers(void);
+
+#endif //GUARD_ITEM_ICON_H
diff --git a/include/librfu.h b/include/librfu.h
new file mode 100644
index 000000000..dbc8a41a6
--- /dev/null
+++ b/include/librfu.h
@@ -0,0 +1,108 @@
+#include "main.h"
+
+enum
+{
+ RFU_RESET = 0x10,
+ RFU_LINK_STATUS,
+ RFU_VERSION_STATUS,
+ RFU_SYSTEM_STATUS,
+ RFU_SLOT_STATUS,
+ RFU_CONFIG_STATUS,
+ RFU_GAME_CONFIG,
+ RFU_SYSTEM_CONFIG,
+ RFU_UNK18,
+ RFU_SC_START,
+ RFU_SC_POLLING,
+ RFU_SC_END,
+ RFU_SP_START,
+ RFU_SP_POLLING,
+ RFU_SP_END,
+ RFU_CP_START,
+ RFU_CP_POLLING,
+ RFU_CP_END,
+ RFU_UNK22,
+ RFU_UNK23,
+ RFU_DATA_TX,
+ RFU_DATA_TX_AND_CHANGE,
+ RFU_DATA_RX,
+ RFU_MS_CHANGE,
+ RFU_DATA_READY_AND_CHANGE,
+ RFU_DISCONNECTED_AND_CHANGE,
+ RFU_UNK2A,
+ RFU_UNK2B,
+ RFU_UNK2C,
+ RFU_UNK2D,
+ RFU_UNK2E,
+ RFU_UNK2F,
+ RFU_DISCONNECT,
+ RFU_TEST_MODE,
+ RFU_CPR_START,
+ RFU_CPR_POLLING,
+ RFU_CPR_END,
+ RFU_UNK35,
+ RFU_UNK36,
+ RFU_RESUME_RETRANSMIT_AND_CHANGE,
+ RFU_UNK38,
+ RFU_UNK39,
+ RFU_UNK3A,
+ RFU_UNK3B,
+ RFU_UNK3C,
+ RFU_STOP_MODE, //3D
+};
+
+struct RfuPacket8
+{
+ u8 data[0x74];
+};
+
+struct RfuPacket32
+{
+ u32 command;
+ u32 data[0x1C];
+};
+
+union RfuPacket
+{
+ struct RfuPacket32 rfuPacket32;
+ struct RfuPacket8 rfuPacket8;
+};
+
+struct RfuStruct
+{
+ vs32 unk_0;
+ u8 txParams;
+ u8 unk_5;
+ u8 activeCommand;
+ u8 unk_7;
+ u8 unk_8;
+ u8 unk_9;
+ u8 timerSelect;
+ u8 unk_b;
+ int timerState;
+ vu8 timerActive;
+ u8 unk_11;
+ vu16 unk_12;
+ vu8 msMode;
+ u8 unk_15;
+ u8 unk_16;
+ u8 unk_17;
+ void (*callbackM)();
+ void (*callbackS)();
+ u32 callbackID;
+ union RfuPacket *txPacket;
+ union RfuPacket *rxPacket;
+ vu8 unk_2c;
+ u8 padding[3];
+};
+
+struct RfuIntrStruct
+{
+ u8 rxPacketAlloc[0x74];
+ u8 txPacketAlloc[0x74];
+ u8 block1[0x960];
+ u8 block2[0x30];
+};
+
+extern struct RfuStruct *gRfuState;
+
+void STWI_init_all(struct RfuIntrStruct *interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam);
diff --git a/include/link.h b/include/link.h
index 5f5654e4d..b8835ce04 100644
--- a/include/link.h
+++ b/include/link.h
@@ -141,6 +141,7 @@ extern u8 gShouldAdvanceLinkState;
extern struct LinkPlayer gLinkPlayers[];
extern u16 word_3002910[];
extern bool8 gReceivedRemoteLinkPlayers;
+extern bool8 gLinkVSyncDisabled;
void Task_DestroySelf(u8);
void OpenLink(void);
@@ -184,5 +185,11 @@ bool8 sub_800A520(void);
bool8 sub_8010500(void);
void sub_800DFB4(u8, u8);
void sub_800ADF8(void);
+void sub_800B488(void);
+void sub_8009734(void);
+void sub_800A620(void);
+void sub_8011BD0(void);
+u8 sub_800ABAC(void);
+u8 sub_800ABBC(void);
#endif // GUARD_LINK_H
diff --git a/include/list_menu.h b/include/list_menu.h
new file mode 100644
index 000000000..93005e482
--- /dev/null
+++ b/include/list_menu.h
@@ -0,0 +1,54 @@
+#ifndef GUARD_LIST_MENU_H
+#define GUARD_LIST_MENU_H
+
+// Exported type declarations
+
+// Exported RAM declarations
+
+struct ListMenuItem {
+ const u8 *unk_00;
+ s32 unk_04;
+};
+
+struct ListMenu;
+
+struct ListMenuTemplate {
+ struct ListMenuItem *unk_00;
+ void (* unk_04)(u32, bool8, struct ListMenu *);
+ void (* unk_08)(u8, s32, u8);
+ u16 unk_0c;
+ u16 unk_0e;
+ u8 unk_10;
+ u8 unk_11;
+ u8 unk_12;
+ u8 unk_13;
+ u32 unk_14_0:4;
+ u32 unk_14_4:4;
+ u32 unk_15_0:4;
+ u32 unk_15_4:4;
+ u32 unk_16_0:1;
+ u32 unk_16_1:6;
+ u32 unk_16_7:1;
+ u32 unk_17_0:6;
+};
+
+struct ListMenu {
+ struct ListMenuTemplate _template;
+ u16 scrollOffset;
+ u16 selectedRow;
+ u8 unk_1C;
+ u8 unk_1D;
+ u8 unk_1E;
+ u8 unk_1F;
+};
+
+extern struct ListMenuTemplate gUnknown_03006310;
+
+// Exported ROM declarations
+
+u8 ListMenuInit(struct ListMenuTemplate *template, u16 a1, u16 a2);
+s32 ListMenuHandleInput(u8 id);
+void get_coro_args_x18_x1A(u8 a0, u16 *a1, u16 *a2);
+void sub_81AE6C8(u8 a0, u16 *a1, u16 *a2);
+
+#endif //GUARD_LIST_MENU_H
diff --git a/include/mail_data.h b/include/mail_data.h
new file mode 100644
index 000000000..bf6540bad
--- /dev/null
+++ b/include/mail_data.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_MAIL_DATA_H
+#define GUARD_MAIL_DATA_H
+
+// Exported type declarations
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+
+u16 sub_80D45E8(u16, u16 *);
+
+#endif //GUARD_MAIL_DATA_H
diff --git a/include/map_object_constants.h b/include/map_object_constants.h
new file mode 100644
index 000000000..79482b54a
--- /dev/null
+++ b/include/map_object_constants.h
@@ -0,0 +1,239 @@
+#ifndef GUARD_MAP_OBJECT_CONSTANTS_H
+#define GUARD_MAP_OBJECT_CONSTANTS_H
+
+enum
+{
+ MAP_OBJ_GFX_BRENDAN_NORMAL,
+ MAP_OBJ_GFX_BRENDAN_MACH_BIKE,
+ MAP_OBJ_GFX_BRENDAN_SURFING,
+ MAP_OBJ_GFX_BRENDAN_FIELD_MOVE,
+ MAP_OBJ_GFX_QUINTY_PLUMP,
+ MAP_OBJ_GFX_LITTLE_BOY_1,
+ MAP_OBJ_GFX_LITTLE_GIRL_1,
+ MAP_OBJ_GFX_BOY_1,
+ MAP_OBJ_GFX_GIRL_1,
+ MAP_OBJ_GFX_BOY_2,
+ MAP_OBJ_GFX_GIRL_2,
+ MAP_OBJ_GFX_LITTLE_BOY_2,
+ MAP_OBJ_GFX_LITTLE_GIRL_2,
+ MAP_OBJ_GFX_BOY_3,
+ MAP_OBJ_GFX_GIRL_3,
+ MAP_OBJ_GFX_BOY_4,
+ MAP_OBJ_GFX_WOMAN_1,
+ MAP_OBJ_GFX_FAT_MAN,
+ MAP_OBJ_GFX_WOMAN_2,
+ MAP_OBJ_GFX_MAN_1,
+ MAP_OBJ_GFX_WOMAN_3,
+ MAP_OBJ_GFX_OLD_MAN_1,
+ MAP_OBJ_GFX_OLD_WOMAN_1,
+ MAP_OBJ_GFX_MAN_2,
+ MAP_OBJ_GFX_WOMAN_4,
+ MAP_OBJ_GFX_MAN_3,
+ MAP_OBJ_GFX_WOMAN_5,
+ MAP_OBJ_GFX_COOK,
+ MAP_OBJ_GFX_WOMAN_6,
+ MAP_OBJ_GFX_OLD_MAN_2,
+ MAP_OBJ_GFX_OLD_WOMAN_2,
+ MAP_OBJ_GFX_CAMPER,
+ MAP_OBJ_GFX_PICNICKER,
+ MAP_OBJ_GFX_MAN_4,
+ MAP_OBJ_GFX_WOMAN_7,
+ MAP_OBJ_GFX_YOUNGSTER,
+ MAP_OBJ_GFX_BUG_CATCHER,
+ MAP_OBJ_GFX_PSYCHIC_M,
+ MAP_OBJ_GFX_SCHOOL_KID_M,
+ MAP_OBJ_GFX_MANIAC,
+ MAP_OBJ_GFX_HEX_MANIAC,
+ MAP_OBJ_GFX_WOMAN_8,
+ MAP_OBJ_GFX_SWIMMER_M,
+ MAP_OBJ_GFX_SWIMMER_F,
+ MAP_OBJ_GFX_BLACK_BELT,
+ MAP_OBJ_GFX_BEAUTY,
+ MAP_OBJ_GFX_SCIENTIST_1,
+ MAP_OBJ_GFX_LASS,
+ MAP_OBJ_GFX_GENTLEMAN,
+ MAP_OBJ_GFX_SAILOR,
+ MAP_OBJ_GFX_FISHERMAN,
+ MAP_OBJ_GFX_RUNNING_TRIATHLETE_M,
+ MAP_OBJ_GFX_RUNNING_TRIATHLETE_F,
+ MAP_OBJ_GFX_TUBER_F,
+ MAP_OBJ_GFX_TUBER_M,
+ MAP_OBJ_GFX_HIKER,
+ MAP_OBJ_GFX_CYCLING_TRIATHLETE_M,
+ MAP_OBJ_GFX_CYCLING_TRIATHLETE_F,
+ MAP_OBJ_GFX_NURSE,
+ MAP_OBJ_GFX_ITEM_BALL,
+ MAP_OBJ_GFX_BERRY_TREE,
+ MAP_OBJ_GFX_BERRY_TREE_EARLY_STAGES,
+ MAP_OBJ_GFX_BERRY_TREE_LATE_STAGES,
+ MAP_OBJ_GFX_BRENDAN_ACRO_BIKE,
+ MAP_OBJ_GFX_PROF_BIRCH,
+ MAP_OBJ_GFX_MAN_5,
+ MAP_OBJ_GFX_MAN_6,
+ MAP_OBJ_GFX_REPORTER_M,
+ MAP_OBJ_GFX_REPORTER_F,
+ MAP_OBJ_GFX_BARD,
+ MAP_OBJ_GFX_HIPSTER,
+ MAP_OBJ_GFX_TRADER,
+ MAP_OBJ_GFX_STORYTELLER,
+ MAP_OBJ_GFX_GIDDY,
+ MAP_OBJ_GFX_UNUSED_MAUVILLE_OLD_MAN_1,
+ MAP_OBJ_GFX_UNUSED_MAUVILLE_OLD_MAN_2,
+ MAP_OBJ_GFX_UNUSED_NATU_DOLL,
+ MAP_OBJ_GFX_UNUSED_MAGNEMITE_DOLL,
+ MAP_OBJ_GFX_UNUSED_SQUIRTLE_DOLL,
+ MAP_OBJ_GFX_UNUSED_WOOPER_DOLL,
+ MAP_OBJ_GFX_UNUSED_PIKACHU_DOLL,
+ MAP_OBJ_GFX_UNUSED_PORYGON2_DOLL,
+ MAP_OBJ_GFX_CUTTABLE_TREE,
+ MAP_OBJ_GFX_MART_EMPLOYEE,
+ MAP_OBJ_GFX_ROOFTOP_SALE_WOMAN,
+ MAP_OBJ_GFX_TEALA,
+ MAP_OBJ_GFX_BREAKABLE_ROCK,
+ MAP_OBJ_GFX_PUSHABLE_BOULDER,
+ MAP_OBJ_GFX_MR_BRINEYS_BOAT,
+ MAP_OBJ_GFX_MAY_NORMAL,
+ MAP_OBJ_GFX_MAY_MACH_BIKE,
+ MAP_OBJ_GFX_MAY_ACRO_BIKE,
+ MAP_OBJ_GFX_MAY_SURFING,
+ MAP_OBJ_GFX_MAY_FIELD_MOVE,
+ MAP_OBJ_GFX_TRUCK,
+ MAP_OBJ_GFX_MACHOKE_CARRYING_BOX,
+ MAP_OBJ_GFX_MACHOKE_FACING_AWAY,
+ MAP_OBJ_GFX_BIRCHS_BAG,
+ MAP_OBJ_GFX_POOCHYENA,
+ MAP_OBJ_GFX_ARTIST,
+ MAP_OBJ_GFX_RIVAL_BRENDAN_NORMAL,
+ MAP_OBJ_GFX_RIVAL_BRENDAN_MACH_BIKE,
+ MAP_OBJ_GFX_RIVAL_BRENDAN_ACRO_BIKE,
+ MAP_OBJ_GFX_RIVAL_BRENDAN_SURFING,
+ MAP_OBJ_GFX_RIVAL_BRENDAN_FIELD_MOVE,
+ MAP_OBJ_GFX_RIVAL_MAY_NORMAL,
+ MAP_OBJ_GFX_RIVAL_MAY_MACH_BIKE,
+ MAP_OBJ_GFX_RIVAL_MAY_ACRO_BIKE,
+ MAP_OBJ_GFX_RIVAL_MAY_SURFING,
+ MAP_OBJ_GFX_RIVAL_MAY_FIELD_MOVE,
+ MAP_OBJ_GFX_CAMERAMAN,
+ MAP_OBJ_GFX_BRENDAN_UNDERWATER,
+ MAP_OBJ_GFX_MAY_UNDERWATER,
+ MAP_OBJ_GFX_MOVING_BOX,
+ MAP_OBJ_GFX_CABLE_CAR,
+ MAP_OBJ_GFX_SCIENTIST_2,
+ MAP_OBJ_GFX_MAN_7,
+ MAP_OBJ_GFX_AQUA_MEMBER_M,
+ MAP_OBJ_GFX_AQUA_MEMBER_F,
+ MAP_OBJ_GFX_MAGMA_MEMBER_M,
+ MAP_OBJ_GFX_MAGMA_MEMBER_F,
+ MAP_OBJ_GFX_SIDNEY,
+ MAP_OBJ_GFX_PHOEBE,
+ MAP_OBJ_GFX_GLACIA,
+ MAP_OBJ_GFX_DRAKE,
+ MAP_OBJ_GFX_ROXANNE,
+ MAP_OBJ_GFX_BRAWLY,
+ MAP_OBJ_GFX_WATTSON,
+ MAP_OBJ_GFX_FLANNERY,
+ MAP_OBJ_GFX_NORMAN,
+ MAP_OBJ_GFX_WINONA,
+ MAP_OBJ_GFX_LIZA,
+ MAP_OBJ_GFX_TATE,
+ MAP_OBJ_GFX_WALLACE,
+ MAP_OBJ_GFX_STEVEN,
+ MAP_OBJ_GFX_WALLY,
+ MAP_OBJ_GFX_LITTLE_BOY_3,
+ MAP_OBJ_GFX_BRENDAN_FISHING,
+ MAP_OBJ_GFX_MAY_FISHING,
+ MAP_OBJ_GFX_HOT_SPRINGS_OLD_WOMAN,
+ MAP_OBJ_GFX_SS_TIDAL,
+ MAP_OBJ_GFX_SUBMARINE_SHADOW,
+ MAP_OBJ_GFX_PICHU_DOLL,
+ MAP_OBJ_GFX_PIKACHU_DOLL,
+ MAP_OBJ_GFX_MARILL_DOLL,
+ MAP_OBJ_GFX_TOGEPI_DOLL,
+ MAP_OBJ_GFX_CYNDAQUIL_DOLL,
+ MAP_OBJ_GFX_CHIKORITA_DOLL,
+ MAP_OBJ_GFX_TOTODILE_DOLL,
+ MAP_OBJ_GFX_JIGGLYPUFF_DOLL,
+ MAP_OBJ_GFX_MEOWTH_DOLL,
+ MAP_OBJ_GFX_CLEFAIRY_DOLL,
+ MAP_OBJ_GFX_DITTO_DOLL,
+ MAP_OBJ_GFX_SMOOCHUM_DOLL,
+ MAP_OBJ_GFX_TREECKO_DOLL,
+ MAP_OBJ_GFX_TORCHIC_DOLL,
+ MAP_OBJ_GFX_MUDKIP_DOLL,
+ MAP_OBJ_GFX_DUSKULL_DOLL,
+ MAP_OBJ_GFX_WYNAUT_DOLL,
+ MAP_OBJ_GFX_BALTOY_DOLL,
+ MAP_OBJ_GFX_KECLEON_DOLL,
+ MAP_OBJ_GFX_AZURILL_DOLL,
+ MAP_OBJ_GFX_SKITTY_DOLL,
+ MAP_OBJ_GFX_SWABLU_DOLL,
+ MAP_OBJ_GFX_GULPIN_DOLL,
+ MAP_OBJ_GFX_LOTAD_DOLL,
+ MAP_OBJ_GFX_SEEDOT_DOLL,
+ MAP_OBJ_GFX_PIKA_CUSHION,
+ MAP_OBJ_GFX_ROUND_CUSHION,
+ MAP_OBJ_GFX_KISS_CUSHION,
+ MAP_OBJ_GFX_ZIGZAG_CUSHION,
+ MAP_OBJ_GFX_SPIN_CUSHION,
+ MAP_OBJ_GFX_DIAMOND_CUSHION,
+ MAP_OBJ_GFX_BALL_CUSHION,
+ MAP_OBJ_GFX_GRASS_CUSHION,
+ MAP_OBJ_GFX_FIRE_CUSHION,
+ MAP_OBJ_GFX_WATER_CUSHION,
+ MAP_OBJ_GFX_BIG_SNORLAX_DOLL,
+ MAP_OBJ_GFX_BIG_RHYDON_DOLL,
+ MAP_OBJ_GFX_BIG_LAPRAS_DOLL,
+ MAP_OBJ_GFX_BIG_VENUSAUR_DOLL,
+ MAP_OBJ_GFX_BIG_CHARIZARD_DOLL,
+ MAP_OBJ_GFX_BIG_BLASTOISE_DOLL,
+ MAP_OBJ_GFX_BIG_WAILMER_DOLL,
+ MAP_OBJ_GFX_BIG_REGIROCK_DOLL,
+ MAP_OBJ_GFX_BIG_REGICE_DOLL,
+ MAP_OBJ_GFX_BIG_REGISTEEL_DOLL,
+ MAP_OBJ_GFX_LATIAS,
+ MAP_OBJ_GFX_LATIOS,
+ MAP_OBJ_GFX_BOY_5,
+ MAP_OBJ_GFX_CONTEST_JUDGE,
+ MAP_OBJ_GFX_BRENDAN_WATERING,
+ MAP_OBJ_GFX_MAY_WATERING,
+ MAP_OBJ_GFX_BRENDAN_DECORATING,
+ MAP_OBJ_GFX_MAY_DECORATING,
+ MAP_OBJ_GFX_ARCHIE,
+ MAP_OBJ_GFX_MAXIE,
+ MAP_OBJ_GFX_KYOGRE_1,
+ MAP_OBJ_GFX_GROUDON_1,
+ MAP_OBJ_GFX_FOSSIL,
+ MAP_OBJ_GFX_REGIROCK,
+ MAP_OBJ_GFX_REGICE,
+ MAP_OBJ_GFX_REGISTEEL,
+ MAP_OBJ_GFX_SKITTY,
+ MAP_OBJ_GFX_KECLEON_1,
+ MAP_OBJ_GFX_KYOGRE_2,
+ MAP_OBJ_GFX_GROUDON_2,
+ MAP_OBJ_GFX_RAYQUAZA,
+ MAP_OBJ_GFX_ZIGZAGOON,
+ MAP_OBJ_GFX_PIKACHU,
+ MAP_OBJ_GFX_AZUMARILL,
+ MAP_OBJ_GFX_WINGULL,
+ MAP_OBJ_GFX_KECLEON_2,
+ MAP_OBJ_GFX_TUBER_M_SWIMMING,
+ MAP_OBJ_GFX_AZURILL,
+ MAP_OBJ_GFX_MOM,
+ MAP_OBJ_GFX_LINK_BRENDAN,
+ MAP_OBJ_GFX_LINK_MAY,
+};
+
+enum {
+ SHADOW_SIZE_S,
+ SHADOW_SIZE_M,
+ SHADOW_SIZE_L,
+ SHADOW_SIZE_XL
+};
+
+enum {
+ TRACKS_NONE,
+ TRACKS_FOOT,
+ TRACKS_BIKE_TIRE
+};
+
+#endif // GUARD_MAP_OBJECT_CONSTANTS_H
diff --git a/include/menu.h b/include/menu.h
index 66ac73e03..927c3d3d4 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -5,20 +5,28 @@
struct MenuAction
{
- const u8 *text;
- u8 (*func)();
-};
-
-struct MenuAction2
-{
const u8 *text;
- void (*func)(u8);
+ union {
+ void (*void_u8)(u8);
+ u8 (*u8_void)(void);
+ } func;
};
void box_print(u8, u8, u8, u8, const void *, s8, const u8 *);
void sub_8198070(u8 windowId, bool8 copyToVram);
void SetWindowTemplateFields(struct WindowTemplate* template, u8 priority, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 palNum, u16 baseBlock);
void SetWindowBorderStyle(u8 windowId, bool8 copyToVram, u16 tileStart, u8 palette);
-void sub_8198A50(struct WindowTemplate*, u8, u8, u8, u8, u8, u8, u16); // returns something but it isn't used, fix when menu.s is decomp'd
+void schedule_bg_copy_tilemap_to_vram(u8 bgNum);
+void PrintMenuTable(u8 idx, u8 nstrs, const struct MenuAction *strs);
+void InitMenuInUpperLeftCornerPlaySoundWhenAPressed(u8 idx, u8 nstrs,u8);
+u8 GetMenuCursorPos(void);
+s8 ProcessMenuInput(void);
+void blit_move_info_icon(u8 winId, u8 a2, u16 x, u16 y);
+void reset_temp_tile_data_buffers(void);
+int decompress_and_copy_tile_data_to_vram(u8 bg_id, const void *src, int size, u16 offset, u8 mode);
+bool8 free_temp_tile_data_buffers_if_possible(void);
+u64 sub_8198A50(struct WindowTemplate*, u8, u8, u8, u8, u8, u8, u16); // returns something but it isn't used, fix when menu.s is decomp'd
+void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirstTileNum, u8 borderPalette, u8 initialCursorPos);
+s8 sub_8198C58(void);
#endif // GUARD_MENU_H
diff --git a/include/menu_helpers.h b/include/menu_helpers.h
new file mode 100644
index 000000000..f083a10e2
--- /dev/null
+++ b/include/menu_helpers.h
@@ -0,0 +1,20 @@
+#ifndef GUARD_MENU_HELPERS_H
+#define GUARD_MENU_HELPERS_H
+
+// Exported type declarations
+
+struct YesNoFuncTable {
+ TaskFunc yesFunc;
+ TaskFunc noFunc;
+};
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+
+void sub_812225C(u16 *, u16 *, u8, u8);
+void sub_8122298(u16 *, u16 *, u8, u8, u8);
+void sub_8121F68(u8 taskId, const struct YesNoFuncTable *data);
+bool8 sub_81221AC(void);
+
+#endif //GUARD_MENU_HELPERS_H
diff --git a/include/menu_indicators.h b/include/menu_indicators.h
new file mode 100644
index 000000000..5a3b2e5b8
--- /dev/null
+++ b/include/menu_indicators.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_MENU_INDICATORS_H
+#define GUARD_MENU_INDICATORS_H
+
+// Exported type declarations
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+u8 AddScrollIndicatorArrowPairParametrized(u8, u8, u8, u8, s32, u8, u8, u16 *);
+void RemoveScrollIndicatorArrowPair(u8);
+
+#endif //GUARD_MENU_INDICATORS_H
diff --git a/include/naming_screen.h b/include/naming_screen.h
index 55a8e75a3..3d69b834f 100644
--- a/include/naming_screen.h
+++ b/include/naming_screen.h
@@ -5,7 +5,7 @@
#define NAMING_SCREEN_BOX 1
#define NAMING_SCREEN_CAUGHT_MON 2
#define NAMING_SCREEN_3 3
-#define NAMING_SCREEN_WANDA 4
+#define NAMING_SCREEN_WALDA 4
void DoNamingScreen(u8 caseId, u8* dst, u16 monSpecies, u8 monGender, u32 monPersonality, void (*callback)(void));
diff --git a/include/new_game.h b/include/new_game.h
index 060279c25..2088d1826 100644
--- a/include/new_game.h
+++ b/include/new_game.h
@@ -2,6 +2,7 @@
#define GUARD_NEW_GAME_H
void WriteUnalignedWord(u32 var, u8 *dataPtr);
+u32 ReadUnalignedWord(u8* dataPtr);
void CopyUnalignedWord(u8 *copyTo, u8 *copyFrom);
void InitPlayerTrainerId(void);
void SetDefaultOptions(void);
diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h
index 6377897d3..f588967bf 100644
--- a/include/new_menu_helpers.h
+++ b/include/new_menu_helpers.h
@@ -1,9 +1,16 @@
#ifndef GUARD_NEW_MENU_HELPERS_H
#define GUARD_NEW_MENU_HELPERS_H
+#include "text.h"
+#include "task.h"
+
void sub_81973A4(void);
void sub_81973C4(u8, u8);
void sub_819746C(u8 windowId, bool8 copyToVram);
void sub_81973FC(u8, u8);
+u16 AddTextPrinterParametrized(u8 windowId, u8 fontId, const u8 *str, u8 speed, void ( *callback)(u16, struct TextPrinter *), u8 fgColor, u8 bgColor, u8 shadowColor);
+void DisplayItemMessageOnField(u8 taskId, const u8 *src, TaskFunc callback);
+void sub_8197434(u8 a0, u8 a1);
+void sub_8197930(void);
#endif // GUARD_NEW_MENU_HELPERS_H
diff --git a/include/overworld.h b/include/overworld.h
index 0475e8e8c..5ac4cad29 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -1,6 +1,8 @@
#ifndef GUARD_ROM4_H
#define GUARD_ROM4_H
+#include "main.h"
+
struct UnkPlayerStruct
{
u8 player_field_0;
@@ -21,6 +23,7 @@ struct UCoords32
};
extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4];
+extern MainCallback gFieldCallback;
void IncrementGameStat(u8 index);
@@ -53,6 +56,8 @@ const struct MapHeader *get_mapheader_by_bank_and_number(u8, u8);
void FieldObjectMoveDestCoords(struct MapObject *, u32, s16 *, s16 *);
void sub_8086230(void);
void c2_exit_to_overworld_2_switch(void);
+bool32 sub_8087598(void);
void c2_exit_to_overworld_1_continue_scripts_restart_music(void);
+void warp_in(void);
#endif //GUARD_ROM4_H
diff --git a/include/player_pc.h b/include/player_pc.h
new file mode 100644
index 000000000..b14d1ede3
--- /dev/null
+++ b/include/player_pc.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_PLAYER_PC_H
+#define GUARD_PLAYER_PC_H
+
+// Exported type declarations
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+
+void sub_816B060(u8 taskId);
+
+#endif //GUARD_PLAYER_PC_H
diff --git a/include/pokemon.h b/include/pokemon.h
index c26c28afa..4159a2f96 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -30,7 +30,7 @@
#define MON_DATA_HP_EV 26
#define MON_DATA_ATK_EV 27
#define MON_DATA_DEF_EV 28
-#define MON_DATA_SPD_EV 29
+#define MON_DATA_SPEED_EV 29
#define MON_DATA_SPATK_EV 30
#define MON_DATA_SPDEF_EV 31
#define MON_DATA_FRIENDSHIP 32
@@ -43,7 +43,7 @@
#define MON_DATA_HP_IV 39
#define MON_DATA_ATK_IV 40
#define MON_DATA_DEF_IV 41
-#define MON_DATA_SPD_IV 42
+#define MON_DATA_SPEED_IV 42
#define MON_DATA_SPATK_IV 43
#define MON_DATA_SPDEF_IV 44
#define MON_DATA_IS_EGG 45
@@ -62,7 +62,7 @@
#define MON_DATA_MAX_HP 58
#define MON_DATA_ATK 59
#define MON_DATA_DEF 60
-#define MON_DATA_SPD 61
+#define MON_DATA_SPEED 61
#define MON_DATA_SPATK 62
#define MON_DATA_SPDEF 63
#define MON_DATA_MAIL 64
@@ -87,7 +87,7 @@
#define MON_DATA_RIBBONS 83
#define MON_DATA_ATK2 84
#define MON_DATA_DEF2 85
-#define MON_DATA_SPD2 86
+#define MON_DATA_SPEED2 86
#define MON_DATA_SPATK2 87
#define MON_DATA_SPDEF2 88
diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h
index b82334355..b6d21823e 100644
--- a/include/pokemon_icon.h
+++ b/include/pokemon_icon.h
@@ -3,5 +3,10 @@
const u8 *GetMonIconPtr(u16 speciesId, u32 personality, u32 frameNo);
const u16 *GetValidMonIconPalettePtr(u16 speciesId);
+u16 sub_80D2E84(u16 speciesId);
+void sub_80D2F68(u16 iconId);
+u8 sub_80D2D78(u16 iconId, void callback(struct Sprite *), u16 x, u16 y, u16 a4, u8 a5);
+void sub_80D2FF0(u16 iconId);
+void sub_80D2EF8(struct Sprite *sprite);
#endif // GUARD_POKEMON_ICON_H
diff --git a/include/recorded_battle.h b/include/recorded_battle.h
index 65ad998e6..6b80e220f 100644
--- a/include/recorded_battle.h
+++ b/include/recorded_battle.h
@@ -3,6 +3,7 @@
extern u32 gRecordedBattleRngSeed;
+void sub_8184DA4(u8 arg0);
void sub_8185F84(void);
void sub_8184E58(void);
void RecordedBattle_SetBankAction(u8 bank, u8 action);
@@ -15,5 +16,7 @@ u8 MoveRecordedBattleToSaveData(void);
void sub_818603C(u8);
void sub_8185FD0(void);
void sub_8186444(void);
+void sub_8185EB8(void);
+u8 sub_81850DC(u8 *arg0);
#endif // GUARD_RECORDED_BATTLE_H
diff --git a/include/secret_base.h b/include/secret_base.h
index 4f7b411da..14defff26 100644
--- a/include/secret_base.h
+++ b/include/secret_base.h
@@ -6,6 +6,7 @@
// Exported RAM declarations
// Exported ROM declarations
+void sub_80E9578(void);
void sub_80E980C(void);
#endif //GUARD_SECRET_BASE_H
diff --git a/include/sprite.h b/include/sprite.h
index a9377165e..531314079 100644
--- a/include/sprite.h
+++ b/include/sprite.h
@@ -251,7 +251,7 @@ void BuildOamBuffer(void);
u8 CreateSprite(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority);
u8 CreateSpriteAtEnd(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority);
u8 CreateInvisibleSprite(void (*callback)(struct Sprite *));
-u8 CreateSpriteAndAnimate(struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority);
+u8 CreateSpriteAndAnimate(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority);
void DestroySprite(struct Sprite *sprite);
void ResetOamRange(u8 a, u8 b);
void LoadOam(void);
diff --git a/include/strings.h b/include/strings.h
index 5d1a9bba0..191b1809a 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -1,6 +1,13 @@
-#ifndef GUARD_strings_H
-#define GUARD_strings_H
+#ifndef GUARD_STRINGS_H
+#define GUARD_STRINGS_H
+// Exported type declarations
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+
+extern const u8 gText_FromSpace[];
extern const u8 gText_Lv50[];
extern const u8 gText_OpenLevel[];
extern const u8 gText_Mom[];
@@ -29,5 +36,39 @@ extern const u8 gText_Jackpot[];
extern const u8 gText_First[];
extern const u8 gText_Second[];
extern const u8 gText_Third[];
+extern const u8 gText_NoDecorations[];
+extern const u8 gText_NoDecorationsInUse[];
+extern const u8 gText_Exit[];
+extern const u8 gText_Cancel[];
+extern const u8 gText_Color161Shadow161[];
+extern const u8 gText_GoBackPrevMenu[];
+extern const u8 gText_CantPlaceInRoom[];
+extern const u8 gText_NoMoreDecorations[];
+extern const u8 gText_NoMoreDecorations2[];
+extern const u8 gText_InUseAlready[];
+extern const u8 gText_CancelDecorating[];
+extern const u8 gText_PlaceItHere[];
+extern const u8 gText_CantBePlacedHere[];
+extern const u8 gText_DecorationReturnedToPC[];
+extern const u8 gText_StopPuttingAwayDecorations[];
+extern const u8 gText_ReturnDecorationToPC[];
+extern const u8 gText_NoDecorationHere[];
+extern const u8 gText_DecorationWillBeDiscarded[];
+extern const u8 gText_CantThrowAwayInUse[];
+extern const u8 gText_DecorationThrownAway[];
+extern const u8 gText_Desk[];
+extern const u8 gText_Chair[];
+extern const u8 gText_Plant[];
+extern const u8 gText_Ornament[];
+extern const u8 gText_Mat[];
+extern const u8 gText_Poster[];
+extern const u8 gText_PutOutSelectedDecorItem[];
+extern const u8 gText_StoreChosenDecorInPC[];
+extern const u8 gText_ThrowAwayUnwantedDecors[];
+extern const u8 gText_Doll[];
+extern const u8 gText_Cushion[];
+extern const u8 gText_Decorate[];
+extern const u8 gText_PutAway[];
+extern const u8 gText_Toss2[];
-#endif //GUARD_strings_H
+#endif //GUARD_STRINGS_H
diff --git a/include/tilesets.h b/include/tilesets.h
new file mode 100644
index 000000000..70609c046
--- /dev/null
+++ b/include/tilesets.h
@@ -0,0 +1,13 @@
+#ifndef GUARD_tilesets_H
+#define GUARD_tilesets_H
+
+// Exported type declarations
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+
+extern struct Tileset *gTilesetPointer_SecretBase;
+extern struct Tileset *gTilesetPointer_SecretBaseRedCave;
+
+#endif //GUARD_tilesets_H
diff --git a/include/trader.h b/include/trader.h
new file mode 100644
index 000000000..71fd1f7c2
--- /dev/null
+++ b/include/trader.h
@@ -0,0 +1,11 @@
+//
+// Created by scott on 10/21/2017.
+//
+
+#ifndef GUARD_TRADER_H
+#define GUARD_TRADER_H
+
+void sub_8133DA0(u8 taskId);
+void sub_8133E1C(u8 taskId);
+
+#endif //GUARD_TRADER_H
diff --git a/include/tv.h b/include/tv.h
index 9495387ef..172754ae0 100644
--- a/include/tv.h
+++ b/include/tv.h
@@ -8,6 +8,7 @@ void PutPokemonTodayCaughtOnAir(void);
u32 GetPlayerIDAsU32(void);
bool8 GetPriceReduction(u8 newsKind);
u8 GetRibbonCount(struct Pokemon *pokemon);
+void TV_PutSecretBaseVisitOnTheAir(void);
void sub_80EE184(void);
void sub_80F14F8(TVShow *shows);
size_t sub_80EF370(int value);
diff --git a/include/walda_phrase.h b/include/walda_phrase.h
new file mode 100644
index 000000000..3d7701123
--- /dev/null
+++ b/include/walda_phrase.h
@@ -0,0 +1,8 @@
+#ifndef GUARD_WALDA_PHRASE_H
+#define GUARD_WALDA_PHRASE_H
+
+u16 TryBufferWaldaPhrase(void);
+void DoWaldaNamingScreen(void);
+u16 TryGetWallpaperWithWaldaPhrase(void);
+
+#endif // GUARD_WALDA_PHRASE_H