DC Forums

We have moved our forums:
http://www.dcforums.co.cc/forum/

Please re-register there, thank you.
GKS
There are many new features available. Some of them include: the advanced profile, reputation system, and the point system. Thank you for waiting patiently, enjoy the update. Plus we are still working on fixing a lot of bugs and stuff that are wrong with the theme.

    Swapping Sprites in RBY - By:thethethethe

    Share

    G.K.S.
    Founder
    Founder

    Male Number of posts: 1718
    Age: 20
    Location: Calfornia, United States
    Status: Updating the forum.
    Warning:
    90 / 10090 / 100

    Reputation: 0
    Points: 25
    Registration date: 2008-09-19

    default Swapping Sprites in RBY - By:thethethethe

    Post by G.K.S. on Wed Dec 31, 2008 4:28 pm

    Swapping Sprites in RBY








    Using Yellow Sprites in Red/Blue

    This is a tutorial to change some of the sprites in Red/Blue/Yellow roms.
    What you need:

    • A hex Editor (duh?) (I used Hexeccute because of it's Copy/paste functionality)
    • A debugger (I used Virtual Gameboy Color)
    • An emulator to test the result (Either VBA or just use the debugger mentioned above.)

    First you have to choose which sprite you want to replace of course. I
    want to use the Nidorino sprite from Pokemon Yellow, and insert it into
    a Pokemon Red rom. Now that we've chosen the sprite we need to edit the
    Yellow rom slightly. To find where the sprite is in Yellow we need to
    go to the base stat data of Nidorino. So in your hex editor goto
    &H383DE. You're at Bulbasaur's data. Now go to &H383DE +
    &H1C * (Pokemon's Pokedex Number - 1) or &h383DE + &h1C *
    (33-1). So we're going to now look at &H383DE + &H39C or
    &H3875E.
    We're now at Nidorino's Stat Data. The Pokemon's image data starts at
    the 11th byte of the base stats, so add 10 to where you are. You should
    now be at &H38768. And you should be seeing &H66. This just
    means that the image is 6 * 6. That's important if the image in Pokemon
    red is a 5 * 5, or 7 * 7. After this byte we have the pointers to the
    image data. 7F53 and DC54. The first pointer points to the front sprite
    and the second points to the backsprite. We're going to change the
    front sprite, but we still need to find the bank for both.
    Now that we have that, find your preferred Debugger. I used Virtual
    Game Boy Color. So this explanation applys to that program. But before
    we open your rom in a debugger, we need to change a certain byte in the
    Pokemon Yellow rom. We need to view the the Nidorino image in the
    Pokemon Yellow rom to fin the bank for the offset. So in your Yellow
    rom, goto the address, &H5EDB. This is the byte for the Pokemon in
    the Oak Introduction. Change this to A7, which is the byte for
    Nidorino. Save.
    Now open your Yellow rom in a debugger. Press F11 to enter the debugger
    mode. Set a breakpoint at &H251A, which is the beginning of the
    decompression routine, and then press F5, to continue the emulation.
    As soon as you hit 'A' on 'New Game', the game will break. This isn't
    the image we want. This is breaking because of the Oak image. Just keep
    pressing F5 until the emulation begins again. You may have to press it
    5-6 times. The next break is the one we want.



    AS you can see the bank is 0D. (For more info on Pointers, go to bottom of post)
    We now have our offsets, 0D:7F53, and 0D:DC54. Now turn these into a hex address.
    0D 7F 53 = &h3537F
    0D DC 54 = &h354DC

    Now we need to find the size of the image. &h354DC - &h3537F =
    &h15D bytes. Pretty big image. Now we need to do the same process
    for the Nidorino sprite in Pokemon Red. (NOTE: Base Stat data begins at
    the same spot in both Red/Blue/Yellow. So the info will be in the same
    spot in each of those roms.)

    Here, I'll even save you some time. The pointers in a Red rom, the
    Nidorino front and back sprites are at 35282, and 353F0 respectively.
    So that's a difference of &h16E bytes.
    That means we don't need to repoint anything. Now in your Yellow Rom,
    go to the hex address 3537F, and highlight &h15D bytes or, every
    byte between the front and back sprites, then 'copy' it.
    Now go to your red rom and go to 35282, and click 'paste'. Save. But I
    bet your asking about those extra 17 bytes left over from the paste.
    Don't worry about them. They won't effect your sprite in any way. The
    rom knows when the decompression of the image ends. All that's left is
    to look at the finished product.
    Open your Red rom in your emulator. And you should have this.



    Basic Pointer Information
    Hex Address to pointer
    Note: All values are hex.
    3537F / 4000 = 0D ' This is the first byte.
    Since Bank 0D is 34000 - 37FFF
    For the last two bytes 3537F - 34000 = 13 7F.
    Now we flip those and we get: 0D : 7F 13
    That last byte needs to between 40 and 7F.
    So if the byte is from:
    0 - 3F 'Add 40 to it
    40 - 7F 'Leave it as it is
    80 - DF 'Subtract 40 from it
    E0 - FF 'Subtract 80 from it.
    My example lies in that first category so we add 40 to it.
    Finished pointer is 0D: 7F53

    Pointer to Hex Address
    Note: All values are hex.
    0D:DC54
    xx:yyzz
    xx * 4000 = 0D * 4000 = 34000
    Flip yy and zz.
    54DC
    34000 + 54DC = 394DC
    394DC / 4000 = 0E. WRONG BANK.
    So subtract 4000 from 54DC = 14DC
    34000 + 14DC = 354DC

    Thanks to the unkown author of an older document
    And Coolboyman for the guide on GB pointers.
    For tools, search for them on google.
    Any more clarification needed, please post your problem.
    Enjoy.


    _________________
    http://www.cramster.com/?referral_id=509296
    For help on homework and for studying.

      Current date/time is Fri Apr 18, 2014 8:16 am