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: 28
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!
__________________