consolidate comms error codes and label some more funcs

This commit is contained in:
Seth Barberee 2022-12-17 16:26:01 -08:00
parent c3dcb051a7
commit 71cbad4412
6 changed files with 75 additions and 78 deletions

View File

@ -0,0 +1,13 @@
// NOTE: all communications use the same error codes so we define them here
#define COMMS_GOOD 0
#define COMMS_NO_RESPONSE 2
#define COMMS_INCORRECT_NUM_SYSTEMS 3
#define COMMS_DIFFERENT_MODES 4
#define COMMS_NO_ROOM_STORAGE 6
#define COMMS_DUPLICATE_MAIL 7
#define COMMS_NOT_ELIGIBLE_1 9
#define COMMS_NOT_ELIGIBLE_2 11
#define COMMS_NO_ROOM_MAIL 13
#define COMMS_NOT_READY 15

View File

@ -18,7 +18,7 @@ struct TradeItemsMenu
{
// size: 0x3A0
u32 currMenu;
u32 unk4;
u32 fallbackState;
u32 itemMode;
u32 linkStatus;
u32 unk10;
@ -51,7 +51,6 @@ struct TradeItemsMenu
u8 fill25F[0x3A0 - 0x260];
};
s32 UpdateTradeItemsMenu(void);
s32 CreateTradeItemsMenu(void);
void CleanTradeItemsMenu(void);

View File

@ -146,20 +146,4 @@ enum WonderMailMissionTypes
WONDER_MAIL_MISSION_TYPE_DELIVER_ITEM = 4,
};
enum WonderMailErrorMode {
WONDER_MAIL_GOOD = 0,
// TODO: document 1
WONDER_MAIL_NO_RESPONSE = 2,
WONDER_MAIL_INCORRECT_NUM_SYSTEMS = 3,
WONDER_MAIL_DIFFERENT_MODES = 4,
// TODO: document 5
WONDER_MAIL_NO_ROOM_STORAGE = 6,
WONDER_MAIL_DUPLICATE_MAIL = 7,
WONDER_MAIL_NOT_ELIGIBLE_1 = 9,
WONDER_MAIL_NOT_ELIGIBLE_2 = 11,
WONDER_MAIL_NO_ROOM_MAIL = 13,
// TODO: document 14
WONDER_MAIL_NOT_READY = 15,
};
#endif

View File

