Skeetendo

’Cause all games were better on the GBC

You are not logged in.

  • Index
  • → Help/Question
  • → Pokemon RBY Swapping/Editing Pokemon battle/pokedex sprites

#1 2012-10-29 19:14:51

SinisterHoodedFigure
Member
Registered: 2011-12-09
Post 6/67

Pokemon RBY Swapping/Editing Pokemon battle/pokedex sprites

How do I edit/swap the blue pokemon's battle front sprite with the yellow pokemon's battle front sprite?
I have a Visual Boy Advance for an emulator and a Goldfinger hex editor.
What other tools would I need? Do I need to use a different emulator as a debugger?


Crystal Kaizo...
Not the hardest hack, but probably the most... Sinister
http://www.mediafire.com/download/q3o60 … +Kaizo.ips

Offline

#2 2012-10-29 19:41:18

Vitharix
Member
Registered: 2011-12-29
Post 155/396

Re: Pokemon RBY Swapping/Editing Pokemon battle/pokedex sprites

I don't know much about it other than what I can grasp from the threads talking about t, but I can tell you there isn't something like AGIXP for Gen 1. But if you look in the tools section there will be stuff about graphics compression and that will likely lead you to it.

There are also exists a patch of all Yellow front sprites to an updated-palette Red version, if you want to go that route.

Last edited by Vitharix (2012-10-29 19:44:18)

Offline

#3 2012-10-30 12:29:01

Nic7C5
Member
From: Germany
Registered: 2012-10-13
Post 8/52

Re: Pokemon RBY Swapping/Editing Pokemon battle/pokedex sprites

There's nothing like AgiXp for the first generation games. You can swap sprites manually but there's a patch somewhere around in this forum that inserts the yellow version sprites to Pokemon red. Search for "yellow sprites".

Offline

#4 2012-10-30 13:02:45

Vitharix
Member
Registered: 2011-12-29
Post 157/396

Re: Pokemon RBY Swapping/Editing Pokemon battle/pokedex sprites

Just because it's more accurate, you should use BGB, but it also has many other useful functions.

For inserting new graphics, there are compressors, including this one: http://hax.iimarck.us/topic/616/

Last edited by Vitharix (2012-10-30 13:05:42)

Offline

#5 2012-10-30 15:54:31

Danny-E 33
Administrator
Registered: 2012-06-09
Post 222/1,023

Re: Pokemon RBY Swapping/Editing Pokemon battle/pokedex sprites

Here is my post in another thread about replacing the player sprite in Yellow. The process is exactly the same except for the location of the sprites you are replacing. All the locations for every compressed image in the rom can be found here.

Danny-E 33 wrote:

Here's what you'll need:
Hexecute*Goldfinger might work fine. I've never tried it myself.*
Tile Molester
Paint

First open the sprite in paint and make sure to format the picture with the specific parameters.
For the front sprite, the image must be exactly 56x56 pixels and the backsprite but be exactly 32x32 pixels. *Here I am just talking about the player sprite. Pokemon front sprites can be 40x40, 48x48, or 56x56 pixels. All back sprites must be 32x32 pixels.* This means the front sprite is a 7x7 tile image and the backsprite is a 4x4 tile image. A tile is 8 pixels by 8 pixels.
Also, these sprites must include only 4 colors, same as before. White-light shade-dark shade-black.
Save that image as a bitmap or a png or something.
Now open up Tile Molester and click the New button.
It will ask you for a size of the new file you are creating. For the front sprite, type 784. For the back sprite, type 256. *For 7x7 images type 784, for 6x6 type 576, for 5x5 type 400, for back sprites (4x4) type 256.*
Click View->Codec->2bpp planar.
Click View->Block Size->Custom.
For columns, type 1.
For rows, type 7 for the frontsprite or 4 for the backsprite.*Type 7 for a 56x56, 6 for a 48x48, 5 for a 40x40, or 4 for a backsprite (32x32)*
Then click Edit->Paste From and choose the image.
At this point, it should be displaying your image exactly the way it's supposed to look like with its original colors. Now double click each color on the palette bar in Tile Molester and change them to match the 4 colors of your image fairly closely. Again, make sure white is on the left!
Then you must click in some empty grey space in the window to finish pasting the image.
This causes any color on the original image to change to the closest matching color from the palette you just customized. If you did this correctly, it should look fairly normal.
Save this file.

