mirror of
https://github.com/pret/pmd-red.git
synced 2026-09-30 04:47:58 -05:00
More decomp of saving functions
This commit is contained in:
@@ -5,110 +5,8 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_8081AD4
|
||||
sub_8081AD4:
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
ldrb r1, [r4]
|
||||
bl sub_8083060
|
||||
ldrb r1, [r4, 0x1]
|
||||
adds r0, r5, 0
|
||||
bl sub_8083060
|
||||
adds r1, r4, 0x2
|
||||
adds r0, r5, 0
|
||||
movs r2, 0x2
|
||||
bl sub_8082FA8
|
||||
ldrb r1, [r4, 0x4]
|
||||
adds r0, r5, 0
|
||||
bl sub_8083060
|
||||
ldrb r1, [r4, 0x5]
|
||||
adds r0, r5, 0
|
||||
bl sub_8083060
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8081AD4
|
||||
|
||||
thumb_func_start sub_8081B08
|
||||
sub_8081B08:
|
||||
push {r4-r7,lr}
|
||||
adds r6, r0, 0
|
||||
adds r7, r1, 0
|
||||
adds r4, r7, 0
|
||||
movs r5, 0x3
|
||||
_08081B12:
|
||||
adds r0, r6, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_8081AD4
|
||||
adds r4, 0x8
|
||||
subs r5, 0x1
|
||||
cmp r5, 0
|
||||
bge _08081B12
|
||||
adds r0, r7, 0
|
||||
adds r0, 0x20
|
||||
ldrb r1, [r0]
|
||||
adds r0, r6, 0
|
||||
bl sub_8083060
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8081B08
|
||||
|
||||
thumb_func_start sub_8081B34
|
||||
sub_8081B34:
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
movs r0, 0
|
||||
ldrsh r1, [r4, r0]
|
||||
adds r0, r5, 0
|
||||
bl sub_8083048
|
||||
movs r0, 0x2
|
||||
ldrsh r1, [r4, r0]
|
||||
adds r0, r5, 0
|
||||
bl sub_8083048
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8081B34
|
||||
|
||||
thumb_func_start sub_8081B54
|
||||
sub_8081B54:
|
||||
push {lr}
|
||||
movs r2, 0x3
|
||||
bl sub_8082FA8
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8081B54
|
||||
|
||||
thumb_func_start sub_8081B60
|
||||
sub_8081B60:
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
ldrh r1, [r4]
|
||||
bl sub_8083030
|
||||
ldrh r1, [r4, 0x4]
|
||||
adds r0, r5, 0
|
||||
bl sub_8083030
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x9
|
||||
adds r0, r5, 0
|
||||
movs r2, 0x1
|
||||
bl sub_8082FA8
|
||||
adds r4, 0xE
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
movs r2, 0x1
|
||||
bl sub_8082FA8
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8081B60
|
||||
|
||||
thumb_func_start sub_8081B94
|
||||
sub_8081B94:
|
||||
thumb_func_start SaveDungeonWeather
|
||||
SaveDungeonWeather:
|
||||
push {r4-r6,lr}
|
||||
adds r6, r0, 0
|
||||
adds r5, r1, 0
|
||||
@@ -149,7 +47,7 @@ _08081BAC:
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8081B94
|
||||
thumb_func_end SaveDungeonWeather
|
||||
|
||||
thumb_func_start sub_8081BF4
|
||||
sub_8081BF4:
|
||||
|
||||
@@ -31,6 +31,24 @@ typedef struct Dungeon_sub
|
||||
u8 unk2;
|
||||
} Dungeon_sub;
|
||||
|
||||
typedef struct Weather
|
||||
{
|
||||
/* 0xE264 */ u8 weather; // Uses the weather constants in weather.h.
|
||||
u8 unkE265; // Uses the weather constants in weather.h
|
||||
/* 0xE266 */ u8 weatherDamageCounter; // Timer for applying sandstorm/hail damage periodically.
|
||||
/* 0xE267 */ u8 unkE267[0xE269 - 0xE267];
|
||||
u8 unkE269;
|
||||
u8 fillE26A;
|
||||
u8 unkE26B;
|
||||
u8 weatherTurns;
|
||||
u8 fillE26D[0xE26F - 0xE26D];
|
||||
/* 0xE26F */ u8 naturalWeather[8]; // The weather at the start of the floor. If the weather changes, then expires, revert back to the starting weather.
|
||||
/* 0xE277 */ u8 mudSportTurns;
|
||||
/* 0xE278 */ u8 waterSportTurns;
|
||||
/* 0xE279 */ bool8 nullifyWeather; // Air Lock and Cloud Nine toggle this to disable weather effects
|
||||
|
||||
} Weather;
|
||||
|
||||
// size: 0x30
|
||||
typedef struct unkDungeonGlobal_unk1CE98_sub
|
||||
{
|
||||
@@ -175,20 +193,7 @@ typedef struct Dungeon
|
||||
u32 unkE250;
|
||||
u8 fillE254[0xE260 - 0xE254];
|
||||
u32 unkE260;
|
||||
/* 0xE264 */ u8 weather; // Uses the weather constants in weather.h.
|
||||
u8 unkE265; // Uses the weather constants in weather.h
|
||||
/* 0xE266 */ u8 weatherDamageCounter; // Timer for applying sandstorm/hail damage periodically.
|
||||
/* 0xE267 */ u8 unkE267[0xE269 - 0xE267];
|
||||
u8 unkE269;
|
||||
u8 fillE26A;
|
||||
u8 unkE26B;
|
||||
u8 weatherTurns;
|
||||
u8 fillE26D[0xE26F - 0xE26D];
|
||||
/* 0xE26F */ u8 naturalWeather[8]; // The weather at the start of the floor. If the weather changes, then expires, revert back to the starting weather.
|
||||
/* 0xE277 */ u8 mudSportTurns;
|
||||
/* 0xE278 */ u8 waterSportTurns;
|
||||
/* 0xE279 */ bool8 nullifyWeather; // Air Lock and Cloud Nine toggle this to disable weather effects
|
||||
u8 fillE27A[0xE27C - 0xE27A];
|
||||
/* 0xE264 */ Weather weather; // Uses the weather constants in weather.h.
|
||||
/* 0xE27C */ Tile unkE27C[8][8];
|
||||
/* 0xE87C */ u8 unkE87C[8][8];
|
||||
u32 fillE8BC;
|
||||
|
||||
@@ -1072,7 +1072,7 @@ void ArticunoPreFightDialogue(void)
|
||||
DisplayDungeonDialogue(gArticunoPreFightDialogue_7);
|
||||
sub_803E708(10,0x46);
|
||||
PlaySoundEffect(0); // snow flurry
|
||||
gDungeon->unkE265 = WEATHER_SNOW;
|
||||
gDungeon->weather.unkE265 = WEATHER_SNOW;
|
||||
sub_807EAA0(0,1);
|
||||
PlaySoundEffect(0x1ee); // flash effect?
|
||||
sub_8088574();
|
||||
@@ -1107,7 +1107,7 @@ void ArticunoReFightDialogue(void)
|
||||
|
||||
LeaderEntity = xxx_call_GetLeader();
|
||||
ArticunoEntity = GetEntityFromClientType(0xd);
|
||||
gDungeon->unkE265 = WEATHER_SNOW;
|
||||
gDungeon->weather.unkE265 = WEATHER_SNOW;
|
||||
sub_807EAA0(0,1);
|
||||
sub_803E708(10,0x46);
|
||||
DisplayDungeonDialogue(gArticunoReFightDialogue_1);
|
||||
@@ -1134,7 +1134,7 @@ void ArticunoPostStoryPreFightDialogue(void)
|
||||
sub_80866C4(gUnknown_8102A9C);
|
||||
}
|
||||
else {
|
||||
gDungeon->unkE265 = WEATHER_SNOW;
|
||||
gDungeon->weather.unkE265 = WEATHER_SNOW;
|
||||
sub_807EAA0(0,1);
|
||||
ArticunoScreenFlash();
|
||||
sub_8086738();
|
||||
@@ -2494,7 +2494,7 @@ void RaikouPreFightDialogue(void)
|
||||
DisplayDungeonDialogue(gRaikouPreFightDialogue_1);
|
||||
RaikouScreenFlash();
|
||||
DisplayDungeonDialogue(gRaikouPreFightDialogue_2);
|
||||
gDungeon->unkE265 = WEATHER_RAIN;
|
||||
gDungeon->weather.unkE265 = WEATHER_RAIN;
|
||||
sub_807EAA0(0,1);
|
||||
sub_803E708(10,70);
|
||||
DisplayDungeonDialogue(gRaikouPreFightDialogue_3);
|
||||
@@ -2516,7 +2516,7 @@ void RaikouReFightDialogue(void)
|
||||
|
||||
LeaderEntity = xxx_call_GetLeader();
|
||||
RaikouEntity = GetEntityFromClientType(0x13);
|
||||
gDungeon->unkE265 = WEATHER_RAIN;
|
||||
gDungeon->weather.unkE265 = WEATHER_RAIN;
|
||||
sub_807EAA0(0,1);
|
||||
RaikouScreenFlash();
|
||||
DisplayDungeonDialogue(gRaikouReFightDialogue_1);
|
||||
@@ -2540,7 +2540,7 @@ void RaikouPostStoryPreFightDialogue(void)
|
||||
sub_80866C4(gRaikouPostStoryPreFightDialogue_4);
|
||||
}
|
||||
else {
|
||||
gDungeon->unkE265 = WEATHER_RAIN;
|
||||
gDungeon->weather.unkE265 = WEATHER_RAIN;
|
||||
sub_807EAA0(0,1);
|
||||
DisplayDungeonDialogue(gRaikouPostStoryPreFightDialogue_1);
|
||||
RaikouScreenFlash();
|
||||
|
||||
@@ -71,23 +71,23 @@ void TriggerWeatherAbilities(void)
|
||||
|
||||
if (gDungeon->unkC != 0) {
|
||||
gDungeon->unkC = 0;
|
||||
gDungeon->nullifyWeather = FALSE;
|
||||
gDungeon->weather.nullifyWeather = FALSE;
|
||||
|
||||
for(index = 0; index < DUNGEON_MAX_POKEMON; index++)
|
||||
{
|
||||
entity = gDungeon->allPokemon[index];
|
||||
if (EntityExists(entity)) {
|
||||
if (HasAbility(entity, ABILITY_DRIZZLE)) {
|
||||
gDungeon->naturalWeather[WEATHER_RAIN] = 1;
|
||||
gDungeon->weather.naturalWeather[WEATHER_RAIN] = 1;
|
||||
}
|
||||
else if (HasAbility(entity, ABILITY_SAND_STREAM)) {
|
||||
gDungeon->naturalWeather[WEATHER_SANDSTORM] = 1;
|
||||
gDungeon->weather.naturalWeather[WEATHER_SANDSTORM] = 1;
|
||||
}
|
||||
else if (HasAbility(entity, ABILITY_DROUGHT)) {
|
||||
gDungeon->naturalWeather[WEATHER_SUNNY] = 1;
|
||||
gDungeon->weather.naturalWeather[WEATHER_SUNNY] = 1;
|
||||
}
|
||||
if ((HasAbility(entity, ABILITY_AIR_LOCK)) || (HasAbility(entity, ABILITY_CLOUD_NINE))) {
|
||||
gDungeon->nullifyWeather = TRUE;
|
||||
gDungeon->weather.nullifyWeather = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -441,7 +441,7 @@ bool32 sub_805783C(Entity *pokemon, Entity *target, Move *move, s32 param_4)
|
||||
|
||||
bool32 sub_805785C(Entity *pokemon, Entity *target, Move *move, s32 param_4)
|
||||
{
|
||||
gDungeon->unkE26B = gUnknown_80F4F42;
|
||||
gDungeon->weather.unkE26B = gUnknown_80F4F42;
|
||||
if (sub_807EAA0(1,0) == 0) {
|
||||
// The weather remains unchanged
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FCF74);
|
||||
@@ -451,7 +451,7 @@ bool32 sub_805785C(Entity *pokemon, Entity *target, Move *move, s32 param_4)
|
||||
|
||||
bool32 sub_80578A4(Entity *pokemon, Entity *target, Move *move, s32 param_4)
|
||||
{
|
||||
gDungeon->weatherTurns = gUnknown_80F4F42;
|
||||
gDungeon->weather.weatherTurns = gUnknown_80F4F42;
|
||||
if (sub_807EAA0(1,0) == 0) {
|
||||
// The weather remains unchanged
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FCF80);
|
||||
@@ -2035,7 +2035,7 @@ bool8 sub_805946C(Entity * pokemon,Entity * target,Move * move,u32 param_4)
|
||||
|
||||
bool8 sub_80594E0(Entity *pokemon, Entity *target, Move *move, u32 param_4)
|
||||
{
|
||||
gDungeon->unkE269 = gUnknown_80F4F42;
|
||||
gDungeon->weather.unkE269 = gUnknown_80F4F42;
|
||||
if(sub_807EAA0(1, 0) == 0)
|
||||
{
|
||||
sub_80522F4(pokemon, target, *gUnknown_80FCF78);
|
||||
@@ -2729,7 +2729,7 @@ bool8 RolePlayMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_
|
||||
|
||||
bool8 sub_805A394(Entity *pokemon, Entity *target, Move *move, u32 param_4)
|
||||
{
|
||||
gDungeon->unkE267[1] = gUnknown_80F4F42;
|
||||
gDungeon->weather.unkE267[1] = gUnknown_80F4F42;
|
||||
if (sub_807EAA0(1,0) == 0) {
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FCF7C);
|
||||
}
|
||||
|
||||
@@ -375,13 +375,13 @@ bool8 CanUseOnSelfWithStatusChecker(Entity *pokemon, Move *move)
|
||||
break;
|
||||
}
|
||||
case MOVE_MUD_SPORT:
|
||||
if (gDungeon->mudSportTurns > 0)
|
||||
if (gDungeon->weather.mudSportTurns > 0)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
break;
|
||||
case MOVE_WATER_SPORT:
|
||||
if (gDungeon->waterSportTurns > 0)
|
||||
if (gDungeon->weather.waterSportTurns > 0)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
97
src/trap_1.c
97
src/trap_1.c
@@ -14,15 +14,15 @@ extern u8 gUnknown_81071D4[];
|
||||
|
||||
extern void sub_8082FA8(unkStruct_8094924 *, void *, s32);
|
||||
|
||||
void sub_8081B60(void *, Tile *);
|
||||
void SaveTile(unkStruct_8094924 *r0, Tile *tile);
|
||||
void sub_80830F8(void * , u32*);
|
||||
void sub_808312C(void *, u32 *);
|
||||
void sub_8081B94(void *, u8 *);
|
||||
void SaveDungeonWeather(void *, Weather *);
|
||||
void sub_8083078(void *, u32);
|
||||
void sub_80830B4(void *, u8);
|
||||
void sub_8083030(void *, u16);
|
||||
void sub_8080E0C(unkStruct_8094924 *, Entity *);
|
||||
void sub_808300C(void *, u8 *);
|
||||
void SaveEntity(unkStruct_8094924 *param_1, Entity *);
|
||||
void sub_808300C(unkStruct_8094924 *param_1, u8 *);
|
||||
void sub_8081788(unkStruct_8094924 *param_1, Item *param_2);
|
||||
void sub_8080B90(unkStruct_8094924 *param_1);
|
||||
void SaveItemData(unkStruct_8094924 *param_1);
|
||||
@@ -34,20 +34,20 @@ void sub_8080CF0(unkStruct_8094924 *param_1);
|
||||
void nullsub_98(unkStruct_8094924 *param_1);
|
||||
void sub_8082F9C(unkStruct_8094924 *param_1, u32, u32);
|
||||
void sub_8049ED4(void);
|
||||
void sub_8083060(void *, u32);
|
||||
void sub_8083060(unkStruct_8094924 *param_1, u32);
|
||||
void sub_80817F4(unkStruct_8094924 *param_1, u32 param_2);
|
||||
void sub_80830A0(void *, u32);
|
||||
void sub_80830A0(unkStruct_8094924 *param_1, u32);
|
||||
void sub_808180C(unkStruct_8094924 *param_1, u32 param_2);
|
||||
void sub_8083048(void *, u32);
|
||||
void sub_8083048(unkStruct_8094924 *param_1, u32);
|
||||
void sub_80818C8(unkStruct_8094924 *param_1, JoinedAt *param_2);
|
||||
void sub_80817C8(unkStruct_8094924 *param_1, ActionContainer *param_2);
|
||||
void sub_8081B34(void *, void *);
|
||||
void sub_8081B08(void *, Move *);
|
||||
void SaveActionContainer(unkStruct_8094924 *param_1, ActionContainer *param_2);
|
||||
void sub_8081B34(unkStruct_8094924 *r0, s16 *r1);
|
||||
void SaveEntityMoves(unkStruct_8094924 *r0, Move *move);
|
||||
void sub_8081824(unkStruct_8094924 *param_1, u32 param_2);
|
||||
void sub_80817B0(unkStruct_8094924 *param_1, u32 param_2);
|
||||
void SavePosition(void*, Position *);
|
||||
void sub_80818E4(unkStruct_8094924 *param_1, AITarget* param_2);
|
||||
void sub_8081B54(void *, u8 *);
|
||||
void SaveAITargetStatus(unkStruct_8094924 *param_1, AITarget* param_2);
|
||||
void SaveIQFlags(unkStruct_8094924 *r0, u8 *r1);
|
||||
void SaveSpeedStage(unkStruct_8094924 *param_1, s32 param_2);
|
||||
void sub_8081854(unkStruct_8094924 *param_1, s32 param_2);
|
||||
void sub_808183C(unkStruct_8094924 *param_1, s32 param_2);
|
||||
@@ -66,10 +66,10 @@ void SaveHiddenPower(unkStruct_8094924 *param_1, HiddenPower *param_2);
|
||||
void SaveChargingStatus(unkStruct_8094924 *param_1, Charging *param_2);
|
||||
void SaveProtectionStatus(unkStruct_8094924 *param_1, Protection *param_2);
|
||||
void SaveWaitingStatus(unkStruct_8094924 *param_1, Waiting *param_2);
|
||||
void SaveSpeedCounters(void *, u8 *, u32);
|
||||
void SaveSpeedCounters(unkStruct_8094924 *param_1, u8 *speedCounters, u32 numCounters);
|
||||
void SaveClientType(unkStruct_8094924 *param_1, u8 param_2);
|
||||
void sub_803E708(u32, u32);
|
||||
void sub_80421C0(Entity *, u32);
|
||||
void sub_80421C0(Entity *, u16);
|
||||
void sub_804687C(Entity *, Position *, Position *, Item *, u32);
|
||||
|
||||
void HandleTripTrap(Entity *pokemon, Entity *target)
|
||||
@@ -218,15 +218,15 @@ void sub_8080CF0(unkStruct_8094924 *param_1)
|
||||
sub_8083030(param_1,gDungeon->unk3800);
|
||||
for(counter = 0; counter < MAX_TEAM_MEMBERS; counter++)
|
||||
{
|
||||
sub_8080E0C(param_1,gDungeon->teamPokemon[counter]);
|
||||
SaveEntity(param_1,gDungeon->teamPokemon[counter]);
|
||||
}
|
||||
for(counter = 0; counter < DUNGEON_MAX_WILD_POKEMON; counter++)
|
||||
{
|
||||
sub_8080E0C(param_1,gDungeon->wildPokemon[counter]);
|
||||
SaveEntity(param_1,gDungeon->wildPokemon[counter]);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8080E0C(unkStruct_8094924 *param_1,Entity *param_2)
|
||||
void SaveEntity(unkStruct_8094924 *param_1, Entity *param_2)
|
||||
{
|
||||
Position *pos;
|
||||
EntityInfo *info;
|
||||
@@ -322,7 +322,7 @@ void sub_8080E0C(unkStruct_8094924 *param_1,Entity *param_2)
|
||||
sub_80830A0(param_1,info->offensiveMultipliers[1]);
|
||||
sub_80830A0(param_1,info->defensiveMultipliers[0]);
|
||||
sub_80830A0(param_1,info->defensiveMultipliers[1]);
|
||||
sub_80817C8(param_1,&info->action);
|
||||
SaveActionContainer(param_1,&info->action);
|
||||
sub_808180C(param_1,info->types[0]);
|
||||
sub_808180C(param_1,info->types[1]);
|
||||
sub_8081824(param_1,info->abilities[0]);
|
||||
@@ -373,9 +373,9 @@ void sub_8080E0C(unkStruct_8094924 *param_1,Entity *param_2)
|
||||
pos++;
|
||||
}
|
||||
|
||||
sub_80818E4(param_1,temp3);
|
||||
sub_8081B54(param_1,temp2);
|
||||
sub_8081B54(param_1,temp1);
|
||||
SaveAITargetStatus(param_1,temp3);
|
||||
SaveIQFlags(param_1,temp2);
|
||||
SaveIQFlags(param_1,temp1);
|
||||
SaveTactic(param_1,*puStack_a0);
|
||||
SaveHiddenPower(param_1,psStack_a4);
|
||||
sub_8083078(param_1,*puStack_9c);
|
||||
@@ -415,9 +415,9 @@ void sub_8080E0C(unkStruct_8094924 *param_1,Entity *param_2)
|
||||
sub_8083060(param_1,info->stockpileStage);
|
||||
sub_8083060(param_1,info->fill113);
|
||||
sub_8083060(param_1,(u8)info->moveRandomly);
|
||||
sub_8081B08(param_1,info->moves);
|
||||
sub_8081B34(param_1,&info->belly);
|
||||
sub_8081B34(param_1,&info->maxBelly);
|
||||
SaveEntityMoves(param_1,info->moves);
|
||||
sub_8081B34(param_1,(s16 *)&info->belly);
|
||||
sub_8081B34(param_1,(s16 *)&info->maxBelly);
|
||||
sub_80830B4(param_1,info->aiNextToTarget);
|
||||
sub_80830B4(param_1,info->recalculateFollow);
|
||||
sub_80830B4(param_1,info->waiting);
|
||||
@@ -472,7 +472,7 @@ void sub_8081454(unkStruct_8094924 *param_1)
|
||||
|
||||
for(iVar2 = 0; iVar2 < DUNGEON_MAX_SIZE_X; iVar2++)
|
||||
{
|
||||
sub_8081B60(param_1,&gDungeon->tiles[iVar1][iVar2]);
|
||||
SaveTile(param_1,&gDungeon->tiles[iVar1][iVar2]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -494,11 +494,11 @@ void sub_8081454(unkStruct_8094924 *param_1)
|
||||
{
|
||||
for(iVar2 = 0; iVar2 < 8; iVar2++)
|
||||
{
|
||||
sub_8081B60(param_1, &gDungeon->unkE27C[iVar1][iVar2]);
|
||||
SaveTile(param_1, &gDungeon->unkE27C[iVar1][iVar2]);
|
||||
sub_8083060(param_1, gDungeon->unkE87C[iVar1][iVar2]);
|
||||
}
|
||||
}
|
||||
sub_8081B94(param_1,&gDungeon->weather);
|
||||
SaveDungeonWeather(param_1,&gDungeon->weather);
|
||||
}
|
||||
|
||||
void sub_808165C(unkStruct_8094924 *param_1)
|
||||
@@ -540,7 +540,7 @@ void sub_80817B0(unkStruct_8094924 *param_1, u32 param_2)
|
||||
sub_8082FA8(param_1, &stack, 1);
|
||||
}
|
||||
|
||||
void sub_80817C8(unkStruct_8094924 *param_1, ActionContainer *param_2)
|
||||
void SaveActionContainer(unkStruct_8094924 *param_1, ActionContainer *param_2)
|
||||
{
|
||||
sub_8082FA8(param_1, ¶m_2->direction, 1);
|
||||
sub_8082FA8(param_1, ¶m_2->itemTargetPosition.x, 1);
|
||||
@@ -609,7 +609,7 @@ void sub_80818C8(unkStruct_8094924 *param_1, JoinedAt *param_2)
|
||||
sub_8083060(param_1, param_2->unk1);
|
||||
}
|
||||
|
||||
void sub_80818E4(unkStruct_8094924 *param_1, AITarget* param_2)
|
||||
void SaveAITargetStatus(unkStruct_8094924 *param_1, AITarget* param_2)
|
||||
{
|
||||
sub_8082FA8(param_1, ¶m_2->aiObjective, 1);
|
||||
sub_80830B4(param_1, param_2->aiNotNextToTarget);
|
||||
@@ -707,3 +707,42 @@ void SaveMuzzledStatus(unkStruct_8094924 *param_1, Muzzled *param_2)
|
||||
sub_8083060(param_1, param_2->muzzledTurns);
|
||||
}
|
||||
|
||||
void SaveEntityMove(unkStruct_8094924 *r0, Move *r1)
|
||||
{
|
||||
sub_8083060(r0, r1->moveFlags);
|
||||
sub_8083060(r0, r1->moveFlags2);
|
||||
sub_8082FA8(r0, &r1->id, 2);
|
||||
sub_8083060(r0, r1->PP);
|
||||
sub_8083060(r0, r1->ginseng);
|
||||
}
|
||||
|
||||
void SaveEntityMoves(unkStruct_8094924 *r0, Move *move)
|
||||
{
|
||||
s32 index;
|
||||
for(index = 0; index < MAX_MON_MOVES; index++)
|
||||
{
|
||||
SaveEntityMove(r0, &move[index]);
|
||||
}
|
||||
sub_8083060(r0, *(u8 *)(move + 0x4)); // Struggle Move flags?
|
||||
}
|
||||
|
||||
void sub_8081B34(unkStruct_8094924 *r0, s16 *r1)
|
||||
{
|
||||
sub_8083048(r0, r1[0]);
|
||||
sub_8083048(r0, r1[1]);
|
||||
}
|
||||
|
||||
void SaveIQFlags(unkStruct_8094924 *r0, u8 *r1)
|
||||
{
|
||||
sub_8082FA8(r0, r1, 3);
|
||||
}
|
||||
|
||||
void SaveTile(unkStruct_8094924 *r0, Tile *tile)
|
||||
{
|
||||
sub_8083030(r0, tile->terrainType);
|
||||
sub_8083030(r0, tile->unk4);
|
||||
sub_8082FA8(r0, &tile->room, 1);
|
||||
sub_8082FA8(r0, &tile->unkE, 1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -231,11 +231,11 @@ bool8 sub_806E100(s32 *param_1, Entity *pokemon, Entity *target, u8 type, struct
|
||||
sub_800A34C(param_1,param_1, gUnknown_8106F64);
|
||||
gDungeon->unk16A = TRUE;
|
||||
}
|
||||
if (((gDungeon->mudSportTurns != 0) || (weather == WEATHER_FOG)) && (type == TYPE_ELECTRIC)) {
|
||||
if (((gDungeon->weather.mudSportTurns != 0) || (weather == WEATHER_FOG)) && (type == TYPE_ELECTRIC)) {
|
||||
gDungeon->fill16E[7] = TRUE;
|
||||
sub_800A34C(param_1,param_1,gUnknown_8106F1C);
|
||||
}
|
||||
if ((gDungeon->waterSportTurns != 0) && (type == TYPE_FIRE)) {
|
||||
if ((gDungeon->weather.waterSportTurns != 0) && (type == TYPE_FIRE)) {
|
||||
gDungeon->fill16E[8] = TRUE;
|
||||
sub_800A34C(param_1,param_1,gUnknown_8106F1C);
|
||||
}
|
||||
@@ -388,11 +388,11 @@ s32 WeightWeakTypePicker(Entity *user, Entity *target, u8 moveType)
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
if (gDungeon->mudSportTurns != 0 && moveType == TYPE_ELECTRIC)
|
||||
if (gDungeon->weather.mudSportTurns != 0 && moveType == TYPE_ELECTRIC)
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
if (gDungeon->waterSportTurns != 0 && moveType == TYPE_FIRE)
|
||||
if (gDungeon->weather.waterSportTurns != 0 && moveType == TYPE_FIRE)
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ u8 GetApparentWeather(Entity *pokemon)
|
||||
{
|
||||
return WEATHER_CLEAR;
|
||||
}
|
||||
return gDungeon->weather;
|
||||
return gDungeon->weather.weather;
|
||||
}
|
||||
|
||||
void sub_807E5AC(void)
|
||||
@@ -38,18 +38,18 @@ void sub_807E5E4(u8 weather)
|
||||
int index;
|
||||
u8 *preload;
|
||||
|
||||
gDungeon->unkE265 = weather;
|
||||
gDungeon->weather = gDungeon->unkE265;
|
||||
gDungeon->nullifyWeather = FALSE;
|
||||
gDungeon->weather.unkE265 = weather;
|
||||
gDungeon->weather.weather = gDungeon->weather.unkE265;
|
||||
gDungeon->weather.nullifyWeather = FALSE;
|
||||
for(index = 0; index < 8; index++) {
|
||||
gDungeon->unkE267[index] = 0;
|
||||
gDungeon->naturalWeather[index] = 0;
|
||||
gDungeon->weather.unkE267[index] = 0;
|
||||
gDungeon->weather.naturalWeather[index] = 0;
|
||||
}
|
||||
preload = &gDungeon->weatherDamageCounter;
|
||||
preload = &gDungeon->weather.weatherDamageCounter;
|
||||
index = 0;
|
||||
*preload = 9;
|
||||
gDungeon->mudSportTurns = 0;
|
||||
gDungeon->waterSportTurns = 0;
|
||||
gDungeon->weather.mudSportTurns = 0;
|
||||
gDungeon->weather.waterSportTurns = 0;
|
||||
for(index = 0; index < 0x100; index++)
|
||||
{
|
||||
gDungeon->unk17C[index].unk0 = index;
|
||||
|
||||
Reference in New Issue
Block a user