Thread: [Tutorial] zel's Home-made Tutorials
View Single Post
  #19    
Old May 10th, 2007 (11:16 AM).
zel 2.0's Avatar
zel 2.0 zel 2.0 is offline
Gold Remaker
     
    Join Date: Jun 2006
    Location: Argentina
    Age: 30
    Gender: Male
    Nature: Quiet
    Posts: 1,959
    OK, second wave of my Tutorials, since there were questions about Palette Changing, I tried to write one, even though there are guides at other sites, but I added screenies to try to guide people better (or so I hope )

    Changing Graphics - Changing Palettes of Anything

    Don't forget to make a backup!

    Basically, the first thing you need to remember is that all graphics in any game are divided into two parts: Maps and Sprites. Each of this parts has its own section in the emulator "Tools" option, so, Maps should be viewed with the Map Viewer, and sprites with the Oam Viewer. Also, we will require the use of the Palette Viewer as well.

    So, the idea is, if we want to change palettes in a "Map", then we'd need the Map Viewer and the Palette Viewer, and if we want to change palettes in a sprite, then we'd need the Oam Viewer and the Palette Viewer.

    But... What is a "Map"? It's just all the backgrounds and all the tiles in the game, while the sprites are all the graphical effects on maps, the overworlds and the pokemon and their attacks are sprites as well.

    -Working with the Map Viewer and the Palette Viewer

    OK, let's suppose I want to change the green colour that has the FR intro. Since it is a background, then it is a "Map", which means I have to open the Map Viewer and the Palette Viewer.

    The backgrounds have many levels, with different components in each level, so search through the BG levels to find what we are looking for.


    Fig1. I found the back I wanted to modify at BG3

    All you need to do now is click on the area that has the colour to be modified, this will make the area appear in the panel down-left, now click in one of the pixels (the one that has the colour to be modified), and this will fill the panel down-right with the colour we want to change and will give us the important thing: its RGB value.


    Fig2. After clicking around we get all this info, but the RGB value is what we are looking for.

    Once we have the RGB values, then we switch to the Palette Viewer, and we look in the "Backgrounds" section, because we are modifying a "Map". Sooner or later we will find between all the colours the one with the RGB we have.


    Fig3. We found it, and the important value to get is that hex value 0x52C8

    Don't forget to swap this 52C8 value, which means we obtain a C852. And you need to list the other colours close to the 52C8 to make searchs easier (in this example, if you go to the right you'll get the following values 0011 0075 00FA 017F)

    But don't forget we need to swap'em all, giving us the list: C85211007500FA007F01

    Now comes the part when we need an hex-editor (better if it is an hex-editor which allows you to write hex values fast, because we will be writing a good amount of hex values this time), so I'll pick Hex Workshop over Thingy this time.
    So, once in our hex-editor, we just need to search that list (by the way, before searching, you should go to the bottom of the rom and do an "Up" search)


    Fig4. Searching for the list of colours


    Fig5. The result gets coloured, I also mark where the palette begins and where it ends, but all we really need is the place where says C852

    So there is our palette, but for now all we want to do is change the single colour C852, and we need to put another colour there, but the problem is that, as you already saw, that colours have hex-values assigned, so when you want to change colours you need to either keep trying values randomly, or look into the Palette Viewer again. I'll go to my Palette Viewer and change the green back with a black colour, the black that has the value 0000, so I'll go back to the hex-editor and change the C852 with 0000 (don't forget that we always need to swap the values given by the Palette Viewer!)


    Fig6. I change the colour with the hex-editor

    We save the changes, and we reload the rom in the emulator to see the results...


    Fig7. Sucess!

    -Working with the Oam Viewer and the Palette Viewer

    It's practically the same method, but we need to find the sprite using the Oam Viewer. But, you need to open the Oam Viewer inmediately after the sprite is occuring (this is because usually sprites may have animation and it may switch the palettes they use, but in the following example, I wouldn't need to desperately open the Oam Viewer)

    Let's make an example, I'll change the colour of the yellow flames in the FR intro, so once I catch the flame, I open the Oam Viewer and I'll search through it till I find the flame (there are many yellow flames, but I just need one), I find it as the Sprite 2.


    Fig8. Looking for the sprite with the Oam Viewer

    Once we find the sprite, all we have to do is start clicking again. Click the sprite in the area that has the colour to be modified, this will make the area appear in the panel up-right, then we click in one of the pixels that has the colour, which will fill the bottom panel, with the information on the RGB values, as when we were working with Maps


    Fig9. I will change this colour

    After getting the RGB values, the process is quite the same. We open the Palette Viewer (but this time we will search in the "Sprite" section palettes), we search for our RGB colour, and once we find it, we get the colours close to it, in my case my list would be: FF5FDF475F23BF02981A, and I want to modify that FF5F.

    We go to the hex-editor, back to the bottom of the rom, and we do another "Up" search looking for the new list. We get a result, and I'll modify the FF5F in that result for another value (I'll use the value B900, a red tone)


    Fig10. And after the hex-replacing, the sprite gets a new colour

    -Final Comments

    Sometimes, the palettes we get as results using the hex-editor are not correct, and we may not get the results we want (and even we could be modifying stuff we don't want to), so don't forget to fix the changes if you don't get results, then make a new hex-search.

    Even when the examples just show how to modify a single colour, we always get the full palette when we are searching, it's just that we need to know where the palette begins and ends (use the values in the Palette Viewer to guide yourself), when you get that idea, you can replace all the colours in that palette!

    Changing palettes of tiles is the same as when we modified Maps colours with the Map Viewer, while changing palettes of overworlds is the same as when we modified the flames. However, you should never forget that if a palette is shared by different stuff, all your changes will affect the stuff that is sharing the palette, so you should be careful when doing palette changes. Don't forget this!

    Well, that's all I learned about Palette Changing. I hope it's of any use to you!

    ____________________________________________

    Hex Editing - Changing TMs

    This tutorial is quite simple, but you need to know how to deal with an hex-editor.

    As always, make a backup of your rom...

    Now, open your hex-editor. We want to find the list of moves taught by the TMs, and that's why we need a list with the hex for every single move in the game, but don't worry I already have that list, so here it goes...

    Spoiler:
    0000. Nothing
    0100. POUND
    0200. KARATE CHOP
    0300. DOUBLESLAP
    0400. COMET PUNCH
    0500. MEGA PUNCH
    0600. PAY DAY
    0700. FIRE PUNCH
    0800. ICE PUNCH
    0900. THUNDERPUNCH
    0A00. SCRATCH
    0B00. VICEGRIP
    0C00. GUILLOTINE
    0D00. RAZOR WIND
    0E00. SWORDS DANCE
    0F00. CUT
    1000. GUST
    1100. WING ATTACK
    1200. WHIRLWIND
    1300. FLY
    1400. BIND
    1500. SLAM
    1600. VINE WHIP
    1700. STOMP
    1800. DOUBLE KICK
    1900. MEGA KICK
    1A00. JUMP KICK
    1B00. ROLLING KICK
    1C00. SAND-ATTACK
    1D00. HEADBUTT
    1E00. HORN ATTACK
    1F00. FURY ATTACK
    2000. HORN DRILL
    2100. TACKLE
    2200. BODY SLAM
    2300. WRAP
    2400. TAKE DOWN
    2500. THRASH
    2600. DOUBLE-EDGE
    2700. TAIL WHIP
    2800. POISON STING
    2900. TWINEEDLE
    2A00. PIN MISSILE
    2B00. LEER
    2C00. BITE
    2D00. GROWL
    2E00. ROAR
    2F00. SING
    3000. SUPERSONIC
    3100. SONICBOOM
    3200. DISABLE
    3300. ACID
    3400. EMBER
    3500. FLAMETHROWER
    3600. MIST
    3700. WATER GUN
    3800. HYDRO PUMP
    3900. SURF
    3A00. ICE BEAM
    3B00. BLIZZARD
    3C00. PSYBEAM
    3D00. BUBBLEBEAM
    3E00. AURORA BEAM
    3F00. HYPER BEAM
    4000. PECK
    4100. DRILL PECK
    4200. SUBMISSION
    4300. LOW KICK
    4400. COUNTER
    4500. SEISMIC TOSS
    4600. STRENGTH
    4700. ABSORB
    4800. MEGA DRAIN
    4900. LEECH SEED
    4A00. GROWTH
    4B00. RAZOR LEAF
    4C00. SOLARBEAM
    4D00. POISONPOWDER
    4E00. STUN SPORE
    4F00. SLEEP POWDER
    5000. PETAL DANCE
    5100. STRING SHOT
    5200. DRAGON RAGE
    5300. FIRE SPIN
    5400. THUNDERSHOCK
    5500. THUNDERBOLT
    5600. THUNDER WAVE
    5700. THUNDER
    5800. ROCK THROW
    5900. EARTHQUAKE
    5A00. FISSURE
    5B00. DIG
    5C00. TOXIC
    5D00. CONFUSION
    5E00. PSYCHIC
    5F00. HYPNOSIS
    6000. MEDITATE
    6100. AGILITY
    6200. QUICK ATTACK
    6300. RAGE
    6400. TELEPORT
    6500. NIGHT SHADE
    6600. MIMIC
    6700. SCREECH
    6800. DOUBLE TEAM
    6900. RECOVER
    6A00. HARDEN
    6B00. MINIMIZE
    6C00. SMOKESCREEN
    6D00. CONFUSE RAY
    6E00. WITHDRAW
    6F00. DEFENSE CURL
    7000. BARRIER
    7100. LIGHT SCREEN
    7200. HAZE
    7300. REFLECT
    7400. FOCUS ENERGY
    7500. BIDE
    7600. METRONOME
    7700. MIRROR MOVE
    7800. SELFDESTRUCT
    7900. EGG BOMB
    7A00. LICK
    7B00. SMOG
    7C00. SLUDGE
    7D00. BONE CLUB
    7E00. FIRE BLAST
    7F00. WATERFALL
    8000. CLAMP
    8100. SWIFT
    8200. SKULL BASH
    8300. SPIKE CANNON
    8400. CONSTRICT
    8500. AMNESIA
    8600. KINESIS
    8700. SOFTBOILED
    8800. HI JUMP KICK
    8900. GLARE
    8A00. DREAM EATER
    8B00. POISON GAS
    8C00. BARRAGE
    8D00. LEECH LIFE
    8E00. LOVELY KISS
    8F00. SKY ATTACK
    9000. TRANSFORM
    9100. BUBBLE
    9200. DIZZY PUNCH
    9300. SPORE
    9400. FLASH
    9500. PSYWAVE
    9600. SPLASH
    9700. ACID ARMOR
    9800. CRABHAMMER
    9900. EXPLOSION
    9A00. FURY SWIPES
    9B00. BONEMERANG
    9C00. REST
    9D00. ROCK SLIDE
    9E00. HYPER FANG
    9F00. SHARPEN
    A000. CONVERSION
    A100. TRI ATTACK
    A200. SUPER FANG
    A300. SLASH
    A400. SUBSTITUTE
    A500. STRUGGLE
    A600. SKETCH
    A700. TRIPLE KICK
    A800. THIEF
    A900. SPIDER WEB
    AA00. MIND READER
    AB00. NIGHTMARE
    AC00. FLAME WHEEL
    AD00. SNORE
    AE00. CURSE
    AF00. FLAIL
    B000. CONVERSION 2
    B100. AEROBLAST
    B200. COTTON SPORE
    B300. REVERSAL
    B400. SPITE
    B500. POWDER SNOW
    B600. PROTECT
    B700. MACH PUNCH
    B800. SCARY FACE
    B900. FAINT ATTACK
    BA00. SWEET KISS
    BB00. BELLY DRUM
    BC00. SLUDGE BOMB
    BD00. MUD-SLAP
    BE00. OCTAZOOKA
    BF00. SPIKES
    C000. ZAP CANNON
    C100. FORESIGHT
    C200. DESTINY BOND
    C300. PERISH SONG
    C400. ICY WIND
    C500. DETECT
    C600. BONE RUSH
    C700. LOCK-ON
    C800. OUTRAGE
    C900. SANDSTORM
    CA00. GIGA DRAIN
    CB00. ENDURE
    CC00. CHARM
    CD00. ROLLOUT
    CE00. FALSE SWIPE
    CF00. SWAGGER
    D000. MILK DRINK
    D100. SPARK
    D200. FURY CUTTER
    D300. STEEL WING
    D400. MEAN LOOK
    D500. ATTRACT
    D600. SLEEP TALK
    D700. HEAL BELL
    D800. RETURN
    D900. PRESENT
    DA00. FRUSTRATION
    DB00. SAFEGUARD
    DC00. PAIN SPLIT
    DD00. SACRED FIRE
    DE00. MAGNITUDE
    DF00. DYNAMICPUNCH
    E000. MEGAHORN
    E100. DRAGONBREATH
    E200. BATON PASS
    E300. ENCORE
    E400. PURSUIT
    E500. RAPID SPIN
    E600. SWEET SCENT
    E700. IRON TAIL
    E800. METAL CLAW
    E900. VITAL THROW
    EA00. MORNING SUN
    EB00. SYNTHESIS
    EC00. MOONLIGHT
    ED00. HIDDEN POWER
    EE00. CROSS CHOP
    EF00. TWISTER
    F000. RAIN DANCE
    F100. SUNNY DAY
    F200. CRUNCH
    F300. MIRROR COAT
    F400. PSYCH UP
    F500. EXTREMESPEED
    F600. ANCIENTPOWER
    F700. SHADOW BALL
    F800. FUTURE SIGHT
    F900. ROCK SMASH
    FA00. WHIRLPOOL
    FB00. BEAT UP
    FC00. FAKE OUT
    FD00. UPROAR
    FE00. STOCKPILE
    FF00. SPIT UP
    0001. SWALLOW
    0101. HEAT WAVE
    0201. HAIL
    0301. TORMENT
    0401. FLATTER
    0501. WILL-O-WISP
    0601. MEMENTO
    0701. FACADE
    0801. FOCUS PUNCH
    0901. SMELLINGSALT
    0A01. FOLLOW ME
    0B01. NATURE POWER
    0C01. CHARGE
    0D01. TAUNT
    0E01. HELPING HAND
    0F01. TRICK
    1001. ROLE PLAY
    1101. WISH
    1201. ASSIST
    1301. INGRAIN
    1401. SUPERPOWER
    1501. MAGIC COAT
    1601. RECYCLE
    1701. REVENGE
    1801. BRICK BREAK
    1901. YAWN
    1A01. KNOCK OFF
    1B01. ENDEAVOR
    1C01. ERUPTION
    1D01. SKILL SWAP
    1E01. IMPRISON
    1F01. REFRESH
    2001. GRUDGE
    2101. SNATCH
    2201. SECRET POWER
    2301. DIVE
    2401. ARM THRUST
    2501. CAMOUFLAGE
    2601. TAIL GLOW
    2701. LUSTER PURGE
    2801. MIST BALL
    2901. FEATHERDANCE
    2A01. TEETER DANCE
    2B01. BLAZE KICK
    2C01. MUD SPORT
    2D01. ICE BALL
    2E01. NEEDLE ARM
    2F01. SLACK OFF
    3001. HYPER VOICE
    3101. POISON FANG
    3201. CRUSH CLAW
    3301. BLAST BURN
    3401. HYDRO CANNON
    3501. METEOR MASH
    3601. ASTONISH
    3701. WEATHER BALL
    3801. AROMATHERAPY
    3901. FAKE TEARS
    3A01. AIR CUTTER
    3B01. OVERHEAT
    3C01. ODOR SLEUTH
    3D01. ROCK TOMB
    3E01. SILVER WIND
    3F01. METAL SOUND
    4001. GRASSWHISTLE
    4101. TICKLE
    4201. COSMIC POWER
    4301. WATER SPOUT
    4401. SIGNAL BEAM
    4501. SHADOW PUNCH
    4601. EXTRASENSORY
    4701. SKY UPPERCUT
    4801. SAND TOMB
    4901. SHEER COLD
    4A01. MUDDY WATER
    4B01. BULLET SEED
    4C01. AERIAL ACE
    4D01. ICICLE SPEAR
    4E01. IRON DEFENSE
    4F01. BLOCK
    5001. HOWL
    5101. DRAGON CLAW
    5201. FRENZY PLANT
    5301. BULK UP
    5401. BOUNCE
    5501. MUD SHOT
    5601. POISON TAIL
    5701. COVET
    5801. VOLT TACKLE
    5901. MAGICAL LEAF
    5A01. WATER SPORT
    5B01. CALM MIND
    5C01. LEAF BLADE
    5D01. DRAGON DANCE
    5E01. ROCK BLAST
    5F01. SHOCK WAVE
    6001. WATER PULSE
    6101. DOOM DESIRE
    6201. PSYCHO BOOST


    Next, we need to find the moves taught by TMs in your version. I'll start from TM06 in FR.

    TM06-Toxic, in the list is 5C00
    TM07-Hail, in the list is 0201
    TM08-Bulk Up, in the list is 5301
    TM09-Bullet Seed, in the list is 4B01

    That's enough info to get started, so now we want to find the string 5C00020153014B01, so go to the search option in your hex-editor and do an "hex search" for that string...


    Fig1. I'm looking for the string using Thingy

    Allright, we found the string. If we look to the left of where we are pointing at, we have the rest of the TMs corresponding to TM05, 04, etc. So I'll go where it says 0801 and replace it with 0100 (because in this example, we will create the "Pound" TM)


    Fig2. I replaced the 0801 for 0100

    Fig3. And now the result is... Focus Punch... Huh?

    Oh man... We failed, but don't worry, it just means that the table we found wasn't the one we wanted to modify, so once again fix the 0100 for the 0801 (to leave things as they were), and let's try a new hex-search for the string 5C00020153014B01


    Fig4. Second search, we get another offset.

    So, the table was somewhere else, so let's try again changing the 0801 (at offset 45A80C) for 0100, and let's see the results this time...


    Fig5. Wow, Pound has just become a TM! But... The description is not good... Oh, well, we'll fix that later with a text editor.

    Fig6. I'll teach my Dusclops the TM Pound... Yeah... Sure...

    Fig7. And there it is... Dusclops + Pound!

    That was easy, wasn't it? Now, you just need to replace the 50TMs for the moves you want (you have the list, so it all depends on what you want to teach). By the way, you can even modify the HMs, so probably that may give you ideas for your games (the HMs can be found right after the 50 TMs)

    But, since teaching Pound to Dusclops doesn't sound too logic, the next part requires using a program to "re-educate" the pokes so they know which TMs they can learn and which they cannot. So my recommended program would be (unless you know to deal with hex) Pokemon Amplifier, so search for that program around the web.

    Basically, it looks like this:


    Fig8. This is Pokemon Amplifier, you can see the important stuff, like the Poke No. and the TM list, so all you'd need to do is select the TMs to be able to learn by the poke, and de-select the moves you don't want. I recommend you getting a newer version of Amplifier which has the pics of the pokes, which will make things faster and easier.

    Once you selected the moves, just Save the info into the rom, and change to the next poke and so on. This means this is the heaviest part, because it's basically a hard and repeatitive part.

    Well, the final part is changing the TM description, but that basically is just editing the description with a text editor, such as Advance Text. I don't know if there is need for a guide about that, we'll see...

    And that's all, I hope it wasn't too hard to understand!
    __________________