Registrarse

[Oficial] Tema de Investigaciones para ROMs Españolas

lwol12

Usuario de platino
Revivo este tema con las .ini de Rojo Fuego y Esmeralda para Gen 3 Tools 2.9.1
Poner los .ini en la carpeta "Roms Data"

ROJO FUEGO BPRS
BPRS.ini
INI:
##########################################################
######################## READ ME #########################
##########################################################

# The symbol @ means that the offset is read dynamically from the ROM.
# Which means that even if you repointed a data, G3T will be able to find the new pointer without having you update this file, except if you did some extremely advanced ASM hacking. (Which is very rare even in the most heavily ASM hacked ROMs)
# You can still edit the offsets to make G3T go directly to the data's offset, like in most of the tools.
# You will still need to edit this file if you changed a table or a data's size. (Such as NumberOfMoves f.e.)
# Exemples of how to edit MoveData properly for an untouched English Fire Red ROM:
# - "MoveData=@1CC" (dynamic offset)
# - "MoveData=&H250C04" (direct offset, in hexadecimal)
# - "MoveData=2427908" (direct offset, in decimal)

##########################################################
######################## READ ME #########################
##########################################################



[GENERAL]
ROMCode=BPRS
ROMName=Pokémon Rojo Fuego (Español)

[MOVE]
NumberOfMoves=354
----------------------------------------------------------
SoundBasedMoves=@1A5EC
MoveAnimationTable=@72608
MoveDescriptionTable=@E574C
MoveData=@1CC
MoveNames=@148

[ITEM]
IndexOfFirstTM=289
NumberOfHMs=8
NumberOfItems=374
NumberOfTMs=100
----------------------------------------------------------
TMData=@125C08
ItemIMGData=@98B74
ItemData=@1C8

[ABILITY]
NumberOfAbilities=77
----------------------------------------------------------
AbilityDescriptionTable=@1C4
AbilityNames=@1C0

[POKEMON]
NumberOfPokemon=411
NumberOfMoveTutors=15
NumberOfMaxEvolutions=5
----------------------------------------------------------
PokemonShinyPal=@134
DexDataTable=@88FEC
PokemonNormalPal=@130
PokemonBackSprites=@12C
PokemonFrontSprites=@128
MoveTutorCompatibility=@120D90
TMHMCompatibility=@43B54
PokemonEvolutions=@42E58
PokemonMoveTable=@3E968
PokemonNames=@144
MoveTutorData=@120D44
PokemonData=@1BC

[TRAINER]
NumberOfTrainers=742
NumberOfTrainerImages=147
NumberOfClassNames=107
----------------------------------------------------------
TrainerPaletteTable=@34638
TrainerImageTable=@34628
ClassMoneyLocation=@2593C
ClassNamesLocation=@D7BF4
TrainerData=@FB70

[MISC]
SizeOfBattleText=247
SizeOfPCText=325
SizeOfNatureNames=162
----------------------------------------------------------
BattleText=@32B24
PCText=@3CE6F4
NatureNames=@45E4E4


ESMERALDA BPES
BPES.ini
INI:
##########################################################
######################## READ ME #########################
##########################################################

# The symbol @ means that the offset is read dynamically from the ROM.
# Which means that even if you repointed a data, G3T will be able to find the new pointer without having you update this file, except if you did some extremely advanced ASM hacking. (Which is very rare even in the most heavily ASM hacked ROMs)
# You can still edit the offsets to make G3T go directly to the data's offset, like in most of the tools.
# You will still need to edit this file if you changed a table or a data's size. (Such as NumberOfMoves f.e.)
# Exemples of how to edit MoveData properly for an untouched English Fire Red ROM:
# - "MoveData=@1CC" (dynamic offset)
# - "MoveData=&H250C04" (direct offset, in hexadecimal)
# - "MoveData=2427908" (direct offset, in decimal)

##########################################################
######################## READ ME #########################
##########################################################



[GENERAL]
ROMCode=BPES
ROMName=Pokémon Esmeralda (Español)

[MOVE]
NumberOfContestEffects=47
NumberOfMoves=354
----------------------------------------------------------
SoundBasedMoves=&HE4D424
ContestDescriptionTable=@DB12C
ContestMoveEffectData=@DAF6C
ContestMoveData=@D8248
MoveAnimationTable=@A3A58
MoveDescriptionTable=@1C3B1C
MoveData=@1CC
MoveNames=@148

[ITEM]
IndexOfFirstTM=289
NumberOfHMs=8
NumberOfItems=376
NumberOfTMs=50
----------------------------------------------------------
TMData=@1B6930
ItemIMGData=@1AFC54
ItemData=@1C8

[ABILITY]
NumberOfAbilities=77
----------------------------------------------------------
AbilityDescriptionTable=@1C4
AbilityNames=@1C0

[POKEMON]
NumberOfPokemon=411
NumberOfMaxEvolutions=5
----------------------------------------------------------
PokemonAnimations=@128
PokemonShinyPal=@134
PokemonNormalPal=@130
PokemonBackSprites=@12C
PokemonFrontSprites=@2CAE0
MoveTutorCompatibility=@1B1FB0
TMHMCompatibility=@6E048
PokemonEvolutions=@6D140
PokemonMoveTable=@6930C
PokemonNames=@144
PokemonData=@1BC

[TRAINER]
NumberOfTrainers=742
NumberOfTrainerImages=92
NumberOfClassNames=66
----------------------------------------------------------
TrainerPaletteTable=@5DF80
TrainerImageTable=@5DF78
ClassMoneyLocation=@4E6A8
ClassNamesLocation=@183B4
TrainerData=@3587C

[MISC]
SizeOfBattleText=295
SizeOfPCText=356
SizeOfNatureNames=162
----------------------------------------------------------
BattleText=@16A228
PCText=@57E55C
NatureNames=@61F46C
Es increíble este aporte me ha servido muchisimo, muchas gracias de verdad!!!
 
U

Usuario eliminado

Invitado
Hola. Muy buenas las aportaciones sobre direcciones. Por qué no compilan todo en el post principal? Ánimo y suerte. Me gustaría a mi también probar levemente, aunque sea hacer un minihack en español. Lo que no he investigado la cantidad de espacio libre presente en el rom de RF o Rby... Bueno, buen día!
 

Acimut

Héroe de WaH
A
Hola. Muy buenas las aportaciones sobre direcciones. Por qué no compilan todo en el post principal? Ánimo y suerte. Me gustaría a mi también probar levemente, aunque sea hacer un minihack en español. Lo que no he investigado la cantidad de espacio libre presente en el rom de RF o Rby... Bueno, buen día!
En Rojo Fuego hay más espacio libre en los sectores de memoria ROM, EWRAM e IWRAM que en Fire Red, aunque la diferencia no es mucha.
 

methis69

Profesional de WaH
Buena gente,

Quisiera hacer mi aporte de investigación, localice casi por completo todos los localizadores de BPES para PGE (excepto NumberOfTilesInTilset); Ya pueden editar el orden de pokedex (tanto regional como nacional) a su gusto; Además les agrego la ubicación donde se define la cantidad de Pokémon en la pokedex regional (tanto la versión inglesa como española):

Esmeralda (BPES): 0x0BC94E
Emerald (BPEE): 0x0BC926

Solo es cuestión de modificarlo de manera manual, es decir, cambiar el byte 0xCA = 202, a la cantidad que necesiten (un máximo 0xFF=255)

Actualización: Battle Frontier (Emerald) ya es funcional poder editarlo.

