Skeetendo

’Cause all games were better on the GBC

You are not logged in.

#1 2010-10-25 09:20:31

Miksy91
Member
Registered: 2010-10-16
Post 160/2,339

Pokémon Yellow Hack

Hack of: Pokémon Yellow (U) ROM


This is a simple hack of Pokémon Yellow which I've thought of calling either Yellow Plus or Reborn, not sure yet. There is no new storyline although in the end, something new will be going on. I haven't even thought this through yet so I won't be explaining anything yet either :P

The main idea of the hack is to stay much like the original game but not just having something as boring as stronger gym leaders and stuff as the changes. Besides, I've done a lot of work for this project. For example, you may receive different items in said situations and fight different gym leaders than you'd expect to.

Pictures

45880837.png73040019.png28891336.png83966208.png96893724.png37492458.png15733616.png

Releases
First beta of this awesome hack is up: Download


Special thanks
-Harrison (RBY Wild Pokemon Editor), simplified wild pokemon editing a lot :)

Last edited by Miksy91 (2010-11-21 07:52:37)

Offline

#2 2010-10-25 11:09:21

Sawakita
Administrator
Registered: 2010-10-16
Post 40/365

Re: Pokémon Yellow Hack

After a quick look at Yellow with a hex editor:

Map Banks:                              0xFC3E4   (0xF8 bytes)

MapHeaders Pointers:                0xFC1F2    (0xF8 words, or 0x1F0 bytes)

Is there anything else that you would need? It would be nice to see a deep-hack of yellow. Of course it would require research, but I think I would support it.

Last edited by Sawakita (2010-10-25 11:12:46)

Offline

#3 2010-10-25 13:44:41

Miksy91
Member
Registered: 2010-10-16
Post 161/2,339

Re: Pokémon Yellow Hack

I nice found you made :D

Anyway, I'll probably keep it the way it is now because I'm still not even familiar with making scripts in G/S/C (haven't really done any scripts in over a month and I'll have to start with the basics again) and I've already progressed with this around to Cerulean City. But if after finishing this I feel like it, I'll try to make a good one.

*Also, I took a look at those offsets and can't even understand the Map Bank bytes yet, or where you picked up that's where Map Banks are stored. But it's not like I'm trying to say I wouldn't do this, I just need time to get good enough to accomplish something better.

So for now, I'll keep Dark Future as the main hack I'm doing but won't exclude the possibility of making a good yellow hack later.

Last edited by Miksy91 (2010-10-25 13:51:49)

Offline

#4 2010-10-25 19:06:39

Sawakita
Administrator
Registered: 2010-10-16
Post 41/365

Re: Pokémon Yellow Hack

To find the actual offset of a certain map header:

[MapBank*0x4000] + [MapPointer MOD(0x4000)].

So, for example if you're looking for PalletTown header (Map_ID: 00):  [0x06*0x4000] + [0x42A1 MOD(0x4000)]= 0x18000 + 0x2A1 = 0x182A1

Offline

#5 2010-10-26 06:42:08

Miksy91
Member
Registered: 2010-10-16
Post 162/2,339

Re: Pokémon Yellow Hack

I made a quick test if I could make PikaMap load the events for pallet town and found the warp offset but for some reason the editor displays the events incorrectly =|

pallet.png



EDIT:
I believe I finally know why this didn't work the way it should have (something to do with Map Banks?) ;)

Last edited by Miksy91 (2010-10-26 06:55:18)

Offline

#6 2010-10-26 18:33:06

Mateo
Member
From: The Sims 4
Registered: 2009-11-25
Post 310/3,578

Re: Pokémon Yellow Hack

I haven't used Pika Map, i've used Redmap (and made Blue Map) though and it looks like it has only been changed to load maps and tilesets from the correct location, as they are in the same format. For events it seems like they still use Pokemon Gold's format, so unless someone gets the source and changes it to load them in red's format, i'm afraid you will be out of luck. We might have more luck hacking Pokemap to load from Yellow's locations, since it already loads things in the proper format anyway.

Offline

#7 2010-10-26 19:18:53

