Will this method be included into the Emerald Battle Engine Upgrade (if it isn't already)?
'Well, this is embarrassing.' —Firefox
I used both this expansion and your engine (having them point to different free space in my expanded ROM). The game works in mgba. I can edit Pokémon in Pokémon Game Editor. However, when I try to edit moves or abilities in the the same PGE, I get an error that says 'Error: 5; Unable to read beyond the end of the stream.' The unhandled exception was: 'Input string was not in a correct format.' If I decide to continue and try t even select a different move/ability, PGE says that another process is already using my ROM—error #75.
As Dollsteak said, they're separate projects, but fully compatible with each other.Will this method be included into the Emerald Battle Engine Upgrade (if it isn't already)?
Make sure the offsets in the ini are correct. Something stupid like one move less or more can use it to crash like that. Also make sure to use Jambo's Learnset Hack or whatever it's named there. As for the different process using your rom, make sure you don't have it opened in A-map or a hex editor(open for reading is fine, but modifying the file may throw that error in PGE)
Right now, I am checking the number of moves. 1025 and 1024 do not seem to be working so far...
Can I see your INI?
What is the name of the name of the "command prompt" mentioned in step 5 of the readme file. If it is PGEinicreator, though I suspect that it is not, it is closing itself as soon as it opens. I am assuming I need to run the command prompt before PGEinicreator.
Thank you.
Spoiler:
[BPEE]
ROMName=Pokémon Emerald (English)
ItemData=5839A0
AttackNames=E4B978
TMData=616040
TotalTMsPlusHMs=58
TotalTMs=50
ItemIMGData=614410
NumberOfItems=377
NumberOfAttacks=1024
MoveTutorAttacks=61500C
NumberOfMoveTutorAttacks=32
PokemonNames=1058cec
NumberOfPokemon=555
NationalDexTable=106b5b8
SecondDexTable=106be68
PokedexData=105becc
NumberOfDexEntries=501
PokemonData=1050000
AbilityNames=1000E10
NumberOfAbilities=256
Pointer2PointersToMapBanks=84AA4
OriginalBankPointer0=485D60
OriginalBankPointer1=485E44
OriginalBankPointer2=485E58
OriginalBankPointer3=485E6C
OriginalBankPointer4=485E84
OriginalBankPointer5=485EA0
OriginalBankPointer6=485EC0
OriginalBankPointer7=485EE4
OriginalBankPointer8=485F00
OriginalBankPointer9=485F1C
OriginalBankPointer10=485F54
OriginalBankPointer11=485F74
OriginalBankPointer12=485FB8
OriginalBankPointer13=485FE0
OriginalBankPointer14=48603C
OriginalBankPointer15=486070
OriginalBankPointer16=4860AC
OriginalBankPointer17=4860E8
OriginalBankPointer18=4860F0
OriginalBankPointer19=4860F8
OriginalBankPointer20=486100
OriginalBankPointer21=48610C
OriginalBankPointer22=486110
OriginalBankPointer23=486114
OriginalBankPointer24=486118
OriginalBankPointer25=4862C8
OriginalBankPointer26=4863BC
OriginalBankPointer27=486520
OriginalBankPointer28=486528
OriginalBankPointer29=48652C
OriginalBankPointer30=486560
OriginalBankPointer31=486564
OriginalBankPointer32=486568
OriginalBankPointer33=486574
NumberOfMapsInBank0=56
NumberOfMapsInBank1=4
NumberOfMapsInBank2=4
NumberOfMapsInBank3=5
NumberOfMapsInBank4=6
NumberOfMapsInBank5=7
NumberOfMapsInBank6=8
NumberOfMapsInBank7=6
NumberOfMapsInBank8=6
NumberOfMapsInBank9=13
NumberOfMapsInBank10=7
NumberOfMapsInBank11=16
NumberOfMapsInBank12=9
NumberOfMapsInBank13=22
NumberOfMapsInBank14=12
NumberOfMapsInBank15=14
NumberOfMapsInBank16=14
NumberOfMapsInBank17=1
NumberOfMapsInBank18=1
NumberOfMapsInBank19=1
NumberOfMapsInBank20=2
NumberOfMapsInBank21=0
NumberOfMapsInBank22=0
NumberOfMapsInBank23=0
NumberOfMapsInBank24=107
NumberOfMapsInBank25=60
NumberOfMapsInBank26=88
NumberOfMapsInBank27=1
NumberOfMapsInBank28=0
NumberOfMapsInBank29=12
NumberOfMapsInBank30=0
NumberOfMapsInBank31=0
NumberOfMapsInBank32=2
NumberOfMapsInBank33=0
MapLabelData=5A1480
NumberOfMapLabels=213
PokemonFrontSprites=1053cb4
PokemonBackSprites=1054e0c
PokemonNormalPal=1055f64
PokemonShinyPal=10570bc
PokemonAnimations=1053cb4
IconPointerTable=1058214
IconPalTable=1058ac0
CryTable=1067b2c
CryTable2=1069530
CryConversionTable=106b160
FootPrintTable=1067280
PokemonAttackTable=106657c
PokemonEvolutions=105fd6c
TMHMCompatibility=105a4c8
TMHMLenPerPoke=8
MoveTutorCompatibility=105b620
EnemyYTable=1065424
PlayerYTable=1065cd0
EnemyAltitudeTable=106af34
AttackData=E4896C
ContestMoveData=104000C0
ContestMoveEffectData=58CDCC
AttackDescriptionTable=E4FD88
AbilityDescriptionTable=1000000
StarterPokemon=5B1DF8
StarterPokemonLevel=B1178
StarterEncounterPokemon=32706
StarterEncounterPokemonLevel=32714
AttackAnimationTable=E4ED84
BattleFrontierTrainers=5D5ACC
SlateportBattleTentTrainers=5DDA14
VerdanturfBattleTentTrainers=5DE610
FallarborBattleTentTrainers=5DF084
NumberOfBattleFrontierTrainers=300
NumberOfSlateportBattleTentTrainers=30
NumberOfVerdanturfBattleTentTrainers=30
NumberOfFallarborBattleTentTrainers=30
BattleFrontierPokemon=5D97BC
SlateportBattleTentPokemon=5DE02C
VerdanturfBattleTentPokemon=5DEC28
FallarborBattleTentPokemon=5DF69C
NumberOfBattleFrontierPokemon=882
NumberOfSlateportBattleTentPokemon=70
NumberOfVerdanturfBattleTentPokemon=45
NumberOfFallarborBattleTentPokemon=45
BattleFrontierHeldItems=5CECB0
BattleFrontierBanList=611C9A
NumberOfBattlefrontierHeldItems=62
NumberOfTilesInTilset3DF71C=8F
NumberOfTilesInTilset3DF734=15D
NumberOfTilesInTilset3DF74C=17A
NumberOfTilesInTilset3DF764=197
NumberOfTilesInTilset3DF77C=1FF
NumberOfTilesInTilset3DF794=1B8
NumberOfTilesInTilset3DF7AC=16F
NumberOfTilesInTilset3DF7C4=117
NumberOfTilesInTilset3DF7DC=15F
NumberOfTilesInTilset3DF7F4=1C7
NumberOfTilesInTilset3DF80C=A7
NumberOfTilesInTilset3DF824=CA
NumberOfTilesInTilset3DF83C=FE
NumberOfTilesInTilset3DF86C=1FF
NumberOfTilesInTilset3DF884=C6
NumberOfTilesInTilset3DF89C=120
NumberOfTilesInTilset3DF8B4=E7
NumberOfTilesInTilset3DF8CC=19D
NumberOfTilesInTilset3DF8E4=39
NumberOfTilesInTilset3DF8FC=67
NumberOfTilesInTilset3DF914=65
NumberOfTilesInTilset3DF92C=9E
NumberOfTilesInTilset3DF944=79
NumberOfTilesInTilset3DF95C=FF
NumberOfTilesInTilset3DF974=37
NumberOfTilesInTilset3DF98C=47
NumberOfTilesInTilset3DF9A4=43
NumberOfTilesInTilset3DF9BC=1FF
NumberOfTilesInTilset3DF9D4=F7
NumberOfTilesInTilset3DF9EC=52
NumberOfTilesInTilset3DFA04=143
NumberOfTilesInTilset3DFA1C=143
NumberOfTilesInTilset3DFA34=143
NumberOfTilesInTilset3DFA4C=143
NumberOfTilesInTilset3DFA64=26
NumberOfTilesInTilset3DFA7C=3A
NumberOfTilesInTilset3DFA94=25
NumberOfTilesInTilset3DFAAC=8F
NumberOfTilesInTilset3DFAC4=E8
NumberOfTilesInTilset3DFADC=8E
NumberOfTilesInTilset3DFAF4=C3
NumberOfTilesInTilset3DFB0C=9D
NumberOfTilesInTilset3DFB24=EB
NumberOfTilesInTilset3DFB3C=DF
NumberOfTilesInTilset3DFB54=79
NumberOfTilesInTilset3DFB6C=1FF
NumberOfTilesInTilset3DFB84=5F
NumberOfTilesInTilset3DFB9C=52
NumberOfTilesInTilset3DFBB4=44
NumberOfTilesInTilset3DFBCC=95
NumberOfTilesInTilset3DFBE4=3C
NumberOfTilesInTilset3DFBFC=BC
NumberOfTilesInTilset3DFC14=47
NumberOfTilesInTilset3DFC2C=74
NumberOfTilesInTilset3DFC44=FB
NumberOfTilesInTilset3DFC7C=14B
NumberOfTilesInTilset3DFC94=1FF
NumberOfTilesInTilset3DFCAC=19E
NumberOfTilesInTilset3DFCC4=1AA
NumberOfTilesInTilset3DFCDC=15F
NumberOfTilesInTilset3DFCF4=15B
NumberOfTilesInTilset3DFD0C=B0
NumberOfTilesInTilset3DFD24=DC
NumberOfTilesInTilset3DFD3C=19D
NumberOfTilesInTilset3DFD54=34
NumberOfTilesInTilset3DFD6C=42
NumberOfTilesInTilset3DFD84=1CF
NumberOfTilesInTilset3DFD9C=1C2
NumberOfTilesInTilset3DFDB4=5D
NumberOfTilesInTilset3DFDCC=10C
NumberOfTilesInTilset3DFDE4=42
NumberOfTilesInTilset3DFDFC=30
IconPals=DDE1F8
ShadowFronts=1000000
ShadowPals=1002660
ShadowBacks=1007320
JamboLearnableMovesTerm=0000FF
StartSearchingForSpaceOffset=E3CF64
FreeSpaceSearchInterval=100
NumberOfEvolutionsPerPokemon=5
NumberOfEvolutionTypes=15
EvolutionName0=None
EvolutionName1=Happiness
EvolutionName2=Happiness (Day)
EvolutionName3=Happiness (Night)
EvolutionName4=Level
EvolutionName5=Trade
EvolutionName6=Trade w/ Item
EvolutionName7=Item
EvolutionName8=Atk > Def
EvolutionName9=Atk = Def
EvolutionName10=Atk < Def
EvolutionName11=High Personality
EvolutionName12=Low Personality
EvolutionName13=Allow Pokemon Creation
EvolutionName14=Create Extra Pokemon
EvolutionName15=Max Beauty
Evolution0Param=none
Evolution1Param=evolvesbutnoparms
Evolution2Param=evolvesbutnoparms
Evolution3Param=evolvesbutnoparms
Evolution4Param=level
Evolution5Param=evolvesbutnoparms
Evolution6Param=item
Evolution7Param=item
Evolution8Param=level
Evolution9Param=level
Evolution10Param=level
Evolution11Param=level
Evolution12Param=level
Evolution13Param=evolvesbutnoparms
Evolution14Param=level
Evolution15Param=evolvesbasedonvalue
EggMoveTable=32ADD8
EggMoveTableLimiter=70464
TrainerTable=310058
NumberOfTrainers=854
TrainerClasses=30FCD4
NumberOfTrainerClasses=66
TrainerImageTable=305654
NumberOfTrainerImages=92
TrainerPaletteTable=30593C
DexSizeTrainerSprite=71
TradeData=338ED0
NumberOfTrades=4
PokedexAlphabetTable=6DA7C
PokedexLightestTable=6DE64
PokedexSmallestTable=6E24C
PokedexTypeTable=0
MoveTableHack=True
NumberOfRegionDex=203
HoenntoNationalDex=106ba10
What is the name of the name of the "command prompt" mentioned in step 5 of the readme file. If it is PGEinicreator, though I suspect that it is not, it is closing itself as soon as it opens. I am assuming I need to run the command prompt before PGEinicreator.
Thank you.
That would literally invalidate the entire reason for making this in C and having the user build it with Python scripts (making it dynamic), so no, that's not going to happen.Is any chance for UPS patch for it Dizzy Egg? Or maybe Prepatched rom?
After using this on a clean Emerald ROM, opening it and going to anything past Chimecho in the Pokemon Editor in PGE causes this to happen:
Spoiler:![]()
If needed, here is my test.ini
Spoiler:[AXVE]
ROMName=Pokémon Ruby (English)
ItemData=3C5564
AttackNames=1F8320
TMData=376504
TotalTMsPlusHMs=58
TotalTMs=50
NumberOfItems=349
NumberOfAttacks=354
PokemonNames=1F716C
NumberOfPokemon=412
NationalDexTable=1FC516
SecondDexTable=1FC1E0
PokedexData=3B1858
NumberOfDexEntries=387
PokemonData=1FEC18
AbilityNames=1FA248
NumberOfAbilities=78
Pointer2PointersToMapBanks=53324
OriginalBankPointer0=307F60
OriginalBankPointer1=308038
OriginalBankPointer2=30804C
OriginalBankPointer3=308060
OriginalBankPointer4=308078
OriginalBankPointer5=308094
OriginalBankPointer6=3080B0
OriginalBankPointer7=3080D0
OriginalBankPointer8=3080EC
OriginalBankPointer9=308108
OriginalBankPointer10=30813C
OriginalBankPointer11=30815C
OriginalBankPointer12=3081A0
OriginalBankPointer13=3081C8
OriginalBankPointer14=308228
OriginalBankPointer15=30825C
OriginalBankPointer16=308290
OriginalBankPointer17=3082C8
OriginalBankPointer18=3082D0
OriginalBankPointer19=3082D8
OriginalBankPointer20=3082E0
OriginalBankPointer21=3082EC
OriginalBankPointer22=3082F0
OriginalBankPointer23=3082F4
OriginalBankPointer24=3082F8
OriginalBankPointer25=308450
OriginalBankPointer26=308500
OriginalBankPointer27=308530
OriginalBankPointer28=308538
OriginalBankPointer29=30853C
OriginalBankPointer30=308570
OriginalBankPointer31=308574
OriginalBankPointer32=308578
OriginalBankPointer33=308584
NumberOfMapsInBank0=53
NumberOfMapsInBank1=4
NumberOfMapsInBank2=4
NumberOfMapsInBank3=5
NumberOfMapsInBank4=6
NumberOfMapsInBank5=6
NumberOfMapsInBank6=7
NumberOfMapsInBank7=6
NumberOfMapsInBank8=6
NumberOfMapsInBank9=12
NumberOfMapsInBank10=7
NumberOfMapsInBank11=16
NumberOfMapsInBank12=9
NumberOfMapsInBank13=23
NumberOfMapsInBank14=12
NumberOfMapsInBank15=12
NumberOfMapsInBank16=13
NumberOfMapsInBank17=1
NumberOfMapsInBank18=1
NumberOfMapsInBank19=1
NumberOfMapsInBank20=2
NumberOfMapsInBank21=0
NumberOfMapsInBank22=0
NumberOfMapsInBank23=0
NumberOfMapsInBank24=85
NumberOfMapsInBank25=43
NumberOfMapsInBank26=11
NumberOfMapsInBank27=1
NumberOfMapsInBank28=0
NumberOfMapsInBank29=12
NumberOfMapsInBank30=0
NumberOfMapsInBank31=0
NumberOfMapsInBank32=2
NumberOfMapsInBank33=0
MapLabelData=3E73C8
NumberOfMapLabels=88
PokemonFrontSprites=1E8354
PokemonBackSprites=1E97F4
PokemonNormalPal=1EA5B4
PokemonShinyPal=1EB374
IconPointerTable=3BBD20
IconPalTable=3BC400
CryTable=452590
CryTable2=4537C0
FootPrintTable=3B4EE4
PokemonAttackTable=207BC8
PokemonEvolutions=203B68
TMHMCompatibility=1FD0F0
TMHMLenPerPoke=8
EnemyYTable=1E7C74
PlayerYTable=1E9114
EnemyAltitudeTable=1ECB14
AttackData=1FB12C
ContestMoveData=3CF594
ContestMoveEffectData=3D00AC
AttackDescriptionTable=3C09D8
AbilityDescriptionTable=
StarterPokemon=3F76C4
StarterPokemonLevel=821A8
StarterEncounterPokemon=B8EC
StarterEncounterPokemonLevel=B8FA
AttackAnimationTable=
NumberOfTilesInTilset286D0C=90
NumberOfTilesInTilset286D24=15D
NumberOfTilesInTilset286D3C=90
NumberOfTilesInTilset286D54=16C
NumberOfTilesInTilset286D6C=1B2
NumberOfTilesInTilset286D84=11E
NumberOfTilesInTilset286D9C=152
NumberOfTilesInTilset286DB4=10B
NumberOfTilesInTilset286DCC=15F
NumberOfTilesInTilset286DE4=16B
NumberOfTilesInTilset286DFC=A8
NumberOfTilesInTilset286E14=BF
NumberOfTilesInTilset286E2C=FE
NumberOfTilesInTilset286E44=118
NumberOfTilesInTilset286E5C=C6
NumberOfTilesInTilset286E74=19E
NumberOfTilesInTilset286E8C=3A
NumberOfTilesInTilset286EA4=68
NumberOfTilesInTilset286EBC=01
NumberOfTilesInTilset286ED4=9F
NumberOfTilesInTilset286EEC=65
NumberOfTilesInTilset286F04=100
NumberOfTilesInTilset286F1C=87
NumberOfTilesInTilset286F34=48
NumberOfTilesInTilset286F4C=44
NumberOfTilesInTilset286F64=1FE
NumberOfTilesInTilset286F7C=F8
NumberOfTilesInTilset286F94=53
NumberOfTilesInTilset286FAC=144
NumberOfTilesInTilset286FC4=144
NumberOfTilesInTilset286FDC=144
NumberOfTilesInTilset286FF4=144
NumberOfTilesInTilset28700C=144
NumberOfTilesInTilset287024=144
NumberOfTilesInTilset28703C=26
NumberOfTilesInTilset287054=3A
NumberOfTilesInTilset28706C=E0
NumberOfTilesInTilset287084=8F
NumberOfTilesInTilset28709C=AB
NumberOfTilesInTilset2870B4=9A
NumberOfTilesInTilset2870CC=EC
NumberOfTilesInTilset2870E4=8C
NumberOfTilesInTilset2870FC=63
NumberOfTilesInTilset287114=60
NumberOfTilesInTilset28712C=38
NumberOfTilesInTilset287144=3D
NumberOfTilesInTilset28715C=52
NumberOfTilesInTilset287174=2A
NumberOfTilesInTilset28718C=95
NumberOfTilesInTilset2871A4=35
NumberOfTilesInTilset2871BC=49
NumberOfTilesInTilset2871D4=FC
NumberOfTilesInTilset2871EC=14B
NumberOfTilesInTilset287204=83
IconPals=E966D8
JamboLearnableMovesTerm=0000FF
StartSearchingForSpaceOffset=800000
FreeSpaceSearchInterval=100
NumberOfEvolutionsPerPokemon=5
NumberOfEvolutionTypes=15
EvolutionName0=None
EvolutionName1=Happiness
EvolutionName2=Happiness (Day)
EvolutionName3=Happiness (Night)
EvolutionName4=Level
EvolutionName5=Trade
EvolutionName6=Trade w/ Item
EvolutionName7=Item
EvolutionName8=Atk > Def
EvolutionName9=Atk = Def
EvolutionName10=Atk < Def
EvolutionName11=High Personality
EvolutionName12=Low Personality
EvolutionName13=Allow Pokemon Creation
EvolutionName14=Create Extra Pokemon
EvolutionName15=Max Beauty
Evolution0Param=none
Evolution1Param=evolvesbutnoparms
Evolution2Param=evolvesbutnoparms
Evolution3Param=evolvesbutnoparms
Evolution4Param=level
Evolution5Param=evolvesbutnoparms
Evolution6Param=item
Evolution7Param=item
Evolution8Param=level
Evolution9Param=level
Evolution10Param=level
Evolution11Param=level
Evolution12Param=level
Evolution13Param=evolvesbutnoparms
Evolution14Param=level
Evolution15Param=evolvesbasedonvalue
MoveTutorAttacks=0
CryConversionTable=1FDE6A
MoveTutorCompatibility=0
EggMoveTable=0
EggMoveTableLimiter=41BB8
TrainerTable=1F0524
NumberOfTrainers=693
TrainerClasses=1F0208
NumberOfTrainerClasses=58
TrainerImageTable=1EC53C
NumberOfTrainerImages=82
TrainerPaletteTable=1EC7D4
DexSizeTrainerSprite=0
TradeData=215AC4
NumberOfTrades=3
[AXPE]
ROMName=Pokémon Sapphire (English)
ItemData=3C55BC
AttackNames=1F82B0
TMData=376494
TotalTMsPlusHMs=58
TotalTMs=50
NumberOfItems=349
NumberOfAttacks=354
PokemonNames=1F70FC
NumberOfPokemon=412
NationalDexTable=1FC4A6
SecondDexTable=1FC170
PokedexData=3B18B0
NumberOfDexEntries=387
PokemonData=1FEBA8
AbilityNames=1FA1D8
NumberOfAbilities=78
Pointer2PointersToMapBanks=53324
OriginalBankPointer0=307EF0
OriginalBankPointer1=307FC8
OriginalBankPointer2=307FDC
OriginalBankPointer3=307FF0
OriginalBankPointer4=308008
OriginalBankPointer5=308024
OriginalBankPointer6=308040
OriginalBankPointer7=308060
OriginalBankPointer8=30807C
OriginalBankPointer9=308098
OriginalBankPointer10=3080CC
OriginalBankPointer11=3080EC
OriginalBankPointer12=308130
OriginalBankPointer13=308158
OriginalBankPointer14=3081B8
OriginalBankPointer15=3081EC
OriginalBankPointer16=308220
OriginalBankPointer17=308258
OriginalBankPointer18=308260
OriginalBankPointer19=308268
OriginalBankPointer20=308270
OriginalBankPointer21=30827C
OriginalBankPointer22=308280
OriginalBankPointer23=308284
OriginalBankPointer24=308288
OriginalBankPointer25=3083E0
OriginalBankPointer26=308490
OriginalBankPointer27=3084C0
OriginalBankPointer28=3084C8
OriginalBankPointer29=3084CC
OriginalBankPointer30=308500
OriginalBankPointer31=308540
OriginalBankPointer32=308508
OriginalBankPointer33=308514
NumberOfMapsInBank0=53
NumberOfMapsInBank1=4
NumberOfMapsInBank2=4
NumberOfMapsInBank3=5
NumberOfMapsInBank4=6
NumberOfMapsInBank5=6
NumberOfMapsInBank6=7
NumberOfMapsInBank7=6
NumberOfMapsInBank8=6
NumberOfMapsInBank9=12
NumberOfMapsInBank10=7
NumberOfMapsInBank11=16
NumberOfMapsInBank12=9
NumberOfMapsInBank13=23
NumberOfMapsInBank14=12
NumberOfMapsInBank15=12
NumberOfMapsInBank16=13
NumberOfMapsInBank17=1
NumberOfMapsInBank18=1
NumberOfMapsInBank19=1
NumberOfMapsInBank20=2
NumberOfMapsInBank21=0
NumberOfMapsInBank22=0
NumberOfMapsInBank23=0
NumberOfMapsInBank24=85
NumberOfMapsInBank25=43
NumberOfMapsInBank26=11
NumberOfMapsInBank27=1
NumberOfMapsInBank28=0
NumberOfMapsInBank29=12
NumberOfMapsInBank30=0
NumberOfMapsInBank31=0
NumberOfMapsInBank32=2
NumberOfMapsInBank33=0
MapLabelData=3E7420
NumberOfMapLabels=88
PokemonFrontSprites=1E82E4
PokemonBackSprites=1E9784
PokemonNormalPal=1EA544
PokemonShinyPal=1EB304
IconPointerTable=3BBD78
IconPalTable=3BC458
CryTable=4525EC
FootPrintTable=3B4F3C
PokemonAttackTable=207B58
PokemonEvolutions=203AF8
TMHMCompatibility=1FD080
TMHMLenPerPoke=8
EnemyYTable=
PlayerYTable=
EnemyAltitudeTable=
AttackData=1FB0BC
ContestMoveData=3CF5EC
ContestMoveEffectData=3D0104
AttackDescriptionTable=3C0A30
AbilityDescriptionTable=
StarterPokemon=3F771C
StarterPokemonLevel=821A8
StarterEncounterPokemon=B8EC
StarterEncounterPokemonLevel=B8FA
AttackAnimationTable=
IconPals=E966D8
JamboLearnableMovesTerm=0000FF
StartSearchingForSpaceOffset=800000
FreeSpaceSearchInterval=100
NumberOfEvolutionsPerPokemon=5
NumberOfEvolutionTypes=15
EvolutionName0=None
EvolutionName1=Happiness
EvolutionName2=Happiness (Day)
EvolutionName3=Happiness (Night)
EvolutionName4=Level
EvolutionName5=Trade
EvolutionName6=Trade w/ Item
EvolutionName7=Item
EvolutionName8=Atk > Def
EvolutionName9=Atk = Def
EvolutionName10=Atk < Def
EvolutionName11=High Personality
EvolutionName12=Low Personality
EvolutionName13=Allow Pokemon Creation
EvolutionName14=Create Extra Pokemon
EvolutionName15=Max Beauty
Evolution0Param=none
Evolution1Param=evolvesbutnoparms
Evolution2Param=evolvesbutnoparms
Evolution3Param=evolvesbutnoparms
Evolution4Param=level
Evolution5Param=evolvesbutnoparms
Evolution6Param=item
Evolution7Param=item
Evolution8Param=level
Evolution9Param=level
Evolution10Param=level
Evolution11Param=level
Evolution12Param=level
Evolution13Param=evolvesbutnoparms
Evolution14Param=level
Evolution15Param=evolvesbasedonvalue
MoveTutorAttacks=0
EggMoveTable=0
TrainerTable=1F04B4
NumberOfTrainers=693
TrainerClasses=1F0198
NumberOfTrainerClasses=58
TrainerImageTable=1EC4CC
NumberOfTrainerImages=82
TrainerPaletteTable=1EC764
[BPRE]
ROMName=Pokémon Fire Red (English)
ItemData=3DB028
AttackNames=247094
TMData=45A80C
TotalTMsPlusHMs=58
TotalTMs=50
ItemIMGData=3D4294
NumberOfItems=375
NumberOfAttacks=354
MoveTutorAttacks=459B60
NumberOfMoveTutorAttacks=16
PokemonNames=245EE0
NumberOfPokemon=412
NationalDexTable=251FEE
SecondDexTable=251CB8
PokedexData=44E850
NumberOfDexEntries=387
PokemonData=254784
AbilityNames=24FC40
NumberOfAbilities=78
Pointer2PointersToMapBanks=5524C
OriginalBankPointer0=352004
OriginalBankPointer1=352018
OriginalBankPointer2=352204
OriginalBankPointer3=3522F4
OriginalBankPointer4=3523FC
OriginalBankPointer5=35240C
OriginalBankPointer6=352424
OriginalBankPointer7=352444
OriginalBankPointer8=35246C
OriginalBankPointer9=352484
OriginalBankPointer10=3524A4
OriginalBankPointer11=3524F4
OriginalBankPointer12=35251C
OriginalBankPointer13=35253C
OriginalBankPointer14=352544
OriginalBankPointer15=35256C
OriginalBankPointer16=35257C
OriginalBankPointer17=352584
OriginalBankPointer18=35258C
OriginalBankPointer19=352594
OriginalBankPointer20=352598
OriginalBankPointer21=35259C
OriginalBankPointer22=3525A4
OriginalBankPointer23=3525AC
OriginalBankPointer24=3525B8
OriginalBankPointer25=3525C0
OriginalBankPointer26=3525CC
OriginalBankPointer27=3525D4
OriginalBankPointer28=3525D8
OriginalBankPointer29=3525DC
OriginalBankPointer30=3525E0
OriginalBankPointer31=3525E4
OriginalBankPointer32=352600
OriginalBankPointer33=352614
OriginalBankPointer34=352628
OriginalBankPointer35=352648
OriginalBankPointer36=352668
OriginalBankPointer37=35267C
OriginalBankPointer38=352690
OriginalBankPointer39=352694
OriginalBankPointer40=352698
OriginalBankPointer41=35269C
OriginalBankPointer42=3526A4
NumberOfMapsInBank0=4
NumberOfMapsInBank1=122
NumberOfMapsInBank2=59
NumberOfMapsInBank3=65
NumberOfMapsInBank4=3
NumberOfMapsInBank5=5
NumberOfMapsInBank6=7
NumberOfMapsInBank7=9
NumberOfMapsInBank8=5
NumberOfMapsInBank9=7
NumberOfMapsInBank10=19
NumberOfMapsInBank11=9
NumberOfMapsInBank12=7
NumberOfMapsInBank13=1
NumberOfMapsInBank14=9
NumberOfMapsInBank15=3
NumberOfMapsInBank16=1
NumberOfMapsInBank17=1
NumberOfMapsInBank18=1
NumberOfMapsInBank19=0
NumberOfMapsInBank20=0
NumberOfMapsInBank21=1
NumberOfMapsInBank22=1
NumberOfMapsInBank23=2
NumberOfMapsInBank24=1
NumberOfMapsInBank25=2
NumberOfMapsInBank26=1
NumberOfMapsInBank27=0
NumberOfMapsInBank28=0
NumberOfMapsInBank29=0
NumberOfMapsInBank30=0
NumberOfMapsInBank31=6
NumberOfMapsInBank32=4
NumberOfMapsInBank33=4
NumberOfMapsInBank34=7
NumberOfMapsInBank35=7
NumberOfMapsInBank36=4
NumberOfMapsInBank37=4
NumberOfMapsInBank38=0
NumberOfMapsInBank39=0
NumberOfMapsInBank40=0
NumberOfMapsInBank41=1
NumberOfMapsInBank42=0
MapLabelData=3F1CAC
NumberOfMapLabels=109
PokemonFrontSprites=2350AC
PokemonBackSprites=23654C
PokemonNormalPal=23730C
PokemonShinyPal=2380CC
IconPointerTable=3D37A0
IconPalTable=3D3E80
CryTable=48C914
CryTable2=48DB44
CryConversionTable=2539D4
FootPrintTable=43FAB0
PokemonAttackTable=25D7B4
PokemonEvolutions=259754
TMHMCompatibility=252BC8
TMHMLenPerPoke=8
MoveTutorCompatibility=459B7E
EnemyYTable=2349CC
PlayerYTable=235E6C
EnemyAltitudeTable=23A004
AttackData=250C04
AttackDescriptionTable=4886E8
AbilityDescriptionTable=24FB08
AttackAnimationTable=1C68F4
IconPals=3D3740
JamboLearnableMovesTerm=0000FF
StartSearchingForSpaceOffset=71A240
FreeSpaceSearchInterval=100
NumberOfEvolutionsPerPokemon=5
NumberOfEvolutionTypes=15
EvolutionName0=None
EvolutionName1=Happiness
EvolutionName2=Happiness (Day)
EvolutionName3=Happiness (Night)
EvolutionName4=Level
EvolutionName5=Trade
EvolutionName6=Trade w/ Item
EvolutionName7=Item
EvolutionName8=Atk > Def
EvolutionName9=Atk = Def
EvolutionName10=Atk < Def
EvolutionName11=High Personality
EvolutionName12=Low Personality
EvolutionName13=Allow Pokemon Creation
EvolutionName14=Create Extra Pokemon
EvolutionName15=Max Beauty
Evolution0Param=none
Evolution1Param=evolvesbutnoparms
Evolution2Param=evolvesbutnoparms
Evolution3Param=evolvesbutnoparms
Evolution4Param=level
Evolution5Param=evolvesbutnoparms
Evolution6Param=item
Evolution7Param=item
Evolution8Param=level
Evolution9Param=level
Evolution10Param=level
Evolution11Param=level
Evolution12Param=level
Evolution13Param=evolvesbutnoparms
Evolution14Param=level
Evolution15Param=evolvesbasedonvalue
EggMoveTable=25EF0C
EggMoveTableLimiter=45CC4
HabitatTable=452C4C
ItemAnimationTable=45FD54
TrainerTable=23EAF0
NumberOfTrainers=742
TrainerClasses=23E558
NumberOfTrainerClasses=6B
TrainerImageTable=23957C
NumberOfTrainerImages=147
TrainerPaletteTable=239A1C
TrainerClassMoney=24F220
DexSizeTrainerSprite=135
TradeData=26CF8C
NumberOfTrades=9
PokedexAlphabetTable=443FC0
PokedexLightestTable=4442F6
PokedexSmallestTable=4445FA
PokedexTypeTable=4448FE
[BPGE]
ROMName=Pokémon Leaf Green (English)
ItemData=3DAE64
AttackNames=247070
TMData=45A22C
TotalTMsPlusHMs=58
TotalTMs=50
ItemIMGData=3D40D0
NumberOfItems=375
NumberOfAttacks=354
MoveTutorAttacks=459580
NumberOfMoveTutorAttacks=16
PokemonNames=245EBC
NumberOfPokemon=412
NationalDexTable=251FCA
SecondDexTable=251C94
PokedexData=44E270
NumberOfDexEntries=387
PokemonData=254760
AbilityNames=24FC1C
NumberOfAbilities=78
Pointer2PointersToMapBanks=5524C
OriginalBankPointer0=351FE4
OriginalBankPointer1=351FF8
OriginalBankPointer2=3521E4
OriginalBankPointer3=3522D4
OriginalBankPointer4=3523DC
OriginalBankPointer5=3523EC
OriginalBankPointer6=352404
OriginalBankPointer7=352424
OriginalBankPointer8=35244C
OriginalBankPointer9=352464
OriginalBankPointer10=352484
OriginalBankPointer11=3524D4
OriginalBankPointer12=3524FC
OriginalBankPointer13=35251C
OriginalBankPointer14=352524
OriginalBankPointer15=35254C
OriginalBankPointer16=35255C
OriginalBankPointer17=352564
OriginalBankPointer18=35256C
OriginalBankPointer19=352574
OriginalBankPointer20=352578
OriginalBankPointer21=35257C
OriginalBankPointer22=352584
OriginalBankPointer23=35258C
OriginalBankPointer24=352598
OriginalBankPointer25=3525A0
OriginalBankPointer26=3525AC
OriginalBankPointer27=3525B4
OriginalBankPointer28=3525B8
OriginalBankPointer29=3525BC
OriginalBankPointer30=3525C0
OriginalBankPointer31=3525C4
OriginalBankPointer32=3525E0
OriginalBankPointer33=3525F4
OriginalBankPointer34=352608
OriginalBankPointer35=352628
OriginalBankPointer36=352648
OriginalBankPointer37=35265C
OriginalBankPointer38=352670
OriginalBankPointer39=352674
OriginalBankPointer40=352678
OriginalBankPointer41=35267C
OriginalBankPointer42=352684
NumberOfMapsInBank0=4
NumberOfMapsInBank1=122
NumberOfMapsInBank2=59
NumberOfMapsInBank3=65
NumberOfMapsInBank4=3
NumberOfMapsInBank5=5
NumberOfMapsInBank6=7
NumberOfMapsInBank7=9
NumberOfMapsInBank8=5
NumberOfMapsInBank9=7
NumberOfMapsInBank10=19
NumberOfMapsInBank11=9
NumberOfMapsInBank12=7
NumberOfMapsInBank13=1
NumberOfMapsInBank14=9
NumberOfMapsInBank15=3
NumberOfMapsInBank16=1
NumberOfMapsInBank17=1
NumberOfMapsInBank18=1
NumberOfMapsInBank19=0
NumberOfMapsInBank20=0
NumberOfMapsInBank21=1
NumberOfMapsInBank22=1
NumberOfMapsInBank23=2
NumberOfMapsInBank24=1
NumberOfMapsInBank25=2
NumberOfMapsInBank26=1
NumberOfMapsInBank27=0
NumberOfMapsInBank28=0
NumberOfMapsInBank29=0
NumberOfMapsInBank30=0
NumberOfMapsInBank31=6
NumberOfMapsInBank32=4
NumberOfMapsInBank33=4
NumberOfMapsInBank34=7
NumberOfMapsInBank35=7
NumberOfMapsInBank36=4
NumberOfMapsInBank37=4
NumberOfMapsInBank38=0
NumberOfMapsInBank39=0
NumberOfMapsInBank40=0
NumberOfMapsInBank41=1
NumberOfMapsInBank42=0
MapLabelData=3F1AE8
NumberOfMapLabels=109
PokemonFrontSprites=235088
PokemonBackSprites=236558
PokemonNormalPal=2372E8
PokemonShinyPal=2380A8
IconPointerTable=3D35DC
IconPalTable=3D3CBC
CryTable=48C1F0
FootPrintTable=43F8EC
PokemonAttackTable=25D794
PokemonEvolutions=259734
TMHMCompatibility=252BA4
TMHMLenPerPoke=8
MoveTutorCompatibility=459B9E
EnemyYTable=
PlayerYTable=
EnemyAltitudeTable=
AttackData=250BE0
AttackDescriptionTable=487FC4
AbilityDescriptionTable=
AttackAnimationTable=
JamboLearnableMovesTerm=0000FF
StartSearchingForSpaceOffset=800000
FreeSpaceSearchInterval=100
NumberOfEvolutionsPerPokemon=5
NumberOfEvolutionTypes=15
EvolutionName0=None
EvolutionName1=Happiness
EvolutionName2=Happiness (Day)
EvolutionName3=Happiness (Night)
EvolutionName4=Level
EvolutionName5=Trade
EvolutionName6=Trade w/ Item
EvolutionName7=Item
EvolutionName8=Atk > Def
EvolutionName9=Atk = Def
EvolutionName10=Atk < Def
EvolutionName11=High Personality
EvolutionName12=Low Personality
EvolutionName13=Allow Pokemon Creation
EvolutionName14=Create Extra Pokemon
EvolutionName15=Max Beauty
Evolution0Param=none
Evolution1Param=evolvesbutnoparms
Evolution2Param=evolvesbutnoparms
Evolution3Param=evolvesbutnoparms
Evolution4Param=level
Evolution5Param=evolvesbutnoparms
Evolution6Param=item
Evolution7Param=item
Evolution8Param=level
Evolution9Param=level
Evolution10Param=level
Evolution11Param=level
Evolution12Param=level
Evolution13Param=evolvesbutnoparms
Evolution14Param=level
Evolution15Param=evolvesbasedonvalue
EggMoveTable=0
HabitatTable=0
TrainerTable=23EACC
NumberOfTrainers=742
TrainerClasses=23E534
NumberOfTrainerClasses=6B
TrainerImageTable=239558
NumberOfTrainerImages=147
TrainerPaletteTable=2399F8
TrainerClassMoney=24F1FC
[BPEE]
ROMName=Pokémon Emerald (English)
ItemData=5839A0
AttackNames=31977C
TMData=616040
TotalTMsPlusHMs=58
TotalTMs=50
ItemIMGData=614410
NumberOfItems=377
NumberOfAttacks=354
MoveTutorAttacks=61500C
NumberOfMoveTutorAttacks=32
PokemonNames=f0c508
NumberOfPokemon=776
NationalDexTable=f23628
SecondDexTable=f24248
HoenntoNationalDex=f23c38
PokedexData=f0e660
NumberOfDexEntries=722
NumberOfRegionDex=301
PokemonData=f00000
AbilityNames=31B6DB
NumberOfAbilities=78
Pointer2PointersToMapBanks=84AA4
OriginalBankPointer0=485D60
OriginalBankPointer1=485E44
OriginalBankPointer2=485E58
OriginalBankPointer3=485E6C
OriginalBankPointer4=485E84
OriginalBankPointer5=485EA0
OriginalBankPointer6=485EC0
OriginalBankPointer7=485EE4
OriginalBankPointer8=485F00
OriginalBankPointer9=485F1C
OriginalBankPointer10=485F54
OriginalBankPointer11=485F74
OriginalBankPointer12=485FB8
OriginalBankPointer13=485FE0
OriginalBankPointer14=48603C
OriginalBankPointer15=486070
OriginalBankPointer16=4860AC
OriginalBankPointer17=4860E8
OriginalBankPointer18=4860F0
OriginalBankPointer19=4860F8
OriginalBankPointer20=486100
OriginalBankPointer21=48610C
OriginalBankPointer22=486110
OriginalBankPointer23=486114
OriginalBankPointer24=486118
OriginalBankPointer25=4862C8
OriginalBankPointer26=4863BC
OriginalBankPointer27=486520
OriginalBankPointer28=486528
OriginalBankPointer29=48652C
OriginalBankPointer30=486560
OriginalBankPointer31=486564
OriginalBankPointer32=486568
OriginalBankPointer33=486574
NumberOfMapsInBank0=56
NumberOfMapsInBank1=4
NumberOfMapsInBank2=4
NumberOfMapsInBank3=5
NumberOfMapsInBank4=6
NumberOfMapsInBank5=7
NumberOfMapsInBank6=8
NumberOfMapsInBank7=6
NumberOfMapsInBank8=6
NumberOfMapsInBank9=13
NumberOfMapsInBank10=7
NumberOfMapsInBank11=16
NumberOfMapsInBank12=9
NumberOfMapsInBank13=22
NumberOfMapsInBank14=12
NumberOfMapsInBank15=14
NumberOfMapsInBank16=14
NumberOfMapsInBank17=1
NumberOfMapsInBank18=1
NumberOfMapsInBank19=1
NumberOfMapsInBank20=2
NumberOfMapsInBank21=0
NumberOfMapsInBank22=0
NumberOfMapsInBank23=0
NumberOfMapsInBank24=107
NumberOfMapsInBank25=60
NumberOfMapsInBank26=88
NumberOfMapsInBank27=1
NumberOfMapsInBank28=0
NumberOfMapsInBank29=12
NumberOfMapsInBank30=0
NumberOfMapsInBank31=0
NumberOfMapsInBank32=2
NumberOfMapsInBank33=0
MapLabelData=5A1480
NumberOfMapLabels=213
PokemonFrontSprites=f054e0
PokemonBackSprites=f06d20
PokemonNormalPal=f08560
PokemonShinyPal=f09da0
PokemonAnimations=f054e0
IconPointerTable=f0b5e0
IconPalTable=f0c200
CryTable=f1e450
CryTable2=f208b0
CryConversionTable=f23018
FootPrintTable=f1d830
PokemonAttackTable=32937C
PokemonEvolutions=f140a0
TMHMCompatibility=31E898
TMHMLenPerPoke=8
MoveTutorCompatibility=615048
EnemyYTable=f1b9e0
PlayerYTable=f1c600
EnemyAltitudeTable=f22d10
AttackData=31C898
ContestMoveData=58C2B4
ContestMoveEffectData=58CDCC
AttackDescriptionTable=61C524
AbilityDescriptionTable=31BAD4
StarterPokemon=5B1DF8
StarterPokemonLevel=B1178
StarterEncounterPokemon=32706
StarterEncounterPokemonLevel=32714
AttackAnimationTable=2C8D6C
BattleFrontierTrainers=5D5ACC
SlateportBattleTentTrainers=5DDA14
VerdanturfBattleTentTrainers=5DE610
FallarborBattleTentTrainers=5DF084
NumberOfBattleFrontierTrainers=300
NumberOfSlateportBattleTentTrainers=30
NumberOfVerdanturfBattleTentTrainers=30
NumberOfFallarborBattleTentTrainers=30
BattleFrontierPokemon=5D97BC
SlateportBattleTentPokemon=5DE02C
VerdanturfBattleTentPokemon=5DEC28
FallarborBattleTentPokemon=5DF69C
NumberOfBattleFrontierPokemon=882
NumberOfSlateportBattleTentPokemon=70
NumberOfVerdanturfBattleTentPokemon=45
NumberOfFallarborBattleTentPokemon=45
BattleFrontierHeldItems=5CECB0
BattleFrontierBanList=611C9A
NumberOfBattlefrontierHeldItems=62
NumberOfTilesInTilset3DF71C=8F
NumberOfTilesInTilset3DF734=15D
NumberOfTilesInTilset3DF74C=17A
NumberOfTilesInTilset3DF764=197
NumberOfTilesInTilset3DF77C=1FF
NumberOfTilesInTilset3DF794=1B8
NumberOfTilesInTilset3DF7AC=16F
NumberOfTilesInTilset3DF7C4=117
NumberOfTilesInTilset3DF7DC=15F
NumberOfTilesInTilset3DF7F4=1C7
NumberOfTilesInTilset3DF80C=A7
NumberOfTilesInTilset3DF824=CA
NumberOfTilesInTilset3DF83C=FE
NumberOfTilesInTilset3DF86C=1FF
NumberOfTilesInTilset3DF884=C6
NumberOfTilesInTilset3DF89C=120
NumberOfTilesInTilset3DF8B4=E7
NumberOfTilesInTilset3DF8CC=19D
NumberOfTilesInTilset3DF8E4=39
NumberOfTilesInTilset3DF8FC=67
NumberOfTilesInTilset3DF914=65
NumberOfTilesInTilset3DF92C=9E
NumberOfTilesInTilset3DF944=79
NumberOfTilesInTilset3DF95C=FF
NumberOfTilesInTilset3DF974=37
NumberOfTilesInTilset3DF98C=47
NumberOfTilesInTilset3DF9A4=43
NumberOfTilesInTilset3DF9BC=1FF
NumberOfTilesInTilset3DF9D4=F7
NumberOfTilesInTilset3DF9EC=52
NumberOfTilesInTilset3DFA04=143
NumberOfTilesInTilset3DFA1C=143
NumberOfTilesInTilset3DFA34=143
NumberOfTilesInTilset3DFA4C=143
NumberOfTilesInTilset3DFA64=26
NumberOfTilesInTilset3DFA7C=3A
NumberOfTilesInTilset3DFA94=25
NumberOfTilesInTilset3DFAAC=8F
NumberOfTilesInTilset3DFAC4=E8
NumberOfTilesInTilset3DFADC=8E
NumberOfTilesInTilset3DFAF4=C3
NumberOfTilesInTilset3DFB0C=9D
NumberOfTilesInTilset3DFB24=EB
NumberOfTilesInTilset3DFB3C=DF
NumberOfTilesInTilset3DFB54=79
NumberOfTilesInTilset3DFB6C=1FF
NumberOfTilesInTilset3DFB84=5F
NumberOfTilesInTilset3DFB9C=52
NumberOfTilesInTilset3DFBB4=44
NumberOfTilesInTilset3DFBCC=95
NumberOfTilesInTilset3DFBE4=3C
NumberOfTilesInTilset3DFBFC=BC
NumberOfTilesInTilset3DFC14=47
NumberOfTilesInTilset3DFC2C=74
NumberOfTilesInTilset3DFC44=FB
NumberOfTilesInTilset3DFC7C=14B
NumberOfTilesInTilset3DFC94=1FF
NumberOfTilesInTilset3DFCAC=19E
NumberOfTilesInTilset3DFCC4=1AA
NumberOfTilesInTilset3DFCDC=15F
NumberOfTilesInTilset3DFCF4=15B
NumberOfTilesInTilset3DFD0C=B0
NumberOfTilesInTilset3DFD24=DC
NumberOfTilesInTilset3DFD3C=19D
NumberOfTilesInTilset3DFD54=34
NumberOfTilesInTilset3DFD6C=42
NumberOfTilesInTilset3DFD84=1CF
NumberOfTilesInTilset3DFD9C=1C2
NumberOfTilesInTilset3DFDB4=5D
NumberOfTilesInTilset3DFDCC=10C
NumberOfTilesInTilset3DFDE4=42
NumberOfTilesInTilset3DFDFC=30
IconPals=DDE1F8
ShadowFronts=1000000
ShadowPals=1002660
ShadowBacks=1007320
JamboLearnableMovesTerm=0000FF
StartSearchingForSpaceOffset=E3CF64
FreeSpaceSearchInterval=100
NumberOfEvolutionsPerPokemon=5
NumberOfEvolutionTypes=15
EvolutionName0=None
EvolutionName1=Happiness
EvolutionName2=Happiness (Day)
EvolutionName3=Happiness (Night)
EvolutionName4=Level
EvolutionName5=Trade
EvolutionName6=Trade w/ Item
EvolutionName7=Item
EvolutionName8=Atk > Def
EvolutionName9=Atk = Def
EvolutionName10=Atk < Def
EvolutionName11=High Personality
EvolutionName12=Low Personality
EvolutionName13=Allow Pokemon Creation
EvolutionName14=Create Extra Pokemon
EvolutionName15=Max Beauty
Evolution0Param=none
Evolution1Param=evolvesbutnoparms
Evolution2Param=evolvesbutnoparms
Evolution3Param=evolvesbutnoparms
Evolution4Param=level
Evolution5Param=evolvesbutnoparms
Evolution6Param=item
Evolution7Param=item
Evolution8Param=level
Evolution9Param=level
Evolution10Param=level
Evolution11Param=level
Evolution12Param=level
Evolution13Param=evolvesbutnoparms
Evolution14Param=level
Evolution15Param=evolvesbasedonvalue
EggMoveTable=32ADD8
EggMoveTableLimiter=70464
TrainerTable=310058
NumberOfTrainers=854
TrainerClasses=30FCD4
NumberOfTrainerClasses=66
TrainerImageTable=305654
NumberOfTrainerImages=92
TrainerPaletteTable=30593C
DexSizeTrainerSprite=71
TradeData=338ED0
NumberOfTrades=4
PokedexAlphabetTable=F2648C
PokedexLightestTable=F26A30
PokedexSmallestTable=F26FD4
PokedexTypeTable=0
[AXVF]
ROMName=Pokémon Rubis (Français)
ItemData=3CCFC4
AttackNames=200728
TMData=37D168
NumberOfItems=349
NumberOfAttacks=354
PokemonNames=1FF574
NumberOfPokemon=412
NationalDexTable=204962
SecondDexTable=20462C
PokedexData=
NumberOfDexEntries=387
[AXPF]
ROMName=Pokémon Saphir (Français)
ItemData=3CCAF4
AttackNames=2006B8
TMData=37D0F8
NumberOfItems=349
NumberOfAttacks=354
PokemonNames=1FF504
NumberOfPokemon=412
NationalDexTable=2048F2
SecondDexTable=2045BC
PokedexData=
NumberOfDexEntries=387
[BPEF]
ROMName=Pokémon Emeraude (Français)
ItemData=587D6C
AttackNames=3212AC
TMData=61A3C8
ItemIMGData=618798
NumberOfItems=377
NumberOfAttacks=354
MoveTutorAttacks=619394
PokemonNames=3200F8
NumberOfPokemon=412
NationalDexTable=3257F2
SecondDexTable=3254BC
PokedexData=
NumberOfDexEntries=387
[BPRF]
ROMName=Pokémon Rouge Feu (Français)
ItemData=3D3324
AttackNames=2414A0
TMData=453BA8
ItemIMGData=3CE114
NumberOfItems=375
NumberOfAttacks=354
MoveTutorAttacks=453164
PokemonNames=2402EC
NumberOfPokemon=412
NationalDexTable=24C43E
SecondDexTable=24C108
PokedexData=
NumberOfDexEntries=387
[BPGF]
ROMName=Pokémon Vert Feuille (Français)
ItemData=3D3160
AttackNames=24147C
TMData=452968
ItemIMGData=3CDF50
NumberOfItems=375
NumberOfAttacks=354
MoveTutorAttacks=451F24
PokemonNames=2402C8
NumberOfPokemon=412
NationalDexTable=24C41A
SecondDexTable=24C0E4
PokedexData=
NumberOfDexEntries=387
[AXVI]
ROMName=Pokémon Rubino (Italiano)
ItemData=3C5FF8
AttackNames=1F9FBC
TMData=3769F4
NumberOfItems=349
NumberOfAttacks=354
PokemonNames=1F8E08
NumberOfPokemon=412
NationalDexTable=
SecondDexTable=
PokedexData=
NumberOfDexEntries=387
[AXPI]
ROMName=Pokémon Zaffiro (Italiano)
ItemData=3C5C9C
AttackNames=1F9F4C
TMData=376984
NumberOfItems=349
NumberOfAttacks=354
PokemonNames=1F8D98
NumberOfPokemon=412
NationalDexTable=
SecondDexTable=
PokedexData=
NumberOfDexEntries=387
[BPEI]
ROMName=Pokémon Smeraldo (Italiano)
ItemData=58000C
AttackNames=319140
TMData=612BDC
ItemIMGData=610FAC
NumberOfItems=377
NumberOfAttacks=354
MoveTutorAttacks=611BA8
PokemonNames=317F8C
NumberOfPokemon=412
NationalDexTable=
SecondDexTable=
PokedexData=
NumberOfDexEntries=387
[BPRI]
ROMName=Pokémon Rosso Fuoco (Italiano)
ItemData=3D1EE8
AttackNames=240138
TMData=4517E8
ItemIMGData=3CCDA4
NumberOfItems=375
NumberOfAttacks=354
MoveTutorAttacks=450B3C
PokemonNames=23EF84
NumberOfPokemon=412
NationalDexTable=
SecondDexTable=
PokedexData=
NumberOfDexEntries=387
[BPGI]
ROMName=Pokémon Verde Foglia (Italiano)
ItemData=3D1D24
AttackNames=240114
TMData=451018
ItemIMGData=3CCBE0
NumberOfItems=375
NumberOfAttacks=354
MoveTutorAttacks=45036C
PokemonNames=23EF60
NumberOfPokemon=412
NationalDexTable=
SecondDexTable=
PokedexData=
NumberOfDexEntries=387
[AXVS]
ROMName=Pokémon Rubi (Español)
ItemData=3C8FFC
AttackNames=1FD040
TMData=379A9C
NumberOfItems=349
NumberOfAttacks=354
PokemonNames=1FBE8C
NumberOfPokemon=412
NationalDexTable=
SecondDexTable=
PokedexData=
NumberOfDexEntries=387
[AXPS]
ROMName=Pokémon Zafiro (Español)
ItemData=3C8D38
AttackNames=1FCFD0
TMData=379A2C
NumberOfItems=349
NumberOfAttacks=354
PokemonNames=1FBE1C
NumberOfPokemon=412
NationalDexTable=
SecondDexTable=
PokedexData=
NumberOfDexEntries=387
[BPES]
ROMName=Pokémon Esmeralda (Español)
ItemData=58639C
AttackNames=31F9E0
TMData=618E80
ItemIMGData=617250
NumberOfItems=377
NumberOfAttacks=354
MoveTutorAttacks=617E4C
PokemonNames=31E82C
NumberOfPokemon=412
NationalDexTable=
SecondDexTable=
PokedexData=
NumberOfDexEntries=387
[BPRS]
ROMName=Pokémon Rojo Fuego (Español)
ItemData=3D4F50
AttackNames=242800
TMData=454E84
ItemIMGData=3CF48C
NumberOfItems=375
NumberOfAttacks=354
MoveTutorAttacks=4541D8
PokemonNames=24164C
NumberOfPokemon=412
NationalDexTable=
SecondDexTable=
PokedexData=
NumberOfDexEntries=387
[BPGS]
ROMName=Pokémon Verde Hoja (Español)
ItemData=3D4D8C
AttackNames=2427DC
TMData=454614
ItemIMGData=3CF2C8
NumberOfItems=375
NumberOfAttacks=354
MoveTutorAttacks=453968
PokemonNames=241628
NumberOfPokemon=412
NationalDexTable=
SecondDexTable=
PokedexData=
NumberOfDexEntries=387
[AXVJ]
ROMName=
ItemData=
AttackNames=
TMData=
NumberOfItems =349
NumberOfAttacks=354
PokemonNames=1CA354
NumberOfPokemon=412
NationalDexTable=
SecondDexTable=
PokedexData=
NumberOfDexEntries=387
[AXPJ]
ROMName=
ItemData=
AttackNames=
TMData=
NumberOfItems=349
NumberOfAttacks=354
PokemonNames=
NumberOfPokemon=412
NationalDexTable=
SecondDexTable=
PokedexData=
NumberOfDexEntries=387
[BPEJ]
ROMName=
ItemData=
AttackNames=
TMData=
ItemIMGData=
NumberOfItems=377
NumberOfAttacks=354
MoveTutorAttacks=
PokemonNames=
NumberOfPokemon=412
NationalDexTable=
SecondDexTable=
PokedexData=
NumberOfDexEntries=387
[BPRJ]
ROMName=
ItemData=
AttackNames=
TMData=
ItemIMGData=
NumberOfItems=375
NumberOfAttacks=354
MoveTutorAttacks=
PokemonNames=
NumberOfPokemon=412
NationalDexTable=
SecondDexTable=
PokedexData=
NumberOfDexEntries=387
[BPGJ]
ROMName=
ItemData=
AttackNames=
TMData=
ItemIMGData=
NumberOfItems=375
NumberOfAttacks=354
MoveTutorAttacks=
PokemonNames=
NumberOfPokemon=412
NationalDexTable=
SecondDexTable=
PokedexData=
NumberOfDexEntries=387
Followed by my expansion.py
Spoiler:#!/usr/bin/env python3
import os
import sys
import shutil
#if you didn't expand pokemon before, do not touch those values
expanding_again = False
old_pokes = 412
evos_per_entry = 5
##################################################################
#those values should be configured according to user
build_code = True #set to False if you want this script to only replace tables and to not run build/insert scripts
free_space = 0xF00000 #location to start looking for free space
new_pokes = 335 + 441 #X is the number of pokemon you're adding, ignore that 441, it's for all limbo slots; say you want to include gen 4, 5 and 6 that gives 335
dex_pokes = 721 #amount of pokes you want to have in national dex; max you can currently go is 999
hoenn_dex_pokes = 300 #amount of pokes in the regional hoenn dex
clear_repointed_data = True #if True clears old tables, if False doesn't touch them
Movesets_repoint = False #set to False if you don't want to repoint learnset table, (if you're using Emerald's battle upgrade set to False)
TmHmComp_repoint = False #set to False if you don't want to repoint tm/hm comp tables; for example: you expanded tms
MoveTutorComp_repoint = False #same as above but movetutor table
##################################################################
rom_name = 'rom.gba'
new_rom_name = 'test.gba'
offset_file = 'offsets.ini'
table_names = ["base_stats", "poke_front_img", "poke_back_img", "poke_sprite_pal", "shiny_sprite_pal", "icon_img", "icon_pal", "poke_names", "tm_hm_comp_table", "move_tutor_table", "dex_table", "evo_table", "enymyyTable", "playeryTable", "learnset_table", "front_animation_table", "anim_delay_table", "footprint_table", "crytable1", "crytable2", "altitude_table", "auxialary_cry_table", "nationaldex_table", "hoenn_to_national_table", "hoenn_dex_table", "back_anim_table", "frame_control_table"]
table_ptrs = [0x0001BC, 0x000128, 0x00012C, 0x000130, 0x000134, 0x000138, 0x00013C, 0x000144, 0x06E060, 0x1B2390, 0x0BFA20, 0x06D140, 0x0A5F54, 0x0A5EBC, 0x06E3B4, 0x06EE7C, 0x06EDDC, 0x0C0DBC, 0x0A35EC, 0x0A35DC, 0x0A5FF4, 0x06D534, 0x06D4BC, 0x06D494, 0x06D3FC, 0x17F488, 0x05E7BC]
sizeofs = [0x1C, 8, 8, 8, 8, 4, 1, 11, 8, 4, 0x20, evos_per_entry * 8, 4, 4, 4, 1, 1, 4, 0xC, 0xC, 1, 2, 2, 2, 2, 1, 4]
to_repoint = [True, True, True, True, True, True, True, True, TmHmComp_repoint, MoveTutorComp_repoint, True, True, True, True, Movesets_repoint, True, True, True, True, True, True, True, True, True, True, True, True]
no_of_names = len(table_names)
no_of_tables = len(table_ptrs)
no_of_sizeofs = len(sizeofs)
no_of_to_repoints = len(to_repoint)
def align_offset(offset):
while (offset % 4) != 0:
offset += 1
return offset
def find_offset_to_put(rom, needed_bytes, start_loc):
offset = start_loc
found_bytes = 0
while (found_bytes < needed_bytes):
for i in range (0, needed_bytes):
rom.seek(offset + i)
byte = rom.read(1)
if (byte):
if (byte != b'\xFF'):
offset += i + 1
align_offset(offset)
found_bytes = 0
break
found_bytes += 1
else:
return 0
return offset
def get_oldtable_address(rom, tableID):
if (tableID < no_of_tables):
ptr = table_ptrs[tableID]
rom.seek(ptr)
table_ptr = rom.read(4)
return int.from_bytes(table_ptr, byteorder = 'little') - 0x08000000
return 0
def update_ptrs(rom, ptr, tableID):
name = table_names[tableID]
if name == "base_stats":
rom.seek(0x06EB7C) #item 1
rom.write((ptr + 0xC).to_bytes(4, byteorder = 'little'))
rom.seek(0x06EBA0) #item 2
rom.write((ptr + 0xE).to_bytes(4, byteorder = 'little'))
elif name == "poke_names":
rom.seek(0x06B944)
rom.write((0x0).to_bytes(6, byteorder = 'little'))
elif name == "crytable1":
rom.seek(0x0A3610)
rom.write((ptr + 0x600).to_bytes(4, byteorder = 'little'))
rom.seek(0x0A3634)
rom.write((ptr + 0xC00).to_bytes(4, byteorder = 'little'))
rom.seek(0x0A3670)
rom.write((ptr + 0x1200).to_bytes(4, byteorder = 'little'))
elif name == "crytable2":
rom.seek(0x0A3600)
rom.write((ptr + 0x600).to_bytes(4, byteorder = 'little'))
rom.seek(0x0A3624)
rom.write((ptr + 0xC00).to_bytes(4, byteorder = 'little'))
rom.seek(0x0A3648)
rom.write((ptr + 0x1200).to_bytes(4, byteorder = 'little'))
elif name == "anim_delay_table":
rom.seek(0x034BFE)
rom.write((0xE007).to_bytes(2, byteorder = 'little'))
rom.seek(0x0A5FE)
rom.write((0xE003).to_bytes(2, byteorder = 'little'))
elif name == "altitude_table":
rom.seek(0x0A5F82)
rom.write((0xE003).to_bytes(2, byteorder = 'little'))
rom.seek(0x0A5EB6)
rom.write((0xE003).to_bytes(2, byteorder = 'little'))
elif name == "shiny_sprite_pal":
rom.seek(0x06E750)
rom.write((0xE004).to_bytes(2, byteorder = 'little'))
elif name == "poke_back_img":
rom.seek(0x0346D6)
rom.write((0xE007).to_bytes(2, byteorder = 'little'))
rom.seek(0x034AC2)
rom.write((0xE007).to_bytes(2, byteorder = 'little'))
elif name == "poke_front_img":
rom.seek(0x034BFE)
rom.write((0xE007).to_bytes(2, byteorder = 'little'))
rom.seek(0x034AC2)
rom.write((0xE007).to_bytes(2, byteorder = 'little'))
rom.seek(0x0345FE)
rom.write((0xE007).to_bytes(2, byteorder = 'little'))
rom.seek(0x0346D6)
rom.write((0xE007).to_bytes(2, byteorder = 'little'))
rom.seek(0x034A16)
rom.write((0xE007).to_bytes(2, byteorder = 'little'))
rom.seek(0x034B32)
rom.write((0xE007).to_bytes(2, byteorder = 'little'))
rom.seek(0x0DE860)
rom.write((new_pokes).to_bytes(4, byteorder = 'little'))
elif name == "icon_pal":
rom.seek(0x0D2E3A)
rom.write((0xE001).to_bytes(2, byteorder = 'little'))
rom.seek(0x0D2D20)
rom.write((0x0).to_bytes(4, byteorder = 'little'))
elif name == "nationaldex_table":
offset = ptr - 0x08000000
for i in range(0, 386):
rom.seek(offset)
dex_no = int.from_bytes(rom.read(2), byteorder = 'little')
if (dex_no > 386):
rom.seek(offset)
rom.write((0x0).to_bytes(2, byteorder = 'little'))
offset += 2
oldptr = (get_oldtable_address(rom, tableID) + 0x08000000).to_bytes(4, byteorder = 'little')
newptr = ptr.to_bytes(4, byteorder = 'little')
rom.seek(0x0)
copy = rom.read(0x1E8000)
copy = copy.replace(oldptr, newptr)
rom.seek(0x0)
rom.write(copy)
def get_no_of_old_slots(tableID):
if expanding_again == False:
name = table_names[tableID]
if name == "poke_back_img" or name == "poke_front_img" or name == "shiny_sprite_pal" or name == "poke_sprite_pal" or name == "icon_img" or name == "icon_pal" or name == "enemyyTable" or name == "playeryTable" or name == "frame_control_table":
return 440
elif name == "dex_table":
return 387
elif name == "front_animation_table" or name == "anim_delay_table" or name == "nationaldex_table" or name == "hoenn_dex_table" or name == "hoenn_to_national_table":
return old_pokes - 1
elif name == "crytable1" or name == "crytable2":
return 388
elif name == "auxialary_cry_table":
return 136
return old_pokes
def save_table_ptrs(name, offset, not_clear):
ini = open(offset_file, 'a')
if not_clear == 0:
ini.seek(0x0)
ini.truncate()
ini.write("AllPokes: ")
ini.write(str(new_pokes) + "\n")
ini.write("NationalDexPokes: ")
ini.write(str(dex_pokes) + "\n")
ini.write("RegionalDexPokes: ")
ini.write(str(hoenn_dex_pokes) + "\n")
ini.write(name)
ini.write(": ")
ini.write(hex(offset))
ini.write("\n")
ini.close()
def clear_space(rom, loc, bytes):
if (clear_repointed_data == True):
rom.seek(loc)
for i in range(0, bytes):
rom.write(b'\xFF')
def repoint_table(rom, offset, tableID):
table_ptr = get_oldtable_address(rom, tableID)
name = table_names[tableID]
if table_ptr:
sizeof = sizeofs[tableID]
old_slots = get_no_of_old_slots(tableID)
needed_old = old_slots * sizeof
needed_new = (new_pokes - old_slots) * sizeof
#get empty slot to copy
rom.seek(table_ptr + sizeof)
empty_slot = rom.read(sizeof)
# copy old data
rom.seek(table_ptr)
to_copy = rom.read(needed_old)
#align 4
offset = align_offset(offset)
rom.seek(offset)
rom.write(to_copy)
clear_space(rom, table_ptr, needed_old)
update_ptrs(rom, offset + 0x08000000, tableID)
save_table_ptrs(name, offset, tableID)
offset += needed_old
rom.seek(offset)
#append unowns
if old_slots < 440 and name != "dex_table":
for i in range(old_slots, 440):
if (name == "poke_names"):
if i == old_slots:
eggname = [0xBF, 0xC1, 0xC1, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
for i2 in range (0, sizeof):
rom.write(eggname[i2].to_bytes(1, byteorder = 'little'))
else:
pokename = [0xCF, 0xC8, 0xC9, 0xD1, 0xC8, 0x00]
for i2 in range(0, len(pokename)):
rom.write(pokename[i2].to_bytes(1, byteorder = 'little'))
num = 0xBB + (i - old_slots)
if num == 0xD5:
num = 0xAB
elif num == 0xD6:
num = 0xAC
rom.write((num).to_bytes(1, byteorder = 'little'))
rom.write((0xFF000000).to_bytes(4, byteorder = 'big'))
elif name == "nationaldex_table":
if i == 439:
rom.write((387).to_bytes(sizeof, byteorder = 'little'))
else:
rom.write((0x0).to_bytes(sizeof, byteorder = 'little'))
else:
rom.write(empty_slot)
offset += sizeof
# write new data for empty slots
to_loop = new_pokes - 440
if (name == "dex_table"):
to_loop = dex_pokes - (old_slots - 1)
for i in range(0, to_loop):
if name == "hoenn_dex_table" or name == "hoenn_to_national_table":
rom.write((440 + i).to_bytes(sizeof, byteorder = 'little'))
elif name == "nationaldex_table":
rom.write((388 + i).to_bytes(sizeof, byteorder = 'little'))
else:
rom.write(empty_slot)
offset += sizeof
return offset
def dex_related_bytechanges(rom):
max_pokes = (dex_pokes - 1).to_bytes(4, byteorder = 'little')
rom.seek(0x0C080C)
rom.write(max_pokes)
clear_space(rom, 0x55C6A4, 411 * 2 + 386 * 2 + 387 * 2) #clear A-to-z, lightest, smallest tables
def replace_word(file, to_search, replacement):
get = 0
break_loop = 0
to_replace = to_search + " "
file.seek(0x0)
for line in file:
if (break_loop == 1):
break
for word in line.split():
if (word == to_search):
get = 1
elif (get == 1):
to_replace += word
break_loop = 1
break
file.seek(0x0)
copy = file.read()
copy = copy.replace(to_replace, to_search + " " + replacement)
file.seek(0x0)
file.write(copy)
def build_and_insert_code(offset, only_build):
linker = open("linker.ld", 'r+')
replace_word(linker, '+', hex(offset) + "),")
linker.close()
os.system("python scripts//build")
c_define = open("src//defines.h", 'r+')
replace_word(c_define, "DEX_POKES", str(dex_pokes))
replace_word(c_define, "HOENN_DEX_POKES", str(hoenn_dex_pokes))
c_define.close()
asm_define = open("src//hooks.s", 'r+')
replace_word(asm_define, "DEX_POKES,", str(dex_pokes))
asm_define.close()
if (only_build == True):
return
insert = open("scripts//insert", 'r+')
replace_word(insert, "at',", "default=" + hex(offset) + ')')
insert.close()
os.system("python scripts//insert --debug >function_offsets.ini")
shutil.copyfile(rom_name, new_rom_name)
with open(new_rom_name, 'rb+') as rom:
if (no_of_sizeofs != no_of_tables or no_of_sizeofs != no_of_to_repoints or no_of_names != no_of_sizeofs):
print("Tables don't match.")
print(no_of_names, " ", no_of_sizeofs, " ", no_of_tables, " ", no_of_to_repoints)
sys.exit(1)
if (new_pokes <= 440):
print("Amount of new pokemon must be higher than the current one.")
sys.exit(1)
if expanding_again == True and old_pokes <= 440:
print("When expanding again amount of old pokemon must be higher than 440")
sys.exit(1)
needed_bytes = 0x0
for i in range(0, no_of_tables):
if (to_repoint == True):
needed_bytes += (new_pokes * sizeofs)
needed_bytes = align_offset(needed_bytes)
offset = find_offset_to_put(rom, needed_bytes, free_space)
if (offset == 0):
print("Not enough free space.")
sys.exit(1)
for i in range(0, no_of_tables):
if (to_repoint == True):
offset = repoint_table(rom, offset, i)
dex_related_bytechanges(rom)
if build_code == True and expanding_again == False:
build_and_insert_code(offset, True)
needed_bytes = os.stat("build//output.bin")
offset = find_offset_to_put(rom, needed_bytes.st_size, offset)
if offset != 0:
build_and_insert_code(offset, False)
else:
print ("Not enough free space to insert code")
rom.close()
I've managed to deduce (not that it's hard to test :P) that something between pre-patch and post-patch is causing this error to occur, but I have no idea what it would be. I've played around with all the true/false settings in expansion.py and the end result does not change. I have not yet applied EBEU or the Items/TMs/Move Tutor expansion but have plans to.
After using this on a clean Emerald ROM, opening it and going to anything past Chimecho in the Pokemon Editor in PGE causes this to happen:
Spoiler:![]()
If needed, here is my test.ini
Spoiler:[AXVE]
ROMName=Pokémon Ruby (English)
ItemData=3C5564
AttackNames=1F8320
TMData=376504
TotalTMsPlusHMs=58
TotalTMs=50
NumberOfItems=349
NumberOfAttacks=354
PokemonNames=1F716C
NumberOfPokemon=412
NationalDexTable=1FC516
SecondDexTable=1FC1E0
PokedexData=3B1858
NumberOfDexEntries=387
PokemonData=1FEC18
AbilityNames=1FA248
NumberOfAbilities=78
Pointer2PointersToMapBanks=53324
OriginalBankPointer0=307F60
OriginalBankPointer1=308038
OriginalBankPointer2=30804C
OriginalBankPointer3=308060
OriginalBankPointer4=308078
OriginalBankPointer5=308094
OriginalBankPointer6=3080B0
OriginalBankPointer7=3080D0
OriginalBankPointer8=3080EC
OriginalBankPointer9=308108
OriginalBankPointer10=30813C
OriginalBankPointer11=30815C
OriginalBankPointer12=3081A0
OriginalBankPointer13=3081C8
OriginalBankPointer14=308228
OriginalBankPointer15=30825C
OriginalBankPointer16=308290
OriginalBankPointer17=3082C8
OriginalBankPointer18=3082D0
OriginalBankPointer19=3082D8
OriginalBankPointer20=3082E0
OriginalBankPointer21=3082EC
OriginalBankPointer22=3082F0
OriginalBankPointer23=3082F4
OriginalBankPointer24=3082F8
OriginalBankPointer25=308450
OriginalBankPointer26=308500
OriginalBankPointer27=308530
OriginalBankPointer28=308538
OriginalBankPointer29=30853C
OriginalBankPointer30=308570
OriginalBankPointer31=308574
OriginalBankPointer32=308578
OriginalBankPointer33=308584
NumberOfMapsInBank0=53
NumberOfMapsInBank1=4
NumberOfMapsInBank2=4
NumberOfMapsInBank3=5
NumberOfMapsInBank4=6
NumberOfMapsInBank5=6
NumberOfMapsInBank6=7
NumberOfMapsInBank7=6
NumberOfMapsInBank8=6
NumberOfMapsInBank9=12
NumberOfMapsInBank10=7
NumberOfMapsInBank11=16
NumberOfMapsInBank12=9
NumberOfMapsInBank13=23
NumberOfMapsInBank14=12
NumberOfMapsInBank15=12
NumberOfMapsInBank16=13
NumberOfMapsInBank17=1
NumberOfMapsInBank18=1
NumberOfMapsInBank19=1
NumberOfMapsInBank20=2
NumberOfMapsInBank21=0
NumberOfMapsInBank22=0
NumberOfMapsInBank23=0
NumberOfMapsInBank24=85
NumberOfMapsInBank25=43
NumberOfMapsInBank26=11
NumberOfMapsInBank27=1
NumberOfMapsInBank28=0
NumberOfMapsInBank29=12
NumberOfMapsInBank30=0
NumberOfMapsInBank31=0
NumberOfMapsInBank32=2
NumberOfMapsInBank33=0
MapLabelData=3E73C8
NumberOfMapLabels=88
PokemonFrontSprites=1E8354
PokemonBackSprites=1E97F4
PokemonNormalPal=1EA5B4
PokemonShinyPal=1EB374
IconPointerTable=3BBD20
IconPalTable=3BC400
CryTable=452590
CryTable2=4537C0
FootPrintTable=3B4EE4
PokemonAttackTable=207BC8
PokemonEvolutions=203B68
TMHMCompatibility=1FD0F0
TMHMLenPerPoke=8
EnemyYTable=1E7C74
PlayerYTable=1E9114
EnemyAltitudeTable=1ECB14
AttackData=1FB12C
ContestMoveData=3CF594
ContestMoveEffectData=3D00AC
AttackDescriptionTable=3C09D8
AbilityDescriptionTable=
StarterPokemon=3F76C4
StarterPokemonLevel=821A8
StarterEncounterPokemon=B8EC
StarterEncounterPokemonLevel=B8FA
AttackAnimationTable=
NumberOfTilesInTilset286D0C=90
NumberOfTilesInTilset286D24=15D
NumberOfTilesInTilset286D3C=90
NumberOfTilesInTilset286D54=16C
NumberOfTilesInTilset286D6C=1B2
NumberOfTilesInTilset286D84=11E
NumberOfTilesInTilset286D9C=152
NumberOfTilesInTilset286DB4=10B
NumberOfTilesInTilset286DCC=15F
NumberOfTilesInTilset286DE4=16B
NumberOfTilesInTilset286DFC=A8
NumberOfTilesInTilset286E14=BF
NumberOfTilesInTilset286E2C=FE
NumberOfTilesInTilset286E44=118
NumberOfTilesInTilset286E5C=C6
NumberOfTilesInTilset286E74=19E
NumberOfTilesInTilset286E8C=3A
NumberOfTilesInTilset286EA4=68
NumberOfTilesInTilset286EBC=01
NumberOfTilesInTilset286ED4=9F
NumberOfTilesInTilset286EEC=65
NumberOfTilesInTilset286F04=100
NumberOfTilesInTilset286F1C=87
NumberOfTilesInTilset286F34=48
NumberOfTilesInTilset286F4C=44
NumberOfTilesInTilset286F64=1FE
NumberOfTilesInTilset286F7C=F8
NumberOfTilesInTilset286F94=53
NumberOfTilesInTilset286FAC=144
NumberOfTilesInTilset286FC4=144
NumberOfTilesInTilset286FDC=144
NumberOfTilesInTilset286FF4=144
NumberOfTilesInTilset28700C=144
NumberOfTilesInTilset287024=144
NumberOfTilesInTilset28703C=26
NumberOfTilesInTilset287054=3A
NumberOfTilesInTilset28706C=E0
NumberOfTilesInTilset287084=8F
NumberOfTilesInTilset28709C=AB
NumberOfTilesInTilset2870B4=9A
NumberOfTilesInTilset2870CC=EC
NumberOfTilesInTilset2870E4=8C
NumberOfTilesInTilset2870FC=63
NumberOfTilesInTilset287114=60
NumberOfTilesInTilset28712C=38
NumberOfTilesInTilset287144=3D
NumberOfTilesInTilset28715C=52
NumberOfTilesInTilset287174=2A
NumberOfTilesInTilset28718C=95
NumberOfTilesInTilset2871A4=35
NumberOfTilesInTilset2871BC=49
NumberOfTilesInTilset2871D4=FC
NumberOfTilesInTilset2871EC=14B
NumberOfTilesInTilset287204=83
IconPals=E966D8
JamboLearnableMovesTerm=0000FF
StartSearchingForSpaceOffset=800000
FreeSpaceSearchInterval=100
NumberOfEvolutionsPerPokemon=5
NumberOfEvolutionTypes=15
EvolutionName0=None
EvolutionName1=Happiness
EvolutionName2=Happiness (Day)
EvolutionName3=Happiness (Night)
EvolutionName4=Level
EvolutionName5=Trade
EvolutionName6=Trade w/ Item
EvolutionName7=Item
EvolutionName8=Atk > Def
EvolutionName9=Atk = Def
EvolutionName10=Atk < Def
EvolutionName11=High Personality
EvolutionName12=Low Personality
EvolutionName13=Allow Pokemon Creation
EvolutionName14=Create Extra Pokemon
EvolutionName15=Max Beauty
Evolution0Param=none
Evolution1Param=evolvesbutnoparms
Evolution2Param=evolvesbutnoparms
Evolution3Param=evolvesbutnoparms
Evolution4Param=level
Evolution5Param=evolvesbutnoparms
Evolution6Param=item
Evolution7Param=item
Evolution8Param=level
Evolution9Param=level
Evolution10Param=level
Evolution11Param=level
Evolution12Param=level
Evolution13Param=evolvesbutnoparms
Evolution14Param=level
Evolution15Param=evolvesbasedonvalue
MoveTutorAttacks=0
CryConversionTable=1FDE6A
MoveTutorCompatibility=0
EggMoveTable=0
EggMoveTableLimiter=41BB8
TrainerTable=1F0524
NumberOfTrainers=693
TrainerClasses=1F0208
NumberOfTrainerClasses=58
TrainerImageTable=1EC53C
NumberOfTrainerImages=82
TrainerPaletteTable=1EC7D4
DexSizeTrainerSprite=0
TradeData=215AC4
NumberOfTrades=3
[AXPE]
ROMName=Pokémon Sapphire (English)
ItemData=3C55BC
AttackNames=1F82B0
TMData=376494
TotalTMsPlusHMs=58
TotalTMs=50
NumberOfItems=349
NumberOfAttacks=354
PokemonNames=1F70FC
NumberOfPokemon=412
NationalDexTable=1FC4A6
SecondDexTable=1FC170
PokedexData=3B18B0
NumberOfDexEntries=387
PokemonData=1FEBA8
AbilityNames=1FA1D8
NumberOfAbilities=78
Pointer2PointersToMapBanks=53324
OriginalBankPointer0=307EF0
OriginalBankPointer1=307FC8
OriginalBankPointer2=307FDC
OriginalBankPointer3=307FF0
OriginalBankPointer4=308008
OriginalBankPointer5=308024
OriginalBankPointer6=308040
OriginalBankPointer7=308060
OriginalBankPointer8=30807C
OriginalBankPointer9=308098
OriginalBankPointer10=3080CC
OriginalBankPointer11=3080EC
OriginalBankPointer12=308130
OriginalBankPointer13=308158
OriginalBankPointer14=3081B8
OriginalBankPointer15=3081EC
OriginalBankPointer16=308220
OriginalBankPointer17=308258
OriginalBankPointer18=308260
OriginalBankPointer19=308268
OriginalBankPointer20=308270
OriginalBankPointer21=30827C
OriginalBankPointer22=308280
OriginalBankPointer23=308284
OriginalBankPointer24=308288
OriginalBankPointer25=3083E0
OriginalBankPointer26=308490
OriginalBankPointer27=3084C0
OriginalBankPointer28=3084C8
OriginalBankPointer29=3084CC
OriginalBankPointer30=308500
OriginalBankPointer31=308540
OriginalBankPointer32=308508
OriginalBankPointer33=308514
NumberOfMapsInBank0=53
NumberOfMapsInBank1=4
NumberOfMapsInBank2=4
NumberOfMapsInBank3=5
NumberOfMapsInBank4=6
NumberOfMapsInBank5=6
NumberOfMapsInBank6=7
NumberOfMapsInBank7=6
NumberOfMapsInBank8=6
NumberOfMapsInBank9=12
NumberOfMapsInBank10=7
NumberOfMapsInBank11=16
NumberOfMapsInBank12=9
NumberOfMapsInBank13=23
NumberOfMapsInBank14=12
NumberOfMapsInBank15=12
NumberOfMapsInBank16=13
NumberOfMapsInBank17=1
NumberOfMapsInBank18=1
NumberOfMapsInBank19=1
NumberOfMapsInBank20=2
NumberOfMapsInBank21=0
NumberOfMapsInBank22=0
NumberOfMapsInBank23=0
NumberOfMapsInBank24=85
NumberOfMapsInBank25=43
NumberOfMapsInBank26=11
NumberOfMapsInBank27=1
NumberOfMapsInBank28=0
NumberOfMapsInBank29=12
NumberOfMapsInBank30=0
NumberOfMapsInBank31=0
NumberOfMapsInBank32=2
NumberOfMapsInBank33=0
MapLabelData=3E7420
NumberOfMapLabels=88
PokemonFrontSprites=1E82E4
PokemonBackSprites=1E9784
PokemonNormalPal=1EA544
PokemonShinyPal=1EB304
IconPointerTable=3BBD78
IconPalTable=3BC458
CryTable=4525EC
FootPrintTable=3B4F3C
PokemonAttackTable=207B58
PokemonEvolutions=203AF8
TMHMCompatibility=1FD080
TMHMLenPerPoke=8
EnemyYTable=
PlayerYTable=
EnemyAltitudeTable=
AttackData=1FB0BC
ContestMoveData=3CF5EC
ContestMoveEffectData=3D0104
AttackDescriptionTable=3C0A30
AbilityDescriptionTable=
StarterPokemon=3F771C
StarterPokemonLevel=821A8
StarterEncounterPokemon=B8EC
StarterEncounterPokemonLevel=B8FA
AttackAnimationTable=
IconPals=E966D8
JamboLearnableMovesTerm=0000FF
StartSearchingForSpaceOffset=800000
FreeSpaceSearchInterval=100
NumberOfEvolutionsPerPokemon=5
NumberOfEvolutionTypes=15
EvolutionName0=None
EvolutionName1=Happiness
EvolutionName2=Happiness (Day)
EvolutionName3=Happiness (Night)
EvolutionName4=Level
EvolutionName5=Trade
EvolutionName6=Trade w/ Item
EvolutionName7=Item
EvolutionName8=Atk > Def
EvolutionName9=Atk = Def
EvolutionName10=Atk < Def
EvolutionName11=High Personality
EvolutionName12=Low Personality
EvolutionName13=Allow Pokemon Creation
EvolutionName14=Create Extra Pokemon
EvolutionName15=Max Beauty
Evolution0Param=none
Evolution1Param=evolvesbutnoparms
Evolution2Param=evolvesbutnoparms
Evolution3Param=evolvesbutnoparms
Evolution4Param=level
Evolution5Param=evolvesbutnoparms
Evolution6Param=item
Evolution7Param=item
Evolution8Param=level
Evolution9Param=level
Evolution10Param=level
Evolution11Param=level
Evolution12Param=level
Evolution13Param=evolvesbutnoparms
Evolution14Param=level
Evolution15Param=evolvesbasedonvalue
MoveTutorAttacks=0
EggMoveTable=0
TrainerTable=1F04B4
NumberOfTrainers=693
TrainerClasses=1F0198
NumberOfTrainerClasses=58
TrainerImageTable=1EC4CC
NumberOfTrainerImages=82
TrainerPaletteTable=1EC764
[BPRE]
ROMName=Pokémon Fire Red (English)
ItemData=3DB028
AttackNames=247094
TMData=45A80C
TotalTMsPlusHMs=58
TotalTMs=50
ItemIMGData=3D4294
NumberOfItems=375
NumberOfAttacks=354
MoveTutorAttacks=459B60
NumberOfMoveTutorAttacks=16
PokemonNames=245EE0
NumberOfPokemon=412
NationalDexTable=251FEE
SecondDexTable=251CB8
PokedexData=44E850
NumberOfDexEntries=387
PokemonData=254784
AbilityNames=24FC40
NumberOfAbilities=78
Pointer2PointersToMapBanks=5524C
OriginalBankPointer0=352004
OriginalBankPointer1=352018
OriginalBankPointer2=352204
OriginalBankPointer3=3522F4
OriginalBankPointer4=3523FC
OriginalBankPointer5=35240C
OriginalBankPointer6=352424
OriginalBankPointer7=352444
OriginalBankPointer8=35246C
OriginalBankPointer9=352484
OriginalBankPointer10=3524A4
OriginalBankPointer11=3524F4
OriginalBankPointer12=35251C
OriginalBankPointer13=35253C
OriginalBankPointer14=352544
OriginalBankPointer15=35256C
OriginalBankPointer16=35257C
OriginalBankPointer17=352584
OriginalBankPointer18=35258C
OriginalBankPointer19=352594
OriginalBankPointer20=352598
OriginalBankPointer21=35259C
OriginalBankPointer22=3525A4
OriginalBankPointer23=3525AC
OriginalBankPointer24=3525B8
OriginalBankPointer25=3525C0
OriginalBankPointer26=3525CC
OriginalBankPointer27=3525D4
OriginalBankPointer28=3525D8
OriginalBankPointer29=3525DC
OriginalBankPointer30=3525E0
OriginalBankPointer31=3525E4
OriginalBankPointer32=352600
OriginalBankPointer33=352614
OriginalBankPointer34=352628
OriginalBankPointer35=352648
OriginalBankPointer36=352668
OriginalBankPointer37=35267C
OriginalBankPointer38=352690
OriginalBankPointer39=352694
OriginalBankPointer40=352698
OriginalBankPointer41=35269C
OriginalBankPointer42=3526A4
NumberOfMapsInBank0=4
NumberOfMapsInBank1=122
NumberOfMapsInBank2=59
NumberOfMapsInBank3=65
NumberOfMapsInBank4=3
NumberOfMapsInBank5=5
NumberOfMapsInBank6=7
NumberOfMapsInBank7=9
NumberOfMapsInBank8=5
NumberOfMapsInBank9=7
NumberOfMapsInBank10=19
NumberOfMapsInBank11=9
NumberOfMapsInBank12=7
NumberOfMapsInBank13=1
NumberOfMapsInBank14=9
NumberOfMapsInBank15=3
NumberOfMapsInBank16=1
NumberOfMapsInBank17=1
NumberOfMapsInBank18=1
NumberOfMapsInBank19=0
NumberOfMapsInBank20=0
NumberOfMapsInBank21=1
NumberOfMapsInBank22=1
NumberOfMapsInBank23=2
NumberOfMapsInBank24=1
NumberOfMapsInBank25=2
NumberOfMapsInBank26=1
NumberOfMapsInBank27=0
NumberOfMapsInBank28=0
NumberOfMapsInBank29=0
NumberOfMapsInBank30=0
NumberOfMapsInBank31=6
NumberOfMapsInBank32=4
NumberOfMapsInBank33=4
NumberOfMapsInBank34=7
NumberOfMapsInBank35=7
NumberOfMapsInBank36=4
NumberOfMapsInBank37=4
NumberOfMapsInBank38=0
NumberOfMapsInBank39=0
NumberOfMapsInBank40=0
NumberOfMapsInBank41=1
NumberOfMapsInBank42=0
MapLabelData=3F1CAC
NumberOfMapLabels=109
PokemonFrontSprites=2350AC
PokemonBackSprites=23654C
PokemonNormalPal=23730C
PokemonShinyPal=2380CC
IconPointerTable=3D37A0
IconPalTable=3D3E80
CryTable=48C914
CryTable2=48DB44
CryConversionTable=2539D4
FootPrintTable=43FAB0
PokemonAttackTable=25D7B4
PokemonEvolutions=259754
TMHMCompatibility=252BC8
TMHMLenPerPoke=8
MoveTutorCompatibility=459B7E
EnemyYTable=2349CC
PlayerYTable=235E6C
EnemyAltitudeTable=23A004
AttackData=250C04
AttackDescriptionTable=4886E8
AbilityDescriptionTable=24FB08
AttackAnimationTable=1C68F4
IconPals=3D3740
JamboLearnableMovesTerm=0000FF
StartSearchingForSpaceOffset=71A240
FreeSpaceSearchInterval=100
NumberOfEvolutionsPerPokemon=5
NumberOfEvolutionTypes=15
EvolutionName0=None
EvolutionName1=Happiness
EvolutionName2=Happiness (Day)
EvolutionName3=Happiness (Night)
EvolutionName4=Level
EvolutionName5=Trade
EvolutionName6=Trade w/ Item
EvolutionName7=Item
EvolutionName8=Atk > Def
EvolutionName9=Atk = Def
EvolutionName10=Atk < Def
EvolutionName11=High Personality
EvolutionName12=Low Personality
EvolutionName13=Allow Pokemon Creation
EvolutionName14=Create Extra Pokemon
EvolutionName15=Max Beauty
Evolution0Param=none
Evolution1Param=evolvesbutnoparms
Evolution2Param=evolvesbutnoparms
Evolution3Param=evolvesbutnoparms
Evolution4Param=level
Evolution5Param=evolvesbutnoparms
Evolution6Param=item
Evolution7Param=item
Evolution8Param=level
Evolution9Param=level
Evolution10Param=level
Evolution11Param=level
Evolution12Param=level
Evolution13Param=evolvesbutnoparms
Evolution14Param=level
Evolution15Param=evolvesbasedonvalue
EggMoveTable=25EF0C
EggMoveTableLimiter=45CC4
HabitatTable=452C4C
ItemAnimationTable=45FD54
TrainerTable=23EAF0
NumberOfTrainers=742
TrainerClasses=23E558
NumberOfTrainerClasses=6B
TrainerImageTable=23957C
NumberOfTrainerImages=147
TrainerPaletteTable=239A1C
TrainerClassMoney=24F220
DexSizeTrainerSprite=135
TradeData=26CF8C
NumberOfTrades=9
PokedexAlphabetTable=443FC0
PokedexLightestTable=4442F6
PokedexSmallestTable=4445FA
PokedexTypeTable=4448FE
[BPGE]
ROMName=Pokémon Leaf Green (English)
ItemData=3DAE64
AttackNames=247070
TMData=45A22C
TotalTMsPlusHMs=58
TotalTMs=50
ItemIMGData=3D40D0
NumberOfItems=375
NumberOfAttacks=354
MoveTutorAttacks=459580
NumberOfMoveTutorAttacks=16
PokemonNames=245EBC
NumberOfPokemon=412
NationalDexTable=251FCA
SecondDexTable=251C94
PokedexData=44E270
NumberOfDexEntries=387
PokemonData=254760
AbilityNames=24FC1C
NumberOfAbilities=78
Pointer2PointersToMapBanks=5524C
OriginalBankPointer0=351FE4
OriginalBankPointer1=351FF8
OriginalBankPointer2=3521E4
OriginalBankPointer3=3522D4
OriginalBankPointer4=3523DC
OriginalBankPointer5=3523EC
OriginalBankPointer6=352404
OriginalBankPointer7=352424
OriginalBankPointer8=35244C
OriginalBankPointer9=352464
OriginalBankPointer10=352484
OriginalBankPointer11=3524D4
OriginalBankPointer12=3524FC
OriginalBankPointer13=35251C
OriginalBankPointer14=352524
OriginalBankPointer15=35254C
OriginalBankPointer16=35255C
OriginalBankPointer17=352564
OriginalBankPointer18=35256C
OriginalBankPointer19=352574
OriginalBankPointer20=352578
OriginalBankPointer21=35257C
OriginalBankPointer22=352584
OriginalBankPointer23=35258C
OriginalBankPointer24=352598
OriginalBankPointer25=3525A0
OriginalBankPointer26=3525AC
OriginalBankPointer27=3525B4
OriginalBankPointer28=3525B8
OriginalBankPointer29=3525BC
OriginalBankPointer30=3525C0
OriginalBankPointer31=3525C4
OriginalBankPointer32=3525E0
OriginalBankPointer33=3525F4
OriginalBankPointer34=352608
OriginalBankPointer35=352628
OriginalBankPointer36=352648
OriginalBankPointer37=35265C
OriginalBankPointer38=352670
OriginalBankPointer39=352674
OriginalBankPointer40=352678
OriginalBankPointer41=35267C
OriginalBankPointer42=352684
NumberOfMapsInBank0=4
NumberOfMapsInBank1=122
NumberOfMapsInBank2=59
NumberOfMapsInBank3=65
NumberOfMapsInBank4=3
NumberOfMapsInBank5=5
NumberOfMapsInBank6=7
NumberOfMapsInBank7=9
NumberOfMapsInBank8=5
NumberOfMapsInBank9=7
NumberOfMapsInBank10=19
NumberOfMapsInBank11=9
NumberOfMapsInBank12=7
NumberOfMapsInBank13=1
NumberOfMapsInBank14=9
NumberOfMapsInBank15=3
NumberOfMapsInBank16=1
NumberOfMapsInBank17=1
NumberOfMapsInBank18=1
NumberOfMapsInBank19=0
NumberOfMapsInBank20=0
NumberOfMapsInBank21=1
NumberOfMapsInBank22=1
NumberOfMapsInBank23=2
NumberOfMapsInBank24=1
NumberOfMapsInBank25=2
NumberOfMapsInBank26=1
NumberOfMapsInBank27=0
NumberOfMapsInBank28=0
NumberOfMapsInBank29=0
NumberOfMapsInBank30=0
NumberOfMapsInBank31=6
NumberOfMapsInBank32=4
NumberOfMapsInBank33=4
NumberOfMapsInBank34=7
NumberOfMapsInBank35=7
NumberOfMapsInBank36=4
NumberOfMapsInBank37=4
NumberOfMapsInBank38=0
NumberOfMapsInBank39=0
NumberOfMapsInBank40=0
NumberOfMapsInBank41=1
NumberOfMapsInBank42=0
MapLabelData=3F1AE8
NumberOfMapLabels=109
PokemonFrontSprites=235088
PokemonBackSprites=236558
PokemonNormalPal=2372E8
PokemonShinyPal=2380A8
IconPointerTable=3D35DC
IconPalTable=3D3CBC
CryTable=48C1F0
FootPrintTable=43F8EC
PokemonAttackTable=25D794
PokemonEvolutions=259734
TMHMCompatibility=252BA4
TMHMLenPerPoke=8
MoveTutorCompatibility=459B9E
EnemyYTable=
PlayerYTable=
EnemyAltitudeTable=
AttackData=250BE0
AttackDescriptionTable=487FC4
AbilityDescriptionTable=
AttackAnimationTable=
JamboLearnableMovesTerm=0000FF
StartSearchingForSpaceOffset=800000
FreeSpaceSearchInterval=100
NumberOfEvolutionsPerPokemon=5
NumberOfEvolutionTypes=15
EvolutionName0=None
EvolutionName1=Happiness
EvolutionName2=Happiness (Day)
EvolutionName3=Happiness (Night)
EvolutionName4=Level
EvolutionName5=Trade
EvolutionName6=Trade w/ Item
EvolutionName7=Item
EvolutionName8=Atk > Def
EvolutionName9=Atk = Def
EvolutionName10=Atk < Def
EvolutionName11=High Personality
EvolutionName12=Low Personality
EvolutionName13=Allow Pokemon Creation
EvolutionName14=Create Extra Pokemon
EvolutionName15=Max Beauty
Evolution0Param=none
Evolution1Param=evolvesbutnoparms
Evolution2Param=evolvesbutnoparms
Evolution3Param=evolvesbutnoparms
Evolution4Param=level
Evolution5Param=evolvesbutnoparms
Evolution6Param=item
Evolution7Param=item
Evolution8Param=level
Evolution9Param=level
Evolution10Param=level
Evolution11Param=level
Evolution12Param=level
Evolution13Param=evolvesbutnoparms
Evolution14Param=level
Evolution15Param=evolvesbasedonvalue
EggMoveTable=0
HabitatTable=0
TrainerTable=23EACC
NumberOfTrainers=742
TrainerClasses=23E534
NumberOfTrainerClasses=6B
TrainerImageTable=239558
NumberOfTrainerImages=147
TrainerPaletteTable=2399F8
TrainerClassMoney=24F1FC
[BPEE]
ROMName=Pokémon Emerald (English)
ItemData=5839A0
AttackNames=31977C
TMData=616040
TotalTMsPlusHMs=58
TotalTMs=50
ItemIMGData=614410
NumberOfItems=377
NumberOfAttacks=354
MoveTutorAttacks=61500C
NumberOfMoveTutorAttacks=32
PokemonNames=f0c508
NumberOfPokemon=776
NationalDexTable=f23628
SecondDexTable=f24248
HoenntoNationalDex=f23c38
PokedexData=f0e660
NumberOfDexEntries=722
NumberOfRegionDex=301
PokemonData=f00000
AbilityNames=31B6DB
NumberOfAbilities=78
Pointer2PointersToMapBanks=84AA4
OriginalBankPointer0=485D60
OriginalBankPointer1=485E44
OriginalBankPointer2=485E58
OriginalBankPointer3=485E6C
OriginalBankPointer4=485E84
OriginalBankPointer5=485EA0
OriginalBankPointer6=485EC0
OriginalBankPointer7=485EE4
OriginalBankPointer8=485F00
OriginalBankPointer9=485F1C
OriginalBankPointer10=485F54
OriginalBankPointer11=485F74
OriginalBankPointer12=485FB8
OriginalBankPointer13=485FE0
OriginalBankPointer14=48603C
OriginalBankPointer15=486070
OriginalBankPointer16=4860AC
OriginalBankPointer17=4860E8
OriginalBankPointer18=4860F0
OriginalBankPointer19=4860F8
OriginalBankPointer20=486100
OriginalBankPointer21=48610C
OriginalBankPointer22=486110
OriginalBankPointer23=486114
OriginalBankPointer24=486118
OriginalBankPointer25=4862C8
OriginalBankPointer26=4863BC
OriginalBankPointer27=486520
OriginalBankPointer28=486528
OriginalBankPointer29=48652C
OriginalBankPointer30=486560
OriginalBankPointer31=486564
OriginalBankPointer32=486568
OriginalBankPointer33=486574
NumberOfMapsInBank0=56
NumberOfMapsInBank1=4
NumberOfMapsInBank2=4
NumberOfMapsInBank3=5
NumberOfMapsInBank4=6
NumberOfMapsInBank5=7
NumberOfMapsInBank6=8
NumberOfMapsInBank7=6
NumberOfMapsInBank8=6
NumberOfMapsInBank9=13
NumberOfMapsInBank10=7
NumberOfMapsInBank11=16
NumberOfMapsInBank12=9
NumberOfMapsInBank13=22
NumberOfMapsInBank14=12
NumberOfMapsInBank15=14
NumberOfMapsInBank16=14
NumberOfMapsInBank17=1
NumberOfMapsInBank18=1
NumberOfMapsInBank19=1
NumberOfMapsInBank20=2
NumberOfMapsInBank21=0
NumberOfMapsInBank22=0
NumberOfMapsInBank23=0
NumberOfMapsInBank24=107
NumberOfMapsInBank25=60
NumberOfMapsInBank26=88
NumberOfMapsInBank27=1
NumberOfMapsInBank28=0
NumberOfMapsInBank29=12
NumberOfMapsInBank30=0
NumberOfMapsInBank31=0
NumberOfMapsInBank32=2
NumberOfMapsInBank33=0
MapLabelData=5A1480
NumberOfMapLabels=213
PokemonFrontSprites=f054e0
PokemonBackSprites=f06d20
PokemonNormalPal=f08560
PokemonShinyPal=f09da0
PokemonAnimations=f054e0
IconPointerTable=f0b5e0
IconPalTable=f0c200
CryTable=f1e450
CryTable2=f208b0
CryConversionTable=f23018
FootPrintTable=f1d830
PokemonAttackTable=32937C
PokemonEvolutions=f140a0
TMHMCompatibility=31E898
TMHMLenPerPoke=8
MoveTutorCompatibility=615048
EnemyYTable=f1b9e0
PlayerYTable=f1c600
EnemyAltitudeTable=f22d10
AttackData=31C898
ContestMoveData=58C2B4
ContestMoveEffectData=58CDCC
AttackDescriptionTable=61C524
AbilityDescriptionTable=31BAD4
StarterPokemon=5B1DF8
StarterPokemonLevel=B1178
StarterEncounterPokemon=32706
StarterEncounterPokemonLevel=32714
AttackAnimationTable=2C8D6C
BattleFrontierTrainers=5D5ACC
SlateportBattleTentTrainers=5DDA14
VerdanturfBattleTentTrainers=5DE610
FallarborBattleTentTrainers=5DF084
NumberOfBattleFrontierTrainers=300
NumberOfSlateportBattleTentTrainers=30
NumberOfVerdanturfBattleTentTrainers=30
NumberOfFallarborBattleTentTrainers=30
BattleFrontierPokemon=5D97BC
SlateportBattleTentPokemon=5DE02C
VerdanturfBattleTentPokemon=5DEC28
FallarborBattleTentPokemon=5DF69C
NumberOfBattleFrontierPokemon=882
NumberOfSlateportBattleTentPokemon=70
NumberOfVerdanturfBattleTentPokemon=45
NumberOfFallarborBattleTentPokemon=45
BattleFrontierHeldItems=5CECB0
BattleFrontierBanList=611C9A
NumberOfBattlefrontierHeldItems=62
NumberOfTilesInTilset3DF71C=8F
NumberOfTilesInTilset3DF734=15D
NumberOfTilesInTilset3DF74C=17A
NumberOfTilesInTilset3DF764=197
NumberOfTilesInTilset3DF77C=1FF
NumberOfTilesInTilset3DF794=1B8
NumberOfTilesInTilset3DF7AC=16F
NumberOfTilesInTilset3DF7C4=117
NumberOfTilesInTilset3DF7DC=15F
NumberOfTilesInTilset3DF7F4=1C7
NumberOfTilesInTilset3DF80C=A7
NumberOfTilesInTilset3DF824=CA
NumberOfTilesInTilset3DF83C=FE
NumberOfTilesInTilset3DF86C=1FF
NumberOfTilesInTilset3DF884=C6
NumberOfTilesInTilset3DF89C=120
NumberOfTilesInTilset3DF8B4=E7
NumberOfTilesInTilset3DF8CC=19D
NumberOfTilesInTilset3DF8E4=39
NumberOfTilesInTilset3DF8FC=67
NumberOfTilesInTilset3DF914=65
NumberOfTilesInTilset3DF92C=9E
NumberOfTilesInTilset3DF944=79
NumberOfTilesInTilset3DF95C=FF
NumberOfTilesInTilset3DF974=37
NumberOfTilesInTilset3DF98C=47
NumberOfTilesInTilset3DF9A4=43
NumberOfTilesInTilset3DF9BC=1FF
NumberOfTilesInTilset3DF9D4=F7
NumberOfTilesInTilset3DF9EC=52
NumberOfTilesInTilset3DFA04=143
NumberOfTilesInTilset3DFA1C=143
NumberOfTilesInTilset3DFA34=143
NumberOfTilesInTilset3DFA4C=143
NumberOfTilesInTilset3DFA64=26
NumberOfTilesInTilset3DFA7C=3A
NumberOfTilesInTilset3DFA94=25
NumberOfTilesInTilset3DFAAC=8F
NumberOfTilesInTilset3DFAC4=E8
NumberOfTilesInTilset3DFADC=8E
NumberOfTilesInTilset3DFAF4=C3
NumberOfTilesInTilset3DFB0C=9D
NumberOfTilesInTilset3DFB24=EB
NumberOfTilesInTilset3DFB3C=DF
NumberOfTilesInTilset3DFB54=79
NumberOfTilesInTilset3DFB6C=1FF
NumberOfTilesInTilset3DFB84=5F
NumberOfTilesInTilset3DFB9C=52
NumberOfTilesInTilset3DFBB4=44
NumberOfTilesInTilset3DFBCC=95
NumberOfTilesInTilset3DFBE4=3C
NumberOfTilesInTilset3DFBFC=BC
NumberOfTilesInTilset3DFC14=47
NumberOfTilesInTilset3DFC2C=74
NumberOfTilesInTilset3DFC44=FB
NumberOfTilesInTilset3DFC7C=14B
NumberOfTilesInTilset3DFC94=1FF
NumberOfTilesInTilset3DFCAC=19E
NumberOfTilesInTilset3DFCC4=1AA
NumberOfTilesInTilset3DFCDC=15F
NumberOfTilesInTilset3DFCF4=15B
NumberOfTilesInTilset3DFD0C=B0
NumberOfTilesInTilset3DFD24=DC
NumberOfTilesInTilset3DFD3C=19D
NumberOfTilesInTilset3DFD54=34
NumberOfTilesInTilset3DFD6C=42
NumberOfTilesInTilset3DFD84=1CF
NumberOfTilesInTilset3DFD9C=1C2
NumberOfTilesInTilset3DFDB4=5D
NumberOfTilesInTilset3DFDCC=10C
NumberOfTilesInTilset3DFDE4=42
NumberOfTilesInTilset3DFDFC=30
IconPals=DDE1F8
ShadowFronts=1000000
ShadowPals=1002660
ShadowBacks=1007320
JamboLearnableMovesTerm=0000FF
StartSearchingForSpaceOffset=E3CF64
FreeSpaceSearchInterval=100
NumberOfEvolutionsPerPokemon=5
NumberOfEvolutionTypes=15
EvolutionName0=None
EvolutionName1=Happiness
EvolutionName2=Happiness (Day)
EvolutionName3=Happiness (Night)
EvolutionName4=Level
EvolutionName5=Trade
EvolutionName6=Trade w/ Item
EvolutionName7=Item
EvolutionName8=Atk > Def
EvolutionName9=Atk = Def
EvolutionName10=Atk < Def
EvolutionName11=High Personality
EvolutionName12=Low Personality
EvolutionName13=Allow Pokemon Creation
EvolutionName14=Create Extra Pokemon
EvolutionName15=Max Beauty
Evolution0Param=none
Evolution1Param=evolvesbutnoparms
Evolution2Param=evolvesbutnoparms
Evolution3Param=evolvesbutnoparms
Evolution4Param=level
Evolution5Param=evolvesbutnoparms
Evolution6Param=item
Evolution7Param=item
Evolution8Param=level
Evolution9Param=level
Evolution10Param=level
Evolution11Param=level
Evolution12Param=level
Evolution13Param=evolvesbutnoparms
Evolution14Param=level
Evolution15Param=evolvesbasedonvalue
EggMoveTable=32ADD8
EggMoveTableLimiter=70464
TrainerTable=310058
NumberOfTrainers=854
TrainerClasses=30FCD4
NumberOfTrainerClasses=66
TrainerImageTable=305654
NumberOfTrainerImages=92
TrainerPaletteTable=30593C
DexSizeTrainerSprite=71
TradeData=338ED0
NumberOfTrades=4
PokedexAlphabetTable=F2648C
PokedexLightestTable=F26A30
PokedexSmallestTable=F26FD4
PokedexTypeTable=0
[AXVF]
ROMName=Pokémon Rubis (Français)
ItemData=3CCFC4
AttackNames=200728
TMData=37D168
NumberOfItems=349
NumberOfAttacks=354
PokemonNames=1FF574
NumberOfPokemon=412
NationalDexTable=204962
SecondDexTable=20462C
PokedexData=
NumberOfDexEntries=387
[AXPF]
ROMName=Pokémon Saphir (Français)
ItemData=3CCAF4
AttackNames=2006B8
TMData=37D0F8
NumberOfItems=349
NumberOfAttacks=354
PokemonNames=1FF504
NumberOfPokemon=412
NationalDexTable=2048F2
SecondDexTable=2045BC
PokedexData=
NumberOfDexEntries=387
[BPEF]
ROMName=Pokémon Emeraude (Français)
ItemData=587D6C
AttackNames=3212AC
TMData=61A3C8
ItemIMGData=618798
NumberOfItems=377
NumberOfAttacks=354
MoveTutorAttacks=619394
PokemonNames=3200F8
NumberOfPokemon=412
NationalDexTable=3257F2
SecondDexTable=3254BC
PokedexData=
NumberOfDexEntries=387
[BPRF]
ROMName=Pokémon Rouge Feu (Français)
ItemData=3D3324
AttackNames=2414A0
TMData=453BA8
ItemIMGData=3CE114
NumberOfItems=375
NumberOfAttacks=354
MoveTutorAttacks=453164
PokemonNames=2402EC
NumberOfPokemon=412
NationalDexTable=24C43E
SecondDexTable=24C108
PokedexData=
NumberOfDexEntries=387
[BPGF]
ROMName=Pokémon Vert Feuille (Français)
ItemData=3D3160
AttackNames=24147C
TMData=452968
ItemIMGData=3CDF50
NumberOfItems=375
NumberOfAttacks=354
MoveTutorAttacks=451F24
PokemonNames=2402C8
NumberOfPokemon=412
NationalDexTable=24C41A
SecondDexTable=24C0E4
PokedexData=
NumberOfDexEntries=387
[AXVI]
ROMName=Pokémon Rubino (Italiano)
ItemData=3C5FF8
AttackNames=1F9FBC
TMData=3769F4
NumberOfItems=349
NumberOfAttacks=354
PokemonNames=1F8E08
NumberOfPokemon=412
NationalDexTable=
SecondDexTable=
PokedexData=
NumberOfDexEntries=387
[AXPI]
ROMName=Pokémon Zaffiro (Italiano)
ItemData=3C5C9C
AttackNames=1F9F4C
TMData=376984
NumberOfItems=349
NumberOfAttacks=354
PokemonNames=1F8D98
NumberOfPokemon=412
NationalDexTable=
SecondDexTable=
PokedexData=
NumberOfDexEntries=387
[BPEI]
ROMName=Pokémon Smeraldo (Italiano)
ItemData=58000C
AttackNames=319140
TMData=612BDC
ItemIMGData=610FAC
NumberOfItems=377
NumberOfAttacks=354
MoveTutorAttacks=611BA8
PokemonNames=317F8C
NumberOfPokemon=412
NationalDexTable=
SecondDexTable=
PokedexData=
NumberOfDexEntries=387
[BPRI]
ROMName=Pokémon Rosso Fuoco (Italiano)
ItemData=3D1EE8
AttackNames=240138
TMData=4517E8
ItemIMGData=3CCDA4
NumberOfItems=375
NumberOfAttacks=354
MoveTutorAttacks=450B3C
PokemonNames=23EF84
NumberOfPokemon=412
NationalDexTable=
SecondDexTable=
PokedexData=
NumberOfDexEntries=387
[BPGI]
ROMName=Pokémon Verde Foglia (Italiano)
ItemData=3D1D24
AttackNames=240114
TMData=451018
ItemIMGData=3CCBE0
NumberOfItems=375
NumberOfAttacks=354
MoveTutorAttacks=45036C
PokemonNames=23EF60
NumberOfPokemon=412
NationalDexTable=
SecondDexTable=
PokedexData=
NumberOfDexEntries=387
[AXVS]
ROMName=Pokémon Rubi (Español)
ItemData=3C8FFC
AttackNames=1FD040
TMData=379A9C
NumberOfItems=349
NumberOfAttacks=354
PokemonNames=1FBE8C
NumberOfPokemon=412
NationalDexTable=
SecondDexTable=
PokedexData=
NumberOfDexEntries=387
[AXPS]
ROMName=Pokémon Zafiro (Español)
ItemData=3C8D38
AttackNames=1FCFD0
TMData=379A2C
NumberOfItems=349
NumberOfAttacks=354
PokemonNames=1FBE1C
NumberOfPokemon=412
NationalDexTable=
SecondDexTable=
PokedexData=
NumberOfDexEntries=387
[BPES]
ROMName=Pokémon Esmeralda (Español)
ItemData=58639C
AttackNames=31F9E0
TMData=618E80
ItemIMGData=617250
NumberOfItems=377
NumberOfAttacks=354
MoveTutorAttacks=617E4C
PokemonNames=31E82C
NumberOfPokemon=412
NationalDexTable=
SecondDexTable=
PokedexData=
NumberOfDexEntries=387
[BPRS]
ROMName=Pokémon Rojo Fuego (Español)
ItemData=3D4F50
AttackNames=242800
TMData=454E84
ItemIMGData=3CF48C
NumberOfItems=375
NumberOfAttacks=354
MoveTutorAttacks=4541D8
PokemonNames=24164C
NumberOfPokemon=412
NationalDexTable=
SecondDexTable=
PokedexData=
NumberOfDexEntries=387
[BPGS]
ROMName=Pokémon Verde Hoja (Español)
ItemData=3D4D8C
AttackNames=2427DC
TMData=454614
ItemIMGData=3CF2C8
NumberOfItems=375
NumberOfAttacks=354
MoveTutorAttacks=453968
PokemonNames=241628
NumberOfPokemon=412
NationalDexTable=
SecondDexTable=
PokedexData=
NumberOfDexEntries=387
[AXVJ]
ROMName=
ItemData=
AttackNames=
TMData=
NumberOfItems =349
NumberOfAttacks=354
PokemonNames=1CA354
NumberOfPokemon=412
NationalDexTable=
SecondDexTable=
PokedexData=
NumberOfDexEntries=387
[AXPJ]
ROMName=
ItemData=
AttackNames=
TMData=
NumberOfItems=349
NumberOfAttacks=354
PokemonNames=
NumberOfPokemon=412
NationalDexTable=
SecondDexTable=
PokedexData=
NumberOfDexEntries=387
[BPEJ]
ROMName=
ItemData=
AttackNames=
TMData=
ItemIMGData=
NumberOfItems=377
NumberOfAttacks=354
MoveTutorAttacks=
PokemonNames=
NumberOfPokemon=412
NationalDexTable=
SecondDexTable=
PokedexData=
NumberOfDexEntries=387
[BPRJ]
ROMName=
ItemData=
AttackNames=
TMData=
ItemIMGData=
NumberOfItems=375
NumberOfAttacks=354
MoveTutorAttacks=
PokemonNames=
NumberOfPokemon=412
NationalDexTable=
SecondDexTable=
PokedexData=
NumberOfDexEntries=387
[BPGJ]
ROMName=
ItemData=
AttackNames=
TMData=
ItemIMGData=
NumberOfItems=375
NumberOfAttacks=354
MoveTutorAttacks=
PokemonNames=
NumberOfPokemon=412
NationalDexTable=
SecondDexTable=
PokedexData=
NumberOfDexEntries=387
Followed by my expansion.py
Spoiler:#!/usr/bin/env python3
import os
import sys
import shutil
#if you didn't expand pokemon before, do not touch those values
expanding_again = False
old_pokes = 412
evos_per_entry = 5
##################################################################
#those values should be configured according to user
build_code = True #set to False if you want this script to only replace tables and to not run build/insert scripts
free_space = 0xF00000 #location to start looking for free space
new_pokes = 335 + 441 #X is the number of pokemon you're adding, ignore that 441, it's for all limbo slots; say you want to include gen 4, 5 and 6 that gives 335
dex_pokes = 721 #amount of pokes you want to have in national dex; max you can currently go is 999
hoenn_dex_pokes = 300 #amount of pokes in the regional hoenn dex
clear_repointed_data = True #if True clears old tables, if False doesn't touch them
Movesets_repoint = False #set to False if you don't want to repoint learnset table, (if you're using Emerald's battle upgrade set to False)
TmHmComp_repoint = False #set to False if you don't want to repoint tm/hm comp tables; for example: you expanded tms
MoveTutorComp_repoint = False #same as above but movetutor table
##################################################################
rom_name = 'rom.gba'
new_rom_name = 'test.gba'
offset_file = 'offsets.ini'
table_names = ["base_stats", "poke_front_img", "poke_back_img", "poke_sprite_pal", "shiny_sprite_pal", "icon_img", "icon_pal", "poke_names", "tm_hm_comp_table", "move_tutor_table", "dex_table", "evo_table", "enymyyTable", "playeryTable", "learnset_table", "front_animation_table", "anim_delay_table", "footprint_table", "crytable1", "crytable2", "altitude_table", "auxialary_cry_table", "nationaldex_table", "hoenn_to_national_table", "hoenn_dex_table", "back_anim_table", "frame_control_table"]
table_ptrs = [0x0001BC, 0x000128, 0x00012C, 0x000130, 0x000134, 0x000138, 0x00013C, 0x000144, 0x06E060, 0x1B2390, 0x0BFA20, 0x06D140, 0x0A5F54, 0x0A5EBC, 0x06E3B4, 0x06EE7C, 0x06EDDC, 0x0C0DBC, 0x0A35EC, 0x0A35DC, 0x0A5FF4, 0x06D534, 0x06D4BC, 0x06D494, 0x06D3FC, 0x17F488, 0x05E7BC]
sizeofs = [0x1C, 8, 8, 8, 8, 4, 1, 11, 8, 4, 0x20, evos_per_entry * 8, 4, 4, 4, 1, 1, 4, 0xC, 0xC, 1, 2, 2, 2, 2, 1, 4]
to_repoint = [True, True, True, True, True, True, True, True, TmHmComp_repoint, MoveTutorComp_repoint, True, True, True, True, Movesets_repoint, True, True, True, True, True, True, True, True, True, True, True, True]
no_of_names = len(table_names)
no_of_tables = len(table_ptrs)
no_of_sizeofs = len(sizeofs)
no_of_to_repoints = len(to_repoint)
def align_offset(offset):
while (offset % 4) != 0:
offset += 1
return offset
def find_offset_to_put(rom, needed_bytes, start_loc):
offset = start_loc
found_bytes = 0
while (found_bytes < needed_bytes):
for i in range (0, needed_bytes):
rom.seek(offset + i)
byte = rom.read(1)
if (byte):
if (byte != b'\xFF'):
offset += i + 1
align_offset(offset)
found_bytes = 0
break
found_bytes += 1
else:
return 0
return offset
def get_oldtable_address(rom, tableID):
if (tableID < no_of_tables):
ptr = table_ptrs[tableID]
rom.seek(ptr)
table_ptr = rom.read(4)
return int.from_bytes(table_ptr, byteorder = 'little') - 0x08000000
return 0
def update_ptrs(rom, ptr, tableID):
name = table_names[tableID]
if name == "base_stats":
rom.seek(0x06EB7C) #item 1
rom.write((ptr + 0xC).to_bytes(4, byteorder = 'little'))
rom.seek(0x06EBA0) #item 2
rom.write((ptr + 0xE).to_bytes(4, byteorder = 'little'))
elif name == "poke_names":
rom.seek(0x06B944)
rom.write((0x0).to_bytes(6, byteorder = 'little'))
elif name == "crytable1":
rom.seek(0x0A3610)
rom.write((ptr + 0x600).to_bytes(4, byteorder = 'little'))
rom.seek(0x0A3634)
rom.write((ptr + 0xC00).to_bytes(4, byteorder = 'little'))
rom.seek(0x0A3670)
rom.write((ptr + 0x1200).to_bytes(4, byteorder = 'little'))
elif name == "crytable2":
rom.seek(0x0A3600)
rom.write((ptr + 0x600).to_bytes(4, byteorder = 'little'))
rom.seek(0x0A3624)
rom.write((ptr + 0xC00).to_bytes(4, byteorder = 'little'))
rom.seek(0x0A3648)
rom.write((ptr + 0x1200).to_bytes(4, byteorder = 'little'))
elif name == "anim_delay_table":
rom.seek(0x034BFE)
rom.write((0xE007).to_bytes(2, byteorder = 'little'))
rom.seek(0x0A5FE)
rom.write((0xE003).to_bytes(2, byteorder = 'little'))
elif name == "altitude_table":
rom.seek(0x0A5F82)
rom.write((0xE003).to_bytes(2, byteorder = 'little'))
rom.seek(0x0A5EB6)
rom.write((0xE003).to_bytes(2, byteorder = 'little'))
elif name == "shiny_sprite_pal":
rom.seek(0x06E750)
rom.write((0xE004).to_bytes(2, byteorder = 'little'))
elif name == "poke_back_img":
rom.seek(0x0346D6)
rom.write((0xE007).to_bytes(2, byteorder = 'little'))
rom.seek(0x034AC2)
rom.write((0xE007).to_bytes(2, byteorder = 'little'))
elif name == "poke_front_img":
rom.seek(0x034BFE)
rom.write((0xE007).to_bytes(2, byteorder = 'little'))
rom.seek(0x034AC2)
rom.write((0xE007).to_bytes(2, byteorder = 'little'))
rom.seek(0x0345FE)
rom.write((0xE007).to_bytes(2, byteorder = 'little'))
rom.seek(0x0346D6)
rom.write((0xE007).to_bytes(2, byteorder = 'little'))
rom.seek(0x034A16)
rom.write((0xE007).to_bytes(2, byteorder = 'little'))
rom.seek(0x034B32)
rom.write((0xE007).to_bytes(2, byteorder = 'little'))
rom.seek(0x0DE860)
rom.write((new_pokes).to_bytes(4, byteorder = 'little'))
elif name == "icon_pal":
rom.seek(0x0D2E3A)
rom.write((0xE001).to_bytes(2, byteorder = 'little'))
rom.seek(0x0D2D20)
rom.write((0x0).to_bytes(4, byteorder = 'little'))
elif name == "nationaldex_table":
offset = ptr - 0x08000000
for i in range(0, 386):
rom.seek(offset)
dex_no = int.from_bytes(rom.read(2), byteorder = 'little')
if (dex_no > 386):
rom.seek(offset)
rom.write((0x0).to_bytes(2, byteorder = 'little'))
offset += 2
oldptr = (get_oldtable_address(rom, tableID) + 0x08000000).to_bytes(4, byteorder = 'little')
newptr = ptr.to_bytes(4, byteorder = 'little')
rom.seek(0x0)
copy = rom.read(0x1E8000)
copy = copy.replace(oldptr, newptr)
rom.seek(0x0)
rom.write(copy)
def get_no_of_old_slots(tableID):
if expanding_again == False:
name = table_names[tableID]
if name == "poke_back_img" or name == "poke_front_img" or name == "shiny_sprite_pal" or name == "poke_sprite_pal" or name == "icon_img" or name == "icon_pal" or name == "enemyyTable" or name == "playeryTable" or name == "frame_control_table":
return 440
elif name == "dex_table":
return 387
elif name == "front_animation_table" or name == "anim_delay_table" or name == "nationaldex_table" or name == "hoenn_dex_table" or name == "hoenn_to_national_table":
return old_pokes - 1
elif name == "crytable1" or name == "crytable2":
return 388
elif name == "auxialary_cry_table":
return 136
return old_pokes
def save_table_ptrs(name, offset, not_clear):
ini = open(offset_file, 'a')
if not_clear == 0:
ini.seek(0x0)
ini.truncate()
ini.write("AllPokes: ")
ini.write(str(new_pokes) + "\n")
ini.write("NationalDexPokes: ")
ini.write(str(dex_pokes) + "\n")
ini.write("RegionalDexPokes: ")
ini.write(str(hoenn_dex_pokes) + "\n")
ini.write(name)
ini.write(": ")
ini.write(hex(offset))
ini.write("\n")
ini.close()
def clear_space(rom, loc, bytes):
if (clear_repointed_data == True):
rom.seek(loc)
for i in range(0, bytes):
rom.write(b'\xFF')
def repoint_table(rom, offset, tableID):
table_ptr = get_oldtable_address(rom, tableID)
name = table_names[tableID]
if table_ptr:
sizeof = sizeofs[tableID]
old_slots = get_no_of_old_slots(tableID)
needed_old = old_slots * sizeof
needed_new = (new_pokes - old_slots) * sizeof
#get empty slot to copy
rom.seek(table_ptr + sizeof)
empty_slot = rom.read(sizeof)
# copy old data
rom.seek(table_ptr)
to_copy = rom.read(needed_old)
#align 4
offset = align_offset(offset)
rom.seek(offset)
rom.write(to_copy)
clear_space(rom, table_ptr, needed_old)
update_ptrs(rom, offset + 0x08000000, tableID)
save_table_ptrs(name, offset, tableID)
offset += needed_old
rom.seek(offset)
#append unowns
if old_slots < 440 and name != "dex_table":
for i in range(old_slots, 440):
if (name == "poke_names"):
if i == old_slots:
eggname = [0xBF, 0xC1, 0xC1, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
for i2 in range (0, sizeof):
rom.write(eggname[i2].to_bytes(1, byteorder = 'little'))
else:
pokename = [0xCF, 0xC8, 0xC9, 0xD1, 0xC8, 0x00]
for i2 in range(0, len(pokename)):
rom.write(pokename[i2].to_bytes(1, byteorder = 'little'))
num = 0xBB + (i - old_slots)
if num == 0xD5:
num = 0xAB
elif num == 0xD6:
num = 0xAC
rom.write((num).to_bytes(1, byteorder = 'little'))
rom.write((0xFF000000).to_bytes(4, byteorder = 'big'))
elif name == "nationaldex_table":
if i == 439:
rom.write((387).to_bytes(sizeof, byteorder = 'little'))
else:
rom.write((0x0).to_bytes(sizeof, byteorder = 'little'))
else:
rom.write(empty_slot)
offset += sizeof
# write new data for empty slots
to_loop = new_pokes - 440
if (name == "dex_table"):
to_loop = dex_pokes - (old_slots - 1)
for i in range(0, to_loop):
if name == "hoenn_dex_table" or name == "hoenn_to_national_table":
rom.write((440 + i).to_bytes(sizeof, byteorder = 'little'))
elif name == "nationaldex_table":
rom.write((388 + i).to_bytes(sizeof, byteorder = 'little'))
else:
rom.write(empty_slot)
offset += sizeof
return offset
def dex_related_bytechanges(rom):
max_pokes = (dex_pokes - 1).to_bytes(4, byteorder = 'little')
rom.seek(0x0C080C)
rom.write(max_pokes)
clear_space(rom, 0x55C6A4, 411 * 2 + 386 * 2 + 387 * 2) #clear A-to-z, lightest, smallest tables
def replace_word(file, to_search, replacement):
get = 0
break_loop = 0
to_replace = to_search + " "
file.seek(0x0)
for line in file:
if (break_loop == 1):
break
for word in line.split():
if (word == to_search):
get = 1
elif (get == 1):
to_replace += word
break_loop = 1
break
file.seek(0x0)
copy = file.read()
copy = copy.replace(to_replace, to_search + " " + replacement)
file.seek(0x0)
file.write(copy)
def build_and_insert_code(offset, only_build):
linker = open("linker.ld", 'r+')
replace_word(linker, '+', hex(offset) + "),")
linker.close()
os.system("python scripts//build")
c_define = open("src//defines.h", 'r+')
replace_word(c_define, "DEX_POKES", str(dex_pokes))
replace_word(c_define, "HOENN_DEX_POKES", str(hoenn_dex_pokes))
c_define.close()
asm_define = open("src//hooks.s", 'r+')
replace_word(asm_define, "DEX_POKES,", str(dex_pokes))
asm_define.close()
if (only_build == True):
return
insert = open("scripts//insert", 'r+')
replace_word(insert, "at',", "default=" + hex(offset) + ')')
insert.close()
os.system("python scripts//insert --debug >function_offsets.ini")
shutil.copyfile(rom_name, new_rom_name)
with open(new_rom_name, 'rb+') as rom:
if (no_of_sizeofs != no_of_tables or no_of_sizeofs != no_of_to_repoints or no_of_names != no_of_sizeofs):
print("Tables don't match.")
print(no_of_names, " ", no_of_sizeofs, " ", no_of_tables, " ", no_of_to_repoints)
sys.exit(1)
if (new_pokes <= 440):
print("Amount of new pokemon must be higher than the current one.")
sys.exit(1)
if expanding_again == True and old_pokes <= 440:
print("When expanding again amount of old pokemon must be higher than 440")
sys.exit(1)
needed_bytes = 0x0
for i in range(0, no_of_tables):
if (to_repoint == True):
needed_bytes += (new_pokes * sizeofs)
needed_bytes = align_offset(needed_bytes)
offset = find_offset_to_put(rom, needed_bytes, free_space)
if (offset == 0):
print("Not enough free space.")
sys.exit(1)
for i in range(0, no_of_tables):
if (to_repoint == True):
offset = repoint_table(rom, offset, i)
dex_related_bytechanges(rom)
if build_code == True and expanding_again == False:
build_and_insert_code(offset, True)
needed_bytes = os.stat("build//output.bin")
offset = find_offset_to_put(rom, needed_bytes.st_size, offset)
if offset != 0:
build_and_insert_code(offset, False)
else:
print ("Not enough free space to insert code")
rom.close()
I've managed to deduce (not that it's hard to test :P) that something between pre-patch and post-patch is causing this error to occur, but I have no idea what it would be. I've played around with all the true/false settings in expansion.py and the end result does not change. I have not yet applied EBEU or the Items/TMs/Move Tutor expansion but have plans to.
Been a while since I used PGE but I think its because you didnt expand movesets and PGE is trying to read non existing pointers. Also you should set Tm and comp tables to true. !
Like before, I seem to be having a bit of a problem. If I expand the Pokemon first, I get the same error as before. If I apply EBEU then the Pokemon Expansion, PGE freezes when loading the Pokemon Editor. As far as I'm aware, I'm following the instructions for both word for word, and can even see the new abilities and attacks just fine in PGE, but for some reason expanding the Pokemon is what sets off the red flag.Pretty much what Dizzyegg said. Also please make sure to use the latest beta of PGE.
It seems you've used Battle Engine upgrade before and while they're both compatible I should have mentioned one thing. Basically you expanded the learnset table which was already expanded and changed in EBEU. Keyword changed. What I suggest doing is:
- expand pokemon again but this time without learnset repoint
- use the tool to get the ini offset
- build the Battle Engine code again, but this time edit the number of all pokemon in the defines.h file.
- use the pgeinidumper to get the offsets of move table and similar stuff
.
Like before, I seem to be having a bit of a problem. If I expand the Pokemon first, I get the same error as before. If I apply EBEU then the Pokemon Expansion, PGE freezes when loading the Pokemon Editor. As far as I'm aware, I'm following the instructions for both word for word, and can even see the new abilities and attacks just fine in PGE, but for some reason expanding the Pokemon is what sets off the red flag.
I'm trying to use this with the battle Engine. What should I apply first? Battle Engine or Expanded Pokemon?
I'm trying to use this with the battle Engine. What should I apply first? Battle Engine or Expanded Pokemon?
Apply expansion first, then change the number of pokemon in the config.h file and apply the engine.