Then go to stag019's Pokemon Generation I Graphics Compressor..
For the front sprite, enter 7 for the width and height. For the back sprite, enter 4.*Again, type the same width and height as you did for the rows in Tile Molester.*
Click Browse and find the file you made in Tile Molester.
Click Go and save that new file.
Open two Hexecute windows.
In one, open your ROM. In the other, open the compressed sprite you just made.
In the ROM, put your cusor right before the byte so that the offset in the status bar at the bottom says 0x12EDE for the front sprite or 0x33E0A for the back sprite.
In the Hexecute window for the sprite, select the whole thing and click Edit->Copy.
In the ROM, press Edit->Paste.

Let me know any futher clarification you need and I'll try to help you through this.

If your new compressed sprite is longer than the length that stag019's chart says is the length of the original sprite (I linked to that chart at the very beginning of this post), then you need to learn how to repoint data. I can explain this more later when I have more time if you need more help.

Also, no debugging is necessary for this task but, like Vitharix said, bgb is just more useful in general.

Last edited by Danny-E 33 (2012-10-30 17:09:48)


Red Hack: Pokémon Prototype

Total number of registered users: 7000+
Total number of active users: ~12

Offline

#6 2012-11-09 21:53:35

SinisterHoodedFigure
Member
Registered: 2011-12-09
Post 7/67

Re: Pokemon RBY Swapping/Editing Pokemon battle/pokedex sprites

Paint, Hexecute, Tile Molestor, and the aformentioned link to the list of RBY sprites and its offets, seems to be what is needed.
It seems I have successfully swapped the old blue mew sprite for the modified yellow sprite (I had to change the colors and resize to the length that must match the linked rb sprite). This process has worked wonders and got me the expected result.
However, even after the parameter and color modification, when I opened the 2 hexecutes and pasted the new sprite data on the rom data with the specified offsets, some pasted bytes actually exceed that of the specified offset length from the original sprite.
Is that normal, is it safe, cause while it seems that the new yellow mew sprite works and appears, I'm worried that it might do something else to the rom data, due to some overritten bytes.
If the current method is not safe, would cutting out the bytes that exceed the offset length work?

Last edited by SinisterHoodedFigure (2012-11-09 21:54:44)


Crystal Kaizo...
Not the hardest hack, but probably the most... Sinister
http://www.mediafire.com/download/q3o60 … +Kaizo.ips

Offline

#7 2012-11-10 11:35:16

Danny-E 33
Administrator
Registered: 2012-06-09
Post 254/1,023

Re: Pokemon RBY Swapping/Editing Pokemon battle/pokedex sprites

Right, here we'll need to learn to repoint data. You never want to put a new sprite where the old sprite used to be if the new sprite has more bytes. You will almost certainly be overwriting important data, like the next sprite, or otherwise completely unrelated data. (in Mew's case, by inserting a larger sprite you have overwritten Mew's base stats, like attack, defense, learnable TMs etc.)
The only instance it would be okay to put a larger sprite in the same place as the original is when you are replacing the Pokemon sprite that is the last one in that bank and is followed by all zeros.

First things first. You need to know what pointers are and how we use them.
A pointer is when the game uses a hardcoded 16-bit address (2 bytes) to "point" to a location in RAM.
Pointers can only point to RAM and never ROM. However, one of the banks in RAM (bank 1) is the switchable bank that is a copy of one of the banks from ROM.
So most simple editing will be done on this RAM bank which is from $4000-$7FFF in RAM.
But pointers are also always little-endian, meaning the "smaller" byte comes first. So all the pointers that we will be dealing with will be from 0040-FF7F, make sense?
But don't forget, pointers can still point anywhere in RAM. Pointers are used for countless things throughout the game. But if we're just repointing sprite data, our data we're pointing to will always be in RAM bank 1, becuase the sprite will always have come from ROM.

Next you need to know how to calculate a pointer when you know the address of the data you are pointing to.
Let's pretend the data we are trying to point to is at 0x27D6B.
First, we want to get the remainder when we divide the address by 0x4000. Taking the remainder of a division problem as the answer is also called modulus division. It is notated by the % sign.
So 0x27D6B / 0x4000 = 0x9 with a remainder of 0x3D6B.
Since all we want is the remainder, this can also be represented by 0x27D6B % 0x4000 = 0x3D6B.
Remember, our pointer had to be between 0x4000-0x7FFF since it is pointing the ROM bank in RAM. So add 0x4000 to the answer you previously got:
0x3D6B + 0x4000 = 0x7D6B
The final thing is making sure we enter our pointer as little-endian. Which means our final, 2-byte pointer to the address 0x27D6B will be 6B 7D.