Miksy91
Member
Registered: 2010-10-16
Post 163/2,339

Re: Pokémon Yellow Hack

Mateo wrote:

I haven't used Pika Map, i've used Redmap (and made Blue Map) though and it looks like it has only been changed to load maps and tilesets from the correct location, as they are in the same format. For events it seems like they still use Pokemon Gold's format, so unless someone gets the source and changes it to load them in red's format, i'm afraid you will be out of luck. We might have more luck hacking Pokemap to load from Yellow's locations, since it already loads things in the proper format anyway.

Yeah, I guess you're right :)

But anyway, I'm not planning to do anything amazing yet so that won't be a problem.

Offline

#8 2010-10-26 19:23:49

Sawakita
Administrator
Registered: 2010-10-16
Post 42/365

Re: Pokémon Yellow Hack

I never used Pikamap too, but it looks like it has the same issues of Redmap (one of which is that doesn't load block number 0 from the Blockset). As for now Hex editing event data isn't hard at all (thanks to this!).

Anyway I'd like to appeal to everyone: if there's anybody who has the source code of GoldMap or RedMap or PikaMap or BlueMap, I'll be grateful if he/she would get in contact with me. I'm trying to build a map editor, but since my programming knowledge are limited to VB 6.0, the program is going on hardly and glitchy. thanks in advance.

Oh, and obviously, good luck with this, Miksy.

Last edited by Sawakita (2010-10-26 19:28:11)

Offline

#9 2010-10-26 19:35:29

Miksy91
Member
Registered: 2010-10-16
Post 164/2,339

Re: Pokémon Yellow Hack

Sawakita wrote:

I never used Pikamap too, but it looks like it has the same issues of Redmap (one of which is that doesn't load block number 0 from the Blockset). As for now Hex editing event data isn't hard at all (thanks to this!).

Yeah, I used the exact same tutorial to find Pallet Town's events (the one posted in Gen I section).
One question about this though - am I correct that through a warp you can only warp to a map with the exact same map bank ?
Then it would be obvious that all the locations in Pallet Town have the same Map Bank (06) (and possibly no other area would have bank 06).
That would surely quicken the process of locating the map headers.

Sawakita wrote:

Oh, and obviously, good luck with this, Miksy.

Thanks :)

Anyways, has anyone tried the demo I made ?
If yes, what did you think about it ?


EDIT:
For fun, I began searching for the map headers (and noticed I was incorrect with what I said before) :D

I'll make a text file with all map headers included soon and here are what I've found this far.
Also, one of the maps had 01 as its map bank and I couldn't find a map header for it.
Is it possible that map even exists ?


[01 Pallet Town]
$182A1
[01 Viridian City]
$18357
[01 Pewter City]
$1855A
[01 Cerulean City]
$18754
[01 Vermilion City]
$1899E
[01 Lavender Town]
$44000
[01 Celadon City]
$18000
[01 Fuchsia City]
$18BB3
[01 Saffron City]
$509AA
[01 Cinnabar Island]
$1C000
[01 Indigo Plateau]
$50924
[Route 01]
$1C0C3
[Route 02]
$54000
[Route 03]
$541EE
[Route 04]
$54398
[Route 05]
$54589
[Route 06]
$58000
[Route 07]
$48000
[Route 08]
$5812D

Last edited by Miksy91 (2010-10-26 20:26:31)

Offline

#10 2010-10-27 10:28:36

Sawakita
Administrator
Registered: 2010-10-16
Post 43/365

Re: Pokémon Yellow Hack

Yes, that's the Map 0x0B, which doesn't exist.

Offline

#11 2010-10-28 03:31:38

47/703

Re: Pokémon Yellow Hack

Notice that maps 0xA and 0xB have the same pointer, but different banks. Most invalid maps are this way—if two maps which are next to each other have the same pointer, one of them is probably not real.

#12 2010-10-28 04:26:36

koolboyman
Member
Registered: 2010-10-16
Post 11/203

Re: Pokémon Yellow Hack

Redmap was just a simple mod I did to Goldmap so I could edit Brown's maps easier, but people wanted it so I released it, but I never intended it to be a decent program.  All the changes I did was change the tileset bitmaps and edit the ini files, so I didn't need the source code at all.

Here's my list of maps to make things easier for you.
There's 219 normal maps (220 in yellow), 22 Freeze maps, and 6 clone maps. 

00 = Palet Town
01 = Viridian City
02 = Pewter City
03 = Cerulean City
04 = Vermilion City
05 = Lavender Town
06 = Celadon City
07 = Fuchsia City
08 = Cinnibar Island
09 = Indigo Plateau
0A = Saffron City
0B = FREEZE
0C = Route 1
0D = Route 2
0E = Route 3
0F = Route 4
10 = Route 5
11 = Route 6
12 = Route 7
13 = Route 8
14 = Route 9
15 = Route 10
16 = Route 11
17 = Route 12
18 = Route 13
19 = Route 14
1A = Route 15
1B = Route 16
1C = Route 17
1D = Route 18
1E = Route 19
1F = Route 20
20 = Route 21
21 = Route 22
22 = Route 23
23 = Route 24
24 = Route 25
25 = Ash's House F1
26 = Ash's House F2
27 = Gary's House
28 = Oak's Lab
29 = Viridian Poke Center
2A = Viridian Mart
2B = School
2C = Viridian House
2D = Viridian Gym
2E = Digletts Cave (Route 2)
2F = Viridian Forest (exit)
30 = Route 2 House
31 = Route 2 Gate
32 = Viridian Forest (Entrance)
33 = Viridian Forest
34 = Museum F1
35 = Museum F2
36 = Pewter Gym
37 = Pewter House (1)
38 = Pewter Mart
39 = Pewter House (2)
3A = Pewter PokeCenter
3B = Mt. Moon (1)
3C = Mt. Moon (2)
3D = Mt. Moon (3)
3E = Cerulean House (Trashed)
3F = Cerulean House (2)
40 = Cerulean Pokecenter
41 = Cerulean Gym
42 = Bike Shop
43 = Cerulean Mart
44 = Mt. Moon Pokecenter
45 = COPY OF: Trashed House
46 = Route 5 Gate
47 = Underground Tunnel Entrance (Route 5)
48 = Day Care M
49 = Route 6 Gate
4A = Underground Tunnel Entrance (Route 6)
4B = COPY OF: Underground Tunnel Entrance (Route 6)
4C = Route 7 Gate
4D = Underground Path Entrance (Route 7)
4E = COPY OF: Underground Path Entrance (Route 7)
4F = Route 8 Gate
50 = Underground Path Entrance (Route 8)
51 = Rock Tunnel Pokecenter
52 = Rock Tunnel (1)
53 = Power Plant
54 = Route 11 Gate
55 = Digletts Cave Entrance (Route 11)
56 = Route 11 Gate (Upstairs)
57 = Route 12 Gate
58 = Bill's House
59 = Vermilion PokeCenter
5A = Fan Club
5B = Vermilion Mart
5C = Vermilion Gym
5D = Vermilion House (1)
5E = Vermilion Dock
5F = S.S. Anne (1)
60 = S.S. Anne (2)
61 = S.S. Anne (3)
62 = S.S. Anne (4)
63 = S.S. Anne (5)
64 = S.S. Anne (6)
65 = S.S. Anne (7)
66 = S.S. Anne (8)
67 = S.S. Anne (9)
68 = S.S. Anne (10)
69 = FREEZE
6A = FREEZE
6B = FREEZE
6C = Victory Road (1)
6D = FREEZE
6E = FREEZE
6F = FREEZE
70 = FREEZE
71 = Lance
72 = FREEZE
73 = FREEZE
74 = FREEZE
75 = FREEZE
76 = Hall of Fame Room
77 = Underground Path (N/S)
78 = Gary
79 = Underground Path (W/E)
7A = Celadon Mart (1)
7B = Celadon Mart (2)
7C = Celadon Mart (3)
7D = Celadon Mart (4)
7E = Celadon Mart (5)
7F = Celadon Mart (6)
80 = Celadon Mansion (1)
81 = Celadon Mansion (2)
82 = Celadon Mansion (3)
83 = Celadon Mansion (4)
84 = Celadon Mansion (5)
85 = Celadon Pokecenter
86 = Celadon GYM
87 = Celadon Game Corner
88 = Celadon House
89 = Celadon Prize Room
8A = Celadon Diner
8B = Celadon House (2)
8C = Celadon Hotel
8D = Lavender Pokecenter
8E = Pokemon Tower (1)
8F = Pokemon Tower (2)
90 = Pokemon Tower (3)
91 = Pokemon Tower (4)
92 = Pokemon Tower (5)
93 = Pokemon Tower (6) 
94 = Pokemon Tower (7)
95 = Lavender House (1)
96 = Lavender Mart
97 = Lavender House (2)
98 = Fuchsia Mart
99 = Fuchsia House (1)
9A = Fuchsia Pokecenter
9B = Fuchsia House (2)
9C = Safari Zone Entrance
9D = Fuchsia GYM
9E = Fuchsia Meeting Room
9F = Seafoam Islands (2)
A0 = Seafoam Islands (3)
A1 = Seafoam Islands (4)
A2 = Seafoam Islands (5)
A3 = Vermilion House (2)
A4 = Fuchsia House (3)
A5 = Mansion (1)
A6 = Cinnibar Gym
A7 = Lab (1)
A8 = Lab (2)
A9 = Lab (3)
AA = Lab (4)
AB = Cinnibar Pokecenter
AC = Cinnibar Mart
AD = COPY: Cinnibar Mart
AE = Indigo Plateau Lobby
AF = Copycat's House F1
B0 = Copycat's House F2
B1 = Fighting Dojo
B2 = Saffron Gym
B3 = Saffron House (1)
B4 = Saffron Mart
B5 = Silph Co (1)
B6 = Saffron Pokecenter
B7 = Saffron House (2)
B8 = Route 15 Gate
BA = Route 16 Gate Map
BB = Route 16 Gate Upstairs
BC = Route 16 House
BD = Route 12 House
BE = Route 18 Gate
BF = Route 18 Gate Header
C0 = Seafoam Islands (1)
C1 = Route 22 Gate
C2 = Victory Road (2)
C3 = Route 12 Gate Upstairs
C4 = Vermilion House (3)
C5 = Diglett's Cave
C6 = Victory Road (3)
C7 = Rocket Hideout (1)
C8 = Rocket Hideout (2)
C9 = Rocket Hideout (3)
CA = Rocket Hideout (4) 
CB = Rocket Hideout (Elevator)
CC = FREEZE
CD = FREEZE
CE = FREEZE
CF = Silph Co (2)
D0 = Silph Co (3)
D1 = Silph Co (4)
D2 = Silph Co (5)
D3 = Silph Co (6)
D4 = Silph Co (7)
D5 = Silph Co (8)
D6 = Mansion (2)
D7 = Mansion (3)
D8 = Mansion (4)
D9 = Safari Zone East
DA = Safari Zone North
DB = Safari Zone West
DC = Safari Zone Center
DD = Safari Zone Rest House (1)
DE = Safari Zone Secret House
DF = Safari Zone Rest House (2)
E0 = Safari Zone Rest House (3)
E1 = Safari Zone Rest House (4)
E2 = Unknown Dungeon (2)
E3 = Unknown Dungeon (3)
E4 = Unknown Dungeon (1)
E5 = Name Rater
E6 = Cerulean House (3)
E7 = FREEZE
E8 = Rock Tunnel (2)
E9 = Silph Co (9)
EA = Silph Co (10)
EB = Silph Co (11)
EC = Silph Co (Elevator)
ED = FREEZE
EE = FREEZE
EF = Battle Center M
F0 = Trade Center M
F1 = FREEZE
F2 = FREEZE
F3 = FREEZE
F4 = FREEZE
F5 = Loreli
F6 = Bruno
F7 = Agatha
F8 = Surfing Pikachu House (Yellow Only)

Last edited by koolboyman (2010-10-28 04:36:11)

Offline

#13 2010-10-28 04:44:38

Miksy91
Member
Registered: 2010-10-16
Post 165/2,339

Re: Pokémon Yellow Hack

Thanks koolboyman :)
Btw, now I know how you managed to create those additional maps in brown :D

