summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/Makefile2
-rw-r--r--arm9/asm/pokemon.s131
-rw-r--r--arm9/global.inc2
-rw-r--r--arm9/modules/11/asm/module_11.s4
-rw-r--r--arm9/modules/14/asm/module_14.s2
-rw-r--r--arm9/modules/16/asm/module_16.s4
-rw-r--r--include/constants/species.h520
-rw-r--r--include/pokemon.h4
8 files changed, 596 insertions, 73 deletions
diff --git a/arm9/Makefile b/arm9/Makefile
index 0b880bd3..25999e21 100644
--- a/arm9/Makefile
+++ b/arm9/Makefile
@@ -183,7 +183,7 @@ OBJDUMP := $(CROSS)objdump
OBJCOPY := $(CROSS)objcopy
# ./tools/mwccarm/2.0/base/mwasmarm.exe -proc arm5te asm/arm9_thumb.s -o arm9.o
-ASFLAGS = -proc arm5te -i ..
+ASFLAGS = -proc arm5te -i ../include -i ..
CFLAGS = -O4,p -proc arm946e -fp soft -lang c99 -Cpp_exceptions off -i ../include -ir ../include-mw -ir lib/include -interworking -DFS_IMPLEMENT -enum int -W all -D$(GAME_VERSION) -D$(GAME_LANGUAGE)
CXXFLAGS = -O4,p -proc arm946e -fp soft -lang c99 -Cpp_exceptions off -i ../include -ir ../include-mw -ir lib/include -interworking -DFS_IMPLEMENT -enum int -W all -D$(GAME_VERSION) -D$(GAME_LANGUAGE)
LDFLAGS = -nodead -w off -proc v5te -interworking -map closure,unused -symtab sort -m _start
diff --git a/arm9/asm/pokemon.s b/arm9/asm/pokemon.s
index 77d0e35c..d83d5b41 100644
--- a/arm9/asm/pokemon.s
+++ b/arm9/asm/pokemon.s
@@ -1,5 +1,6 @@
.include "asm/macros.inc"
.include "global.inc"
+ .include "constants/species.h"
.extern gGameLanguage
.extern gGameVersion
@@ -26,24 +27,24 @@ UNK_020F7ED4: ; 0x020F7ED4
.global sLegendaryMonsList
sLegendaryMonsList: ; 0x020F7EF2
- .short 0x0096 ; MEWTWO
- .short 0x0097 ; MEW
- .short 0x00FA ; LUGIA
- .short 0x00F9 ; HO-OH
- .short 0x00FB ; CELEBI
- .short 0x017E ; KYOGRE
- .short 0x017F ; GROUDON
- .short 0x0180 ; RAYQUAZA
- .short 0x0181 ; JIRACHI
- .short 0x0182 ; DEOXYS
- .short 0x01E3 ; DIALGA
- .short 0x01E4 ; PALKIA
- .short 0x01E7 ; GIRATINA
- .short 0x01E9 ; PHIONE
- .short 0x01EA ; MANAPHY
- .short 0x01EB ; DARKRAI
- .short 0x01EC ; SHAYMIN
- .short 0x01ED ; ARCEUS
+ .short SPECIES_MEWTWO
+ .short SPECIES_MEW
+ .short SPECIES_HO_OH
+ .short SPECIES_LUGIA
+ .short SPECIES_CELEBI
+ .short SPECIES_KYOGRE
+ .short SPECIES_GROUDON
+ .short SPECIES_RAYQUAZA
+ .short SPECIES_JIRACHI
+ .short SPECIES_DEOXYS
+ .short SPECIES_DIALGA
+ .short SPECIES_PALKIA
+ .short SPECIES_GIRATINA
+ .short SPECIES_PHIONE
+ .short SPECIES_MANAPHY
+ .short SPECIES_DARKRAI
+ .short SPECIES_SHAYMIN
+ .short SPECIES_ARCEUS
.global UNK_020F7F16
UNK_020F7F16: ; 0x020F7F16
@@ -1583,7 +1584,7 @@ _02067522:
_0206753A:
b _0206781A
_0206753C:
- ldr r4, _02067820 ; =0x000001EE
+ ldr r4, _02067820 ; =SPECIES_EGG
b _0206781A
_02067540:
ldrh r0, [r5, #0x0]
@@ -1597,7 +1598,7 @@ _0206754C:
lsl r0, r0, #0x1d
lsr r0, r0, #0x1f
beq _0206755A
- ldr r4, _02067820 ; =0x000001EE
+ ldr r4, _02067820 ; =SPECIES_EGG
b _0206781A
_0206755A:
ldrh r4, [r5, #0x0]
@@ -1804,7 +1805,7 @@ _0206769C:
lsl r0, r0, #0x1d
lsr r0, r0, #0x1f
beq _020676B2
- ldr r0, _02067824 ; =0x000001EF
+ ldr r0, _02067824 ; =SPECIES_MANAPHY_EGG
ldr r2, [sp, #0x8]
add r1, r4, #0x0
bl FUN_0200A99C
@@ -1833,7 +1834,7 @@ _020676D0:
lsl r0, r0, #0x1d
lsr r0, r0, #0x1f
beq _020676F4
- ldr r0, _02067824 ; =0x000001EF
+ ldr r0, _02067824 ; =SPECIES_MANAPHY_EGG
mov r1, #0x0
bl FUN_0200AA50
add r5, r0, #0x0
@@ -1981,7 +1982,7 @@ _020677D4:
b _0206781A
_020677D8:
ldrh r0, [r5, #0x0]
- ldr r1, _0206782C ; =0x000001ED
+ ldr r1, _0206782C ; =SPECIES_ARCEUS
cmp r0, r1
bne _020677FC
ldrb r1, [r5, #0xd]
@@ -2003,7 +2004,7 @@ _020677FC:
sub r2, #0xaa
lsr r1, r1, #0x1b
str r2, [sp, #0x4]
- bl GetMonBaseStat_HandleUnownOrArceus
+ bl GetMonBaseStat_HandleFormeConversion
add r4, r0, #0x0
b _0206781A
_02067810:
@@ -2016,10 +2017,10 @@ _0206781A:
add sp, #0xc
pop {r4-r7, pc}
.balign 4
-_02067820: .word 0x000001EE
-_02067824: .word 0x000001EF
+_02067820: .word SPECIES_EGG
+_02067824: .word SPECIES_MANAPHY_EGG
_02067828: .word 0x0000FFFF
-_0206782C: .word 0x000001ED
+_0206782C: .word SPECIES_ARCEUS
thumb_func_start FUN_02067830
FUN_02067830: ; 0x02067830
@@ -3970,11 +3971,11 @@ _0206864A:
pop {r4, pc}
.balign 4
- thumb_func_start GetMonBaseStat_HandleUnownOrArceus
-GetMonBaseStat_HandleUnownOrArceus: ; 0x02068654
+ thumb_func_start GetMonBaseStat_HandleFormeConversion
+GetMonBaseStat_HandleFormeConversion: ; 0x02068654
push {r3-r5, lr}
add r4, r2, #0x0
- bl ConvertUnownOrArceusSpecies
+ bl ResolveMonForme
mov r1, #0x0
bl AllocAndLoadMonPersonal
add r5, r0, #0x0
@@ -4331,7 +4332,7 @@ _02068900:
lsl r0, r0, #0x10
lsr r1, r0, #0x10
beq _020689D4
- ldr r0, _020689D8 ; =0x000001EE
+ ldr r0, _020689D8 ; =SPECIES_EGG
cmp r1, r0
beq _020689D4
add r0, r5, #0x0
@@ -4433,7 +4434,7 @@ _020689D4:
add sp, #0x8
pop {r3-r7, pc}
.balign 4
-_020689D8: .word 0x000001EE
+_020689D8: .word SPECIES_EGG
_020689DC: .word UNK_020F7ED4
thumb_func_start FUN_020689E0
@@ -4680,7 +4681,7 @@ FUN_02068B70: ; 0x02068B70
add r2, r1, #0x0
bl FUN_020672BC
add r6, r0, #0x0
- ldr r0, _02068BF8 ; =0x000001EE
+ ldr r0, _02068BF8 ; =SPECIES_EGG
cmp r4, r0
bne _02068BCA
add r0, r5, #0x0
@@ -4717,7 +4718,7 @@ _02068BD8:
add sp, #0x1c
pop {r4-r7, pc}
nop
-_02068BF8: .word 0x000001EE
+_02068BF8: .word SPECIES_EGG
_02068BFC: .word 0x000001EA
thumb_func_start FUN_02068C00
@@ -5050,7 +5051,7 @@ FUN_02068E1C: ; 0x02068E1C
add r2, r1, #0x0
bl FUN_020672BC
add r6, r0, #0x0
- ldr r0, _02068E80 ; =0x000001EE
+ ldr r0, _02068E80 ; =SPECIES_EGG
cmp r4, r0
bne _02068E62
add r0, r5, #0x0
@@ -5081,7 +5082,7 @@ _02068E70:
add sp, #0x8
pop {r3-r7, pc}
.balign 4
-_02068E80: .word 0x000001EE
+_02068E80: .word SPECIES_EGG
_02068E84: .word 0x000001EA
thumb_func_start FUN_02068E88
@@ -6037,7 +6038,7 @@ ReadFromPersonalPmsNarc: ; 0x02069558
mov r1, #0x0
add r0, sp, #0x0
strh r1, [r0, #0x0]
- ldr r0, _020695A0 ; =0x000001EE
+ ldr r0, _020695A0 ; =SPECIES_EGG
cmp r4, r0
blo _0206956E
bl ErrorHandling
@@ -6062,46 +6063,46 @@ _0206956E:
add sp, #0x4c
pop {r3-r4, pc}
nop
-_020695A0: .word 0x000001EE
+_020695A0: .word SPECIES_EGG
_020695A4: .word UNK_02105FC8
thumb_func_start GetEggSpecies
GetEggSpecies: ; 0x020695A8
push {r3, lr}
- cmp r0, #0xb9
+ cmp r0, #SPECIES_SUDOWOODO
bgt _020695CC
- cmp r0, #0xb7
+ cmp r0, #SPECIES_MARILL
blt _020695BA
beq _020695EC
- cmp r0, #0xb9
+ cmp r0, #SPECIES_SUDOWOODO
beq _020695EC
b _020695E8
_020695BA:
- cmp r0, #0x7a
+ cmp r0, #SPECIES_MR_MIME
bgt _020695C6
bge _020695EC
- cmp r0, #0x71
+ cmp r0, #SPECIES_CHANSEY
beq _020695EC
b _020695E8
_020695C6:
- cmp r0, #0x8f
+ cmp r0, #SPECIES_SNORLAX
beq _020695EC
b _020695E8
_020695CC:
- cmp r0, #0xe2
+ cmp r0, #SPECIES_MANTINE
bgt _020695D8
bge _020695EC
- cmp r0, #0xca
+ cmp r0, #SPECIES_WOBBUFFET
beq _020695EC
b _020695E8
_020695D8:
- ldr r1, _020695F0 ; =0x0000013B
+ ldr r1, _020695F0 ; =SPECIES_ROSELIA
cmp r0, r1
bgt _020695E2
beq _020695EC
b _020695E8
_020695E2:
- add r1, #0x2b
+ add r1, #SPECIES_CHIMECHO-SPECIES_ROSELIA
cmp r0, r1
beq _020695EC
_020695E8:
@@ -6109,7 +6110,7 @@ _020695E8:
_020695EC:
pop {r3, pc}
nop
-_020695F0: .word 0x0000013B
+_020695F0: .word SPECIES_ROSELIA
thumb_func_start FUN_020695F4
FUN_020695F4: ; 0x020695F4
@@ -7284,7 +7285,7 @@ FUN_02069ECC: ; 0x02069ECC
mov r1, #0x6
mov r2, #0x0
bl FUN_020672BC
- ldr r1, _02069F20 ; =0x000001ED
+ ldr r1, _02069F20 ; =SPECIES_ARCEUS
cmp r4, r1
bne _02069F1C
cmp r6, #0x79
@@ -7306,7 +7307,7 @@ _02069F1C:
add sp, #0x4
pop {r3-r6, pc}
.balign 4
-_02069F20: .word 0x000001ED
+_02069F20: .word SPECIES_ARCEUS
thumb_func_start GetArceusTypeByPlate
GetArceusTypeByPlate: ; 0x02069F24
@@ -7393,7 +7394,7 @@ _02069F96:
FUN_02069F9C: ; 0x02069F9C
push {r4, lr}
add r4, r2, #0x0
- bl ConvertUnownOrArceusSpecies
+ bl ResolveMonForme
add r2, r0, #0x0
add r0, r4, #0x0
mov r1, #0x21 ; NARC_POKETOOL_PERSONAL_WOTBL
@@ -7540,13 +7541,13 @@ FUN_0206A094: ; 0x0206A094
ldr r1, [sp, #0x0]
add r0, r6, #0x0
mov r2, #0x10
- bl GetMonBaseStat_HandleUnownOrArceus
+ bl GetMonBaseStat_HandleFormeConversion
add r1, sp, #0x4
strh r0, [r1, #0x2]
ldr r1, [sp, #0x0]
add r0, r6, #0x0
mov r2, #0x11
- bl GetMonBaseStat_HandleUnownOrArceus
+ bl GetMonBaseStat_HandleFormeConversion
add r1, sp, #0x4
strh r0, [r1, #0x0]
ldrh r2, [r1, #0x2]
@@ -7620,7 +7621,7 @@ FUN_0206A144: ; 0x0206A144
thumb_func_start FUN_0206A16C
FUN_0206A16C: ; 0x0206A16C
push {r4, lr}
- ldr r3, _0206A1C0 ; =0x000001EE
+ ldr r3, _0206A1C0 ; =SPECIES_EGG
cmp r0, r3
bne _0206A178
mov r0, #0x0
@@ -7658,7 +7659,7 @@ _0206A1A6:
lsl r4, r2
mov r2, #0x20
_0206A1B0:
- bl GetMonBaseStat_HandleUnownOrArceus
+ bl GetMonBaseStat_HandleFormeConversion
tst r0, r4
beq _0206A1BC
mov r0, #0x1
@@ -7667,7 +7668,7 @@ _0206A1BC:
mov r0, #0x0
pop {r4, pc}
.balign 4
-_0206A1C0: .word 0x000001EE
+_0206A1C0: .word SPECIES_EGG
thumb_func_start FUN_0206A1C4
FUN_0206A1C4: ; 0x0206A1C4
@@ -7884,7 +7885,7 @@ _0206A37C: .word ReadWholeNarcMemberByIdPair
LoadMonBaseStats_HandleUnownOrArceus: ; 0x0206A380
push {r4, lr}
add r4, r2, #0x0
- bl ConvertUnownOrArceusSpecies
+ bl ResolveMonForme
add r2, r0, #0x0
add r0, r4, #0x0
mov r1, #0x2 ; NARC_POKETOOL_PERSONAL_PERSONAL
@@ -8755,13 +8756,13 @@ _0206A8F8:
add r0, r1, #0x0
pop {r3, pc}
- thumb_func_start ConvertUnownOrArceusSpecies
-ConvertUnownOrArceusSpecies: ; 0x0206A8FC
- ldr r3, _0206A928 ; =0x00000182
+ thumb_func_start ResolveMonForme
+ResolveMonForme: ; 0x0206A8FC
+ ldr r3, _0206A928 ; =SPECIES_DEOXYS
cmp r0, r3
beq _0206A90C
add r2, r3, #0x0
- add r2, #0x1b
+ add r2, #SPECIES_WORMADAM-SPECIES_DEOXYS
cmp r0, r2
beq _0206A91A
bx lr
@@ -8770,7 +8771,7 @@ _0206A90C:
beq _0206A926
cmp r1, #0x3
bgt _0206A926
- add r3, #0x6d
+ add r3, #SPECIES_DEOXYS_ATK-SPECIES_DEOXYS-1
add r0, r1, r3
bx lr
_0206A91A:
@@ -8778,12 +8779,12 @@ _0206A91A:
beq _0206A926
cmp r1, #0x2
bgt _0206A926
- add r3, #0x70
+ add r3, #SPECIES_WORMADAM_SANDY-SPECIES_DEOXYS-1
add r0, r1, r3
_0206A926:
bx lr
.balign 4
-_0206A928: .word 0x00000182
+_0206A928: .word SPECIES_DEOXYS
thumb_func_start MaskOfFlagNo
MaskOfFlagNo: ; 0x0206A92C
diff --git a/arm9/global.inc b/arm9/global.inc
index 7897bc2c..90558421 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -4727,7 +4727,7 @@
.extern AllocAndLoadMonPersonal
.extern GetPersonalAttr
.extern FreeMonPersonal
-.extern GetMonBaseStat_HandleUnownOrArceus
+.extern GetMonBaseStat_HandleFormeConversion
.extern GetMonBaseStat
.extern FUN_02068698
.extern FUN_020686F8
diff --git a/arm9/modules/11/asm/module_11.s b/arm9/modules/11/asm/module_11.s
index 7be295ce..c1216663 100644
--- a/arm9/modules/11/asm/module_11.s
+++ b/arm9/modules/11/asm/module_11.s
@@ -20687,7 +20687,7 @@ _02237900:
ldr r0, [sp, #4]
add r1, r6, #0
mov r2, #1
- bl GetMonBaseStat_HandleUnownOrArceus
+ bl GetMonBaseStat_HandleFormeConversion
ldr r1, _02237AB0 ; =0x00002144
ldr r2, _02237AB4 ; =0x00003044
str r0, [r5, r1]
@@ -20719,7 +20719,7 @@ _02237900:
mov r2, #2
lsl r1, r1, #0x1b
lsr r1, r1, #0x1b
- bl GetMonBaseStat_HandleUnownOrArceus
+ bl GetMonBaseStat_HandleFormeConversion
add r1, r0, #0
ldr r0, _02237AB0 ; =0x00002144
ldr r0, [r5, r0]
diff --git a/arm9/modules/14/asm/module_14.s b/arm9/modules/14/asm/module_14.s
index 79050eac..8f67a51e 100644
--- a/arm9/modules/14/asm/module_14.s
+++ b/arm9/modules/14/asm/module_14.s
@@ -21843,7 +21843,7 @@ _021E204A:
lsr r1, r0, #0x10
add r0, r7, #0
mov r2, #0x1b
- bl GetMonBaseStat_HandleUnownOrArceus
+ bl GetMonBaseStat_HandleFormeConversion
lsl r0, r0, #0x18
lsr r1, r0, #0x18
b _021E20AA
diff --git a/arm9/modules/16/asm/module_16.s b/arm9/modules/16/asm/module_16.s
index 34107e9c..e5ec6c9f 100644
--- a/arm9/modules/16/asm/module_16.s
+++ b/arm9/modules/16/asm/module_16.s
@@ -30379,12 +30379,12 @@ MOD16_021E5554: ; 0x021E5554
ldr r1, [sp, #0x30]
add r0, r7, #0
mov r2, #6
- bl GetMonBaseStat_HandleUnownOrArceus
+ bl GetMonBaseStat_HandleFormeConversion
add r6, r0, #0
ldr r1, [sp, #0x30]
add r0, r7, #0
mov r2, #7
- bl GetMonBaseStat_HandleUnownOrArceus
+ bl GetMonBaseStat_HandleFormeConversion
add r7, r0, #0
add r0, r6, #0
bl MOD16_021E563C
diff --git a/include/constants/species.h b/include/constants/species.h
new file mode 100644
index 00000000..fcb9b6b7
--- /dev/null
+++ b/include/constants/species.h
@@ -0,0 +1,520 @@
+#ifndef GUARD_CONSTANTS_SPECIES_H
+#define GUARD_CONSTANTS_SPECIES_H
+
+#define SPECIES_NONE 0
+#define SPECIES_BULBASAUR 1
+#define SPECIES_IVYSAUR 2
+#define SPECIES_VENUSAUR 3
+#define SPECIES_CHARMANDER 4
+#define SPECIES_CHARMELEON 5
+#define SPECIES_CHARIZARD 6
+#define SPECIES_SQUIRTLE 7
+#define SPECIES_WARTORTLE 8
+#define SPECIES_BLASTOISE 9
+#define SPECIES_CATERPIE 10
+#define SPECIES_METAPOD 11
+#define SPECIES_BUTTERFREE 12
+#define SPECIES_WEEDLE 13
+#define SPECIES_KAKUNA 14
+#define SPECIES_BEEDRILL 15
+#define SPECIES_PIDGEY 16
+#define SPECIES_PIDGEOTTO 17
+#define SPECIES_PIDGEOT 18
+#define SPECIES_RATTATA 19
+#define SPECIES_RATICATE 20
+#define SPECIES_SPEAROW 21
+#define SPECIES_FEAROW 22
+#define SPECIES_EKANS 23
+#define SPECIES_ARBOK 24
+#define SPECIES_PIKACHU 25
+#define SPECIES_RAICHU 26
+#define SPECIES_SANDSHREW 27
+#define SPECIES_SANDSLASH 28
+#define SPECIES_NIDORAN_F 29
+#define SPECIES_NIDORINA 30
+#define SPECIES_NIDOQUEEN 31
+#define SPECIES_NIDORAN_M 32
+#define SPECIES_NIDORINO 33
+#define SPECIES_NIDOKING 34
+#define SPECIES_CLEFAIRY 35
+#define SPECIES_CLEFABLE 36
+#define SPECIES_VULPIX 37
+#define SPECIES_NINETALES 38
+#define SPECIES_JIGGLYPUFF 39
+#define SPECIES_WIGGLYTUFF 40
+#define SPECIES_ZUBAT 41
+#define SPECIES_GOLBAT 42
+#define SPECIES_ODDISH 43
+#define SPECIES_GLOOM 44
+#define SPECIES_VILEPLUME 45
+#define SPECIES_PARAS 46
+#define SPECIES_PARASECT 47
+#define SPECIES_VENONAT 48
+#define SPECIES_VENOMOTH 49
+#define SPECIES_DIGLETT 50
+#define SPECIES_DUGTRIO 51
+#define SPECIES_MEOWTH 52
+#define SPECIES_PERSIAN 53
+#define SPECIES_PSYDUCK 54
+#define SPECIES_GOLDUCK 55
+#define SPECIES_MANKEY 56
+#define SPECIES_PRIMEAPE 57
+#define SPECIES_GROWLITHE 58
+#define SPECIES_ARCANINE 59
+#define SPECIES_POLIWAG 60
+#define SPECIES_POLIWHIRL 61
+#define SPECIES_POLIWRATH 62
+#define SPECIES_ABRA 63
+#define SPECIES_KADABRA 64
+#define SPECIES_ALAKAZAM 65
+#define SPECIES_MACHOP 66
+#define SPECIES_MACHOKE 67
+#define SPECIES_MACHAMP 68
+#define SPECIES_BELLSPROUT 69
+#define SPECIES_WEEPINBELL 70
+#define SPECIES_VICTREEBEL 71
+#define SPECIES_TENTACOOL 72
+#define SPECIES_TENTACRUEL 73
+#define SPECIES_GEODUDE 74
+#define SPECIES_GRAVELER 75
+#define SPECIES_GOLEM 76
+#define SPECIES_PONYTA 77
+#define SPECIES_RAPIDASH 78
+#define SPECIES_SLOWPOKE 79
+#define SPECIES_SLOWBRO 80
+#define SPECIES_MAGNEMITE 81
+#define SPECIES_MAGNETON 82
+#define SPECIES_FARFETCHD 83
+#define SPECIES_DODUO 84
+#define SPECIES_DODRIO 85
+#define SPECIES_SEEL 86
+#define SPECIES_DEWGONG 87
+#define SPECIES_GRIMER 88
+#define SPECIES_MUK 89
+#define SPECIES_SHELLDER 90
+#define SPECIES_CLOYSTER 91
+#define SPECIES_GASTLY 92
+#define SPECIES_HAUNTER 93
+#define SPECIES_GENGAR 94
+#define SPECIES_ONIX 95
+#define SPECIES_DROWZEE 96
+#define SPECIES_HYPNO 97
+#define SPECIES_KRABBY 98
+#define SPECIES_KINGLER 99
+#define SPECIES_VOLTORB 100
+#define SPECIES_ELECTRODE 101
+#define SPECIES_EXEGGCUTE 102
+#define SPECIES_EXEGGUTOR 103
+#define SPECIES_CUBONE 104
+#define SPECIES_MAROWAK 105
+#define SPECIES_HITMONLEE 106
+#define SPECIES_HITMONCHAN 107
+#define SPECIES_LICKITUNG 108
+#define SPECIES_KOFFING 109
+#define SPECIES_WEEZING 110
+#define SPECIES_RHYHORN 111
+#define SPECIES_RHYDON 112
+#define SPECIES_CHANSEY 113
+#define SPECIES_TANGELA 114
+#define SPECIES_KANGASKHAN 115
+#define SPECIES_HORSEA 116
+#define SPECIES_SEADRA 117
+#define SPECIES_GOLDEEN 118
+#define SPECIES_SEAKING 119
+#define SPECIES_STARYU 120
+#define SPECIES_STARMIE 121
+#define SPECIES_MR_MIME 122
+#define SPECIES_SCYTHER 123
+#define SPECIES_JYNX 124
+#define SPECIES_ELECTABUZZ 125
+#define SPECIES_MAGMAR 126
+#define SPECIES_PINSIR 127
+#define SPECIES_TAUROS 128
+#define SPECIES_MAGIKARP 129
+#define SPECIES_GYARADOS 130
+#define SPECIES_LAPRAS 131
+#define SPECIES_DITTO 132
+#define SPECIES_EEVEE 133
+#define SPECIES_VAPOREON 134
+#define SPECIES_JOLTEON 135
+#define SPECIES_FLAREON 136
+#define SPECIES_PORYGON 137
+#define SPECIES_OMANYTE 138
+#define SPECIES_OMASTAR 139
+#define SPECIES_KABUTO 140
+#define SPECIES_KABUTOPS 141
+#define SPECIES_AERODACTYL 142
+#define SPECIES_SNORLAX 143
+#define SPECIES_ARTICUNO 144
+#define SPECIES_ZAPDOS 145
+#define SPECIES_MOLTRES 146
+#define SPECIES_DRATINI 147
+#define SPECIES_DRAGONAIR 148
+#define SPECIES_DRAGONITE 149
+#define SPECIES_MEWTWO 150
+#define SPECIES_MEW 151
+
+#define KANTO_DEX_COUNT SPECIES_MEW
+
+#define SPECIES_CHIKORITA 152
+#define SPECIES_BAYLEEF 153
+#define SPECIES_MEGANIUM 154
+#define SPECIES_CYNDAQUIL 155
+#define SPECIES_QUILAVA 156
+#define SPECIES_TYPHLOSION 157
+#define SPECIES_TOTODILE 158
+#define SPECIES_CROCONAW 159
+#define SPECIES_FERALIGATR 160
+#define SPECIES_SENTRET 161
+#define SPECIES_FURRET 162
+#define SPECIES_HOOTHOOT 163
+#define SPECIES_NOCTOWL 164
+#define SPECIES_LEDYBA 165
+#define SPECIES_LEDIAN 166
+#define SPECIES_SPINARAK 167
+#define SPECIES_ARIADOS 168
+#define SPECIES_CROBAT 169
+#define SPECIES_CHINCHOU 170
+#define SPECIES_LANTURN 171
+#define SPECIES_PICHU 172
+#define SPECIES_CLEFFA 173
+#define SPECIES_IGGLYBUFF 174
+#define SPECIES_TOGEPI 175
+#define SPECIES_TOGETIC 176
+#define SPECIES_NATU 177
+#define SPECIES_XATU 178
+#define SPECIES_MAREEP 179
+#define SPECIES_FLAAFFY 180
+#define SPECIES_AMPHAROS 181
+#define SPECIES_BELLOSSOM 182
+#define SPECIES_MARILL 183
+#define SPECIES_AZUMARILL 184
+#define SPECIES_SUDOWOODO 185
+#define SPECIES_POLITOED 186
+#define SPECIES_HOPPIP 187
+#define SPECIES_SKIPLOOM 188
+#define SPECIES_JUMPLUFF 189
+#define SPECIES_AIPOM 190
+#define SPECIES_SUNKERN 191
+#define SPECIES_SUNFLORA 192
+#define SPECIES_YANMA 193
+#define SPECIES_WOOPER 194
+#define SPECIES_QUAGSIRE 195
+#define SPECIES_ESPEON 196
+#define SPECIES_UMBREON 197
+#define SPECIES_MURKROW 198
+#define SPECIES_SLOWKING 199
+#define SPECIES_MISDREAVUS 200
+#define SPECIES_UNOWN 201
+#define SPECIES_WOBBUFFET 202
+#define SPECIES_GIRAFARIG 203
+#define SPECIES_PINECO 204
+#define SPECIES_FORRETRESS 205
+#define SPECIES_DUNSPARCE 206
+#define SPECIES_GLIGAR 207
+#define SPECIES_STEELIX 208
+#define SPECIES_SNUBBULL 209
+#define SPECIES_GRANBULL 210
+#define SPECIES_QWILFISH 211
+#define SPECIES_SCIZOR 212
+#define SPECIES_SHUCKLE 213
+#define SPECIES_HERACROSS 214
+#define SPECIES_SNEASEL 215
+#define SPECIES_TEDDIURSA 216
+#define SPECIES_URSARING 217
+#define SPECIES_SLUGMA 218
+#define SPECIES_MAGCARGO 219
+#define SPECIES_SWINUB 220
+#define SPECIES_PILOSWINE 221
+#define SPECIES_CORSOLA 222
+#define SPECIES_REMORAID 223
+#define SPECIES_OCTILLERY 224
+#define SPECIES_DELIBIRD 225
+#define SPECIES_MANTINE 226
+#define SPECIES_SKARMORY 227
+#define SPECIES_HOUNDOUR 228
+#define SPECIES_HOUNDOOM 229
+#define SPECIES_KINGDRA 230
+#define SPECIES_PHANPY 231
+#define SPECIES_DONPHAN 232
+#define SPECIES_PORYGON2 233
+#define SPECIES_STANTLER 234
+#define SPECIES_SMEARGLE 235
+#define SPECIES_TYROGUE 236
+#define SPECIES_HITMONTOP 237
+#define SPECIES_SMOOCHUM 238
+#define SPECIES_ELEKID 239
+#define SPECIES_MAGBY 240
+#define SPECIES_MILTANK 241
+#define SPECIES_BLISSEY 242
+#define SPECIES_RAIKOU 243
+#define SPECIES_ENTEI 244
+#define SPECIES_SUICUNE 245
+#define SPECIES_LARVITAR 246
+#define SPECIES_PUPITAR 247
+#define SPECIES_TYRANITAR 248
+#define SPECIES_LUGIA 249
+#define SPECIES_HO_OH 250
+#define SPECIES_CELEBI 251
+
+#define JOHTO_DEX_COUNT SPECIES_CELEBI
+
+#define SPECIES_TREECKO 252
+#define SPECIES_GROVYLE 253
+#define SPECIES_SCEPTILE 254
+#define SPECIES_TORCHIC 255
+#define SPECIES_COMBUSKEN 256
+#define SPECIES_BLAZIKEN 257
+#define SPECIES_MUDKIP 258
+#define SPECIES_MARSHTOMP 259
+#define SPECIES_SWAMPERT 260
+#define SPECIES_POOCHYENA 261
+#define SPECIES_MIGHTYENA 262
+#define SPECIES_ZIGZAGOON 263
+#define SPECIES_LINOONE 264
+#define SPECIES_WURMPLE 265
+#define SPECIES_SILCOON 266
+#define SPECIES_BEAUTIFLY 267
+#define SPECIES_CASCOON 268
+#define SPECIES_DUSTOX 269
+#define SPECIES_LOTAD 270
+#define SPECIES_LOMBRE 271
+#define SPECIES_LUDICOLO 272
+#define SPECIES_SEEDOT 273
+#define SPECIES_NUZLEAF 274
+#define SPECIES_SHIFTRY 275
+#define SPECIES_TAILLOW 276
+#define SPECIES_SWELLOW 277
+#define SPECIES_WINGULL 278
+#define SPECIES_PELIPPER 279
+#define SPECIES_RALTS 280
+#define SPECIES_KIRLIA 281
+#define SPECIES_GARDEVOIR 282
+#define SPECIES_SURSKIT 283
+#define SPECIES_MASQUERAIN 284
+#define SPECIES_SHROOMISH 285
+#define SPECIES_BRELOOM 286
+#define SPECIES_SLAKOTH 287
+#define SPECIES_VIGOROTH 288
+#define SPECIES_SLAKING 289
+#define SPECIES_NINCADA 290
+#define SPECIES_NINJASK 291
+#define SPECIES_SHEDINJA 292
+#define SPECIES_WHISMUR 293
+#define SPECIES_LOUDRED 294
+#define SPECIES_EXPLOUD 295
+#define SPECIES_MAKUHITA 296
+#define SPECIES_HARIYAMA 297
+#define SPECIES_AZURILL 298
+#define SPECIES_NOSEPASS 299
+#define SPECIES_SKITTY 300
+#define SPECIES_DELCATTY 301
+#define SPECIES_SABLEYE 302
+#define SPECIES_MAWILE 303
+#define SPECIES_ARON 304
+#define SPECIES_LAIRON 305
+#define SPECIES_AGGRON 306
+#define SPECIES_MEDITITE 307
+#define SPECIES_MEDICHAM 308
+#define SPECIES_ELECTRIKE 309
+#define SPECIES_MANECTRIC 310
+#define SPECIES_PLUSLE 311
+#define SPECIES_MINUN 312
+#define SPECIES_VOLBEAT 313
+#define SPECIES_ILLUMISE 314
+#define SPECIES_ROSELIA 315
+#define SPECIES_GULPIN 316
+#define SPECIES_SWALOT 317
+#define SPECIES_CARVANHA 318
+#define SPECIES_SHARPEDO 319
+#define SPECIES_WAILMER 320
+#define SPECIES_WAILORD 321
+#define SPECIES_NUMEL 322
+#define SPECIES_CAMERUPT 323
+#define SPECIES_TORKOAL 324
+#define SPECIES_SPOINK 325
+#define SPECIES_GRUMPIG 326
+#define SPECIES_SPINDA 327
+#define SPECIES_TRAPINCH 328
+#define SPECIES_VIBRAVA 329
+#define SPECIES_FLYGON 330
+#define SPECIES_CACNEA 331
+#define SPECIES_CACTURNE 332
+#define SPECIES_SWABLU 333
+#define SPECIES_ALTARIA 334
+#define SPECIES_ZANGOOSE 335
+#define SPECIES_SEVIPER 336
+#define SPECIES_LUNATONE 337
+#define SPECIES_SOLROCK 338
+#define SPECIES_BARBOACH 339
+#define SPECIES_WHISCASH 340
+#define SPECIES_CORPHISH 341
+#define SPECIES_CRAWDAUNT 342
+#define SPECIES_BALTOY 343
+#define SPECIES_CLAYDOL 344
+#define SPECIES_LILEEP 345
+#define SPECIES_CRADILY 346
+#define SPECIES_ANORITH 347
+#define SPECIES_ARMALDO 348
+#define SPECIES_FEEBAS 349
+#define SPECIES_MILOTIC 350
+#define SPECIES_CASTFORM 351
+#define SPECIES_KECLEON 352
+#define SPECIES_SHUPPET 353
+#define SPECIES_BANETTE 354
+#define SPECIES_DUSKULL 355
+#define SPECIES_DUSCLOPS 356
+#define SPECIES_TROPIUS 357
+#define SPECIES_CHIMECHO 358
+#define SPECIES_ABSOL 359
+#define SPECIES_WYNAUT 360
+#define SPECIES_SNORUNT 361
+#define SPECIES_GLALIE 362
+#define SPECIES_SPHEAL 363
+#define SPECIES_SEALEO 364
+#define SPECIES_WALREIN 365
+#define SPECIES_CLAMPERL 366
+#define SPECIES_HUNTAIL 367
+#define SPECIES_GOREBYSS 368
+#define SPECIES_RELICANTH 369
+#define SPECIES_LUVDISC 370
+#define SPECIES_BAGON 371
+#define SPECIES_SHELGON 372
+#define SPECIES_SALAMENCE 373
+#define SPECIES_BELDUM 374
+#define SPECIES_METANG 375
+#define SPECIES_METAGROSS 376
+#define SPECIES_REGIROCK 377
+#define SPECIES_REGICE 378
+#define SPECIES_REGISTEEL 379
+#define SPECIES_LATIAS 380
+#define SPECIES_LATIOS 381
+#define SPECIES_KYOGRE 382
+#define SPECIES_GROUDON 383
+#define SPECIES_RAYQUAZA 384
+#define SPECIES_JIRACHI 385
+#define SPECIES_DEOXYS 386
+
+#define HOENN_DEX_COUNT SPECIES_DEOXYS
+
+#define SPECIES_TURTWIG 387
+#define SPECIES_GROTLE 388
+#define SPECIES_TORTERRA 389
+#define SPECIES_CHIMCHAR 390
+#define SPECIES_MONFERNO 391
+#define SPECIES_INFERNAPE 392
+#define SPECIES_PIPLUP 393
+#define SPECIES_PRINPLUP 394
+#define SPECIES_EMPOLEON 395
+#define SPECIES_STARLY 396
+#define SPECIES_STARAVIA 397
+#define SPECIES_STARAPTOR 398
+#define SPECIES_BIDOOF 399
+#define SPECIES_BIBAREL 400
+#define SPECIES_KRICKETOT 401
+#define SPECIES_KRICKETUNE 402
+#define SPECIES_SHINX 403
+#define SPECIES_LUXIO 404
+#define SPECIES_LUXRAY 405
+#define SPECIES_BUDEW 406
+#define SPECIES_ROSERADE 407
+#define SPECIES_CRANIDOS 408
+#define SPECIES_RAMPARDOS 409
+#define SPECIES_SHIELDON 410
+#define SPECIES_BASTIODON 411
+#define SPECIES_BURMY 412
+#define SPECIES_WORMADAM 413
+#define SPECIES_MOTHIM 414
+#define SPECIES_COMBEE 415
+#define SPECIES_VESPIQUEN 416
+#define SPECIES_PACHIRISU 417
+#define SPECIES_BUIZEL 418
+#define SPECIES_FLOATZEL 419
+#define SPECIES_CHERUBI 420
+#define SPECIES_CHERRIM 421
+#define SPECIES_SHELLOS 422
+#define SPECIES_GASTRODON 423
+#define SPECIES_AMBIPOM 424
+#define SPECIES_DRIFLOON 425
+#define SPECIES_DRIFBLIM 426
+#define SPECIES_BUNEARY 427
+#define SPECIES_LOPUNNY 428
+#define SPECIES_MISMAGIUS 429
+#define SPECIES_HONCHKROW 430
+#define SPECIES_GLAMEOW 431
+#define SPECIES_PURUGLY 432
+#define SPECIES_CHINGLING 433
+#define SPECIES_STUNKY 434
+#define SPECIES_SKUNTANK 435
+#define SPECIES_BRONZOR 436
+#define SPECIES_BRONZONG 437
+#define SPECIES_BONSLY 438
+#define SPECIES_MIME_JR 439
+#define SPECIES_HAPPINY 440
+#define SPECIES_CHATOT 441
+#define SPECIES_SPIRITOMB 442
+#define SPECIES_GIBLE 443
+#define SPECIES_GABITE 444
+#define SPECIES_GARCHOMP 445
+#define SPECIES_MUNCHLAX 446
+#define SPECIES_RIOLU 447
+#define SPECIES_LUCARIO 448
+#define SPECIES_HIPPOPOTAS 449
+#define SPECIES_HIPPOWDON 450
+#define SPECIES_SKORUPI 451
+#define SPECIES_DRAPION 452
+#define SPECIES_CROAGUNK 453
+#define SPECIES_TOXICROAK 454
+#define SPECIES_CARNIVINE 455
+#define SPECIES_FINNEON 456
+#define SPECIES_LUMINEON 457
+#define SPECIES_MANTYKE 458
+#define SPECIES_SNOVER 459
+#define SPECIES_ABOMASNOW 460
+#define SPECIES_WEAVILE 461
+#define SPECIES_MAGNEZONE 462
+#define SPECIES_LICKILICKY 463
+#define SPECIES_RHYPERIOR 464
+#define SPECIES_TANGROWTH 465
+#define SPECIES_ELECTIVIRE 466
+#define SPECIES_MAGMORTAR 467
+#define SPECIES_TOGEKISS 468
+#define SPECIES_YANMEGA 469
+#define SPECIES_LEAFEON 470
+#define SPECIES_GLACEON 471
+#define SPECIES_GLISCOR 472
+#define SPECIES_MAMOSWINE 473
+#define SPECIES_PORYGON_Z 474
+#define SPECIES_GALLADE 475
+#define SPECIES_PROBOPASS 476
+#define SPECIES_DUSKNOIR 477
+#define SPECIES_FROSLASS 478
+#define SPECIES_ROTOM 479
+#define SPECIES_UXIE 480
+#define SPECIES_MESPRIT 481
+#define SPECIES_AZELF 482
+#define SPECIES_DIALGA 483
+#define SPECIES_PALKIA 484
+#define SPECIES_HEATRAN 485
+#define SPECIES_REGIGIGAS 486
+#define SPECIES_GIRATINA 487
+#define SPECIES_CRESSELIA 488
+#define SPECIES_PHIONE 489
+#define SPECIES_MANAPHY 490
+#define SPECIES_DARKRAI 491
+#define SPECIES_SHAYMIN 492
+#define SPECIES_ARCEUS 493
+
+#define NATIONAL_DEX_COUNT SPECIES_ARCEUS
+
+#define SPECIES_EGG 494
+#define SPECIES_MANAPHY_EGG 495
+#define SPECIES_DEOXYS_ATK 496
+#define SPECIES_DEOXYS_DEF 497
+#define SPECIES_DEOXYS_SPD 498
+#define SPECIES_WORMADAM_SANDY 499
+#define SPECIES_WORMADAM_TRASH 500
+
+#define NUM_SPECIES SPECIES_WORMADAM_TRASH
+
+#endif //GUARD_CONSTANTS_SPECIES_H
diff --git a/include/pokemon.h b/include/pokemon.h
index f4d72647..a0e70dc1 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -5,6 +5,8 @@
// Enums
+#include "constants/species.h"
+
typedef enum {
EGG = 0,
EVENT = 0,
@@ -196,7 +198,7 @@ struct PokemonData {
PokemonDataBlock block4;
};
-int GetMonBaseStat_HandleUnownOrArceus(int species, int form, int stat_id);
+int GetMonBaseStat_HandleFormeConversion(int species, int form, int stat_id);
int GetMonBaseStat(int species, int stat_id);
int GetMonExpByLevel(int species, int level);
void LoadGrowthTable(int species, int * table);