[BPES]
ROMName=Pokémon Esmeralda (Español)
ItemData=58639C
AttackNames=31F9E0
TMData=618E80
TotalTMsPlusHMs=58
TotalTMs=50
ItemIMGData=617250
NumberOfItems=377
NumberOfAttacks=354
MoveTutorAttacks=617E4C
NumberOfMoveTutorAttacks=32
PokemonNames=31E82C
NumberOfPokemon=412
NationalDexTable=323F3E
SecondDexTable=323C08
HoenntoNationalDex=324274
PokedexData=56F078
NumberOfDexEntries=387
NumberOfRegionDex=202
PokemonData=326688
AbilityNames=321999
NumberOfAbilities=78
Pointer2PointersToMapBanks=84AB8
OriginalBankPointer0=4893BC
OriginalBankPointer1=4894A0
OriginalBankPointer2=4894B4
OriginalBankPointer3=4894C8
OriginalBankPointer4=4894E0
OriginalBankPointer5=4894FC
OriginalBankPointer6=48951C
OriginalBankPointer7=489540
OriginalBankPointer8=48955C
OriginalBankPointer9=489578
OriginalBankPointer10=4895B0
OriginalBankPointer11=4895D0
OriginalBankPointer12=489614
OriginalBankPointer13=48963C
OriginalBankPointer14=489698
OriginalBankPointer15=4896CC
OriginalBankPointer16=489708
OriginalBankPointer17=489744
OriginalBankPointer18=48974C
OriginalBankPointer19=489754
OriginalBankPointer20=48975C
OriginalBankPointer21=489768
OriginalBankPointer22=48976C
OriginalBankPointer23=489770
OriginalBankPointer24=489774
OriginalBankPointer25=489924
OriginalBankPointer26=489A18
OriginalBankPointer27=489B7C
OriginalBankPointer28=489B84
OriginalBankPointer29=489B88
OriginalBankPointer30=489BBC
OriginalBankPointer31=489BC0
OriginalBankPointer32=489BC4
OriginalBankPointer33=489BD0
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=5A41E8
NumberOfMapLabels=213
PokemonFrontSprites=30767C
PokemonBackSprites=308B1C
PokemonNormalPal=3098DC
PokemonShinyPal=30A69C
PokemonAnimations=3103F0
FrontAnimationTable=32FCA8
BackAnimTable=60D708
AnimDelayTable=32FE43
IconPointerTable=57E784
IconPalTable=57EE64
CryTable=6A02A8
CryTable2=6A14D8
CryConversionTable=3258D8
FootPrintTable=57215C
PokemonAttackTable=32F638
PokemonEvolutions=32B5D8
TMHMCompatibility=324B54
TMHMLenPerPoke=8
MoveTutorCompatibility=617E88
EnemyYTable=306F9C
PlayerYTable=30843C
EnemyAltitudeTable=30C030
AttackData=322B54
ContestMoveData=58EC78
ContestMoveEffectData=58F790
AttackDescriptionTable=61EE38
AbilityDescriptionTable=321D90
StarterPokemon=5B49FC
StarterPokemonLevel=B118C
StarterEncounterPokemon=32706
StarterEncounterPokemonLevel=32714
AttackAnimationTable=2D04F8
BattleFrontierTrainers=5D88A0
SlateportBattleTentTrainers=5E07E8
VerdanturfBattleTentTrainers=5E13E4
FallarborBattleTentTrainers=5E1E58
NumberOfBattleFrontierTrainers=300
NumberOfSlateportBattleTentTrainers=30
NumberOfVerdanturfBattleTentTrainers=30
NumberOfFallarborBattleTentTrainers=30
BattleFrontierPokemon=5DC590
SlateportBattleTentPokemon=5E0E00
VerdanturfBattleTentPokemon=5E19FC
FallarborBattleTentPokemon=5E2470
NumberOfBattleFrontierPokemon=882
NumberOfSlateportBattleTentPokemon=70
NumberOfVerdanturfBattleTentPokemon=45
NumberOfFallarborBattleTentPokemon=45
BattleFrontierHeldItems=5D1A84
BattleFrontierBanList=614ADA
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=DDE3E4
ShadowFronts=1000000
ShadowPals=1002660
ShadowBacks=1007320
JamboLearnableMovesTerm=0000FF
StartSearchingForSpaceOffset=E3CF64
FreeSpaceSearchInterval=100
NumberOfEvolutionsPerPokemon=5
NumberOfEvolutionTypes=255
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
EvolutionName16=Knows Move
Evolution16Param=attack
EvolutionName17=In certain map
Evolution17Param=mapname
EvolutionName18=Level-up at day
Evolution18Param=level
EvolutionName19=Level-up at night
Evolution19Param=level
EvolutionName20=Holding item at day
Evolution20Param=item
EvolutionName21=Holding item at night
Evolution21Param=item
EvolutionName22=Level-up if male
Evolution22Param=level
EvolutionName23=Level-up if female
Evolution23Param=level
EvolutionName24=Level-up if raining
Evolution24Param=level
EvolutionName25=Specific Pokemon in party
Evolution25Param=species
EvolutionName26=Level-up if pokemon with type in party
Evolution26Param=bankandmap
EvolutionName27=Using item if male
Evolution27Param=item
EvolutionName28=Using item if female
Evolution28Param=item
EvolutionName252=Wish Mega Evolution
Evolution252Param=attack
EvolutionName251=Mega Evolution
Evolution251Param=item
EvolutionName255=Revert Megas
Evolution255Param=evolvesbutnoparms
EvolutionName253=Primal Reversion
Evolution253Param=evolvesbasedonvalue
EggMoveTable=331094
EggMoveTableLimiter=70460
TrainerTable=316294
NumberOfTrainers=854
TrainerClasses=315F38
NumberOfTrainerClasses=66
TrainerImageTable=30B8B8
NumberOfTrainerImages=92
TrainerPaletteTable=30BBA0
TrainerMoneyTable=32111C
DexSizeTrainerSprite=71
TradeData=33F1AC
NumberOfTrades=4
PokedexAlphabetTable=55FD00
PokedexLightestTable=560036
PokedexSmallestTable=56033A
PokedexTypeTable=0

Para finalizar, les comparto el INI de otras herramientas para la versión BPES

GBAIntroManager
[BPES]
GameName=Pokémon Esmeralda
GameType=E
ItemData=0x58639C
NumberOfItems=376
PokemonNames=0x31E82C
NumberOfPokemon=411
StartingPosition=0x84468
IntroPokemonNumber1=0x31924
IntroPokemonNumber2=0x30B0C
IntroPokemonPicture=0x130BB8
StartingPCItem=0x5E2CD4
StartingMoney=0x845D0
TitlescreenMusic=0xAAAFC
ProfessorMusic=0x30872
SkipGender1=0x30DC4
SkipGenderTester=0x30FD5
SkipGenderOriginal=0x30DC9
SkipGender2=0x3121C
SkipGender3=0x12FAD6
SkipGender4=0x12FBC2
TruckRemovedAddr=0x86011
TruckRemovedTester=0x3A30D6
UnlockedTester=0x8447F
[/BPES]

aTack
[Nameoffset]
offset=3275245

[Dataoffset]
offset=3287892

ItemEditor
[BPES]
ItemData = &H58639C
AttackNames = &H31F9ED
TMData = &H618E80

G3T (corregí el error del entrenadores)
##########################################################
######################## READ ME #########################
##########################################################

# The symbol @ means that the offset is read dynamically from the ROM.
# Which means that even if you repointed a data, G3T will be able to find the new pointer without having you update this file, except if you did some extremely advanced ASM hacking. (Which is very rare even in the most heavily ASM hacked ROMs)
# You can still edit the offsets to make G3T go directly to the data's offset, like in most of the tools.
# You will still need to edit this file if you changed a table or a data's size. (Such as NumberOfMoves f.e.)
# Exemples of how to edit MoveData properly for an untouched English Fire Red ROM:
# - "MoveData=@1CC" (dynamic offset)
# - "MoveData=&H250C04" (direct offset, in hexadecimal)
# - "MoveData=2427908" (direct offset, in decimal)

##########################################################
######################## READ ME #########################
##########################################################



[GENERAL]
ROMCode=BPES
ROMName=Pokémon Esmeralda (Español)

[MOVE]
NumberOfContestEffects=47
NumberOfMoves=354
----------------------------------------------------------
SoundBasedMoves=&HE4D424
ContestDescriptionTable=@DB12C
ContestMoveEffectData=@DAF6C
ContestMoveData=@D8248
MoveAnimationTable=@A3A58
MoveDescriptionTable=@1C3B1C
MoveData=@1CC
MoveNames=@148

[ITEM]
IndexOfFirstTM=289
NumberOfHMs=8
NumberOfItems=376
NumberOfTMs=50
----------------------------------------------------------
TMData=@1B6930
ItemIMGData=@1AFC54
ItemData=@1C8

[ABILITY]
NumberOfAbilities=77
----------------------------------------------------------
AbilityDescriptionTable=@1C4
AbilityNames=@1C0

[POKEMON]
NumberOfPokemon=411
NumberOfMaxEvolutions=5
----------------------------------------------------------
PokemonAnimations=@128
PokemonShinyPal=@134
PokemonNormalPal=@130
PokemonBackSprites=@12C
PokemonFrontSprites=@2CAE0
MoveTutorCompatibility=@1B1FB0
TMHMCompatibility=@6E048
PokemonEvolutions=@6D140
PokemonMoveTable=@6930C
PokemonNames=@144
PokemonData=@1BC

[TRAINER]
NumberOfTrainers=742
NumberOfTrainerImages=92
NumberOfClassNames=66
----------------------------------------------------------
TrainerPaletteTable=@5DF80
TrainerImageTable=@5DF78
ClassMoneyLocation=@4E6A8
ClassNamesLocation=@183B4
TrainerData=@3587C

[MISC]
SizeOfBattleText=295
SizeOfPCText=356
SizeOfNatureNames=162
----------------------------------------------------------
BattleText=@16A228
PCText=@57E55C
NatureNames=@61F46C

HPE
# Pokemon Esmeralda (Español)
[BPES]
Version=0.9
AllowExpandPokemon=True
AllowExpandedEvolutions=True
ExpandFormat=E

NumberOfPokemon=412
BaseStatsData=0x326688
PokemonNames=0x31E82C

EvolutionData=0x32B5D8
NumberOfEvolutions=5
EvolutionTypes=None,Friendship,Friendship (Day),Friendship (Night),Level-Up,Trade,Trade (w/ Item),Stone,ATK > DEF,ATK = DEF,ATK < DEF,High Personality,Low Personality,Spawn a Second,Create Spawn,Beauty

MovesetData=0x32F638
AttackNames=0x31F9E0
NumberOfAttacks=355

TMCompatibilityData=0x324B54
TMData=0x618E80
NumberOfTMs=50
NumberOfHMs=8

PokedexData=0x56F078
PokedexFormat=E
NationalDexOrder=0x323F3E
NumberOfPokemonBetweenCelebiAndTreecko=25
NumberOfUnownAfter411=28

FootprintData=0x57215C

HasMoveTutors=True
MoveTutorData=0x617E4C
NumberOfMoveTutorAttacks=32
MoveTutorCompatibilityData=0x617E88
MoveTutorCompatibilityLength=4

FrontSpriteData=0x3103F0
BackSpriteData=0x308B1C
RegularPaletteData=0x3098DC
ShinyPaletteData=0x30A69C

IconSpriteData=0x57E784
IconPaletteData=0xDDE3E4
IconData=0x57EE64

# This isn't ready quite yet~
EnemyYTable=306F9C
PlayerYTable=30843C
EnemyAltitudeTable=30C030

# If I ever do anything with this remains to be seen~
HoennCryData=0x31F61C
CryData=0x6A02A8

TypeNames=0x32109C
NumberOfTypes=18

AbilityNames=0x321999
NumberOfAbilities=78

ItemData=0x58639C
NumberOfItems=377