IIMarckus wrote:

Notice that maps 0xA and 0xB have the same pointer, but different banks. Most invalid maps are this way—if two maps which are next to each other have the same pointer, one of them is probably not real.

Okay, but there is no logic behind that, right (the rom is just created that way) ?
As I don't see a way how they could affect each other either.

Offline

#14 2010-10-28 05:00:41

49/703

Re: Pokémon Yellow Hack

Miksy91 wrote:
IIMarckus wrote:

Notice that maps 0xA and 0xB have the same pointer, but different banks. Most invalid maps are this way—if two maps which are next to each other have the same pointer, one of them is probably not real.

Okay, but there is no logic behind that, right (the rom is just created that way) ?
As I don't see a way how they could affect each other either.

Probably in the original source they used labels instead of pointers, and when deleting a map they just duplicated an existing label rather than deleting the entry entirely. Replacing is easier than deleting because the other map‐related constants don't have to be kept in sync.

The invalid pointer is never referenced, so you could replace it with anything and not cause any change (or, make your own map header and point to it and use the map in your hack with no problem).

#15 2010-10-28 05:32:05

koolboyman
Member
Registered: 2010-10-16
Post 12/203

Re: Pokémon Yellow Hack

IIMarckus wrote:
Miksy91 wrote:
IIMarckus wrote:

Notice that maps 0xA and 0xB have the same pointer, but different banks. Most invalid maps are this way—if two maps which are next to each other have the same pointer, one of them is probably not real.

Okay, but there is no logic behind that, right (the rom is just created that way) ?
As I don't see a way how they could affect each other either.

Probably in the original source they used labels instead of pointers, and when deleting a map they just duplicated an existing label rather than deleting the entry entirely. Replacing is easier than deleting because the other map‐related constants don't have to be kept in sync.

The invalid pointer is never referenced, so you could replace it with anything and not cause any change (or, make your own map header and point to it and use the map in your hack with no problem).

That would explain the duplicate maps as well.  They're pretty much exactly the same, except weren't assigned 01 as the bank.  Try assigning the same bank number as Saffron city to map 0x0B and see what happens when you enter that map.  The map music array is pretty much the same too (Freeze maps always have the same track assigned as the map before it).

Miksy91 wrote:

Thanks koolboyman :)
Btw, now I know how you managed to create those additional maps in brown :D

Yeah, Azalea town uses map ID 0x0B. I got really lucky with that as far as fly data goes.

Last edited by koolboyman (2010-10-28 05:37:37)

Offline

#16 2010-11-20 18:40:25

Miksy91
Member
Registered: 2010-10-16
Post 183/2,339

