mirror of
https://github.com/pret/pmd-red.git
synced 2026-04-22 23:17:44 -05:00
101 lines
2.6 KiB
C
101 lines
2.6 KiB
C
#include "global.h"
|
|
#include "code_8092334.h"
|
|
#include "pokemon.h"
|
|
#include "constants/move_id.h"
|
|
|
|
void SavePokemonMove(struct unkStruct_8094924 *r0, struct PokemonMove *move)
|
|
{
|
|
SaveIntegerBits(r0, &move->moveFlags, 4);
|
|
SaveIntegerBits(r0, &move->moveID, 9);
|
|
SaveIntegerBits(r0, &move->pp, 7);
|
|
}
|
|
|
|
void RestorePokemonMove(struct unkStruct_8094924 *r0, struct PokemonMove *move)
|
|
{
|
|
RestoreIntegerBits(r0, &move->moveFlags, 4);
|
|
RestoreIntegerBits(r0, &move->moveID, 9);
|
|
RestoreIntegerBits(r0, &move->pp, 7);
|
|
}
|
|
|
|
void SavePokemonMoves(struct unkStruct_8094924 *r0, struct PokemonMove *moveSet)
|
|
{
|
|
s32 iVar4;
|
|
for(iVar4 = 0; iVar4 < MAX_MON_MOVES; iVar4++)
|
|
{
|
|
SavePokemonMove(r0, &moveSet[iVar4]);
|
|
}
|
|
}
|
|
|
|
void RestorePokemonMoves(struct unkStruct_8094924 *r0, struct PokemonMove *moveSet)
|
|
{
|
|
s32 iVar4;
|
|
for(iVar4 = 0; iVar4 < MAX_MON_MOVES; iVar4++)
|
|
{
|
|
RestorePokemonMove(r0, &moveSet[iVar4]);
|
|
}
|
|
}
|
|
|
|
void sub_8094148(struct unkStruct_8094924 *r0, struct PokemonMove *move)
|
|
{
|
|
SaveIntegerBits(r0, &move->moveFlags, 4);
|
|
SaveIntegerBits(r0, &move->sealed, 1);
|
|
SaveIntegerBits(r0, &move->moveID, 9);
|
|
SaveIntegerBits(r0, &move->pp, 7);
|
|
SaveIntegerBits(r0, &move->powerBoost, 7);
|
|
}
|
|
|
|
void sub_8094184(struct unkStruct_8094924 *r0, struct unkStruct_8094184 *r1)
|
|
{
|
|
s32 r4;
|
|
|
|
for(r4 = 0; r4 < MAX_MON_MOVES; r4++)
|
|
{
|
|
sub_8094148(r0, &r1->moves[r4]);
|
|
}
|
|
SaveIntegerBits(r0, &r1->unk20, 8);
|
|
}
|
|
|
|
void sub_80941B0(struct unkStruct_8094924 *r0, struct PokemonMove *move)
|
|
{
|
|
memset(move, 0, sizeof(struct PokemonMove));
|
|
RestoreIntegerBits(r0, &move->moveFlags, 4);
|
|
RestoreIntegerBits(r0, &move->sealed, 1);
|
|
RestoreIntegerBits(r0, &move->moveID, 9);
|
|
RestoreIntegerBits(r0, &move->pp, 7);
|
|
RestoreIntegerBits(r0, &move->powerBoost, 7);
|
|
}
|
|
|
|
void sub_80941FC(struct unkStruct_8094924 *r0, struct unkStruct_8094184 *r1)
|
|
{
|
|
s32 iVar4;
|
|
for(iVar4 = 0; iVar4 < MAX_MON_MOVES; iVar4++)
|
|
{
|
|
sub_80941B0(r0, &r1->moves[iVar4]);
|
|
}
|
|
r1->unk20 = 0;
|
|
RestoreIntegerBits(r0, &r1->unk20, 8);
|
|
}
|
|
|
|
bool8 DoesMoveCharge(u16 move)
|
|
{
|
|
if(move == MOVE_SOLARBEAM)
|
|
return TRUE;
|
|
if(move == MOVE_SKY_ATTACK)
|
|
return TRUE;
|
|
if(move == MOVE_RAZOR_WIND)
|
|
return TRUE;
|
|
if(move == MOVE_FOCUS_PUNCH)
|
|
return TRUE;
|
|
if(move == MOVE_SKULL_BASH)
|
|
return TRUE;
|
|
if(move == MOVE_FLY)
|
|
return TRUE;
|
|
if(move == MOVE_BOUNCE)
|
|
return TRUE;
|
|
if(move == MOVE_DIVE)
|
|
return TRUE;
|
|
if(move == MOVE_DIG)
|
|
return TRUE;
|
|
return FALSE;
|
|
}
|