TEE (el archivo a modificar se llama rom.dat)
AXPE=0x1CDC8,0x1CF08,0x1CFE4,0x1D344,0x1D44C,0x1D564,0x2237C,0x28120,0x36CD0
AXVE=0x1CDC8,0x1CF08,0x1CFE4,0x1D344,0x1D44C,0x1D564,0x2237C,0x28120,0x36CD0
BPGE=0x1E944,0x1EA84,0x1EB58,0x1EEBC,0x1EFC0,0x1F0C0,0x23CD8,0x29F90,0x39E38
BPRE=0x1E944,0x1EA84,0x1EB58,0x1EEBC,0x1EFC0,0x1F0C0,0x23CD8,0x29F90,0x39E38
BPEE=0x47134,0x47274,0x47348,0x476AC,0x477B0,0x478B0,0x4C694,0x52D18,0x63A8C,0x1900B8
BPES=0x47134,0x47274,0x47348,0x476AC,0x477B0,0x478B0,0x4C694,0x52D18,0x63A8C,0x18FCA8
eof
AXPE=0x2E3A8
AXVE=0x2E3A8
BPGE=0x309C8
BPRE=0x309C8
BPEE=0x166F4
BPES=0x166F4
eof

READ ME BEFORE EDITING!!!

The format for this file is simple.
It is just a rom code followed by a list of pointers that need to be repointed if the size is bigger...
[ROM Code]=[pointer1,pointer2,...,pointerN]
Then it is ended by "eof" and everything after that is not read.
The second set of offsets is for type names.

HTE (que chulada de herramienta, casi no tuve editar nada, solo validar)
; Pokémon Esmeralda (Español)
[pokemon]
Count=412
Names=0x144

[pokemon_sprites]
FrontData=0x2CAE0
RegularPalettes=0x130

[items]
Count=377
Data=0x1C8

[attacks]
Count=355
Names=0x148

[trainers]
Count=855
Data=0x3587C

[trainer_classes]
Count=66
Data=0x4E6A8
Names=0x183B4

[trainer_sprites]
Count=93
Data=0x5DF78
Palettes=0x5DF80

PD: Si tienen herramienta que se pueda editar el INI y es compatible con la versión BPEE; En corto díganme el nombre y con gusto hago la conversión.

Saludos
 
Última edición:

methis69

Profesional de WaH
Ahora viene lo fuerte, después de una minado muy profundo logre que G3HS pueda leer BPES, es decir, que ya es posible agregar nuevos metodos de evolution (acabo de testear y jala al 100).

[BPES]
name = Pokemon Esmeralda (S)
gamecode = BPES
numberofpokes = 412
pokebasestats = 0x326688
pokebasestatslength = 0x1C
pokenames = 0x31E82C
pokenameslength = 0xB
typenames = 0x32109C
typenameslength = 0x7
numberoftypes = 18
items = 0x58639C
numberofitems = 0x179
itemsdatalength = 0x2C
abilities = 0x321999
numberofabilities = 0x4E
abiltiesnamelength = 0xD
egggroups = Monster,Water1,Bug,Flying,Field,Fairy,Grass,Human-Like,Water3,Mineral,Amorphous,Water2,Ditto,Dragon,Undiscovered
leveluptypes = Medium-Fast,Erratic,Fluctuating,Medium-Slow,Fast,Slow
learnedmoves = 0x32F638
learnedmoveslength = 0x2
attacknames = 0x31F9E0
numberofattacks = 0x163
attacknamelength = 0xD
eggmovepointer1 = 0x703EC
eggmovepointer2 = 0x70464
eggmovelimit = 0x70460
tmhmcompatibility = 0x324B54
tmhmcompatibilitylength = 8
tmlist = 0x618E80
tmlistentrylength = 2
numberoftms = 50
numberofhms = 8
evolutiontable = 0x32B5D8
evolutionsperpoke = 5
lengthofoneentry = 8
evolutionmethods = Breeding Only,Friendship,Friendship (Day),Friendship (Night),Level-Up,Trade,Stone,Trade (Hold Item),ATK > DEF,ATK = DEF,ATK < DEF,PID (Wurmple->Silcoon),PID (Wurmple->Cascoon),Spawn a Second,Create Spawn,Beauty
evomethodsproperties = None,None,None,None,Level,None,Item,Item,Level,Level,Level,Level,Level,Level,Level,None
evolutiontablepointers = 0x6D140,0x6D190,0x6D234,0x6D384,0x7002C,0x13E18C
offsetstochangetolslr0r60x1 = 0x6D170,0x6D38E,0x6D1DC,0x6D238,0x6D248,0x6D272,0x6D29C,0x6D2CA,0x6D2EA,0x6D30E,0x6D31E
offsetstochangetonewminus1 = 0x6D338,0x6D3AA,0x70032
theshedinjafix = 0x13E02E
changetonewnumbertimes8 = 0x7001A,0x70050,0x7001E,0x70052
pokedex = 0x56F078
lengthofpokedexentry = 0x20
nationaldexorder = 0x323C08
numofnondexpokesbetweencelebiandtreeko = 25
numofnondexpokesafterchimecho = 28
dextype = E
jambo51learnedmovehack = False
numofpokesbetweencelebiandtreeko = 25
movetutorcomp = 0x617E88
movetutorcomplen = 4
movetutorattacks = 0x617E4C
mtattackslen = 2
mtattacksnum = 32
frontspritetable = 0x3103F0
backspritetable = 0x308B1C
frontpalettetable = 0x3098DC
shinypalettetable = 0x30A69C
enemyytable = 0x306F9C
playerytable = 0x30843C
enemyaltitudetable = 0x30C030
iconspritetable = 0x57E784
iconpalettetable = 0x57EE64
iconpalettes = 0xDDE3E4
numiconpalettes = 3
footprints = 0x57215C
locationnames = 0x5A41E8
locationstart = 0x0
locationend = 0xD4
locationtblfmt = 2

Afortunadamente la versión inglesa y española comparten los mismos localizadores (pointer), excepto la tabla Pokémon (luego les explico que show con ella) para la rutina para evolucionar si es macho, si es hembra o por movimiento.

Para ahorrarme la molestia de redactar como hacerlo paso por paso, usare la explicación textual de nuestro buen amigo Naren Jr. pero modificando los valores acorde al PBES y una que otra aclaración.

Les comparto el link donde viene su explicación pero para FR (versión ingles)
https://whackahack.com/foro/threads/fr-nuevos-metodos-evolutivos.40029/

La herramienta que vamos a usar será HxD.

Para hacer este sistema deberemos expandir nuestra tabla de evoluciones, esta se encuentra en la dirección 0x6D198 y estando en esta dirección vamos a copiar 3C byte de longitud.
evidencia1.png


Al tenerle copiado vamos a buscar espacio libre donde colocarle, yo lo haré en E3D000, nos vamos a la dirección que escogieron, selecciona 3C byte de longitud y la pegan con Crtl+B.
evidencia1.png


Ahora vamos a ir a la dirección 0x6D194 donde se encuentra el viejo puntero de la tabla que acabamos de expandir (4 byte de longitud), aquí colocaremos nuestro nuevo offset permutado, en mi caso sería colocar 00 D0 E3 08; Cuando se dice permutado se agrega de esta manera: se inicia con el ultimo par byte de 0xE3D000, luego el segundo par de 0xE3D000, posterior el primer par byte de 0xE3D000 y se termina con 08 para indicar que es un pointer. Recuerden seleccionar 4 byte de longitud y posterior pegar.
evidencia1.png


Ahora vamos a ir a esta dirección 0x06D180 donde modificaremos el límite de métodos de evoluciones que permite el juego; En esta generación el limite son 14=0E (hexadecimal), como vamos agregar 3 nuevos métodos lo vamos aumentar a 17=11 (hexadecimal)
evidencia1.png


Lo que haremos ahora será meter las rutinas (hembra, macho, y Por movimiento):

main:

push {r0-r7}

add r0, r6, r7

lsl r0, r0, #0x3

add r0, r2, r0

add r3, r0, r3

ldrb r2, [r3, #0x2]

mov r0, r8

bl decrypt2

mov r11, r0

pop {r0-r7}

mov r1, r11

cmp r1, r2

blt exit

mov r0, r8

mov r1, #0xFF

ldr r0, [r0, #0x0]

and r1, r0

mov r0, r8

bl decrypt

mov r11, r0

pop {r0-r7}

mov r5, r11

ldr r2, pokemondata

mov r4, #0x1C

mul r5, r4

add r5, r5, r2

ldrb r5, [r5, #0x10]

cmp r1, r5

bge exit

mov r10, r3

pop {r0-r7}

mov r1, r10

ldr r0, levelcheckloc

bx r0

exit: pop {r0-r7}

ldr r0, noevo

bx r0

decrypt: push {r0-r7}

mov r1, #0xB

ldr r2, decryptpoke

bx r2

decrypt2: push {r0-r7}

mov r1, #0x38

ldr r2, decryptpoke

bx r2

.align

levelcheckloc: .word 0x0806D32F

noevo: .word 0x0806D333

decryptpoke: .word 0x0806A519

pokemondata: .word 0x08326688
main:

push {r0-r7}

add r0, r6, r7

lsl r0, r0, #0x3

add r0, r2, r0

add r3, r0, r3

ldrb r2, [r3, #0x2]

mov r0, r8

bl decrypt2

mov r11, r0

pop {r0-r7}

mov r1, r11

cmp r1, r2

blt exit

mov r0, r8

mov r1, #0xFF

ldr r0, [r0, #0x0]

and r1, r0

mov r0, r8

bl decrypt

mov r11, r0

pop {r0-r7}

mov r5, r11

ldr r2, pokemondata

mov r4, #0x1C

mul r5, r4

add r5, r5, r2

ldrb r5, [r5, #0x10]

cmp r1, r5

blt exit

mov r10, r3

pop {r0-r7}

mov r1, r10

ldr r0, levelcheckloc

bx r0

exit: pop {r0-r7}

ldr r0, noevo

bx r0

decrypt: push {r0-r7}

mov r1, #0xB

ldr r2, decryptpoke

bx r2

decrypt2: push {r0-r7}

mov r1, #0x38

ldr r2, decryptpoke

bx r2

.align

levelcheckloc: .word 0x0806D32F

noevo: .word 0x0806D333

decryptpoke: .word 0x0806A519

pokemondata: .word 0x08326688
.text

.align 2

.thumb

.thumb_func

.global Evomove



main:

push {r0-r7}

add r0, r6, r7

lsl r0, r0, #0x3

add r0, r2, r0

add r3, r0, r3

ldrh r2, [r3, #0x2]

mov r0, r8

mov r5, #0x0

loop:

mov r1, #0xD

add r1, r1, r5

bl decrypt

mov r11, r0

pop {r0-r7}

mov r1, r11

cmp r1, r2

beq true

cmp r5, #0x3

beq exit

add r5, #0x1

b loop



decrypt:

push {r0-r7}

ldr r2, decryptpoke

bx r2

true:

mov r9, r3

pop {r0-r7}

mov r1, r9

ldr r0, levelcheckloc

bx r0

exit:

pop {r0-r7}

ldr r0, noevo

bx r0



.align

levelcheckloc: .word 0x0806D32F

noevo: .word 0x0806D333

decryptpoke: .word 0x0806A519DC


Si expandieron su tabla de pokemon hay que modificar la última línea para la rutina macho y hembra, ejemplo: La pokemondata de la versión inglesa y española no comparten la misma direccion.

pokemondata: .word 0x083203CC (versión inglesa)
pokemondata: .word 0x08326688 (versión española)

Solo hay que sustituir lo que está en negrita con la nueva direccion de su tabla pokemon; Ojo, en la rutina la direccion no está permutada.

NOTA: No olviden guardar las rutinas con terminación .asm (pueden usar el bloc de notas o notepad ++) para compilarlo después; Si necesitan saber cómo hacer la compilación, les comparto el link de un anglo, que lo explica facialmente:
https://www.pokecommunity.com/threads/asm-resource-thread.339153/page-10#post-8526603


Una vez la tengamos las tres compilación
evidencia1.png


Ahora lo colocaremos en nuestra ROM, el offset que quieran yo lo insertaré en 0xE3D050 (Female), 0xE3D0D0 (Male) y 0xE3D150 (Move); No olviden primero seleccionar la longitud de bytes que tiene cada rutina y posterior pegar.
evidencia1.png


Ahora lo último que queda hacer es tomar esas direcciones 0xE3D050 (Female), 0xE3D0D0 (Male) y 0xE3D150 (Move) y permutarlas: En mi caso son: 50 D0 E3 08 (Female), D0 D0 E3 08 (Male), 50 D1 E3 08 (Move) y la insertaremos en la tabla que expandimos (En mi caso es 0xE3D000); Les recuerdo seleccionar la longitud de los byte necesarios (en este caso C bytes) y posterior pegar.
evidencia1.png

Y guardamos, ya después de esto no será necesario seguir con el HxD abierto.

Lo siguiente que haremos será abrir nuestro hack con GenIII Suit (G3HS) y esperar que nos cree nuestra ini (Para los despistados Gen Suit marca tu rom en el Offset FFFFFC colocando una numeración, para cuando abras la ini del programa sepas cuales datos son los tuyos.) una vez que ya este enumerado nuestro rom, abramos PokeRoms.ini y busquemos una enumeración que tenga BPES, posterior buscar evolutionmethods y evomethodsproperties:

En evolutionmethods vamos agregar el método evolución si es hembra, macho y por movimiento, se inicia primero con la Female porque fue la primera que agregamos en nuestra nueva tabla método evolutivo, posterior Male y por últimos Move
evidencia1.png


En evomethodsproperties vamos agregar la propiedad de evolución: Level (por subir de nivel), Item (por objeto), None (ahí sí ni idea), Move (por movimiento), Pokemon (podría suponer pero no estoy seguro), Location (ubicación); En este caso será ,Level,Level,Move
evidencia1.png


NOTA INFORMATIVA:
Si cambiaron el número de evoluciones por POKéMON usando G3HS, además de modificar la ubicación de la nueva tabla de Pokémon en la rutina Female y Male, hay que editar la rutina ya compilada según el numero de evolución por POKéMON:
8 evolutiones por POKéMON: Cambia F0 19 por 70 00
16 evolutiones por POKéMON: Cambia F0 19 por B0 00
32 evolutiones por POKéMON: Cambia F0 19 por F0 00
evidencia1.png

Aun no he testeado con el numero de evoluciones aumentado, pero la versión ingles así se modifica; Ahí me comenta si tuvieron éxito


Saludos y animo para hacer un ROM Hacks 100% en español.
 
Última edición:

methis69

Profesional de WaH
Vamos con todo mi gente, ahora les voy a explicar cómo agregar el tipo Hada para la versión BPES , usando como referencia la explicación del buen amigo Jaizu; Anexo su link de explicación:

Cosas necesarias:
Una rom de Emerald
Un editor HEX, muy recomendablemente HxD
unLZ-GBA
NSE 2.X
Paint XP

¡ATENCION!
No voy agregar un nuevo tipo, sino más bien voy a sustituir el tipo (?); ¿Por qué? Primero y principal razón, no soy bueno en diseño gráfico y me da una señora pereza dominar el tema de las paletas, por eso el color del icono tipo Hada será azul alba marino (se hizo lo que se pudo); Y segundo, recorta bastante el proceso.

Les comparto la imagen que yo edite con el icono tipo HADA ya modificado:

Si quieren editar su propio icono de tipo Hada y jugar con las paletas, les explico como exportar la imagen para su edición y nada mas; Al igual que yo, no domina ese tema, les recomiendo ir al paso importar la imagen usando la imagen que les compartí.

Exportar imagen de icono de tipo: Abrimos el NSE 2.x y vamos a la función Navigate; Para abrirla ponemos el offset 0xD970EC. Hacemos que el width sea 4 y no ponemos nada en Offsets > palette; Hagan su magia (seria editar el icono ? por la palabra HADA y jugar con las paletas), una vez que terminen de editar, solo queda exportar la imagen como Bitmap.
imagen.png


Importar imagen de icono de tipo: Ahora abriremos unlz-gba y cargaremos nuestro ROM. Hay que importar la imagen con Import y posterior Write to Rom (solo debe estar palomeado Export Image). Antes de poner OK, analicen bien donde van localizar la imagen, yo recomiendo una localización con bastante espacio porque después de la imagen, vamos agregar varias tablas expandida a lado; En este tutorial vamos a usar 0xE3D1B0.

NOTA: Sin modificar la dirección Palette Offset

imagen.png


Cerramos el UNL-GBA, apuntamos nuestra dirección de la imagen en cualquier lado, teniendo cuidado de no perderla.

Ahora sigue lo tedioso pero les voy ahorrar mucha paja, abrimos nuestra ROM con un editor HEX, muy recomendado usar HxD.

Solo hay un puntero para la imagen de icono de tipo, lo cual nos facilita mucho las cosas. Nos vamos a la dirección 0x61F8D8 y cambiamos el puntero.

NOTA: Recuerda que los punteros, la dirección siempre esta permutada.

Dirección normal:
XX YY ZZ

Dirección permutada:
ZZ YY XX 08

Ejemplo, el offset en este tutorial es 0xE3D1B0, se modifica el puntero a B0 D1 E3 08.
imagen.png


Y listo, hemos terminado la edición la imagen del icono de tipo (agregar un nuevo tipo son varios paso más que no aplica en este tutorial), ahora sigue modificar la efectividad de los tipos.

Para empezar con ello vamos a la dirección 0x320F4C y seleccionamos 150 byte de longitud o usar Selección de bloque (HxD) de esta manera. Luego pegar en un espacio libre. Es recomendable pegarlos a lado de nuestra imagen para tener una secuencia, en mi caso será 0xE3DC40.
imagen.png


Os explico como leer la tabla de efectividad, hay que dividirla en tres par de bytes: XX YY ZZ
XX=ATACANTE (tipo)
YY=DEFENSOR (tipo)
ZZ=EFECTIVIDAD

Estos son los tipo de efectividad:
00 = Inmune
05 = Poco Efectivo
14 = Muy efectivo

Y esto los tipos:
Normal = 00
Lucha = 01
Volador = 02
Veneno = 03
Tierra = 04
Roca = 05
Bicho = 06
Fantasma = 07
Acero = 08
Hada = 09
Fuego = 0A
Agua = 0B
Planta = 0C
Eléctrico = 0D
Psíquico = 0E
Hielo = 0F
Dragón = 10
Siniestro = 11
NOTA: Les recuerdo, 09 originalmente seria (?) pero lo sustituimos por el tipo HADA

Si respectamos el canon efectividad actual, seria quitar que tipo acero ya no sea resistente al tipo siniestro y fantasma, es decir, quitar 11 08 05 y 07 08 05; Además de agregar el tipo HADA en la ecuación: contra que es efectivo, resistente, débil o nulo. Si vas aplicar tu juego, tus reglas, es decir crear tu propia tabla de efectividad, solo debes respectar que siempre termine con los bytes FE FE 00 00 07 00 01 07 00 FF FF 00; Si eres curioso, FE FE 00 00 07 00 01 07 00 esta relacionado con la inmunidad de tipo fantasma con los tipos normal y lucha, los anglos recomienda no tocar.

Les voy ahorrar la paja y les comparto como debe quedar:
00 05 05 00 08 05 0A 0A 05 0A 0B 05 0A 0C 14 0A 0F 14 0A 06 14 0A 05 05 0A 10 05 0A 08 14 0B 0A 14 0B 0B 05 0B 0C 05 0B 04 14 0B 05 14 0B 10 05 0D 0B 14 0D 0D 05 0D 0C 05 0D 04 00 0D 02 14 0D 10 05 0C 0A 05 0C 0B 14 0C 0C 05 0C 03 05 0C 04 14 0C 02 05 0C 06 05 0C 05 14 0C 10 05 0C 08 05 0F 0B 05 0F 0C 14 0F 0F 05 0F 04 14 0F 02 14 0F 10 14 0F 08 05 0F 0A 05 01 00 14 01 0F 14 01 03 05 01 02 05 01 0E 05 01 06 05 01 09 05 01 05 14 01 11 14 01 08 14 03 0C 14 03 03 05 03 04 05 03 05 05 03 07 05 03 08 00 03 09 14 04 0A 14 04 0D 14 04 0C 05 04 03 14 04 02 00 04 06 05 04 05 14 04 08 14 02 0D 05 02 0C 14 02 01 14 02 06 14 02 05 05 02 08 05 0E 01 14 0E 03 14 0E 0E 05 0E 11 00 0E 08 05 06 0A 05 06 0C 14 06 01 05 06 03 05 06 02 05 06 0E 14 06 07 05 06 11 14 06 08 05 06 09 05 05 0A 14 05 0F 14 05 01 05 05 04 05 05 02 14 05 06 14 05 08 05 07 00 00 07 0E 14 07 11 05 07 07 14 10 10 14 10 08 05 10 09 00 11 01 05 11 0E 14 11 07 14 11 11 05 11 08 05 11 09 05 08 0A 05 08 0B 05 08 0D 05 08 0F 14 08 05 14 08 08 05 08 09 14 09 10 14 09 01 14 09 11 14 FE FE 00 00 07 00 01 07 00 FF FF 00

Ahora que ya tenemos nuestra tabla efectividades expandida listas, solo nos queda repuntar la tabla original por la nuestra; Para ello pulsaremos Control + R. En buscar pondremos el puntero original, que es 4C 0F 32 08 y en Reemplazar por pondremos 40 DC E3 08 si están usando el offset del tutorial, y si no vuestro puntero, les recuerdo debe estar permutado. Le damos a Reemplazar Todo.
imagen.png


Ahora vamos a modificar los nombres de los tipos, al igual que la tabla efectividad, vamos a copiar la tabla de nombre tipo y expandirla; En este caso seria desde la dirección 0x32109C "Selección de bloque" con longitud 80. Y copiamos y lo pegamos a lado de nuestra tabla de efectividad expandida, en mi caso sería 0xE3DDC0.
imagen.png


Ahora les voy a explicar cómo leer y redactar los nombres de tipo.

Cada nombre de tipo tiene 7 par bytes de longitud. Tendremos que modificar (?) por el nombre HADA; Si me pregunta donde esta localizado el nombre tipo 09 en nuestra tabla nombre tipo expandida, usando la ubicación 0xE3DDC0 como referencia seria 0xE3DDFF.

Anexo como leer cada byte por letra
00=
01=À
02=Á
03=Â
04=Ç
05=È
06=É
07=Ê
08=Ë
09=Ì
0B=Î
0C=Ï
0D=Ò
0E=Ó
0F=Ô
10=Æ
11=Ù
12=Ú
13=Û
14=Ñ
15=ß
16=à
17=á
19=ç
1A=è
1B=é
1C=ê
1D=ë
1E=ì
20=î
21=ï
22=ò
23=ó
24=ô
25=æ
26=ù
27=ú
28=û
29=ñ
2A=º
2B=ª
2C=·
2D=&
2E=+
34=[Lv]
35==
36=;
51=¿
52=¡
53=[PK]
54=[MN]
55=[PO]
56=[Ke]
57=[BL]
58=[OC]
59=[K]
5A=Í
5B=%
5C=(
5D=)
68=â
6F=í
79=
7A=[D]
7B=[L]
7C=[R]
A1=0
A2=1
A3=2
A4=3
A5=4
A6=5
A7=6
A8=7
A9=8
AA=9
AB=!
AC=?
AD=.
AE=-
AF=·
B0=[...]
B1="
B2=["]
B3='
B4=[']
B5=[m]
B6=[f]
B7=$
B8=,
B9=[x]
BA=/
BB=A
BC=B
BD=C
BE=D
BF=E
C0=F
C1=G
C2=H
C3=I
C4=J
C5=K
C6=L
C7=M
C8=N
C9=O
CA=P
CB=Q
CC=R
CD=S
CE=T
CF=U
D0=V
D1=W
D2=X
D3=Y
D4=Z
D5=a
D6=b
D7=c
D8=d
D9=e
DA=f
DB=g
DC=h
DD=i
DE=j
DF=k
E0=l
E1=m
E2=n
E3=o
E4=p
E5=q
E6=r
E7=s
E8=t
E9=u
EA=v
EB=w
EC=x
ED=y
EE=z
EF=[>]
F0=:
F1=Ä
F2=Ö
F3=Ü
F4=ä
F5=ö
F6=ü
F7=
F8=[d]
F9=[l]
FA=\l
FB=\p
FC=\c
FD=\v
FE=\n
FF=\x

Les voy ahorrar la paja otra vez:
C8 C9 CC C7 BB C6 FF C6 CF BD C2 BB FF 00 D0 C9 C6 BB BE AD FF D0 BF C8 BF C8 C9 FF CE C3 BF CC CC BB FF CC C9 BD BB FF 00 00 BC C3 BD C2 C9 FF 00 C0 BB C8 CE AD FF 00 BB BD BF CC C9 FF 00 C2 BB BE BB FF 00 00 C0 CF BF C1 C9 FF 00 BB C1 CF BB FF 00 00 CA C6 BB C8 CE BB FF BF C6 06 BD CE AD FF CA CD 5A CB AD FF 00 C2 C3 BF C6 C9 FF 00 BE CC BB C1 0E C8 FF CD C3 C8 C3 BF AD FF 00 00

A continuación, vamos a reemplazar, es decir, repuntar la vieja tabla de nombre de tipo (9C 10 32 08) por nuestra tabla (en mi caso C0 DD E3 08).
imagen.png


Casi lo tenemos, solo falta expandir dos tablas; Le toca la tabla 0x2F7968 y selección de bloque con longitud 90 y lo pegamos en espacio libre. En mi caso, a lado de la tabla de nombre tipo expandido, así que usaré el offset 0xE3DE50.
imagen.png


Si la separamos en bloques, siguen esta estructura:
06 DE E3 08 0A 00 00 00

Los primeros 5 bloques son el puntero (permutado) hacia el nombre de tipo, el 0A es la ID del tipo y el resto son simples 00 que tenemos que respetar.

En este paso es TOTALMENTE opcional pero servirá de referencia si deseas cambiar el nombre de todos los tipos en un futuro; Sencillamente hay que repuntar el nombre de cada tipo de la tabla vieja hacia la tabla nueva (0xE3DDC0).
9C 10 32 08 reemplazar todo por C0 DD E3 08 (NORMAL)
E2 10 32 08 reemplazar todo por 06 DE E3 08 (FUEGO)
E9 10 32 08 reemplazar todo por 0D DE E3 08 (AGUA)
F7 10 32 08 reemplazar todo por 1B DE E3 08 (ELECTRICO)
F0 10 32 08 reemplazar todo por 14 DE E3 08 (PLANTA)
05 11 32 08 reemplazar todo por 29 DE E3 08 (HIELO)
B8 10 32 08 reemplazar todo por DC DD E3 08 (TIERRA)
BF 10 32 08 reemplazar todo por E3 DD E3 08 (ROCA)
AA 10 32 08 reemplazar todo por CE DD E3 08 (VOLADOR)
FE 10 32 08 reemplazar todo por 22 DE E3 08 (PSIQUICO)
A3 10 32 08 reemplazar todo por C7 DD E3 08 (LUCHA)
B1 10 32 08 reemplazar todo por D5 DD E3 08 (VENENO)
C6 10 32 08 reemplazar todo por EA DD E3 08 (BICHO)
CD 10 32 08 reemplazar todo por F1 DD E3 08 (FANTASMA)
0C 11 32 08 reemplazar todo por 30 DE E3 08 (DRAGON)
D4 10 32 08 reemplazar todo por F8 DD E3 08 (ACERO)
13 11 32 08 reemplazar todo por 37 DE E3 08 (SINIESTRO)

Independientemente si desean o no hacerlo, notaran que el nombre del tipo 09 no esta en la tabla original, así que hay que agregarlo, si están usando el offset del tutorial seria así:
FF DD E3 08 09 00 00 00

Una vez que tenemos que repuntar la vieja tabla (0x2F7968) por la nueva tabla, en este caso seria 0xE3DE50.

imagen.png


Nos falta una tabla y vamos hacer exactamente lo mismo; posición inicial 5729DC con selección de bloque con longitud 90; Y pegar a lado de la anterior tabla, en mi caso lo colocare en 0xE3DF00 (perdón si no pongo imagen de referencia pero cada comentario tiene un limite 10 imagenes)

En esta ocasión, solo vamos agregar esta línea:
69 B5 5E 08 FF DD E3 08

En negritas es la ubicación el nombre del tipo HADA; Una vez que tenemos nuestra nueva tabla expandida, simplemente falta repuntar/sustituir la tabla vieja por la nueva.

imagen.png


Por último, tenemos que hacer que el tipo HADA se vea en la Pokédex y para eso nos vamos a la ubicación 0x572A8E y cambiamos el 00 por un 09, que es la ID de nuestro tipo; Si en un futuro desean agregar un nuevo tipo se tendrá que expandir la tabla en otro lugar y repuntar (para estas alturas, ya son unos expertos, reemplazar todo 8E 2A 57 08 por la ubicación de la nueva tabla expandida).

Como paso final, la neta no se si es necesario o no (porque no agregamos un nuevo tipo) pero por si las moscas, vamos a las direcciones 0x572AA6 y 0x572AAE. Y en ellas encontrarás un 12, cámbialo por un 13 y finalizamos.


Saludos y animo
 
Última edición:

methis69

Profesional de WaH
Hola gente, ahora le toca BPRS (ROM Pokémon Rojo Fuego en Español); Les comparto los INI de varias herramientas para que puedan editarlo y también les comparto la ubicación donde se define la cantidad de Pokémon en la pokedex regional (tanto en la versión inglesa y española):

Rojo fuego: 0x1069D0
Fire red: 0x106828
cambiar el byte 0x97 = 151 por la cantidad de pokémon de la dex regional (máximo 255 o 0xFF)

NT: se agradece al buen amigo Acimut que nos compartió el dato

PGE (Al igual que esmeralda, esta semi completo porque aun no he podido localizar los NumberOfTilesInTilset)
[BPRS]
ROMName=Pokémon Rojo Fuego
ItemData=3D4F50
AttackNames=242800
TMData=454E84
TotalTMsPlusHMs=58
TotalTMs=50
ItemIMGData=3CF48C
NumberOfItems=375
NumberOfAttacks=354
MoveTutorAttacks=4541D8
NumberOfMoveTutorAttacks=16
PokemonNames=24164C
NumberOfPokemon=412
NationalDexTable=24D7B6
SecondDexTable=24D480
PokedexData=44912C
NumberOfDexEntries=387
NumberOfRegionDex=151
PokemonData=24FF4C
AbilityNames=24B408
NumberOfAbilities=78
Pointer2PointersToMapBanks=34DE70
OriginalBankPointer0=34A9DC
OriginalBankPointer1=34A9F8
OriginalBankPointer2=34AA14
OriginalBankPointer3=34AA30
OriginalBankPointer4=34AA4C
OriginalBankPointer5=34AA68
OriginalBankPointer6=34AA84
OriginalBankPointer7=34AAA0
OriginalBankPointer8=34AABC
OriginalBankPointer9=34AAD8
OriginalBankPointer10=34AAF4
OriginalBankPointer11=34AB10
OriginalBankPointer12=34AB2C
OriginalBankPointer13=34AB48
OriginalBankPointer14=34AB64
OriginalBankPointer15=34AB80
OriginalBankPointer16=34AB9C
OriginalBankPointer17=34ABB8
OriginalBankPointer18=34ABD4
OriginalBankPointer19=34ABF0
OriginalBankPointer20=34AC0C
OriginalBankPointer21=34AC28
OriginalBankPointer22=34AC44
OriginalBankPointer23=34AC60
OriginalBankPointer24=34AC7C
OriginalBankPointer25=34AC98
OriginalBankPointer26=34ACB4
OriginalBankPointer27=34ACD0
OriginalBankPointer28=34ACEC
OriginalBankPointer29=34AD08
OriginalBankPointer30=34AD24
OriginalBankPointer31=34AD40
OriginalBankPointer32=34AD5C
OriginalBankPointer33=34AD78
OriginalBankPointer34=34AD94
OriginalBankPointer35=34ADB0
OriginalBankPointer36=34ADCC
OriginalBankPointer37=34ADE8
OriginalBankPointer38=34AE04
OriginalBankPointer39=34AE20
OriginalBankPointer40=34AE3C
OriginalBankPointer41=34AE58
OriginalBankPointer42=34AE74
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=3EBF80
NumberOfMapLabels=109
NumberOfTilesInTilset2D4AAC=58
NumberOfTilesInTilset2D4AC4=5E
NumberOfTilesInTilset2D4ADC=4E
NumberOfTilesInTilset2D4AF4=85
NumberOfTilesInTilset2D4B0C=D9
NumberOfTilesInTilset2D4B24=A7
NumberOfTilesInTilset2D4B3C=EF
NumberOfTilesInTilset2D4B54=BF
NumberOfTilesInTilset2D4B6C=3F
NumberOfTilesInTilset2D4B84=AF
NumberOfTilesInTilset2D4B9C=C7
NumberOfTilesInTilset2D4BB4=185
NumberOfTilesInTilset2D4BCC=42
NumberOfTilesInTilset2D4BE4=FE
NumberOfTilesInTilset2D4BFC=A0
NumberOfTilesInTilset2D4C14=229
NumberOfTilesInTilset2D4C2C=86
NumberOfTilesInTilset2D4C44=100
NumberOfTilesInTilset2D4C5C=2F
NumberOfTilesInTilset2D4C74=1F
NumberOfTilesInTilset2D4C8C=AF
NumberOfTilesInTilset2D4CA4=21
NumberOfTilesInTilset2D4CBC=180
NumberOfTilesInTilset2D4CD4=180
NumberOfTilesInTilset2D4CEC=16C
NumberOfTilesInTilset2D4D04=64
NumberOfTilesInTilset2D4D1C=53
NumberOfTilesInTilset2D4D34=4A
NumberOfTilesInTilset2D4D4C=3F
NumberOfTilesInTilset2D4D64=2D
NumberOfTilesInTilset2D4D7C=5F
NumberOfTilesInTilset2D4D94=14F
NumberOfTilesInTilset2D4DC4=2A
NumberOfTilesInTilset2D4DF4=97
NumberOfTilesInTilset2D4E0C=9C
NumberOfTilesInTilset2D4E24=F7
NumberOfTilesInTilset2D4E54=85
NumberOfTilesInTilset2D4E6C=F5
NumberOfTilesInTilset2D4E84=B7
NumberOfTilesInTilset2D4E9C=98
NumberOfTilesInTilset2D4EB4=3A
NumberOfTilesInTilset2D4ECC=179
NumberOfTilesInTilset2D4EE4=47
NumberOfTilesInTilset2D4EFC=64
NumberOfTilesInTilset2D4F14=7F
NumberOfTilesInTilset2D4F2C=101
NumberOfTilesInTilset2D4F44=67
NumberOfTilesInTilset2D4F5C=2D
NumberOfTilesInTilset2D4F74=A9
NumberOfTilesInTilset2D4F8C=D6
NumberOfTilesInTilset2D4FA4=3F
NumberOfTilesInTilset2D4FEC=E1
NumberOfTilesInTilset2D5004=29
NumberOfTilesInTilset2D501C=DB
NumberOfTilesInTilset2D5034=5D
NumberOfTilesInTilset2D504C=11C
NumberOfTilesInTilset2D5064=97
NumberOfTilesInTilset2D507C=EF
NumberOfTilesInTilset2D5094=11F
NumberOfTilesInTilset2D50AC=4E
NumberOfTilesInTilset2D50C4=180
NumberOfTilesInTilset2D50DC=75
PokemonFrontSprites=230818
PokemonBackSprites=231CB8
PokemonNormalPal=232A78
PokemonShinyPal=233838
IconPointerTable=3CE958
IconPalTable=3CF038
CryTable=483210
CryTable2=484440
CryConversionTable=24F19C
FootPrintTable=43A6C8
PokemonAttackTable=258F7C
PokemonEvolutions=254F1C
TMHMCompatibility=24E390
TMHMLenPerPoke=8
MoveTutorCompatibility=4541F6
EnemyYTable=230138
PlayerYTable=2315D8
EnemyAltitudeTable=235770
AttackData=24C3CC
AttackDescriptionTable=47EF78
AbilityDescriptionTable=24B2D0
AttackAnimationTable=1C6420
IconPals=3CE8F8
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=25A6D4
EggMoveTableLimiter=45C9C
HabitatTable=44D528
ItemAnimationTable=45A3CC
TrainerTable=23A234
NumberOfTrainers=742
TrainerClasses=239CC4
NumberOfTrainerClasses=107
TrainerImageTable=234CE8
NumberOfTrainerImages=147
TrainerPaletteTable=235188
TrainerMoneyTable=24A98C
DexSizeTrainerSprite=135
TradeData=268754
NumberOfTrades=9
PokedexAlphabetTable=43E834
PokedexLightestTable=43EB6A
PokedexSmallestTable=43EE6E
PokedexTypeTable=43F172

GBA INTRO MANAGER
[BPRS]
GameName=Pokémon FireRed
GameType=FR
ItemData=0x3D4F50
NumberOfItems=374
PokemonNames=0x24164C
NumberOfPokemon=411
PokemonImageTable=0x230818
PokemonPaletteTable=0x232A78
StartingPosition=0x54AF4
IntroPokemonNumber1=0x1310C8
IntroPokemonNumber2=0x12FCB4
IntroPokemonPicture=0x230900
TitlescreenCry=0x79226
StartingPCItem=0x3FCB9C
StartingMoney=0x54C54
TitlescreenMusic=0x78B2C
ProfessorMusic=0x12F9B2
TitlescreenTime=0x78C54
SkipGender1=0x12FF20
SkipGender2=0x12FF78
SkipGender3=0x13003A
SkipGender4=0x130126
FlashbackRemove=0x111130
RivalNamingRemove=0x130350
[/BPRS]

aTack
[Nameoffset]
offset=2369549

[Dataoffset]
offset=2409420

IntemEditor
[BPRS]
ItemData = &H3D4F50
AttackNames = &H24C3CC
TMData = &H454E84

G3T (lo recomiendo sea su herramienta principal por agilidad y por la letra ñ)
##########################################################
######################## READ ME #########################
##########################################################

# The symbol @ means that the offset is read dynamically from the ROM.
# Which means that even if you repointed a data, G3T will be able to find the new pointer without having you update this file, except if you did some extremely advanced ASM hacking. (Which is very rare even in the most heavily ASM hacked ROMs)
# You can still edit the offsets to make G3T go directly to the data's offset, like in most of the tools.
# You will still need to edit this file if you changed a table or a data's size. (Such as NumberOfMoves f.e.)
# Exemples of how to edit MoveData properly for an untouched English Fire Red ROM:
# - "MoveData=@1CC" (dynamic offset)
# - "MoveData=&H250C04" (direct offset, in hexadecimal)
# - "MoveData=2427908" (direct offset, in decimal)

##########################################################
######################## READ ME #########################
##########################################################



[GENERAL]
ROMCode=BPRS
ROMName=Pok mon Rojo Fuego (Español)

[MOVE]
NumberOfMoves=354
----------------------------------------------------------
SoundBasedMoves=@01A5EC
MoveAnimationTable=@072608
MoveDescriptionTable=@0E574C
MoveData=@0001CC
MoveNames=@000148

[ITEM]
IndexOfFirstTM=289
NumberOfHMs=8
NumberOfItems=374
NumberOfTMs=100
----------------------------------------------------------
TMData=@125C08
ItemIMGData=@098B74
ItemData=@0001C8

[ABILITY]
NumberOfAbilities=255
----------------------------------------------------------
AbilityDescriptionTable=@0001C4
AbilityNames=@0001C0

[POKEMON]
NumberOfPokemon=411
NumberOfMoveTutors=15
NumberOfMaxEvolutions=5
----------------------------------------------------------
PokemonShinyPal=@00134
DexDataTable=&H44912C
PokemonNormalPal=@00130
PokemonBackSprites=@00012C
PokemonFrontSprites=@000128
MoveTutorCompatibility=@120D90
TMHMCompatibility=@043B54
PokemonEvolutions=@042E58
PokemonMoveTable=@03E968
PokemonNames=@000144
PokemonData=@0001BC

[TRAINER]
NumberOfTrainers=742
NumberOfTrainerImages=147
NumberOfClassNames=107
----------------------------------------------------------
TrainerPaletteTable=@034638
TrainerImageTable=@034628
ClassMoneyLocation=@02593C
ClassNamesLocation=@0D7BF4
TrainerData=@00FB70

[MISC]
SizeOfBattleText=247
SizeOfPCText=325
SizeOfNatureNames=162
----------------------------------------------------------
BattleText=@032B24
PCText=@3CE6F4
NatureNames=@45E4E0

TEE3 (el archivo a editar es el roms.dat)
AXPE=0x1CDC8,0x1CF08,0x1CFE4,0x1D344,0x1D44C,0x1D564,0x2237C,0x28120,0x36CD0
AXVE=0x1CDC8,0x1CF08,0x1CFE4,0x1D344,0x1D44C,0x1D564,0x2237C,0x28120,0x36CD0
BPGE=0x1E944,0x1EA84,0x1EB58,0x1EEBC,0x1EFC0,0x1F0C0,0x23CD8,0x29F90,0x39E38
BPRE=0x1E944,0x1EA84,0x1EB58,0x1EEBC,0x1EFC0,0x1F0C0,0x23CD8,0x29F90,0x39E38
BPRS=0x1E8B4,0x1E9F4,0x1EAC8,0x1EE2C,0x1EF30,0x1F030,0x23C48,0x29F14,0x39D24
BPEE=0x47134,0x47274,0x47348,0x476AC,0x477B0,0x478B0,0x4C694,0x52D18,0x63A8C,0x1900B8
BPES=0x47134,0x47274,0x47348,0x476AC,0x477B0,0x478B0,0x4C694,0x52D18,0x63A8C,0x18FCA8
eof
AXPE=0x2E3A8
AXVE=0x2E3A8
BPGE=0x309C8
BPRE=0x309C8
BPRS=0x308B4
BPEE=0x166F4
BPES=0x166F4
eof

READ ME BEFORE EDITING!!!

The format for this file is simple.
It is just a rom code followed by a list of pointers that need to be repointed if the size is bigger...
[ROM Code]=[pointer1,pointer2,...,pointerN]
Then it is ended by "eof" and everything after that is not read.
The second set of offsets is for type names.

HPE
# Pokemon RojoFuego (Spanish)
[BPRS]
Version=0.9
AllowExpandPokemon=True
AllowExpandedEvolutions=True
ExpandFormat=FR
NumberOfPokemon=412
BaseStatsData=0x24FF4C
PokemonNames=0x24164C
EvolutionData=0x254F1C
NumberOfEvolutions=5
EvolutionTypes=None,Friendship,Friendship (Day),Friendship (Night),Level-Up,Trade,Trade (w/ Item),Stone,ATK > DEF,ATK = DEF,ATK < DEF,High Personality,Low Personality,Spawn a Second,Create Spawn,Beauty
MovesetData=0x258F7C
AttackNames=0x242800
NumberOfAttacks=355
TMCompatibilityData=0x24E390
TMData=0x454E84
NumberOfTMs=50
NumberOfHMs=8
PokedexData=0x44912C
PokedexFormat=FRLG
NationalDexOrder=0x24D7B6
NumberOfPokemonBetweenCelebiAndTreecko=25
NumberOfUnownAfter411=28
FootprintData=0x43A6C8
HasMoveTutors=True
MoveTutorData=0x4541D8
NumberOfMoveTutorAttacks=15
MoveTutorCompatibilityData=0x4541F6
MoveTutorCompatibilityLength=2
FrontSpriteData=0x230818
BackSpriteData=0x231CB8
RegularPaletteData=0x232A78
ShinyPaletteData=0x233838
IconSpriteData=0x3CE958
IconPaletteData=0x3CE8F8
IconData=0x3CF038
# This isn't ready quite yet~
EnemyYTable=0x230138
PlayerYTable=0x2315D8
EnemyAltitudeTable=0x235770
# If I ever do anything with this remains to be seen~
HoennCryData=0x24F19C
CryData=0x483210
TypeNames=0x24A90C
NumberOfTypes=18
AbilityNames=0x24B408
NumberOfAbilities=78
ItemData=0x3D4F50
NumberOfItems=375

G3HS
# Pokemon RojoFuego (Spanish)
[BPRS]
Version=0.9
AllowExpandPokemon=True
AllowExpandedEvolutions=True
ExpandFormat=FR
NumberOfPokemon=412
BaseStatsData=0x24FF4C
PokemonNames=0x24164C
EvolutionData=0x254F1C
NumberOfEvolutions=5
EvolutionTypes=None,Friendship,Friendship (Day),Friendship (Night),Level-Up,Trade,Trade (w/ Item),Stone,ATK > DEF,ATK = DEF,ATK < DEF,High Personality,Low Personality,Spawn a Second,Create Spawn,Beauty
MovesetData=0x258F7C
AttackNames=0x242800
NumberOfAttacks=355
TMCompatibilityData=0x24E390
TMData=0x454E84
NumberOfTMs=50
NumberOfHMs=8
PokedexData=0x44912C
PokedexFormat=FRLG
NationalDexOrder=0x24D7B6
NumberOfPokemonBetweenCelebiAndTreecko=25
NumberOfUnownAfter411=28
FootprintData=0x43A6C8
HasMoveTutors=True
MoveTutorData=0x4541D8
NumberOfMoveTutorAttacks=15
MoveTutorCompatibilityData=0x4541F6
MoveTutorCompatibilityLength=2
FrontSpriteData=0x230818
BackSpriteData=0x231CB8
RegularPaletteData=0x232A78
ShinyPaletteData=0x233838
IconSpriteData=0x3CE958
IconPaletteData=0x3CE8F8
IconData=0x3CF038
# This isn't ready quite yet~
EnemyYTable=0x230138
PlayerYTable=0x2315D8
EnemyAltitudeTable=0x235770
# If I ever do anything with this remains to be seen~
HoennCryData=0x24F19C
CryData=0x483210
TypeNames=0x24A90C
NumberOfTypes=18
AbilityNames=0x24B408
NumberOfAbilities=78
ItemData=0x3D4F50
NumberOfItems=375

HTE
; Pokémon RojoFuego (Español)
[pokemon]
Count=412
Names=0x144

[pokemon_sprites]
FrontData=0x128
RegularPalettes=0x130

[items]
Count=375
Data=0x1C8

[attacks]
Count=355
Names=0x148

[trainers]
Count=743
Data=0xFB70

[trainer_classes]
Count=107
Data=0x258AC
Names=0xD7BF4

[trainer_sprites]
Count=148
Data=0x34628
Palettes=0x34638

saludos
 
Última edición:

methis69

Profesional de WaH
Ahora toca explicar cómo agregar nuevas rutinas evolutivo (Female, Male y For move) para BPRS (ROM Pokémon Rojo Fuego en español).

[BPRS]
name = Pokemon RojoFuego (S)
gamecode = BPRE
numberofpokes = 412
pokebasestats = 0x24FF4C
pokebasestatslength = 0x1C
pokenames = 0x24164C
pokenameslength = 0xB
typenames = 0x24A90C
typenameslength = 0x7
numberoftypes = 18
items = 0x3D4F50
numberofitems = 0x177
itemsdatalength = 0x2C
abilities = 0x24B408
numberofabilities = 0x4E
abiltiesnamelength = 0xD
egggroups = Monster,Water1,Bug,Flying,Field,Fairy,Grass,Human-Like,Water3,Mineral,Amorphous,Water2,Ditto,Dragon,Undiscovered
leveluptypes = Medium-Fast,Erratic,Fluctuating,Medium-Slow,Fast,Slow
learnedmoves = 0x258F7C
learnedmoveslength = 0x2
attacknames = 0x242800
numberofattacks = 0x163
attacknamelength = 0xD
eggmovepointer1 = 0x045C28
eggmovepointer2 = 0x045CA0
eggmovelimit = 0x045C9C
tmhmcompatibility = 0x24E390
tmhmcompatibilitylength = 8
tmlist = 0x454E84
tmlistentrylength = 2
numberoftms = 50
numberofhms = 8
evolutiontable = 0x254F1C
evolutionsperpoke = 5
lengthofoneentry = 8
evolutionmethods = Breeding Only,Friendship,Friendship (Day),Friendship (Night),Level-Up,Trade,Stone,Trade (Hold Item),ATK > DEF,ATK = DEF,ATK < DEF,PID (Wurmple->Silcoon),PID (Wurmple->Cascoon),Spawn a Second,Create Spawn,Beauty,Female,Male,Move
evomethodsproperties = None,None,None,None,Level,None,Item,Item,Level,Level,Level,Level,Level,Level,Level,None,Level,Level,Move
evolutiontablepointers = 0x42E58,0x42EA8,0x43024,0x45974,0xCEB2C
offsetstochangetolslr0r60x1 = 0x42E88,0x4306E,0x42F12,0x42EF4,0x42F02,0x42F3C,0x42F66,0x42F94,0x42FB4,0x42FD8,0x42FE8
offsetstochangetonewminus1 = 0x43116,0x4319e,0x459A2
theshedinjafix = 0xCE9CE
changetonewnumbertimes8 = 0x45962,0x45998,0x45966,0x4599A
pokedex = 0x44912C
lengthofpokedexentry = 0x24
nationaldexorder = 0x24D7B6
numofnondexpokesbetweencelebiandtreeko = 25
numofnondexpokesafterchimecho = 28
dextype = FRLG
jambo51learnedmovehack = False
movetutorcomp = 0x4541F6
movetutorcomplen = 2
movetutorattacks = 0x4541D8
mtattackslen = 2
mtattacksnum = 15
frontspritetable = 0x230818
backspritetable = 0x231CB8
frontpalettetable = 0x232A78
shinypalettetable = 0x233838
enemyytable = 0x230138
playerytable = 0x2315D8
enemyaltitudetable = 0x235770
iconspritetable = 0x3CE958
iconpalettetable = 0x3CF038
iconpalettes = 0x3CE8F8
numiconpalettes = 3
itemanimationtable = 0x45A3CC
itemanimationtableentlen = 5
hoenncryauxtable = 0x24F19C
footprints = 0x43A6C8
habitats = 0x44D528
habitatpointers = 0x106A30,0x106A70,0x106B38,0x106BA0,0x106C40
locationnames = 0x3EBF80
locationstart = 0x58
locationend = 0xC4
locationtblfmt = 1

Para ahorrarme la molestia de redactar como hacerlo paso por paso, usare la explicación textual de nuestro buen amigo Naren Jr. pero modificando los valores acorde al PBRS y una que otra aclaración.

Les comparto el link donde viene su explicación pero para FR (versión ingles)
https://whackahack.com/foro/threads/fr-nuevos-metodos-evolutivos.40029/

La herramienta que vamos a usar será HxD.

Primero hay que expandir la tabla de evoluciones, esta se encuentra en la dirección 0x42EB0, en “Selección de bloque” vamos a seleccionar una longitud de 3C byte.
imagen.png


Al tenerle copiado vamos a buscar espacio libre donde colocarle, yo lo haré en 0x710E00, nos vamos a la dirección que escogieron, selecciona 3C byte de longitud y la pegan con Crtl+B.
Sin título.png


Ahora vamos a ir a la dirección 0x042EAC donde se encuentra el viejo puntero de la tabla que acabamos de expandir (4 byte de longitud), aquí colocaremos nuestro nuevo offset permutado, en mi caso sería colocar 00 0E 71 08; Cuando se dice permutado se agrega de esta manera: se inicia con el último par byte de 0x710E00, luego el segundo par de 0x710E00, posterior el primer par byte de 0x710E00 y se termina con 08 para indicar que es un pointer. Recuerden seleccionar 4 byte de longitud y posterior pegar.
Sin título.png


Ahora vamos a ir a esta dirección 0x042E96 donde modificaremos el límite de métodos de evoluciones que permite el juego; En esta generación el limite son 14=0E (hexadecimal), como vamos agregar 3 nuevos métodos lo vamos aumentar a 17=11 (hexadecimal)
Sin título.png


Lo que haremos ahora será meter las rutinas (hembra, macho, y Por movimiento):

main:
push {r0-r7}

add r0, r6, r7

lsl r0, r0, #0x3

add r0, r2, r0

add r3, r0, r3

ldrb r2, [r3, #0x2]

mov r0, r8

bl decrypt2

mov r11, r0

pop {r0-r7}

mov r1, r11

cmp r1, r2

blt exit

mov r0, r8

mov r1, #0xFF

ldr r0, [r0, #0x0]

and r1, r0

mov r0, r8

bl decrypt

mov r11, r0

pop {r0-r7}

mov r5, r11

ldr r2, pokemondata

mov r4, #0x1C

mul r5, r4

add r5, r5, r2

ldrb r5, [r5, #0x10]

cmp r1, r5

bge exit

mov r10, r3

pop {r0-r7}

mov r1, r10

ldr r0, levelcheckloc

bx r0

exit: pop {r0-r7}

ldr r0, noevo

bx r0

decrypt: push {r0-r7}

mov r1, #0xB

ldr r2, decryptpoke

bx r2

decrypt2: push {r0-r7}

mov r1, #0x38

ldr r2, decryptpoke

bx r2

.align

levelcheckloc: .word 0x08042FF9

noevo: .word 0x08042FFD

decryptpoke: .word 0x0803FAD5

pokemondata: .word 0x0824FF4C
main:
push {r0-r7}

add r0, r6, r7

lsl r0, r0, #0x3

add r0, r2, r0

add r3, r0, r3

ldrb r2, [r3, #0x2]

mov r0, r8

bl decrypt2

mov r11, r0

pop {r0-r7}

mov r1, r11

cmp r1, r2

blt exit

mov r0, r8

mov r1, #0xFF

ldr r0, [r0, #0x0]

and r1, r0

mov r0, r8

bl decrypt

mov r11, r0

pop {r0-r7}

mov r5, r11

ldr r2, pokemondata

mov r4, #0x1C

mul r5, r4

add r5, r5, r2

ldrb r5, [r5, #0x10]

cmp r1, r5

blt exit

mov r10, r3

pop {r0-r7}

mov r1, r10

ldr r0, levelcheckloc

bx r0

exit: pop {r0-r7}

ldr r0, noevo

bx r0

decrypt: push {r0-r7}

mov r1, #0xB

ldr r2, decryptpoke

bx r2

decrypt2: push {r0-r7}

mov r1, #0x38

ldr r2, decryptpoke

bx r2

.align

levelcheckloc: .word 0x08042FF9

noevo: .word 0x08042FFD

decryptpoke: .word 0x0803FAD5

pokemondata: .word 0x0824FF4C
.text
.align 2

.thumb

.thumb_func

.global Evomove



main:

push {r0-r7}

add r0, r6, r7

lsl r0, r0, #0x3

add r0, r2, r0

add r3, r0, r3

ldrh r2, [r3, #0x2]

mov r0, r8

mov r5, #0x0

loop:

mov r1, #0xD

add r1, r1, r5

bl decrypt

mov r11, r0

pop {r0-r7}

mov r1, r11

cmp r1, r2

beq true

cmp r5, #0x3

beq exit

add r5, #0x1

b loop



decrypt:

push {r0-r7}

ldr r2, decryptpoke

bx r2

true:

mov r9, r3

pop {r0-r7}

mov r1, r9

ldr r0, levelcheckloc

bx r0

exit:

pop {r0-r7}

ldr r0, noevo

bx r0



.align

levelcheckloc: .word 0x08042FF9

noevo: .word 0x08042FFD

decryptpoke: .word 0x0803FAD5

Si expandieron su tabla de pokemon hay que modificar la última línea para la rutina macho y hembra, ejemplo: La pokemondata de la versión inglesa y española no comparten la misma dirección.

pokemondata: .word 0x08254784 (versión inglesa)
pokemondata: .word 0x08824FF4C (versión española)

Solo hay que sustituir lo que está en negrita con la nueva dirección de su tabla pokemon; Ojo, en la rutina la dirección no está permutada.

NOTA: No olviden guardar las rutinas con terminación .asm (pueden usar el bloc de notas o notepad ++) para compilarlo después; Si necesitan saber cómo hacer la compilación, les comparto el link de un anglo, que lo explica facialmente:
https://www.pokecommunity.com/threads/asm-resource-thread.339153/page-10#post-8526603

Una vez la tengamos las tres compilaciones.
Sin título.png


Ahora lo colocaremos en nuestra ROM, el offset que quieran yo lo insertaré en 0x710E50 (Female), 0x710ED0 (Male) y 0x710F50 (Move); No olviden primero seleccionar la longitud de bytes que tiene cada rutina y posterior pegar.
Sin título.png


Ahora lo último que queda hacer es tomar esas direcciones y permutarlas: En mi caso son: 50 0E 71 08 (Female), D0 0E 71 08 (Male), 50 0F 71 08 (Move) y la insertaremos en la tabla que expandimos (En mi caso es 0x710E00); Les recuerdo seleccionar la longitud de los byte necesarios (en este caso C bytes) y posterior pegar.
Sin título.png


Y listo, porque el proceso de modificar evolutionmethods y evomethodsproperties, en el ini de G3HS (BPRS) que les compartir ya están agregados.
Sin título.png

Sin título.png


NOTA INFORMATIVA
Si cambiaron el número de evoluciones por POKéMON usando G3HS, además de modificar la ubicación de la nueva tabla de Pokémon en la rutina Female y Male, hay que editar la rutina ya compilada según el numero de evolución por POKéMON:
8 evolutiones por POKéMON: Cambia F0 19 por 70 00
16 evolutiones por POKéMON: Cambia F0 19 por B0 00
32 evolutiones por POKéMON: Cambia F0 19 por F0 00
Sin título.png

Aún no he testeado con el número de evoluciones aumentado, pero la versión ingles así se modifica; Ahí me comenta si tuvieron éxito

PD: Pensaba hacer el tutorial como agregar el tipo hada pero el buen amigo Berserk1523 tiene un excelente, les comparto el link:

Saludos
 
Última edición:
Arriba