One more example.
Pointer to the address 0x2BEA9:
0x2BEA9 % 0x4000 = 0x3EA9
0x3EA9 + 0x4000 = 0x7EA9
Little-endian: A9 7E

There are 355 compressed images in the game. 302 Pokemon sprites (front and back), 45 trainer sprites (for the 47 trainer classes. there are two jugglers that use one sprite and the Chief has no sprite), Kabutops fossil, Aerodactyl fossil, Ghost, the player sprite, the two shrinking player sprites that are used in the Oak intro, the player's back sprite, and the Old Man's back sprite.

Now all these sprites already have pointers to their location. All you have to do is modify these pointers when you move the sprite.

The addresses of most of these pointers are pretty well documented. The pointers to a Pokemon's front and back sprites are in that Pokemons' base stats data. The Pokemon base stats data starts at 0x383DE and each entry for each Pokemon is 28 (0x1C) bytes long, and the list is in Pokedex order. The pointer to the front sprite is the 12th and 13th byte of the base stats for a Pokemon and the pointer to the back sprite is the 14th and 15th byte.
That table at 0x383DE has Bulbasaur through Mewtwo in Pokedex order. But Mew's stats are located at 0x425B.
Try to keep a Pokemon's sprite in the same bank as it originally was. If you absolutely have to change the bank a Pokemon sprite is in, let me know.

The pointers for the trainer sprites are bit more confusing. The pointers start at 0x39914, NOT 0x39915 like the Red/Blue:ROM map says. Like always, each pointer is 2 bytes long, but for some reason there are 3 bytes in between each pointer. These pointers are in trainer ID order.
So the first two bytes at 0x39914 is the little-endian pointer to the Youngster's sprite. Then three bytes that I don't know the meaning of. Then the next two bytes are the pointer to the Bug Catcher's sprite. And so on.

The pointer for the Kabutops fossil is at 0x154F. I haven't gotten around to finding the pointers to the Aerodactyl fossil or the Ghost yet, but I wanted to anyway, so I'll find them this weekend and post 'em.

The player's back sprite pointer is at 0x3EC97 and the pointer to the Old Man's back sprite is at 0x3EC9C.

Now the pointer to the player's sprite at the beginning of the Oak intro is at 0x618D.
The pointer to the same sprite after you've named your player a new name is at 0x61C3.
The pointer to the player in your bio (when you select your name in the start menu) is at 0x1349B.
There are possibley other pointers to the player sprite for the other times that sprite is loaded. Such as link battles, or at the end of the Pokemon League when it shows the party you beat the Elite Four with. I don't know if these pointers exist or where they are. I've never had to repoint the player sprite. Meaning, any custom player sprite I've used has been smaller than the original sprite.

That should be everything you need to know. If you have any questions, please ask.

Last edited by Danny-E 33 (2012-11-10 11:43:40)


Red Hack: Pokémon Prototype

Total number of registered users: 7000+
Total number of active users: ~12

Offline

#8 2012-11-14 21:07:27

SinisterHoodedFigure
Member
Registered: 2011-12-09
Post 8/67

Re: Pokemon RBY Swapping/Editing Pokemon battle/pokedex sprites

Do you know where I can find a calculator that computes mod for hex values?
I found hex calculators without mod, and modulo calculators without hex for about an hour on google, but not the one with both.


Crystal Kaizo...
Not the hardest hack, but probably the most... Sinister
http://www.mediafire.com/download/q3o60 … +Kaizo.ips

Offline

#9 2012-11-14 23:54:42

560/700

Re: Pokemon RBY Swapping/Editing Pokemon battle/pokedex sprites

SinisterHoodedFigure wrote:

Do you know where I can find a calculator that computes mod for hex values?
I found hex calculators without mod, and modulo calculators without hex for about an hour on google, but not the one with both.

Mod is just division, except it returns the remainder instead of the quotient. Windows Calculator can do this with hex values.

#10 2012-11-15 00:44:10

Danny-E 33
Administrator
Registered: 2012-06-09
Post 261/1,023

Re: Pokemon RBY Swapping/Editing Pokemon battle/pokedex sprites

