The PokéCommunity Forums  

Go Back   The PokéCommunity Forums > Creative Discussions > Emulation & ROM Hacking > Tutorials
Register New Account FAQ/Rules Chat Blogs Mark Forums Read

Notices

Tutorials Looking for a guide to help you out? Then you're in the right place! We've got everything you need, ranging from Mapping to Music!
New threads in this forum are to be approved by a moderator before they are displayed. The thread revival limit does not apply here.



Reply
Thread Tools
  #1  
Unread 6 Days Ago, 07:01 PM
BallMaster's Avatar
BallMaster
HEX cracker
 
Join Date: Jan 2013
Location: Finland
Age: 15
Gender: Male
Hello and welcome to my first ever tutorial on Pokemon hacking!

Today I'll show you how to edit the town map of Red/Blue/Yellow, in HEX offcourse
but don't worry about that.

Things needed: - a ROM of Red/Blue/Yellow
- a HEX editor ( I use Translhextion )
- an emulator ( VisualBoyAdvance is great )
- a RBY text table
- knowledge of gameboy pointers

Let's get started. Remember to backup your Rom ( If your editing Yellow the offsets will be different but the codes are the same )

Part 1; The Image

Open your Rom in your Hex editor and go to x71100. The first byte should be 7F,
which means that theres 16 ( F=16 in hex ) tiles of tile number 7.
There's 16 tiles to choose grom.
0x- Blank tile
1x- Weird vertical line ( isn't used in game )
2x- Weird horizontal line ( isn't used in gme )
3x- Weird ball like thing ( isn't used in game )
4x- Sea tile
5x- City tile
6x- Land tile
7x- Route tile ( also used in the most upper area where the name is displayed )
8x- Coast tile ( bottom, left )
9x- Coast tile ( bottom, right )
Ax- Coast tile ( Upper, right )
Bx- Coast tile ( Upper, left )
Cx- Sidearea tile
Dx Sea "intersection"
Ex- Sea route ( horizontal )
Fx- Sea route ( vertical )

Your map can be 20 tiles wide and 18 tiles high, though the most upper tiles
should be left with no. 7 since the name is displayed there.
Let's get editing.
First, the pointer to the map is at x710D1 do there and change it ( 00 51 )
to A0 7B wich leads to x 73BA0
Then go to x73BA0 and write 7F 75, wich means that the most upper row will be no.7
So now you can write the map. It's really simple ( I'll put images up for help later )
If you want 4 water tiles in a row you just write 44 ( 4x for water tile, x4 for 4 tiles)
If you want land afterwards you just write 6x and how many tiles.
When one row is full it begins on the next one, but if you hav a tile in the end of a row
and the same in the beginning of the nex the you should write seperatly and not together.

I recomend you check your game every five bytes or so in case you mess upp. Believe me that's easy.
Once you got it right you can go back and erase the old map so you have free space if you need
The old map is at x71100 to x711AA.

Part 2; The locations

Once you're done with the image you'll notice that the locations are screwed, so let's fix that.
Now there are 47 possible locations on the map already, but i'm not shure how to add more or delete properly...yet.
So try to keep it under 47.
Now let's change the locations, go to x71313.
Now every area uses 3 bytes; 1 byte for location and 2 bytes for name pointer, After that comes the next area.
Pallet town's location byte is B2 which means 2 tiles left and B tiles down ( B=11 )
Since the biggest single value in Hex is F/16 you cannot cover the entire map.
The two last tiles on the left and right side are innaccessible and the most upper and lowest tiles are innaccessible.
The locations data doesn't follow the in game locations but i have them written down here: ( remember there's a 2-byte
pointer after each location )
-Pallet-Viridian-Pewter-Cerulean-Lavender-Vermillion-Celadon-Fuchsia-Cinnabar-Indigo-Saffron-Unused map with same pointer as Pallet Town.
-Routes are in number order 1-25.
-Diglett's cave-Mt.Moon-Rock tunnel-Bill's cottage-Power plant-SS.Anne-Pokemon-Tower-Seafoam Islands-Viridian forest-Victory road-Safari zone.
( If you want to change the order of the ares go to x70F11 and mess around. Each byte represents an area and here they are ingame order.
example first byte is Pallet town second byte is Route 1..Last byte is Power plant)
This can be very complicated so comment or PM me and i'll try to help, and remember to check your game every few bytes and save
a backup as soon as you get something right.
But you can easily know what location you're editing if you follow the followig pointer to the text data.

Part 3 The names

The names are ofcourse all wrong. Now here's where the text table comes in handy, otherwise you're going to have pain in the Froslass.....
So you have the pointers after the location data, change them to an empty spot in the same rombank and write you own name.
Once your done you can delet the old text data so you have empty space if needed.

Thanks for reading and hope this helps some of you guys ( I'll post images as soon as I have posted 15 times )

Credits to: Datacrystala & Cartmic

Wanna be a hex editing wizard ... Check out Miksy91's Youtube tutorials.
Reply With Quote
Reply
Quick Reply

Sponsored Links


Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are UTC. The time now is 07:35 PM.


Style by Perdition Haze, artwork by Sa-Dui.
Like our Facebook Page Follow us on TwitterMessage Board Statistics | © 2002 - 2013 The PokéCommunity™, pokecommunity.com.
Pokémon characters and images belong to Pokémon USA, Inc. and Nintendo. This website is in no way affiliated with or endorsed by Nintendo, Creatures, GAMEFREAK, The Pokémon Company, Pokémon USA, Inc., The Pokémon Company International, or Wizards of the Coast. We just love Pokémon.
All forum styles, their images (unless noted otherwise) and site designs are © 2002 - 2013 The PokéCommunity / PokéCommunity.com.
PokéCommunity™ is a trademark of The PokéCommunity. All rights reserved. Sponsor advertisements do not imply our endorsement of that product or service. User posts belong to the user.