mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-26 11:44:17 +01:00
Pret merge 2023/09/26 (#3347)
This commit is contained in:
commit
f35c5e2346
@ -1,3 +1,6 @@
|
|||||||
|
#ifndef GUARD_CONSTANTS_GBA_CONSTANTS_INC
|
||||||
|
#define GUARD_CONSTANTS_GBA_CONSTANTS_INC
|
||||||
|
|
||||||
.set PSR_USR_MODE, 0x00000010
|
.set PSR_USR_MODE, 0x00000010
|
||||||
.set PSR_FIQ_MODE, 0x00000011
|
.set PSR_FIQ_MODE, 0x00000011
|
||||||
.set PSR_IRQ_MODE, 0x00000012
|
.set PSR_IRQ_MODE, 0x00000012
|
||||||
@ -511,3 +514,5 @@
|
|||||||
.set BLDCNT_TGT2_OBJ, 1 << 12
|
.set BLDCNT_TGT2_OBJ, 1 << 12
|
||||||
.set BLDCNT_TGT2_BD, 1 << 13
|
.set BLDCNT_TGT2_BD, 1 << 13
|
||||||
.set BLDCNT_TGT2_ALL, BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD
|
.set BLDCNT_TGT2_ALL, BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD
|
||||||
|
|
||||||
|
#endif @ GUARD_CONSTANTS_GBA_CONSTANTS_INC
|
||||||
|
@ -1,3 +1,6 @@
|
|||||||
|
#ifndef GUARD_CONSTANTS_GLOBAL_INC
|
||||||
|
#define GUARD_CONSTANTS_GLOBAL_INC
|
||||||
|
|
||||||
.set TRUE, 1
|
.set TRUE, 1
|
||||||
.set FALSE, 0
|
.set FALSE, 0
|
||||||
|
|
||||||
@ -20,3 +23,5 @@
|
|||||||
|
|
||||||
.set OBJ_IMAGE_ANIM_H_FLIP, 1 << 6
|
.set OBJ_IMAGE_ANIM_H_FLIP, 1 << 6
|
||||||
.set OBJ_IMAGE_ANIM_V_FLIP, 1 << 7
|
.set OBJ_IMAGE_ANIM_V_FLIP, 1 << 7
|
||||||
|
|
||||||
|
#endif @ GUARD_CONSTANTS_GLOBAL_INC
|
||||||
|
@ -1,3 +1,6 @@
|
|||||||
|
#ifndef GUARD_CONSTANTS_M4A_CONSTANTS_INC
|
||||||
|
#define GUARD_CONSTANTS_M4A_CONSTANTS_INC
|
||||||
|
|
||||||
.equiv ID_NUMBER, 0x68736d53
|
.equiv ID_NUMBER, 0x68736d53
|
||||||
|
|
||||||
.equiv PCM_DMA_BUF_SIZE, 1584
|
.equiv PCM_DMA_BUF_SIZE, 1584
|
||||||
@ -250,3 +253,5 @@
|
|||||||
struct_field o_CgbChannel_nextChannelPointer, 4
|
struct_field o_CgbChannel_nextChannelPointer, 4
|
||||||
struct_field o_CgbChannel_dummy4, 8
|
struct_field o_CgbChannel_dummy4, 8
|
||||||
struct_field CgbChannel_size, 0
|
struct_field CgbChannel_size, 0
|
||||||
|
|
||||||
|
#endif @ GUARD_CONSTANTS_M4A_CONSTANTS_INC
|
||||||
|
@ -1,3 +1,6 @@
|
|||||||
|
#ifndef GUARD_CONSTANTS_TMS_HMS_INC
|
||||||
|
#define GUARD_CONSTANTS_TMS_HMS_INC
|
||||||
|
|
||||||
#include "constants/tms_hms.h"
|
#include "constants/tms_hms.h"
|
||||||
|
|
||||||
/* Expands to:
|
/* Expands to:
|
||||||
@ -15,3 +18,5 @@ FOREACH_TM(EQUIV_TM)
|
|||||||
FOREACH_HM(EQUIV_HM)
|
FOREACH_HM(EQUIV_HM)
|
||||||
#undef EQUIV_TM
|
#undef EQUIV_TM
|
||||||
#undef EQUIV_HM
|
#undef EQUIV_HM
|
||||||
|
|
||||||
|
#endif @ GUARD_CONSTANTS_TMS_HMS_INC
|
||||||
|
@ -210,7 +210,8 @@ struct BoxPokemon
|
|||||||
u8 isBadEgg:1;
|
u8 isBadEgg:1;
|
||||||
u8 hasSpecies:1;
|
u8 hasSpecies:1;
|
||||||
u8 isEgg:1;
|
u8 isEgg:1;
|
||||||
u8 unused:5;
|
u8 blockBoxRS:1; // Unused, but Pokémon Box Ruby & Sapphire will refuse to deposit a Pokémon with this flag set
|
||||||
|
u8 unused:4;
|
||||||
u8 otName[PLAYER_NAME_LENGTH];
|
u8 otName[PLAYER_NAME_LENGTH];
|
||||||
u8 markings;
|
u8 markings;
|
||||||
u16 checksum;
|
u16 checksum;
|
||||||
|
@ -1395,7 +1395,7 @@ _081DD9F6:
|
|||||||
cmp r6, 0
|
cmp r6, 0
|
||||||
beq _081DDA14
|
beq _081DDA14
|
||||||
ldrb r0, [r4, o_CgbChannel_modify]
|
ldrb r0, [r4, o_CgbChannel_modify]
|
||||||
movs r1, 0x1
|
movs r1, CGB_CHANNEL_MO_VOL
|
||||||
orrs r0, r1
|
orrs r0, r1
|
||||||
strb r0, [r4, o_CgbChannel_modify]
|
strb r0, [r4, o_CgbChannel_modify]
|
||||||
_081DDA14:
|
_081DDA14:
|
||||||
|
@ -56,7 +56,11 @@ static bool8 IsWildLevelAllowedByRepel(u8 level);
|
|||||||
static void ApplyFluteEncounterRateMod(u32 *encRate);
|
static void ApplyFluteEncounterRateMod(u32 *encRate);
|
||||||
static void ApplyCleanseTagEncounterRateMod(u32 *encRate);
|
static void ApplyCleanseTagEncounterRateMod(u32 *encRate);
|
||||||
static u8 GetMaxLevelOfSpeciesInWildTable(const struct WildPokemon *wildMon, u16 species, u8 area);
|
static u8 GetMaxLevelOfSpeciesInWildTable(const struct WildPokemon *wildMon, u16 species, u8 area);
|
||||||
|
#ifdef BUGFIX
|
||||||
|
static bool8 TryGetAbilityInfluencedWildMonIndex(const struct WildPokemon *wildMon, u8 type, u16 ability, u8 *monIndex, u32 size);
|
||||||
|
#else
|
||||||
static bool8 TryGetAbilityInfluencedWildMonIndex(const struct WildPokemon *wildMon, u8 type, u16 ability, u8 *monIndex);
|
static bool8 TryGetAbilityInfluencedWildMonIndex(const struct WildPokemon *wildMon, u8 type, u16 ability, u8 *monIndex);
|
||||||
|
#endif
|
||||||
static bool8 IsAbilityAllowingEncounter(u8 level);
|
static bool8 IsAbilityAllowingEncounter(u8 level);
|
||||||
|
|
||||||
EWRAM_DATA static u8 sWildEncountersDisabled = 0;
|
EWRAM_DATA static u8 sWildEncountersDisabled = 0;
|
||||||
@ -463,6 +467,11 @@ static void CreateWildMon(u16 species, u8 level)
|
|||||||
|
|
||||||
CreateMonWithNature(&gEnemyParty[0], species, level, USE_RANDOM_IVS, PickWildMonNature());
|
CreateMonWithNature(&gEnemyParty[0], species, level, USE_RANDOM_IVS, PickWildMonNature());
|
||||||
}
|
}
|
||||||
|
#ifdef BUGFIX
|
||||||
|
#define TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildPokemon, type, ability, ptr, count) TryGetAbilityInfluencedWildMonIndex(wildPokemon, type, ability, ptr, count)
|
||||||
|
#else
|
||||||
|
#define TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildPokemon, type, ability, ptr, count) TryGetAbilityInfluencedWildMonIndex(wildPokemon, type, ability, ptr)
|
||||||
|
#endif
|
||||||
|
|
||||||
static bool8 TryGenerateWildMon(const struct WildPokemonInfo *wildMonInfo, u8 area, u8 flags)
|
static bool8 TryGenerateWildMon(const struct WildPokemonInfo *wildMonInfo, u8 area, u8 flags)
|
||||||
{
|
{
|
||||||
@ -472,33 +481,33 @@ static bool8 TryGenerateWildMon(const struct WildPokemonInfo *wildMonInfo, u8 ar
|
|||||||
switch (area)
|
switch (area)
|
||||||
{
|
{
|
||||||
case WILD_AREA_LAND:
|
case WILD_AREA_LAND:
|
||||||
if (TryGetAbilityInfluencedWildMonIndex(wildMonInfo->wildPokemon, TYPE_STEEL, ABILITY_MAGNET_PULL, &wildMonIndex))
|
if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_STEEL, ABILITY_MAGNET_PULL, &wildMonIndex, LAND_WILD_COUNT))
|
||||||
break;
|
break;
|
||||||
if (TryGetAbilityInfluencedWildMonIndex(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_STATIC, &wildMonIndex))
|
if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_STATIC, &wildMonIndex, LAND_WILD_COUNT))
|
||||||
break;
|
break;
|
||||||
if (TryGetAbilityInfluencedWildMonIndex(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_LIGHTNING_ROD, &wildMonIndex))
|
if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_LIGHTNING_ROD, &wildMonIndex, LAND_WILD_COUNT))
|
||||||
break;
|
break;
|
||||||
if (TryGetAbilityInfluencedWildMonIndex(wildMonInfo->wildPokemon, TYPE_FIRE, ABILITY_FLASH_FIRE, &wildMonIndex))
|
if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_FIRE, ABILITY_FLASH_FIRE, &wildMonIndex, LAND_WILD_COUNT))
|
||||||
break;
|
break;
|
||||||
if (TryGetAbilityInfluencedWildMonIndex(wildMonInfo->wildPokemon, TYPE_GRASS, ABILITY_HARVEST, &wildMonIndex))
|
if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_GRASS, ABILITY_HARVEST, &wildMonIndex, LAND_WILD_COUNT))
|
||||||
break;
|
break;
|
||||||
if (TryGetAbilityInfluencedWildMonIndex(wildMonInfo->wildPokemon, TYPE_WATER, ABILITY_STORM_DRAIN, &wildMonIndex))
|
if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_WATER, ABILITY_STORM_DRAIN, &wildMonIndex, LAND_WILD_COUNT))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
wildMonIndex = ChooseWildMonIndex_Land();
|
wildMonIndex = ChooseWildMonIndex_Land();
|
||||||
break;
|
break;
|
||||||
case WILD_AREA_WATER:
|
case WILD_AREA_WATER:
|
||||||
if (TryGetAbilityInfluencedWildMonIndex(wildMonInfo->wildPokemon, TYPE_STEEL, ABILITY_MAGNET_PULL, &wildMonIndex))
|
if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_STEEL, ABILITY_MAGNET_PULL, &wildMonIndex, WATER_WILD_COUNT))
|
||||||
break;
|
break;
|
||||||
if (TryGetAbilityInfluencedWildMonIndex(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_STATIC, &wildMonIndex))
|
if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_STATIC, &wildMonIndex, WATER_WILD_COUNT))
|
||||||
break;
|
break;
|
||||||
if (TryGetAbilityInfluencedWildMonIndex(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_LIGHTNING_ROD, &wildMonIndex))
|
if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_LIGHTNING_ROD, &wildMonIndex, WATER_WILD_COUNT))
|
||||||
break;
|
break;
|
||||||
if (TryGetAbilityInfluencedWildMonIndex(wildMonInfo->wildPokemon, TYPE_FIRE, ABILITY_FLASH_FIRE, &wildMonIndex))
|
if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_FIRE, ABILITY_FLASH_FIRE, &wildMonIndex, WATER_WILD_COUNT))
|
||||||
break;
|
break;
|
||||||
if (TryGetAbilityInfluencedWildMonIndex(wildMonInfo->wildPokemon, TYPE_GRASS, ABILITY_HARVEST, &wildMonIndex))
|
if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_GRASS, ABILITY_HARVEST, &wildMonIndex, WATER_WILD_COUNT))
|
||||||
break;
|
break;
|
||||||
if (TryGetAbilityInfluencedWildMonIndex(wildMonInfo->wildPokemon, TYPE_WATER, ABILITY_STORM_DRAIN, &wildMonIndex))
|
if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_WATER, ABILITY_STORM_DRAIN, &wildMonIndex, WATER_WILD_COUNT))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
wildMonIndex = ChooseWildMonIndex_WaterRock();
|
wildMonIndex = ChooseWildMonIndex_WaterRock();
|
||||||
@ -1069,7 +1078,11 @@ static u8 GetMaxLevelOfSpeciesInWildTable(const struct WildPokemon *wildMon, u16
|
|||||||
return maxLevel;
|
return maxLevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef BUGFIX
|
||||||
|
static bool8 TryGetAbilityInfluencedWildMonIndex(const struct WildPokemon *wildMon, u8 type, u16 ability, u8 *monIndex, u32 size)
|
||||||
|
#else
|
||||||
static bool8 TryGetAbilityInfluencedWildMonIndex(const struct WildPokemon *wildMon, u8 type, u16 ability, u8 *monIndex)
|
static bool8 TryGetAbilityInfluencedWildMonIndex(const struct WildPokemon *wildMon, u8 type, u16 ability, u8 *monIndex)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
if (GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG))
|
if (GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -1078,7 +1091,11 @@ static bool8 TryGetAbilityInfluencedWildMonIndex(const struct WildPokemon *wildM
|
|||||||
else if (Random() % 2 != 0)
|
else if (Random() % 2 != 0)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
#ifdef BUGFIX
|
||||||
|
return TryGetRandomWildMonIndexByType(wildMon, type, size, monIndex);
|
||||||
|
#else
|
||||||
return TryGetRandomWildMonIndexByType(wildMon, type, LAND_WILD_COUNT, monIndex);
|
return TryGetRandomWildMonIndexByType(wildMon, type, LAND_WILD_COUNT, monIndex);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ApplyFluteEncounterRateMod(u32 *encRate)
|
static void ApplyFluteEncounterRateMod(u32 *encRate)
|
||||||
|
Loading…
Reference in New Issue
Block a user