summaryrefslogtreecommitdiff
path: root/src/moves_1.c
diff options
context:
space:
mode:
authorSeth Barberee <seth.barberee@gmail.com>2021-11-02 16:37:00 -0700
committerGitHub <noreply@github.com>2021-11-02 16:37:00 -0700
commite29e61a4a1de2dff8ac4b7d0469794ba9ddf48f8 (patch)
treeaa9bf96f0d1d91f06220e670b660f5fcf829b945 /src/moves_1.c
parentf99f00b180561afeeb4b9c9918135c2db607fd52 (diff)
parent3a1db3dfac99d017b592afa4e7e3fc7325e060cc (diff)
Merge pull request #68 from SethBarberee/sese_work
Moves and some friend_area_action_menu
Diffstat (limited to 'src/moves_1.c')
-rw-r--r--src/moves_1.c100
1 files changed, 100 insertions, 0 deletions
diff --git a/src/moves_1.c b/src/moves_1.c
new file mode 100644
index 0000000..db84d41
--- /dev/null
+++ b/src/moves_1.c
@@ -0,0 +1,100 @@
+#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;
+}