@ -1,4 +1,5 @@
#include "global.h"
#include "constants/communication_error_codes.h"
#include "save.h"
#include "pokemon.h"
#include "file_system.h"
@ -466,37 +467,37 @@ void ReturnToThankYouMainFromError(void)
void PrintThankYouMailLinkError(u32 errorCode)
{
switch(errorCode) {
case WONDER_MAIL_INCORRECT_NUM_SYSTEMS:
case COMMS_INCORRECT_NUM_SYSTEMS:
sub_80141B4(gUnknown_80DEF28, 0, &gUnknown_203B2C4->faceFile, 0x10d);
break;
case WONDER_MAIL_DIFFERENT_MODES:
case COMMS_DIFFERENT_MODES:
sub_80141B4(gUnknown_80DEF80, 0, &gUnknown_203B2C4->faceFile, 0x10d);
break;
case WONDER_MAIL_NO_ROOM_STORAGE:
case COMMS_NO_ROOM_STORAGE:
sub_80141B4(gUnknown_80DEFDC, 0, &gUnknown_203B2C4->faceFile, 0x10d);
break;
case WONDER_MAIL_DUPLICATE_MAIL:
case COMMS_DUPLICATE_MAIL:
sub_80141B4(gUnknown_80DF044, 0, &gUnknown_203B2C4->faceFile, 0x10d);
break;
case WONDER_MAIL_NOT_ELIGIBLE_1:
case COMMS_NOT_ELIGIBLE_1:
sub_80141B4(gUnknown_80DF0A0, 0, &gUnknown_203B2C4->faceFile, 0x10d);
break;
case WONDER_MAIL_NOT_ELIGIBLE_2:
case COMMS_NOT_ELIGIBLE_2:
sub_80141B4(gUnknown_80DF0A0, 0, &gUnknown_203B2C4->faceFile, 0x10d);
break;
case WONDER_MAIL_NO_ROOM_MAIL:
case COMMS_NO_ROOM_MAIL:
sub_80141B4(gUnknown_80DF0E0, 0, &gUnknown_203B2C4->faceFile, 0x10d);
break;
case 1:
case WONDER_MAIL_NO_RESPONSE:
case COMMS_NO_RESPONSE:
case 5:
case 14:
sub_80141B4(gUnknown_80DEF04, 0, &gUnknown_203B2C4->faceFile, 0x10d);
break;
case WONDER_MAIL_NOT_READY:
case COMMS_NOT_READY:
sub_80141B4(gUnknown_80DF138, 0, &gUnknown_203B2C4->faceFile, 0x10d);
break;
case WONDER_MAIL_GOOD:
case COMMS_GOOD:
default:
break;
}
@ -510,7 +511,7 @@ void DisplayThankYouMailCommsOutcome(void)
return;
}
MemoryFill8((u8 *)&gUnknown_203B2C4->unk41C, 0, sizeof(struct ItemSlot));
gUnknown_203B2C4->unk41C.itemIndex = 0;
gUnknown_203B2C4->unk41C.itemIndex = ITEM_ID_NOTHING;
gUnknown_203B2C4->unk41C.numItems = 1;
gUnknown_203B2C4->unk41C.itemFlags = 0;
if (gUnknown_203B2C4->linkError == 0) {
@ -678,7 +679,7 @@ void sub_802A230(void)
void sub_802A28C(void)
{
gUnknown_203B2C4->unk41C.itemIndex = 0;
gUnknown_203B2C4->unk41C.itemIndex = ITEM_ID_NOTHING;
gUnknown_203B2C4->unk41C.numItems = 1;
gUnknown_203B2C4->unk41C.itemFlags = 0;
@ -960,7 +961,7 @@ void HandleConfirmItemtoSendMenu(void)
{
case 7:
return_var = sub_8095228(gUnknown_203B2C4->unk218);
if(gUnknown_203B2C4->unk41C.itemIndex != 0)
if(gUnknown_203B2C4->unk41C.itemIndex != ITEM_ID_NOTHING)
{
return_var->unk20 = gUnknown_203B2C4->unk41C;
}
@ -1149,7 +1150,7 @@ void HandleMailCommunicationMenu(void)
{
case WONDER_MAIL_MODE_SEND:
return_var = sub_8095228(sub_80953D4(5));
if(return_var->unk20.itemIndex != 0)
if(return_var->unk20.itemIndex != ITEM_ID_NOTHING)
{
SetThankYouMailMenuState(ITEM_EXISTS_ON_THANK_YOU_MAIL);
}
@ -1269,7 +1270,7 @@ void nullsub_131(void)
void UpdateThankYouMailText(void)
{
char cVar1;
u8 itemIndex;
char *monName;
u8 auStack180 [80];
u8 auStack100 [80];
@ -1325,11 +1326,11 @@ void UpdateThankYouMailText(void)
sub_8035CF4(&gUnknown_203B2C4->unk21C,3,1);
break;
case THANK_YOU_MAIL_COMMS_FINISHED:
gUnknown_203B2C4->linkError = 0;
gUnknown_203B2C4->linkError = COMMS_GOOD;
sub_8011830();
linkStatus = sub_8037B28(gUnknown_203B2C4->unk40);
gUnknown_203B2C4->linkError = linkStatus;
if (linkStatus == 0)
if (linkStatus == COMMS_GOOD)
{
switch(gUnknown_203B2C4->unk40)
{
@ -1344,7 +1345,7 @@ void UpdateThankYouMailText(void)
gUnknown_203B2C4->linkError = sub_8037D64(gUnknown_203B2C4->unk40,&gUnknown_203B2C4->unk1B8,&gUnknown_203B2C4->unk1E8);
break;
}
if (gUnknown_203B2C4->linkError == 0){
if (gUnknown_203B2C4->linkError == COMMS_GOOD){
switch(gUnknown_203B2C4->unk40){
case 6:
case 7:
@ -1414,11 +1415,11 @@ void UpdateThankYouMailText(void)
gUnknown_203B2C4->unk53C.moneyReward = 0; // 0x554
uVar2 = sub_809539C(6,gUnknown_203B2C4->unk430);
puVar4 = sub_8095228(uVar2);
cVar1 = puVar4->unk20.itemIndex;
if (cVar1 != '\0')
gUnknown_203B2C4->unk53C.itemRewards[0] = cVar1; // unk558
itemIndex = puVar4->unk20.itemIndex;
if (itemIndex != ITEM_ID_NOTHING)
gUnknown_203B2C4->unk53C.itemRewards[0] = itemIndex; // unk558
else
gUnknown_203B2C4->unk53C.itemRewards[0] = 0; // unk558
gUnknown_203B2C4->unk53C.itemRewards[0] = ITEM_ID_NOTHING; // unk558
gUnknown_203B2C4->unk53C.numItems = 1; // unk55B
gUnknown_203B2C4->unk53C.teamRankPtsReward = GetDungeonTeamRankPts(&puVar4->dungeon, 0); // unk560
gUnknown_203B2C4->unk53C.itemRewards[1] = 0; // unk559

View File

@ -1,4 +1,5 @@
#include "global.h"
#include "constants/communication_error_codes.h"
#include "input.h"
#include "item.h"
#include "team_inventory.h"
@ -95,7 +96,7 @@ void sub_8036A18();
void sub_8036A34();
void sub_8036A7C();
void sub_8036A54();
void sub_8036ADC();
void WriteandExitTradeItemsMenu();
// 11 was another saving too?
enum TradeItemsScreens
@ -110,6 +111,7 @@ enum TradeItemsScreens
TRADE_ITEMS_RECEIVE_ITEM,
TRADE_ITEMS_IN_COMMUNICATION = 9,
TRADE_ITEMS_PREPARE_TRADE_SAVING = 15,
TRADE_ITEMS_PRE_EXIT = 17,
TRADE_ITEMS_EXIT = 18,
};
@ -129,7 +131,7 @@ s32 CreateTradeItemsMenu(void)
MemoryFill8((u8 *)gTradeItemsMenu, 0, sizeof(struct TradeItemsMenu));
sub_8035C1C();
sub_8035DA0();
gTradeItemsMenu->unk4 = 0x13;
gTradeItemsMenu->fallbackState = 0x13;
SetTradeItemMenu(TRADE_ITEMS_MAIN_MENU);
return 1;
}
@ -189,8 +191,8 @@ s32 UpdateTradeItemsMenu(void)
case 0xd:
sub_8036A18();
break;
case 0x11:
sub_8036ADC();
case TRADE_ITEMS_PRE_EXIT:
WriteandExitTradeItemsMenu();
break;
case TRADE_ITEMS_EXIT: // when you exit the menu to Main
return 3;
@ -235,7 +237,7 @@ void sub_8036590(void)
void sub_80365AC(void)
{
gTradeItemsMenu->itemToSend.itemIndex = 0;
gTradeItemsMenu->itemToSend.itemIndex = ITEM_ID_NOTHING;
gTradeItemsMenu->itemToSend.numItems = 1;
gTradeItemsMenu->itemToSend.itemFlags = 0;
switch(sub_801CA08(1)){
@ -251,7 +253,7 @@ void sub_80365AC(void)
SetTradeItemMenu(TRADE_ITEMS_SEND_ITEM_POPUP_MENU);
break;
case 4:
gTradeItemsMenu->unk4 = 2;
gTradeItemsMenu->fallbackState = TRADE_ITEMS_SEND_ITEM_SELECTION;
gTradeItemsMenu->itemToSend.itemIndex = sub_801CB24();
gTradeItemsMenu->itemToSend.numItems = 1;
sub_8006518(gTradeItemsMenu->unk1E4);
@ -277,7 +279,7 @@ void sub_8036674(void)
SetTradeItemMenu(TRADE_ITEMS_SEND_ITEM_NUMBER);
break;
case 4: // Info
gTradeItemsMenu->unk4 = 0x13;
gTradeItemsMenu->fallbackState = 0x13;
sub_8006518(gTradeItemsMenu->unk1E4);
ResetUnusedInputStruct();
sub_800641C(0,1,1);
@ -304,12 +306,12 @@ void sub_8036728(void)
ResetUnusedInputStruct();
sub_800641C(gTradeItemsMenu->unk1E4, 1, 1);
sub_801CB5C(1);
if (gTradeItemsMenu->unk4 == 0x13) {
if (gTradeItemsMenu->fallbackState == 0x13) {
sub_8035CF4(&gTradeItemsMenu->unk44, 3, 1);
SetTradeItemMenu(TRADE_ITEMS_SEND_ITEM_POPUP_MENU);
}
else {
SetTradeItemMenu(gTradeItemsMenu->unk4);
SetTradeItemMenu(gTradeItemsMenu->fallbackState);
}
default:
case 1:
@ -401,10 +403,10 @@ void sub_80368D4(void)
break;
case 7:
case 0:
if ((gTradeItemsMenu->sentItem.itemIdx.itemIndex != 0) && (gTradeItemsMenu->sentItem.numItems != 0))
if ((gTradeItemsMenu->sentItem.itemIdx.itemIndex != ITEM_ID_NOTHING) && (gTradeItemsMenu->sentItem.numItems != 0))
{
TradeItem_AddItem();
SetTradeItemMenu(0x11);
SetTradeItemMenu(TRADE_ITEMS_PRE_EXIT);
PrepareSavePakWrite(SPECIES_NONE);
}
break;
@ -426,7 +428,7 @@ void sub_8036950(void)
s32 iVar1;
if (sub_80144A4(&iVar1) == 0) {
if (gTradeItemsMenu->linkStatus == 0) {
if (gTradeItemsMenu->linkStatus == COMMS_GOOD) {
switch(gTradeItemsMenu->itemMode){
case TRADE_ITEMS_SEND_ITEM_MODE:
SetTradeItemMenu(0xd);
@ -438,18 +440,15 @@ void sub_8036950(void)
break;
}
}
else {
if (((gTradeItemsMenu->itemMode == TRADE_ITEMS_SEND_ITEM_MODE) && (gTradeItemsMenu->sentItem.itemIdx.itemIndex != 0))
&& (gTradeItemsMenu->sentItem.numItems != 0)) {
else if (((gTradeItemsMenu->itemMode == TRADE_ITEMS_SEND_ITEM_MODE) && (gTradeItemsMenu->sentItem.itemIdx.itemIndex != ITEM_ID_NOTHING)) && (gTradeItemsMenu->sentItem.numItems != 0)) {
// Link Failure
TradeItem_AddItem(); // Add back the item
SetTradeItemMenu(0xb);
PrepareSavePakWrite(SPECIES_NONE);
}
else {
else {
PrintTradeItemsLinkError(gTradeItemsMenu->linkStatus);
SetTradeItemMenu(0xc);
}
}
}
}
@ -532,7 +531,7 @@ void sub_8036AA4(void)
}
}
void sub_8036ADC(void)
void WriteandExitTradeItemsMenu(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
@ -618,7 +617,7 @@ void sub_8036B28(void)
sub_80141B4(gUnknown_80E62C4,0,0,0);
break;
case 10:
gTradeItemsMenu->linkStatus = 0;
gTradeItemsMenu->linkStatus = COMMS_GOOD;
#ifndef NONMATCHING
asm("mov\t%0, #0":"=r"(r2));
@ -639,7 +638,7 @@ void sub_8036B28(void)
sub_8011830();
linkStatus = sub_8037B28(gTradeItemsMenu->itemMode);
gTradeItemsMenu->linkStatus = linkStatus;
if(linkStatus == 0){
if(linkStatus == COMMS_GOOD){
switch(gTradeItemsMenu->itemMode){
// Fallthrough needed on each case
case TRADE_ITEMS_SEND_ITEM_MODE:
@ -655,7 +654,7 @@ void sub_8036B28(void)
}
}
// Needed this check for code generation
if(gTradeItemsMenu->linkStatus == 0 && gTradeItemsMenu->itemMode <= 1){
if(gTradeItemsMenu->linkStatus == COMMS_GOOD && gTradeItemsMenu->itemMode <= 1){
gTradeItemsMenu->linkStatus = sub_80381F4(gTradeItemsMenu->itemMode,&gTradeItemsMenu->unk244,&gTradeItemsMenu->unk24C);
}
xxx_call_start_bg_music();
@ -680,8 +679,8 @@ void sub_8036B28(void)
case 0xC:
case 0xF:
case 0x10:
case 0x11:
case 0x12:
case TRADE_ITEMS_PRE_EXIT:
case TRADE_ITEMS_EXIT:
default:
break;
}
@ -690,18 +689,18 @@ void sub_8036B28(void)
void PrintTradeItemsLinkError(u32 errorNum)
{
switch(errorNum) {
case 0:
case COMMS_GOOD:
break;
case 1:
sub_80141B4(gTradeItemsCommunicationError, 0, 0, 0x101);
break;
case 3:
case COMMS_INCORRECT_NUM_SYSTEMS:
sub_80141B4(gUnknown_80E639C, 0, 0, 0x101);
break;
case 2:
case COMMS_NO_RESPONSE:
sub_80141B4(gUnknown_80E63F8, 0, 0, 0x101);
break;
case 4:
case COMMS_DIFFERENT_MODES:
sub_80141B4(gUnknown_80E6448, 0, 0, 0x101);
break;
case 5:
@ -710,7 +709,7 @@ void PrintTradeItemsLinkError(u32 errorNum)
case 0xe:
sub_80141B4(gTradeItemsCommunicationError, 0, 0, 0x101);
break;
case 0xf:
case COMMS_NOT_READY:
sub_80141B4(gUnknown_80E64AC, 0, 0, 0x101);
break;
default:

View File

@ -1,4 +1,5 @@
#include "global.h"
#include "constants/communication_error_codes.h"
#include "save.h"
#include "pokemon.h"
#include "file_system.h"
@ -791,40 +792,40 @@ void sub_8028B1C(u32 errorCode)
{
switch(errorCode)
{
case WONDER_MAIL_GOOD:
case COMMS_GOOD:
break;
case 1:
case WONDER_MAIL_NO_RESPONSE:
case COMMS_NO_RESPONSE:
sub_80141B4(gWonderMailErrorText, 0, &gUnknown_203B2C0->faceFile, 0x10d);
break;
case WONDER_MAIL_INCORRECT_NUM_SYSTEMS:
case COMMS_INCORRECT_NUM_SYSTEMS:
sub_80141B4(gWonderMailNumGBAsText, 0, &gUnknown_203B2C0->faceFile, 0x10d);
break;
case WONDER_MAIL_DIFFERENT_MODES:
case COMMS_DIFFERENT_MODES:
sub_80141B4(gWonderMailWrongModeText, 0, &gUnknown_203B2C0->faceFile, 0x10d);
break;
case 5:
sub_80141B4(gWonderMailErrorText, 0, &gUnknown_203B2C0->faceFile, 0x10d);
break;
case WONDER_MAIL_NO_ROOM_STORAGE:
case COMMS_NO_ROOM_STORAGE:
sub_80141B4(gWonderMailStorageFullText, 0, &gUnknown_203B2C0->faceFile, 0x10d);
break;
case WONDER_MAIL_DUPLICATE_MAIL:
case COMMS_DUPLICATE_MAIL:
sub_80141B4(gWonderMailDuplicateText, 0, &gUnknown_203B2C0->faceFile, 0x10d);
break;
case WONDER_MAIL_NOT_ELIGIBLE_1:
case COMMS_NOT_ELIGIBLE_1:
sub_80141B4(gWonderMailNotEligibleReceiveText, 0, &gUnknown_203B2C0->faceFile, 0x10d);
break;
case WONDER_MAIL_NOT_ELIGIBLE_2:
case COMMS_NOT_ELIGIBLE_2:
sub_80141B4(gWonderMailNotEligibleReceiveText, 0, &gUnknown_203B2C0->faceFile, 0x10d);
break;
case WONDER_MAIL_NO_ROOM_MAIL:
case COMMS_NO_ROOM_MAIL:
sub_80141B4(gWonderMailNoRoomText, 0, &gUnknown_203B2C0->faceFile, 0x10d);
break;
case 14:
sub_80141B4(gWonderMailErrorText, 0, &gUnknown_203B2C0->faceFile, 0x10d);
break;
case WONDER_MAIL_NOT_READY:
case COMMS_NOT_READY:
sub_80141B4(gWonderMailFriendErrorText, 0, &gUnknown_203B2C0->faceFile, 0x10d);
break;
default: