summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/cable_club.h2
-rw-r--r--include/constants/battle_frontier.h2
-rw-r--r--include/constants/easy_chat.h27
-rw-r--r--include/easy_chat.h28
-rw-r--r--include/global.fieldmap.h11
-rw-r--r--include/global.h18
-rw-r--r--include/link.h10
-rw-r--r--include/link_rfu.h6
-rw-r--r--include/overworld.h39
-rw-r--r--include/party_menu.h2
-rw-r--r--include/record_mixing.h2
-rw-r--r--include/save.h6
-rw-r--r--include/slot_machine.h14
-rw-r--r--include/task.h3
-rw-r--r--include/trainer_card.h2
-rw-r--r--include/tv.h9
16 files changed, 129 insertions, 52 deletions
diff --git a/include/cable_club.h b/include/cable_club.h
index 60d56460d..c2849ca3e 100644
--- a/include/cable_club.h
+++ b/include/cable_club.h
@@ -15,6 +15,6 @@ void sub_80B360C(void);
bool32 sub_80B2AF4(u16 *arg0, u16 *arg1);
void sub_80B3AF8(u8 taskId);
void task00_08081A90(u8 taskId);
-bool32 sub_80B39D4(u8 linkPlayerIndex);
+bool32 GetLinkTrainerCardColor(u8 linkPlayerIndex);
#endif //GUARD_CABLE_CLUB_H
diff --git a/include/constants/battle_frontier.h b/include/constants/battle_frontier.h
index ca9e3bc9f..1224c0f31 100644
--- a/include/constants/battle_frontier.h
+++ b/include/constants/battle_frontier.h
@@ -10,6 +10,8 @@
#define FRONTIER_FACILITY_PIKE 5
#define FRONTIER_FACILITY_PYRAMID 6
#define NUM_FRONTIER_FACILITIES 7
+// The multiplayer battle colosseum rooms re-use VAR_FRONTIER_FACILITY.
+#define FRONTIER_FACILITY_DOUBLE_COLOSSEUM 9
#define TENT_VERDANTURF 2
#define TENT_FALLARBOR 3
diff --git a/include/constants/easy_chat.h b/include/constants/easy_chat.h
index 1c8866bc3..50f5994f4 100644
--- a/include/constants/easy_chat.h
+++ b/include/constants/easy_chat.h
@@ -1,6 +1,33 @@
#ifndef GUARD_CONSTANTS_EASY_CHAT_H
#define GUARD_CONSTANTS_EASY_CHAT_H
+#define EASY_CHAT_TYPE_PROFILE 0
+#define EASY_CHAT_TYPE_BATTLE_START 1
+#define EASY_CHAT_TYPE_BATTLE_WON 2
+#define EASY_CHAT_TYPE_BATTLE_LOST 3
+#define EASY_CHAT_TYPE_MAIL 4
+#define EASY_CHAT_TYPE_INTERVIEW 5
+#define EASY_CHAT_TYPE_BARD_SONG 6
+#define EASY_CHAT_TYPE_FAN_CLUB 7
+#define EASY_CHAT_TYPE_UNK_8 8
+#define EASY_CHAT_TYPE_TRENDY_PHRASE 9
+#define EASY_CHAT_TYPE_GABBY_AND_TY 10
+#define EASY_CHAT_TYPE_CONTEST_INTERVIEW 11
+#define EASY_CHAT_TYPE_BATTLE_TOWER_INTERVIEW 12
+#define EASY_CHAT_TYPE_GOOD_SAYING 13
+#define EASY_CHAT_TYPE_FAN_QUESTION 14
+#define EASY_CHAT_TYPE_QUIZ_ANSWER 15
+#define EASY_CHAT_TYPE_QUIZ_QUESTION 16
+#define EASY_CHAT_TYPE_QUIZ_SET_QUESTION 17
+#define EASY_CHAT_TYPE_QUIZ_SET_ANSWER 18
+#define EASY_CHAT_TYPE_APPRENTICE 19
+#define EASY_CHAT_TYPE_QUESTIONNAIRE 20
+
+#define EASY_CHAT_PERSON_REPORTER_MALE 0
+#define EASY_CHAT_PERSON_REPORTER_FEMALE 1
+#define EASY_CHAT_PERSON_BOY 2
+#define EASY_CHAT_PERSON_DISPLAY_NONE 3
+
#define EC_GROUP_POKEMON 0x0
#define EC_GROUP_TRAINER 0x1
#define EC_GROUP_STATUS 0x2
diff --git a/include/easy_chat.h b/include/easy_chat.h
index b7685e48c..2efdc4e5d 100644
--- a/include/easy_chat.h
+++ b/include/easy_chat.h
@@ -6,11 +6,11 @@
struct EasyChatScreenTemplate
{
- u8 unk_00;
+ u8 type;
u8 numColumns;
u8 numRows;
- u8 unk_03_0:7;
- u8 unk_03_7:1;
+ u8 frameId:7;
+ u8 fourFooterOptions:1;
const u8 *titleText;
const u8 *instructionsText1;
const u8 *instructionsText2;
@@ -20,7 +20,7 @@ struct EasyChatScreenTemplate
struct EasyChatScreen
{
- /*0x00*/ u8 kind;
+ /*0x00*/ u8 type;
/*0x01*/ u8 templateId;
/*0x02*/ u8 numColumns;
/*0x03*/ u8 numRows;
@@ -28,7 +28,7 @@ struct EasyChatScreen
/*0x05*/ s8 mainCursorColumn;
/*0x06*/ s8 mainCursorRow;
/*0x07*/ u8 unk_07;
- /*0x08*/ u8 unk_08;
+ /*0x08*/ u8 stateBackup;
/*0x09*/ u8 unk_09;
/*0x0A*/ s8 unk_0a;
/*0x0B*/ s8 unk_0b;
@@ -38,7 +38,7 @@ struct EasyChatScreen
/*0x0F*/ u8 unk_0f;
/*0x10*/ s8 unk_10;
/*0x11*/ s8 unk_11;
- /*0x12*/ u8 sizeParam;
+ /*0x12*/ u8 displayedPersonType;
/*0x13*/ u8 unk_13;
/*0x14*/ u8 unk_14[0x20];
/*0x34*/ const u8 *titleText;
@@ -75,13 +75,13 @@ struct Unk203A11C
u16 unkB00[BG_SCREEN_SIZE / 2];
};
-struct Unk08597C30
+struct EasyChatPhraseFrameDimensions
{
- u8 unk0_0:5;
- u8 unk0_5:3;
- u8 unk1;
- u8 unk2;
- u8 unk3;
+ u8 left:5;
+ u8 top:3;
+ u8 width;
+ u8 height;
+ u8 footerId;
};
struct EasyChatWordInfo
@@ -122,7 +122,7 @@ struct EasyChatWordsByLetter
};
void InitEasyChatPhrases(void);
-void easy_chat_input_maybe(void);
+void ShowEasyChatScreen(void);
u8 * CopyEasyChatWord(u8 *dest, u16 word);
bool32 sub_811F8D8(int word);
void InitializeEasyChatWordArray(u16 *words, u16 length);
@@ -132,7 +132,7 @@ u16 sub_811EE38(u16 group);
u16 sub_811F01C(void);
u16 EasyChat_GetNumWordsInGroup(u8);
u16 sub_811EE90(u16);
-void sub_811A20C(u8 kind, u16 *words, MainCallback callback, u8 sizeParam);
+void DoEasyChatScreen(u8 type, u16 *words, MainCallback callback, u8 displayedPersonType);
void sub_811F8BC(void);
#endif // GUARD_EASYCHAT_H
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index 74a8363bb..e35d900d8 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -1,6 +1,13 @@
#ifndef GUARD_GLOBAL_FIELDMAP_H
#define GUARD_GLOBAL_FIELDMAP_H
+#define METATILE_COLLISION_MASK 0x0C00
+#define METATILE_ID_MASK 0x03FF
+#define METATILE_ID_UNDEFINED 0x03FF
+#define METATILE_ELEVATION_SHIFT 12
+#define METATILE_COLLISION_SHIFT 10
+#define METATILE_ELEVATION_MASK 0xF000
+
enum
{
CONNECTION_SOUTH = 1,
@@ -19,8 +26,8 @@ struct Tileset
/*0x01*/ bool8 isSecondary;
/*0x04*/ void *tiles;
/*0x08*/ void *palettes;
- /*0x0c*/ void *metatiles;
- /*0x10*/ void *metatileAttributes;
+ /*0x0c*/ u16 *metatiles;
+ /*0x10*/ u16 *metatileAttributes;
/*0x14*/ TilesetCB callback;
};
diff --git a/include/global.h b/include/global.h
index 17e91862f..1f9ac5185 100644
--- a/include/global.h
+++ b/include/global.h
@@ -870,10 +870,10 @@ struct SaveBlock1
/*0x2BA1*/ u8 outbreakPokemonProbability;
/*0x2BA2*/ u16 outbreakDaysLeft;
/*0x2BA4*/ struct GabbyAndTyData gabbyAndTyData;
- /*0x2BB0*/ u16 unk2BB0[6];
- /*0x2BBC*/ u16 unk2BBC[6];
- /*0x2BC8*/ u16 unk2BC8[6];
- /*0x2BD4*/ u16 unk2BD4[6];
+ /*0x2BB0*/ u16 easyChatProfile[6];
+ /*0x2BBC*/ u16 easyChatBattleStart[6];
+ /*0x2BC8*/ u16 easyChatBattleWon[6];
+ /*0x2BD4*/ u16 easyChatBattleLost[6];
/*0x2BE0*/ struct MailStruct mail[MAIL_COUNT];
/*0x2E20*/ u8 additionalPhrases[8]; // bitfield for 33 additional phrases in easy chat system
/*0x2E28*/ OldMan oldMan;
@@ -906,13 +906,13 @@ struct MapPosition
s8 height;
};
-struct UnkStruct_8054FF8
+struct TradeRoomPlayer
{
- u8 a;
- u8 b;
+ u8 playerId;
+ u8 isLocalPlayer;
u8 c;
- u8 d;
- struct MapPosition sub;
+ u8 facing;
+ struct MapPosition pos;
u16 field_C;
};
diff --git a/include/link.h b/include/link.h
index 11eff5c28..83deab88f 100644
--- a/include/link.h
+++ b/include/link.h
@@ -244,7 +244,7 @@ bool8 IsLinkTaskFinished(void);
void CreateWirelessStatusIndicatorSprite(u8, u8);
void sub_800ADF8(void);
void sub_800B488(void);
-void sub_800A620(void);
+void CheckShouldAdvanceLinkState(void);
void sub_8011BD0(void);
u8 IsLinkMaster(void);
void sub_800AC34(void);
@@ -299,8 +299,8 @@ extern struct LinkPlayer gLocalLinkPlayer;
bool32 Link_AnyPartnersPlayingRubyOrSapphire(void);
bool32 sub_800A03C(void);
-void sub_8009628(u8);
-u8 sub_800AA48(void);
+void SetLocalLinkPlayerId(u8);
+u8 GetSavedPlayerCount(void);
void sub_8009FAC(void);
bool8 sub_800A4D8(u8 a0);
u8 sub_800A9D8(void);
@@ -312,7 +312,7 @@ void sub_800AB18(void);
void sub_8009F18(void);
bool8 sub_800AA60(void);
void sub_800ABF4(u16 a0);
-bool32 sub_8009F3C(void);
-u32 sub_800B4DC(void);
+bool32 IsSendingKeysToLink(void);
+u32 GetLinkRecvQueueLength(void);
#endif // GUARD_LINK_H
diff --git a/include/link_rfu.h b/include/link_rfu.h
index c91f9f1d3..5b8ccd9fb 100644
--- a/include/link_rfu.h
+++ b/include/link_rfu.h
@@ -219,7 +219,7 @@ void sub_800E700(void);
void sub_800EDD4(void);
void sub_800F6FC(u8 who);
void sub_800F728(u8 who);
-bool32 sub_800F7E4(void);
+bool32 IsSendingKeysToRfu(void);
void sub_800F804(void);
void sub_800F850(void);
u8 sub_800FCD8(void);
@@ -238,8 +238,8 @@ void sub_800E6D0(void);
bool32 sub_8010EC0(void);
bool32 sub_8010F1C(void);
bool32 sub_8011A80(void);
-bool32 sub_800F0B8(void);
-u32 sub_80124D4(void);
+bool32 IsRfuRecvQueueEmpty(void);
+u32 GetRfuRecvQueueLength(void);
void RfuVSync(void);
void sub_80111B0(bool32 a0);
u8 sub_8011A74(void);
diff --git a/include/overworld.h b/include/overworld.h
index 3a760ca79..b86067701 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -1,6 +1,29 @@
#ifndef GUARD_OVERWORLD_H
#define GUARD_OVERWORLD_H
+#define LINK_KEY_CODE_NULL 0x00
+#define LINK_KEY_CODE_EMPTY 0x11
+#define LINK_KEY_CODE_DPAD_DOWN 0x12
+#define LINK_KEY_CODE_DPAD_UP 0x13
+#define LINK_KEY_CODE_DPAD_LEFT 0x14
+#define LINK_KEY_CODE_DPAD_RIGHT 0x15
+#define LINK_KEY_CODE_UNK_2 0x16
+#define LINK_KEY_CODE_EXIT_ROOM 0x17
+#define LINK_KEY_CODE_START_BUTTON 0x18
+#define LINK_KEY_CODE_A_BUTTON 0x19
+#define LINK_KEY_CODE_UNK_4 0x1A // I'd guess this is the B button?
+
+// These two are a hack to stop user input until link stuff can be
+// resolved.
+#define LINK_KEY_CODE_HANDLE_RECV_QUEUE 0x1B
+#define LINK_KEY_CODE_HANDLE_SEND_QUEUE 0x1C
+#define LINK_KEY_CODE_UNK_7 0x1D
+#define LINK_KEY_CODE_UNK_8 0x1E
+
+#define MOVEMENT_MODE_FREE 0
+#define MOVEMENT_MODE_FROZEN 1
+#define MOVEMENT_MODE_SCRIPTED 2
+
struct InitialPlayerAvatarState
{
u8 transitionFlags;
@@ -12,7 +35,7 @@ struct LinkPlayerEventObject
u8 active;
u8 linkPlayerId;
u8 eventObjId;
- u8 mode;
+ u8 movementMode;
};
// Exported RAM declarations
@@ -22,10 +45,10 @@ extern struct LinkPlayerEventObject gLinkPlayerEventObjects[4];
extern u16 *gBGTilemapBuffers1;
extern u16 *gBGTilemapBuffers2;
extern u16 *gBGTilemapBuffers3;
-extern u16 gUnknown_03005DA8;
+extern u16 gHeldKeyCodeToSend;
extern void (*gFieldCallback)(void);
extern bool8 (*gFieldCallback2)(void);
-extern u8 gUnknown_03005DB4;
+extern u8 gLocalLinkPlayerId;
extern u8 gFieldLinkPlayerCount;
// Exported ROM declarations
@@ -103,12 +126,12 @@ u8 GetSavedWarpRegionMapSectionId(void);
u8 GetCurrentRegionMapSectionId(void);
u8 GetCurrentMapBattleScene(void);
void CleanupOverworldWindowsAndTilemaps(void);
-bool32 is_c1_link_related_active(void);
+bool32 IsUpdateLinkStateCBActive(void);
void CB1_Overworld(void);
void CB2_OverworldBasic(void);
void CB2_Overworld(void);
void SetMainCallback1(void (*cb)(void));
-void sub_8085E94(void *a0);
+void SetUnusedCallback(void *a0);
void CB2_NewGame(void);
void CB2_WhiteOut(void);
void CB2_LoadMap(void);
@@ -117,18 +140,18 @@ void sub_8086074(void);
void CB2_ReturnToField(void);
void CB2_ReturnToFieldLocal(void);
void CB2_ReturnToFieldLink(void);
-void c2_8056854(void);
+void CB2_ReturnToFieldFromMultiplayer(void);
void CB2_ReturnToFieldWithOpenMenu(void);
void CB2_ReturnToFieldContinueScript(void);
void CB2_ReturnToFieldContinueScriptPlayMapMusic(void);
void sub_80861E8(void);
void CB2_ContinueSavedGame(void);
-void sub_8086C2C(void);
+void ResetAllMultiplayerState(void);
u32 sub_8087214(void);
bool32 sub_808727C(void);
u16 sub_8087288(void);
u16 sub_808729C(void);
-u16 sub_80872B0(void);
+u16 QueueExitLinkRoomKey(void);
u16 sub_80872C4(void);
bool32 sub_8087598(void);
bool32 sub_80875C8(void);
diff --git a/include/party_menu.h b/include/party_menu.h
index 702b4fde1..e67dd56f2 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -85,7 +85,7 @@ u8 GetItemEffectType(u16 item);
void CB2_PartyMenuFromStartMenu(void);
void sub_81B7F60(void);
void sub_81B8448(void);
-void sub_81B8518(u8 unused);
+void InitChooseHalfPartyForBattle(u8 unused);
void sub_81B8558(void);
void sub_81B8904(u8 initArg, MainCallback callback);
void sub_81B892C(void);
diff --git a/include/record_mixing.h b/include/record_mixing.h
index 0d50f46f9..4cd231e8a 100644
--- a/include/record_mixing.h
+++ b/include/record_mixing.h
@@ -7,7 +7,7 @@ struct PlayerHallRecords
struct RankingHall2P twoPlayers[2];
};
-void sub_80E6BE8(void);
+void RecordMixingPlayerSpotTriggered(void);
void GetPlayerHallRecords(struct PlayerHallRecords *dst);
#endif //GUARD_RECORD_MIXING_H
diff --git a/include/save.h b/include/save.h
index 42ce8b3f3..7ce86de70 100644
--- a/include/save.h
+++ b/include/save.h
@@ -83,13 +83,11 @@ bool8 sub_8153380(void);
bool8 sub_81533AC(void);
u8 sub_81533E0(void);
u8 sub_8153408(void);
-u8 sub_8153430(void);
-bool8 sub_8153474(void);
+u8 FullSaveGame(void);
+bool8 CheckSaveFile(void);
u8 Save_LoadGameData(u8 a1);
u16 sub_815355C(void);
u8 sub_81534D0(u8);
-u8 sub_8153430(void);
-bool8 sub_8153474(void);
u32 TryCopySpecialSaveSection(u8 sector, u8* dst);
u32 sub_8153634(u8 sector, u8* src);
void sub_8153688(u8 taskId);
diff --git a/include/slot_machine.h b/include/slot_machine.h
index 88bbbd91b..d441b7411 100644
--- a/include/slot_machine.h
+++ b/include/slot_machine.h
@@ -1,6 +1,20 @@
#ifndef GUARD_SLOT_MACHINE_H
#define GUARD_SLOT_MACHINE_H
+#define NUM_REELS 3
+#define REEL_NUM_TAGS 21
+#define REEL_TAG_HEIGHT 24
+
+// Lucky Flags
+#define LUCKY_BIAS_REPLAY (1 << 0)
+#define LUCKY_BIAS_CHERRY (1 << 1)
+#define LUCKY_BIAS_LOTAD (1 << 2)
+#define LUCKY_BIAS_AZURILL (1 << 3)
+#define LUCKY_BIAS_POWER (1 << 4)
+#define LUCKY_BIAS_REELTIME (1 << 5)
+#define LUCKY_BIAS_MIXED_777 (1 << 6)
+#define LUCKY_BIAS_777 (1 << 7)
+
void PlaySlotMachine(u8, void (callback)(void));
#endif // GUARD_SLOT_MACHINE_H
diff --git a/include/task.h b/include/task.h
index a199ba128..4852571b4 100644
--- a/include/task.h
+++ b/include/task.h
@@ -1,6 +1,9 @@
#ifndef GUARD_TASK_H
#define GUARD_TASK_H
+#define HEAD_SENTINEL 0xFE
+#define TAIL_SENTINEL 0xFF
+
#define NUM_TASKS 16
typedef void (*TaskFunc)(u8 taskId);
diff --git a/include/trainer_card.h b/include/trainer_card.h
index 1cadbd8fc..173d23baa 100644
--- a/include/trainer_card.h
+++ b/include/trainer_card.h
@@ -43,7 +43,7 @@ struct TrainerCard
extern struct TrainerCard gTrainerCards[4];
u32 CountPlayerTrainerStars(void);
-u8 sub_80C4904(u8 cardId);
+u8 GetTrainerCardStars(u8 cardId);
void CopyTrainerCardData(struct TrainerCard *dst, u16 *src, u8 gameVersion);
void ShowPlayerTrainerCard(void (*callback)(void));
void ShowTrainerCardInLink(u8 arg0, void (*callback)(void));
diff --git a/include/tv.h b/include/tv.h
index a7ef3daa8..ec7ac1e89 100644
--- a/include/tv.h
+++ b/include/tv.h
@@ -1,6 +1,9 @@
#ifndef GUARD_TV_H
#define GUARD_TV_H
+#define SLOT_MACHINE 0
+#define ROULETTE 1
+
extern u8 *const gTVStringVarPtrs[3];
void ClearTVShowData(void);
@@ -23,9 +26,9 @@ bool8 GetPriceReduction(u8 newsKind);
void sub_80F14F8(TVShow *shows);
size_t CountDigits(int value);
u8 GetRibbonCount(struct Pokemon *pokemon);
-void sub_80EDE70(u16 nCoinsSpent);
-void sub_80EDE84(u16 nCoinsSpent);
-void sub_80EDD78(u16 nCoinsPaidOut);
+void AlertTVThatPlayerPlayedSlotMachine(u16 nCoinsSpent);
+void AlertTVThatPlayerPlayedRoulette(u16 nCoinsSpent);
+void AlertTVOfNewCoinTotal(u16 nCoinsPaidOut);
void sub_80EEA70(void);
void sub_80EDB44(void);
void sub_80EDC60(const u16 *words);