Here's the shortcut I came up with to calculate pointers very simply.
If your address is 0xUVWXYZ:
1. Ignore V and any additional characters to the left.
2. Keep XYZ exactly how they are.
3. If W is a 0, 4, 8, or C make it a 4
    If W is a 1, 5, 9, or D make it a 5
    If W is a 2, 6, A, or E make it a 6
    If W is a 3, 7, B, or F make it a 7
    *(from now on, I'll call this new value "Q" to differentiate it with the original W value)*
4. Make it little-endian: YZ QX
5. IF you need the bank number too, take your initial address minus your big-endian pointer (with the modified W value) and then divide by 0x4000:
(0xUVWXYZ - 0xQXYZ) / 0x4000 = bank number

Last edited by Danny-E 33 (2012-11-18 18:02:10)


Red Hack: Pokémon Prototype

Total number of registered users: 7000+
Total number of active users: ~12

Offline

#11 2012-11-15 21:27:24

SinisterHoodedFigure
Member
Registered: 2011-12-09
Post 9/67

Re: Pokemon RBY Swapping/Editing Pokemon battle/pokedex sprites

So basically, I can move the sprite data near the end of the Rom (with the huge supply of zero bytes), and change the pointer bytes near the base stat area to match the pointer byte result of the beginning offset of the new sprite data?


Crystal Kaizo...
Not the hardest hack, but probably the most... Sinister
http://www.mediafire.com/download/q3o60 … +Kaizo.ips

Offline

#12 2012-11-16 04:51:29

Danny-E 33
Administrator
Registered: 2012-06-09
Post 262/1,023

Re: Pokemon RBY Swapping/Editing Pokemon battle/pokedex sprites

Right. If, for example, we're still talking about Mew's front sprite, I've already supplied the address of the pointer to the sprite and you can easily locate the beginning of free space.

As long as you keep the sprite in the same bank, all you have to do is calculate the new pointer and fix the old one. You don't even have to mess with the original frontsprite data. You can leave it just the way it is. Have you got this all sorted out now?


Red Hack: Pokémon Prototype

Total number of registered users: 7000+
Total number of active users: ~12

Offline

#13 2012-11-16 22:23:24

SinisterHoodedFigure
Member
Registered: 2011-12-09
Post 10/67

Re: Pokemon RBY Swapping/Editing Pokemon battle/pokedex sprites

The original bank is between offset 0x4000 to 0x7fff?
So the new sprite data must be pasted within these offset boundaries, and pointers must be the result of the beginning of the sprite offset?

Because before, I was pasting the new sprite data past that boundary, and got some garbled graphics, though at the same color.
I'm going to first try pasting the sprite data within those bank offset boundaries if there's free space, and see if I can point to that in the base stat data.

Update:
All right I think I figured it out.
When testing bulbasaur's data, the original data is found at Bank D, so I pasted the new sprite data on the empty space in that bank, and repointed to it, and I got the new bulbasuar's front sprite with no graphical flaws.

But the empty space after bank d and before the bank e is rather limited. So its inevitable that I do have to modify sprite data in bank D as long as the pointers in the base stats point to that data if I run out of room?

Last edited by SinisterHoodedFigure (2012-11-16 22:52:20)


Crystal Kaizo...
Not the hardest hack, but probably the most... Sinister
http://www.mediafire.com/download/q3o60 … +Kaizo.ips

Offline

#14 2012-11-20 06:46:11

Danny-E 33
Administrator
Registered: 2012-06-09
Post 265/1,023

Re: Pokemon RBY Swapping/Editing Pokemon battle/pokedex sprites

If you would like to control what bank the game will look in for each Pokemon sprite, you will need to learn some ASM, which I highly recommend.
You should really start with ASM School to get a feel for ASM first.
And use this as a reference for keeping track of what each opcode does.
Finally, I think this is a great resource for the hex value for each opcode.
Now all this is great, but studying this alone probably won't make you a master at ASM. What really makes light bulbs go off in your head is understanding some real world examples; how ASM is actually put to good use.
So I'm gonna give you this example and hopefully you honestly try to understand and then you can go on to do more great things on your own with ASM.

So let's get started.
There is a routine at 0x1633 that assigns bank numbers to groups of Pokemon ID's. Here is what that original routine looks like:
(note: anything to the right of " ; " is a comment)

ld a, [$CF91] ; this is the RAM address of the internal ID of the Pokemon currently being loaded
ld b, a       ; store Pokemon ID
cp $15        ; check if ID = $15 (Mew)
ld a, $01     ; store bank number for Mew
jr z, $25     ; jump forward 0x25 bytes if z-flag is set (if ID = $15)
ld a, b       ; restore ID into a
cp $B6        ; check if ID = $B6 (Kabutops fossil)
ld a, $0B     ; store bank number for Kabutops fossil
jr z, $1E     ; jump forward 0x1E bytes if z-flag is set (if ID = $B6)
ld a, b       ; restore ID into a
cp $1F        ; check if ID < $1F
ld a, $09     ; store bank number
jr c, $17     ; jump forward 0x17 bytes if c-flag is set (if ID < $1F)
ld a, b       ; restore ID into a
cp $4A        ; check if ID < $4A
ld a, $0A     ; store bank number
jr c, $10     ; jump forward 0x10 bytes if c-flag is set (if ID < $4A)
ld a, b       ; restore ID into a
cp $74        ; check if ID < $74
ld a, $0B     ; store bank number
jr c, $09     ; jump forward 0x09 bytes if c-flag is set (if ID < $74)
ld a, b       ; restore ID into a
cp $99        ; check if ID < $99
ld a, $0C     ; store bank number
jr c, $02     ; jump forward 0x02 bytes if c-flag is set (if ID < $99)
ld a, $0D     ; store bank number
jp $24FD      ; end

Try to get a feel for ASM with the few links I gave you and see if you can understand how this routine works. Let me know if you need any further explination.

Here is a solution for the bank problem created by Sawakita, and then optimized by stag019 and myself.

ld a, [$CF91] ; get Pokemon id
ld b, a       ; store Pokemon id
cp $B6        ; check if id = Kabutops fossil
ld a, $0B     ; store bank of fossil sprite
jr z, $11     ; jump forward 0x11 bytes if z-flag is set (if id = Kabutops fossil)
ld a, b       ; restore id into a
cp $B7        ; check if id = Aerodactyl fossil
ld a, $0D     ; store bank of fossil sprite
jr z, $0A     ; jump forward 0xA bytes if z-flag is set (if id = Aerodactyl fossil)
ld a, b       ; restore id into a
cp $B8        ; check if id = Ghost
ld a, $0D     ; store bank of ghost sprite
jr z, $03     ; jump forward 0x3 bytes if z-flag is set (if id = Ghost)
ld a, [$D0D3] ; load bank from last byte of current Pokemon's base stats
jp [$24FD]    ; end

And the code for that would look like:

FA 91 CF
47
FE B6
3E 0B
28 11
78
FE B7
3E 0D
28 0A
78
FE B8
3E 0D
28 03
FA D3 D0
C3 FD 24

Here, instead of hardcoded bank numbers based on the internal ID, it gets a bank number from the last byte of that Pokemon's base stats data from the table at 0x383DE that I mentioned earlier.
Remember how I said each Pokemon's base stats had 28 (0x1C) bytes? Well, that last byte is always 00 (except for Mew, it is FF) and is certainly never used for anything.
Whenever this routine at 0x1633 is being read, that particular Pokemon's base stats are already copied into RAM, and the last byte is at 0xD0D3.
So in addition to adding this custom routine, you have to go through the 151 Pokemon's base stats and put the sprites bank number into the last byte.
From here, you can easily customize the location of any Pokemon sprite. The only catch is that a Pokemon's front and back sprite must be in the same bank, but that shouldn't be a big deal.

Let me know if any more clerification is needed.


Red Hack: Pokémon Prototype

Total number of registered users: 7000+
Total number of active users: ~12

Offline

#15 2012-11-20 06:51:32

stag019
Idea Killer
Registered: 2011-01-05
Post 238/630

Re: Pokemon RBY Swapping/Editing Pokemon battle/pokedex sprites

Danny-E 33 wrote:

So in addition to adding this custom routine, you have to go through the 151 Pokemon's base stats and put the sprites bank number into the last byte.

My program does this automatically (as well as other things).


You can try to hide yourself in this world of pretend; when the paper's crumpled up, it can't be perfect again.

Offline

#16 2015-07-25 14:38:22

WAFFAHOUSE
Member
Registered: 2015-07-23
Post 25/27

Re: Pokemon RBY Swapping/Editing Pokemon battle/pokedex sprites

Danny-E 33 wrote:

Here is my post in another thread about replacing the player sprite in Yellow. The process is exactly the same except for the location of the sprites you are replacing. All the locations for every compressed image in the rom can be found here.

Danny-E 33 wrote:

Here's what you'll need:
Hexecute*Goldfinger might work fine. I've never tried it myself.*
Tile Molester
Paint

First open the sprite in paint and make sure to format the picture with the specific parameters.
For the front sprite, the image must be exactly 56x56 pixels and the backsprite but be exactly 32x32 pixels. *Here I am just talking about the player sprite. Pokemon front sprites can be 40x40, 48x48, or 56x56 pixels. All back sprites must be 32x32 pixels.* This means the front sprite is a 7x7 tile image and the backsprite is a 4x4 tile image. A tile is 8 pixels by 8 pixels.
Also, these sprites must include only 4 colors, same as before. White-light shade-dark shade-black.
Save that image as a bitmap or a png or something.
Now open up Tile Molester and click the New button.
It will ask you for a size of the new file you are creating. For the front sprite, type 784. For the back sprite, type 256. *For 7x7 images type 784, for 6x6 type 576, for 5x5 type 400, for back sprites (4x4) type 256.*
Click View->Codec->2bpp planar.
Click View->Block Size->Custom.
For columns, type 1.
For rows, type 7 for the frontsprite or 4 for the backsprite.*Type 7 for a 56x56, 6 for a 48x48, 5 for a 40x40, or 4 for a backsprite (32x32)*
Then click Edit->Paste From and choose the image.
At this point, it should be displaying your image exactly the way it's supposed to look like with its original colors. Now double click each color on the palette bar in Tile Molester and change them to match the 4 colors of your image fairly closely. Again, make sure white is on the left!
Then you must click in some empty grey space in the window to finish pasting the image.
This causes any color on the original image to change to the closest matching color from the palette you just customized. If you did this correctly, it should look fairly normal.
Save this file.

Then go to stag019's Pokemon Generation I Graphics Compressor..
For the front sprite, enter 7 for the width and height. For the back sprite, enter 4.*Again, type the same width and height as you did for the rows in Tile Molester.*
Click Browse and find the file you made in Tile Molester.
Click Go and save that new file.
Open two Hexecute windows.
In one, open your ROM. In the other, open the compressed sprite you just made.
In the ROM, put your cusor right before the byte so that the offset in the status bar at the bottom says 0x12EDE for the front sprite or 0x33E0A for the back sprite.
In the Hexecute window for the sprite, select the whole thing and click Edit->Copy.
In the ROM, press Edit->Paste.

Let me know any futher clarification you need and I'll try to help you through this.

If your new compressed sprite is longer than the length that stag019's chart says is the length of the original sprite (I linked to that chart at the very beginning of this post), then you need to learn how to repoint data. I can explain this more later when I have more time if you need more help.

Also, no debugging is necessary for this task but, like Vitharix said, bgb is just more useful in general.



dude please help me with this lol im trying to do this now and I cannot figure this out... I keep getting errors arter I compile it


thanks again danny for all ur knowledge!
waffa

Offline

#17 2015-07-26 16:50:31

Danny-E 33
Administrator
Registered: 2012-06-09
Post 885/1,023

Re: Pokemon RBY Swapping/Editing Pokemon battle/pokedex sprites

The problem is you are trying to use pokeyellow. Remeber how I said so much of the rom is "copy/pasted" when you compile pokeyellow? The sections that are copy/pasted are un-editable.

To edit those sections, you have to hex edit the rom that is compiled from your project. But if you do that, those changes get lost the next time you compile.

So if you want to edit sections of the game that are copy/pasted, you have two possibilities:
-make your hack entirely using hex editing a rom, no compiling the source code (terrible idea)
-wait for me (or do it yourself) to make significant progress on pokeyellow so that those sections that you want to edit are no longer copy/pasted and are then directly editable in the source code (don't hold your breath)

...or you could just use pokered. (avoid all of this stress)


Red Hack: Pokémon Prototype

Total number of registered users: 7000+
Total number of active users: ~12

Offline

#18 2015-07-27 06:12:16

WAFFAHOUSE
Member
Registered: 2015-07-23
Post 26/27

Re: Pokemon RBY Swapping/Editing Pokemon battle/pokedex sprites

Danny-E 33 wrote:

The problem is you are trying to use pokeyellow. Remeber how I said so much of the rom is "copy/pasted" when you compile pokeyellow? The sections that are copy/pasted are un-editable.

To edit those sections, you have to hex edit the rom that is compiled from your project. But if you do that, those changes get lost the next time you compile.

So if you want to edit sections of the game that are copy/pasted, you have two possibilities:
-make your hack entirely using hex editing a rom, no compiling the source code (terrible idea)
-wait for me (or do it yourself) to make significant progress on pokeyellow so that those sections that you want to edit are no longer copy/pasted and are then directly editable in the source code (don't hold your breath)

...or you could just use pokered. (avoid all of this stress)

Ok man I've determined my hard drive for my laptop has officially sh1t the bed hahahaha so here is where I'm at so far, I've got new to follow, changed a few things here and there with gym leaders Pokemon, and added a few rare items for sales in the first town. But man I hate this mew back sprite hahaha Man if it's not too much trouble, could I send you what I've got so far and you add better sprites for me? I'll give you full credit bro. I would be forever greatful!! If changing all the sprites is a pain in the butt, that's fine man I really just Emma make the new sprites look better (front, back)

Thanks again Dan for all your intributuons to my game POKEMON M.W.O.!!!! #myHeRO

WAFFA

Offline

#19 2015-07-27 16:16:33

Danny-E 33
Administrator
Registered: 2012-06-09
Post 886/1,023

Re: Pokemon RBY Swapping/Editing Pokemon battle/pokedex sprites

It's like you didn't even read my post. Let me explain further...

The reason you got build errors when trying to use different pokemon sprites in pokeyellow is that the new sprites are too big (after being compressed) to fit in the original banks. So, you have to move some sprites to different banks. But there is an asm routine that hard codes which banks to look in for specific pokemon sprites. So you must also update that asm routine to correctly look in the new banks for the new sprites. This specific asm routine is currently not documented in pokeyellow (even though it is documented in pokered). Meaning, it is currently copy/pasted and un-editable.

Therefore...

Danny-E 33 wrote:

So if you want to edit sections of the game that are copy/pasted, you have two possibilities:
-make your hack entirely using hex editing a rom, no compiling the source code (terrible idea)
-wait for me (or do it yourself) to make significant progress on pokeyellow so that those sections that you want to edit are no longer copy/pasted and are then directly editable in the source code (don't hold your breath)

...or you could just use pokered. (avoid all of this stress)


Red Hack: Pokémon Prototype

Total number of registered users: 7000+
Total number of active users: ~12

Offline

#20 2015-07-27 16:22:09

WAFFAHOUSE
Member
Registered: 2015-07-23
Post 27/27

Re: Pokemon RBY Swapping/Editing Pokemon battle/pokedex sprites

Danny-E 33 wrote:

It's like you didn't even read my post. Let me explain further...

The reason you got build errors when trying to use different pokemon sprites in pokeyellow is that the new sprites are too big (after being compressed) to fit in the original banks. So, you have to move some sprites to different banks. But there is an asm routine that hard codes which banks to look in for specific pokemon sprites. So you must also update that asm routine to correctly look in the new banks for the new sprites. This specific asm routine is currently not documented in pokeyellow (even though it is documented in pokered). Meaning, it is currently copy/pasted and un-editable.

Therefore...

Danny-E 33 wrote:

So if you want to edit sections of the game that are copy/pasted, you have two possibilities:
-make your hack entirely using hex editing a rom, no compiling the source code (terrible idea)
-wait for me (or do it yourself) to make significant progress on pokeyellow so that those sections that you want to edit are no longer copy/pasted and are then directly editable in the source code (don't hold your breath)

...or you could just use pokered. (avoid all of this stress)


Yeah I read that older post you made, it's just my laptop hardrive pooped out so I'm kinda unable to do or learn anything right now... Now about that pokered hack, I'm still totally open to switching to hacking that if me and you can get the Pokemon follow thing working like in pokeyellow... Have you had any chance to test that out yet? Dude if you get that working I will FOR SURE switch to pokered!!

Once again, thank you for all your guidance Dan I really appreciate it Bud
Waffa

Offline

  • Index
  • → Help/Question
  • → Pokemon RBY Swapping/Editing Pokemon battle/pokedex sprites

Board footer

Powered by FluxBB