mirror of
https://github.com/Skeli789/Dynamic-Pokemon-Expansion.git
synced 2026-03-21 17:24:13 -05:00
Initial commit
This commit is contained in:
commit
6906a69bd9
2
.gitattributes
vendored
Normal file
2
.gitattributes
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
# Auto detect text files and perform LF normalization
|
||||
* text=auto
|
||||
11
.gitignore
vendored
Normal file
11
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
a.exe
|
||||
*.gba
|
||||
build/*
|
||||
extracted/*
|
||||
*.sgm
|
||||
*.dmp
|
||||
*.bak
|
||||
*.lnk
|
||||
*.sav
|
||||
offsets.ini
|
||||
generatedrepoints
|
||||
17
BPRE.ld
Normal file
17
BPRE.ld
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
malloc_ = 0x08002B9C|1;
|
||||
free_ = 0x08002BC4|1;
|
||||
__divsi3 = 0x081E4018|1;
|
||||
__modsi3 = 0x081E40F4|1;
|
||||
__udivsi3 = 0x081E460C|1;
|
||||
__umodsi3 = 0x081E4684|1;
|
||||
memcpy_ = 0x081E5E78|1;
|
||||
memset_ = 0x081E5ED8|1;
|
||||
|
||||
GetGenderFromSpeciesAndPersonality = 0x803F78C | 1;
|
||||
SpeciesToNationalPokedexNum = 0x8043298 | 1;
|
||||
DrawSpindaSpots = 0x8043458 | 1;
|
||||
GetUnownLetterFromPersonality = 0x8082AB8 | 1;
|
||||
LZ77UnCompWram = 0x81E3B70 | 1;
|
||||
|
||||
/*The Deal Breaker*/
|
||||
break_func = 0x08416304 | 1;
|
||||
20
LICENSE
Normal file
20
LICENSE
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
Copyright © 2000 Kevin Mills <kevin.mills226@gmail.com>
|
||||
This work is free. You can redistribute it and/or modify it under the
|
||||
terms of the Do What The Fuck You Want To Public License, Version 2,
|
||||
as published by Sam Hocevar. See the below file for more details.
|
||||
|
||||
--------------------------------------------------------------------
|
||||
|
||||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
Version 2, December 2004
|
||||
|
||||
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim or modified
|
||||
copies of this license document, and changing it is allowed as long
|
||||
as the name is changed.
|
||||
|
||||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. You just DO WHAT THE FUCK YOU WANT TO.
|
||||
77
bytereplacement
Normal file
77
bytereplacement
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
##
|
||||
##Use New Name Table
|
||||
08041000 C0 46 C0 46 C0 46
|
||||
|
||||
##Break Sprite Limiters
|
||||
0800ED72 07 E0
|
||||
0800F1B6 07 E0
|
||||
|
||||
#Break Palette Limiter
|
||||
08044104 04 E0
|
||||
|
||||
##Break Sprite Position Limiters
|
||||
0807472E 03 E0
|
||||
0807465E 03 E0
|
||||
08074788 06 E0
|
||||
|
||||
#Icon Palette Fixes
|
||||
08096F90 C0 46
|
||||
08096E7A C0 46 C0 46
|
||||
080971DA C0 46
|
||||
|
||||
#Update Pokedex
|
||||
081025EC FA
|
||||
081025EE 40 01
|
||||
08104B00 C0 46
|
||||
08104B02 C0 46
|
||||
08104B16 C0 46
|
||||
08104B18 C0 46
|
||||
08104B1A C0 46
|
||||
08104B26 16 E0
|
||||
08104B34 0F E0
|
||||
08104B6A 01 1C
|
||||
08104B6C C0 46
|
||||
08104B78 1A E0
|
||||
08104BA2 01 1C
|
||||
08104BA4 C0 46
|
||||
080549B0 20 1C C0 46
|
||||
080549B6 7D 22
|
||||
080549BC 20 1C
|
||||
080549BE 7D 30
|
||||
080549C2 7D 22
|
||||
#Seen Flags @0x202583C
|
||||
080549D0 3C 58 02 02
|
||||
08104B10 3C 58 02 02
|
||||
08104B94 3C 58 02 02
|
||||
#Caught Flags @0x20258B9
|
||||
08104B5C B9 58 02 02
|
||||
08104BB8 B9 58 02 02
|
||||
|
||||
##Fix Pokedex Species Issue
|
||||
810583C FF
|
||||
8105856 FF
|
||||
|
||||
#New Game Dex Clear
|
||||
080549B0 20 1C 00 00
|
||||
|
||||
#Fix Evolution Anim
|
||||
0800EC9A 07 E0
|
||||
|
||||
#Fix Trainer Card Stamps
|
||||
08097011 E0
|
||||
|
||||
#Fix New Cries
|
||||
080720CA 01 1C 11 E0
|
||||
|
||||
#Disable Help Menu
|
||||
0813B8C2 1D E0
|
||||
|
||||
#Remove Footprints
|
||||
08105DFE C0 46 C0 46
|
||||
|
||||
#Update Egg Move Limit
|
||||
08045CA6 32
|
||||
|
||||
##Fix Pokedex Species Issue
|
||||
0810583C FF
|
||||
08105856 FF
|
||||
111
charmap.tbl
Normal file
111
charmap.tbl
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
00=
|
||||
1B=\e
|
||||
|
||||
2D=&
|
||||
2E=+
|
||||
|
||||
35==
|
||||
36=;
|
||||
|
||||
5B=%
|
||||
5C=(
|
||||
5D=)
|
||||
|
||||
85=<
|
||||
86=>
|
||||
|
||||
A1=0
|
||||
A2=1
|
||||
A3=2
|
||||
A4=3
|
||||
A5=4
|
||||
A6=5
|
||||
A7=6
|
||||
A8=7
|
||||
A9=8
|
||||
AA=9
|
||||
AB=!
|
||||
AC=?
|
||||
AD=.
|
||||
AE=-
|
||||
AF=·
|
||||
B0=…
|
||||
B1="
|
||||
B2=\"
|
||||
B3=‘
|
||||
B4=’
|
||||
B4='
|
||||
B5=♂
|
||||
B6=♀
|
||||
B7=¥
|
||||
B8=,
|
||||
B9=×
|
||||
BA=/
|
||||
BB=A
|
||||
BC=B
|
||||
BD=C
|
||||
BE=D
|
||||
BF=E
|
||||
C0=F
|
||||
C1=G
|
||||
C2=H
|
||||
C3=I
|
||||
C4=J
|
||||
C5=K
|
||||
C6=L
|
||||
C7=M
|
||||
C8=N
|
||||
C9=O
|
||||
CA=P
|
||||
CB=Q
|
||||
CC=R
|
||||
CD=S
|
||||
CE=T
|
||||
CF=U
|
||||
D0=V
|
||||
D1=W
|
||||
D2=X
|
||||
D3=Y
|
||||
D4=Z
|
||||
D5=a
|
||||
D6=b
|
||||
D7=c
|
||||
D8=d
|
||||
D9=e
|
||||
DA=f
|
||||
DB=g
|
||||
DC=h
|
||||
DD=i
|
||||
DE=j
|
||||
DF=k
|
||||
E0=l
|
||||
E1=m
|
||||
E2=n
|
||||
E3=o
|
||||
E4=p
|
||||
E5=q
|
||||
E6=r
|
||||
E7=s
|
||||
E8=t
|
||||
E9=u
|
||||
EA=v
|
||||
EB=w
|
||||
EC=x
|
||||
ED=y
|
||||
EE=z
|
||||
EF=▶
|
||||
F0=:
|
||||
F1=Ä
|
||||
F2=Ö
|
||||
F3=Ü
|
||||
F4=ä
|
||||
F5=ö
|
||||
F6=ü
|
||||
|
||||
FA=\l
|
||||
FB=\p
|
||||
FE=\n
|
||||
FF=$
|
||||
|
||||
/FF
|
||||
|
||||
1
functionrewrites
Normal file
1
functionrewrites
Normal file
|
|
@ -0,0 +1 @@
|
|||
##
|
||||
11
hooks
Normal file
11
hooks
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
##
|
||||
LoadSpecialPokePicHook 800ECF2 4
|
||||
SpeciesToCryId 8043304 1
|
||||
NationalPokedexNumToSpecies 8043200 1
|
||||
GetFrontSpritePalFromSpeciesAndPersonality 80440F4 3
|
||||
GetMonSpritePalStructFromOtIdPersonality 8044180 3
|
||||
UpdateEggMoveLimit 8045C58 0
|
||||
GenderedMonIconHook 8096E38 2
|
||||
PrepareDexListViewsHook 8103530 1
|
||||
AlphabeticalDexHook 8103684 1
|
||||
AlternateDexEntriesHook 8105CBC 0
|
||||
240
include/abilities.h
Normal file
240
include/abilities.h
Normal file
|
|
@ -0,0 +1,240 @@
|
|||
#pragma once
|
||||
|
||||
#define ABILITY_NONE 0
|
||||
#define ABILITY_STENCH 0x1
|
||||
#define ABILITY_DRIZZLE 0x2
|
||||
#define ABILITY_SPEEDBOOST 0x3
|
||||
#define ABILITY_BATTLEARMOR 0x4
|
||||
#define ABILITY_STURDY 0x5
|
||||
#define ABILITY_DAMP 0x6
|
||||
#define ABILITY_LIMBER 0x7
|
||||
#define ABILITY_SANDVEIL 0x8
|
||||
#define ABILITY_STATIC 0x9
|
||||
#define ABILITY_VOLTABSORB 0xA
|
||||
#define ABILITY_WATERABSORB 0xB
|
||||
#define ABILITY_OBLIVIOUS 0xC
|
||||
#define ABILITY_CLOUDNINE 0xD
|
||||
#define ABILITY_COMPOUNDEYES 0xE
|
||||
#define ABILITY_INSOMNIA 0xF
|
||||
#define ABILITY_COLORCHANGE 0x10
|
||||
#define ABILITY_IMMUNITY 0x11
|
||||
#define ABILITY_FLASHFIRE 0x12
|
||||
#define ABILITY_SHIELDDUST 0x13
|
||||
#define ABILITY_OWNTEMPO 0x14
|
||||
#define ABILITY_SUCTIONCUPS 0x15
|
||||
#define ABILITY_INTIMIDATE 0x16
|
||||
#define ABILITY_SHADOWTAG 0x17
|
||||
#define ABILITY_ROUGHSKIN 0x18
|
||||
#define ABILITY_WONDERGUARD 0x19
|
||||
#define ABILITY_LEVITATE 0x1A
|
||||
#define ABILITY_EFFECTSPORE 0x1B
|
||||
#define ABILITY_SYNCHRONIZE 0x1C
|
||||
#define ABILITY_CLEARBODY 0x1D
|
||||
#define ABILITY_NATURALCURE 0x1E
|
||||
#define ABILITY_LIGHTNINGROD 0x1F
|
||||
#define ABILITY_SERENEGRACE 0x20
|
||||
#define ABILITY_SWIFTSWIM 0x21
|
||||
#define ABILITY_CHLOROPHYLL 0x22
|
||||
#define ABILITY_ILLUMINATE 0x23
|
||||
#define ABILITY_TRACE 0x24
|
||||
#define ABILITY_HUGEPOWER 0x25
|
||||
#define ABILITY_POISONPOINT 0x26
|
||||
#define ABILITY_INNERFOCUS 0x27
|
||||
#define ABILITY_MAGMAARMOR 0x28
|
||||
#define ABILITY_WATERVEIL 0x29
|
||||
#define ABILITY_MAGNETPULL 0x2A
|
||||
#define ABILITY_SOUNDPROOF 0x2B
|
||||
#define ABILITY_RAINDISH 0x2C
|
||||
#define ABILITY_SANDSTREAM 0x2D
|
||||
#define ABILITY_PRESSURE 0x2E
|
||||
#define ABILITY_THICKFAT 0x2F
|
||||
#define ABILITY_EARLYBIRD 0x30
|
||||
#define ABILITY_FLAMEBODY 0x31
|
||||
#define ABILITY_RUNAWAY 0x32
|
||||
#define ABILITY_KEENEYE 0x33
|
||||
#define ABILITY_HYPERCUTTER 0x34
|
||||
#define ABILITY_PICKUP 0x35
|
||||
#define ABILITY_TRUANT 0x36
|
||||
#define ABILITY_HUSTLE 0x37
|
||||
#define ABILITY_CUTECHARM 0x38
|
||||
#define ABILITY_PLUS 0x39
|
||||
#define ABILITY_MINUS 0x3A
|
||||
#define ABILITY_FORECAST 0x3B
|
||||
#define ABILITY_STICKYHOLD 0x3C
|
||||
#define ABILITY_SHEDSKIN 0x3D
|
||||
#define ABILITY_GUTS 0x3E
|
||||
#define ABILITY_MARVELSCALE 0x3F
|
||||
#define ABILITY_LIQUIDOOZE 0x40
|
||||
#define ABILITY_OVERGROW 0x41
|
||||
#define ABILITY_BLAZE 0x42
|
||||
#define ABILITY_TORRENT 0x43
|
||||
#define ABILITY_SWARM 0x44
|
||||
#define ABILITY_ROCKHEAD 0x45
|
||||
#define ABILITY_DROUGHT 0x46
|
||||
#define ABILITY_ARENATRAP 0x47
|
||||
#define ABILITY_VITALSPIRIT 0x48
|
||||
#define ABILITY_WHITESMOKE 0x49
|
||||
#define ABILITY_PUREPOWER 0x4A
|
||||
#define ABILITY_SHELLARMOR 0x4B
|
||||
#define ABILITY_CACOPHONY 0x4C
|
||||
#define ABILITY_AIRLOCK 0x4D
|
||||
#define ABILITY_SWEETVEIL 0x4E
|
||||
#define ABILITY_SKILLLINK 0x4F
|
||||
#define ABILITY_MOTORDRIVE 0x50
|
||||
#define ABILITY_MULTISCALE 0x51
|
||||
#define ABILITY_TECHNICIAN 0x52
|
||||
#define ABILITY_SCRAPPY 0x53
|
||||
#define ABILITY_SUPERLUCK 0x54
|
||||
#define ABILITY_SNIPER 0x55
|
||||
#define ABILITY_REGENERATOR 0x56
|
||||
#define ABILITY_PRANKSTER 0x57
|
||||
#define ABILITY_ADAPTABILITY 0x58
|
||||
#define ABILITY_BIGPECKS 0x59
|
||||
#define ABILITY_MAGICBOUNCE 0x5A
|
||||
#define ABILITY_RECKLESS 0x5B
|
||||
#define ABILITY_SHEERFORCE 0x5C
|
||||
#define ABILITY_IRONFIST 0x5D
|
||||
#define ABILITY_RIVALRY 0x5E
|
||||
#define ABILITY_SANDFORCE 0x5F
|
||||
#define ABILITY_SOLARPOWER 0x60
|
||||
#define ABILITY_HEATPROOF 0x61
|
||||
#define ABILITY_DRYSKIN 0x62
|
||||
#define ABILITY_TINTEDLENS 0x63
|
||||
#define ABILITY_SOLIDROCK 0x64
|
||||
#define ABILITY_FILTER 0x65
|
||||
#define ABILITY_INFILTRATOR 0x66
|
||||
#define ABILITY_DOWNLOAD 0x67
|
||||
#define ABILITY_POISONHEAL 0x68
|
||||
#define ABILITY_ICEBODY 0x69
|
||||
#define ABILITY_MOODY 0x6A
|
||||
#define ABILITY_HYDRATION 0x6B
|
||||
#define ABILITY_HEALER 0x6C
|
||||
#define ABILITY_SNOWCLOAK 0x6D
|
||||
#define ABILITY_TANGLEDFEET 0x6E
|
||||
#define ABILITY_SNOWWARNING 0x6F
|
||||
#define ABILITY_QUICKFEET 0x70
|
||||
#define ABILITY_SAPSIPPER 0x71
|
||||
#define ABILITY_OVERCOAT 0x72
|
||||
#define ABILITY_MAGICGUARD 0x73
|
||||
#define ABILITY_BULLETPROOF 0x74
|
||||
#define ABILITY_GALEWINGS 0x75
|
||||
#define ABILITY_MOXIE 0x76
|
||||
#define ABILITY_AFTERMATH 0x77
|
||||
#define ABILITY_CURSEDBODY 0x78
|
||||
#define ABILITY_GOOEY 0x79
|
||||
#define ABILITY_MUMMY 0x7A
|
||||
#define ABILITY_IRONBARBS 0x7B
|
||||
#define ABILITY_SANDRUSH 0x7C
|
||||
#define ABILITY_ANALYTIC 0x7D
|
||||
#define ABILITY_NOGUARD 0x7E
|
||||
#define ABILITY_MEGALAUNCHER 0x7F
|
||||
#define ABILITY_TOUGHCLAWS 0x80
|
||||
#define ABILITY_STRONGJAW 0x81
|
||||
#define ABILITY_VICTORYSTAR 0x82
|
||||
#define ABILITY_STORMDRAIN 0x83
|
||||
#define ABILITY_DARKAURA 0x84
|
||||
#define ABILITY_FAIRYAURA 0x85
|
||||
#define ABILITY_AURABREAK 0x86
|
||||
#define ABILITY_REFRIGERATE 0x87
|
||||
#define ABILITY_PIXILATE 0x88
|
||||
#define ABILITY_AERILATE 0x89
|
||||
#define ABILITY_NORMALIZE 0x8A
|
||||
#define ABILITY_UNBURDEN 0x8B
|
||||
#define ABILITY_SIMPLE 0x8C
|
||||
#define ABILITY_UNAWARE 0x8D
|
||||
#define ABILITY_DEFIANT 0x8E
|
||||
#define ABILITY_COMPETITIVE 0x8F
|
||||
#define ABILITY_DEFEATIST 0x90
|
||||
#define ABILITY_SLOWSTART 0x91
|
||||
#define ABILITY_TOXICBOOST 0x92
|
||||
#define ABILITY_FLAREBOOST 0x93
|
||||
#define ABILITY_FURCOAT 0x94
|
||||
#define ABILITY_WONDERSKIN 0x95
|
||||
#define ABILITY_PROTEAN 0x96
|
||||
#define ABILITY_PARENTALBOND 0x97
|
||||
#define ABILITY_MOLDBREAKER 0x98
|
||||
#define ABILITY_TURBOBLAZE 0x99
|
||||
#define ABILITY_TERAVOLT 0x9A
|
||||
#define ABILITY_ZENMODE 0x9B
|
||||
#define ABILITY_BATTLEBOND 0x9C
|
||||
#define ABILITY_BEASTBOOST 0x9D
|
||||
#define ABILITY_CORROSION 0x9E
|
||||
#define ABILITY_DISGUISE 0x9F
|
||||
#define ABILITY_EMERGENCYEXIT 0xA0
|
||||
#define ABILITY_FLUFFY 0xA1
|
||||
#define ABILITY_FULLMETALBODY 0xA2
|
||||
#define ABILITY_BROKEN_1 0xA3
|
||||
#define ABILITY_BROKEN_2 0xA4
|
||||
#define ABILITY_POWERCONSTRUCT 0xA5
|
||||
#define ABILITY_PRISMARMOR 0xA6
|
||||
#define ABILITY_RKS_SYSTEM 0xA7
|
||||
#define ABILITY_SCHOOLING 0xA8
|
||||
#define ABILITY_SHADOWSHIELD 0xA9
|
||||
#define ABILITY_SHIELDSDOWN 0xAA
|
||||
#define ABILITY_SLUSHRUSH 0xAB
|
||||
#define ABILITY_SOULHEART 0xAC
|
||||
#define ABILITY_STAMINA 0xAD
|
||||
#define ABILITY_STEELWORKER 0xAE
|
||||
#define ABILITY_TANGLINGHAIR 0xAF
|
||||
#define ABILITY_TRIAGE 0xB0
|
||||
#define ABILITY_WATERBUBBLE 0xB1
|
||||
#define ABILITY_WATERCOMPACTION 0xB2
|
||||
#define ABILITY_STALL 0xB3
|
||||
#define ABILITY_MULTITYPE 0xB4
|
||||
#define ABILITY_ELECTRICSURGE 0xB5
|
||||
#define ABILITY_GRASSYSURGE 0xB6
|
||||
#define ABILITY_MISTYSURGE 0xB7
|
||||
#define ABILITY_PSYCHICSURGE 0xB8
|
||||
#define ABILITY_SURGESURFER 0xB9
|
||||
#define ABILITY_GRASSPELT 0xBA
|
||||
#define ABILITY_ANGERPOINT 0xBB
|
||||
#define ABILITY_ANTICIPATION 0xBC
|
||||
#define ABILITY_FOREWARN 0xBD
|
||||
#define ABILITY_FRISK 0xBE
|
||||
#define ABILITY_CONTRARY 0xBF
|
||||
#define ABILITY_UNNERVE 0xC0
|
||||
#define ABILITY_WEAKARMOR 0xC1
|
||||
#define ABILITY_HEAVYMETAL 0xC2
|
||||
#define ABILITY_LIGHTMETAL 0xC3
|
||||
#define ABILITY_STEADFAST 0xC4
|
||||
#define ABILITY_IMPOSTER 0xC5
|
||||
#define ABILITY_JUSTIFIED 0xC6
|
||||
#define ABILITY_RATTLED 0xC7
|
||||
#define ABILITY_MERCILESS 0xC8
|
||||
#define ABILITY_AROMAVEIL 0xC9
|
||||
#define ABILITY_FLOWERVEIL 0xCA
|
||||
#define ABILITY_LEAFGUARD 0xCB
|
||||
#define ABILITY_KLUTZ 0xCC
|
||||
#define ABILITY_FLOWERGIFT 0xCD
|
||||
#define ABILITY_BADDREAMS 0xCE
|
||||
#define ABILITY_PICKPOCKET 0xCF
|
||||
#define ABILITY_PORTALPOWER 0xD0
|
||||
#define ABILITY_POISONTOUCH 0xD1
|
||||
#define ABILITY_MAGICIAN 0xD2
|
||||
#define ABILITY_STANCECHANGE 0xD3
|
||||
#define ABILITY_PRIMORDIALSEA 0xD4
|
||||
#define ABILITY_DESOLATELAND 0xD5
|
||||
#define ABILITY_DELTASTREAM 0xD6
|
||||
#define ABILITY_WIMPOUT 0xD7
|
||||
#define ABILITY_BERSERK 0xD8
|
||||
#define ABILITY_LONGREACH 0xD9
|
||||
#define ABILITY_LIQUIDVOICE 0xDA
|
||||
#define ABILITY_QUEENLYMAJESTY 0xDB
|
||||
#define ABILITY_INNARDSOUT 0xDC
|
||||
#define ABILITY_DAZZLING 0xDD
|
||||
#define ABILITY_GLUTTONY 0xDE
|
||||
#define ABILITY_HONEYGATHER 0xDF
|
||||
#define ABILITY_FRIENDGUARD 0xE0
|
||||
#define ABILITY_HARVEST 0xE1
|
||||
#define ABILITY_TELEPATHY 0xE2
|
||||
#define ABILITY_ILLUSION 0xE3
|
||||
#define ABILITY_CHEEKPOUCH 0xE4
|
||||
#define ABILITY_SYMBIOSIS 0xE5
|
||||
#define ABILITY_STAKEOUT 0xE6
|
||||
#define ABILITY_COMATOSE 0xE7
|
||||
#define ABILITY_DANCER 0xE8
|
||||
#define ABILITY_BATTERY 0xE9
|
||||
#define ABILITY_RECEIVER 0xEA
|
||||
#define ABILITY_POWEROFALCHEMY 0xEB
|
||||
#define ABILITY_NEUROFORCE 0xEC
|
||||
#define ABILITY_GALVANIZE 0xED
|
||||
105
include/base_stats.h
Normal file
105
include/base_stats.h
Normal file
|
|
@ -0,0 +1,105 @@
|
|||
#pragma once
|
||||
|
||||
struct BaseStats
|
||||
{
|
||||
/* 0x00 */ u8 baseHP;
|
||||
/* 0x01 */ u8 baseAttack;
|
||||
/* 0x02 */ u8 baseDefense;
|
||||
/* 0x03 */ u8 baseSpeed;
|
||||
/* 0x04 */ u8 baseSpAttack;
|
||||
/* 0x05 */ u8 baseSpDefense;
|
||||
/* 0x06 */ u8 type1;
|
||||
/* 0x07 */ u8 type2;
|
||||
/* 0x08 */ u8 catchRate;
|
||||
/* 0x09 */ u8 expYield;
|
||||
/* 0x0A */ u16 evYield_HP:2;
|
||||
/* 0x0A */ u16 evYield_Attack:2;
|
||||
/* 0x0A */ u16 evYield_Defense:2;
|
||||
/* 0x0A */ u16 evYield_Speed:2;
|
||||
/* 0x0B */ u16 evYield_SpAttack:2;
|
||||
/* 0x0B */ u16 evYield_SpDefense:2;
|
||||
/* 0x0C */ u16 item1;
|
||||
/* 0x0E */ u16 item2;
|
||||
/* 0x10 */ u8 genderRatio;
|
||||
/* 0x11 */ u8 eggCycles;
|
||||
/* 0x12 */ u8 friendship;
|
||||
/* 0x13 */ u8 growthRate;
|
||||
/* 0x14 */ u8 eggGroup1;
|
||||
/* 0x15 */ u8 eggGroup2;
|
||||
/* 0x16 */ u8 ability1;
|
||||
/* 0x17 */ u8 ability2;
|
||||
/* 0x18 */ u8 safariZoneFleeRate;
|
||||
/* 0x19 */ u8 bodyColor : 7;
|
||||
u8 noFlip : 1;
|
||||
/* 0x1A */ u8 hiddenAbility;
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
EGG_GROUP_NONE,
|
||||
EGG_GROUP_MONSTER,
|
||||
EGG_GROUP_WATER_1,
|
||||
EGG_GROUP_BUG,
|
||||
EGG_GROUP_FLYING,
|
||||
EGG_GROUP_FIELD,
|
||||
EGG_GROUP_FAIRY,
|
||||
EGG_GROUP_GRASS,
|
||||
EGG_GROUP_HUMAN_LIKE,
|
||||
EGG_GROUP_WATER_3,
|
||||
EGG_GROUP_MINERAL,
|
||||
EGG_GROUP_AMORPHOUS,
|
||||
EGG_GROUP_WATER_2,
|
||||
EGG_GROUP_DITTO,
|
||||
EGG_GROUP_DRAGON,
|
||||
EGG_GROUP_UNDISCOVERED
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
GROWTH_MEDIUM_FAST,
|
||||
GROWTH_ERRATIC,
|
||||
GROWTH_FLUCTUATING,
|
||||
GROWTH_MEDIUM_SLOW,
|
||||
GROWTH_FAST,
|
||||
GROWTH_SLOW
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
BODY_COLOR_RED,
|
||||
BODY_COLOR_BLUE,
|
||||
BODY_COLOR_YELLOW,
|
||||
BODY_COLOR_GREEN,
|
||||
BODY_COLOR_BLACK,
|
||||
BODY_COLOR_BROWN,
|
||||
BODY_COLOR_PURPLE,
|
||||
BODY_COLOR_GRAY,
|
||||
BODY_COLOR_WHITE,
|
||||
BODY_COLOR_PINK
|
||||
};
|
||||
|
||||
#define TYPE_NORMAL 0x00
|
||||
#define TYPE_FIGHTING 0x01
|
||||
#define TYPE_FLYING 0x02
|
||||
#define TYPE_POISON 0x03
|
||||
#define TYPE_GROUND 0x04
|
||||
#define TYPE_ROCK 0x05
|
||||
#define TYPE_BUG 0x06
|
||||
#define TYPE_GHOST 0x07
|
||||
#define TYPE_STEEL 0x08
|
||||
#define TYPE_MYSTERY 0x09
|
||||
#define TYPE_FIRE 0x0a
|
||||
#define TYPE_WATER 0x0b
|
||||
#define TYPE_GRASS 0x0c
|
||||
#define TYPE_ELECTRIC 0x0d
|
||||
#define TYPE_PSYCHIC 0x0e
|
||||
#define TYPE_ICE 0x0f
|
||||
#define TYPE_DRAGON 0x10
|
||||
#define TYPE_DARK 0x11
|
||||
#define TYPE_ROOSTLESS 0x13
|
||||
#define TYPE_BLANK 0x14
|
||||
#define TYPE_FAIRY 0x17
|
||||
|
||||
#define MON_MALE 0x00
|
||||
#define MON_FEMALE 0xFE
|
||||
#define MON_GENDERLESS 0xFF
|
||||
14
include/cries.h
Normal file
14
include/cries.h
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
#pragma once
|
||||
|
||||
struct ToneData
|
||||
{
|
||||
u8 type;
|
||||
u8 key;
|
||||
u8 length; // sound length (compatible sound)
|
||||
u8 pan_sweep; // pan or sweep (compatible sound ch. 1)
|
||||
u32 wav; //struct WaveData *wav;
|
||||
u8 attack;
|
||||
u8 decay;
|
||||
u8 sustain;
|
||||
u8 release;
|
||||
};
|
||||
78
include/evolution.h
Normal file
78
include/evolution.h
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
#pragma once
|
||||
|
||||
#define MON_MALE 0x00
|
||||
#define MON_FEMALE 0xFE
|
||||
|
||||
struct Evolution
|
||||
{
|
||||
u16 method;
|
||||
u16 param;
|
||||
u16 targetSpecies;
|
||||
u16 unknown; // used for mega evo, Dawn Stone, level in EVO_TYPE_IN_PARTY, or time range in EVO_LEVEL_SPECIFIC_TIME_RANGE
|
||||
};
|
||||
|
||||
enum EvolutionMethods
|
||||
{
|
||||
EVO_NONE = 0,
|
||||
EVO_FRIENDSHIP,
|
||||
EVO_FRIENDSHIP_DAY,
|
||||
EVO_FRIENDSHIP_NIGHT,
|
||||
EVO_LEVEL,
|
||||
EVO_TRADE,
|
||||
EVO_TRADE_ITEM,
|
||||
EVO_ITEM, // for dawn stone, add MON_MALE(0x0) or MON_FEMALE(0xFF) to .unknown in evo table entry
|
||||
EVO_LEVEL_ATK_GT_DEF,
|
||||
EVO_LEVEL_ATK_EQ_DEF,
|
||||
EVO_LEVEL_ATK_LT_DEF,
|
||||
EVO_LEVEL_SILCOON,
|
||||
EVO_LEVEL_CASCOON,
|
||||
EVO_LEVEL_NINJASK,
|
||||
EVO_LEVEL_SHEDINJA,
|
||||
EVO_BEAUTY,
|
||||
// new evolutions
|
||||
EVO_RAINY_OW, // raining in overworld
|
||||
EVO_MOVE_TYPE, // knows a move with a specific type (eg. sylveon: fairy type move). Param is the move type
|
||||
EVO_TYPE_IN_PARTY, //specific type (param) in party after given level (unknown).
|
||||
EVO_MAP, // specific map evolution. bank in param, map in unknown
|
||||
EVO_MALE_LEVEL, // above given level if male
|
||||
EVO_FEMALE_LEVEL, // above given level if female
|
||||
EVO_LEVEL_NIGHT, // above given level at night
|
||||
EVO_LEVEL_DAY, // above given level during day
|
||||
EVO_HOLD_ITEM_NIGHT, // level up holding item at night (eg. sneasel)
|
||||
EVO_HOLD_ITEM_DAY, // level up while holding a specific item during the day (eg. happiny)
|
||||
EVO_MOVE, // knows a given move
|
||||
EVO_OTHER_PARTY_MON, //another poke in the party, arg is a specific species
|
||||
EVO_LEVEL_SPECIFIC_TIME_RANGE, // above given level with a range (unknown is [start][end]. eg lycanroc -> 1700-1800 hrs -> 0x1112)
|
||||
};
|
||||
|
||||
#define EVO_MEGA 0xFE
|
||||
|
||||
enum MegaEvoVariants
|
||||
{
|
||||
MEGA_VARIANT_STANDARD,
|
||||
MEGA_VARIANT_PRIMAL,
|
||||
MEGA_VARIANT_WISH, //Rayquaza
|
||||
MEGA_VARIANT_ULTRA_BURST, //Necrozma
|
||||
};
|
||||
|
||||
#define MAP_NAME_ROUTE_1 0x65
|
||||
#define MAP_NAME_ROUTE_2 0x66
|
||||
#define MAP_NAME_FLOWER_PARADISE 0x88
|
||||
#define MAP_NAME_GRIM_WOODS 0x7E
|
||||
#define MAP_NAME_ROUTE_4 0x63
|
||||
#define MAP_NAME_CINDER_VOLCANO 0x7F
|
||||
#define MAP_NAME_ROUTE_5 0x69
|
||||
#define MAP_NAME_VALLEY_CAVE 0x83
|
||||
#define MAP_NAME_ROUTE_6 0x6A
|
||||
#define MAP_NAME_ROUTE_7 0x6B
|
||||
#define MAP_NAME_ROUTE_8 0x6C
|
||||
#define MAP_NAME_FROST_MOUNTAIN 0x82
|
||||
#define MAP_NAME_BLIZZARD_CITY 0x5C
|
||||
#define MAP_NAME_ROUTE_9 0x6D
|
||||
#define MAP_NAME_ROUTE_10 0x64
|
||||
#define MAP_NAME_ROUTE_11 0x6F
|
||||
#define MAP_NAME_THUNDERCAP_MT 0x8A
|
||||
#define MAP_NAME_ROUTE_12 0x70
|
||||
#define MAP_NAME_VIVILL_WOODS 0x8C
|
||||
#define MAP_NAME_ROUTE_16 0x74
|
||||
#define MAP_NAME_ROUTE_17 0x75
|
||||
33
include/graphics.h
Normal file
33
include/graphics.h
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
#pragma once
|
||||
|
||||
// Extracts the upper 16 bits of a 32-bit number
|
||||
#define HIHALF(n) (((n) & 0xFFFF0000) >> 16)
|
||||
|
||||
// Extracts the lower 16 bits of a 32-bit number
|
||||
#define LOHALF(n) ((n) & 0xFFFF)
|
||||
|
||||
struct MonCoords
|
||||
{
|
||||
// This would use a bitfield, but some function
|
||||
// uses it as a u8 and casting won't match.
|
||||
u8 size; // u8 width:4, height:4;
|
||||
u8 y_offset;
|
||||
u16 unused;
|
||||
};
|
||||
|
||||
struct CompressedSpriteSheet
|
||||
{
|
||||
u32 data; //const u8* data; // LZ77 compressed pixel data
|
||||
u16 size; // Uncompressed size of pixel data
|
||||
u16 tag;
|
||||
};
|
||||
|
||||
struct CompressedSpritePalette
|
||||
{
|
||||
u32 data; //const u8* data; // LZ77 compressed palette data
|
||||
u16 tag;
|
||||
u16 unused;
|
||||
};
|
||||
|
||||
void __attribute__((long_call)) LZ77UnCompWram(const void *src, void *dest);
|
||||
void __attribute__((long_call)) DrawSpindaSpots(u16, u32, u8*, u8);
|
||||
783
include/items.h
Normal file
783
include/items.h
Normal file
|
|
@ -0,0 +1,783 @@
|
|||
#pragma once
|
||||
|
||||
#define ITEM_NONE 0
|
||||
#define ITEM_MASTER_BALL 1
|
||||
#define ITEM_ULTRA_BALL 2
|
||||
#define ITEM_GREAT_BALL 3
|
||||
#define ITEM_POKE_BALL 4
|
||||
#define ITEM_SAFARI_BALL 5
|
||||
#define ITEM_NET_BALL 6
|
||||
#define ITEM_DIVE_BALL 7
|
||||
#define ITEM_NEST_BALL 8
|
||||
#define ITEM_REPEAT_BALL 9
|
||||
#define ITEM_TIMER_BALL 10
|
||||
#define ITEM_LUXURY_BALL 11
|
||||
#define ITEM_PREMIER_BALL 12
|
||||
#define ITEM_POTION 13
|
||||
#define ITEM_ANTIDOTE 14
|
||||
#define ITEM_BURN_HEAL 15
|
||||
#define ITEM_ICE_HEAL 16
|
||||
#define ITEM_AWAKENING 17
|
||||
#define ITEM_PARALYZE_HEAL 18
|
||||
#define ITEM_FULL_RESTORE 19
|
||||
#define ITEM_MAX_POTION 20
|
||||
#define ITEM_HYPER_POTION 21
|
||||
#define ITEM_SUPER_POTION 22
|
||||
#define ITEM_FULL_HEAL 23
|
||||
#define ITEM_REVIVE 24
|
||||
#define ITEM_MAX_REVIVE 25
|
||||
#define ITEM_FRESH_WATER 26
|
||||
#define ITEM_SODA_POP 27
|
||||
#define ITEM_LEMONADE 28
|
||||
#define ITEM_MOOMOO_MILK 29
|
||||
#define ITEM_ENERGY_POWDER 30
|
||||
#define ITEM_ENERGY_ROOT 31
|
||||
#define ITEM_HEAL_POWDER 32
|
||||
#define ITEM_REVIVAL_HERB 33
|
||||
#define ITEM_ETHER 34
|
||||
#define ITEM_MAX_ETHER 35
|
||||
#define ITEM_ELIXIR 36
|
||||
#define ITEM_MAX_ELIXIR 37
|
||||
#define ITEM_LAVA_COOKIE 38
|
||||
#define ITEM_BLUE_FLUTE 39
|
||||
#define ITEM_YELLOW_FLUTE 40
|
||||
#define ITEM_RED_FLUTE 41
|
||||
#define ITEM_BLACK_FLUTE 42
|
||||
#define ITEM_WHITE_FLUTE 43
|
||||
#define ITEM_BERRY_JUICE 44
|
||||
#define ITEM_SACRED_ASH 45
|
||||
#define ITEM_SHOAL_SALT 46
|
||||
#define ITEM_SHOAL_SHELL 47
|
||||
#define ITEM_RED_SHARD 48
|
||||
#define ITEM_BLUE_SHARD 49
|
||||
#define ITEM_YELLOW_SHARD 50
|
||||
#define ITEM_GREEN_SHARD 51
|
||||
#define ITEM_034 52
|
||||
#define ITEM_035 53
|
||||
#define ITEM_036 54
|
||||
#define ITEM_037 55
|
||||
#define ITEM_038 56
|
||||
#define ITEM_039 57
|
||||
#define ITEM_03A 58
|
||||
#define ITEM_03B 59
|
||||
#define ITEM_03C 60
|
||||
#define ITEM_03D 61
|
||||
#define ITEM_03E 62
|
||||
#define ITEM_HP_UP 63
|
||||
#define ITEM_PROTEIN 64
|
||||
#define ITEM_IRON 65
|
||||
#define ITEM_CARBOS 66
|
||||
#define ITEM_CALCIUM 67
|
||||
#define ITEM_RARE_CANDY 68
|
||||
#define ITEM_PP_UP 69
|
||||
#define ITEM_ZINC 70
|
||||
#define ITEM_PP_MAX 71
|
||||
#define ITEM_048 72
|
||||
#define ITEM_GUARD_SPEC 73
|
||||
#define ITEM_DIRE_HIT 74
|
||||
#define ITEM_X_ATTACK 75
|
||||
#define ITEM_X_DEFEND 76
|
||||
#define ITEM_X_SPEED 77
|
||||
#define ITEM_X_ACCURACY 78
|
||||
#define ITEM_X_SPECIAL 79
|
||||
#define ITEM_POKE_DOLL 80
|
||||
#define ITEM_FLUFFY_TAIL 81
|
||||
#define ITEM_052 82
|
||||
#define ITEM_SUPER_REPEL 83
|
||||
#define ITEM_MAX_REPEL 84
|
||||
#define ITEM_ESCAPE_ROPE 85
|
||||
#define ITEM_REPEL 86
|
||||
#define ITEM_057 87
|
||||
#define ITEM_058 88
|
||||
#define ITEM_059 89
|
||||
#define ITEM_05A 90
|
||||
#define ITEM_05B 91
|
||||
#define ITEM_05C 92
|
||||
#define ITEM_SUN_STONE 93
|
||||
#define ITEM_MOON_STONE 94
|
||||
#define ITEM_FIRE_STONE 95
|
||||
#define ITEM_THUNDER_STONE 96
|
||||
#define ITEM_WATER_STONE 97
|
||||
#define ITEM_LEAF_STONE 98
|
||||
#define ITEM_063 99
|
||||
#define ITEM_064 100
|
||||
#define ITEM_065 101
|
||||
#define ITEM_066 102
|
||||
#define ITEM_TINY_MUSHROOM 103
|
||||
#define ITEM_BIG_MUSHROOM 104
|
||||
#define ITEM_069 105
|
||||
#define ITEM_PEARL 106
|
||||
#define ITEM_BIG_PEARL 107
|
||||
#define ITEM_STARDUST 108
|
||||
#define ITEM_STAR_PIECE 109
|
||||
#define ITEM_NUGGET 110
|
||||
#define ITEM_HEART_SCALE 111
|
||||
#define ITEM_070 112
|
||||
#define ITEM_071 113
|
||||
#define ITEM_072 114
|
||||
#define ITEM_073 115
|
||||
#define ITEM_074 116
|
||||
#define ITEM_075 117
|
||||
#define ITEM_076 118
|
||||
#define ITEM_077 119
|
||||
#define ITEM_078 120
|
||||
#define ITEM_ORANGE_MAIL 121
|
||||
#define ITEM_HARBOR_MAIL 122
|
||||
#define ITEM_GLITTER_MAIL 123
|
||||
#define ITEM_MECH_MAIL 124
|
||||
#define ITEM_WOOD_MAIL 125
|
||||
#define ITEM_WAVE_MAIL 126
|
||||
#define ITEM_BEAD_MAIL 127
|
||||
#define ITEM_SHADOW_MAIL 128
|
||||
#define ITEM_TROPIC_MAIL 129
|
||||
#define ITEM_DREAM_MAIL 130
|
||||
#define ITEM_FAB_MAIL 131
|
||||
#define ITEM_RETRO_MAIL 132
|
||||
#define ITEM_CHERI_BERRY 133
|
||||
#define ITEM_CHESTO_BERRY 134
|
||||
#define ITEM_PECHA_BERRY 135
|
||||
#define ITEM_RAWST_BERRY 136
|
||||
#define ITEM_ASPEAR_BERRY 137
|
||||
#define ITEM_LEPPA_BERRY 138
|
||||
#define ITEM_ORAN_BERRY 139
|
||||
#define ITEM_PERSIM_BERRY 140
|
||||
#define ITEM_LUM_BERRY 141
|
||||
#define ITEM_SITRUS_BERRY 142
|
||||
#define ITEM_FIGY_BERRY 143
|
||||
#define ITEM_WIKI_BERRY 144
|
||||
#define ITEM_MAGO_BERRY 145
|
||||
#define ITEM_AGUAV_BERRY 146
|
||||
#define ITEM_IAPAPA_BERRY 147
|
||||
#define ITEM_RAZZ_BERRY 148
|
||||
#define ITEM_BLUK_BERRY 149
|
||||
#define ITEM_NANAB_BERRY 150
|
||||
#define ITEM_WEPEAR_BERRY 151
|
||||
#define ITEM_PINAP_BERRY 152
|
||||
#define ITEM_POMEG_BERRY 153
|
||||
#define ITEM_KELPSY_BERRY 154
|
||||
#define ITEM_QUALOT_BERRY 155
|
||||
#define ITEM_HONDEW_BERRY 156
|
||||
#define ITEM_GREPA_BERRY 157
|
||||
#define ITEM_TAMATO_BERRY 158
|
||||
#define ITEM_CORNN_BERRY 159
|
||||
#define ITEM_MAGOST_BERRY 160
|
||||
#define ITEM_RABUTA_BERRY 161
|
||||
#define ITEM_NOMEL_BERRY 162
|
||||
#define ITEM_SPELON_BERRY 163
|
||||
#define ITEM_PAMTRE_BERRY 164
|
||||
#define ITEM_WATMEL_BERRY 165
|
||||
#define ITEM_DURIN_BERRY 166
|
||||
#define ITEM_BELUE_BERRY 167
|
||||
#define ITEM_LIECHI_BERRY 168
|
||||
#define ITEM_GANLON_BERRY 169
|
||||
#define ITEM_SALAC_BERRY 170
|
||||
#define ITEM_PETAYA_BERRY 171
|
||||
#define ITEM_APICOT_BERRY 172
|
||||
#define ITEM_LANSAT_BERRY 173
|
||||
#define ITEM_STARF_BERRY 174
|
||||
#define ITEM_ENIGMA_BERRY 175
|
||||
#define ITEM_0B0 176
|
||||
#define ITEM_0B1 177
|
||||
#define ITEM_0B2 178
|
||||
#define ITEM_BRIGHT_POWDER 179
|
||||
#define ITEM_WHITE_HERB 180
|
||||
#define ITEM_MACHO_BRACE 181
|
||||
#define ITEM_EXP_SHARE 182
|
||||
#define ITEM_QUICK_CLAW 183
|
||||
#define ITEM_SOOTHE_BELL 184
|
||||
#define ITEM_MENTAL_HERB 185
|
||||
|
||||
#ifdef UNBOUND
|
||||
#define ITEM_CHOICE_BAND 0xB0 //For Unbound
|
||||
#else
|
||||
#define ITEM_CHOICE_BAND 186
|
||||
#endif
|
||||
|
||||
#define ITEM_KINGS_ROCK 187
|
||||
#define ITEM_SILVER_POWDER 188
|
||||
#define ITEM_AMULET_COIN 189
|
||||
#define ITEM_CLEANSE_TAG 190
|
||||
#define ITEM_SOUL_DEW 191
|
||||
#define ITEM_DEEP_SEA_TOOTH 192
|
||||
#define ITEM_DEEP_SEA_SCALE 193
|
||||
#define ITEM_SMOKE_BALL 194
|
||||
#define ITEM_EVERSTONE 195
|
||||
#define ITEM_FOCUS_BAND 196
|
||||
#define ITEM_LUCKY_EGG 197
|
||||
#define ITEM_SCOPE_LENS 198
|
||||
#define ITEM_METAL_COAT 199
|
||||
#define ITEM_LEFTOVERS 200
|
||||
#define ITEM_DRAGON_SCALE 201
|
||||
#define ITEM_LIGHT_BALL 202
|
||||
#define ITEM_SOFT_SAND 203
|
||||
#define ITEM_HARD_STONE 204
|
||||
#define ITEM_MIRACLE_SEED 205
|
||||
#define ITEM_BLACK_GLASSES 206
|
||||
#define ITEM_BLACK_BELT 207
|
||||
#define ITEM_MAGNET 208
|
||||
#define ITEM_MYSTIC_WATER 209
|
||||
#define ITEM_SHARP_BEAK 210
|
||||
#define ITEM_POISON_BARB 211
|
||||
#define ITEM_NEVER_MELT_ICE 212
|
||||
#define ITEM_SPELL_TAG 213
|
||||
#define ITEM_TWISTED_SPOON 214
|
||||
#define ITEM_CHARCOAL 215
|
||||
#define ITEM_DRAGON_FANG 216
|
||||
#define ITEM_SILK_SCARF 217
|
||||
#define ITEM_UP_GRADE 218
|
||||
#define ITEM_SHELL_BELL 219
|
||||
#define ITEM_SEA_INCENSE 220
|
||||
#define ITEM_LAX_INCENSE 221
|
||||
#define ITEM_LUCKY_PUNCH 222
|
||||
#define ITEM_METAL_POWDER 223
|
||||
#define ITEM_THICK_CLUB 224
|
||||
#define ITEM_STICK 225
|
||||
#define ITEM_0E2 226
|
||||
#define ITEM_0E3 227
|
||||
#define ITEM_0E4 228
|
||||
#define ITEM_0E5 229
|
||||
#define ITEM_0E6 230
|
||||
#define ITEM_0E7 231
|
||||
#define ITEM_0E8 232
|
||||
#define ITEM_0E9 233
|
||||
#define ITEM_0EA 234
|
||||
#define ITEM_0EB 235
|
||||
#define ITEM_0EC 236
|
||||
#define ITEM_0ED 237
|
||||
#define ITEM_0EE 238
|
||||
#define ITEM_0EF 239
|
||||
#define ITEM_0F0 240
|
||||
#define ITEM_0F1 241
|
||||
#define ITEM_0F2 242
|
||||
#define ITEM_0F3 243
|
||||
#define ITEM_0F4 244
|
||||
#define ITEM_0F5 245
|
||||
#define ITEM_0F6 246
|
||||
#define ITEM_0F7 247
|
||||
#define ITEM_0F8 248
|
||||
#define ITEM_0F9 249
|
||||
#define ITEM_0FA 250
|
||||
#define ITEM_0FB 251
|
||||
#define ITEM_0FC 252
|
||||
#define ITEM_0FD 253
|
||||
#define ITEM_RED_SCARF 254
|
||||
#define ITEM_BLUE_SCARF 255
|
||||
#define ITEM_PINK_SCARF 256
|
||||
#define ITEM_GREEN_SCARF 257
|
||||
#define ITEM_YELLOW_SCARF 258
|
||||
#define ITEM_MACH_BIKE 259
|
||||
#define ITEM_COIN_CASE 260
|
||||
#define ITEM_ITEMFINDER 261
|
||||
#define ITEM_OLD_ROD 262
|
||||
#define ITEM_GOOD_ROD 263
|
||||
#define ITEM_SUPER_ROD 264
|
||||
#define ITEM_SS_TICKET 265
|
||||
#define ITEM_CONTEST_PASS 266
|
||||
#define ITEM_10B 267
|
||||
#define ITEM_WAILMER_PAIL 268
|
||||
#define ITEM_DEVON_GOODS 269
|
||||
#define ITEM_SOOT_SACK 270
|
||||
#define ITEM_BASEMENT_KEY 271
|
||||
#define ITEM_ACRO_BIKE 272
|
||||
#define ITEM_POKEBLOCK_CASE 273
|
||||
#define ITEM_LETTER 274
|
||||
#define ITEM_EON_TICKET 275
|
||||
#define ITEM_RED_ORB 276
|
||||
#define ITEM_BLUE_ORB 277
|
||||
#define ITEM_SCANNER 278
|
||||
#define ITEM_GO_GOGGLES 279
|
||||
#define ITEM_METEORITE 280
|
||||
#define ITEM_ROOM_1_KEY 281
|
||||
#define ITEM_ROOM_2_KEY 282
|
||||
#define ITEM_ROOM_4_KEY 283
|
||||
#define ITEM_ROOM_6_KEY 284
|
||||
#define ITEM_STORAGE_KEY 285
|
||||
#define ITEM_ROOT_FOSSIL 286
|
||||
#define ITEM_CLAW_FOSSIL 287
|
||||
#define ITEM_DEVON_SCOPE 288
|
||||
#define ITEM_TM01 289
|
||||
#define ITEM_TM02 290
|
||||
#define ITEM_TM03 291
|
||||
#define ITEM_TM04 292
|
||||
#define ITEM_TM05 293
|
||||
#define ITEM_TM06 294
|
||||
#define ITEM_TM07 295
|
||||
#define ITEM_TM08 296
|
||||
#define ITEM_TM09 297
|
||||
#define ITEM_TM10 298
|
||||
#define ITEM_TM11 299
|
||||
#define ITEM_TM12 300
|
||||
#define ITEM_TM13 301
|
||||
#define ITEM_TM14 302
|
||||
#define ITEM_TM15 303
|
||||
#define ITEM_TM16 304
|
||||
#define ITEM_TM17 305
|
||||
#define ITEM_TM18 306
|
||||
#define ITEM_TM19 307
|
||||
#define ITEM_TM20 308
|
||||
#define ITEM_TM21 309
|
||||
#define ITEM_TM22 310
|
||||
#define ITEM_TM23 311
|
||||
#define ITEM_TM24 312
|
||||
#define ITEM_TM25 313
|
||||
#define ITEM_TM26 314
|
||||
#define ITEM_TM27 315
|
||||
#define ITEM_TM28 316
|
||||
#define ITEM_TM29 317
|
||||
#define ITEM_TM30 318
|
||||
#define ITEM_TM31 319
|
||||
#define ITEM_TM32 320
|
||||
#define ITEM_TM33 321
|
||||
#define ITEM_TM34 322
|
||||
#define ITEM_TM35 323
|
||||
#define ITEM_TM36 324
|
||||
#define ITEM_TM37 325
|
||||
#define ITEM_TM38 326
|
||||
#define ITEM_TM39 327
|
||||
#define ITEM_TM40 328
|
||||
#define ITEM_TM41 329
|
||||
#define ITEM_TM42 330
|
||||
#define ITEM_TM43 331
|
||||
#define ITEM_TM44 332
|
||||
#define ITEM_TM45 333
|
||||
#define ITEM_TM46 334
|
||||
#define ITEM_TM47 335
|
||||
#define ITEM_TM48 336
|
||||
#define ITEM_TM49 337
|
||||
#define ITEM_TM50 338
|
||||
#define ITEM_HM01 339
|
||||
#define ITEM_HM02 340
|
||||
#define ITEM_HM03 341
|
||||
#define ITEM_HM04 342
|
||||
#define ITEM_HM05 343
|
||||
#define ITEM_HM06 344
|
||||
#define ITEM_HM07 345
|
||||
#define ITEM_HM08 346
|
||||
#define ITEM_15B 347
|
||||
#define ITEM_15C 348
|
||||
|
||||
// FireRed/LeafGreen
|
||||
#define ITEM_OAKS_PARCEL 349
|
||||
#define ITEM_POKE_FLUTE 350
|
||||
#define ITEM_SECRET_KEY 351
|
||||
#define ITEM_BIKE_VOUCHER 352
|
||||
#define ITEM_GOLD_TEETH 353
|
||||
#define ITEM_OLD_AMBER 354
|
||||
#define ITEM_CARD_KEY 355
|
||||
#define ITEM_LIFT_KEY 356
|
||||
#define ITEM_HELIX_FOSSIL 357
|
||||
#define ITEM_DOME_FOSSIL 358
|
||||
#define ITEM_SILPH_SCOPE 359
|
||||
#define ITEM_BICYCLE 360
|
||||
#define ITEM_TOWN_MAP 361
|
||||
#define ITEM_VS_SEEKER 362
|
||||
#define ITEM_FAME_CHECKER 363
|
||||
#define ITEM_TM_CASE 364
|
||||
#define ITEM_BERRY_POUCH 365
|
||||
#define ITEM_TEACHY_TV 366
|
||||
#define ITEM_TRI_PASS 367
|
||||
#define ITEM_RAINBOW_PASS 368
|
||||
#define ITEM_TEA 369
|
||||
#define ITEM_MYSTIC_TICKET 370
|
||||
#define ITEM_AURORA_TICKET 371
|
||||
#define ITEM_POWDER_JAR 372
|
||||
#define ITEM_RUBY 373
|
||||
#define ITEM_SAPPHIRE 374
|
||||
|
||||
//New Sellable Items
|
||||
#define ITEM_RARE_BONE 0x72
|
||||
#define ITEM_PEARL_STRING 0xE4
|
||||
#define ITEM_BIG_NUGGET 0xE5
|
||||
#define ITEM_COMET_SHARD 0x201
|
||||
#define ITEM_BALM_MUSHROOM 0x202
|
||||
|
||||
//New Food Items
|
||||
#define ITEM_HONEY 0x48
|
||||
#define ITEM_BIG_MALASADA 0x203
|
||||
#define ITEM_CASTELIACONE 0x204
|
||||
#define ITEM_LUMIOSE_GALETTE 0x205
|
||||
#define ITEM_RAGE_CANDY_BAR 0x206
|
||||
#define ITEM_SHALOUR_SABLE 0x207
|
||||
#define ITEM_OLD_GATEAU 0x208
|
||||
|
||||
//Fossils
|
||||
#define ITEM_SKULL_FOSSIL 0x209
|
||||
#define ITEM_ARMOR_FOSSIL 0x20A
|
||||
#define ITEM_COVER_FOSSIL 0x20B
|
||||
#define ITEM_PLUME_FOSSIL 0x20C
|
||||
#define ITEM_JAW_FOSSIL 0x20D
|
||||
#define ITEM_SAIL_FOSSIL 0x20E
|
||||
|
||||
//EV Gain Items
|
||||
#define ITEM_POWER_BRACER 0xF4
|
||||
#define ITEM_POWER_BELT 0xF5
|
||||
#define ITEM_POWER_LENS 0xF6
|
||||
#define ITEM_POWER_BAND 0xF7
|
||||
#define ITEM_POWER_ANKLET 0xF8
|
||||
#define ITEM_POWER_WEIGHT 0xF9
|
||||
|
||||
//New Battle Hold Items
|
||||
#define ITEM_ADAMANT_ORB 0x214
|
||||
#define ITEM_LUSTROUS_ORB 0x215
|
||||
#define ITEM_GRISEOUS_ORB 0x216
|
||||
|
||||
#define ITEM_EXPERT_BELT 0xEB
|
||||
#define ITEM_POWER_HERB 0xEC
|
||||
#define ITEM_WIDE_LENS 0xED
|
||||
#define ITEM_ZOOM_LENS 0xEE
|
||||
#define ITEM_DESTINY_KNOT 0xEF
|
||||
#define ITEM_SMOOTH_ROCK 0xF0
|
||||
#define ITEM_DAMP_ROCK 0xF1
|
||||
#define ITEM_HEAT_ROCK 0xF2
|
||||
#define ITEM_ICY_ROCK 0xF3
|
||||
#define ITEM_BIG_ROOT 0xFA
|
||||
#define ITEM_LIGHT_CLAY 0x5A
|
||||
#define ITEM_SAFETY_GOGGLES 0x1ED
|
||||
#define ITEM_ROCKY_HELMET 0xE2
|
||||
#define ITEM_WEAKNESS_POLICY 0xE3
|
||||
#define ITEM_ASSAULT_VEST 0x1EE
|
||||
#define ITEM_EVIOLITE 0x1EF
|
||||
#define ITEM_ABSORB_BULB 0x233
|
||||
#define ITEM_AIR_BALLOON 0x234
|
||||
#define ITEM_ADRENALINE_ORB 0x235
|
||||
#define ITEM_BINDING_BAND 0x236
|
||||
#define ITEM_CELL_BATTERY 0x237
|
||||
#define ITEM_EJECT_BUTTON 0x238
|
||||
#define ITEM_FLOAT_STONE 0x239
|
||||
#define ITEM_FOCUS_SASH 0x23A
|
||||
#define ITEM_GRIP_CLAW 0x23B
|
||||
#define ITEM_IRON_BALL 0x23C
|
||||
#define ITEM_LAGGING_TAIL 0x23D
|
||||
#define ITEM_LUMINOUS_MOSS 0x23E
|
||||
#define ITEM_METRONOME 0x240
|
||||
#define ITEM_MUSCLE_BAND 0x241
|
||||
#define ITEM_PROTECTIVE_PADS 0x242
|
||||
#define ITEM_RED_CARD 0x243
|
||||
#define ITEM_RING_TARGET 0x244
|
||||
#define ITEM_SHED_SHELL 0x245
|
||||
#define ITEM_SNOWBALL 0x246
|
||||
#define ITEM_STICKY_BARB 0x247
|
||||
#define ITEM_TERRAIN_EXTENDER 0x248
|
||||
#define ITEM_WISE_GLASSES 0x249
|
||||
#define ITEM_ELECTRIC_SEED 0x24A
|
||||
#define ITEM_GRASSY_SEED 0x24B
|
||||
#define ITEM_MISTY_SEED 0x24C
|
||||
#define ITEM_PSYCHIC_SEED 0x24D
|
||||
|
||||
#define ITEM_LIFE_ORB 0x37
|
||||
#define ITEM_TOXIC_ORB 0x38
|
||||
#define ITEM_FLAME_ORB 0x39
|
||||
#define ITEM_BLACK_SLUDGE 0x3A
|
||||
|
||||
#define ITEM_CHOICE_SPECS 0xB1
|
||||
#define ITEM_CHOICE_SCARF 0xB2
|
||||
|
||||
//New Incense
|
||||
#define ITEM_LUCK_INCENSE 0xFC
|
||||
#define ITEM_FULL_INCENSE 0xFD
|
||||
#define ITEM_ODD_INCENSE 0xFE
|
||||
#define ITEM_PURE_INCENSE 0xFF
|
||||
#define ITEM_ROCK_INCENSE 0x100
|
||||
#define ITEM_ROSE_INCENSE 0x101
|
||||
#define ITEM_WAVE_INCENSE 0x102
|
||||
|
||||
//Gems
|
||||
#define ITEM_NORMAL_GEM 0x24E
|
||||
#define ITEM_FIGHTING_GEM 0x24F
|
||||
#define ITEM_FLYING_GEM 0x250
|
||||
#define ITEM_POISON_GEM 0x251
|
||||
#define ITEM_GROUND_GEM 0x252
|
||||
#define ITEM_ROCK_GEM 0x253
|
||||
#define ITEM_BUG_GEM 0x254
|
||||
#define ITEM_GHOST_GEM 0x255
|
||||
#define ITEM_STEEL_GEM 0x256
|
||||
#define ITEM_FIRE_GEM 0x257
|
||||
#define ITEM_WATER_GEM 0x258
|
||||
#define ITEM_GRASS_GEM 0x259
|
||||
#define ITEM_ELECTRIC_GEM 0x25A
|
||||
#define ITEM_PSYCHIC_GEM 0x25B
|
||||
#define ITEM_ICE_GEM 0x25C
|
||||
#define ITEM_DRAGONG_EM 0x25D
|
||||
#define ITEM_DARK_GEM 0x25E
|
||||
#define ITEM_FAIRY_GEM 0x25F
|
||||
|
||||
//Arceus Plates
|
||||
#define ITEM_FIST_PLATE 0x1F0
|
||||
#define ITEM_SKY_PLATE 0x1F1
|
||||
#define ITEM_TOXIC_PLATE 0x1F2
|
||||
#define ITEM_EARTH_PLATE 0x1F3
|
||||
#define ITEM_STONE_PLATE 0x1F4
|
||||
#define ITEM_INSECT_PLATE 0x1F5
|
||||
#define ITEM_SPOOKY_PLATE 0x1F6
|
||||
#define ITEM_IRON_PLATE 0x1F7
|
||||
#define ITEM_FLAME_PLATE 0x1F8
|
||||
#define ITEM_SPLASH_PLATE 0x1F9
|
||||
#define ITEM_MEADOW_PLATE 0x1FA
|
||||
#define ITEM_ZAP_PLATE 0x1FB
|
||||
#define ITEM_MIND_PLATE 0x1FC
|
||||
#define ITEM_ICICLE_PLATE 0x1FD
|
||||
#define ITEM_DRACO_PLATE 0x1FE
|
||||
#define ITEM_DREAD_PLATE 0x1FF
|
||||
#define ITEM_PIXIE_PLATE 0x200
|
||||
|
||||
//Mega Stones
|
||||
#define ITEM_MEGA_RING 0x161
|
||||
|
||||
#define ITEM_ULTRA_NECROZIUM_Z 0x1BD
|
||||
#define ITEM_VENUSAURITE 0x1BE
|
||||
#define ITEM_CHARIZARDITE_X 0x1BF
|
||||
#define ITEM_CHARIZARDITE_Y 0x1C0
|
||||
#define ITEM_BLASTOISINITE 0x1C1
|
||||
#define ITEM_BEEDRILLITE 0x1C2
|
||||
#define ITEM_PIDGEOTITE 0x1C3
|
||||
#define ITEM_ALAKAZITE 0x1C4
|
||||
#define ITEM_SLOWBRONITE 0x1C5
|
||||
#define ITEM_GENGARITE 0x1C6
|
||||
#define ITEM_KANGASKHANITE 0x1C7
|
||||
#define ITEM_PINSIRITE 0x1C8
|
||||
#define ITEM_GYARADOSITE 0x1C9
|
||||
#define ITEM_AERODACTYLITE 0x1CA
|
||||
#define ITEM_MEWTWONITE_X 0x1CB
|
||||
#define ITEM_MEWTWONITE_Y 0x1CC
|
||||
#define ITEM_AMPHAROSITE 0x1CD
|
||||
#define ITEM_STEELIXITE 0x1CE
|
||||
#define ITEM_SCIZORITE 0x1CF
|
||||
#define ITEM_HERACRONITE 0x1D0
|
||||
#define ITEM_HOUNDOOMINITE 0x1D1
|
||||
#define ITEM_TYRANITARITE 0x1D2
|
||||
#define ITEM_SCEPTILITE 0x1D3
|
||||
#define ITEM_BLAZIKENITE 0x1D4
|
||||
#define ITEM_SWAMPERTITE 0x1D5
|
||||
#define ITEM_GARDEVOIRITE 0x1D6
|
||||
#define ITEM_SABLENITE 0x1D7
|
||||
#define ITEM_MAWILITE 0x1D8
|
||||
#define ITEM_AGGRONITE 0x1D9
|
||||
#define ITEM_MEDICHAMITE 0x1DA
|
||||
#define ITEM_MANECTITE 0x1DB
|
||||
#define ITEM_SHARPEDONITE 0x1DC
|
||||
#define ITEM_CAMERUPTITE 0x1DD
|
||||
#define ITEM_ALTARIANITE 0x1DE
|
||||
#define ITEM_BANETTITE 0x1DF
|
||||
#define ITEM_ABSOLITE 0x1E0
|
||||
#define ITEM_GLALITITE 0x1E1
|
||||
#define ITEM_SALAMENCITE 0x1E2
|
||||
#define ITEM_METAGROSSITE 0x1E3
|
||||
#define ITEM_LATIASITE 0x1E4
|
||||
#define ITEM_LATIOSITE 0x1E5
|
||||
#define ITEM_LOPUNNITE 0x1E6
|
||||
#define ITEM_GARCHOMPITE 0x1E7
|
||||
#define ITEM_LUCARIONITE 0x1E8
|
||||
#define ITEM_ABOMASITE 0x1E9
|
||||
#define ITEM_GALLADITE 0x1EA
|
||||
#define ITEM_AUDINITE 0x1EB
|
||||
#define ITEM_DIANCITE 0x1EC
|
||||
|
||||
//Type-Resist Berries
|
||||
#define ITEM_OCCA_BERRY 0x21B
|
||||
#define ITEM_PASSHO_BERRY 0x21C
|
||||
#define ITEM_WACAN_BERRY 0x21D
|
||||
#define ITEM_RINDO_BERRY 0x21E
|
||||
#define ITEM_YACHE_BERRY 0x21F
|
||||
#define ITEM_CHOPLE_BERRY 0x220
|
||||
#define ITEM_KEBIA_BERRY 0x221
|
||||
#define ITEM_SHUCA_BERRY 0x222
|
||||
#define ITEM_COBA_BERRY 0x223
|
||||
#define ITEM_PAYAPA_BERRY 0x224
|
||||
#define ITEM_TANGA_BERRY 0x225
|
||||
#define ITEM_CHARTI_BERRY 0x226
|
||||
#define ITEM_KASIB_BERRY 0x227
|
||||
#define ITEM_HABAN_BERRY 0x228
|
||||
#define ITEM_COLBUR_BERRY 0x229
|
||||
#define ITEM_BABIRI_BERRY 0x22A
|
||||
#define ITEM_CHILAN_BERRY 0x22B
|
||||
#define ITEM_MICLE_BERRY 0x22C
|
||||
#define ITEM_CUSTAP_BERRY 0x22D
|
||||
#define ITEM_JABOCA_BERRY 0x22E
|
||||
#define ITEM_ROWAP_BERRY 0x22F
|
||||
#define ITEM_ROSELI_BERRY 0x230
|
||||
#define ITEM_KEE_BERRY 0x231
|
||||
#define ITEM_MARANGA_BERRY 0x232
|
||||
|
||||
//New Poke Balls
|
||||
#define ITEM_PARK_BALL 0x34
|
||||
#define ITEM_CHERISH_BALL 0x35
|
||||
#define ITEM_DUSK_BALL 0x3C
|
||||
#define ITEM_HEAL_BALL 0x3D
|
||||
#define ITEM_QUICK_BALL 0x3E
|
||||
#define ITEM_FAST_BALL 0x26E
|
||||
#define ITEM_LEVEL_BALL 0x26F
|
||||
#define ITEM_LURE_BALL 0x270
|
||||
#define ITEM_HEAVY_BALL 0x271
|
||||
#define ITEM_LOVE_BALL 0x272
|
||||
#define ITEM_FRIEND_BALL 0x273
|
||||
#define ITEM_MOON_BALL 0x274
|
||||
#define ITEM_SPORT_BALL 0x275
|
||||
#define ITEM_BEAST_BALL 0x276
|
||||
#define ITEM_DREAM_BALL 0x277
|
||||
|
||||
//Genesect Drives
|
||||
#define ITEM_BURN_DRIVE 0x27A
|
||||
#define ITEM_DOUSE_DRIVE 0x27B
|
||||
#define ITEM_SHOCK_DRIVE 0x27C
|
||||
#define ITEM_CHILL_DRIVE 0x27D
|
||||
|
||||
//Silvally Memories
|
||||
#define ITEM_FIGHTING_MEMORY 0x27E
|
||||
#define ITEM_FLYING_MEMORY 0x27F
|
||||
#define ITEM_POISON_MEMORY 0x280
|
||||
#define ITEM_GROUND_MEMORY 0x281
|
||||
#define ITEM_ROCK_MEMORY 0x282
|
||||
#define ITEM_BUG_MEMORY 0x283
|
||||
#define ITEM_GHOST_MEMORY 0x284
|
||||
#define ITEM_STEEL_MEMORY 0x285
|
||||
#define ITEM_FIRE_MEMORY 0x286
|
||||
#define ITEM_WATER_MEMORY 0x287
|
||||
#define ITEM_GRASS_MEMORY 0x288
|
||||
#define ITEM_ELECTRIC_MEMORY 0x289
|
||||
#define ITEM_PSYCHIC_MEMORY 0x28A
|
||||
#define ITEM_ICE_MEMORY 0x28B
|
||||
#define ITEM_DRAGON_MEMORY 0x28C
|
||||
#define ITEM_DARK_MEMORY 0x28D
|
||||
#define ITEM_FAIRY_MEMORY 0x28E
|
||||
|
||||
//Wings
|
||||
#define ITEM_HEALTH_WING 0x261
|
||||
#define ITEM_MUSCLE_WING 0x262
|
||||
#define ITEM_RESIST_WING 0x263
|
||||
#define ITEM_GENIUS_WING 0x264
|
||||
#define ITEM_CLEVER_WING 0x265
|
||||
#define ITEM_SWIFT_WING 0x266
|
||||
#define ITEM_PRETTY_WING 0x267
|
||||
|
||||
//Random Normal Items
|
||||
#define ITEM_ODD_KEYSTONE 0xFB
|
||||
#define ITEM_BOTTLE_CAP 0x268
|
||||
#define ITEM_GOLD_BOTTLE_CAP 0x269
|
||||
#define ITEM_ABILITY_CAPSULE 0x260
|
||||
|
||||
//Nectars
|
||||
#define ITEM_RED_NECTAR 0x26A
|
||||
#define ITEM_YELLOW_NECTAR 0x26B
|
||||
#define ITEM_PINK_NECTAR 0x26C
|
||||
#define ITEM_PURPLE_NECTAR 0x26D
|
||||
|
||||
//Evolution Items
|
||||
#define ITEM_LINK_CABLE 0x5B
|
||||
#define ITEM_DUSK_STONE 0x63
|
||||
#define ITEM_DAWN_STONE 0x64
|
||||
#define ITEM_SHINY_STONE 0x65
|
||||
#define ITEM_OVAL_STONE 0x66
|
||||
#define ITEM_ICE_STONE 0x69
|
||||
|
||||
#define ITEM_PROTECTOR 0x70
|
||||
#define ITEM_MAGMARIZER 0x71
|
||||
#define ITEM_PRISM_SCALE 0x73
|
||||
#define ITEM_SACHET 0x74
|
||||
#define ITEM_WHIPPED_DREAM 0x75
|
||||
#define ITEM_RAZOR_CLAW 0xE6
|
||||
#define ITEM_RAZOR_FANG 0xE7
|
||||
#define ITEM_REAPER_CLOTH 0xE8
|
||||
#define ITEM_DUBIOUS_DISK 0xE9
|
||||
#define ITEM_ELECTRIZER 0xEA
|
||||
|
||||
//New Key Items
|
||||
#define ITEM_GRACIDEA 0x217
|
||||
#define ITEM_DNA_SPLICERS 0x218
|
||||
#define ITEM_REVEAL_GLASS 0x219
|
||||
#define ITEM_PRISON_BOTTLE 0x220
|
||||
|
||||
#define ITEM_OVAL_CHARM 0x278
|
||||
#define ITEM_SHINY_CHARM 0x279
|
||||
#define ITEM_RAINBOW_WING 0x28F
|
||||
#define ITEM_SILVER_WING 0x290
|
||||
#define ITEM_N_SOLARIZER 0x291
|
||||
#define ITEM_N_LUNARIZER 0x292
|
||||
#define ITEM_SUN_FLUTE 0x293
|
||||
#define ITEM_MOON_FLUTE 0x294
|
||||
#define ITEM_LIGHT_STONE 0x295
|
||||
#define ITEM_DARK_STONE 0x296
|
||||
|
||||
//Relic Items
|
||||
#define ITEM_RELIC_COPPER 0x297
|
||||
#define ITEM_RELIC_SILVER 0x298
|
||||
#define ITEM_RELIC_GOLD 0x299
|
||||
#define ITEM_RELIC_VASE 0x29A
|
||||
#define ITEM_RELIC_BAND 0x29B
|
||||
#define ITEM_RELIC_STATUE 0x29C
|
||||
#define ITEM_RELIC_CROWN 0x29D
|
||||
|
||||
//Z-Crystals
|
||||
enum
|
||||
{
|
||||
ITEM_NORMALIUM_Z = 0x29E, //All items after this will be 0x29E + 1, 0x29E + 2...
|
||||
ITEM_FIGHTINIUM_Z, //Put the Z-Crystals in order
|
||||
ITEM_FLYINIUM_Z,
|
||||
ITEM_POISONIUM_Z,
|
||||
ITEM_GROUNDIUM_Z,
|
||||
ITEM_ROCKIUM_Z,
|
||||
ITEM_BUGINIUM_Z,
|
||||
ITEM_GHOSTIUM_Z,
|
||||
ITEM_STEELIUM_Z,
|
||||
ITEM_FIRIUM_Z,
|
||||
ITEM_WATERIUM_Z,
|
||||
ITEM_GRASSIUM_Z,
|
||||
ITEM_ELECTRIUM_Z,
|
||||
ITEM_PSYCHIUM_Z,
|
||||
ITEM_ICIUM_Z,
|
||||
ITEM_DRAGONIUM_Z,
|
||||
ITEM_DARKINIUM_Z,
|
||||
ITEM_FAIRIUM,
|
||||
ITEM_ALORAICHUIUM_Z,
|
||||
ITEM_DECIDIUM_Z,
|
||||
ITEM_EEVIUM_Z,
|
||||
ITEM_INCINIUM_Z,
|
||||
ITEM_KOMMONIUM_Z,
|
||||
ITEM_LUNALIUM_Z,
|
||||
ITEM_LYCANIUM_Z,
|
||||
ITEM_MARSHADIUM_Z,
|
||||
ITEM_MEWNIUM_Z,
|
||||
ITEM_MIMIKIUM_Z,
|
||||
ITEM_PIKANIUM_Z,
|
||||
ITEM_PIKASHUNIUM_Z,
|
||||
ITEM_PRIMARIUM_Z,
|
||||
ITEM_SNORLIUM_Z,
|
||||
ITEM_SOLGANIUM_Z,
|
||||
ITEM_TAPUNIUM_Z,
|
||||
};
|
||||
|
||||
//For Pokemon Unbound
|
||||
#ifdef UNBOUND
|
||||
|
||||
#undef ITEM_ENIGMA_BERRY
|
||||
|
||||
#define ITEM_ODDISH_LEAF 0x57
|
||||
#define ITEM_ENIGMA_BERRY 0x76
|
||||
#define ITEM_DOWSING_MACHINE 0x105
|
||||
#define ITEM_UNIFORM 0x10B
|
||||
#define ITEM_FASHION_CASE 0x10E
|
||||
#define ITEM_POKE_BALL_KEY_ITEM 0x111
|
||||
#define ITEM_KEY_CARD_1 0x163
|
||||
#define ITEM_KEY_CARD_2 0x11A
|
||||
#define ITEM_KEY_CARD_3 0x11B
|
||||
#define ITEM_QUEST_LOG 0x15C
|
||||
#define ITEM_SMELLY_SOCKS 0x15F
|
||||
|
||||
#endif
|
||||
|
||||
// Emerald
|
||||
#define FIRST_BERRY_INDEX ITEM_CHERI_BERRY
|
||||
#define LAST_BERRY_INDEX ITEM_ENIGMA_BERRY
|
||||
#define ITEM_TO_BERRY(itemId)(((itemId - FIRST_BERRY_INDEX) + 1))
|
||||
|
||||
#define NUM_TECHNICAL_MACHINES 50
|
||||
#define NUM_HIDDEN_MACHINES 8
|
||||
|
||||
// Check if the item is one that can be used on a Pokemon.
|
||||
#define IS_POKEMON_ITEM(item) ((item) >= ITEM_POTION && (item) <= ITEM_0B2)
|
||||
|
||||
// POCKETS
|
||||
#define POCKET_ITEMS 1
|
||||
#define POCKET_KEY_ITEMS 2
|
||||
#define POCKET_POKE_BALLS 3
|
||||
#define POCKET_TM_CASE 4
|
||||
#define POCKET_BERRY_POUCH 5
|
||||
743
include/moves.h
Normal file
743
include/moves.h
Normal file
|
|
@ -0,0 +1,743 @@
|
|||
#pragma once
|
||||
|
||||
#define MOVE_NAME_LENGTH 12
|
||||
|
||||
#define MOVE_NONE 0x0
|
||||
#define MOVE_POUND 0x1
|
||||
#define MOVE_KARATECHOP 0x2
|
||||
#define MOVE_DOUBLESLAP 0x3
|
||||
#define MOVE_COMETPUNCH 0x4
|
||||
#define MOVE_MEGAPUNCH 0x5
|
||||
#define MOVE_PAYDAY 0x6
|
||||
#define MOVE_FIREPUNCH 0x7
|
||||
#define MOVE_ICEPUNCH 0x8
|
||||
#define MOVE_THUNDERPUNCH 0x9
|
||||
#define MOVE_SCRATCH 0xA
|
||||
#define MOVE_VICEGRIP 0xB
|
||||
#define MOVE_GUILLOTINE 0xC
|
||||
#define MOVE_RAZORWIND 0xD
|
||||
#define MOVE_SWORDSDANCE 0xE
|
||||
#define MOVE_CUT 0xF
|
||||
#define MOVE_GUST 0x10
|
||||
#define MOVE_WINGATTACK 0x11
|
||||
#define MOVE_WHIRLWIND 0x12
|
||||
#define MOVE_FLY 0x13
|
||||
#define MOVE_BIND 0x14
|
||||
#define MOVE_SLAM 0x15
|
||||
#define MOVE_VINEWHIP 0x16
|
||||
#define MOVE_STOMP 0x17
|
||||
#define MOVE_DOUBLEKICK 0x18
|
||||
#define MOVE_MEGAKICK 0x19
|
||||
#define MOVE_JUMPKICK 0x1A
|
||||
#define MOVE_ROLLINGKICK 0x1B
|
||||
#define MOVE_SANDATTACK 0x1C
|
||||
#define MOVE_HEADBUTT 0x1D
|
||||
#define MOVE_HORNATTACK 0x1E
|
||||
#define MOVE_FURYATTACK 0x1F
|
||||
#define MOVE_HORNDRILL 0x20
|
||||
#define MOVE_TACKLE 0x21
|
||||
#define MOVE_BODYSLAM 0x22
|
||||
#define MOVE_WRAP 0x23
|
||||
#define MOVE_TAKEDOWN 0x24
|
||||
#define MOVE_THRASH 0x25
|
||||
#define MOVE_DOUBLEEDGE 0x26
|
||||
#define MOVE_TAILWHIP 0x27
|
||||
#define MOVE_POISONSTING 0x28
|
||||
#define MOVE_TWINEEDLE 0x29
|
||||
#define MOVE_PINMISSILE 0x2A
|
||||
#define MOVE_LEER 0x2B
|
||||
#define MOVE_BITE 0x2C
|
||||
#define MOVE_GROWL 0x2D
|
||||
#define MOVE_ROAR 0x2E
|
||||
#define MOVE_SING 0x2F
|
||||
#define MOVE_SUPERSONIC 0x30
|
||||
#define MOVE_SONICBOOM 0x31
|
||||
#define MOVE_DISABLE 0x32
|
||||
#define MOVE_ACID 0x33
|
||||
#define MOVE_EMBER 0x34
|
||||
#define MOVE_FLAMETHROWER 0x35
|
||||
#define MOVE_MIST 0x36
|
||||
#define MOVE_WATERGUN 0x37
|
||||
#define MOVE_HYDROPUMP 0x38
|
||||
#define MOVE_SURF 0x39
|
||||
#define MOVE_ICEBEAM 0x3A
|
||||
#define MOVE_BLIZZARD 0x3B
|
||||
#define MOVE_PSYBEAM 0x3C
|
||||
#define MOVE_BUBBLEBEAM 0x3D
|
||||
#define MOVE_AURORABEAM 0x3E
|
||||
#define MOVE_HYPERBEAM 0x3F
|
||||
#define MOVE_PECK 0x40
|
||||
#define MOVE_DRILLPECK 0x41
|
||||
#define MOVE_SUBMISSION 0x42
|
||||
#define MOVE_LOWKICK 0x43
|
||||
#define MOVE_COUNTER 0x44
|
||||
#define MOVE_SEISMICTOSS 0x45
|
||||
#define MOVE_STRENGTH 0x46
|
||||
#define MOVE_ABSORB 0x47
|
||||
#define MOVE_MEGADRAIN 0x48
|
||||
#define MOVE_LEECHSEED 0x49
|
||||
#define MOVE_GROWTH 0x4A
|
||||
#define MOVE_RAZORLEAF 0x4B
|
||||
#define MOVE_SOLARBEAM 0x4C
|
||||
#define MOVE_POISONPOWDER 0x4D
|
||||
#define MOVE_STUNSPORE 0x4E
|
||||
#define MOVE_SLEEPPOWDER 0x4F
|
||||
#define MOVE_PETALDANCE 0x50
|
||||
#define MOVE_STRINGSHOT 0x51
|
||||
#define MOVE_DRAGONRAGE 0x52
|
||||
#define MOVE_FIRESPIN 0x53
|
||||
#define MOVE_THUNDERSHOCK 0x54
|
||||
#define MOVE_THUNDERBOLT 0x55
|
||||
#define MOVE_THUNDERWAVE 0x56
|
||||
#define MOVE_THUNDER 0x57
|
||||
#define MOVE_ROCKTHROW 0x58
|
||||
#define MOVE_EARTHQUAKE 0x59
|
||||
#define MOVE_FISSURE 0x5A
|
||||
#define MOVE_DIG 0x5B
|
||||
#define MOVE_TOXIC 0x5C
|
||||
#define MOVE_CONFUSION 0x5D
|
||||
#define MOVE_PSYCHIC 0x5E
|
||||
#define MOVE_HYPNOSIS 0x5F
|
||||
#define MOVE_MEDITATE 0x60
|
||||
#define MOVE_AGILITY 0x61
|
||||
#define MOVE_QUICKATTACK 0x62
|
||||
#define MOVE_RAGE 0x63
|
||||
#define MOVE_TELEPORT 0x64
|
||||
#define MOVE_NIGHTSHADE 0x65
|
||||
#define MOVE_MIMIC 0x66
|
||||
#define MOVE_SCREECH 0x67
|
||||
#define MOVE_DOUBLETEAM 0x68
|
||||
#define MOVE_RECOVER 0x69
|
||||
#define MOVE_HARDEN 0x6A
|
||||
#define MOVE_MINIMIZE 0x6B
|
||||
#define MOVE_SMOKESCREEN 0x6C
|
||||
#define MOVE_CONFUSERAY 0x6D
|
||||
#define MOVE_WITHDRAW 0x6E
|
||||
#define MOVE_DEFENSECURL 0x6F
|
||||
#define MOVE_BARRIER 0x70
|
||||
#define MOVE_LIGHTSCREEN 0x71
|
||||
#define MOVE_HAZE 0x72
|
||||
#define MOVE_REFLECT 0x73
|
||||
#define MOVE_FOCUSENERGY 0x74
|
||||
#define MOVE_BIDE 0x75
|
||||
#define MOVE_METRONOME 0x76
|
||||
#define MOVE_MIRRORMOVE 0x77
|
||||
#define MOVE_SELFDESTRUCT 0x78
|
||||
#define MOVE_EGGBOMB 0x79
|
||||
#define MOVE_LICK 0x7A
|
||||
#define MOVE_SMOG 0x7B
|
||||
#define MOVE_SLUDGE 0x7C
|
||||
#define MOVE_BONECLUB 0x7D
|
||||
#define MOVE_FIREBLAST 0x7E
|
||||
#define MOVE_WATERFALL 0x7F
|
||||
#define MOVE_CLAMP 0x80
|
||||
#define MOVE_SWIFT 0x81
|
||||
#define MOVE_SKULLBASH 0x82
|
||||
#define MOVE_SPIKECANNON 0x83
|
||||
#define MOVE_CONSTRICT 0x84
|
||||
#define MOVE_AMNESIA 0x85
|
||||
#define MOVE_KINESIS 0x86
|
||||
#define MOVE_SOFTBOILED 0x87
|
||||
#define MOVE_HIGHJUMPKICK 0x88
|
||||
#define MOVE_GLARE 0x89
|
||||
#define MOVE_DREAMEATER 0x8A
|
||||
#define MOVE_POISONGAS 0x8B
|
||||
#define MOVE_BARRAGE 0x8C
|
||||
#define MOVE_LEECHLIFE 0x8D
|
||||
#define MOVE_LOVELYKISS 0x8E
|
||||
#define MOVE_SKYATTACK 0x8F
|
||||
#define MOVE_TRANSFORM 0x90
|
||||
#define MOVE_BUBBLE 0x91
|
||||
#define MOVE_DIZZYPUNCH 0x92
|
||||
#define MOVE_SPORE 0x93
|
||||
#define MOVE_FLASH 0x94
|
||||
#define MOVE_PSYWAVE 0x95
|
||||
#define MOVE_SPLASH 0x96
|
||||
#define MOVE_ACIDARMOR 0x97
|
||||
#define MOVE_CRABHAMMER 0x98
|
||||
#define MOVE_EXPLOSION 0x99
|
||||
#define MOVE_FURYSWIPES 0x9A
|
||||
#define MOVE_BONEMERANG 0x9B
|
||||
#define MOVE_REST 0x9C
|
||||
#define MOVE_ROCKSLIDE 0x9D
|
||||
#define MOVE_HYPERFANG 0x9E
|
||||
#define MOVE_SHARPEN 0x9F
|
||||
#define MOVE_CONVERSION 0xA0
|
||||
#define MOVE_TRIATTACK 0xA1
|
||||
#define MOVE_SUPERFANG 0xA2
|
||||
#define MOVE_SLASH 0xA3
|
||||
#define MOVE_SUBSTITUTE 0xA4
|
||||
#define MOVE_STRUGGLE 0xA5
|
||||
#define MOVE_SKETCH 0xA6
|
||||
#define MOVE_TRIPLEKICK 0xA7
|
||||
#define MOVE_THIEF 0xA8
|
||||
#define MOVE_SPIDERWEB 0xA9
|
||||
#define MOVE_MINDREADER 0xAA
|
||||
#define MOVE_NIGHTMARE 0xAB
|
||||
#define MOVE_FLAMEWHEEL 0xAC
|
||||
#define MOVE_SNORE 0xAD
|
||||
#define MOVE_CURSE 0xAE
|
||||
#define MOVE_FLAIL 0xAF
|
||||
#define MOVE_CONVERSION2 0xB0
|
||||
#define MOVE_AEROBLAST 0xB1
|
||||
#define MOVE_COTTONSPORE 0xB2
|
||||
#define MOVE_REVERSAL 0xB3
|
||||
#define MOVE_SPITE 0xB4
|
||||
#define MOVE_POWDERSNOW 0xB5
|
||||
#define MOVE_PROTECT 0xB6
|
||||
#define MOVE_MACHPUNCH 0xB7
|
||||
#define MOVE_SCARYFACE 0xB8
|
||||
#define MOVE_FEINTATTACK 0xB9
|
||||
#define MOVE_SWEETKISS 0xBA
|
||||
#define MOVE_BELLYDRUM 0xBB
|
||||
#define MOVE_SLUDGEBOMB 0xBC
|
||||
#define MOVE_MUDSLAP 0xBD
|
||||
#define MOVE_OCTAZOOKA 0xBE
|
||||
#define MOVE_SPIKES 0xBF
|
||||
#define MOVE_ZAPCANNON 0xC0
|
||||
#define MOVE_FORESIGHT 0xC1
|
||||
#define MOVE_DESTINYBOND 0xC2
|
||||
#define MOVE_PERISHSONG 0xC3
|
||||
#define MOVE_ICYWIND 0xC4
|
||||
#define MOVE_DETECT 0xC5
|
||||
#define MOVE_BONERUSH 0xC6
|
||||
#define MOVE_LOCKON 0xC7
|
||||
#define MOVE_OUTRAGE 0xC8
|
||||
#define MOVE_SANDSTORM 0xC9
|
||||
#define MOVE_GIGADRAIN 0xCA
|
||||
#define MOVE_ENDURE 0xCB
|
||||
#define MOVE_CHARM 0xCC
|
||||
#define MOVE_ROLLOUT 0xCD
|
||||
#define MOVE_FALSESWIPE 0xCE
|
||||
#define MOVE_SWAGGER 0xCF
|
||||
#define MOVE_MILKDRINK 0xD0
|
||||
#define MOVE_SPARK 0xD1
|
||||
#define MOVE_FURYCUTTER 0xD2
|
||||
#define MOVE_STEELWING 0xD3
|
||||
#define MOVE_MEANLOOK 0xD4
|
||||
#define MOVE_ATTRACT 0xD5
|
||||
#define MOVE_SLEEPTALK 0xD6
|
||||
#define MOVE_HEALBELL 0xD7
|
||||
#define MOVE_RETURN 0xD8
|
||||
#define MOVE_PRESENT 0xD9
|
||||
#define MOVE_FRUSTRATION 0xDA
|
||||
#define MOVE_SAFEGUARD 0xDB
|
||||
#define MOVE_PAINSPLIT 0xDC
|
||||
#define MOVE_SACREDFIRE 0xDD
|
||||
#define MOVE_MAGNITUDE 0xDE
|
||||
#define MOVE_DYNAMICPUNCH 0xDF
|
||||
#define MOVE_MEGAHORN 0xE0
|
||||
#define MOVE_DRAGONBREATH 0xE1
|
||||
#define MOVE_BATONPASS 0xE2
|
||||
#define MOVE_ENCORE 0xE3
|
||||
#define MOVE_PURSUIT 0xE4
|
||||
#define MOVE_RAPIDSPIN 0xE5
|
||||
#define MOVE_SWEETSCENT 0xE6
|
||||
#define MOVE_IRONTAIL 0xE7
|
||||
#define MOVE_METALCLAW 0xE8
|
||||
#define MOVE_VITALTHROW 0xE9
|
||||
#define MOVE_MORNINGSUN 0xEA
|
||||
#define MOVE_SYNTHESIS 0xEB
|
||||
#define MOVE_MOONLIGHT 0xEC
|
||||
#define MOVE_HIDDENPOWER 0xED
|
||||
#define MOVE_CROSSCHOP 0xEE
|
||||
#define MOVE_TWISTER 0xEF
|
||||
#define MOVE_RAINDANCE 0xF0
|
||||
#define MOVE_SUNNYDAY 0xF1
|
||||
#define MOVE_CRUNCH 0xF2
|
||||
#define MOVE_MIRRORCOAT 0xF3
|
||||
#define MOVE_PSYCHUP 0xF4
|
||||
#define MOVE_EXTREMESPEED 0xF5
|
||||
#define MOVE_ANCIENTPOWER 0xF6
|
||||
#define MOVE_SHADOWBALL 0xF7
|
||||
#define MOVE_FUTURESIGHT 0xF8
|
||||
#define MOVE_ROCKSMASH 0xF9
|
||||
#define MOVE_WHIRLPOOL 0xFA
|
||||
#define MOVE_BEATUP 0xFB
|
||||
#define MOVE_FAKEOUT 0xFC
|
||||
#define MOVE_UPROAR 0xFD
|
||||
#define MOVE_STOCKPILE 0xFE
|
||||
#define MOVE_SPITUP 0xFF
|
||||
#define MOVE_SWALLOW 0x100
|
||||
#define MOVE_HEATWAVE 0x101
|
||||
#define MOVE_HAIL 0x102
|
||||
#define MOVE_TORMENT 0x103
|
||||
#define MOVE_FLATTER 0x104
|
||||
#define MOVE_WILLOWISP 0x105
|
||||
#define MOVE_MEMENTO 0x106
|
||||
#define MOVE_FACADE 0x107
|
||||
#define MOVE_FOCUSPUNCH 0x108
|
||||
#define MOVE_SMELLINGSALTS 0x109
|
||||
#define MOVE_FOLLOWME 0x10A
|
||||
#define MOVE_NATUREPOWER 0x10B
|
||||
#define MOVE_CHARGE 0x10C
|
||||
#define MOVE_TAUNT 0x10D
|
||||
#define MOVE_HELPINGHAND 0x10E
|
||||
#define MOVE_TRICK 0x10F
|
||||
#define MOVE_ROLEPLAY 0x110
|
||||
#define MOVE_WISH 0x111
|
||||
#define MOVE_ASSIST 0x112
|
||||
#define MOVE_INGRAIN 0x113
|
||||
#define MOVE_SUPERPOWER 0x114
|
||||
#define MOVE_MAGICCOAT 0x115
|
||||
#define MOVE_RECYCLE 0x116
|
||||
#define MOVE_REVENGE 0x117
|
||||
#define MOVE_BRICKBREAK 0x118
|
||||
#define MOVE_YAWN 0x119
|
||||
#define MOVE_KNOCKOFF 0x11A
|
||||
#define MOVE_ENDEAVOR 0x11B
|
||||
#define MOVE_ERUPTION 0x11C
|
||||
#define MOVE_SKILLSWAP 0x11D
|
||||
#define MOVE_IMPRISON 0x11E
|
||||
#define MOVE_REFRESH 0x11F
|
||||
#define MOVE_GRUDGE 0x120
|
||||
#define MOVE_SNATCH 0x121
|
||||
#define MOVE_SECRETPOWER 0x122
|
||||
#define MOVE_DIVE 0x123
|
||||
#define MOVE_ARMTHRUST 0x124
|
||||
#define MOVE_CAMOUFLAGE 0x125
|
||||
#define MOVE_TAILGLOW 0x126
|
||||
#define MOVE_LUSTERPURGE 0x127
|
||||
#define MOVE_MISTBALL 0x128
|
||||
#define MOVE_FEATHERDANCE 0x129
|
||||
#define MOVE_TEETERDANCE 0x12A
|
||||
#define MOVE_BLAZEKICK 0x12B
|
||||
#define MOVE_MUDSPORT 0x12C
|
||||
#define MOVE_ICEBALL 0x12D
|
||||
#define MOVE_NEEDLEARM 0x12E
|
||||
#define MOVE_SLACKOFF 0x12F
|
||||
#define MOVE_HYPERVOICE 0x130
|
||||
#define MOVE_POISONFANG 0x131
|
||||
#define MOVE_CRUSHCLAW 0x132
|
||||
#define MOVE_BLASTBURN 0x133
|
||||
#define MOVE_HYDROCANNON 0x134
|
||||
#define MOVE_METEORMASH 0x135
|
||||
#define MOVE_ASTONISH 0x136
|
||||
#define MOVE_WEATHERBALL 0x137
|
||||
#define MOVE_AROMATHERAPY 0x138
|
||||
#define MOVE_FAKETEARS 0x139
|
||||
#define MOVE_AIRCUTTER 0x13A
|
||||
#define MOVE_OVERHEAT 0x13B
|
||||
#define MOVE_ODORSLEUTH 0x13C
|
||||
#define MOVE_ROCKTOMB 0x13D
|
||||
#define MOVE_SILVERWIND 0x13E
|
||||
#define MOVE_METALSOUND 0x13F
|
||||
#define MOVE_GRASSWHISTLE 0x140
|
||||
#define MOVE_TICKLE 0x141
|
||||
#define MOVE_COSMICPOWER 0x142
|
||||
#define MOVE_WATERSPOUT 0x143
|
||||
#define MOVE_SIGNALBEAM 0x144
|
||||
#define MOVE_SHADOWPUNCH 0x145
|
||||
#define MOVE_EXTRASENSORY 0x146
|
||||
#define MOVE_SKYUPPERCUT 0x147
|
||||
#define MOVE_SANDTOMB 0x148
|
||||
#define MOVE_SHEERCOLD 0x149
|
||||
#define MOVE_MUDDYWATER 0x14A
|
||||
#define MOVE_BULLETSEED 0x14B
|
||||
#define MOVE_AERIALACE 0x14C
|
||||
#define MOVE_ICICLESPEAR 0x14D
|
||||
#define MOVE_IRONDEFENSE 0x14E
|
||||
#define MOVE_BLOCK 0x14F
|
||||
#define MOVE_HOWL 0x150
|
||||
#define MOVE_DRAGONCLAW 0x151
|
||||
#define MOVE_FRENZYPLANT 0x152
|
||||
#define MOVE_BULKUP 0x153
|
||||
#define MOVE_BOUNCE 0x154
|
||||
#define MOVE_MUDSHOT 0x155
|
||||
#define MOVE_POISONTAIL 0x156
|
||||
#define MOVE_COVET 0x157
|
||||
#define MOVE_VOLTTACKLE 0x158
|
||||
#define MOVE_MAGICALLEAF 0x159
|
||||
#define MOVE_WATERSPORT 0x15A
|
||||
#define MOVE_CALMMIND 0x15B
|
||||
#define MOVE_LEAFBLADE 0x15C
|
||||
#define MOVE_DRAGONDANCE 0x15D
|
||||
#define MOVE_ROCKBLAST 0x15E
|
||||
#define MOVE_SHOCKWAVE 0x15F
|
||||
#define MOVE_WATERPULSE 0x160
|
||||
#define MOVE_DOOMDESIRE 0x161
|
||||
#define MOVE_PSYCHOBOOST 0x162
|
||||
#define MOVE_LEECHFANG 0x163
|
||||
#define MOVE_AIRSLASH 0x164
|
||||
#define MOVE_AQUAJET 0x165
|
||||
#define MOVE_AQUATAIL 0x166
|
||||
#define MOVE_AURASPHERE 0x167
|
||||
#define MOVE_AVALANCHE 0x168
|
||||
#define MOVE_BRAVEBIRD 0x169
|
||||
#define MOVE_BUGBUZZ 0x16A
|
||||
#define MOVE_BULLETPUNCH 0x16B
|
||||
#define MOVE_CHARGEBEAM 0x16C
|
||||
#define MOVE_CLOSECOMBAT 0x16D
|
||||
#define MOVE_CROSSPOISON 0x16E
|
||||
#define MOVE_DARKPULSE 0x16F
|
||||
#define MOVE_DISCHARGE 0x170
|
||||
#define MOVE_DRACOMETEOR 0x171
|
||||
#define MOVE_DRAGONPULSE 0x172
|
||||
#define MOVE_DRAINPUNCH 0x173
|
||||
#define MOVE_EARTHPOWER 0x174
|
||||
#define MOVE_ENERGYBALL 0x175
|
||||
#define MOVE_FOCUSBLAST 0x176
|
||||
#define MOVE_FORCEPALM 0x177
|
||||
#define MOVE_GIGAIMPACT 0x178
|
||||
#define MOVE_GRASSKNOT 0x179
|
||||
#define MOVE_GUNKSHOT 0x17A
|
||||
#define MOVE_HAMMERARM 0x17B
|
||||
#define MOVE_HEADSMASH 0x17C
|
||||
#define MOVE_ICESHARD 0x17D
|
||||
#define MOVE_IRONHEAD 0x17E
|
||||
#define MOVE_LAVAPLUME 0x17F
|
||||
#define MOVE_MAGNETBOMB 0x180
|
||||
#define MOVE_MUDBOMB 0x181
|
||||
#define MOVE_NASTYPLOT 0x182
|
||||
#define MOVE_NIGHTSLASH 0x183
|
||||
#define MOVE_OMINOUSWIND 0x184
|
||||
#define MOVE_POWERGEM 0x185
|
||||
#define MOVE_POWERWHIP 0x186
|
||||
#define MOVE_PSYCHOCUT 0x187
|
||||
#define MOVE_ROCKCLIMB 0x188
|
||||
#define MOVE_ROCKPOLISH 0x189
|
||||
#define MOVE_ROCKWRECKER 0x18A
|
||||
#define MOVE_ROOST 0x18B
|
||||
#define MOVE_SEEDBOMB 0x18C
|
||||
#define MOVE_SHADOWCLAW 0x18D
|
||||
#define MOVE_SHADOWSNEAK 0x18E
|
||||
#define MOVE_VACUUMWAVE 0x18F
|
||||
#define MOVE_XSCISSOR 0x190
|
||||
#define MOVE_ZENHEADBUTT 0x191
|
||||
#define MOVE_SWITCHEROO 0x192
|
||||
#define MOVE_DRILLRUN 0x193
|
||||
#define MOVE_BULLDOZE 0x194
|
||||
#define MOVE_ELECTROWEB 0x195
|
||||
#define MOVE_FLAMECHARGE 0x196
|
||||
#define MOVE_FROSTBREATH 0x197
|
||||
#define MOVE_HEARTSTAMP 0x198
|
||||
#define MOVE_HONECLAWS 0x199
|
||||
#define MOVE_HORNLEECH 0x19A
|
||||
#define MOVE_COIL 0x19B
|
||||
#define MOVE_HURRICANE 0x19C
|
||||
#define MOVE_ICICLECRASH 0x19D
|
||||
#define MOVE_WORKUP 0x19E
|
||||
#define MOVE_QUIVERDANCE 0x19F
|
||||
#define MOVE_LEAFTORNADO 0x1A0
|
||||
#define MOVE_LOWSWEEP 0x1A1
|
||||
#define MOVE_SNARL 0x1A2
|
||||
#define MOVE_STRUGGLEBUG 0x1A3
|
||||
#define MOVE_STEAMROLLER 0x1A4
|
||||
#define MOVE_STORMTHROW 0x1A5
|
||||
#define MOVE_VENOSHOCK 0x1A6
|
||||
#define MOVE_WILDCHARGE 0x1A7
|
||||
#define MOVE_POISONJAB 0x1A8
|
||||
#define MOVE_ACIDSPRAY 0x1A9
|
||||
#define MOVE_FIERYDANCE 0x1AA
|
||||
#define MOVE_CLEARSMOG 0x1AB
|
||||
#define MOVE_LEAFSTORM 0x1AC
|
||||
#define MOVE_STONEEDGE 0x1AD
|
||||
#define MOVE_PAYBACK 0x1AE
|
||||
#define MOVE_FIREFANG 0x1AF
|
||||
#define MOVE_ICEFANG 0x1B0
|
||||
#define MOVE_THUNDERFANG 0x1B1
|
||||
#define MOVE_FLAREBLITZ 0x1B2
|
||||
#define MOVE_INFERNO 0x1B3
|
||||
#define MOVE_HEX 0x1B4
|
||||
#define MOVE_DUALCHOP 0x1B5
|
||||
#define MOVE_DOUBLEHIT 0x1B6
|
||||
#define MOVE_COTTONGUARD 0x1B7
|
||||
#define MOVE_ACROBATICS 0x1B8
|
||||
#define MOVE_FLAMEBURST 0x1B9
|
||||
#define MOVE_UTURN 0x1BA
|
||||
#define MOVE_VOLTSWITCH 0x1BB
|
||||
#define MOVE_DRAGONTAIL 0x1BC
|
||||
#define MOVE_CIRCLETHROW 0x1BD
|
||||
#define MOVE_MIRRORSHOT 0x1BE
|
||||
#define MOVE_WOODHAMMER 0x1BF
|
||||
#define MOVE_HEALPULSE 0x1C0
|
||||
#define MOVE_FLASHCANNON 0x1C1
|
||||
#define MOVE_BUGBITE 0x1C2
|
||||
#define MOVE_PLUCK 0x1C3
|
||||
#define MOVE_SHELLSMASH 0x1C4
|
||||
#define MOVE_RAGEPOWDER 0x1C5
|
||||
#define MOVE_WAKEUPSLAP 0x1C6
|
||||
#define MOVE_RAZORSHELL 0x1C7
|
||||
#define MOVE_COPYCAT 0x1C8
|
||||
#define MOVE_MIRACLEEYE 0x1C9
|
||||
#define MOVE_SUCKERPUNCH 0x1CA
|
||||
#define MOVE_SCALD 0x1CB
|
||||
#define MOVE_BRINE 0x1CC
|
||||
#define MOVE_FAIRYWIND 0x1CD
|
||||
#define MOVE_BABYDOLLEYES 0x1CE
|
||||
#define MOVE_PLAYROUGH 0x1CF
|
||||
#define MOVE_MOONBLAST 0x1D0
|
||||
#define MOVE_DRAININGKISS 0x1D1
|
||||
#define MOVE_DAZZLINGGLEAM 0x1D2
|
||||
#define MOVE_DISARMINGVOICE 0x1D3
|
||||
#define MOVE_STEALTHROCK 0x1D4
|
||||
#define MOVE_TOXICSPIKES 0x1D5
|
||||
#define MOVE_HEALINGWISH 0x1D6
|
||||
#define MOVE_LUNARDANCE 0x1D7
|
||||
#define MOVE_TAILWIND 0x1D8
|
||||
#define MOVE_BOOMBURST 0x1D9
|
||||
#define MOVE_INCINERATE 0x1DA
|
||||
#define MOVE_WORRYSEED 0x1DB
|
||||
#define MOVE_GASTROACID 0x1DC
|
||||
#define MOVE_GEOMANCY 0x1DD
|
||||
#define MOVE_FLOWERSHIELD 0x1DE
|
||||
#define MOVE_ROTOTILLER 0x1DF
|
||||
#define MOVE_SHIFTGEAR 0x1E0
|
||||
#define MOVE_STICKYWEB 0x1E1
|
||||
#define MOVE_STOREDPOWER 0x1E2
|
||||
#define MOVE_ACUPRESSURE 0x1E3
|
||||
#define MOVE_PUNISHMENT 0x1E4
|
||||
#define MOVE_ASSURANCE 0x1E5
|
||||
#define MOVE_DRAGONRUSH 0x1E6
|
||||
#define MOVE_DARKVOID 0x1E7
|
||||
#define MOVE_FEINT 0x1E8
|
||||
#define MOVE_PHANTOMFORCE 0x1E9
|
||||
#define MOVE_PETALBLIZZARD 0x1EA
|
||||
#define MOVE_PLAYNICE 0x1EB
|
||||
#define MOVE_ROAROFTIME 0x1EC
|
||||
#define MOVE_SPACIALREND 0x1ED
|
||||
#define MOVE_MAGMASTORM 0x1EE
|
||||
#define MOVE_FINALGAMBIT 0x1EF
|
||||
#define MOVE_SHADOWFORCE 0x1F0
|
||||
#define MOVE_NUZZLE 0x1F1
|
||||
#define MOVE_RETALIATE 0x1F2
|
||||
#define MOVE_STEELYHIT 0x1F3
|
||||
#define MOVE_JUDGMENT 0x1F4
|
||||
#define MOVE_FREEZEDRY 0x1F5
|
||||
#define MOVE_PSYSHOCK 0x1F6
|
||||
#define MOVE_ROUND 0x1F7
|
||||
#define MOVE_TAILSLAP 0x1F8
|
||||
#define MOVE_GEARGRIND 0x1F9
|
||||
#define MOVE_NATURALGIFT 0x1FA
|
||||
#define MOVE_CHIPAWAY 0x1FB
|
||||
#define MOVE_SMACKDOWN 0x1FC
|
||||
#define MOVE_HYPERSPACEHOLE 0x1FD
|
||||
#define MOVE_GYROBALL 0x1FE
|
||||
#define MOVE_HYPERSPACEFURY 0x1FF
|
||||
#define MOVE_ATTACKORDER 0x200
|
||||
#define MOVE_DEFENDORDER 0x201
|
||||
#define MOVE_HEALORDER 0x202
|
||||
#define MOVE_CAPTIVATE 0x203
|
||||
#define MOVE_DEFOG 0x204
|
||||
#define MOVE_ORIGINPULSE 0x205
|
||||
#define MOVE_PRECIPICEBLADES 0x206
|
||||
#define MOVE_GUARDSWAP 0x207
|
||||
#define MOVE_STEAMERUPTION 0x208
|
||||
#define MOVE_METALBURST 0x209
|
||||
#define MOVE_MEFIRST 0x20A
|
||||
#define MOVE_POWERSWAP 0x20B
|
||||
#define MOVE_POWERTRICK 0x20C
|
||||
#define MOVE_PSYCHOSHIFT 0x20D
|
||||
#define MOVE_WRINGOUT 0x20E
|
||||
#define MOVE_KINGSSHIELD 0x20F
|
||||
#define MOVE_PSYSTRIKE 0x210
|
||||
#define MOVE_AUTOTOMIZE 0x211
|
||||
#define MOVE_DIAMONDSTORM 0x212
|
||||
#define MOVE_SLUDGEWAVE 0x213
|
||||
#define MOVE_HEAVYSLAM 0x214
|
||||
#define MOVE_SYNCHRONOISE 0x215
|
||||
#define MOVE_ELECTROBALL 0x216
|
||||
#define MOVE_FOULPLAY 0x217
|
||||
#define MOVE_ENTRAINMENT 0x218
|
||||
#define MOVE_NIGHTDAZE 0x219
|
||||
#define MOVE_ECHOEDVOICE 0x21A
|
||||
#define MOVE_LANDSWRATH 0x21B
|
||||
#define MOVE_OBLIVIONWING 0x21C
|
||||
#define MOVE_HEARTSWAP 0x21D
|
||||
#define MOVE_CRUSHGRIP 0x21E
|
||||
#define MOVE_SACREDSWORD 0x21F
|
||||
#define MOVE_HEATCRASH 0x220
|
||||
#define MOVE_HEADCHARGE 0x221
|
||||
#define MOVE_TECHNOBLAST 0x222
|
||||
#define MOVE_RELICSONG 0x223
|
||||
#define MOVE_SECRETSWORD 0x224
|
||||
#define MOVE_GLACIATE 0x225
|
||||
#define MOVE_BOLTSTRIKE 0x226
|
||||
#define MOVE_BLUEFLARE 0x227
|
||||
#define MOVE_FREEZESHOCK 0x228
|
||||
#define MOVE_ICEBURN 0x229
|
||||
#define MOVE_VCREATE 0x22A
|
||||
#define MOVE_FUSIONFLARE 0x22B
|
||||
#define MOVE_FUSIONBOLT 0x22C
|
||||
#define MOVE_FELLSTINGER 0x22D
|
||||
#define MOVE_NOBLEROAR 0x22E
|
||||
#define MOVE_DRAGONASCENT 0x22F
|
||||
#define MOVE_PARTINGSHOT 0x230
|
||||
#define MOVE_TOPSYTURVY 0x231
|
||||
#define MOVE_COREENFORCER 0x232
|
||||
#define MOVE_CHATTER 0x233
|
||||
#define MOVE_CONFIDE 0x234
|
||||
#define MOVE_WATERSHURIKEN 0x235
|
||||
#define MOVE_MYSTICALFIRE 0x236
|
||||
#define MOVE_SPIKYSHIELD 0x237
|
||||
#define MOVE_EERIEIMPULSE 0x238
|
||||
#define MOVE_HOLDBACK 0x239
|
||||
#define MOVE_INFESTATION 0x23A
|
||||
#define MOVE_POWERUPPUNCH 0x23B
|
||||
#define MOVE_THOUSANDARROWS 0x23C
|
||||
#define MOVE_THOUSANDWAVES 0x23D
|
||||
#define MOVE_PARABOLICCHARGE 0x23E
|
||||
#define MOVE_SEARINGSHOT 0x23F
|
||||
#define MOVE_SEEDFLARE 0x240
|
||||
#define MOVE_ACCELEROCK 0x241
|
||||
#define MOVE_ANCHORSHOT 0x242
|
||||
#define MOVE_AURORAVEIL 0x243
|
||||
#define MOVE_BANEFULBUNKER 0x244
|
||||
#define MOVE_BEAKBLAST 0x245
|
||||
#define MOVE_BRUTALSWING 0x246
|
||||
#define MOVE_BURNUP 0x247
|
||||
#define MOVE_CLANGINGSCALES 0x248
|
||||
#define MOVE_DARKESTLARIAT 0x249
|
||||
#define MOVE_DRAGONHAMMER 0x24A
|
||||
#define MOVE_FIRELASH 0x24B
|
||||
#define MOVE_FIRSTIMPRESSION 0x24C
|
||||
#define MOVE_FLEURCANNON 0x24D
|
||||
#define MOVE_FLORALHEALING 0x24E
|
||||
#define MOVE_GEARUP 0x24F
|
||||
#define MOVE_HIGHHORSEPOWER 0x250
|
||||
#define MOVE_ICEHAMMER 0x251
|
||||
#define MOVE_LASERFOCUS 0x252
|
||||
#define MOVE_LEAFAGE 0x253
|
||||
#define MOVE_LIQUIDATION 0x254
|
||||
#define MOVE_LUNGE 0x255
|
||||
#define MOVE_MOONGEISTBEAM 0x256
|
||||
#define MOVE_MULTIATTACK 0x257
|
||||
#define MOVE_NATURESMADNESS 0x258
|
||||
#define MOVE_POLLENPUFF 0x259
|
||||
#define MOVE_POWERTRIP 0x25A
|
||||
#define MOVE_PRISMATICLASER 0x25B
|
||||
#define MOVE_PSYCHICFANGS 0x25C
|
||||
#define MOVE_PURIFY 0x25D
|
||||
#define MOVE_REVELATIONDANCE 0x25E
|
||||
#define MOVE_SHADOWBONE 0x25F
|
||||
#define MOVE_SHELLTRAP 0x260
|
||||
#define MOVE_SHOREUP 0x261
|
||||
#define MOVE_SMARTSTRIKE 0x262
|
||||
#define MOVE_SOLARBLADE 0x263
|
||||
#define MOVE_SPARKLINGARIA 0x264
|
||||
#define MOVE_SPECTRALTHIEF 0x265
|
||||
#define MOVE_SPEEDSWAP 0x266
|
||||
#define MOVE_SPIRITSHACKLE 0x267
|
||||
#define MOVE_SPOTLIGHT 0x268
|
||||
#define MOVE_STOMPINGTANTRUM 0x269
|
||||
#define MOVE_STRENGTHSAP 0x26A
|
||||
#define MOVE_SUNSTEELSTRIKE 0x26b
|
||||
#define MOVE_TEARFULLOOK 0x26C
|
||||
#define MOVE_THROATCHOP 0x26D
|
||||
#define MOVE_TOXICTHREAD 0x26E
|
||||
#define MOVE_TROPKICK 0x26F
|
||||
#define MOVE_ZINGZAP 0x270
|
||||
#define MOVE_ELECTRICTERRAIN 0x271
|
||||
#define MOVE_GRASSYTERRAIN 0x272
|
||||
#define MOVE_MISTYTERRAIN 0x273
|
||||
#define MOVE_PSYCHICTERRAIN 0x274
|
||||
#define MOVE_GRASSPLEDGE 0x275
|
||||
#define MOVE_FIREPLEDGE 0x276
|
||||
#define MOVE_WATERPLEDGE 0x277
|
||||
#define MOVE_TRICKROOM 0x278
|
||||
#define MOVE_MAGICROOM 0x279
|
||||
#define MOVE_WONDERROOM 0x27A
|
||||
#define MOVE_CRAFTYSHIELD 0x27B
|
||||
#define MOVE_MATBLOCK 0x27C
|
||||
#define MOVE_QUICKGUARD 0x27D
|
||||
#define MOVE_WIDEGUARD 0x27E
|
||||
#define MOVE_AQUARING 0x27F
|
||||
#define MOVE_AROMATICMIST 0x280
|
||||
#define MOVE_BELCH 0x281
|
||||
#define MOVE_BESTOW 0x282
|
||||
#define MOVE_FLING 0x283
|
||||
#define MOVE_FLYINGPRESS 0x284
|
||||
#define MOVE_GRAVITY 0x285
|
||||
#define MOVE_GUARDSPLIT 0x286
|
||||
#define MOVE_HEALBLOCK 0x287
|
||||
#define MOVE_IONDELUGE 0x288
|
||||
#define MOVE_LUCKYCHANT 0x289
|
||||
#define MOVE_MAGNETRISE 0x28A
|
||||
#define MOVE_MAGNETICFLUX 0x28B
|
||||
#define MOVE_POWDER 0x28C
|
||||
#define MOVE_POWERSPLIT 0x28D
|
||||
#define MOVE_REFLECTTYPE 0x28E
|
||||
#define MOVE_SIMPLEBEAM 0x28F
|
||||
#define MOVE_SOAK 0x290
|
||||
#define MOVE_TELEKINESIS 0x291
|
||||
#define MOVE_TRICKORTREAT 0x292
|
||||
#define MOVE_VENOMDRENCH 0x293
|
||||
#define MOVE_FORESTSCURSE 0x294
|
||||
#define MOVE_MINDBLOWN 0x295
|
||||
#define MOVE_PHOTONGEYSER 0x296
|
||||
#define MOVE_PLASMAFISTS 0x297
|
||||
#define MOVE_ELECTRIFY 0x298
|
||||
#define MOVE_EMBARGO 0x299
|
||||
#define MOVE_FAIRYLOCK 0x29A
|
||||
#define MOVE_LIGHTOFRUIN 0x29B
|
||||
#define MOVE_TRUMPCARD 0x29C
|
||||
#define MOVE_AFTERYOU 0x29D
|
||||
#define MOVE_INSTRUCT 0x29E
|
||||
#define MOVE_QUASH 0x29F
|
||||
#define MOVE_HAPPYHOUR 0x2A0
|
||||
#define MOVE_DOUBLEIRONBASH 0x2A1
|
||||
#define MOVE_LASTRESORT 0x2A2
|
||||
#define MOVE_SKYDROP 0x2A3
|
||||
#define MOVE_CELEBRATE 0x2A4
|
||||
#define MOVE_HOLDHANDS 0x2A5
|
||||
|
||||
#define MOVE_BREAKNECK_BLITZ_P 0x2A6
|
||||
#define MOVE_BREAKNECK_BLITZ_S 0x2A7
|
||||
#define MOVE_ALL_OUT_PUMMELING_P 0x2A8
|
||||
#define MOVE_ALL_OUT_PUMMELING_S 0x2A9
|
||||
#define MOVE_SUPERSONIC_SKYSTRIKE_P 0x2AA
|
||||
#define MOVE_SUPERSONIC_SKYSTRIKE_S 0x2AB
|
||||
#define MOVE_ACID_DOWNPOUR_P 0x2AC
|
||||
#define MOVE_ACID_DOWNPOUR_S 0x2AD
|
||||
#define MOVE_TECTONIC_RAGE_P 0x2AE
|
||||
#define MOVE_TECTONIC_RAGE_S 0x2AF
|
||||
#define MOVE_CONTINENTAL_CRUSH_P 0x2B0
|
||||
#define MOVE_CONTINENTAL_CRUSH_S 0x2B1
|
||||
#define MOVE_SAVAGE_SPIN_OUT_P 0x2B2
|
||||
#define MOVE_SAVAGE_SPIN_OUT_S 0x2B3
|
||||
#define MOVE_NEVER_ENDING_NIGHTMARE_P 0x2B4
|
||||
#define MOVE_NEVER_ENDING_NIGHTMARE_S 0x2B5
|
||||
#define MOVE_CORKSCREW_CRASH_P 0x2B6
|
||||
#define MOVE_CORKSCREW_CRASH_S 0x2B7
|
||||
#define MOVE_INFERNO_OVERDRIVE_P 0x2B8
|
||||
#define MOVE_INFERNO_OVERDRIVE_S 0x2B9
|
||||
#define MOVE_HYDRO_VORTEX_P 0x2BA
|
||||
#define MOVE_HYDRO_VORTEX_S 0x2BB
|
||||
#define MOVE_BLOOM_DOOM_P 0x2BC
|
||||
#define MOVE_BLOOM_DOOM_S 0x2BD
|
||||
#define MOVE_GIGAVOLT_HAVOC_P 0x2BE
|
||||
#define MOVE_GIGAVOLT_HAVOC_S 0x2BF
|
||||
#define MOVE_SHATTERED_PSYCHE_P 0x2C0
|
||||
#define MOVE_SHATTERED_PSYCHE_S 0x2C1
|
||||
#define MOVE_SUBZERO_SLAMMER_P 0x2C2
|
||||
#define MOVE_SUBZERO_SLAMMER_S 0x2C3
|
||||
#define MOVE_DEVASTATING_DRAKE_P 0x2C4
|
||||
#define MOVE_DEVASTATING_DRAKE_S 0x2C5
|
||||
#define MOVE_BLACK_HOLE_ECLIPSE_P 0x2C6
|
||||
#define MOVE_BLACK_HOLE_ECLIPSE_S 0x2C7
|
||||
#define MOVE_TWINKLE_TACKLE_P 0x2C8
|
||||
#define MOVE_TWINKLE_TACKLE_S 0x2C9
|
||||
|
||||
#define MOVE_CATASTROPIKA 0x2CA
|
||||
#define MOVE_10000000_VOLT_THUNDERBOLT 0x2CB
|
||||
#define MOVE_STOKED_SPARKSURFER 0x2CC //Paralyze Target
|
||||
#define MOVE_EXTREME_EVOBOOST 0x2CD //Double Ancient Power
|
||||
#define MOVE_PULVERIZING_PANCAKE 0x2CE
|
||||
#define MOVE_GENESIS_SUPERNOVA 0x2CF //Sets up Psychic Terrain
|
||||
#define MOVE_SINISTER_ARROW_RAID 0x2D0
|
||||
#define MOVE_MALICIOUS_MOONSAULT 0x2D1
|
||||
#define MOVE_OCEANIC_OPERETTA 0x2D2
|
||||
#define MOVE_SPLINTERED_STORMSHARDS 0x2D3 //Removes Terrain
|
||||
#define MOVE_LETS_SNUGGLE_FOREVER 0x2D4
|
||||
#define MOVE_CLANGOROUS_SOULBLAZE 0x2D5 //Ancient Power
|
||||
#define MOVE_GUARDIAN_OF_ALOLA 0x2D6
|
||||
#define MOVE_SEARING_SUNRAZE_SMASH 0x2D7
|
||||
#define MOVE_MENACING_MOONRAZE_MAELSTROM 0x2D8
|
||||
#define MOVE_LIGHT_THAT_BURNS_THE_SKY 0x2D9
|
||||
#define MOVE_SOUL_STEALING_7_STAR_STRIKE 0x2DA
|
||||
|
||||
#define FIRST_Z_MOVE MOVE_BREAKNECK_BLITZ_P
|
||||
#define LAST_Z_MOVE MOVE_SOUL_STEALING_7_STAR_STRIKE
|
||||
|
||||
#define LAST_MOVE_INDEX MOVE_SOUL_STEALING_7_STAR_STRIKE
|
||||
#define MOVES_COUNT (MOVE_SOUL_STEALING_7_STAR_STRIKE + 1)
|
||||
1307
include/pokedex.h
Normal file
1307
include/pokedex.h
Normal file
File diff suppressed because it is too large
Load Diff
1088
include/species.h
Normal file
1088
include/species.h
Normal file
File diff suppressed because it is too large
Load Diff
139
include/types.h
Normal file
139
include/types.h
Normal file
|
|
@ -0,0 +1,139 @@
|
|||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
typedef uint8_t u8;
|
||||
typedef uint16_t u16;
|
||||
typedef uint32_t u32;
|
||||
typedef uint64_t u64;
|
||||
typedef int8_t s8;
|
||||
typedef int16_t s16;
|
||||
typedef int32_t s32;
|
||||
typedef int64_t s64;
|
||||
|
||||
typedef volatile u8 vu8;
|
||||
typedef volatile u16 vu16;
|
||||
typedef volatile u32 vu32;
|
||||
typedef volatile u64 vu64;
|
||||
typedef volatile s8 vs8;
|
||||
typedef volatile s16 vs16;
|
||||
typedef volatile s32 vs32;
|
||||
typedef volatile s64 vs64;
|
||||
|
||||
typedef float f32;
|
||||
typedef double f64;
|
||||
|
||||
typedef u8 bool8;
|
||||
typedef u16 bool16;
|
||||
typedef u32 bool32;
|
||||
|
||||
typedef u16 species_t;
|
||||
typedef u16 move_t;
|
||||
typedef u8 ability_t;
|
||||
typedef u16 item_t;
|
||||
typedef u8 item_effect_t;
|
||||
typedef u8 bank_t;
|
||||
typedef u8 move_effect_t;
|
||||
|
||||
struct PlttData
|
||||
{
|
||||
u16 r:5; // red
|
||||
u16 g:5; // green
|
||||
u16 b:5; // blue
|
||||
u16 unused_15:1;
|
||||
} /*__attribute__((packed))*/;
|
||||
|
||||
struct OamData
|
||||
{
|
||||
/*0x00*/ u32 y:8;
|
||||
/*0x01*/ u32 affineMode:2; // 0x1, 0x2 = 0x3
|
||||
u32 objMode:2; // 0x4, 0x8 = 0xC
|
||||
u32 mosaic:1; // 0x10
|
||||
u32 bpp:1; // 0x20
|
||||
u32 shape:2; // 0x40, 0x80
|
||||
|
||||
/*0x02*/ u32 x:9;
|
||||
u32 matrixNum:5; // bits 3/4 are h-flip/v-flip if not in affine mode
|
||||
u32 size:2;
|
||||
|
||||
/*0x04*/ u16 tileNum:10;
|
||||
u16 priority:2;
|
||||
u16 paletteNum:4;
|
||||
/*0x06*/ u16 affineParam;
|
||||
};
|
||||
|
||||
#define ST_OAM_OBJ_NORMAL 0
|
||||
#define ST_OAM_OBJ_BLEND 1
|
||||
#define ST_OAM_OBJ_WINDOW 2
|
||||
|
||||
#define ST_OAM_AFFINE_OFF 0
|
||||
#define ST_OAM_AFFINE_NORMAL 1
|
||||
#define ST_OAM_AFFINE_ERASE 2
|
||||
#define ST_OAM_AFFINE_DOUBLE 3
|
||||
|
||||
#define ST_OAM_AFFINE_ON_MASK 1
|
||||
#define ST_OAM_AFFINE_DOUBLE_MASK 2
|
||||
|
||||
#define ST_OAM_4BPP 0
|
||||
#define ST_OAM_8BPP 1
|
||||
|
||||
#define ST_OAM_SQUARE 0
|
||||
#define ST_OAM_H_RECTANGLE 1
|
||||
#define ST_OAM_V_RECTANGLE 2
|
||||
|
||||
struct BgAffineSrcData
|
||||
{
|
||||
s32 texX;
|
||||
s32 texY;
|
||||
s16 scrX;
|
||||
s16 scrY;
|
||||
s16 sx;
|
||||
s16 sy;
|
||||
u16 alpha;
|
||||
};
|
||||
|
||||
struct BgAffineDstData
|
||||
{
|
||||
s16 pa;
|
||||
s16 pb;
|
||||
s16 pc;
|
||||
s16 pd;
|
||||
s32 dx;
|
||||
s32 dy;
|
||||
};
|
||||
|
||||
struct ObjAffineSrcData
|
||||
{
|
||||
s16 xScale;
|
||||
s16 yScale;
|
||||
u16 rotation;
|
||||
};
|
||||
|
||||
// Multi-player SIO Control Structure
|
||||
struct SioMultiCnt
|
||||
{
|
||||
u16 baudRate:2; // baud rate
|
||||
u16 si:1; // SI terminal
|
||||
u16 sd:1; // SD terminal
|
||||
u16 id:2; // ID
|
||||
u16 error:1; // error flag
|
||||
u16 enable:1; // SIO enable
|
||||
u16 unused_11_8:4;
|
||||
u16 mode:2; // communication mode (should equal 2)
|
||||
u16 intrEnable:1; // IRQ enable
|
||||
u16 unused_15:1;
|
||||
u16 data; // data
|
||||
};
|
||||
|
||||
#define ST_SIO_MULTI_MODE 2 // Multi-player communication mode
|
||||
|
||||
// baud rate
|
||||
#define ST_SIO_9600_BPS 0 // 9600 bps
|
||||
#define ST_SIO_38400_BPS 1 // 38400 bps
|
||||
#define ST_SIO_57600_BPS 2 // 57600 bps
|
||||
#define ST_SIO_115200_BPS 3 // 115200 bps
|
||||
|
||||
#define min(a, b) ((a) < (b) ? (a) : (b))
|
||||
#define max(a, b) ((a) >= (b) ? (a) : (b))
|
||||
|
||||
#define ABS(x) (x) < 0 ? -(x) : (x)
|
||||
29
linker.ld
Normal file
29
linker.ld
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
OUTPUT_ARCH(arm)
|
||||
MEMORY {
|
||||
|
||||
rom : ORIGIN = (0x08000000 + 0x1f34230), LENGTH = 32M
|
||||
ewram : ORIGIN = 0x02000000, LENGTH = 4M - 4k
|
||||
}
|
||||
|
||||
SECTIONS {
|
||||
.text : {
|
||||
|
||||
FILL (0xABCD)
|
||||
|
||||
__text_start = . ;
|
||||
*(.init)
|
||||
*(.text)
|
||||
*(.ctors)
|
||||
*(.dtors)
|
||||
*(.rodata)
|
||||
*(.fini)
|
||||
*(COMMON)
|
||||
__text_end = . ;
|
||||
|
||||
__bss_start__ = . ;
|
||||
*(.bss)
|
||||
__bss_end__ = . ;
|
||||
_end = __bss_end__ ;
|
||||
__end__ = __bss_end__ ;
|
||||
} >rom = 0xff
|
||||
}
|
||||
30
repointall
Normal file
30
repointall
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
##Repoints all pointers found at given location
|
||||
##(Eg. repoints pointer located at 0x8016364 which is 0x81D65A8 in vanilla, does not repoint 0x8016364)
|
||||
gSpeciesNames 08000144
|
||||
gBaseStats 080001BC
|
||||
gLevelUpLearnsets 0803EA7C
|
||||
gEggMoves 08045C50
|
||||
|
||||
gCryTable 08072114
|
||||
gCryTable2 08072104
|
||||
#gSpeciesIdToCryId 08043328 #NO LONGER NEEDED
|
||||
|
||||
gMonFrontPicTable 08000128
|
||||
gMonBackPicTable 0800012C
|
||||
gMonFrontPicCoords 08011F4C
|
||||
gMonBackPicCoords 08074634
|
||||
gEnemyMonElevation 080356F8
|
||||
gMonPaletteTable 08000130
|
||||
gMonShinyPaletteTable 08000134
|
||||
|
||||
#Evolution Table
|
||||
gPokedexEntries 08088E34
|
||||
gHabitatPtrsTable 08106888
|
||||
gSpeciesToNationalPokedexNum 0804323C
|
||||
gPokedexOrder_Alphabetical 08103694
|
||||
gPokedexOrder_Weight 081037CC
|
||||
gPokedexOrder_Height 08103868
|
||||
|
||||
gMonIconTable 08000138
|
||||
gMonIconPaletteIndices 0800013C
|
||||
gItemAnimationTable 0812EAE0
|
||||
1
routinepointers
Normal file
1
routinepointers
Normal file
|
|
@ -0,0 +1 @@
|
|||
##
|
||||
BIN
scripts/__pycache__/string.cpython-36.pyc
Normal file
BIN
scripts/__pycache__/string.cpython-36.pyc
Normal file
Binary file not shown.
264
scripts/build.py
Normal file
264
scripts/build.py
Normal file
|
|
@ -0,0 +1,264 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
from glob import glob
|
||||
from pathlib import Path
|
||||
import os
|
||||
import itertools
|
||||
import hashlib
|
||||
import subprocess
|
||||
import sys
|
||||
from datetime import datetime
|
||||
from string import StringFileConverter
|
||||
|
||||
PathVar = os.environ.get('Path')
|
||||
Paths = PathVar.split(';')
|
||||
PATH = ""
|
||||
for candidatePath in Paths:
|
||||
if "devkitARM" in candidatePath:
|
||||
PATH = candidatePath
|
||||
break
|
||||
if PATH == "":
|
||||
print('DevKit does not exist in your Path variable.\nChecking default location.')
|
||||
PATH = 'C://devkitPro//devkitARM//bin'
|
||||
if os.path.isdir(PATH) == False:
|
||||
print("...\nDevkit not found.")
|
||||
sys.exit(1)
|
||||
else:
|
||||
print("Devkit found.")
|
||||
|
||||
PREFIX = '/arm-none-eabi-'
|
||||
AS = (PATH + PREFIX + 'as')
|
||||
CC = (PATH + PREFIX + 'gcc')
|
||||
LD = (PATH + PREFIX + 'ld')
|
||||
GR = ("deps/grit.exe")
|
||||
ARP = ('armips')
|
||||
OBJCOPY = (PATH + PREFIX + 'objcopy')
|
||||
SRC = './src'
|
||||
GRAPHICS = './graphics'
|
||||
ASSEMBLY = './assembly'
|
||||
STRINGS = './strings'
|
||||
BUILD = './build'
|
||||
IMAGES = '\Images'
|
||||
ASFLAGS = ['-mthumb', '-I', ASSEMBLY]
|
||||
LDFLAGS = ['BPRE.ld', '-T', 'linker.ld']
|
||||
CFLAGS = ['-mthumb', '-mno-thumb-interwork', '-mcpu=arm7tdmi', '-mtune=arm7tdmi',
|
||||
'-mno-long-calls', '-march=armv4t', '-Wall', '-Wextra','-Os', '-fira-loop-pressure', '-fipa-pta']
|
||||
|
||||
PrintedCompilingImages = False #Used to tell the script whether or not the string "Compiling Images" has been printed
|
||||
|
||||
def run_command(cmd):
|
||||
try:
|
||||
subprocess.check_output(cmd)
|
||||
except subprocess.CalledProcessError as e:
|
||||
print(e.output.decode(), file = sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
def make_output_file(filename):
|
||||
'''Return hash of filename to use as object filename'''
|
||||
m = hashlib.md5()
|
||||
m.update(filename.encode())
|
||||
newfilename = os.path.join(BUILD, m.hexdigest() + '.o')
|
||||
|
||||
if not os.path.isfile(filename):
|
||||
return [newfilename, False]
|
||||
|
||||
fileExists = os.path.isfile(newfilename)
|
||||
|
||||
if fileExists and os.path.getmtime(newfilename) > os.path.getmtime(filename): #If the object file was created after the file was last modified
|
||||
return [newfilename, False]
|
||||
|
||||
return [newfilename, True]
|
||||
|
||||
def make_output_img_file(filename):
|
||||
'''Return "IMG" + hash of filename to use as object filename'''
|
||||
m = hashlib.md5()
|
||||
m.update(filename.encode())
|
||||
newfilename = os.path.join(BUILD, 'IMG_' + m.hexdigest() + '.o')
|
||||
|
||||
if not os.path.isfile(filename):
|
||||
return [newfilename, False]
|
||||
|
||||
fileExists = os.path.isfile(newfilename)
|
||||
|
||||
if fileExists and os.path.getmtime(newfilename) > os.path.getmtime(filename): #If the object file was created after the file was last modified
|
||||
return [newfilename, False]
|
||||
|
||||
return [newfilename, True]
|
||||
|
||||
def process_assembly(in_file):
|
||||
'''Assemble'''
|
||||
out_file_list = make_output_file(in_file)
|
||||
out_file = out_file_list[0]
|
||||
if out_file_list[1] is False:
|
||||
return out_file #No point in recompiling file
|
||||
|
||||
try:
|
||||
print ('Assembling %s' % in_file)
|
||||
cmd = [AS] + ASFLAGS + ['-c', in_file, '-o', out_file]
|
||||
run_command(cmd)
|
||||
|
||||
except FileNotFoundError:
|
||||
print('Error! The assembler could not be located.\nAre you sure you set up your path to devkitPro/devkitARM/bin correctly?')
|
||||
sys.exit()
|
||||
|
||||
return out_file
|
||||
|
||||
def process_c(in_file):
|
||||
'''Compile C'''
|
||||
out_file_list = make_output_file(in_file)
|
||||
out_file = out_file_list[0]
|
||||
if out_file_list[1] is False:
|
||||
return out_file #No point in recompiling file
|
||||
|
||||
try:
|
||||
print ('Compiling %s' % in_file)
|
||||
cmd = [CC] + CFLAGS + ['-c', in_file, '-o', out_file]
|
||||
run_command(cmd)
|
||||
|
||||
except FileNotFoundError:
|
||||
print('Error! The C compiler could not be located.\nAre you sure you set up your path to devkitPro/devkitARM/bin correctly?')
|
||||
sys.exit()
|
||||
|
||||
return out_file
|
||||
|
||||
def process_string(filename):
|
||||
'''Build Strings'''
|
||||
out_file = filename.split(".string")[0] + '.s'
|
||||
object_file = make_output_file(out_file)[0]
|
||||
|
||||
fileExists = os.path.isfile(object_file)
|
||||
|
||||
if fileExists and os.path.getmtime(object_file) > os.path.getmtime(filename): #If the .o file was created after the image was last modified
|
||||
return make_output_file(out_file)[0]
|
||||
|
||||
print ('Building Strings %s' % filename)
|
||||
StringFileConverter(filename)
|
||||
|
||||
out_file_list = make_output_file(out_file)
|
||||
new_out_file = out_file_list[0]
|
||||
if out_file_list[1] == False:
|
||||
os.remove(out_file)
|
||||
return new_out_file #No point in recompiling file
|
||||
|
||||
cmd = [AS] + ASFLAGS + ['-c', out_file, '-o', new_out_file]
|
||||
run_command(cmd)
|
||||
os.remove(out_file)
|
||||
return new_out_file
|
||||
|
||||
def process_image(in_file):
|
||||
'''Compile Image'''
|
||||
if '.bmp' in in_file:
|
||||
out_file = in_file.split('.bmp')[0] + '.s'
|
||||
else:
|
||||
out_file = in_file.split('.png')[0] + '.s'
|
||||
|
||||
namelist = in_file.split("\\") #Get path of grit flags
|
||||
namelist.pop(len(namelist) - 1)
|
||||
flags = "".join(str(i) + "\\" for i in namelist)
|
||||
flags += "gritflags.txt"
|
||||
|
||||
try:
|
||||
with open(flags, 'r') as file:
|
||||
for line in file:
|
||||
cmd = [GR, in_file] + line.split() + ['-o', out_file]
|
||||
break #only needs the first line
|
||||
except FileNotFoundError:
|
||||
print("No gritflags.txt found in directory with " + in_file)
|
||||
return 0
|
||||
|
||||
out_file_list = make_output_img_file(out_file)
|
||||
new_out_file = out_file_list[0]
|
||||
try:
|
||||
if os.path.getmtime(new_out_file) > os.path.getmtime(in_file): #If the .o file was created after the image was last modified
|
||||
return new_out_file
|
||||
else:
|
||||
run_command(cmd)
|
||||
|
||||
except FileNotFoundError:
|
||||
run_command(cmd) #No .o file has been created
|
||||
|
||||
global PrintedCompilingImages
|
||||
if (PrintedCompilingImages is False):
|
||||
print ('Compiling Images')
|
||||
PrintedCompilingImages = True
|
||||
|
||||
out_file_list = make_output_img_file(out_file)
|
||||
new_out_file = out_file_list[0]
|
||||
if out_file_list[1] == False:
|
||||
os.remove(out_file)
|
||||
return new_out_file #No point in recompiling file
|
||||
|
||||
cmd = [AS] + ASFLAGS + ['-c', out_file, '-o', new_out_file]
|
||||
run_command(cmd)
|
||||
os.remove(out_file)
|
||||
return new_out_file
|
||||
|
||||
def link(objects):
|
||||
'''Link objects into one binary'''
|
||||
linked = 'build/linked.o'
|
||||
cmd = [LD] + LDFLAGS + ['-o', linked] + list(objects)
|
||||
run_command(cmd)
|
||||
return linked
|
||||
|
||||
def objcopy(binary):
|
||||
cmd = [OBJCOPY, '-O', 'binary', binary, 'build/output.bin']
|
||||
run_command(cmd)
|
||||
|
||||
def run_glob(globstr, fn):
|
||||
'''Glob recursively and run the processor function on each file in result'''
|
||||
if globstr == '**/*.png' or globstr == '**/*.bmp': #Search the graphics location
|
||||
return run_glob_graphics(globstr, fn)
|
||||
|
||||
if sys.version_info > (3, 4):
|
||||
files = glob(os.path.join(SRC, globstr), recursive = True)
|
||||
return map(fn, files)
|
||||
else:
|
||||
files = Path(SRC).glob(globstr)
|
||||
return map(fn, map(str, files))
|
||||
|
||||
def run_glob_graphics(globstr, fn):
|
||||
'''Glob recursively and run the processor function on each file in result'''
|
||||
if sys.version_info > (3, 4):
|
||||
files = glob(os.path.join(GRAPHICS, globstr), recursive = True)
|
||||
return map(fn, files)
|
||||
else:
|
||||
files = Path(GRAPHICS).glob(globstr)
|
||||
return map(fn, map(str, files))
|
||||
|
||||
def main():
|
||||
starttime = datetime.now()
|
||||
globs = {
|
||||
'**/*.s': process_assembly,
|
||||
'**/*.c': process_c,
|
||||
'**/*.string': process_string,
|
||||
'**/*.png': process_image,
|
||||
'**/*.bmp': process_image
|
||||
}
|
||||
|
||||
# Create output directory
|
||||
try:
|
||||
os.makedirs(BUILD)
|
||||
except FileExistsError:
|
||||
pass
|
||||
|
||||
# Gather source files and process them
|
||||
objects = itertools.starmap(run_glob, globs.items())
|
||||
|
||||
# Link and extract raw binary
|
||||
linked = link(itertools.chain.from_iterable(objects))
|
||||
objcopy(linked)
|
||||
|
||||
#Build special_inserts.asm
|
||||
if not os.path.isfile('build/special_inserts.bin') or os.path.getmtime('build/special_inserts.bin') < os.path.getmtime('special_inserts.asm'): #If the binary file was created after the file was last modified):
|
||||
cmd = cmd = [AS] + ASFLAGS + ['-c', 'special_inserts.asm', '-o', 'build/special_inserts.o']
|
||||
run_command(cmd)
|
||||
|
||||
cmd = [OBJCOPY, '-O', 'binary', 'build/special_inserts.o', 'build/special_inserts.bin']
|
||||
run_command(cmd)
|
||||
|
||||
print ('Assembling special_inserts.asm')
|
||||
|
||||
print('Built in ' + str(datetime.now() - starttime) + '.')
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
111
scripts/clean.py
Normal file
111
scripts/clean.py
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import sys
|
||||
import shutil
|
||||
import hashlib
|
||||
import glob, os.path
|
||||
|
||||
ROM_NAME = "test.gba"
|
||||
SRC = './src'
|
||||
GRAPHICS = './graphics'
|
||||
ASSEMBLY = './assembly'
|
||||
STRINGS = './strings'
|
||||
BUILD = './build'
|
||||
|
||||
def PutFileNameInRightFormat(filename):
|
||||
filename = filename.split('/')
|
||||
newFileName = ""
|
||||
|
||||
if filename[0].upper() == "SRC":
|
||||
newFileName = SRC
|
||||
elif filename[0].upper() == "ASSEMBLY":
|
||||
newFileName = ASSEMBLY
|
||||
elif filename[0].upper() == "GRAPHICS":
|
||||
newFileName = GRAPHICS
|
||||
elif filename[0].upper() == "STRINGS":
|
||||
newFileName = STRINGS
|
||||
|
||||
for i in range(1, len(filename)):
|
||||
newFileName += "\\" + filename[i]
|
||||
|
||||
return newFileName
|
||||
|
||||
dir_path = os.path.dirname(os.path.realpath(__file__))
|
||||
|
||||
try:
|
||||
os.remove(ROM_NAME)
|
||||
except:
|
||||
pass
|
||||
|
||||
if len(sys.argv) > 1:
|
||||
#Try removing specific file only.
|
||||
if len(sys.argv) > 2 and sys.argv[1].upper() == 'FILE':
|
||||
try:
|
||||
filename = PutFileNameInRightFormat(sys.argv[2])
|
||||
print(filename)
|
||||
m = hashlib.md5()
|
||||
m.update(filename.encode())
|
||||
newfilename = os.path.join(BUILD, m.hexdigest() + '.o')
|
||||
|
||||
try:
|
||||
os.remove(newfilename)
|
||||
except FileNotFoundError:
|
||||
os.remove(BUILD + "\\IMG_" + newfilename.split('\\')[1])
|
||||
print('"Build for ' + sys.argv[2] + '" removed successfully!')
|
||||
sys.exit(1)
|
||||
except:
|
||||
print('Error: Could not remove build for file "' + sys.argv[2] + '".')
|
||||
sys.exit(1)
|
||||
|
||||
#Don't remove generated repoints if the user only wants to remove the build.
|
||||
elif sys.argv[1].upper() != 'BUILD' and sys.argv[1].upper() != 'GRAPHICS':
|
||||
try:
|
||||
os.remove('generatedrepoints')
|
||||
except:
|
||||
pass
|
||||
else:
|
||||
try:
|
||||
os.remove('generatedrepoints')
|
||||
except:
|
||||
pass
|
||||
|
||||
try:
|
||||
os.remove('offsets.ini')
|
||||
except:
|
||||
pass
|
||||
|
||||
if (len(sys.argv) > 1) and sys.argv[1].upper() == 'ALL':
|
||||
try:
|
||||
shutil.rmtree('build/')
|
||||
except:
|
||||
pass
|
||||
|
||||
os.chdir("graphics")
|
||||
for root, dirs, files in os.walk(".", topdown = False):
|
||||
for file in files:
|
||||
if file.endswith('.h'):
|
||||
os.remove(os.path.join(root, file))
|
||||
|
||||
elif (len(sys.argv) > 1) and sys.argv[1].upper() == 'GRAPHICS':
|
||||
os.chdir("graphics")
|
||||
for root, dirs, files in os.walk(".", topdown = False):
|
||||
for file in files:
|
||||
if file.endswith('.h'):
|
||||
os.remove(os.path.join(root, file))
|
||||
|
||||
os.chdir(dir_path.split('\\scripts')[0])
|
||||
os.chdir("build")
|
||||
for root, dirs, files in os.walk(".", topdown = False):
|
||||
for file in files:
|
||||
if file.startswith('IMG_'): #Don't remove image file
|
||||
os.remove(os.path.join(root, file))
|
||||
|
||||
else:
|
||||
os.chdir("build")
|
||||
for root, dirs, files in os.walk(".", topdown = False):
|
||||
for file in files:
|
||||
if not file.startswith('IMG_'): #Don't remove image file
|
||||
os.remove(os.path.join(root, file))
|
||||
|
||||
print("Directory cleaned!")
|
||||
189
scripts/data_extractor.py
Normal file
189
scripts/data_extractor.py
Normal file
|
|
@ -0,0 +1,189 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
|
||||
############
|
||||
#Options go here.
|
||||
############
|
||||
|
||||
ROM_NAME = "BPRE0.gba" #the name of your rom
|
||||
NumberOfPokemon = 412 #Change to total number of species in original rom
|
||||
|
||||
OutputFolder = os.getcwd() + "/extracted/"
|
||||
SpeciesDefines = os.getcwd() + "/include/species.h"
|
||||
|
||||
############
|
||||
#Code
|
||||
############
|
||||
|
||||
def GeneralTableExtractor(dynamicOffset, definesDict, definesDict2, outputPath, tableType, tableName,
|
||||
indexOffset, tableLengthName, startIndex, numEntries, entryLength, alignData):
|
||||
output = open(outputPath, 'w')
|
||||
startIndexName = ""
|
||||
|
||||
if startIndex != 0:
|
||||
startIndexName = " - " + indexOffset
|
||||
|
||||
dataAlignment = 0
|
||||
if alignData:
|
||||
dataAlignment = GetLengthOfLongestValue(definesDict)
|
||||
|
||||
with open(ROM_NAME, 'rb') as binary_file:
|
||||
|
||||
#Load Dynamic Pointer to Table
|
||||
binary_file.seek(dynamicOffset)
|
||||
line = binary_file.read(3)
|
||||
TablePointer = ExtractPointer(line)
|
||||
|
||||
output.write('#include "defines.h"\n\n')
|
||||
output.write(tableType + ' ' + tableName + '[' + tableLengthName + startIndexName + '] =\n{\n')
|
||||
|
||||
for i in range(startIndex, numEntries):
|
||||
binary_file.seek(TablePointer + ((i - startIndex) * entryLength))
|
||||
byteList = binary_file.read(entryLength)
|
||||
|
||||
if i in definesDict:
|
||||
output.write('\t[' + definesDict[i] + startIndexName + '] = ')
|
||||
lenEntry = len(definesDict[i] + startIndexName)
|
||||
else:
|
||||
output.write('\t[' + str(i) + startIndexName + '] = ')
|
||||
lenEntry = len(str(i) + startIndexName)
|
||||
|
||||
while lenEntry < dataAlignment: #Align Data
|
||||
output.write(' ')
|
||||
lenEntry += 1
|
||||
|
||||
data = ExtractPointer(byteList)
|
||||
if definesDict2 is not False and data in definesDict2:
|
||||
data = definesDict2[data]
|
||||
else:
|
||||
data = hex(data)
|
||||
|
||||
output.write(data + ',\n')
|
||||
|
||||
output.write('};\n')
|
||||
|
||||
output.close()
|
||||
print("Success!")
|
||||
|
||||
def GeneralStructTableExtractor(dynamicOffset, definesDict, outputPath, tableType, tableName, tableLengthName,
|
||||
numEntries, structLength, memberNames, memberLengths, memberDicts, useMemberNames,
|
||||
loadDictDataFromIndex, offsetForForce):
|
||||
assert(len(memberNames) == len(memberLengths) or not useMemberNames)
|
||||
output = open(outputPath, 'w')
|
||||
with open(ROM_NAME, 'rb') as binary_file:
|
||||
|
||||
#Load Dynamic Pointer to Table
|
||||
binary_file.seek(dynamicOffset)
|
||||
line = binary_file.read(3)
|
||||
TablePointer = ExtractPointer(line)
|
||||
|
||||
output.write('#include "defines.h"\n\n')
|
||||
output.write(tableType + ' ' + tableName + '[' + tableLengthName + '] =\n{\n')
|
||||
|
||||
for i in range(numEntries):
|
||||
binary_file.seek(TablePointer + (i * structLength))
|
||||
byteList = binary_file.read(structLength)
|
||||
|
||||
lenName = 0
|
||||
if i in definesDict:
|
||||
output.write('\t[' + definesDict[i] + '] =')
|
||||
lenName = len(definesDict[i])
|
||||
else:
|
||||
output.write('\t[' + str(i) + '] =')
|
||||
lenName = len(str(i))
|
||||
|
||||
if useMemberNames:
|
||||
output.write('\n\t{\n')
|
||||
else:
|
||||
while lenName < 28: #Align structs
|
||||
output.write(' ')
|
||||
lenName += 1
|
||||
|
||||
output.write(' {')
|
||||
|
||||
for j in range(len(memberLengths)):
|
||||
data = int(ExtractPointer(byteList[:memberLengths[j]]))
|
||||
if memberDicts != [] and memberDicts[j] is not False:
|
||||
if loadDictDataFromIndex:
|
||||
if i in memberDicts[j]:
|
||||
data = memberDicts[j][i]
|
||||
else:
|
||||
data = hex(data)
|
||||
|
||||
if offsetForForce > 0:
|
||||
data += ' + ' + str(offsetForForce)
|
||||
elif data in memberDicts[j]:
|
||||
data = memberDicts[j][data]
|
||||
else:
|
||||
data = hex(data)
|
||||
else:
|
||||
data = hex(data)
|
||||
|
||||
if useMemberNames:
|
||||
output.write('\t\t.' + memberNames[j] + ' = ' + str(data) + ',\n')
|
||||
elif j + 1 < len(memberLengths):
|
||||
output.write(str(data) + ', ')
|
||||
else:
|
||||
output.write(str(data))
|
||||
|
||||
byteList = byteList[memberLengths[j]:]
|
||||
|
||||
if i + 1 == numEntries: #Last iteration of loop
|
||||
if useMemberNames:
|
||||
output.write('\t},\n};\n')
|
||||
else:
|
||||
output.write('},\n};\n')
|
||||
else:
|
||||
if useMemberNames:
|
||||
output.write('\t},\n')
|
||||
else:
|
||||
output.write('},\n')
|
||||
|
||||
output.close()
|
||||
print("Success!")
|
||||
|
||||
def ExtractPointer(line):
|
||||
offset = 0
|
||||
for i in range(len(line)):
|
||||
offset += (line[i] << (8 * i))
|
||||
return offset
|
||||
|
||||
def DefinesDictMaker(definesFile):
|
||||
definesDict = {}
|
||||
with open(definesFile, 'r') as file:
|
||||
for line in file:
|
||||
if '#define ' in line:
|
||||
linelist = line.split()
|
||||
try:
|
||||
definesDict[int(linelist[2])] = linelist[1]
|
||||
except:
|
||||
try:
|
||||
definesDict[int(linelist[2], 16)] = linelist[1]
|
||||
except:
|
||||
pass
|
||||
return definesDict
|
||||
|
||||
def GetLengthOfLongestValue(dicty):
|
||||
maxim = ""
|
||||
for key in dicty:
|
||||
if len(dicty[key]) > len(maxim):
|
||||
maxim = dicty[key]
|
||||
|
||||
return len(maxim)
|
||||
|
||||
#Code Execution Begins Here
|
||||
SpeciesDict = DefinesDictMaker(SpeciesDefines)
|
||||
|
||||
GeneralStructTableExtractor(0x128, SpeciesDict, OutputFolder + "Front_Pic_Table.c", "const struct CompressedSpriteSheet", "gMonFrontPicTable", "NUM_SPECIES", NumberOfPokemon, 8, [], [4, 2, 2], [False, False, SpeciesDict], False, True, 0)
|
||||
GeneralStructTableExtractor(0x12C, SpeciesDict, OutputFolder + "Back_Pic_Table.c", "const struct CompressedSpriteSheet", "gMonBackPicTable", "NUM_SPECIES", NumberOfPokemon, 8, [], [4, 2, 2], [False, False, SpeciesDict], False, True, 0)
|
||||
GeneralStructTableExtractor(0x130, SpeciesDict, OutputFolder + "Palette_Table.c", "const struct CompressedSpritePalette", "gMonPaletteTable", "NUM_SPECIES", NumberOfPokemon, 8, [], [4, 2, 2], [False, SpeciesDict, False], False, True, 0)
|
||||
GeneralStructTableExtractor(0x134, SpeciesDict, OutputFolder + "Shiny_Palette_Table.c", "const struct CompressedSpritePalette", "gMonShinyPaletteTable", "NUM_SPECIES", NumberOfPokemon, 8, [], [4, 2, 2], [False, SpeciesDict, False], False, True, 1500)
|
||||
GeneralStructTableExtractor(0x11F4C, SpeciesDict, OutputFolder + "Front_Pic_Coords_Table.c", "const struct MonCoords", "gMonFrontPicCoords", "NUM_SPECIES", NumberOfPokemon, 4, ["size", "y_offset"], [1, 1], [], True, False, 0)
|
||||
GeneralStructTableExtractor(0x74634, SpeciesDict, OutputFolder + "Back_Pic_Coords_Table.c", "const struct MonCoords", "gMonBackPicCoords", "NUM_SPECIES", NumberOfPokemon, 4, ["size", "y_offset"], [1, 1], [], True, False, 0)
|
||||
GeneralTableExtractor(0x356F8, SpeciesDict, False, OutputFolder + "Enemy_Elevation_Table.c", "const u8", "gEnemyMonElevation", "", "NUM_SPECIES", 0, NumberOfPokemon, 1, False)
|
||||
GeneralTableExtractor(0x138, SpeciesDict, False, OutputFolder + "Icon_Table.c", "const u32", "gMonIconTable", "", "NUM_SPECIES", 0, NumberOfPokemon, 4, False)
|
||||
GeneralTableExtractor(0x13C, SpeciesDict, False, OutputFolder + "Icon_Palette_Table.c", "const u8", "gMonIconPaletteIndices", "", "NUM_SPECIES", 0, NumberOfPokemon, 1, False)
|
||||
GeneralTableExtractor(0x105E14, SpeciesDict, False, OutputFolder + "Footprint_Table.c", "const u32", "gMonFootprintTable", "", "NUM_SPECIES", 0, NumberOfPokemon, 4, False)
|
||||
GeneralStructTableExtractor(0x72114, SpeciesDict, OutputFolder + "Cry_Table.c", "const struct ToneData", "gCryTable", "NUM_SPECIES", NumberOfPokemon, 12, ["type", "key", "length", "pan_sweep", "wav", "attack", "decay", "sustain", "release"], [1, 1, 1, 1, 4, 1, 1, 1, 1], [], True, False, 0)
|
||||
GeneralStructTableExtractor(0x72104, SpeciesDict, OutputFolder + "Cry_Table_2.c", "const struct ToneData", "gCryTable2", "NUM_SPECIES", NumberOfPokemon, 12, ["type", "key", "length", "pan_sweep", "wav", "attack", "decay", "sustain", "release"], [1, 1, 1, 1, 4, 1, 1, 1, 1], [], True, False, 0)
|
||||
382
scripts/insert.py
Normal file
382
scripts/insert.py
Normal file
|
|
@ -0,0 +1,382 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
import shutil
|
||||
import binascii
|
||||
import textwrap
|
||||
import sys
|
||||
|
||||
OFFSET_TO_PUT = 0x1f34230
|
||||
SOURCE_ROM = "BPRE0.gba"
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
PathVar = os.environ.get('Path')
|
||||
Paths = PathVar.split(';')
|
||||
PATH = ""
|
||||
for candidatePath in Paths:
|
||||
if "devkitARM" in candidatePath:
|
||||
PATH = candidatePath
|
||||
break
|
||||
if PATH == "":
|
||||
PATH = 'C://devkitPro//devkitARM//bin'
|
||||
if os.path.isdir(PATH) == False:
|
||||
print('Devkit not found.')
|
||||
sys.exit(1)
|
||||
|
||||
ROM_NAME = "test.gba"
|
||||
|
||||
PREFIX = 'arm-none-eabi-'
|
||||
OBJCOPY = os.path.join(PATH, PREFIX + 'objcopy')
|
||||
OBJDUMP = os.path.join(PATH, PREFIX + 'objdump')
|
||||
NM = os.path.join(PATH, PREFIX + 'nm')
|
||||
AS = os.path.join(PATH, PREFIX + 'as')
|
||||
CC = os.path.join(PATH, PREFIX + 'gcc')
|
||||
CXX = os.path.join(PATH, PREFIX + 'g++')
|
||||
|
||||
def ExtractPointer(listy):
|
||||
pointer = 0
|
||||
for a in range(len(listy)):
|
||||
pointer += (int(listy[a])) << (8 * a)
|
||||
return pointer
|
||||
|
||||
def get_text_section():
|
||||
try:
|
||||
# Dump sections
|
||||
out = subprocess.check_output([OBJDUMP, '-t', 'build/linked.o'])
|
||||
lines = out.decode().split('\n')
|
||||
|
||||
# Find text section
|
||||
text = filter(lambda x: x.strip().endswith('.text'), lines)
|
||||
section = (list(text))[0]
|
||||
|
||||
# Get the offset
|
||||
offset = int(section.split(' ')[0], 16)
|
||||
|
||||
return offset
|
||||
|
||||
except:
|
||||
print("Error: The insertion process could not be completed.\n" +
|
||||
"The linker symbol file was not found.")
|
||||
sys.exit(1)
|
||||
|
||||
def symbols(subtract=0):
|
||||
out = subprocess.check_output([NM, 'build/linked.o'])
|
||||
lines = out.decode().split('\n')
|
||||
|
||||
name = ''
|
||||
|
||||
ret = {}
|
||||
for line in lines:
|
||||
parts = line.strip().split()
|
||||
|
||||
if (len(parts) < 3):
|
||||
continue
|
||||
|
||||
if (parts[1].lower() not in {'t','d'}):
|
||||
continue
|
||||
|
||||
offset = int(parts[0], 16)
|
||||
ret[parts[2]] = offset - subtract
|
||||
|
||||
return ret
|
||||
|
||||
def hook(rom, space, hook_at, register=0):
|
||||
# Align 2
|
||||
if hook_at & 1:
|
||||
hook_at -= 1
|
||||
|
||||
rom.seek(hook_at)
|
||||
|
||||
register &= 7
|
||||
|
||||
if hook_at % 4:
|
||||
data = bytes([0x01, 0x48 | register, 0x00 | (register << 3), 0x47, 0x0, 0x0])
|
||||
else:
|
||||
data = bytes([0x00, 0x48 | register, 0x00 | (register << 3), 0x47])
|
||||
|
||||
space += 0x08000001
|
||||
data += (space.to_bytes(4, 'little'))
|
||||
rom.write(bytes(data))
|
||||
|
||||
def funcwrap(rom, space, hook_at, nparams, isreturning):
|
||||
# Align 2
|
||||
if hook_at & 1:
|
||||
hook_at -= 1
|
||||
|
||||
rom.seek(hook_at)
|
||||
nparams=nparams-1
|
||||
|
||||
if nparams<4:
|
||||
data = bytes([0x10, 0xB5, 0x3, 0x4C, 0x0, 0xF0, 0x3, 0xF8, 0x10, 0xBC , (isreturning+1), 0xBC , (isreturning<<3), 0x47, 0x20, 0x47])
|
||||
else:
|
||||
k=nparams-3
|
||||
data = bytes([0x10, 0xB5, 0x82, 0xB0])
|
||||
for i in range(k+2):
|
||||
data += bytes([ i+2, 0x9C , i, 0x94])
|
||||
data += bytes([0x0, 0x9C , (nparams-1), 0x94, 0x1, 0x9C , nparams, 0x94, 0x2, 0xB0 , (k+8), 0x4C,
|
||||
0x0, 0xF0 , ((k<<1)+13), 0xF8, 0x82, 0xB0 , nparams, 0x9C, 0x1, 0x94 , (nparams-1), 0x9C , 0x0, 0x94])
|
||||
for i in reversed(range(k+2)):
|
||||
data += bytes([ i, 0x9C , i+2, 0x94])
|
||||
data += bytes([0x2, 0xB0 , 0x10, 0xBC, (isreturning+1), 0xBC , (isreturning<<3), 0x47, 0x20, 0x47])
|
||||
|
||||
space += 0x08000001
|
||||
data += (space.to_bytes(4, 'little'))
|
||||
rom.write(bytes(data))
|
||||
|
||||
def repoint(rom, space, repoint_at, slidefactor=0):
|
||||
rom.seek(repoint_at)
|
||||
|
||||
space += (0x08000000+slidefactor)
|
||||
data = (space.to_bytes(4, 'little'))
|
||||
rom.write(bytes(data))
|
||||
|
||||
ignored_offsets = [0x3986C0, 0x3986EC, 0xDABDF0] #These offsets contain the word 0x8900000 - the attack data from
|
||||
#Mr. DS's rombase. In order to maintain as much compatability as
|
||||
#possible, the data at these offsets is never modified.
|
||||
|
||||
def real_repoint(rom, offset_tuples):
|
||||
pointer_list = []
|
||||
pointer_dict = {}
|
||||
for tuple in offset_tuples: #Format is (Double Pointer, New Pointer, Symbol)
|
||||
offset = tuple[0]
|
||||
rom.seek(offset)
|
||||
pointer = ExtractPointer(rom.read(4))
|
||||
pointer_list.append(pointer)
|
||||
pointer_dict[pointer] = (tuple[1] + 0x08000000, tuple[2])
|
||||
|
||||
offset = 0
|
||||
offset_list = []
|
||||
|
||||
while (offset < 0xFFFFFD):
|
||||
if offset in ignored_offsets:
|
||||
offset += 4
|
||||
continue
|
||||
|
||||
rom.seek(offset)
|
||||
word = ExtractPointer(rom.read(4))
|
||||
rom.seek(offset)
|
||||
|
||||
for pointer in pointer_list:
|
||||
if word == pointer:
|
||||
offset_list.append((offset, pointer_dict[pointer][1]))
|
||||
rom.write(bytes(pointer_dict[pointer][0].to_bytes(4, 'little')))
|
||||
break
|
||||
|
||||
offset += 4
|
||||
|
||||
return offset_list
|
||||
|
||||
def bytereplace(rom, offset, data):
|
||||
|
||||
ar=offset
|
||||
words=data.split()
|
||||
for i in range(0,len(words)):
|
||||
rom.seek(ar)
|
||||
intbyte=int(words[i],16)
|
||||
rom.write(bytes(intbyte.to_bytes(1, 'big')))
|
||||
ar += 1
|
||||
|
||||
starttime = datetime.now()
|
||||
|
||||
try:
|
||||
shutil.copyfile(SOURCE_ROM, ROM_NAME)
|
||||
except FileNotFoundError:
|
||||
print('Error: Insertion could not be completed.\nCould not find source rom: "' + SOURCE_ROM + '".\nPlease make sure a rom with this name exists in the root.')
|
||||
sys.exit(0)
|
||||
except PermissionError:
|
||||
print('Error: Insertion could not be completed.\n"' + ROM_NAME + '" is currently in use by another application.\nPlease free it up before trying again.')
|
||||
sys.exit(0)
|
||||
|
||||
with open(ROM_NAME, 'rb+') as rom:
|
||||
print("Inserting code.")
|
||||
table = symbols(get_text_section())
|
||||
rom.seek(OFFSET_TO_PUT)
|
||||
with open('build/output.bin', 'rb') as binary:
|
||||
rom.write(binary.read())
|
||||
binary.close()
|
||||
|
||||
# Adjust symbol table
|
||||
for entry in table:
|
||||
table[entry] += OFFSET_TO_PUT
|
||||
|
||||
# Insert byte changes
|
||||
with open('bytereplacement', 'r') as replacelist:
|
||||
for line in replacelist:
|
||||
if line.strip().startswith('#') or line.strip() == '' : continue
|
||||
offset = int(line[:8],16) - 0x08000000
|
||||
bytereplace(rom, offset, line[9:].strip())
|
||||
|
||||
# Do Special Inserts
|
||||
with open('special_inserts.asm', 'r') as file:
|
||||
loadOffsets = False
|
||||
offsetList = []
|
||||
for line in file:
|
||||
if line.strip().startswith('.org '):
|
||||
offsetList.append(int(line.split('.org ')[1].split(',')[0], 16))
|
||||
|
||||
offsetList.sort()
|
||||
|
||||
try:
|
||||
with open('build/special_inserts.bin', 'rb') as binFile:
|
||||
for offset in offsetList:
|
||||
originalOffset = offset
|
||||
dataList = ""
|
||||
|
||||
if offsetList.index(offset) == len(offsetList) - 1:
|
||||
while True:
|
||||
try:
|
||||
binFile.seek(offset)
|
||||
dataList += hex(binFile.read(1)[0]) + " "
|
||||
except IndexError:
|
||||
break
|
||||
|
||||
offset += 1
|
||||
else:
|
||||
binFile.seek(offset)
|
||||
word = ExtractPointer(binFile.read(4))
|
||||
|
||||
while (word != 0xFFFFFFFF):
|
||||
binFile.seek(offset)
|
||||
dataList += hex(binFile.read(1)[0]) + " "
|
||||
offset += 1
|
||||
|
||||
if offset in offsetList: #Overlapping data
|
||||
break
|
||||
|
||||
word = ExtractPointer(binFile.read(4))
|
||||
|
||||
bytereplace(rom, originalOffset, dataList.strip())
|
||||
|
||||
except FileNotFoundError:
|
||||
pass
|
||||
|
||||
# Read hooks from a file
|
||||
with open('hooks', 'r') as hooklist:
|
||||
for line in hooklist:
|
||||
if line.strip().startswith('#') or line.strip() == '': continue
|
||||
|
||||
symbol, address, register = line.split()
|
||||
offset = int(address, 16) - 0x08000000
|
||||
try:
|
||||
code = table[symbol]
|
||||
except KeyError:
|
||||
print('Symbol missing:', symbol)
|
||||
continue
|
||||
|
||||
hook(rom, code, offset, int(register))
|
||||
|
||||
# Read repoints from a file
|
||||
with open('repoints', 'r') as repointlist:
|
||||
for line in repointlist:
|
||||
if line.strip().startswith('#') or line.strip() == '': continue
|
||||
if len(line.split()) is 2:
|
||||
symbol, address = line.split()
|
||||
offset = int(address, 16) - 0x08000000
|
||||
try:
|
||||
code = table[symbol]
|
||||
except KeyError:
|
||||
print('Symbol missing:', symbol)
|
||||
continue
|
||||
repoint(rom, code, offset)
|
||||
|
||||
if len(line.split()) is 3:
|
||||
symbol, address, slide = line.split()
|
||||
offset = int(address, 16) - 0x08000000
|
||||
try:
|
||||
code = table[symbol]
|
||||
except KeyError:
|
||||
print('Symbol missing:', symbol)
|
||||
continue
|
||||
repoint(rom, code, offset, int(slide))
|
||||
|
||||
symbols_repointed = set()
|
||||
|
||||
try:
|
||||
with open('generatedrepoints', 'r') as repointlist:
|
||||
for line in repointlist:
|
||||
if line.strip().startswith('#') or line.strip() == '': continue
|
||||
|
||||
symbol, address = line.split()
|
||||
offset = int(address)
|
||||
try:
|
||||
code = table[symbol]
|
||||
except KeyError:
|
||||
print('Symbol missing:', symbol)
|
||||
continue
|
||||
symbols_repointed.add(symbol)
|
||||
repoint(rom, code, offset)
|
||||
|
||||
except FileNotFoundError:
|
||||
with open('generatedrepoints', 'w') as repointlist:
|
||||
repointlist.write('##This is a generated file at runtime. Do not modify it!\n')
|
||||
|
||||
offsets_to_repoint_together = []
|
||||
|
||||
with open('repointall', 'r') as repointlist:
|
||||
for line in repointlist:
|
||||
if line.strip().startswith('#') or line.strip() == '': continue
|
||||
|
||||
symbol, address = line.split()
|
||||
offset = int(address, 16) - 0x08000000
|
||||
|
||||
if symbol in symbols_repointed: continue
|
||||
|
||||
try:
|
||||
code = table[symbol]
|
||||
except KeyError:
|
||||
print('Symbol missing:', symbol)
|
||||
continue
|
||||
offsets_to_repoint_together.append((offset, code, symbol))
|
||||
|
||||
if offsets_to_repoint_together != []:
|
||||
offsets = real_repoint(rom, offsets_to_repoint_together) #Format is [(offset, symbol), ...]
|
||||
|
||||
output = open('generatedrepoints', 'a')
|
||||
for tuple in offsets:
|
||||
output.write(tuple[1] + ' ' + str(tuple[0]) + '\n')
|
||||
#output.close() #Purposely left open so the user can't modify it
|
||||
|
||||
# Read routine repoints from a file
|
||||
with open('routinepointers', 'r') as pointerlist:
|
||||
for line in pointerlist:
|
||||
if line.strip().startswith('#') or line.strip() == '': continue
|
||||
|
||||
symbol, address = line.split()
|
||||
offset = int(address, 16) - 0x08000000
|
||||
try:
|
||||
code = table[symbol]
|
||||
except KeyError:
|
||||
print('Symbol missing:', symbol)
|
||||
continue
|
||||
|
||||
repoint(rom, code, offset, 1)
|
||||
|
||||
# Read routine rewrite wrapper from a file
|
||||
with open('functionrewrites', 'r') as frwlist:
|
||||
for line in frwlist:
|
||||
if line.strip().startswith('#') or line.strip() == '': continue
|
||||
|
||||
symbol, address, nparam, isreturning = line.split()
|
||||
offset = int(address, 16) - 0x08000000
|
||||
try:
|
||||
code = table[symbol]
|
||||
except KeyError:
|
||||
print('Symbol missing:', symbol)
|
||||
continue
|
||||
|
||||
funcwrap(rom, code, offset, int(nparam), int(isreturning))
|
||||
|
||||
width = max(map(len, table.keys())) + 1
|
||||
try:
|
||||
offset_file = open("offsets.ini", 'r+')
|
||||
except FileNotFoundError:
|
||||
offset_file = open("offsets.ini", 'w')
|
||||
offset_file.truncate()
|
||||
for key in sorted(table.keys()):
|
||||
fstr = ('{:' + str(width) + '} {:08X}')
|
||||
offset_file.write(fstr.format(key + ':', table[key] + 0x08000000) + '\n')
|
||||
offset_file.close()
|
||||
print('Inserted in ' + str(datetime.now() - starttime) + '.')
|
||||
94
scripts/make.py
Normal file
94
scripts/make.py
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import shutil
|
||||
import sys
|
||||
import os
|
||||
|
||||
############
|
||||
#Options go here.
|
||||
############
|
||||
|
||||
ROM_NAME = "BPRE0.gba" #The name of your rom
|
||||
OFFSET_TO_PUT = 0xB00000
|
||||
SEARCH_FREE_SPACE = False #Set to True if you want the script to search for free space;Set to False if you don't want to search for free space as you for example update the engine
|
||||
|
||||
#############
|
||||
#Options end here.
|
||||
#############
|
||||
|
||||
###############
|
||||
#Functions start here.
|
||||
###############
|
||||
|
||||
def align_x100(offset):
|
||||
mod_x100 = offset % 0x100
|
||||
if mod_x100 != 0x0: #not aligned properly
|
||||
offset += (0x100 - mod_x100)
|
||||
return offset
|
||||
|
||||
def find_offset_to_put(rom, needed_bytes, start_loc):
|
||||
offset = start_loc
|
||||
rom.seek(0, 2)
|
||||
max_pos = rom.tell()
|
||||
found_bytes = 0
|
||||
while found_bytes < needed_bytes:
|
||||
if offset + found_bytes >= max_pos:
|
||||
print("End of file reached. Not enough free space.")
|
||||
return 0
|
||||
found_bytes += 1
|
||||
rom.seek(offset + found_bytes)
|
||||
if rom.read(1) != b'\xFF':
|
||||
offset = align_x100(offset + found_bytes)
|
||||
found_bytes = 0
|
||||
return offset
|
||||
|
||||
def file_change_line(file_path, line_to_change, replacement):
|
||||
file = open(file_path, 'r')
|
||||
copy = file.read()
|
||||
file.seek(0x0)
|
||||
line_no = 1
|
||||
for line in file:
|
||||
if (line_no == line_to_change):
|
||||
copy = copy.replace(line, replacement)
|
||||
break
|
||||
line_no += 1
|
||||
file.close()
|
||||
|
||||
file = open(file_path, 'w')
|
||||
file.write(copy)
|
||||
file.close()
|
||||
|
||||
def edit_linker(offset):
|
||||
file_change_line("linker.ld", 4, "\t\trom : ORIGIN = (0x08000000 + " + hex(offset) + "), LENGTH = 32M\n")
|
||||
|
||||
def edit_insert(offset):
|
||||
file_change_line("./scripts/insert.py", 11, "OFFSET_TO_PUT = " + hex(offset) + '\n')
|
||||
file_change_line("./scripts/insert.py", 12, 'SOURCE_ROM = "' + ROM_NAME + '"\n')
|
||||
|
||||
def build_code():
|
||||
os.system("python scripts/build.py")
|
||||
|
||||
def insert_code():
|
||||
os.system("python scripts/insert.py")
|
||||
|
||||
def clear_from_to(rom, from_, to_):
|
||||
rom.seek(from_)
|
||||
for i in range(0, to_ - from_):
|
||||
rom.write(b'\xFF')
|
||||
|
||||
##############
|
||||
#Functions end here.
|
||||
##############
|
||||
|
||||
try:
|
||||
with open(ROM_NAME, 'rb+') as rom:
|
||||
offset = OFFSET_TO_PUT
|
||||
if SEARCH_FREE_SPACE == True:
|
||||
offset = find_offset_to_put(rom, 0x50000, align_x100(offset))
|
||||
edit_linker(offset)
|
||||
edit_insert(offset)
|
||||
build_code()
|
||||
insert_code()
|
||||
rom.close()
|
||||
except:
|
||||
print('Error: Could not find source rom: "' + ROM_NAME + '".\nPlease make sure a rom with this name exists in the root.')
|
||||
151
scripts/string.py
Normal file
151
scripts/string.py
Normal file
|
|
@ -0,0 +1,151 @@
|
|||
#!/usr/bin/env python3
|
||||
# -*- coding: cp437 -*-
|
||||
|
||||
CharMap = "charmap.tbl"
|
||||
|
||||
SpecialBuffers = {
|
||||
"." : ["B0"],
|
||||
"BUFFER" : ["FD"],
|
||||
"ATTACKER" : ["FD", "0F"],
|
||||
"TARGET" : ["FD", "10"],
|
||||
"EFFECT_BANK" : ["FD", "11"],
|
||||
"SCRIPTING_BANK" : ["FD", "13"],
|
||||
"CURRENT_MOVE" : ["FD", "14"],
|
||||
"LAST_ITEM" : ["FD", "16"],
|
||||
"LAST_ABILITY" : ["FD", "17"],
|
||||
"ATTACKER_ABILITY" : ["FD", "18"],
|
||||
"TARGET_ABILITY" : ["FD", "19"],
|
||||
"SCRIPTING_BANK_ABILITY" : ["FD", "1A"],
|
||||
"PLAYER_NAME" : ["FD", "23"],
|
||||
}
|
||||
|
||||
def StringFileConverter(filename):
|
||||
stringToWrite = ".thumb\n.text\n.align 2\n\n"
|
||||
with open(filename, 'r') as file:
|
||||
maxLength = 0
|
||||
fillFF = False
|
||||
readingState = 0
|
||||
|
||||
for line in file:
|
||||
line = line.rstrip("\n\r") #Remove only newline characters
|
||||
if line == "" or line[:2] == "//": #Ignore blank lines and comment lines
|
||||
continue
|
||||
|
||||
if readingState == 0: #Only when the file starts
|
||||
line = line.strip()
|
||||
if line[:6].upper() == "#ORG @" and line[6:] != "":
|
||||
title = line[6:]
|
||||
stringToWrite += ".global " + title + "\n" + title + ":\n"
|
||||
readingState = 1
|
||||
elif "MAX_LENGTH" in line and "=" in line:
|
||||
try:
|
||||
maxLength = int(line.split("=")[1])
|
||||
except:
|
||||
print('Error reading max length in line: "' + line + '" in file: "' + filename + '"')
|
||||
elif "FILL_FF" in line and "=" in line:
|
||||
try:
|
||||
fillFF = bool(line.split("=")[1])
|
||||
except:
|
||||
print('Error reading FF fill in line: "' + line + '" in file: "' + filename + '"')
|
||||
else:
|
||||
print('Warning! Error with line: "' + line + '" in file: "' + filename + '"')
|
||||
|
||||
elif readingState == 1:
|
||||
if line[:6].upper() == "#ORG @" and line[6:] != "":
|
||||
line = line.strip()
|
||||
title = line[6:]
|
||||
stringToWrite += ".global " + title + "\n" + title + ":\n"
|
||||
else:
|
||||
stringToWrite += ProcessString(line, maxLength, fillFF)
|
||||
stringToWrite += "0xFF\n\n" #Only print line in everything went alright
|
||||
|
||||
output = open(filename.split(".string")[0] + '.s', 'w') #Only open file once we know everything went okay.
|
||||
output.write(stringToWrite)
|
||||
output.close()
|
||||
|
||||
def ProcessString(string, maxLength = 0, fillWithFF = False):
|
||||
charMap = PokeByteTableMaker()
|
||||
stringToWrite = ".byte "
|
||||
buffer = False
|
||||
escapeChar = False
|
||||
bufferChars = ""
|
||||
strLen = 0
|
||||
|
||||
for char in string:
|
||||
if maxLength > 0 and strLen >= maxLength:
|
||||
print('Warning: The string "' + string + '" has exceeded the maximum length of ' + str(maxLength) + ' and has been truncated!')
|
||||
break
|
||||
|
||||
if buffer is True:
|
||||
if char == ']':
|
||||
buffer = False
|
||||
|
||||
if bufferChars in SpecialBuffers:
|
||||
for bufferChar in SpecialBuffers[bufferChars]:
|
||||
if maxLength > 0 and strLen >= maxLength: #End buffer in middle
|
||||
print('Warning: The string buffer "' + bufferChars + '" has exceeded the maximum length of ' + str(maxLength) + ' and has been truncated!')
|
||||
break
|
||||
|
||||
stringToWrite += ("0x" + bufferChar + ", ")
|
||||
strLen += 1
|
||||
|
||||
else:
|
||||
stringToWrite += ("0x" + bufferChars + ", ")
|
||||
strLen += 1
|
||||
|
||||
bufferChars = ""
|
||||
else:
|
||||
bufferChars += char
|
||||
|
||||
elif escapeChar is True:
|
||||
escapeChar = False
|
||||
try:
|
||||
stringToWrite += hex(charMap["\\" + char]) + ", "
|
||||
strLen += 1
|
||||
|
||||
except KeyError:
|
||||
print('Error parsing string: "' + string + '"')
|
||||
break
|
||||
|
||||
else:
|
||||
try:
|
||||
stringToWrite += hex(charMap[char]) + ", "
|
||||
strLen += 1
|
||||
|
||||
except KeyError:
|
||||
if (char == '['):
|
||||
buffer = True
|
||||
elif (char == '\\'):
|
||||
escapeChar = True
|
||||
elif char == '"':
|
||||
stringToWrite += hex(charMap["\\" + char])
|
||||
strLen += 1
|
||||
else:
|
||||
print('Error parsing string: "' + string + '"' + ' at character "' + char + '".')
|
||||
break
|
||||
|
||||
if strLen < maxLength and fillWithFF:
|
||||
while strLen < maxLength:
|
||||
stringToWrite += "0xFF, "
|
||||
strLen += 1
|
||||
|
||||
return stringToWrite
|
||||
|
||||
def PokeByteTableMaker():
|
||||
dicty = {}
|
||||
with open(CharMap) as file:
|
||||
for line in file:
|
||||
if line.strip() != "/FF" and line.strip() != "":
|
||||
if (line[2] == '=' and line[3] != ""):
|
||||
try:
|
||||
if line[3] == '\\':
|
||||
dicty[line[3] + line[4]] = int(line.split('=')[0], 16)
|
||||
else:
|
||||
dicty[line[3]] = int(line.split('=')[0], 16)
|
||||
except:
|
||||
pass
|
||||
dicty[' '] = 0
|
||||
|
||||
dicty["“"] = 0xB0
|
||||
dicty["”"] = 0xB1
|
||||
return dicty
|
||||
76
special_inserts.asm
Normal file
76
special_inserts.asm
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
.text
|
||||
.align 2
|
||||
.thumb
|
||||
|
||||
.equ NUM_SPECIES, 1102
|
||||
.equ EVOS_PER_MON, 16
|
||||
.equ NUM_DEX_ENTRIES, 809
|
||||
|
||||
.equ SEEN_DEX_FLAGS, 0x203C700
|
||||
.equ CAUGHT_DEX_FLAGS, (SEEN_DEX_FLAGS + (NUM_DEX_ENTRIES / 8) + 1)
|
||||
|
||||
@@Fix Num Evolutions@@
|
||||
.org 0x4598A, 0xFF
|
||||
.byte EVOS_PER_MON * 8
|
||||
|
||||
.org 0x4598E, 0xFF
|
||||
.byte EVOS_PER_MON * 8
|
||||
|
||||
@@Fix Breeding@@
|
||||
.org 0x459CC, 0xFF
|
||||
ldr r0, .BreedingNumSpecies
|
||||
add r0, #0x1
|
||||
|
||||
.org 0x459EC, 0xFF
|
||||
.BreedingNumSpecies: .word NUM_SPECIES - 1
|
||||
|
||||
@@Fix Egg Hatching Time@@
|
||||
.org 0x46204, 0xFF
|
||||
.word gBaseStats + 0x11
|
||||
|
||||
.org 0x462A8, 0xFF
|
||||
.word gBaseStats + 0x11
|
||||
|
||||
@@Fix New Game Dex Flags Clear@@
|
||||
.org 0x549B0, 0xFF
|
||||
mov r0, r4
|
||||
mov r8, r8
|
||||
mov r1, #0x0
|
||||
mov r2, #(NUM_DEX_ENTRIES / 8) + 1
|
||||
|
||||
.org 0x549BC, 0xFF
|
||||
mov r0, r4
|
||||
add r0, #(NUM_DEX_ENTRIES / 8) + 1
|
||||
mov r1, #0x0
|
||||
mov r2, #(NUM_DEX_ENTRIES / 8) + 1
|
||||
|
||||
.org 0x549D0, 0xFF
|
||||
.word SEEN_DEX_FLAGS
|
||||
|
||||
@@Fix Dex Views@@
|
||||
.org 0x88EA4, 0xFF @Pokedex Count
|
||||
.word NUM_DEX_ENTRIES - 1
|
||||
|
||||
.org 0x1037D4, 0xFF @Weight View
|
||||
.word NUM_DEX_ENTRIES - 1
|
||||
|
||||
.org 0x103870, 0xFF @Height View
|
||||
.word NUM_DEX_ENTRIES - 1
|
||||
|
||||
.org 0x103920, 0xFF @General
|
||||
.word NUM_DEX_ENTRIES - 1
|
||||
|
||||
.org 0x104B10, 0xFF
|
||||
.word SEEN_DEX_FLAGS
|
||||
|
||||
.org 0x104B5C, 0xFF
|
||||
.word CAUGHT_DEX_FLAGS
|
||||
|
||||
.org 0x104B94, 0xFF
|
||||
.word SEEN_DEX_FLAGS
|
||||
|
||||
.org 0x104BB8, 0xFF
|
||||
.word CAUGHT_DEX_FLAGS
|
||||
|
||||
.org 0x104C28, 0xFF
|
||||
.word NUM_DEX_ENTRIES - 1
|
||||
5516
src/Back_Pic_Coords_Table.c
Normal file
5516
src/Back_Pic_Coords_Table.c
Normal file
File diff suppressed because it is too large
Load Diff
1108
src/Back_Pic_Table.c
Normal file
1108
src/Back_Pic_Table.c
Normal file
File diff suppressed because it is too large
Load Diff
35521
src/Base_Stats.c
Normal file
35521
src/Base_Stats.c
Normal file
File diff suppressed because it is too large
Load Diff
12918
src/Cry_Table.c
Normal file
12918
src/Cry_Table.c
Normal file
File diff suppressed because it is too large
Load Diff
12918
src/Cry_Table_2.c
Normal file
12918
src/Cry_Table_2.c
Normal file
File diff suppressed because it is too large
Load Diff
3792
src/Egg_Moves.c
Normal file
3792
src/Egg_Moves.c
Normal file
File diff suppressed because it is too large
Load Diff
1107
src/Enemy_Elevation_Table.c
Normal file
1107
src/Enemy_Elevation_Table.c
Normal file
File diff suppressed because it is too large
Load Diff
565
src/Evolution Table.c
Normal file
565
src/Evolution Table.c
Normal file
|
|
@ -0,0 +1,565 @@
|
|||
#include "defines.h"
|
||||
#include "../include/moves.h"
|
||||
#include "../include/items.h"
|
||||
#include "../include/evolution.h"
|
||||
#include "../include/base_stats.h"
|
||||
|
||||
const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] =
|
||||
{
|
||||
[SPECIES_BULBASAUR] = {{EVO_LEVEL, 16, SPECIES_IVYSAUR, 0}},
|
||||
[SPECIES_IVYSAUR] = {{EVO_LEVEL, 32, SPECIES_VENUSAUR, 0}},
|
||||
[SPECIES_VENUSAUR] = {{EVO_MEGA, ITEM_VENUSAURITE, SPECIES_VENUSAUR_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_CHARMANDER] = {{EVO_LEVEL, 16, SPECIES_CHARMELEON, 0}},
|
||||
[SPECIES_CHARMELEON] = {{EVO_LEVEL, 36, SPECIES_CHARIZARD, 0}},
|
||||
[SPECIES_CHARIZARD] = {{EVO_MEGA, ITEM_CHARIZARDITE_X, SPECIES_CHARIZARD_MEGA_X, MEGA_VARIANT_STANDARD},
|
||||
{EVO_MEGA, ITEM_CHARIZARDITE_Y, SPECIES_CHARIZARD_MEGA_Y, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_SQUIRTLE] = {{EVO_LEVEL, 16, SPECIES_WARTORTLE, 0}},
|
||||
[SPECIES_WARTORTLE] = {{EVO_LEVEL, 36, SPECIES_BLASTOISE, 0}},
|
||||
[SPECIES_BLASTOISE] = {{EVO_MEGA, ITEM_BLASTOISINITE, SPECIES_BLASTOISE_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_CATERPIE] = {{EVO_LEVEL, 7, SPECIES_METAPOD, 0}},
|
||||
[SPECIES_METAPOD] = {{EVO_LEVEL, 10, SPECIES_BUTTERFREE, 0}},
|
||||
[SPECIES_WEEDLE] = {{EVO_LEVEL, 7, SPECIES_KAKUNA, 0}},
|
||||
[SPECIES_KAKUNA] = {{EVO_LEVEL, 10, SPECIES_BEEDRILL, 0}},
|
||||
[SPECIES_BEEDRILL] = {{EVO_MEGA, ITEM_BEEDRILLITE, SPECIES_BEEDRILL_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_PIDGEY] = {{EVO_LEVEL, 18, SPECIES_PIDGEOTTO, 0}},
|
||||
[SPECIES_PIDGEOTTO] = {{EVO_LEVEL, 36, SPECIES_PIDGEOT, 0}},
|
||||
[SPECIES_PIDGEOT] = {{EVO_MEGA, ITEM_PIDGEOTITE, SPECIES_PIDGEOT_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_RATTATA] = {{EVO_LEVEL, 20, SPECIES_RATICATE, 0}},
|
||||
[SPECIES_SPEAROW] = {{EVO_LEVEL, 20, SPECIES_FEAROW, 0}},
|
||||
[SPECIES_EKANS] = {{EVO_LEVEL, 22, SPECIES_ARBOK, 0}},
|
||||
[SPECIES_PIKACHU] = {{EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_RAICHU, 0}},
|
||||
[SPECIES_SANDSHREW] = {{EVO_LEVEL, 22, SPECIES_SANDSLASH, 0}},
|
||||
[SPECIES_NIDORAN_F] = {{EVO_LEVEL, 16, SPECIES_NIDORINA, 0}},
|
||||
[SPECIES_NIDORINA] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOQUEEN, 0}},
|
||||
[SPECIES_NIDORAN_M] = {{EVO_LEVEL, 16, SPECIES_NIDORINO, 0}},
|
||||
[SPECIES_NIDORINO] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOKING, 0}},
|
||||
[SPECIES_CLEFAIRY] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_CLEFABLE, 0}},
|
||||
[SPECIES_VULPIX] = {{EVO_ITEM, ITEM_FIRE_STONE, SPECIES_NINETALES, 0}},
|
||||
[SPECIES_JIGGLYPUFF] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_WIGGLYTUFF, 0}},
|
||||
[SPECIES_ZUBAT] = {{EVO_LEVEL, 22, SPECIES_GOLBAT, 0}},
|
||||
[SPECIES_GOLBAT] = {{EVO_FRIENDSHIP, 0, SPECIES_CROBAT, 0}},
|
||||
[SPECIES_ODDISH] = {{EVO_LEVEL, 21, SPECIES_GLOOM, 0}},
|
||||
[SPECIES_GLOOM] = {{EVO_ITEM, ITEM_SUN_STONE, SPECIES_BELLOSSOM, 0},
|
||||
{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VILEPLUME, 0}},
|
||||
[SPECIES_PARAS] = {{EVO_LEVEL, 24, SPECIES_PARASECT, 0}},
|
||||
[SPECIES_VENONAT] = {{EVO_LEVEL, 31, SPECIES_VENOMOTH, 0}},
|
||||
[SPECIES_DIGLETT] = {{EVO_LEVEL, 26, SPECIES_DUGTRIO, 0}},
|
||||
[SPECIES_MEOWTH] = {{EVO_LEVEL, 28, SPECIES_PERSIAN, 0}},
|
||||
[SPECIES_PSYDUCK] = {{EVO_LEVEL, 33, SPECIES_GOLDUCK, 0}},
|
||||
[SPECIES_MANKEY] = {{EVO_LEVEL, 28, SPECIES_PRIMEAPE, 0}},
|
||||
[SPECIES_GROWLITHE] = {{EVO_ITEM, ITEM_FIRE_STONE, SPECIES_ARCANINE, 0}},
|
||||
[SPECIES_POLIWAG] = {{EVO_LEVEL, 25, SPECIES_POLIWHIRL, 0}},
|
||||
[SPECIES_POLIWHIRL] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_POLIWRATH, 0},
|
||||
{EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED, 0},
|
||||
{EVO_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED, 0}},
|
||||
[SPECIES_ABRA] = {{EVO_LEVEL, 16, SPECIES_KADABRA, 0}},
|
||||
[SPECIES_KADABRA] = {{EVO_TRADE, 0, SPECIES_ALAKAZAM, 0},
|
||||
{EVO_ITEM, ITEM_LINK_CABLE, SPECIES_ALAKAZAM, 0}},
|
||||
[SPECIES_ALAKAZAM] = {{EVO_MEGA, ITEM_ALAKAZITE, SPECIES_ALAKAZAM_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_MACHOP] = {{EVO_LEVEL, 28, SPECIES_MACHOKE, 0}},
|
||||
[SPECIES_MACHOKE] = {{EVO_TRADE, 0, SPECIES_MACHAMP, 0},
|
||||
{EVO_ITEM, ITEM_LINK_CABLE, SPECIES_MACHAMP, 0}},
|
||||
[SPECIES_BELLSPROUT] = {{EVO_LEVEL, 21, SPECIES_WEEPINBELL, 0}},
|
||||
[SPECIES_WEEPINBELL] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VICTREEBEL, 0}},
|
||||
[SPECIES_TENTACOOL] = {{EVO_LEVEL, 30, SPECIES_TENTACRUEL, 0}},
|
||||
[SPECIES_GEODUDE] = {{EVO_LEVEL, 25, SPECIES_GRAVELER, 0}},
|
||||
[SPECIES_GRAVELER] = {{EVO_ITEM, ITEM_LINK_CABLE, SPECIES_GOLEM, 0},
|
||||
{EVO_TRADE, 0, SPECIES_GOLEM, 0}},
|
||||
[SPECIES_PONYTA] = {{EVO_LEVEL, 40, SPECIES_RAPIDASH, 0}},
|
||||
[SPECIES_SLOWPOKE] = {{EVO_LEVEL, 37, SPECIES_SLOWBRO, 0},
|
||||
{EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING, 0},
|
||||
{EVO_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING, 0}},
|
||||
[SPECIES_SLOWBRO] = {{EVO_MEGA, ITEM_SLOWBRONITE, SPECIES_SLOWBRO_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_MAGNEMITE] = {{EVO_LEVEL, 30, SPECIES_MAGNETON, 0}},
|
||||
[SPECIES_MAGNETON] = {{EVO_MAP, MAP_NAME_THUNDERCAP_MT, SPECIES_MAGNEZONE, 0}},
|
||||
[SPECIES_DODUO] = {{EVO_LEVEL, 31, SPECIES_DODRIO, 0}},
|
||||
[SPECIES_SEEL] = {{EVO_LEVEL, 34, SPECIES_DEWGONG, 0}},
|
||||
[SPECIES_GRIMER] = {{EVO_LEVEL, 38, SPECIES_MUK, 0}},
|
||||
[SPECIES_SHELLDER] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_CLOYSTER, 0}},
|
||||
[SPECIES_GASTLY] = {{EVO_LEVEL, 25, SPECIES_HAUNTER, 0}},
|
||||
[SPECIES_HAUNTER] = {{EVO_TRADE, 0, SPECIES_GENGAR, 0},
|
||||
{EVO_ITEM, ITEM_LINK_CABLE, SPECIES_GENGAR, 0}},
|
||||
[SPECIES_GENGAR] = {{EVO_MEGA, ITEM_GENGARITE, SPECIES_GENGAR_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_ONIX] = {{EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX, 0},
|
||||
{EVO_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX, 0}},
|
||||
[SPECIES_DROWZEE] = {{EVO_LEVEL, 26, SPECIES_HYPNO, 0}},
|
||||
[SPECIES_KRABBY] = {{EVO_LEVEL, 28, SPECIES_KINGLER, 0}},
|
||||
[SPECIES_VOLTORB] = {{EVO_LEVEL, 30, SPECIES_ELECTRODE, 0}},
|
||||
[SPECIES_EXEGGCUTE] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_EXEGGUTOR, 0}},
|
||||
[SPECIES_CUBONE] = {{EVO_LEVEL, 28, SPECIES_MAROWAK, 0}},
|
||||
[SPECIES_LICKITUNG] = {{EVO_MOVE, 205, SPECIES_LICKILICKY, 0}},
|
||||
[SPECIES_KOFFING] = {{EVO_LEVEL, 35, SPECIES_WEEZING, 0}},
|
||||
[SPECIES_RHYHORN] = {{EVO_LEVEL, 42, SPECIES_RHYDON, 0}},
|
||||
[SPECIES_RHYDON] = {{EVO_ITEM, ITEM_BIG_NUGGET, SPECIES_RHYPERIOR, 0},
|
||||
{EVO_TRADE_ITEM, ITEM_BIG_NUGGET, SPECIES_RHYPERIOR, 0}},
|
||||
[SPECIES_CHANSEY] = {{EVO_FRIENDSHIP, 0, SPECIES_BLISSEY, 0}},
|
||||
[SPECIES_TANGELA] = {{EVO_LEVEL, 37, SPECIES_SLOWBRO, 0}},
|
||||
[SPECIES_KANGASKHAN] = {{EVO_MEGA, ITEM_KANGASKHANITE, SPECIES_KANGASKHAN_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_HORSEA] = {{EVO_LEVEL, 32, SPECIES_SEADRA, 0}},
|
||||
[SPECIES_SEADRA] = {{EVO_TRADE_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA, 0},
|
||||
{EVO_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA, 0}},
|
||||
[SPECIES_GOLDEEN] = {{EVO_LEVEL, 33, SPECIES_SEAKING, 0}},
|
||||
[SPECIES_STARYU] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_STARMIE, 0}},
|
||||
[SPECIES_SCYTHER] = {{EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR, 0},
|
||||
{EVO_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR, 0}},
|
||||
[SPECIES_ELECTABUZZ] = {{EVO_ITEM, ITEM_ELECTRIZER, SPECIES_ELECTIVIRE, 0},
|
||||
{EVO_TRADE_ITEM, ITEM_ELECTRIZER, SPECIES_ELECTIVIRE, 0}},
|
||||
[SPECIES_MAGMAR] = {{EVO_TRADE_ITEM, ITEM_PEARL_STRING, SPECIES_MAGMORTAR, 0},
|
||||
{EVO_ITEM, ITEM_PEARL_STRING, SPECIES_MAGMORTAR, 0}},
|
||||
[SPECIES_PINSIR] = {{EVO_MEGA, ITEM_PINSIRITE, SPECIES_PINSIR_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_MAGIKARP] = {{EVO_LEVEL, 20, SPECIES_GYARADOS, 0}},
|
||||
[SPECIES_GYARADOS] = {{EVO_MEGA, ITEM_GYARADOSITE, SPECIES_GYARADOS_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_EEVEE] = {{EVO_FRIENDSHIP_DAY, 0, SPECIES_ESPEON, 0},
|
||||
{EVO_FRIENDSHIP_NIGHT, 0, SPECIES_UMBREON, 0},
|
||||
{EVO_ITEM, ITEM_FIRE_STONE, SPECIES_FLAREON, 0},
|
||||
{EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_JOLTEON, 0},
|
||||
{EVO_ITEM, ITEM_WATER_STONE, SPECIES_VAPOREON, 0},
|
||||
{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_LEAFEON, 0},
|
||||
{EVO_ITEM, ITEM_ICE_STONE, SPECIES_GLACEON, 0},
|
||||
{EVO_MOVE_TYPE, TYPE_FAIRY, SPECIES_SYLVEON, 0}},
|
||||
[SPECIES_PORYGON] = {{EVO_ITEM, ITEM_UP_GRADE, SPECIES_PORYGON2, 0},
|
||||
{EVO_TRADE_ITEM, ITEM_UP_GRADE, SPECIES_PORYGON2, 0}},
|
||||
[SPECIES_OMANYTE] = {{EVO_LEVEL, 40, SPECIES_OMASTAR, 0}},
|
||||
[SPECIES_KABUTO] = {{EVO_LEVEL, 40, SPECIES_KABUTOPS, 0}},
|
||||
[SPECIES_AERODACTYL] = {{EVO_MEGA, ITEM_AERODACTYLITE, SPECIES_AERODACTYL_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_DRATINI] = {{EVO_LEVEL, 30, SPECIES_DRAGONAIR, 0}},
|
||||
[SPECIES_DRAGONAIR] = {{EVO_LEVEL, 55, SPECIES_DRAGONITE, 0}},
|
||||
[SPECIES_MEWTWO] = {{EVO_MEGA, ITEM_MEWTWONITE_X, SPECIES_MEWTWO_MEGA_X, MEGA_VARIANT_STANDARD},
|
||||
{EVO_MEGA, ITEM_MEWTWONITE_Y, SPECIES_MEWTWO_MEGA_Y, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_CHIKORITA] = {{EVO_LEVEL, 16, SPECIES_BAYLEEF, 0}},
|
||||
[SPECIES_BAYLEEF] = {{EVO_LEVEL, 32, SPECIES_MEGANIUM, 0}},
|
||||
[SPECIES_CYNDAQUIL] = {{EVO_LEVEL, 14, SPECIES_QUILAVA, 0}},
|
||||
[SPECIES_QUILAVA] = {{EVO_LEVEL, 36, SPECIES_TYPHLOSION, 0}},
|
||||
[SPECIES_TOTODILE] = {{EVO_LEVEL, 18, SPECIES_CROCONAW, 0}},
|
||||
[SPECIES_CROCONAW] = {{EVO_LEVEL, 30, SPECIES_FERALIGATR, 0}},
|
||||
[SPECIES_SENTRET] = {{EVO_LEVEL, 15, SPECIES_FURRET, 0}},
|
||||
[SPECIES_HOOTHOOT] = {{EVO_LEVEL, 20, SPECIES_NOCTOWL, 0}},
|
||||
[SPECIES_LEDYBA] = {{EVO_LEVEL, 18, SPECIES_LEDIAN, 0}},
|
||||
[SPECIES_SPINARAK] = {{EVO_LEVEL, 22, SPECIES_ARIADOS, 0}},
|
||||
[SPECIES_CHINCHOU] = {{EVO_LEVEL, 27, SPECIES_LANTURN, 0}},
|
||||
[SPECIES_PICHU] = {{EVO_FRIENDSHIP, 0, SPECIES_PIKACHU, 0}},
|
||||
[SPECIES_CLEFFA] = {{EVO_FRIENDSHIP, 0, SPECIES_CLEFAIRY, 0}},
|
||||
[SPECIES_IGGLYBUFF] = {{EVO_FRIENDSHIP, 0, SPECIES_JIGGLYPUFF, 0}},
|
||||
[SPECIES_TOGEPI] = {{EVO_FRIENDSHIP, 0, SPECIES_TOGETIC, 0}},
|
||||
[SPECIES_NATU] = {{EVO_LEVEL, 25, SPECIES_XATU, 0}},
|
||||
[SPECIES_MAREEP] = {{EVO_LEVEL, 15, SPECIES_FLAAFFY, 0}},
|
||||
[SPECIES_FLAAFFY] = {{EVO_LEVEL, 30, SPECIES_AMPHAROS, 0}},
|
||||
[SPECIES_AMPHAROS] = {{EVO_MEGA, ITEM_AMPHAROSITE, SPECIES_AMPHAROS_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_MARILL] = {{EVO_LEVEL, 18, SPECIES_AZUMARILL, 0}},
|
||||
[SPECIES_HOPPIP] = {{EVO_LEVEL, 18, SPECIES_SKIPLOOM, 0}},
|
||||
[SPECIES_SKIPLOOM] = {{EVO_LEVEL, 27, SPECIES_JUMPLUFF, 0}},
|
||||
[SPECIES_AIPOM] = {{EVO_MOVE, 438, SPECIES_AMBIPOM, 0}},
|
||||
[SPECIES_SUNKERN] = {{EVO_ITEM, ITEM_SUN_STONE, SPECIES_SUNFLORA, 0}},
|
||||
[SPECIES_YANMA] = {{EVO_MOVE, 246, SPECIES_YANMEGA, 0}},
|
||||
[SPECIES_WOOPER] = {{EVO_LEVEL, 20, SPECIES_QUAGSIRE, 0}},
|
||||
[SPECIES_MURKROW] = {{EVO_ITEM, ITEM_DUSK_STONE, SPECIES_HONCHKROW, 0}},
|
||||
[SPECIES_MISDREAVUS] = {{EVO_ITEM, ITEM_036, SPECIES_MISMAGIUS, 0}},
|
||||
[SPECIES_PINECO] = {{EVO_LEVEL, 31, SPECIES_FORRETRESS, 0}},
|
||||
[SPECIES_GLIGAR] = {{EVO_HOLD_ITEM_NIGHT, ITEM_RAZOR_FANG, SPECIES_GLISCOR, 0}},
|
||||
[SPECIES_STEELIX] = {{EVO_MEGA, ITEM_STEELIXITE, SPECIES_STEELIX_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_SNUBBULL] = {{EVO_LEVEL, 23, SPECIES_GRANBULL, 0}},
|
||||
[SPECIES_SCIZOR] = {{EVO_MEGA, ITEM_SCIZORITE, SPECIES_SCIZOR_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_HERACROSS] = {{EVO_MEGA, ITEM_HERACRONITE, SPECIES_HERACROSS_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_TEDDIURSA] = {{EVO_LEVEL, 30, SPECIES_URSARING, 0}},
|
||||
[SPECIES_SLUGMA] = {{EVO_LEVEL, 38, SPECIES_MAGCARGO, 0}},
|
||||
[SPECIES_SWINUB] = {{EVO_LEVEL, 33, SPECIES_PILOSWINE, 0}},
|
||||
[SPECIES_PILOSWINE] = {{EVO_MOVE, 246, SPECIES_MAMOSWINE, 0}},
|
||||
[SPECIES_REMORAID] = {{EVO_LEVEL, 25, SPECIES_OCTILLERY, 0}},
|
||||
[SPECIES_HOUNDOUR] = {{EVO_LEVEL, 24, SPECIES_HOUNDOOM, 0}},
|
||||
[SPECIES_HOUNDOOM] = {{EVO_MEGA, ITEM_HOUNDOOMINITE, SPECIES_HOUNDOOM_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_PHANPY] = {{EVO_LEVEL, 25, SPECIES_DONPHAN, 0}},
|
||||
[SPECIES_PORYGON2] = {{EVO_TRADE_ITEM, ITEM_DUBIOUS_DISK, SPECIES_PORYGON_Z, 0},
|
||||
{EVO_ITEM, ITEM_DUBIOUS_DISK, SPECIES_PORYGON_Z, 0}},
|
||||
[SPECIES_TYROGUE] = {{EVO_LEVEL_ATK_GT_DEF, 20, SPECIES_HITMONLEE, 0},
|
||||
{EVO_LEVEL_ATK_EQ_DEF, 20, SPECIES_HITMONTOP, 0},
|
||||
{EVO_LEVEL_ATK_LT_DEF, 20, SPECIES_HITMONCHAN, 0}},
|
||||
[SPECIES_SMOOCHUM] = {{EVO_LEVEL, 30, SPECIES_JYNX, 0}},
|
||||
[SPECIES_ELEKID] = {{EVO_LEVEL, 30, SPECIES_ELECTABUZZ, 0}},
|
||||
[SPECIES_MAGBY] = {{EVO_LEVEL, 30, SPECIES_MAGMAR, 0}},
|
||||
[SPECIES_LARVITAR] = {{EVO_LEVEL, 30, SPECIES_PUPITAR, 0}},
|
||||
[SPECIES_PUPITAR] = {{EVO_LEVEL, 55, SPECIES_TYRANITAR, 0}},
|
||||
[SPECIES_TYRANITAR] = {{EVO_MEGA, ITEM_TYRANITARITE, SPECIES_TYRANITAR_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_TREECKO] = {{EVO_LEVEL, 16, SPECIES_GROVYLE, 0}},
|
||||
[SPECIES_GROVYLE] = {{EVO_LEVEL, 36, SPECIES_SCEPTILE, 0}},
|
||||
[SPECIES_SCEPTILE] = {{EVO_MEGA, ITEM_SCEPTILITE, SPECIES_SCEPTILE_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_TORCHIC] = {{EVO_LEVEL, 16, SPECIES_COMBUSKEN, 0}},
|
||||
[SPECIES_COMBUSKEN] = {{EVO_LEVEL, 36, SPECIES_BLAZIKEN, 0}},
|
||||
[SPECIES_BLAZIKEN] = {{EVO_MEGA, ITEM_BLAZIKENITE, SPECIES_BLAZIKEN_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_MUDKIP] = {{EVO_LEVEL, 16, SPECIES_MARSHTOMP, 0}},
|
||||
[SPECIES_MARSHTOMP] = {{EVO_LEVEL, 36, SPECIES_SWAMPERT, 0}},
|
||||
[SPECIES_SWAMPERT] = {{EVO_MEGA, ITEM_SWAMPERTITE, SPECIES_SWAMPERT_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_POOCHYENA] = {{EVO_LEVEL, 18, SPECIES_MIGHTYENA, 0}},
|
||||
[SPECIES_ZIGZAGOON] = {{EVO_LEVEL, 20, SPECIES_LINOONE, 0}},
|
||||
[SPECIES_WURMPLE] = {{EVO_LEVEL_SILCOON, 7, SPECIES_SILCOON, 0},
|
||||
{EVO_LEVEL_CASCOON, 7, SPECIES_CASCOON, 0}},
|
||||
[SPECIES_SILCOON] = {{EVO_LEVEL, 10, SPECIES_BEAUTIFLY, 0}},
|
||||
[SPECIES_CASCOON] = {{EVO_LEVEL, 10, SPECIES_DUSTOX, 0}},
|
||||
[SPECIES_LOTAD] = {{EVO_LEVEL, 14, SPECIES_LOMBRE, 0}},
|
||||
[SPECIES_LOMBRE] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_LUDICOLO, 0}},
|
||||
[SPECIES_SEEDOT] = {{EVO_LEVEL, 14, SPECIES_NUZLEAF, 0}},
|
||||
[SPECIES_NUZLEAF] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_SHIFTRY, 0}},
|
||||
[SPECIES_NINCADA] = {{EVO_LEVEL_NINJASK, 20, SPECIES_NINJASK, 0},
|
||||
{EVO_LEVEL_SHEDINJA, 20, SPECIES_SHEDINJA, 0}},
|
||||
[SPECIES_TAILLOW] = {{EVO_LEVEL, 22, SPECIES_SWELLOW, 0}},
|
||||
[SPECIES_SHROOMISH] = {{EVO_LEVEL, 23, SPECIES_BRELOOM, 0}},
|
||||
[SPECIES_WINGULL] = {{EVO_LEVEL, 25, SPECIES_PELIPPER, 0}},
|
||||
[SPECIES_SURSKIT] = {{EVO_LEVEL, 22, SPECIES_MASQUERAIN, 0}},
|
||||
[SPECIES_WAILMER] = {{EVO_LEVEL, 40, SPECIES_WAILORD, 0}},
|
||||
[SPECIES_SKITTY] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_DELCATTY, 0}},
|
||||
[SPECIES_BALTOY] = {{EVO_LEVEL, 36, SPECIES_CLAYDOL, 0}},
|
||||
[SPECIES_NOSEPASS] = {{EVO_MAP, MAP_NAME_THUNDERCAP_MT, SPECIES_PROBOPASS, 0}},
|
||||
[SPECIES_SABLEYE] = {{EVO_MEGA, ITEM_SABLENITE, SPECIES_SABLEYE_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_BARBOACH] = {{EVO_LEVEL, 30, SPECIES_WHISCASH, 0}},
|
||||
[SPECIES_CORPHISH] = {{EVO_LEVEL, 30, SPECIES_CRAWDAUNT, 0}},
|
||||
[SPECIES_FEEBAS] = {{EVO_BEAUTY, 0, SPECIES_MILOTIC, 0},
|
||||
{EVO_ITEM, ITEM_NONE, SPECIES_MILOTIC, 0},
|
||||
{EVO_TRADE_ITEM, ITEM_NONE, SPECIES_MILOTIC, 0}},
|
||||
[SPECIES_CARVANHA] = {{EVO_LEVEL, 30, SPECIES_SHARPEDO, 0}},
|
||||
[SPECIES_SHARPEDO] = {{EVO_MEGA, ITEM_SHARPEDONITE, SPECIES_SHARPEDO_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_TRAPINCH] = {{EVO_LEVEL, 35, SPECIES_VIBRAVA, 0}},
|
||||
[SPECIES_VIBRAVA] = {{EVO_LEVEL, 45, SPECIES_FLYGON, 0}},
|
||||
[SPECIES_MAKUHITA] = {{EVO_LEVEL, 24, SPECIES_HARIYAMA, 0}},
|
||||
[SPECIES_ELECTRIKE] = {{EVO_LEVEL, 26, SPECIES_MANECTRIC, 0}},
|
||||
[SPECIES_MANECTRIC] = {{EVO_MEGA, ITEM_MANECTITE, SPECIES_MANECTRIC_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_NUMEL] = {{EVO_LEVEL, 33, SPECIES_CAMERUPT, 0}},
|
||||
[SPECIES_CAMERUPT] = {{EVO_MEGA, ITEM_CAMERUPTITE, SPECIES_CAMERUPT_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_SPHEAL] = {{EVO_LEVEL, 32, SPECIES_SEALEO, 0}},
|
||||
[SPECIES_SEALEO] = {{EVO_LEVEL, 44, SPECIES_WALREIN, 0}},
|
||||
[SPECIES_CACNEA] = {{EVO_LEVEL, 32, SPECIES_CACTURNE, 0}},
|
||||
[SPECIES_SNORUNT] = {{EVO_LEVEL, 42, SPECIES_GLALIE, 0},
|
||||
{EVO_ITEM, ITEM_DAWN_STONE, SPECIES_FROSLASS, MON_FEMALE}},
|
||||
[SPECIES_GLALIE] = {{EVO_MEGA, ITEM_GLALITITE, SPECIES_GLALIE_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_AZURILL] = {{EVO_FRIENDSHIP, 0, SPECIES_MARILL, 0}},
|
||||
[SPECIES_SPOINK] = {{EVO_LEVEL, 32, SPECIES_GRUMPIG, 0}},
|
||||
[SPECIES_MAWILE] = {{EVO_MEGA, ITEM_MAWILITE, SPECIES_MAWILE_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_MEDITITE] = {{EVO_LEVEL, 37, SPECIES_MEDICHAM, 0}},
|
||||
[SPECIES_MEDICHAM] = {{EVO_MEGA, ITEM_MEDICHAMITE, SPECIES_MEDICHAM_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_SWABLU] = {{EVO_LEVEL, 35, SPECIES_ALTARIA, 0}},
|
||||
[SPECIES_ALTARIA] = {{EVO_MEGA, ITEM_ALTARIANITE, SPECIES_ALTARIA_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_WYNAUT] = {{EVO_LEVEL, 15, SPECIES_WOBBUFFET, 0}},
|
||||
[SPECIES_DUSKULL] = {{EVO_LEVEL, 37, SPECIES_DUSCLOPS, 0}},
|
||||
[SPECIES_DUSCLOPS] = {{EVO_ITEM, ITEM_REAPER_CLOTH, SPECIES_DUSKNOIR, 0},
|
||||
{EVO_TRADE_ITEM, ITEM_REAPER_CLOTH, SPECIES_DUSKNOIR, 0}},
|
||||
[SPECIES_ROSELIA] = {{EVO_ITEM, ITEM_SHINY_STONE, SPECIES_ROSERADE, 0}},
|
||||
[SPECIES_SLAKOTH] = {{EVO_LEVEL, 18, SPECIES_VIGOROTH, 0}},
|
||||
[SPECIES_VIGOROTH] = {{EVO_LEVEL, 36, SPECIES_SLAKING, 0}},
|
||||
[SPECIES_GULPIN] = {{EVO_LEVEL, 26, SPECIES_SWALOT, 0}},
|
||||
[SPECIES_WHISMUR] = {{EVO_LEVEL, 20, SPECIES_LOUDRED, 0}},
|
||||
[SPECIES_LOUDRED] = {{EVO_LEVEL, 40, SPECIES_EXPLOUD, 0}},
|
||||
[SPECIES_CLAMPERL] = {{EVO_ITEM, ITEM_DEEP_SEA_TOOTH, SPECIES_HUNTAIL, 0},
|
||||
{EVO_ITEM, ITEM_DEEP_SEA_SCALE, SPECIES_GOREBYSS, 0},
|
||||
{EVO_TRADE_ITEM, ITEM_DEEP_SEA_TOOTH, SPECIES_HUNTAIL, 0},
|
||||
{EVO_TRADE_ITEM, ITEM_DEEP_SEA_SCALE, SPECIES_GOREBYSS, 0}},
|
||||
[SPECIES_ABSOL] = {{EVO_MEGA, ITEM_ABSOLITE, SPECIES_ABSOL_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_SHUPPET] = {{EVO_LEVEL, 37, SPECIES_BANETTE, 0}},
|
||||
[SPECIES_BANETTE] = {{EVO_MEGA, ITEM_BANETTITE, SPECIES_BANETTE_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_ARON] = {{EVO_LEVEL, 32, SPECIES_LAIRON, 0}},
|
||||
[SPECIES_LAIRON] = {{EVO_LEVEL, 42, SPECIES_AGGRON, 0}},
|
||||
[SPECIES_AGGRON] = {{EVO_MEGA, ITEM_AGGRONITE, SPECIES_AGGRON_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_LILEEP] = {{EVO_LEVEL, 40, SPECIES_CRADILY, 0}},
|
||||
[SPECIES_ANORITH] = {{EVO_LEVEL, 40, SPECIES_ARMALDO, 0}},
|
||||
[SPECIES_RALTS] = {{EVO_LEVEL, 20, SPECIES_KIRLIA, 0}},
|
||||
[SPECIES_KIRLIA] = {{EVO_LEVEL, 30, SPECIES_GARDEVOIR, 0},
|
||||
{EVO_ITEM, ITEM_DAWN_STONE, SPECIES_GALLADE, MON_MALE}},
|
||||
[SPECIES_GARDEVOIR] = {{EVO_MEGA, ITEM_GARDEVOIRITE, SPECIES_GARDEVOIR_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_BAGON] = {{EVO_LEVEL, 30, SPECIES_SHELGON, 0}},
|
||||
[SPECIES_SHELGON] = {{EVO_LEVEL, 50, SPECIES_SALAMENCE, 0}},
|
||||
[SPECIES_SALAMENCE] = {{EVO_MEGA, ITEM_SALAMENCITE, SPECIES_SALAMENCE_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_BELDUM] = {{EVO_LEVEL, 20, SPECIES_METANG, 0}},
|
||||
[SPECIES_METANG] = {{EVO_LEVEL, 45, SPECIES_METAGROSS, 0}},
|
||||
[SPECIES_METAGROSS] = {{EVO_MEGA, ITEM_METAGROSSITE, SPECIES_METAGROSS_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_KYOGRE] = {{EVO_MEGA, ITEM_BLUE_ORB, SPECIES_KYOGRE_PRIMAL, MEGA_VARIANT_PRIMAL}},
|
||||
[SPECIES_GROUDON] = {{EVO_MEGA, ITEM_RED_ORB, SPECIES_GROUDON_PRIMAL, MEGA_VARIANT_PRIMAL}},
|
||||
[SPECIES_RAYQUAZA] = {{EVO_MEGA, MOVE_DRAGONASCENT, SPECIES_RAYQUAZA_MEGA, MEGA_VARIANT_WISH}},
|
||||
[SPECIES_LATIAS] = {{EVO_MEGA, ITEM_LATIASITE, SPECIES_LATIAS_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_LATIOS] = {{EVO_MEGA, ITEM_LATIOSITE, SPECIES_LATIOS_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_TURTWIG] = {{EVO_LEVEL, 18, SPECIES_GROTLE, 0}},
|
||||
[SPECIES_GROTLE] = {{EVO_LEVEL, 32, SPECIES_TORTERRA, 0}},
|
||||
[SPECIES_CHIMCHAR] = {{EVO_LEVEL, 14, SPECIES_MONFERNO, 0}},
|
||||
[SPECIES_MONFERNO] = {{EVO_LEVEL, 36, SPECIES_INFERNAPE, 0}},
|
||||
[SPECIES_PIPLUP] = {{EVO_LEVEL, 16, SPECIES_PRINPLUP, 0}},
|
||||
[SPECIES_PRINPLUP] = {{EVO_LEVEL, 36, SPECIES_EMPOLEON, 0}},
|
||||
[SPECIES_STARLY] = {{EVO_LEVEL, 14, SPECIES_STARAVIA, 0}},
|
||||
[SPECIES_STARAVIA] = {{EVO_LEVEL, 34, SPECIES_STARAPTOR, 0}},
|
||||
[SPECIES_BIDOOF] = {{EVO_LEVEL, 15, SPECIES_BIBAREL, 0}},
|
||||
[SPECIES_KRICKETOT] = {{EVO_LEVEL, 10, SPECIES_KRICKETUNE, 0}},
|
||||
[SPECIES_SHINX] = {{EVO_LEVEL, 15, SPECIES_LUXIO, 0}},
|
||||
[SPECIES_LUXIO] = {{EVO_LEVEL, 30, SPECIES_LUXRAY, 0}},
|
||||
[SPECIES_BUDEW] = {{EVO_FRIENDSHIP_DAY, 0, SPECIES_ROSELIA, 0}},
|
||||
[SPECIES_CRANIDOS] = {{EVO_LEVEL, 30, SPECIES_RAMPARDOS, 0}},
|
||||
[SPECIES_SHIELDON] = {{EVO_LEVEL, 30, SPECIES_BASTIODON, 0}},
|
||||
[SPECIES_BURMY] = {{EVO_FEMALE_LEVEL, 20, SPECIES_WORMADAM, 0},
|
||||
{EVO_MALE_LEVEL, 20, SPECIES_MOTHIM, 0}},
|
||||
[SPECIES_COMBEE] = {{EVO_FEMALE_LEVEL, 21, SPECIES_VESPIQUEN, 0}},
|
||||
[SPECIES_BUIZEL] = {{EVO_LEVEL, 26, SPECIES_FLOATZEL, 0}},
|
||||
[SPECIES_CHERUBI] = {{EVO_LEVEL, 25, SPECIES_CHERRIM, 0}},
|
||||
[SPECIES_SHELLOS] = {{EVO_LEVEL, 32, SPECIES_GASTRODON, 0}},
|
||||
[SPECIES_DRIFLOON] = {{EVO_LEVEL, 28, SPECIES_DRIFBLIM, 0}},
|
||||
[SPECIES_BUNEARY] = {{EVO_FRIENDSHIP, 0, SPECIES_LOPUNNY, 0}},
|
||||
[SPECIES_LOPUNNY] = {{EVO_MEGA, ITEM_LOPUNNITE, SPECIES_LOPUNNY_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_GLAMEOW] = {{EVO_LEVEL, 38, SPECIES_PURUGLY, 0}},
|
||||
[SPECIES_CHINGLING] = {{EVO_FRIENDSHIP_NIGHT, 0, SPECIES_CHIMECHO, 0}},
|
||||
[SPECIES_STUNKY] = {{EVO_LEVEL, 34, SPECIES_SKUNTANK, 0}},
|
||||
[SPECIES_BRONZOR] = {{EVO_LEVEL, 33, SPECIES_BRONZONG, 0}},
|
||||
[SPECIES_BONSLY] = {{EVO_MOVE, 102, SPECIES_SUDOWOODO, 0}},
|
||||
[SPECIES_MIME_JR] = {{EVO_MOVE, 102, SPECIES_MR_MIME, 0}},
|
||||
[SPECIES_HAPPINY] = {{EVO_HOLD_ITEM_DAY, ITEM_OVAL_STONE, SPECIES_CHANSEY, 0}},
|
||||
[SPECIES_GIBLE] = {{EVO_LEVEL, 24, SPECIES_GABITE, 0}},
|
||||
[SPECIES_GABITE] = {{EVO_LEVEL, 48, SPECIES_GARCHOMP, 0}},
|
||||
[SPECIES_GARCHOMP] = {{EVO_MEGA, ITEM_GARCHOMPITE, SPECIES_GARCHOMP_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_MUNCHLAX] = {{EVO_FRIENDSHIP, 0, SPECIES_SNORLAX, 0}},
|
||||
[SPECIES_RIOLU] = {{EVO_FRIENDSHIP_DAY, 0, SPECIES_LUCARIO, 0}},
|
||||
[SPECIES_LUCARIO] = {{EVO_MEGA, ITEM_LUCARIONITE, SPECIES_LUCARIO_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_HIPPOPOTAS] = {{EVO_FEMALE_LEVEL, 34, SPECIES_HIPPOWDON_F, 0}},
|
||||
[SPECIES_SKORUPI] = {{EVO_LEVEL, 40, SPECIES_DRAPION, 0}},
|
||||
[SPECIES_CROAGUNK] = {{EVO_LEVEL, 37, SPECIES_TOXICROAK, 0}},
|
||||
[SPECIES_FINNEON] = {{EVO_LEVEL, 31, SPECIES_LUMINEON, 0}},
|
||||
[SPECIES_MANTYKE] = {{EVO_OTHER_PARTY_MON, SPECIES_REMORAID, SPECIES_MANTINE, 0}},
|
||||
[SPECIES_SNOVER] = {{EVO_LEVEL, 40, SPECIES_ABOMASNOW, 0}},
|
||||
[SPECIES_ABOMASNOW] = {{EVO_MEGA, ITEM_ABOMASITE, SPECIES_ABOMASNOW_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_GALLADE] = {{EVO_MEGA, ITEM_GALLADITE, SPECIES_GALLADE_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_SNIVY] = {{EVO_LEVEL, 17, SPECIES_SERVINE, 0}},
|
||||
[SPECIES_SERVINE] = {{EVO_LEVEL, 36, SPECIES_SERPERIOR, 0}},
|
||||
[SPECIES_TEPIG] = {{EVO_LEVEL, 17, SPECIES_PIGNITE, 0}},
|
||||
[SPECIES_PIGNITE] = {{EVO_LEVEL, 36, SPECIES_EMBOAR, 0}},
|
||||
[SPECIES_OSHAWOTT] = {{EVO_LEVEL, 17, SPECIES_DEWOTT, 0}},
|
||||
[SPECIES_DEWOTT] = {{EVO_LEVEL, 36, SPECIES_SAMUROTT, 0}},
|
||||
[SPECIES_PATRAT] = {{EVO_LEVEL, 20, SPECIES_WATCHOG, 0}},
|
||||
[SPECIES_LILLIPUP] = {{EVO_LEVEL, 16, SPECIES_HERDIER, 0}},
|
||||
[SPECIES_HERDIER] = {{EVO_LEVEL, 32, SPECIES_STOUTLAND, 0}},
|
||||
[SPECIES_PURRLOIN] = {{EVO_LEVEL, 20, SPECIES_LIEPARD, 0}},
|
||||
[SPECIES_PANSAGE] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_SIMISAGE, 0}},
|
||||
[SPECIES_PANSEAR] = {{EVO_ITEM, ITEM_FIRE_STONE, SPECIES_SIMISEAR, 0}},
|
||||
[SPECIES_PANPOUR] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_SIMIPOUR, 0}},
|
||||
[SPECIES_MUNNA] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_MUSHARNA, 0}},
|
||||
[SPECIES_PIDOVE] = {{EVO_LEVEL, 21, SPECIES_TRANQUILL, 0}},
|
||||
[SPECIES_TRANQUILL] = {{EVO_LEVEL, 32, SPECIES_UNFEZANT, 0}},
|
||||
[SPECIES_BLITZLE] = {{EVO_LEVEL, 27, SPECIES_ZEBSTRIKA, 0}},
|
||||
[SPECIES_ROGGENROLA] = {{EVO_LEVEL, 25, SPECIES_BOLDORE, 0}},
|
||||
[SPECIES_BOLDORE] = {{EVO_ITEM, ITEM_LINK_CABLE, SPECIES_GIGALITH, 0},
|
||||
{EVO_TRADE, 0, SPECIES_GIGALITH, 0}},
|
||||
[SPECIES_WOOBAT] = {{EVO_FRIENDSHIP, 0, SPECIES_SWOOBAT, 0}},
|
||||
[SPECIES_DRILBUR] = {{EVO_LEVEL, 31, SPECIES_EXCADRILL, 0}},
|
||||
[SPECIES_AUDINO] = {{EVO_MEGA, ITEM_AUDINITE, SPECIES_AUDINO_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_TIMBURR] = {{EVO_LEVEL, 25, SPECIES_GURDURR, 0}},
|
||||
[SPECIES_GURDURR] = {{EVO_TRADE, 0, SPECIES_CONKELDURR, 0},
|
||||
{EVO_ITEM, ITEM_LINK_CABLE, SPECIES_CONKELDURR, 0}},
|
||||
[SPECIES_TYMPOLE] = {{EVO_LEVEL, 25, SPECIES_PALPITOAD, 0}},
|
||||
[SPECIES_PALPITOAD] = {{EVO_LEVEL, 36, SPECIES_SEISMITOAD, 0}},
|
||||
[SPECIES_SEWADDLE] = {{EVO_LEVEL, 20, SPECIES_SWADLOON, 0}},
|
||||
[SPECIES_SWADLOON] = {{EVO_FRIENDSHIP, 0, SPECIES_LEAVANNY, 0}},
|
||||
[SPECIES_VENIPEDE] = {{EVO_LEVEL, 22, SPECIES_WHIRLIPEDE, 0}},
|
||||
[SPECIES_WHIRLIPEDE] = {{EVO_LEVEL, 30, SPECIES_SCOLIPEDE, 0}},
|
||||
[SPECIES_COTTONEE] = {{EVO_ITEM, ITEM_SUN_STONE, SPECIES_WHIMSICOTT, 0}},
|
||||
[SPECIES_PETILIL] = {{EVO_ITEM, ITEM_SUN_STONE, SPECIES_LILLIGANT, 0}},
|
||||
[SPECIES_SANDILE] = {{EVO_LEVEL, 29, SPECIES_KROKOROK, 0}},
|
||||
[SPECIES_KROKOROK] = {{EVO_LEVEL, 40, SPECIES_KROOKODILE, 0}},
|
||||
[SPECIES_DARUMAKA] = {{EVO_LEVEL, 35, SPECIES_DARMANITAN, 0}},
|
||||
[SPECIES_DWEBBLE] = {{EVO_LEVEL, 34, SPECIES_CRUSTLE, 0}},
|
||||
[SPECIES_SCRAGGY] = {{EVO_LEVEL, 39, SPECIES_SCRAFTY, 0}},
|
||||
[SPECIES_YAMASK] = {{EVO_LEVEL, 34, SPECIES_COFAGRIGUS, 0}},
|
||||
[SPECIES_TIRTOUGA] = {{EVO_LEVEL, 37, SPECIES_CARRACOSTA, 0}},
|
||||
[SPECIES_ARCHEN] = {{EVO_LEVEL, 37, SPECIES_ARCHEOPS, 0}},
|
||||
[SPECIES_TRUBBISH] = {{EVO_LEVEL, 36, SPECIES_GARBODOR, 0}},
|
||||
[SPECIES_ZORUA] = {{EVO_LEVEL, 30, SPECIES_ZOROARK, 0}},
|
||||
[SPECIES_MINCCINO] = {{EVO_ITEM, ITEM_SHINY_STONE, SPECIES_CINCCINO, 0}},
|
||||
[SPECIES_GOTHITA] = {{EVO_LEVEL, 32, SPECIES_GOTHORITA, 0}},
|
||||
[SPECIES_GOTHORITA] = {{EVO_LEVEL, 41, SPECIES_GOTHITELLE, 0}},
|
||||
[SPECIES_SOLOSIS] = {{EVO_LEVEL, 32, SPECIES_DUOSION, 0}},
|
||||
[SPECIES_DUOSION] = {{EVO_LEVEL, 41, SPECIES_REUNICLUS, 0}},
|
||||
[SPECIES_DUCKLETT] = {{EVO_LEVEL, 35, SPECIES_SWANNA, 0}},
|
||||
[SPECIES_VANILLITE] = {{EVO_LEVEL, 35, SPECIES_VANILLISH, 0}},
|
||||
[SPECIES_VANILLISH] = {{EVO_LEVEL, 47, SPECIES_VANILLUXE, 0}},
|
||||
[SPECIES_DEERLING] = {{EVO_LEVEL, 34, SPECIES_SAWSBUCK, 0}},
|
||||
[SPECIES_KARRABLAST] = {{EVO_ITEM, ITEM_LINK_CABLE, SPECIES_ESCAVALIER, 0},
|
||||
{EVO_TRADE, 0, SPECIES_ESCAVALIER, 0}},
|
||||
[SPECIES_FOONGUS] = {{EVO_LEVEL, 39, SPECIES_AMOONGUSS, 0}},
|
||||
[SPECIES_FRILLISH] = {{EVO_LEVEL, 40, SPECIES_JELLICENT, 0}},
|
||||
[SPECIES_JOLTIK] = {{EVO_LEVEL, 36, SPECIES_GALVANTULA, 0}},
|
||||
[SPECIES_FERROSEED] = {{EVO_LEVEL, 40, SPECIES_FERROTHORN, 0}},
|
||||
[SPECIES_KLINK] = {{EVO_LEVEL, 38, SPECIES_KLANG, 0}},
|
||||
[SPECIES_KLANG] = {{EVO_LEVEL, 49, SPECIES_KLINKLANG, 0}},
|
||||
[SPECIES_TYNAMO] = {{EVO_LEVEL, 39, SPECIES_EELEKTRIK, 0}},
|
||||
[SPECIES_EELEKTRIK] = {{EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_EELEKTROSS, 0}},
|
||||
[SPECIES_ELGYEM] = {{EVO_LEVEL, 42, SPECIES_BEHEEYEM, 0}},
|
||||
[SPECIES_LITWICK] = {{EVO_LEVEL, 41, SPECIES_LAMPENT, 0}},
|
||||
[SPECIES_LAMPENT] = {{EVO_ITEM, ITEM_DUSK_STONE, SPECIES_CHANDELURE, 0}},
|
||||
[SPECIES_AXEW] = {{EVO_LEVEL, 38, SPECIES_FRAXURE, 0}},
|
||||
[SPECIES_FRAXURE] = {{EVO_LEVEL, 48, SPECIES_HAXORUS, 0}},
|
||||
[SPECIES_CUBCHOO] = {{EVO_LEVEL, 37, SPECIES_BEARTIC, 0}},
|
||||
[SPECIES_SHELMET] = {{EVO_ITEM, ITEM_LINK_CABLE, SPECIES_ACCELGOR, 0},
|
||||
{EVO_TRADE, 0, SPECIES_ACCELGOR, 0}},
|
||||
[SPECIES_MIENFOO] = {{EVO_LEVEL, 50, SPECIES_MIENSHAO, 0}},
|
||||
[SPECIES_GOLETT] = {{EVO_LEVEL, 43, SPECIES_GOLURK, 0}},
|
||||
[SPECIES_PAWNIARD] = {{EVO_LEVEL, 52, SPECIES_BISHARP, 0}},
|
||||
[SPECIES_RUFFLET] = {{EVO_LEVEL, 54, SPECIES_BRAVIARY, 0}},
|
||||
[SPECIES_VULLABY] = {{EVO_LEVEL, 54, SPECIES_MANDIBUZZ, 0}},
|
||||
[SPECIES_DEINO] = {{EVO_LEVEL, 50, SPECIES_ZWEILOUS, 0}},
|
||||
[SPECIES_ZWEILOUS] = {{EVO_LEVEL, 64, SPECIES_HYDREIGON, 0}},
|
||||
[SPECIES_LARVESTA] = {{EVO_LEVEL, 59, SPECIES_VOLCARONA, 0}},
|
||||
[SPECIES_FRILLISH_F] = {{EVO_LEVEL, 40, SPECIES_JELLICENT_F, 0}},
|
||||
[SPECIES_BURMY_SANDY] = {{EVO_FEMALE_LEVEL, 20, SPECIES_WORMADAM_SANDY, 0},
|
||||
{EVO_MALE_LEVEL, 20, SPECIES_MOTHIM, 0}},
|
||||
[SPECIES_BURMY_TRASH] = {{EVO_FEMALE_LEVEL, 20, SPECIES_WORMADAM_TRASH, 0},
|
||||
{EVO_MALE_LEVEL, 20, SPECIES_MOTHIM, 0}},
|
||||
[SPECIES_SHELLOS_EAST] = {{EVO_LEVEL, 32, SPECIES_GASTRODON_EAST, 0}},
|
||||
[SPECIES_DEERLING_SUMMER] = {{EVO_LEVEL, 34, SPECIES_SAWSBUCK_SUMMER, 0}},
|
||||
[SPECIES_DEERLING_AUTUMN] = {{EVO_LEVEL, 34, SPECIES_SAWSBUCK_AUTUMN, 0}},
|
||||
[SPECIES_DEERLING_WINTER] = {{EVO_LEVEL, 34, SPECIES_SAWSBUCK_WINTER, 0}},
|
||||
[SPECIES_HIPPOPOTAS_F] = {{EVO_LEVEL, 34, SPECIES_HIPPOWDON_F, 0}},
|
||||
[SPECIES_CHESPIN] = {{EVO_LEVEL, 16, SPECIES_QUILLADIN, 0}},
|
||||
[SPECIES_QUILLADIN] = {{EVO_LEVEL, 36, SPECIES_CHESNAUGHT, 0}},
|
||||
[SPECIES_FENNEKIN] = {{EVO_LEVEL, 16, SPECIES_BRAIXEN, 0}},
|
||||
[SPECIES_BRAIXEN] = {{EVO_LEVEL, 36, SPECIES_DELPHOX, 0}},
|
||||
[SPECIES_FROAKIE] = {{EVO_LEVEL, 16, SPECIES_FROGADIER, 0}},
|
||||
[SPECIES_FROGADIER] = {{EVO_LEVEL, 36, SPECIES_GRENINJA, 0}},
|
||||
[SPECIES_BUNNELBY] = {{EVO_LEVEL, 20, SPECIES_DIGGERSBY, 0}},
|
||||
[SPECIES_FLETCHLING] = {{EVO_LEVEL, 17, SPECIES_FLETCHINDER, 0}},
|
||||
[SPECIES_FLETCHINDER] = {{EVO_LEVEL, 35, SPECIES_TALONFLAME, 0}},
|
||||
[SPECIES_SCATTERBUG] = {{EVO_LEVEL, 9, SPECIES_SPEWPA, 0}},
|
||||
[SPECIES_SPEWPA] = {{EVO_LEVEL, 12, SPECIES_VIVILLON, 0}},
|
||||
[SPECIES_LITLEO] = {{EVO_MALE_LEVEL, 35, SPECIES_PYROAR, 0},
|
||||
{EVO_FEMALE_LEVEL, 35, SPECIES_PYROAR_FEMALE, 0}},
|
||||
[SPECIES_FLABEBE] = {{EVO_LEVEL, 19, SPECIES_FLOETTE, 0}},
|
||||
[SPECIES_FLOETTE] = {{EVO_ITEM, ITEM_SHINY_STONE, SPECIES_FLORGES, 0}},
|
||||
[SPECIES_SKIDDO] = {{EVO_LEVEL, 32, SPECIES_GOGOAT, 0}},
|
||||
[SPECIES_PANCHAM] = {{EVO_TYPE_IN_PARTY, 32, SPECIES_PANGORO, TYPE_DARK}},
|
||||
[SPECIES_ESPURR] = {{EVO_MALE_LEVEL, 25, SPECIES_MEOWSTIC, 0},
|
||||
{EVO_FEMALE_LEVEL, 25, SPECIES_MEOWSTIC_FEMALE, 0}},
|
||||
[SPECIES_HONEDGE] = {{EVO_LEVEL, 35, SPECIES_DOUBLADE, 0}},
|
||||
[SPECIES_DOUBLADE] = {{EVO_ITEM, ITEM_DUSK_STONE, SPECIES_AEGISLASH, 0}},
|
||||
[SPECIES_SPRITZEE] = {{EVO_ITEM, ITEM_NONE, SPECIES_AROMATISSE, 0},
|
||||
{EVO_TRADE_ITEM, ITEM_NONE, SPECIES_AROMATISSE, 0}},
|
||||
[SPECIES_SWIRLIX] = {{EVO_ITEM, ITEM_NONE, SPECIES_SLURPUFF, 0},
|
||||
{EVO_TRADE_ITEM, ITEM_NONE, SPECIES_SLURPUFF, 0}},
|
||||
[SPECIES_INKAY] = {{EVO_LEVEL, 40, SPECIES_MALAMAR, 0}},
|
||||
[SPECIES_BINACLE] = {{EVO_LEVEL, 39, SPECIES_BARBARACLE, 0}},
|
||||
[SPECIES_SKRELP] = {{EVO_LEVEL, 48, SPECIES_DRAGALGE, 0}},
|
||||
[SPECIES_CLAUNCHER] = {{EVO_LEVEL, 37, SPECIES_CLAWITZER, 0}},
|
||||
[SPECIES_HELIOPTILE] = {{EVO_ITEM, ITEM_SUN_STONE, SPECIES_HELIOLISK, 0}},
|
||||
[SPECIES_TYRUNT] = {{EVO_LEVEL_DAY, 39, SPECIES_TYRANTRUM, 0}},
|
||||
[SPECIES_GOOMY] = {{EVO_LEVEL, 40, SPECIES_SLIGGOO, 0}},
|
||||
[SPECIES_SLIGGOO] = {{EVO_RAINY_OW, 50, SPECIES_GOODRA, 0}},
|
||||
[SPECIES_PHANTUMP] = {{EVO_TRADE, 0, SPECIES_TREVENANT, 0},
|
||||
{EVO_ITEM, ITEM_LINK_CABLE, SPECIES_TREVENANT, 0}},
|
||||
[SPECIES_PUMPKABOO] = {{EVO_TRADE, 0, SPECIES_GOURGEIST, 0},
|
||||
{EVO_ITEM, ITEM_LINK_CABLE, SPECIES_GOURGEIST, 0}},
|
||||
[SPECIES_BERGMITE] = {{EVO_LEVEL, 37, SPECIES_AVALUGG, 0}},
|
||||
[SPECIES_NOIBAT] = {{EVO_LEVEL, 48, SPECIES_NOIVERN, 0}},
|
||||
[SPECIES_DIANCIE] = {{EVO_MEGA, ITEM_DIANCITE, SPECIES_DIANCIE_MEGA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_FLABEBE_BLUE] = {{EVO_LEVEL, 19, SPECIES_FLOETTE_BLUE, 0}},
|
||||
[SPECIES_FLABEBE_ORANGE] = {{EVO_LEVEL, 19, SPECIES_FLOETTE_ORANGE, 0}},
|
||||
[SPECIES_FLABEBE_YELLOW] = {{EVO_LEVEL, 19, SPECIES_FLOETTE_YELLOW, 0}},
|
||||
[SPECIES_FLABEBE_WHITE] = {{EVO_LEVEL, 19, SPECIES_FLOETTE_WHITE, 0}},
|
||||
[SPECIES_FLOETTE_BLUE] = {{EVO_ITEM, ITEM_SHINY_STONE, SPECIES_FLORGES_BLUE, 0}},
|
||||
[SPECIES_FLOETTE_ORANGE] = {{EVO_ITEM, ITEM_SHINY_STONE, SPECIES_FLORGES_ORANGE, 0}},
|
||||
[SPECIES_FLOETTE_YELLOW] = {{EVO_ITEM, ITEM_SHINY_STONE, SPECIES_FLORGES_YELLOW, 0}},
|
||||
[SPECIES_FLOETTE_WHITE] = {{EVO_ITEM, ITEM_SHINY_STONE, SPECIES_FLORGES_WHITE, 0}},
|
||||
[SPECIES_PUMPKABOO_XL] = {{EVO_TRADE, 0, SPECIES_GOURGEIST_XL, 0},
|
||||
{EVO_ITEM, ITEM_LINK_CABLE, SPECIES_GOURGEIST_XL, 0}},
|
||||
[SPECIES_PUMPKABOO_L] = {{EVO_TRADE, 0, SPECIES_GOURGEIST_L, 0},
|
||||
{EVO_ITEM, ITEM_LINK_CABLE, SPECIES_GOURGEIST_L, 0}},
|
||||
[SPECIES_PUMPKABOO_M] = {{EVO_TRADE, 0, SPECIES_GOURGEIST_M, 0},
|
||||
{EVO_ITEM, ITEM_LINK_CABLE, SPECIES_GOURGEIST_M, 0}},
|
||||
[SPECIES_VENUSAUR_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_VENUSAUR, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_CHARIZARD_MEGA_X] = {{EVO_MEGA, ITEM_NONE, SPECIES_CHARIZARD, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_CHARIZARD_MEGA_Y] = {{EVO_MEGA, ITEM_NONE, SPECIES_CHARIZARD, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_BLASTOISE_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_BLASTOISE, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_BEEDRILL_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_BEEDRILL, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_PIDGEOT_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_PIDGEOT, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_ALAKAZAM_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_ALAKAZAM, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_SLOWBRO_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_SLOWBRO, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_GENGAR_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_GENGAR, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_KANGASKHAN_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_KANGASKHAN, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_PINSIR_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_PINSIR, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_GYARADOS_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_GYARADOS, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_AERODACTYL_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_AERODACTYL, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_MEWTWO_MEGA_X] = {{EVO_MEGA, ITEM_NONE, SPECIES_MEWTWO, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_MEWTWO_MEGA_Y] = {{EVO_MEGA, ITEM_NONE, SPECIES_MEWTWO, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_AMPHAROS_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_AMPHAROS, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_STEELIX_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_STEELIX, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_SCIZOR_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_SCIZOR, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_HERACROSS_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_HERACROSS, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_HOUNDOOM_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_HOUNDOOM, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_TYRANITAR_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_TYRANITAR, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_SCEPTILE_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_SCEPTILE, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_BLAZIKEN_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_BLAZIKEN, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_SWAMPERT_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_SWAMPERT, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_GARDEVOIR_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_GARDEVOIR, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_SABLEYE_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_SABLEYE, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_MAWILE_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_MAWILE, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_AGGRON_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_AGGRON, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_MEDICHAM_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_MEDICHAM, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_MANECTRIC_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_MANECTRIC, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_SHARPEDO_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_SHARPEDO, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_CAMERUPT_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_CAMERUPT, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_ALTARIA_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_ALTARIA, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_BANETTE_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_BANETTE, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_ABSOL_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_ABSOL, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_GLALIE_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_GLALIE, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_SALAMENCE_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_SALAMENCE, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_METAGROSS_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_METAGROSS, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_LATIAS_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_LATIAS, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_LATIOS_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_LATIOS, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_GROUDON_PRIMAL] = {{EVO_MEGA, ITEM_NONE, SPECIES_GROUDON, MEGA_VARIANT_PRIMAL}},
|
||||
[SPECIES_KYOGRE_PRIMAL] = {{EVO_MEGA, ITEM_NONE, SPECIES_KYOGRE, MEGA_VARIANT_PRIMAL}},
|
||||
[SPECIES_RAYQUAZA_MEGA] = {{EVO_MEGA, MOVE_NONE, SPECIES_RAYQUAZA, MEGA_VARIANT_WISH}},
|
||||
[SPECIES_LOPUNNY_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_LOPUNNY, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_GARCHOMP_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_GARCHOMP, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_LUCARIO_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_LUCARIO, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_ABOMASNOW_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_ABOMASNOW, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_GALLADE_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_GALLADE, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_AUDINO_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_AUDINO, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_DIANCIE_MEGA] = {{EVO_MEGA, ITEM_NONE, SPECIES_DIANCIE, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_VIVILLON_ELEGANT] = {{EVO_MEGA, ITEM_NONE, SPECIES_TALONFLAME, MEGA_VARIANT_STANDARD}},
|
||||
[SPECIES_ROWLET] = {{EVO_LEVEL, 17, SPECIES_DARTRIX, 0}},
|
||||
[SPECIES_DARTRIX] = {{EVO_LEVEL, 34, SPECIES_DECIDUEYE, 0}},
|
||||
[SPECIES_LITTEN] = {{EVO_LEVEL, 17, SPECIES_TORRACAT, 0}},
|
||||
[SPECIES_TORRACAT] = {{EVO_LEVEL, 34, SPECIES_INCINEROAR, 0}},
|
||||
[SPECIES_POPPLIO] = {{EVO_LEVEL, 17, SPECIES_BRIONNE, 0}},
|
||||
[SPECIES_BRIONNE] = {{EVO_LEVEL, 34, SPECIES_PRIMARINA, 0}},
|
||||
[SPECIES_PIKIPEK] = {{EVO_LEVEL, 14, SPECIES_TRUMBEAK, 0}},
|
||||
[SPECIES_TRUMBEAK] = {{EVO_LEVEL, 28, SPECIES_TOUCANNON, 0}},
|
||||
[SPECIES_YUNGOOS] = {{EVO_LEVEL_DAY, 20, SPECIES_GUMSHOOS, 0}},
|
||||
[SPECIES_GRUBBIN] = {{EVO_LEVEL, 20, SPECIES_CHARJABUG, 0}},
|
||||
[SPECIES_CHARJABUG] = {{EVO_MAP, MAP_NAME_THUNDERCAP_MT, SPECIES_VIKAVOLT, 0}},
|
||||
[SPECIES_CRABRAWLER] = {{EVO_MAP, MAP_NAME_FROST_MOUNTAIN, SPECIES_CRABOMINABLE, 0},
|
||||
{EVO_MAP, MAP_NAME_ROUTE_8, SPECIES_NONE, 0},
|
||||
{EVO_MAP, MAP_NAME_BLIZZARD_CITY, SPECIES_NONE, 0}},
|
||||
[SPECIES_CUTIEFLY] = {{EVO_LEVEL, 25, SPECIES_RIBOMBEE, 0}},
|
||||
[SPECIES_ROCKRUFF] = {{EVO_LEVEL_DAY, 25, SPECIES_LYCANROC, 0},
|
||||
{EVO_LEVEL_NIGHT, 25, SPECIES_LYCANROC_N, 0}},
|
||||
[SPECIES_MAREANIE] = {{EVO_LEVEL, 38, SPECIES_TOXAPEX, 0}},
|
||||
[SPECIES_MUDBRAY] = {{EVO_LEVEL, 30, SPECIES_MUDSDALE, 0}},
|
||||
[SPECIES_DEWPIDER] = {{EVO_LEVEL, 22, SPECIES_ARAQUANID, 0}},
|
||||
[SPECIES_FOMANTIS] = {{EVO_LEVEL_DAY, 34, SPECIES_LURANTIS, 0}},
|
||||
[SPECIES_MORELULL] = {{EVO_LEVEL, 24, SPECIES_SHIINOTIC, 0}},
|
||||
[SPECIES_SALANDIT] = {{EVO_FEMALE_LEVEL, 33, SPECIES_SALAZZLE, 0}},
|
||||
[SPECIES_STUFFUL] = {{EVO_LEVEL, 27, SPECIES_BEWEAR, 0}},
|
||||
[SPECIES_BOUNSWEET] = {{EVO_LEVEL, 18, SPECIES_STEENEE, 0}},
|
||||
[SPECIES_STEENEE] = {{EVO_MOVE, 23, SPECIES_TSAREENA, 0}},
|
||||
[SPECIES_WIMPOD] = {{EVO_LEVEL, 30, SPECIES_GOLISOPOD, 0}},
|
||||
[SPECIES_SANDYGAST] = {{EVO_LEVEL, 42, SPECIES_PALOSSAND, 0}},
|
||||
[SPECIES_TYPE_NULL] = {{EVO_FRIENDSHIP, 0, SPECIES_SILVALLY, 0}},
|
||||
[SPECIES_JANGMO_O] = {{EVO_LEVEL, 35, SPECIES_HAKAMO_O, 0}},
|
||||
[SPECIES_HAKAMO_O] = {{EVO_LEVEL, 45, SPECIES_KOMMO_O, 0}},
|
||||
[SPECIES_COSMOG] = {{EVO_LEVEL, 43, SPECIES_COSMOEM, 0}},
|
||||
[SPECIES_COSMOEM] = {{EVO_LEVEL_DAY, 53, SPECIES_SOLGALEO, 0},
|
||||
{EVO_LEVEL_NIGHT, 53, SPECIES_LUNALA, 0}},
|
||||
[SPECIES_SANDSHREW_A] = {{EVO_ITEM, ITEM_ICE_STONE, SPECIES_SANDSLASH_A, 0}},
|
||||
[SPECIES_VULPIX_A] = {{EVO_ITEM, ITEM_ICE_STONE, SPECIES_NINETALES_A, 0}},
|
||||
[SPECIES_DIGLETT_A] = {{EVO_LEVEL, 26, SPECIES_DUGTRIO_A, 0}},
|
||||
[SPECIES_MEOWTH_A] = {{EVO_FRIENDSHIP, 0, SPECIES_PERSIAN_A, 0}},
|
||||
[SPECIES_GEODUDE_A] = {{EVO_LEVEL, 25, SPECIES_GRAVELER_A, 0}},
|
||||
[SPECIES_GRAVELER_A] = {{EVO_ITEM, ITEM_LINK_CABLE, SPECIES_GOLEM_A, 0},
|
||||
{EVO_TRADE, 0, SPECIES_GOLEM_A, 0}},
|
||||
[SPECIES_GRIMER_A] = {{EVO_LEVEL, 38, SPECIES_MUK_A, 0}},
|
||||
[SPECIES_EXEGGCUTE_A] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_EXEGGUTOR_A, 0}},
|
||||
[SPECIES_CUBONE_A] = {{EVO_LEVEL_NIGHT, 28, SPECIES_MAROWAK_A, 0}},
|
||||
[SPECIES_POIPOLE] = {{EVO_MOVE, 370, SPECIES_NAGANADEL, 0}},
|
||||
[SPECIES_NECROZMA_MANE] = {{EVO_MEGA, ITEM_ULTRA_NECROZIUM_Z, SPECIES_NECROZMA_ULTRA, MEGA_VARIANT_ULTRA_BURST}},
|
||||
[SPECIES_NECROZMA_WINGS] = {{EVO_MEGA, ITEM_ULTRA_NECROZIUM_Z, SPECIES_NECROZMA_ULTRA, MEGA_VARIANT_ULTRA_BURST}},
|
||||
[SPECIES_NECROZMA_ULTRA] = {{EVO_MEGA, ITEM_NONE, SPECIES_NECROZMA_MANE, MEGA_VARIANT_ULTRA_BURST},
|
||||
{EVO_MEGA, ITEM_NONE, SPECIES_NECROZMA_WINGS, MEGA_VARIANT_ULTRA_BURST}},
|
||||
[SPECIES_MELTAN] = {{EVO_ITEM, ITEM_METAL_COAT, SPECIES_MELMETAL, 0}},
|
||||
};
|
||||
1111
src/Footprint_Table.c
Normal file
1111
src/Footprint_Table.c
Normal file
File diff suppressed because it is too large
Load Diff
5516
src/Front_Pic_Coords_Table.c
Normal file
5516
src/Front_Pic_Coords_Table.c
Normal file
File diff suppressed because it is too large
Load Diff
1108
src/Front_Pic_Table.c
Normal file
1108
src/Front_Pic_Table.c
Normal file
File diff suppressed because it is too large
Load Diff
2455
src/Habitat_Table.c
Normal file
2455
src/Habitat_Table.c
Normal file
File diff suppressed because it is too large
Load Diff
1107
src/Icon_Palette_Table.c
Normal file
1107
src/Icon_Palette_Table.c
Normal file
File diff suppressed because it is too large
Load Diff
1107
src/Icon_Table.c
Normal file
1107
src/Icon_Table.c
Normal file
File diff suppressed because it is too large
Load Diff
1116
src/Item_Animation_Table.c
Normal file
1116
src/Item_Animation_Table.c
Normal file
File diff suppressed because it is too large
Load Diff
18156
src/Learnsets.c
Normal file
18156
src/Learnsets.c
Normal file
File diff suppressed because it is too large
Load Diff
1108
src/Palette_Table.c
Normal file
1108
src/Palette_Table.c
Normal file
File diff suppressed because it is too large
Load Diff
1357
src/Pokedex_Data.string
Normal file
1357
src/Pokedex_Data.string
Normal file
File diff suppressed because it is too large
Load Diff
11384
src/Pokedex_Data_Table.c
Normal file
11384
src/Pokedex_Data_Table.c
Normal file
File diff suppressed because it is too large
Load Diff
2446
src/Pokedex_Orders.c
Normal file
2446
src/Pokedex_Orders.c
Normal file
File diff suppressed because it is too large
Load Diff
3309
src/Pokemon_Name_Table.string
Normal file
3309
src/Pokemon_Name_Table.string
Normal file
File diff suppressed because it is too large
Load Diff
1108
src/Shiny_Palette_Table.c
Normal file
1108
src/Shiny_Palette_Table.c
Normal file
File diff suppressed because it is too large
Load Diff
1107
src/Species_To_Pokdex_Table.c
Normal file
1107
src/Species_To_Pokdex_Table.c
Normal file
File diff suppressed because it is too large
Load Diff
15
src/defines.h
Normal file
15
src/defines.h
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
#pragma once
|
||||
|
||||
#include "../include/types.h"
|
||||
#include "../include/species.h"
|
||||
|
||||
//#define INCLUDE_FOOTPRINTS //If you uncomment this line, make sure to uncomment gMonFootprintTable in repoints, and remove the footprint remover in bytereplacement
|
||||
|
||||
#define EVOS_PER_MON 16
|
||||
|
||||
#define FALSE 0
|
||||
#define TRUE 1
|
||||
|
||||
#define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0]))
|
||||
|
||||
#define SPECIES_TABLES_TERMIN 0xFEFE
|
||||
109
src/hooks.s
Normal file
109
src/hooks.s
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
.thumb
|
||||
.align 2
|
||||
|
||||
@0x8103530 with r1
|
||||
PrepareDexListViewsHook:
|
||||
cmp r0, #0x0
|
||||
beq PrepareDexListViewsReturn
|
||||
ldr r2, =gNumDexEntries
|
||||
ldrh r2, [r2]
|
||||
str r2, [sp]
|
||||
|
||||
PrepareDexListViewsReturn:
|
||||
ldr r0, =0x810353A | 1
|
||||
bx r0
|
||||
|
||||
.pool
|
||||
@0x8103684 with r1
|
||||
AlphabeticalDexHook:
|
||||
add r8, r0
|
||||
ldr r0, =gNumSpecies
|
||||
ldrh r0, [r0]
|
||||
cmp r8, r0
|
||||
ldr r1, =0x810368C | 1
|
||||
bx r1
|
||||
|
||||
.pool
|
||||
@0x8105CBC with r0
|
||||
AlternateDexEntriesHook:
|
||||
lsl r2, r2, #0x18
|
||||
lsr r5, r2, #0x18
|
||||
lsl r3, r3, #0x18
|
||||
lsr r7, r3, #0x18
|
||||
mov r0, r1
|
||||
mov r4, r1
|
||||
bl TryLoadAlternateDexEntry
|
||||
cmp r0, #0x0
|
||||
bne AlternateDexEntriesReturn
|
||||
mov r0, r4
|
||||
ldr r1, =0x8105CC6 | 1
|
||||
bxr1:
|
||||
bx r1
|
||||
|
||||
AlternateDexEntriesReturn:
|
||||
push {r0}
|
||||
mov r0, r4
|
||||
ldr r1, =SpeciesToNationalPokedexNum
|
||||
bl bxr1
|
||||
mov r4, r0
|
||||
mov r1, #0x1
|
||||
mov r2, #0x0
|
||||
bl DexFlagCheckCall
|
||||
lsl r0, #0x18
|
||||
cmp r0, #0x0
|
||||
pop {r0}
|
||||
beq DontDisplayDesc
|
||||
mov r1, r0
|
||||
ldr r0, =0x8105CEA | 1
|
||||
bx r0
|
||||
|
||||
DontDisplayDesc:
|
||||
ldr r0, =0x8105D5C | 1
|
||||
bx r0
|
||||
|
||||
DexFlagCheckCall:
|
||||
ldr r3, =0x8104AB0 | 1
|
||||
bx r3
|
||||
|
||||
@0x8045C58 with r0
|
||||
UpdateEggMoveLimit:
|
||||
add r0, r2, #0x1
|
||||
lsl r0, r0, #0x10
|
||||
lsr r2, r0, #0x10
|
||||
push {r2}
|
||||
bl GetUpdatedEggMoveLimit
|
||||
pop {r2}
|
||||
ldr r1, =0x8045C60 | 1
|
||||
bx r1
|
||||
|
||||
@0x800ECF2 with r4
|
||||
LoadSpecialPokePicHook:
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
ldr r4, [sp, #0x18]
|
||||
sub sp, #0x4
|
||||
str r4, [sp, #0x0]
|
||||
bl LoadSpecialPokePic
|
||||
add sp, #0x4
|
||||
pop {r7}
|
||||
mov r8, r7
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
|
||||
@0x8096E38 with r2
|
||||
GenderedMonIconHook:
|
||||
lsr r7, r3, #0x10
|
||||
lsl r0, #0x18
|
||||
lsr r0, #0x18
|
||||
mov r9, r0
|
||||
|
||||
mov r0, r4
|
||||
ldr r1, [sp, #0x50] @Personality
|
||||
bl TryGetFemaleGenderedSpecies
|
||||
mov r4, r0
|
||||
|
||||
ldr r1, [sp, #0x50] @Personality
|
||||
ldr r0, =0x8096E40 | 1
|
||||
bx r0
|
||||
|
||||
218
src/thumb_compiler_helper.S
Normal file
218
src/thumb_compiler_helper.S
Normal file
|
|
@ -0,0 +1,218 @@
|
|||
.text
|
||||
.align 1
|
||||
|
||||
.force_thumb
|
||||
.syntax unified
|
||||
.global __gnu_thumb1_case_uqi
|
||||
.thumb_func
|
||||
.type __gnu_thumb1_case_uqi,function
|
||||
__gnu_thumb1_case_uqi:
|
||||
push {r1}
|
||||
mov r1, lr
|
||||
lsrs r1, r1, #1
|
||||
lsls r1, r1, #1
|
||||
ldrb r1, [r1, r0]
|
||||
lsls r1, r1, #1
|
||||
add lr, lr, r1
|
||||
pop {r1}
|
||||
bx lr
|
||||
.size __gnu_thumb1_case_uqi, . - __gnu_thumb1_case_uqi
|
||||
|
||||
.force_thumb
|
||||
.syntax unified
|
||||
.global __gnu_thumb1_case_uhi
|
||||
.thumb_func
|
||||
.type __gnu_thumb1_case_uhi,function
|
||||
__gnu_thumb1_case_uhi:
|
||||
push {r0, r1}
|
||||
mov r1, lr
|
||||
lsrs r1, r1, #1
|
||||
lsls r0, r0, #1
|
||||
lsls r1, r1, #1
|
||||
ldrh r1, [r1, r0]
|
||||
lsls r1, r1, #1
|
||||
add lr, lr, r1
|
||||
pop {r0, r1}
|
||||
bx lr
|
||||
.size __gnu_thumb1_case_uhi, . - __gnu_thumb1_case_uhi
|
||||
|
||||
.force_thumb
|
||||
.syntax unified
|
||||
.global __gnu_thumb1_case_sqi
|
||||
.thumb_func
|
||||
.type __gnu_thumb1_case_sqi,function
|
||||
__gnu_thumb1_case_sqi:
|
||||
push {r1}
|
||||
mov r1, lr
|
||||
lsrs r1, r1, #1
|
||||
lsls r1, r1, #1
|
||||
ldrsb r1, [r1, r0]
|
||||
lsls r1, r1, #1
|
||||
add lr, r1
|
||||
pop {r1}
|
||||
bx lr
|
||||
.size __gnu_thumb1_case_sqi, . - __gnu_thumb1_case_sqi
|
||||
|
||||
.force_thumb
|
||||
.syntax unified
|
||||
.global __gnu_thumb1_case_shi
|
||||
.thumb_func
|
||||
.type __gnu_thumb1_case_shi,function
|
||||
__gnu_thumb1_case_shi:
|
||||
push {r0, r1}
|
||||
mov r1, lr
|
||||
lsrs r1, r1, #1
|
||||
lsls r0, r0, #1
|
||||
lsls r1, r1, #1
|
||||
ldrsh r1, [r1, r0]
|
||||
lsls r1, r1, #1
|
||||
add lr, lr, r1
|
||||
pop {r0, r1}
|
||||
bx lr
|
||||
.size __gnu_thumb1_case_shi, . - __gnu_thumb1_case_shi
|
||||
|
||||
.force_thumb
|
||||
.syntax unified
|
||||
.global __gnu_thumb1_case_si
|
||||
.thumb_func
|
||||
.type __gnu_thumb1_case_shi,function
|
||||
__gnu_thumb1_case_si:
|
||||
push {r0, r1}
|
||||
mov r1, lr
|
||||
adds.n r1, r1, #2 /* Align to word. */
|
||||
lsrs r1, r1, #2
|
||||
lsls r0, r0, #2
|
||||
lsls r1, r1, #2
|
||||
ldr r0, [r1, r0]
|
||||
adds r0, r0, r1
|
||||
mov lr, r0
|
||||
pop {r0, r1}
|
||||
mov pc, lr /* We know we were called from thumb code. */
|
||||
.size __gnu_thumb1_case_si, . - __gnu_thumb1_case_si
|
||||
|
||||
.force_thumb
|
||||
.syntax unified
|
||||
.global __aeabi_uidiv
|
||||
.thumb_func
|
||||
.type __aeabi_uidiv,function
|
||||
__aeabi_uidiv:
|
||||
ldr r3, =(__udivsi3)
|
||||
bx r3
|
||||
.size __aeabi_uidiv, . - __aeabi_uidiv
|
||||
|
||||
.force_thumb
|
||||
.syntax unified
|
||||
.global __aeabi_idiv
|
||||
.thumb_func
|
||||
.type __aeabi_idiv,function
|
||||
__aeabi_idiv:
|
||||
ldr r3, =(__divsi3)
|
||||
bx r3
|
||||
.size __aeabi_idiv, . - __aeabi_idiv
|
||||
|
||||
.force_thumb
|
||||
.syntax unified
|
||||
.global __aeabi_idivmod
|
||||
.thumb_func
|
||||
.type __aeabi_idivmod,function
|
||||
__aeabi_idivmod:
|
||||
push {lr}
|
||||
bl ActualModulationInt
|
||||
.byte 0x01, 0x1C @;mov r1, r0 - Return to r1 for some reason
|
||||
pop {pc}
|
||||
|
||||
ActualModulationInt:
|
||||
ldr r3, =(__modsi3)
|
||||
bx r3
|
||||
.size __aeabi_idivmod, . - __aeabi_idivmod
|
||||
|
||||
.force_thumb
|
||||
.syntax unified
|
||||
.global __aeabi_uidivmod
|
||||
.thumb_func
|
||||
.type __aeabi_uidivmod,function
|
||||
__aeabi_uidivmod:
|
||||
push {lr}
|
||||
bl ActualModulationUInt
|
||||
.byte 0x01, 0x1C @;mov r1, r0 - Return to r1 for some reason
|
||||
pop {pc}
|
||||
|
||||
ActualModulationUInt:
|
||||
ldr r3, =(__umodsi3)
|
||||
bx r3
|
||||
.size __aeabi_uidivmod, . - __aeabi_uidivmod
|
||||
|
||||
.force_thumb
|
||||
.syntax unified
|
||||
.global memcpy
|
||||
.thumb_func
|
||||
.type memcpy,function
|
||||
memcpy:
|
||||
ldr r3, =(memcpy_)
|
||||
bx r3
|
||||
.size memcpy, . - memcpy
|
||||
|
||||
.force_thumb
|
||||
.syntax unified
|
||||
.global memset
|
||||
.thumb_func
|
||||
.type memset,function
|
||||
memset:
|
||||
ldr r3, =(memset_)
|
||||
bx r3
|
||||
.size memset, . - memset
|
||||
|
||||
.force_thumb
|
||||
.syntax unified
|
||||
.global malloc
|
||||
.thumb_func
|
||||
.type malloc,function
|
||||
malloc:
|
||||
ldr r3, =(malloc_)
|
||||
bx r3
|
||||
.size malloc, . - malloc
|
||||
|
||||
.force_thumb
|
||||
.syntax unified
|
||||
.global free
|
||||
.thumb_func
|
||||
.type free,function
|
||||
free:
|
||||
ldr r1, =(free_)
|
||||
bx r1
|
||||
.size free, . - free
|
||||
|
||||
.force_thumb
|
||||
.syntax unified
|
||||
.global read_word
|
||||
.thumb_func
|
||||
.type read_word,function
|
||||
read_word:
|
||||
movs r2, r0
|
||||
ldrb r0, [r2, #3]
|
||||
lsls r0, r0, #0x18
|
||||
ldrb r1, [r2, #2]
|
||||
lsls r1, r1, #0x10
|
||||
orrs r0, r1
|
||||
ldrb r1, [r2, #1]
|
||||
lsls r1, r1, #8
|
||||
orrs r0, r1
|
||||
ldrb r1, [r2]
|
||||
orrs r0, r1
|
||||
bx lr
|
||||
|
||||
.force_thumb
|
||||
.syntax unified
|
||||
.global rand
|
||||
.thumb_func
|
||||
.type rand,function
|
||||
rand:
|
||||
ldr r2, =(0x3005000) @rand_seed
|
||||
ldr r1, [r2]
|
||||
ldr r0, =(0x41C64E6D)
|
||||
muls r0, r1
|
||||
ldr r1, =(0x6073)
|
||||
adds r0, r0, r1
|
||||
str r0, [r2]
|
||||
lsrs r0, r0, #0x10
|
||||
bx lr
|
||||
149
src/updated_code.c
Normal file
149
src/updated_code.c
Normal file
|
|
@ -0,0 +1,149 @@
|
|||
#include "defines.h"
|
||||
#include "../include/pokedex.h"
|
||||
#include "../include/graphics.h"
|
||||
#include "../include/evolution.h"
|
||||
|
||||
//Backsprite battle start
|
||||
|
||||
extern const u16 gSpeciesIdToCryId[];
|
||||
extern const u16 gSpeciesToNationalPokedexNum[];
|
||||
extern const struct AlternateDexEntries gAlternateDexEntries[];
|
||||
extern const struct CompressedSpriteSheet gMonBackPicTable[];
|
||||
extern const struct CompressedSpriteSheet gMonFrontPicTable[];
|
||||
extern const struct CompressedSpritePalette gMonPaletteTable[];
|
||||
extern const struct CompressedSpritePalette gMonShinyPaletteTable[];
|
||||
|
||||
const u16 gNumSpecies = NUM_SPECIES;
|
||||
const u16 gNumDexEntries = NUM_DEX_ENTRIES;
|
||||
|
||||
u8 __attribute__((long_call)) GetGenderFromSpeciesAndPersonality(u16 species, u32 personality);
|
||||
u8 __attribute__((long_call)) GetUnownLetterFromPersonality(u32 personality);
|
||||
void __attribute__((long_call)) break_func(u32);
|
||||
|
||||
//This file's functions
|
||||
u16 TryGetFemaleGenderedSpecies(u16 species, u32 personality);
|
||||
|
||||
u16 SpeciesToCryId(u16 species)
|
||||
{
|
||||
return species + 1;
|
||||
}
|
||||
|
||||
u16 NationalPokedexNumToSpecies(u16 nationalNum)
|
||||
{
|
||||
u16 species;
|
||||
|
||||
if (!nationalNum)
|
||||
return 0;
|
||||
|
||||
species = 0;
|
||||
|
||||
while (species < (NUM_SPECIES - 1) && gSpeciesToNationalPokedexNum[species] != nationalNum)
|
||||
species++;
|
||||
|
||||
if (species == NUM_SPECIES - 1)
|
||||
return 0;
|
||||
|
||||
return species + 1;
|
||||
}
|
||||
|
||||
const u8* TryLoadAlternateDexEntry(u16 species)
|
||||
{
|
||||
for (int i = 0; gAlternateDexEntries[i].species != SPECIES_TABLES_TERMIN; ++i)
|
||||
{
|
||||
if (gAlternateDexEntries[i].species == species)
|
||||
return gAlternateDexEntries[i].description;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void LoadSpecialPokePic(const struct CompressedSpriteSheet* src, void* dest, u16 species, u32 personality, bool8 isFrontPic)
|
||||
{
|
||||
u16 oldSpecies = species;
|
||||
const struct CompressedSpriteSheet* table = isFrontPic ? gMonFrontPicTable : gMonBackPicTable;
|
||||
|
||||
species = TryGetFemaleGenderedSpecies(species, personality);
|
||||
if (species != oldSpecies) //Updated sprite
|
||||
src = &table[species];
|
||||
|
||||
if (species == SPECIES_UNOWN)
|
||||
{
|
||||
u16 i = GetUnownLetterFromPersonality(personality);
|
||||
|
||||
// The other Unowns are separate from Unown A.
|
||||
if (i == 0)
|
||||
i = SPECIES_UNOWN;
|
||||
else
|
||||
i += SPECIES_UNOWN_B - 1;
|
||||
|
||||
if (!isFrontPic)
|
||||
LZ77UnCompWram((void*) gMonBackPicTable[i].data, dest);
|
||||
else
|
||||
LZ77UnCompWram((void*) gMonFrontPicTable[i].data, dest);
|
||||
}
|
||||
else if (species > NUM_SPECIES) // is species unknown? draw the ? icon
|
||||
LZ77UnCompWram((void*) gMonFrontPicTable[0].data, dest);
|
||||
else
|
||||
LZ77UnCompWram((void*) src->data, dest);
|
||||
|
||||
DrawSpindaSpots(species, personality, dest, isFrontPic);
|
||||
}
|
||||
|
||||
const u32* GetFrontSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality)
|
||||
{
|
||||
u32 shinyValue;
|
||||
|
||||
species = TryGetFemaleGenderedSpecies(species, personality);
|
||||
|
||||
if (species > NUM_SPECIES)
|
||||
return (u32*) gMonPaletteTable[0].data;
|
||||
|
||||
shinyValue = HIHALF(otId) ^ LOHALF(otId) ^ HIHALF(personality) ^ LOHALF(personality);
|
||||
if (shinyValue < 8)
|
||||
return (u32*) gMonShinyPaletteTable[species].data;
|
||||
else
|
||||
return (u32*) gMonPaletteTable[species].data;
|
||||
}
|
||||
|
||||
const struct CompressedSpritePalette* GetMonSpritePalStructFromOtIdPersonality(u16 species, u32 otId , u32 personality)
|
||||
{
|
||||
u32 shinyValue;
|
||||
species = TryGetFemaleGenderedSpecies(species, personality);
|
||||
|
||||
break_func(5);
|
||||
|
||||
shinyValue = HIHALF(otId) ^ LOHALF(otId) ^ HIHALF(personality) ^ LOHALF(personality);
|
||||
if (shinyValue < 8)
|
||||
return &gMonShinyPaletteTable[species];
|
||||
else
|
||||
return &gMonPaletteTable[species];
|
||||
}
|
||||
|
||||
u16 TryGetFemaleGenderedSpecies(u16 species, u32 personality)
|
||||
{
|
||||
if (GetGenderFromSpeciesAndPersonality(species, personality) == MON_FEMALE)
|
||||
{
|
||||
switch (species) {
|
||||
case SPECIES_HIPPOPOTAS:
|
||||
species = SPECIES_HIPPOPOTAS_F;
|
||||
break;
|
||||
case SPECIES_HIPPOWDON:
|
||||
species = SPECIES_HIPPOWDON_F;
|
||||
break;
|
||||
case SPECIES_UNFEZANT:
|
||||
species = SPECIES_UNFEZANT_F;
|
||||
break;
|
||||
case SPECIES_FRILLISH:
|
||||
species = SPECIES_FRILLISH_F;
|
||||
break;
|
||||
case SPECIES_JELLICENT:
|
||||
species = SPECIES_JELLICENT_F;
|
||||
break;
|
||||
case SPECIES_PYROAR:
|
||||
species = SPECIES_PYROAR_FEMALE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return species;
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user