diff options
-rw-r--r-- | arm9/asm/pokemon_s.s | 365 | ||||
-rw-r--r-- | arm9/src/pokemon.c | 160 | ||||
-rw-r--r-- | include/constants/moves.h | 473 | ||||
-rw-r--r-- | include/move_data.h | 1 |
4 files changed, 631 insertions, 368 deletions
diff --git a/arm9/asm/pokemon_s.s b/arm9/asm/pokemon_s.s index b0657999..472197ae 100644 --- a/arm9/asm/pokemon_s.s +++ b/arm9/asm/pokemon_s.s @@ -2,378 +2,13 @@ .include "global.inc" .include "constants/species.h" - .extern gGameLanguage .extern gGameVersion .extern sItemOdds - .extern sFriendshipModTable .extern sLegendaryMonsList .extern UNK_020F7F16 - .extern sNatureStatMods - - .section .data - - .global __local_str_poketool_personal_pms_narc -__local_str_poketool_personal_pms_narc: ; 0x02105FC8 - .asciz "poketool/personal/pms.narc" .text - .extern LoadGrowthTable - .extern GetExpByGrowthRateAndLevel - - .extern BoxMonIsShiny - - thumb_func_start ReadFromPersonalPmsNarc -ReadFromPersonalPmsNarc: ; 0x02069558 - push {r3-r4, lr} - sub sp, #0x4c - add r4, r0, #0x0 - mov r1, #0x0 - add r0, sp, #0x0 - strh r1, [r0, #0x0] - ldr r0, _020695A0 ; =SPECIES_EGG - cmp r4, r0 - blo _0206956E - bl ErrorHandling -_0206956E: - add r0, sp, #0x4 - bl FS_InitFile - ldr r1, _020695A4 ; =__local_str_poketool_personal_pms_narc - add r0, sp, #0x4 - bl FS_OpenFile - add r0, sp, #0x4 - lsl r1, r4, #0x1 - mov r2, #0x0 - bl FS_SeekFile - add r0, sp, #0x4 - add r1, sp, #0x0 - mov r2, #0x2 - bl FS_ReadFile - add r0, sp, #0x4 - bl FS_CloseFile - add r0, sp, #0x0 - ldrh r0, [r0, #0x0] - add sp, #0x4c - pop {r3-r4, pc} - nop -_020695A0: .word SPECIES_EGG -_020695A4: .word __local_str_poketool_personal_pms_narc - - thumb_func_start GetEggSpecies -GetEggSpecies: ; 0x020695A8 - push {r3, lr} - cmp r0, #SPECIES_SUDOWOODO - bgt _020695CC - cmp r0, #SPECIES_MARILL - blt _020695BA - beq _020695EC - cmp r0, #SPECIES_SUDOWOODO - beq _020695EC - b _020695E8 -_020695BA: - cmp r0, #SPECIES_MR_MIME - bgt _020695C6 - bge _020695EC - cmp r0, #SPECIES_CHANSEY - beq _020695EC - b _020695E8 -_020695C6: - cmp r0, #SPECIES_SNORLAX - beq _020695EC - b _020695E8 -_020695CC: - cmp r0, #SPECIES_MANTINE - bgt _020695D8 - bge _020695EC - cmp r0, #SPECIES_WOBBUFFET - beq _020695EC - b _020695E8 -_020695D8: - ldr r1, _020695F0 ; =SPECIES_ROSELIA - cmp r0, r1 - bgt _020695E2 - beq _020695EC - b _020695E8 -_020695E2: - add r1, #SPECIES_CHIMECHO-SPECIES_ROSELIA - cmp r0, r1 - beq _020695EC -_020695E8: - bl ReadFromPersonalPmsNarc -_020695EC: - pop {r3, pc} - nop -_020695F0: .word SPECIES_ROSELIA - - thumb_func_start InitBoxMonMoveset -InitBoxMonMoveset: ; 0x020695F4 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - mov r0, #0x0 - mov r1, #0x2c - bl AllocFromHeap - str r0, [sp, #0x0] - add r0, r5, #0x0 - bl AcquireBoxMonLock - str r0, [sp, #0x4] - add r0, r5, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetBoxMonData - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - add r0, r5, #0x0 - mov r1, #0x70 - mov r2, #0x0 - bl GetBoxMonData - add r7, r0, #0x0 - add r0, r5, #0x0 - bl CalcBoxMonLevel - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - ldr r2, [sp, #0x0] - add r0, r4, #0x0 - add r1, r7, #0x0 - bl LoadWotbl_HandleAlternateForme - ldr r0, [sp, #0x0] - ldrh r1, [r0, #0x0] - ldr r0, _02069690 ; =0x0000FFFF - cmp r1, r0 - beq _0206967C - ldr r4, [sp, #0x0] - lsl r7, r6, #0x9 -_02069648: - ldrh r1, [r4, #0x0] - mov r0, #0xfe - lsl r0, r0, #0x8 - and r0, r1 - cmp r0, r7 - bgt _0206967C - ldr r0, _02069694 ; =0x000001FF - and r0, r1 - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 - add r0, r5, #0x0 - add r1, r6, #0x0 - bl FUN_020696A8 - ldr r1, _02069690 ; =0x0000FFFF - cmp r0, r1 - bne _02069672 - add r0, r5, #0x0 - add r1, r6, #0x0 - bl FUN_02069718 -_02069672: - add r4, r4, #0x2 - ldrh r1, [r4, #0x0] - ldr r0, _02069690 ; =0x0000FFFF - cmp r1, r0 - bne _02069648 -_0206967C: - ldr r0, [sp, #0x0] - bl FreeToHeap - ldr r1, [sp, #0x4] - add r0, r5, #0x0 - bl ReleaseBoxMonLock - add sp, #0x8 - pop {r3-r7, pc} - nop -_02069690: .word 0x0000FFFF -_02069694: .word 0x000001FF - - thumb_func_start FUN_02069698 -FUN_02069698: ; 0x02069698 - push {r4, lr} - add r4, r1, #0x0 - bl FUN_020690E4 - add r1, r4, #0x0 - bl FUN_020696A8 - pop {r4, pc} - - thumb_func_start FUN_020696A8 -FUN_020696A8: ; 0x020696A8 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r1, #0x0 - ldr r1, _02069700 ; =0x0000FFFF - add r6, r0, #0x0 - str r1, [sp, #0x4] - bl AcquireBoxMonLock - mov r4, #0x0 - str r0, [sp, #0x0] - add r7, r4, #0x0 -_020696BE: - add r1, r4, #0x0 - add r0, r6, #0x0 - add r1, #0x36 - add r2, r7, #0x0 - bl GetBoxMonData - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bne _020696E0 - lsl r2, r4, #0x18 - add r0, r6, #0x0 - add r1, r5, #0x0 - lsr r2, r2, #0x18 - bl FUN_020697D4 - str r5, [sp, #0x4] - b _020696F0 -_020696E0: - cmp r0, r5 - bne _020696EA - ldr r0, _02069704 ; =0x0000FFFE - str r0, [sp, #0x4] - b _020696F0 -_020696EA: - add r4, r4, #0x1 - cmp r4, #0x4 - blt _020696BE -_020696F0: - ldr r1, [sp, #0x0] - add r0, r6, #0x0 - bl ReleaseBoxMonLock - ldr r0, [sp, #0x4] - add sp, #0x8 - pop {r3-r7, pc} - nop -_02069700: .word 0x0000FFFF -_02069704: .word 0x0000FFFE - - thumb_func_start FUN_02069708 -FUN_02069708: ; 0x02069708 - push {r4, lr} - add r4, r1, #0x0 - bl FUN_020690E4 - add r1, r4, #0x0 - bl FUN_02069718 - pop {r4, pc} - - thumb_func_start FUN_02069718 -FUN_02069718: ; 0x02069718 - push {r3-r7, lr} - sub sp, #0x20 - add r5, r0, #0x0 - str r1, [sp, #0x0] - bl AcquireBoxMonLock - str r0, [sp, #0xc] - add r0, sp, #0x18 - mov r4, #0x0 - str r0, [sp, #0x4] - add r7, sp, #0x14 - add r6, sp, #0x10 -_02069730: - add r1, r4, #0x0 - add r0, r5, #0x0 - add r1, #0x37 - mov r2, #0x0 - bl GetBoxMonData - ldr r1, [sp, #0x4] - mov r2, #0x0 - strh r0, [r1, #0x0] - add r1, r4, #0x0 - add r0, r5, #0x0 - add r1, #0x3b - bl GetBoxMonData - add r1, r4, #0x0 - strb r0, [r7, #0x0] - add r0, r5, #0x0 - add r1, #0x3f - mov r2, #0x0 - bl GetBoxMonData - strb r0, [r6, #0x0] - ldr r0, [sp, #0x4] - add r4, r4, #0x1 - add r0, r0, #0x2 - str r0, [sp, #0x4] - add r7, r7, #0x1 - add r6, r6, #0x1 - cmp r4, #0x3 - blt _02069730 - ldr r0, [sp, #0x0] - add r1, sp, #0x10 - strh r0, [r1, #0xe] - ldr r0, [sp, #0x0] - mov r1, #0x5 - bl FUN_0206AB18 - add r1, sp, #0x10 - strb r0, [r1, #0x7] - mov r4, #0x0 - add r0, sp, #0x18 - strb r4, [r1, #0x3] - str r0, [sp, #0x8] - add r7, sp, #0x14 - add r6, sp, #0x10 -_0206978A: - add r1, r4, #0x0 - ldr r2, [sp, #0x8] - add r0, r5, #0x0 - add r1, #0x36 - bl SetBoxMonData - add r1, r4, #0x0 - add r0, r5, #0x0 - add r1, #0x3a - add r2, r7, #0x0 - bl SetBoxMonData - add r1, r4, #0x0 - add r0, r5, #0x0 - add r1, #0x3e - add r2, r6, #0x0 - bl SetBoxMonData - ldr r0, [sp, #0x8] - add r4, r4, #0x1 - add r0, r0, #0x2 - str r0, [sp, #0x8] - add r7, r7, #0x1 - add r6, r6, #0x1 - cmp r4, #0x4 - blt _0206978A - ldr r1, [sp, #0xc] - add r0, r5, #0x0 - bl ReleaseBoxMonLock - add sp, #0x20 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_020697CC -FUN_020697CC: ; 0x020697CC - ldr r3, _020697D0 ; =FUN_020697D4 - bx r3 - .balign 4 -_020697D0: .word FUN_020697D4 - - thumb_func_start FUN_020697D4 -FUN_020697D4: ; 0x020697D4 - push {r0-r3} - push {r3-r5, lr} - add r4, r2, #0x0 - add r1, r4, #0x0 - add r1, #0x36 - add r2, sp, #0x14 - add r5, r0, #0x0 - bl SetBoxMonData - add r1, r4, #0x0 - add r0, r5, #0x0 - add r1, #0x3e - mov r2, #0x0 - bl GetBoxMonData - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - add r0, sp, #0x10 - ldrh r0, [r0, #0x4] - bl FUN_0206AB30 - add r1, sp, #0x0 - strb r0, [r1, #0x0] - add r4, #0x3a - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, sp, #0x0 - bl SetBoxMonData - pop {r3-r5} - pop {r3} - add sp, #0x10 - bx r3 - .balign 4 - thumb_func_start FUN_02069818 FUN_02069818: ; 0x02069818 push {r3-r7, lr} diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index f1fbcd1d..d3c4ead6 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -11,6 +11,7 @@ #include "text.h" #include "constants/abilities.h" #include "constants/items.h" +#include "constants/moves.h" #pragma thumb on @@ -25,6 +26,11 @@ u16 ModifyStatByNature(u8 nature, u16 statval, u8 statno); u8 GetGenderBySpeciesAndPersonality_PreloadedPersonal(struct BaseStats * personal, u16 species, u32 pid); u8 BoxMonIsShiny(struct BoxPokemon * boxmon); u8 CalcShininessByOtIdAndPersonality(u32 otid, u32 pid); +void InitBoxMonMoveset(struct BoxPokemon * boxmon); +u32 FUN_020696A8(struct BoxPokemon * boxmon, u16 move); +void FUN_02069718(struct BoxPokemon * boxmon, u16 move); +void FUN_020697D4(struct BoxPokemon * boxmon, u16 move, u8 slot); +void LoadWotbl_HandleAlternateForme(int species, int forme, u16 * wotbl); u32 MaskOfFlagNo(int flagno); void LoadMonPersonal(int species, struct BaseStats * personal); void LoadMonEvolutionTable(u16 species, struct Evolution * dest); @@ -35,7 +41,6 @@ void MonEncryptSegment(void * datap, u32 size, u32 key); void MonDecryptSegment(void * datap, u32 size, u32 key); u16 MonEncryptionLCRNG(u32 * seed); u16 CalcMonChecksum(void * datap, u32 size); -void InitBoxMonMoveset(struct BoxPokemon * boxmon); PokemonDataBlock * GetSubstruct(struct BoxPokemon * boxmon, u32 personality, u32 which_struct); void LoadMonBaseStats_HandleAlternateForme(u32 species, u32 forme, struct BaseStats * baseStats); @@ -2448,9 +2453,9 @@ u8 FUN_020690D4(struct BoxPokemon * boxmon) return GetBoxMonData(boxmon, MON_DATA_FORME, NULL); } -void FUN_020690E4(void) +struct BoxPokemon * FUN_020690E4(struct Pokemon * pokemon) { - + return &pokemon->box; } BOOL FUN_020690E8(struct Pokemon * pokemon) @@ -2720,3 +2725,152 @@ u16 GetMonEvolution(struct PlayerParty * party, struct Pokemon * pokemon, u32 co FreeToHeap(evoTable); return target; } + +u16 ReadFromPersonalPmsNarc(u16 species) +{ + u16 ret = SPECIES_NONE; + GF_ASSERT(species < SPECIES_EGG); + { + FSFile file; + FS_InitFile(&file); + FS_OpenFile(&file, "poketool/personal/pms.narc"); + FS_SeekFile(&file, species * sizeof(u16), FS_SEEK_SET); + FS_ReadFile(&file, &ret, sizeof(u16)); + FS_CloseFile(&file); + } + return ret; +} + +u16 GetEggSpecies(u16 species) +{ + switch (species) + { + case SPECIES_SUDOWOODO: + case SPECIES_MARILL: + case SPECIES_MR_MIME: + case SPECIES_CHANSEY: + case SPECIES_SNORLAX: + case SPECIES_MANTINE: + case SPECIES_WOBBUFFET: + case SPECIES_ROSELIA: + case SPECIES_CHIMECHO: + return species; + default: + return ReadFromPersonalPmsNarc(species); + } +} + +#define WOTBL_END 0xFFFF +#define WOTBL_MOVE_MASK 0x01FF +#define WOTBL_MOVE_SHIFT 0 +#define WOTBL_LVL_MASK 0xFE00 +#define WOTBL_LVL_SHIFT 9 +#define WOTBL_MOVE(x) (((x) & WOTBL_MOVE_MASK) >> WOTBL_MOVE_SHIFT) +#define WOTBL_LVL(x) (((x) & WOTBL_LVL_MASK) >> WOTBL_LVL_SHIFT) + +void InitBoxMonMoveset(struct BoxPokemon * boxmon) +{ + BOOL decry; + u16 * wotbl; + int i; + u16 species; + u32 forme; + u8 level; + u16 move; + wotbl = AllocFromHeap(0, 22 * sizeof(u16)); + decry = AcquireBoxMonLock(boxmon); + species = GetBoxMonData(boxmon, MON_DATA_SPECIES, NULL); + forme = GetBoxMonData(boxmon, MON_DATA_FORME, NULL); + level = CalcBoxMonLevel(boxmon); + LoadWotbl_HandleAlternateForme(species, forme, wotbl); + for (i = 0; wotbl[i] != WOTBL_END; i++) + { + if ((wotbl[i] & WOTBL_LVL_MASK) > (level << WOTBL_LVL_SHIFT)) + break; + move = WOTBL_MOVE(wotbl[i]); + if (FUN_020696A8(boxmon, move) == 0xFFFF) + FUN_02069718(boxmon, move); + } + FreeToHeap(wotbl); + ReleaseBoxMonLock(boxmon, decry); +} + +u32 FUN_02069698(struct Pokemon * pokemon, u16 move) +{ + return FUN_020696A8(FUN_020690E4(pokemon), move); +} + +u32 FUN_020696A8(struct BoxPokemon * boxmon, u16 move) +{ + u32 ret = 0xFFFF; + int i; + BOOL decry = AcquireBoxMonLock(boxmon); + u16 cur_move; + for (i = 0; i < 4; i++) + { + cur_move = GetBoxMonData(boxmon, MON_DATA_MOVE1 + i, NULL); + if (cur_move == MOVE_NONE) + { + FUN_020697D4(boxmon, move, i); + ret = move; + break; + } + if (cur_move == move) + { + ret = 0xFFFE; + break; + } + } + ReleaseBoxMonLock(boxmon, decry); + return ret; +} + +void FUN_02069708(struct Pokemon * pokemon, u16 move) +{ + FUN_02069718(FUN_020690E4(pokemon), move); +} + +void FUN_02069718(struct BoxPokemon * boxmon, u16 move) +{ + BOOL decry = AcquireBoxMonLock(boxmon); + int i; + u16 moves[4]; + u8 pp[4]; + u8 ppUp[4]; + + for (i = 0; i < 3; i++) + { + moves[i] = GetBoxMonData(boxmon, MON_DATA_MOVE1 + i + 1, NULL); + pp[i] = GetBoxMonData(boxmon, MON_DATA_MOVE1PP + i + 1, NULL); + ppUp[i] = GetBoxMonData(boxmon, MON_DATA_MOVE1PPUP + i + 1, NULL); + } + + moves[3] = move; + pp[3] = FUN_0206AB18(move, 5); + ppUp[3] = 0; + + for (i = 0; i < 4; i++) + { + SetBoxMonData(boxmon, MON_DATA_MOVE1 + i, &moves[i]); + SetBoxMonData(boxmon, MON_DATA_MOVE1PP + i, &pp[i]); + SetBoxMonData(boxmon, MON_DATA_MOVE1PPUP + i, &ppUp[i]); + } + + ReleaseBoxMonLock(boxmon, decry); +} + +void FUN_020697CC(struct Pokemon * pokemon, u16 move, u8 slot) +{ + FUN_020697D4(&pokemon->box, move, slot); +} + +void FUN_020697D4(struct BoxPokemon * boxmon, u16 move, u8 slot) +{ + u8 ppUp; + u8 pp; + + SetBoxMonData(boxmon, MON_DATA_MOVE1 + slot, &move); + ppUp = GetBoxMonData(boxmon, MON_DATA_MOVE1PPUP + slot, NULL); + pp = FUN_0206AB30(move, ppUp); + SetBoxMonData(boxmon, MON_DATA_MOVE1PP + slot, &pp); +} diff --git a/include/constants/moves.h b/include/constants/moves.h new file mode 100644 index 00000000..e25c16c9 --- /dev/null +++ b/include/constants/moves.h @@ -0,0 +1,473 @@ +#ifndef POKEDIAMOND_CONSTANTS_MOVES_H +#define POKEDIAMOND_CONSTANTS_MOVES_H + +#define MOVE_NONE 0 +#define MOVE_POUND 1 +#define MOVE_KARATE_CHOP 2 +#define MOVE_DOUBLE_SLAP 3 +#define MOVE_COMET_PUNCH 4 +#define MOVE_MEGA_PUNCH 5 +#define MOVE_PAY_DAY 6 +#define MOVE_FIRE_PUNCH 7 +#define MOVE_ICE_PUNCH 8 +#define MOVE_THUNDER_PUNCH 9 +#define MOVE_SCRATCH 10 +#define MOVE_VISE_GRIP 11 +#define MOVE_GUILLOTINE 12 +#define MOVE_RAZOR_WIND 13 +#define MOVE_SWORDS_DANCE 14 +#define MOVE_CUT 15 +#define MOVE_GUST 16 +#define MOVE_WING_ATTACK 17 +#define MOVE_WHIRLWIND 18 +#define MOVE_FLY 19 +#define MOVE_BIND 20 +#define MOVE_SLAM 21 +#define MOVE_VINE_WHIP 22 +#define MOVE_STOMP 23 +#define MOVE_DOUBLE_KICK 24 +#define MOVE_MEGA_KICK 25 +#define MOVE_JUMP_KICK 26 +#define MOVE_ROLLING_KICK 27 +#define MOVE_SAND_ATTACK 28 +#define MOVE_HEADBUTT 29 +#define MOVE_HORN_ATTACK 30 +#define MOVE_FURY_ATTACK 31 +#define MOVE_HORN_DRILL 32 +#define MOVE_TACKLE 33 +#define MOVE_BODY_SLAM 34 +#define MOVE_WRAP 35 +#define MOVE_TAKE_DOWN 36 +#define MOVE_THRASH 37 +#define MOVE_DOUBLE_EDGE 38 +#define MOVE_TAIL_WHIP 39 +#define MOVE_POISON_STING 40 +#define MOVE_TWINEEDLE 41 +#define MOVE_PIN_MISSILE 42 +#define MOVE_LEER 43 +#define MOVE_BITE 44 +#define MOVE_GROWL 45 +#define MOVE_ROAR 46 +#define MOVE_SING 47 +#define MOVE_SUPERSONIC 48 +#define MOVE_SONIC_BOOM 49 +#define MOVE_DISABLE 50 +#define MOVE_ACID 51 +#define MOVE_EMBER 52 +#define MOVE_FLAMETHROWER 53 +#define MOVE_MIST 54 +#define MOVE_WATER_GUN 55 +#define MOVE_HYDRO_PUMP 56 +#define MOVE_SURF 57 +#define MOVE_ICE_BEAM 58 +#define MOVE_BLIZZARD 59 +#define MOVE_PSYBEAM 60 +#define MOVE_BUBBLE_BEAM 61 +#define MOVE_AURORA_BEAM 62 +#define MOVE_HYPER_BEAM 63 +#define MOVE_PECK 64 +#define MOVE_DRILL_PECK 65 +#define MOVE_SUBMISSION 66 +#define MOVE_LOW_KICK 67 +#define MOVE_COUNTER 68 +#define MOVE_SEISMIC_TOSS 69 +#define MOVE_STRENGTH 70 +#define MOVE_ABSORB 71 +#define MOVE_MEGA_DRAIN 72 +#define MOVE_LEECH_SEED 73 +#define MOVE_GROWTH 74 +#define MOVE_RAZOR_LEAF 75 +#define MOVE_SOLAR_BEAM 76 +#define MOVE_POISON_POWDER 77 +#define MOVE_STUN_SPORE 78 +#define MOVE_SLEEP_POWDER 79 +#define MOVE_PETAL_DANCE 80 +#define MOVE_STRING_SHOT 81 +#define MOVE_DRAGON_RAGE 82 +#define MOVE_FIRE_SPIN 83 +#define MOVE_THUNDER_SHOCK 84 +#define MOVE_THUNDERBOLT 85 +#define MOVE_THUNDER_WAVE 86 +#define MOVE_THUNDER 87 +#define MOVE_ROCK_THROW 88 +#define MOVE_EARTHQUAKE 89 +#define MOVE_FISSURE 90 +#define MOVE_DIG 91 +#define MOVE_TOXIC 92 +#define MOVE_CONFUSION 93 +#define MOVE_PSYCHIC 94 +#define MOVE_HYPNOSIS 95 +#define MOVE_MEDITATE 96 +#define MOVE_AGILITY 97 +#define MOVE_QUICK_ATTACK 98 +#define MOVE_RAGE 99 +#define MOVE_TELEPORT 100 +#define MOVE_NIGHT_SHADE 101 +#define MOVE_MIMIC 102 +#define MOVE_SCREECH 103 +#define MOVE_DOUBLE_TEAM 104 +#define MOVE_RECOVER 105 +#define MOVE_HARDEN 106 +#define MOVE_MINIMIZE 107 +#define MOVE_SMOKESCREEN 108 +#define MOVE_CONFUSE_RAY 109 +#define MOVE_WITHDRAW 110 +#define MOVE_DEFENSE_CURL 111 +#define MOVE_BARRIER 112 +#define MOVE_LIGHT_SCREEN 113 +#define MOVE_HAZE 114 +#define MOVE_REFLECT 115 +#define MOVE_FOCUS_ENERGY 116 +#define MOVE_BIDE 117 +#define MOVE_METRONOME 118 +#define MOVE_MIRROR_MOVE 119 +#define MOVE_SELF_DESTRUCT 120 +#define MOVE_EGG_BOMB 121 +#define MOVE_LICK 122 +#define MOVE_SMOG 123 +#define MOVE_SLUDGE 124 +#define MOVE_BONE_CLUB 125 +#define MOVE_FIRE_BLAST 126 +#define MOVE_WATERFALL 127 +#define MOVE_CLAMP 128 +#define MOVE_SWIFT 129 +#define MOVE_SKULL_BASH 130 +#define MOVE_SPIKE_CANNON 131 +#define MOVE_CONSTRICT 132 +#define MOVE_AMNESIA 133 +#define MOVE_KINESIS 134 +#define MOVE_SOFT_BOILED 135 +#define MOVE_HIGH_JUMP_KICK 136 +#define MOVE_GLARE 137 +#define MOVE_DREAM_EATER 138 +#define MOVE_POISON_GAS 139 +#define MOVE_BARRAGE 140 +#define MOVE_LEECH_LIFE 141 +#define MOVE_LOVELY_KISS 142 +#define MOVE_SKY_ATTACK 143 +#define MOVE_TRANSFORM 144 +#define MOVE_BUBBLE 145 +#define MOVE_DIZZY_PUNCH 146 +#define MOVE_SPORE 147 +#define MOVE_FLASH 148 +#define MOVE_PSYWAVE 149 +#define MOVE_SPLASH 150 +#define MOVE_ACID_ARMOR 151 +#define MOVE_CRABHAMMER 152 +#define MOVE_EXPLOSION 153 +#define MOVE_FURY_SWIPES 154 +#define MOVE_BONEMERANG 155 +#define MOVE_REST 156 +#define MOVE_ROCK_SLIDE 157 +#define MOVE_HYPER_FANG 158 +#define MOVE_SHARPEN 159 +#define MOVE_CONVERSION 160 +#define MOVE_TRI_ATTACK 161 +#define MOVE_SUPER_FANG 162 +#define MOVE_SLASH 163 +#define MOVE_SUBSTITUTE 164 +#define MOVE_STRUGGLE 165 +#define MOVE_SKETCH 166 +#define MOVE_TRIPLE_KICK 167 +#define MOVE_THIEF 168 +#define MOVE_SPIDER_WEB 169 +#define MOVE_MIND_READER 170 +#define MOVE_NIGHTMARE 171 +#define MOVE_FLAME_WHEEL 172 +#define MOVE_SNORE 173 +#define MOVE_CURSE 174 +#define MOVE_FLAIL 175 +#define MOVE_CONVERSION_2 176 +#define MOVE_AEROBLAST 177 +#define MOVE_COTTON_SPORE 178 +#define MOVE_REVERSAL 179 +#define MOVE_SPITE 180 +#define MOVE_POWDER_SNOW 181 +#define MOVE_PROTECT 182 +#define MOVE_MACH_PUNCH 183 +#define MOVE_SCARY_FACE 184 +#define MOVE_FEINT_ATTACK 185 +#define MOVE_SWEET_KISS 186 +#define MOVE_BELLY_DRUM 187 +#define MOVE_SLUDGE_BOMB 188 +#define MOVE_MUD_SLAP 189 +#define MOVE_OCTAZOOKA 190 +#define MOVE_SPIKES 191 +#define MOVE_ZAP_CANNON 192 +#define MOVE_FORESIGHT 193 +#define MOVE_DESTINY_BOND 194 +#define MOVE_PERISH_SONG 195 +#define MOVE_ICY_WIND 196 +#define MOVE_DETECT 197 +#define MOVE_BONE_RUSH 198 +#define MOVE_LOCK_ON 199 +#define MOVE_OUTRAGE 200 +#define MOVE_SANDSTORM 201 +#define MOVE_GIGA_DRAIN 202 +#define MOVE_ENDURE 203 +#define MOVE_CHARM 204 +#define MOVE_ROLLOUT 205 +#define MOVE_FALSE_SWIPE 206 +#define MOVE_SWAGGER 207 +#define MOVE_MILK_DRINK 208 +#define MOVE_SPARK 209 +#define MOVE_FURY_CUTTER 210 +#define MOVE_STEEL_WING 211 +#define MOVE_MEAN_LOOK 212 +#define MOVE_ATTRACT 213 +#define MOVE_SLEEP_TALK 214 +#define MOVE_HEAL_BELL 215 +#define MOVE_RETURN 216 +#define MOVE_PRESENT 217 +#define MOVE_FRUSTRATION 218 +#define MOVE_SAFEGUARD 219 +#define MOVE_PAIN_SPLIT 220 +#define MOVE_SACRED_FIRE 221 +#define MOVE_MAGNITUDE 222 +#define MOVE_DYNAMIC_PUNCH 223 +#define MOVE_MEGAHORN 224 +#define MOVE_DRAGON_BREATH 225 +#define MOVE_BATON_PASS 226 +#define MOVE_ENCORE 227 +#define MOVE_PURSUIT 228 +#define MOVE_RAPID_SPIN 229 +#define MOVE_SWEET_SCENT 230 +#define MOVE_IRON_TAIL 231 +#define MOVE_METAL_CLAW 232 +#define MOVE_VITAL_THROW 233 +#define MOVE_MORNING_SUN 234 +#define MOVE_SYNTHESIS 235 +#define MOVE_MOONLIGHT 236 +#define MOVE_HIDDEN_POWER 237 +#define MOVE_CROSS_CHOP 238 +#define MOVE_TWISTER 239 +#define MOVE_RAIN_DANCE 240 +#define MOVE_SUNNY_DAY 241 +#define MOVE_CRUNCH 242 +#define MOVE_MIRROR_COAT 243 +#define MOVE_PSYCH_UP 244 +#define MOVE_EXTREME_SPEED 245 +#define MOVE_ANCIENT_POWER 246 +#define MOVE_SHADOW_BALL 247 +#define MOVE_FUTURE_SIGHT 248 +#define MOVE_ROCK_SMASH 249 +#define MOVE_WHIRLPOOL 250 +#define MOVE_BEAT_UP 251 +#define MOVE_FAKE_OUT 252 +#define MOVE_UPROAR 253 +#define MOVE_STOCKPILE 254 +#define MOVE_SPIT_UP 255 +#define MOVE_SWALLOW 256 +#define MOVE_HEAT_WAVE 257 +#define MOVE_HAIL 258 +#define MOVE_TORMENT 259 +#define MOVE_FLATTER 260 +#define MOVE_WILL_O_WISP 261 +#define MOVE_MEMENTO 262 +#define MOVE_FACADE 263 +#define MOVE_FOCUS_PUNCH 264 +#define MOVE_SMELLING_SALTS 265 +#define MOVE_FOLLOW_ME 266 +#define MOVE_NATURE_POWER 267 +#define MOVE_CHARGE 268 +#define MOVE_TAUNT 269 +#define MOVE_HELPING_HAND 270 +#define MOVE_TRICK 271 +#define MOVE_ROLE_PLAY 272 +#define MOVE_WISH 273 +#define MOVE_ASSIST 274 +#define MOVE_INGRAIN 275 +#define MOVE_SUPERPOWER 276 +#define MOVE_MAGIC_COAT 277 +#define MOVE_RECYCLE 278 +#define MOVE_REVENGE 279 +#define MOVE_BRICK_BREAK 280 +#define MOVE_YAWN 281 +#define MOVE_KNOCK_OFF 282 +#define MOVE_ENDEAVOR 283 +#define MOVE_ERUPTION 284 +#define MOVE_SKILL_SWAP 285 +#define MOVE_IMPRISON 286 +#define MOVE_REFRESH 287 +#define MOVE_GRUDGE 288 +#define MOVE_SNATCH 289 +#define MOVE_SECRET_POWER 290 +#define MOVE_DIVE 291 +#define MOVE_ARM_THRUST 292 +#define MOVE_CAMOUFLAGE 293 +#define MOVE_TAIL_GLOW 294 +#define MOVE_LUSTER_PURGE 295 +#define MOVE_MIST_BALL 296 +#define MOVE_FEATHER_DANCE 297 +#define MOVE_TEETER_DANCE 298 +#define MOVE_BLAZE_KICK 299 +#define MOVE_MUD_SPORT 300 +#define MOVE_ICE_BALL 301 +#define MOVE_NEEDLE_ARM 302 +#define MOVE_SLACK_OFF 303 +#define MOVE_HYPER_VOICE 304 +#define MOVE_POISON_FANG 305 +#define MOVE_CRUSH_CLAW 306 +#define MOVE_BLAST_BURN 307 +#define MOVE_HYDRO_CANNON 308 +#define MOVE_METEOR_MASH 309 +#define MOVE_ASTONISH 310 +#define MOVE_WEATHER_BALL 311 +#define MOVE_AROMATHERAPY 312 +#define MOVE_FAKE_TEARS 313 +#define MOVE_AIR_CUTTER 314 +#define MOVE_OVERHEAT 315 +#define MOVE_ODOR_SLEUTH 316 +#define MOVE_ROCK_TOMB 317 +#define MOVE_SILVER_WIND 318 +#define MOVE_METAL_SOUND 319 +#define MOVE_GRASS_WHISTLE 320 +#define MOVE_TICKLE 321 +#define MOVE_COSMIC_POWER 322 +#define MOVE_WATER_SPOUT 323 +#define MOVE_SIGNAL_BEAM 324 +#define MOVE_SHADOW_PUNCH 325 +#define MOVE_EXTRASENSORY 326 +#define MOVE_SKY_UPPERCUT 327 +#define MOVE_SAND_TOMB 328 +#define MOVE_SHEER_COLD 329 +#define MOVE_MUDDY_WATER 330 +#define MOVE_BULLET_SEED 331 +#define MOVE_AERIAL_ACE 332 +#define MOVE_ICICLE_SPEAR 333 +#define MOVE_IRON_DEFENSE 334 +#define MOVE_BLOCK 335 +#define MOVE_HOWL 336 +#define MOVE_DRAGON_CLAW 337 +#define MOVE_FRENZY_PLANT 338 +#define MOVE_BULK_UP 339 +#define MOVE_BOUNCE 340 +#define MOVE_MUD_SHOT 341 +#define MOVE_POISON_TAIL 342 +#define MOVE_COVET 343 +#define MOVE_VOLT_TACKLE 344 +#define MOVE_MAGICAL_LEAF 345 +#define MOVE_WATER_SPORT 346 +#define MOVE_CALM_MIND 347 +#define MOVE_LEAF_BLADE 348 +#define MOVE_DRAGON_DANCE 349 +#define MOVE_ROCK_BLAST 350 +#define MOVE_SHOCK_WAVE 351 +#define MOVE_WATER_PULSE 352 +#define MOVE_DOOM_DESIRE 353 +#define MOVE_PSYCHO_BOOST 354 +#define MOVE_ROOST 355 +#define MOVE_GRAVITY 356 +#define MOVE_MIRACLE_EYE 357 +#define MOVE_WAKE_UP_SLAP 358 +#define MOVE_HAMMER_ARM 359 +#define MOVE_GYRO_BALL 360 +#define MOVE_HEALING_WISH 361 +#define MOVE_BRINE 362 +#define MOVE_NATURAL_GIFT 363 +#define MOVE_FEINT 364 +#define MOVE_PLUCK 365 +#define MOVE_TAILWIND 366 +#define MOVE_ACUPRESSURE 367 +#define MOVE_METAL_BURST 368 +#define MOVE_U_TURN 369 +#define MOVE_CLOSE_COMBAT 370 +#define MOVE_PAYBACK 371 +#define MOVE_ASSURANCE 372 +#define MOVE_EMBARGO 373 +#define MOVE_FLING 374 +#define MOVE_PSYCHO_SHIFT 375 +#define MOVE_TRUMP_CARD 376 +#define MOVE_HEAL_BLOCK 377 +#define MOVE_WRING_OUT 378 +#define MOVE_POWER_TRICK 379 +#define MOVE_GASTRO_ACID 380 +#define MOVE_LUCKY_CHANT 381 +#define MOVE_ME_FIRST 382 +#define MOVE_COPYCAT 383 +#define MOVE_POWER_SWAP 384 +#define MOVE_GUARD_SWAP 385 +#define MOVE_PUNISHMENT 386 +#define MOVE_LAST_RESORT 387 +#define MOVE_WORRY_SEED 388 +#define MOVE_SUCKER_PUNCH 389 +#define MOVE_TOXIC_SPIKES 390 +#define MOVE_HEART_SWAP 391 +#define MOVE_AQUA_RING 392 +#define MOVE_MAGNET_RISE 393 +#define MOVE_FLARE_BLITZ 394 +#define MOVE_FORCE_PALM 395 +#define MOVE_AURA_SPHERE 396 +#define MOVE_ROCK_POLISH 397 +#define MOVE_POISON_JAB 398 +#define MOVE_DARK_PULSE 399 +#define MOVE_NIGHT_SLASH 400 +#define MOVE_AQUA_TAIL 401 +#define MOVE_SEED_BOMB 402 +#define MOVE_AIR_SLASH 403 +#define MOVE_X_SCISSOR 404 +#define MOVE_BUG_BUZZ 405 +#define MOVE_DRAGON_PULSE 406 +#define MOVE_DRAGON_RUSH 407 +#define MOVE_POWER_GEM 408 +#define MOVE_DRAIN_PUNCH 409 +#define MOVE_VACUUM_WAVE 410 +#define MOVE_FOCUS_BLAST 411 +#define MOVE_ENERGY_BALL 412 +#define MOVE_BRAVE_BIRD 413 +#define MOVE_EARTH_POWER 414 +#define MOVE_SWITCHEROO 415 +#define MOVE_GIGA_IMPACT 416 +#define MOVE_NASTY_PLOT 417 +#define MOVE_BULLET_PUNCH 418 +#define MOVE_AVALANCHE 419 +#define MOVE_ICE_SHARD 420 +#define MOVE_SHADOW_CLAW 421 +#define MOVE_THUNDER_FANG 422 +#define MOVE_ICE_FANG 423 +#define MOVE_FIRE_FANG 424 +#define MOVE_SHADOW_SNEAK 425 +#define MOVE_MUD_BOMB 426 +#define MOVE_PSYCHO_CUT 427 +#define MOVE_ZEN_HEADBUTT 428 +#define MOVE_MIRROR_SHOT 429 +#define MOVE_FLASH_CANNON 430 +#define MOVE_ROCK_CLIMB 431 +#define MOVE_DEFOG 432 +#define MOVE_TRICK_ROOM 433 +#define MOVE_DRACO_METEOR 434 +#define MOVE_DISCHARGE 435 +#define MOVE_LAVA_PLUME 436 +#define MOVE_LEAF_STORM 437 +#define MOVE_POWER_WHIP 438 +#define MOVE_ROCK_WRECKER 439 +#define MOVE_CROSS_POISON 440 +#define MOVE_GUNK_SHOT 441 +#define MOVE_IRON_HEAD 442 +#define MOVE_MAGNET_BOMB 443 +#define MOVE_STONE_EDGE 444 +#define MOVE_CAPTIVATE 445 +#define MOVE_STEALTH_ROCK 446 +#define MOVE_GRASS_KNOT 447 +#define MOVE_CHATTER 448 +#define MOVE_JUDGMENT 449 +#define MOVE_BUG_BITE 450 +#define MOVE_CHARGE_BEAM 451 +#define MOVE_WOOD_HAMMER 452 +#define MOVE_AQUA_JET 453 +#define MOVE_ATTACK_ORDER 454 +#define MOVE_DEFEND_ORDER 455 +#define MOVE_HEAL_ORDER 456 +#define MOVE_HEAD_SMASH 457 +#define MOVE_DOUBLE_HIT 458 +#define MOVE_ROAR_OF_TIME 459 +#define MOVE_SPACIAL_REND 460 +#define MOVE_LUNAR_DANCE 461 +#define MOVE_CRUSH_GRIP 462 +#define MOVE_MAGMA_STORM 463 +#define MOVE_DARK_VOID 464 +#define MOVE_SEED_FLARE 465 +#define MOVE_OMINOUS_WIND 466 +#define MOVE_SHADOW_FORCE 467 + +#endif //POKEDIAMOND_CONSTANTS_MOVES_H diff --git a/include/move_data.h b/include/move_data.h index 975bcf8d..8da864b0 100644 --- a/include/move_data.h +++ b/include/move_data.h @@ -2,5 +2,6 @@ #define POKEDIAMOND_MOVE_DATA_H int FUN_0206AB30(u16 move, u8 ppUp); +u32 FUN_0206AB18(u16 move, u32 attr); #endif //POKEDIAMOND_MOVE_DATA_H |