Re: Pokémon Yellow Hack

It's time for a big update ;)

The first beta of the hack is now downloadable !
Check the first post of this thread for details.

Last edited by Miksy91 (2010-11-20 18:40:44)

Offline

#17 2010-11-20 19:18:58

Sawakita
Administrator
Registered: 2010-10-16
Post 51/365

Re: Pokémon Yellow Hack

Miksy91 wrote:

Yellow is after all the most "unstable" pokemon game to be hacked.

on what basis are you claiming such a thing?
Games are not unstable to be hacked. This remember me people at PC who used to say that Emerald was unstable (btw this is due to them using programs that screw the game).

Last edited by Sawakita (2010-11-20 19:21:27)

Offline

#18 2010-11-20 19:35:30

Miksy91
Member
Registered: 2010-10-16
Post 184/2,339

Re: Pokémon Yellow Hack

Sawakita wrote:
Miksy91 wrote:

Yellow is after all the most "unstable" pokemon game to be hacked.

on what basis are you claiming such a thing?
Games are not unstable to be hacked. This remember me people at PC who used to say that Emerald was unstable (btw this is due to them using programs that screw the game).

It's only that I first wrote this thread in Mew3 Inc. and added that line in there and Copy --> Pasted it here :D
It's just a joke really, and yeah, I picked it from the "Emerald ROM is unstable" issue.

