Mirror pokeemerald PR#1329 & PR#1335 to pokefirered

The `giftRibbons` field in `SaveBlock1` has been split out into proper subfields. The new ExternalEvent structs deal with interconnectivity between external games/peripherals and FRLG. US & JP Colosseum Bonus Discs', Colosseum and XD's, Pokémon Channel's, and PokémonBox: Ruby & Sapphire's interactions with these fields has been documented.

The `giftRibbon#` fields in `PokemonSubstruct3` have also been renamed to their appropriate ribbons, and commented with distribution info if applicable. The previous `fatefulEncounter` field was actually filler, and relabeled as such, while the `obedient` bit was renamed `eventLegal`. All relevant constants and functions dealing with the Pokémon data structure were renamed with these changes in mind.

I still maintain that `eventLegal` is a misnomer and it should be called `fatefulEncounter` in all three repos.
This commit is contained in:
Deokishisu
2021-02-16 16:56:31 -05:00
parent bc4f88d72c
commit 57e3f5e0f8
20 changed files with 178 additions and 129 deletions
+64 -64
View File
@@ -1978,12 +1978,12 @@ void CreateBattleTowerMon(struct Pokemon *mon, struct BattleTowerPokemon *src)
CalculateMonStats(mon);
}
static void CreateObedientMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId)
static void CreateEventLegalMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId)
{
bool32 obedient = TRUE;
bool32 isEventLegal = TRUE;
CreateMon(mon, species, level, fixedIV, hasFixedPersonality, fixedPersonality, otIdType, fixedOtId);
SetMonData(mon, MON_DATA_OBEDIENCE, &obedient);
SetMonData(mon, MON_DATA_EVENT_LEGAL, &isEventLegal);
}
void sub_803E23C(struct Pokemon *mon, struct BattleTowerPokemon *dest)
@@ -3153,32 +3153,32 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data)
case MON_DATA_EFFORT_RIBBON:
retVal = substruct3->effortRibbon;
break;
case MON_DATA_GIFT_RIBBON_1:
retVal = substruct3->giftRibbon1;
case MON_DATA_MARINE_RIBBON:
retVal = substruct3->marineRibbon;
break;
case MON_DATA_GIFT_RIBBON_2:
retVal = substruct3->giftRibbon2;
case MON_DATA_LAND_RIBBON:
retVal = substruct3->landRibbon;
break;
case MON_DATA_GIFT_RIBBON_3:
retVal = substruct3->giftRibbon3;
case MON_DATA_SKY_RIBBON:
retVal = substruct3->skyRibbon;
break;
case MON_DATA_GIFT_RIBBON_4:
retVal = substruct3->giftRibbon4;
case MON_DATA_COUNTRY_RIBBON:
retVal = substruct3->countryRibbon;
break;
case MON_DATA_GIFT_RIBBON_5:
retVal = substruct3->giftRibbon5;
case MON_DATA_NATIONAL_RIBBON:
retVal = substruct3->nationalRibbon;
break;
case MON_DATA_GIFT_RIBBON_6:
retVal = substruct3->giftRibbon6;
case MON_DATA_EARTH_RIBBON:
retVal = substruct3->earthRibbon;
break;
case MON_DATA_GIFT_RIBBON_7:
retVal = substruct3->giftRibbon7;
case MON_DATA_WORLD_RIBBON:
retVal = substruct3->worldRibbon;
break;
case MON_DATA_FATEFUL_ENCOUNTER:
retVal = substruct3->fatefulEncounter;
case MON_DATA_FILLER:
retVal = substruct3->filler;
break;
case MON_DATA_OBEDIENCE:
retVal = substruct3->obedient;
case MON_DATA_EVENT_LEGAL:
retVal = substruct3->eventLegal;
break;
case MON_DATA_SPECIES2:
retVal = substruct0->species;
@@ -3220,13 +3220,13 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data)
retVal += substruct3->victoryRibbon;
retVal += substruct3->artistRibbon;
retVal += substruct3->effortRibbon;
retVal += substruct3->giftRibbon1;
retVal += substruct3->giftRibbon2;
retVal += substruct3->giftRibbon3;
retVal += substruct3->giftRibbon4;
retVal += substruct3->giftRibbon5;
retVal += substruct3->giftRibbon6;
retVal += substruct3->giftRibbon7;
retVal += substruct3->marineRibbon;
retVal += substruct3->landRibbon;
retVal += substruct3->skyRibbon;
retVal += substruct3->countryRibbon;
retVal += substruct3->nationalRibbon;
retVal += substruct3->earthRibbon;
retVal += substruct3->worldRibbon;
}
break;
case MON_DATA_RIBBONS:
@@ -3243,13 +3243,13 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data)
| (substruct3->victoryRibbon << 17)
| (substruct3->artistRibbon << 18)
| (substruct3->effortRibbon << 19)
| (substruct3->giftRibbon1 << 20)
| (substruct3->giftRibbon2 << 21)
| (substruct3->giftRibbon3 << 22)
| (substruct3->giftRibbon4 << 23)
| (substruct3->giftRibbon5 << 24)
| (substruct3->giftRibbon6 << 25)
| (substruct3->giftRibbon7 << 26);
| (substruct3->marineRibbon << 20)
| (substruct3->landRibbon << 21)
| (substruct3->skyRibbon << 22)
| (substruct3->countryRibbon << 23)
| (substruct3->nationalRibbon << 24)
| (substruct3->earthRibbon << 25)
| (substruct3->worldRibbon << 26);
}
break;
default:
@@ -3316,15 +3316,15 @@ void SetMonData(struct Pokemon *mon, s32 field, const void *dataArg)
case MON_DATA_VICTORY_RIBBON:
case MON_DATA_ARTIST_RIBBON:
case MON_DATA_EFFORT_RIBBON:
case MON_DATA_GIFT_RIBBON_1:
case MON_DATA_GIFT_RIBBON_2:
case MON_DATA_GIFT_RIBBON_3:
case MON_DATA_GIFT_RIBBON_4:
case MON_DATA_GIFT_RIBBON_5:
case MON_DATA_GIFT_RIBBON_6:
case MON_DATA_GIFT_RIBBON_7:
case MON_DATA_FATEFUL_ENCOUNTER:
case MON_DATA_OBEDIENCE:
case MON_DATA_MARINE_RIBBON:
case MON_DATA_LAND_RIBBON:
case MON_DATA_SKY_RIBBON:
case MON_DATA_COUNTRY_RIBBON:
case MON_DATA_NATIONAL_RIBBON:
case MON_DATA_EARTH_RIBBON:
case MON_DATA_WORLD_RIBBON:
case MON_DATA_FILLER:
case MON_DATA_EVENT_LEGAL:
case MON_DATA_KNOWN_MOVES:
case MON_DATA_RIBBON_COUNT:
case MON_DATA_RIBBONS:
@@ -3556,32 +3556,32 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg)
case MON_DATA_EFFORT_RIBBON:
SET8(substruct3->effortRibbon);
break;
case MON_DATA_GIFT_RIBBON_1:
SET8(substruct3->giftRibbon1);
case MON_DATA_MARINE_RIBBON:
SET8(substruct3->marineRibbon);
break;
case MON_DATA_GIFT_RIBBON_2:
SET8(substruct3->giftRibbon2);
case MON_DATA_LAND_RIBBON:
SET8(substruct3->landRibbon);
break;
case MON_DATA_GIFT_RIBBON_3:
SET8(substruct3->giftRibbon3);
case MON_DATA_SKY_RIBBON:
SET8(substruct3->skyRibbon);
break;
case MON_DATA_GIFT_RIBBON_4:
SET8(substruct3->giftRibbon4);
case MON_DATA_COUNTRY_RIBBON:
SET8(substruct3->countryRibbon);
break;
case MON_DATA_GIFT_RIBBON_5:
SET8(substruct3->giftRibbon5);
case MON_DATA_NATIONAL_RIBBON:
SET8(substruct3->nationalRibbon);
break;
case MON_DATA_GIFT_RIBBON_6:
SET8(substruct3->giftRibbon6);
case MON_DATA_EARTH_RIBBON:
SET8(substruct3->earthRibbon);
break;
case MON_DATA_GIFT_RIBBON_7:
SET8(substruct3->giftRibbon7);
case MON_DATA_WORLD_RIBBON:
SET8(substruct3->worldRibbon);
break;
case MON_DATA_FATEFUL_ENCOUNTER:
SET8(substruct3->fatefulEncounter);
case MON_DATA_FILLER:
SET8(substruct3->filler);
break;
case MON_DATA_OBEDIENCE:
SET8(substruct3->obedient);
case MON_DATA_EVENT_LEGAL:
SET8(substruct3->eventLegal);
break;
case MON_DATA_IVS:
{
@@ -6027,14 +6027,14 @@ u16 sub_80447F0(void)
return gFacilityClassToTrainerClass[gLinkPlayerFacilityClasses[arrId]];
}
void CreateObedientEnemyMon(void)
void CreateEventLegalEnemyMon(void)
{
s32 species = gSpecialVar_0x8004;
s32 level = gSpecialVar_0x8005;
s32 itemId = gSpecialVar_0x8006;
ZeroEnemyPartyMons();
CreateObedientMon(&gEnemyParty[0], species, level, 32, 0, 0, 0, 0);
CreateEventLegalMon(&gEnemyParty[0], species, level, 32, 0, 0, 0, 0);
if (itemId)
{
u8 heldItem[2];