Everyone there has heard this before and because hacking yellow is clearly "harder" than other pokemon games, well...you know the rest :D

Last edited by Miksy91 (2010-11-20 19:38:23)

Offline

#19 2010-11-20 19:36:17

jaydenp95
Member
Registered: 2010-10-16
Post 44/79

Re: Pokémon Yellow Hack

niceee, good work :)

Offline

#20 2010-11-20 20:19:55

Sawakita
Administrator
Registered: 2010-10-16
Post 52/365

Re: Pokémon Yellow Hack

because hacking yellow is clearly "harder" than other pokemon games

which is simply untrue since yellow is an "enhancement" of Red/Blue: they have exactly the same coding, routines and data arrangement, except the bonuses Yellow comes with (pikachu that follows the player, full color support, and probably more).

The difference, that makes you call yellow "harder", is the fact that less documentation is found on line about addresses for Yellow.

Offline

#21 2010-11-20 21:06:35

Miksy91
Member
Registered: 2010-10-16
Post 185/2,339

Re: Pokémon Yellow Hack

Sawakita wrote:

The difference, that makes you call yellow "harder", is the fact that less documentation is found on line about addresses for Yellow.

There are mostly two things I referred with that to:
1) Less documentation which you just proved
2) Scripting which obviously doesn't work the same way as in newer gens

There are no script pointers in People Data because people don't have scripts themselves, then again there is a pointer to Script Data of the map in Map Header which I believe should be edited instead.

Anyway, I removed that line from the first post.
It was kinda pointless really but I don't think there was nothing so wrong with that either.

Last edited by Miksy91 (2010-11-20 21:12:35)

Offline

#22 2010-11-20 22:05:26

Sawakita
Administrator
Registered: 2010-10-16
Post 53/365

Re: Pokémon Yellow Hack

obviously i'm not trying to open a debate, i just aim to a perfect clarity.
Once again, i'm sorry, but i have to correct you. Actually people data have script pointers: 6th byte of each entities is an identifier for the list of pointer pointed by the <<wrongly called "text_pointer">>, in mapheader.

For instance, Pallet town:

Map Header $182A1 (wrongly called "text_pointer" is in bold)(the following pointers are little-endian):
00 09 0A FD42 AA4F FA4D 0C

People number $182DE:
03: number of people

People Data $182DE (people's "text"_IDs are in bold):
03 08 0E FF FF 01 1st people data
0D 0C 07 FE 00 02 2nd people data
2F 12 0F FE 00 03 3rd people data

Pointer table (pointed by <<wrongly called "text_pointer">>) $18FAA (the following pointers are, as usual, little-endian):
BA4F 1st people's script is pointed by this ($18FBA)
0C50 2nd people's script is pointed by this ($1900C)
1150 3rd people's script is pointed by this ($19011)

In Docs&Tuts section I just posted a doc that explains better how actually stuff pointed by <<wrongly called "text_pointer">> is structured.

Offline

#23 2010-11-21 01:29:17

Tauwasser
Member
Registered: 2010-10-16
Post 50/452

Re: Pokémon Yellow Hack

Sawakita wrote:

<<wrongly called "text_pointer">>

Well, technically they do point to text! All scripts are preceded by 0x08, because this is an in-text-command, it's interpreted by the text routine.

cYa,

Tauwasser

Offline

#24 2010-11-21 05:22:56

XmasterchiefX
New member
From: Turn right..not that right -.-
Registered: 2010-11-21
Post 1/2
Website

Re: Pokémon Yellow Hack

OMG finally a new hack Miksy! I think that of all GBC Hacks I've played yours are the most fun and entertaining of all :D

I wish the best for your hacks..... and umm.. for you too.. >:D

Offline

#25 2010-11-21 06:54:25

59/703

Re: Pokémon Yellow Hack

Emerald

Funny you should mention that: Emerald sound corrupts a lot because AdvanceMap and XSE incorrectly write to non‐free space. A prime example of tools being made based on assumptions that simply aren't general enough.

Board footer

Powered by FluxBB