Skeetendo

’Cause all games were better on the GBC

You are not logged in.

#1 2011-11-08 07:55:15

tysonrss
Member
From: US, Ohio
Registered: 2011-08-27
Post 70/649

Scripting Gold/Silver

Hello all. This is not mine, but it's very useful and in depth. I can understand this one a lot better than the ones already posted here. Many details were left out in the others. This one really goes into the data of scripts and explains pointers well. I'm still learning, but this tutorial has helped me a lot more.(Not talking down on anyone, just saying). This is Cooley's tutorial from Pokecommunity.


******************
What You Will Need
******************

1. Hex Editor(Preferably Translhextion)
2. Gold Map 1.6
3. Tauwasser's Scripting Compendium
4. Pokémon Gold or Silver Rom
5. Pointer Calculator http://crystalfallows.110mb.com/AutoInd … t_1116.zip
6. Windows Calculator(Start>All Programs>Accesories>Calculator)

***************

First you Pick which person to edit. We will edit the fat guy in New bark town, so go in Goldmap and double-click New bark town, and the "Map Properties" Will come up. Go to the events data offset and it should be: $120366. Now we open our Hex Editor and we go to this address. This takes us to the start of the actual event data for the map. Now we scroll down until we find a blank space after the data that is already in this bank. The blank space starts at 0x1225A0.

Now that we have found our blank space, we have some room to insert our script. For our script I will make the Fat guy display Simple Text. Our SCript should look like:

6A 47 4C xx xx 53 49 90

You can Type "00" for the x's for now. Now, after you have typed the script, you can go to the byte after 90 Which should be 0x1225A8, and Write Text, BUT! before you go crazy writing text, make sure you start it with 00.
Example:

00 87 A4 AB AB AE E7 - This text will say "Hello!" But it is wrong.

00 87 A4 AB AB AE E7 57 00 - This is correct, always end the text with 57 00, so the game knows the text has been ended, if you don't you will Get a message that says "1df-" or "2df-".

Ok, so far we have our script and text, now what? Now you fill in those 00's for the text pointer. To get the pointer use Scizz's A-point to calculate it. All you do is type the offset (0x1225A8) and hit Calculate pointer. (make sure the "Offset in Pointer" is checked). You should get 48A865 as the pointer. take the last four digits (A865) and put it in the script. It should now look like this:
6A 47 4C A8 65 53 49 90 00 87 A4 AB AB AE E7 57 00 (Underline is the text)

Before you save it, Calculate the pointer of where the script starts (0x1225A0) and write it down.

Click save. All right, the script is in the game. Now we need to assign it to someone.

The pointer you wrote down, You will now need it. Open up Calculator in accessories, and click on the "Hex" bullet. Type in the first byte of the 4 digit pointer( 1 byte = 2 digits) type in A0 , then click on the "Dec" Bullet and you get "160". Do the same for the second byte, type in 65 and get 101.

Now Reload your Rom in A-map....Just kidding. Reload it in Goldmap, goto Events Tab, then click on the fat guy. His info should pop up. Where it says Text Block Type in "160" And where it says Text bank, type in "101".

Hit Save and test it. If you did it wrong, then you either don't get any text at all, or get a "1Df-" message.

You have learned how to script in hex, For GOLD version! Spread the news, and get more people into hacking gold.

******************
Examples:
******************

Note: ALL numbers are in Hexadecimal!!!! 10 = 0A
Note2: For Giveitem, and givepokemon, the numbers are in hexadecimal also! Pikachu = 19 not 25
Note3: I am trying to make a tool for these commands, the tool will be able to compile scripts to the ROM too!
Note4: For giveitem and givepokemon refer to the Item and Pokemon list
---------------------------------------------------------
Tutorial:

REGULAR TALK

6A 47 4C xx xx 53 49 90

Faceplayer, then open text box and writes the text from the pointer. Then close text box.

EMOTICON

6A 73 zz 74 00 zz xx 90

00 = Emoticon no. zz = Person no(add 1 to it. person is 2 add 1 and is 3) xx = Time in hex, 10 is 0A.

YES/NO

6A 47 4C xx xx 54 4E 09 xx xx 4C xx xx 53 49 90

Ok, the 54 means to keep a text box open, so that a Yes/no box(4E) comes up. 09 xx xx means that if it is yes, then go to the pointer xx xx, If no then the script continues, in this case, Text comes up and says "Fine Then" You don't need to put another 47 4C because the text box was already open so you just need to load new text from a new pointer. Btw, 08 xx xx = If no then goto (pointer), and 09 xx xx = If yes then goto (pointer). You Do NOT NEED BOTH!

MOVEMENTS

6A 47 4C xx xx 53 49 69 xx xx 90

Ok, New codes here. 69 is the movement of the talked-to person, and 68 is movement for any person but you have to put people no.
the command 69 requires a 2 byte pointer to the movement data and the movements are below. After you've pointed to the movements, end the movements with a 47 command. Ok, so you talk to someone, then they tell you something, and then the move around, yay! You made a movement script!

DEALING WITH FLAGS

31 10 00 09 yy yy 47 4C xx xx 53 49 33 10 00 90

All this is is another way to make things NEVER repeat twice, and it has some advantages too. After a flag is set, you can activate other events by checking if an Event has been activated before. (ie. You can't leave if you don't have a pokemon, you can when you do. This is by Flags. Not really, but it is an example) Flags can also make people disappear and stay like that (ie. Found an Item) The way I'm using it is if the flag hasn't been used then display some text. If it has then goto different text (ie. yy yy)

Explanation:

31 = Check for flag
'requires 2 bytes which are the flag numbers

09 = Ram Check [2]
' 09 means "if yes" and 08 means "If no"

33 = Set a flag
'requires 2 bytes which are the flag numbers

90 = End script
'No parameters required

xx xx = Pointer to another script

10 00 = Flag ID you can use an flag you wish, but the numbers are reverse hex. 0010 = 1000 in-game. 1000 = 0010 in-game, etc.


GIVEPOKEMON

[2D][PKMN][PKMNlvl][PKMNitem][TRAINER]

Gives a Bulbasaur with no item on level 5.
[TRAINER] = 00 or 01
00 = HIRO, don't worry too much about 01 now.

GIVEITEM

1F [Item no] [amount] 45

Gives you 99 rare candies
45 Just adds the "HIRO Put the Item in the Pocket" dialog after the item is given.

WARPING

[3C][Map bank][Map no][X][Y]

Pretty Self Explanitory...

POKEPICS

55 [xx]

Displays a pokepic at predifined coordinates.
You can use 56 for "display pokepic with a Yes/no box"

xx = Pokemon no.

POKEMART

6A 47 93 [Dialog no] [Mart no 2byte] 53 49 90

Dialogues:
 
00 = "Welcome! How can I help you?“ dialogue
01 = bitter herb medicine dialogue
02 = rare items dialogue (exchanges mart inventory and every item can only be bought once)
03 = sell medicine dialogue

Marts

00 = Cherrygrove City without PokéBalls
 01 = Cherrygrove City with PokéBalls
 02 = Violet City
 03 = Azalea Town
 04 = 
 05 = 2nd floor Goldenrod City Mart/ Counter1
 06 = 2nd floor Goldenrod City Mart/ Counter2
 07 = 3rd floor Goldenrod City Mart
 08 = 4th floor Goldenrod City Mart
 09 = 5th floor Goldenrod City Mart/ Counter1, if all ??? aren’t enabled
 0A = 5th floor Goldenrod City Mart/ Counter1 when ???
 0B = 5th floor Goldenrod City Mart/ Counter1 when ???
 0C = 5th floor Goldenrod City Mart/ Counter1 when ???
 0D = 
 0E = 
 0F = 
 10 = Mahagony town
 11 = Blackthorne City
 12 = 
 13 = Pewter City
 14 = Cerulean City
 15 = Lavender
 16 = Vermillion City
 17 = 2nd floor Prismania City Mart/ Counter1
 18 = 2nd floor Prismania City Mart/ Counter2
 19 = 3rd floor Prismania City Mart
 1A = 4th floor Prismania City Mart
 1B = 5th floor Prismania City Mart/ Counter1
 1C = 5th floor Prismania City Mart/ Counter2
 1D = Fuchsia City
 1E = 
 1F = Mt. Moon-Shop
 20 = Indigo Plateau
 21 = 
 >=22 =

Resources:

***********
Movement List
***********

NOTE: Always in order: down, up, left, right; always 4 per action
This rule ends from code 0x45 on. Items with variables in parentheses, (xx), have a variable after them.

00 = Turn head Down
01 = Turn head Up
02 = Turn head Left
03 = Turn head Right
04 = ½ step down
05 = ½ step up
06 = ½ step left
07 = ½ step right
08 = slow step down
09 = slow step up
0A = slow step left
0B = slow step right
0C = 1 step down
0D = 1 step up
0E = 1 step left
0F = 1 step right
10 = 1½ step
11 = 1½ step up
12 = 1½ step left
13 = 1½ step right
14 = slow slide 1 step down
15 = slow slide 1 step up
16 = slow slide 1 step left
17 = slow slide 1 step right
18 = slide 1 step down
19 = slide 1 step up
1A = slide 1 step left
1B = slide 1 step right
1C = fast slide 1 step down 
1D = fast slide 1 step up
1E = fast slide 1 step left
1F = fast slide 1 step right
20 = Turn 1 step (Face opposite of HIRO) down
21 = Turn 1 step (Face opposite of HIRO) up
22 = Turn 1 step (Face opposite of HIRO) left
23 = Turn 1 step (Face opposite of HIRO) right
24 = Turn 1 step (Facing HIRO) down 
25 = Turn 1 step (Facing HIRO) up
26 = Turn 1 step (Facing HIRO) left
27 = Turn 1 step (Facing HIRO) right
28 = 1 step in waterfall mode (facing changes between down and right) down ???
29 = 1 step in waterfall mode (facing changes between down and right) up ???
2A = 1 step in waterfall mode (facing changes between down and right) left ???
2B = 1 step in waterfall mode (facing changes between down and right)  right ???
2C = slow jump over 1 step down
2D = slow jump over 1 step up
2E = slow jump over 1 step left
2F = slow jump over 1 step right
30 = jump over 1 step down
31 = jump over 1 step up
32 = jump over 1 step left
33 = jump over 1 step right
34 = fast jump over 1 step
3A = remove fixed facing
3B = fix facing
3D = hide person
45 = make move before command faster
46 = Wait for time (xx as time)
47 = End of moving script
49 = hide person
4C = Teleport from
4D = Teleport to
4E = Fall from above screen
4F = 5 whole turns
55 = Shake screen (xx as displacement)

************
Pokemon List
************


01 - Bulbasaur      40 - Kadabra        7F - Pinsir         BE - Aipom
02 - Ivysaur          41 - Alakazam       80 - Tauros         BF - Sunkern
03 - Venusaur       42 - Machop         81 - Magikarp       C0 - Sunflora
04 - Charmander   43 - Machoke        82 - Gyarados       C1 - Yanma
05 - Charmeleon    44 - Machamp        83 - Lapras         C2 - Wooper
06 - Charizard      45 - Bellsprout     84 - Ditto          C3 - Quagsire
07 - Squirtle       46 - Weepinbell     85 - Eevee          C4 - Espeon
08 - Wartortle      47 - Victreebell    86 - Vaporeon       C5 - Umbreon
09 - Blastoise      48 - Ventacool      87 - Jolteon        C6 - Murkrow
0A - Caterpie       49 - Tentacruel     88 - Flareon        C7 - Slowking
0B - Metapod        4A - Geodude        89 - Porygon        C8 - Misdreavus
0C - Butterfree     4B - Graveler       8A - Omanyte        C9 - Unown
0D - Weedle         4C - Golem          8B - Omastar        CA - Wobbuffet
0E - Kakuna         4D - Ponyta         8C - Kabuto         CB - Girafarig
0F - Beedrill       4E - Rapidash       8D - Kabutops       CC - Pineco
10 - Pidgey         4F - Slowpoke       8E - Aerodactyl     CD - Forretress
11 - Pidgeotto      50 - Slowbro        8F - Snorlax        CE - Dunsparce
12 - Pidgeot        51 - Magnemite      90 - Articunno      CF - Gligar
13 - Rattata        52 - Magneton       91 - Zapdos         D0 - Steelix
14 - Raticate       53 - Farfetch'd     92 - Moltres        D1 - Snubbull
15 - Spearow        54 - Doduo          93 - Dratini        D2 - Granbull
16 - Fearow         55 - Dodrio         94 - Dragonair      D3 - Qwilfish
17 - Ekans          56 - Seel           95 - Dragonite      D4 - Scizor
18 - Arbok          57 - Dewgong        96 - Mewtwo         D5 - Shuckle
19 - Pikachu        58 - Grimer         97 - Mew            D6 - Heracross
1A - Raichu         59 - Muk            98 - Chikorita      D7 - Sneasel
1B - Sandshrew      5A - Shellder       99 - Bayleef        D8 - Teddiursa
1C - Sandslash      5B - Cloyster       9A - Meganium       D9 - Ursaring
1D - Nidoran (f)    5C - Gastly         9B - Cyndaquil      DA - Slugma
1E - Nidorina       5D - Haunter        9C - Quilava        DB - Magcargo
1F - Nidoqueen      5E - Gengar         9D - Typhlosion     DC - Swinub
20 - Nidoran (m)    5F - Onix           9E - Totodile       DD - Piloswine
21 - Nidorino       60 - Drowzee        9F - Croconaw       DE - Corsola
22 - Nidoking       61 - Hypno          A0 - Feraligatr     DF - Remoraid
23 - Clefairy       62 - Krabby         A1 - Sentret        E0 - Octillery
24 - Clefable       63 - Kingler        A2 - Furret         E1 - Delibird
25 - Vulpix         64 - Voltorb        A3 - Hoothoot       E2 - Mantine
26 - Ninetails      65 - Electrode      A4 - Noctowl        E3 - Skarmory
27 - Jigglypuff     66 - Exeggcute      A5 - Ledyba         E4 - Houndour
28 - Wigglytuff     67 - Exeggcutor     A6 - Ledian         E5 - Houndoom
29 - Zubat          68 - Cubone         A7 - Spinarak       E6 - Kingdra
2A - Golbat         69 - Marowak        A8 - Ariados        E7 - Phanpy
2B - Oddish         6A - Hitmonlee      A9 - Crobat         E8 - Donphan
2C - Gloom          6B - Hitmonchan     AA - Chinchou       E9 - Porygon2
2D - Vileplume      6C - Lickitung      AB - Lanturn        EA - Stantler
2E - Paras          6D - Koffing        AC - Pichu          EB - Smeargle
2F - Parasect       6E - Weezing        AD - Cleffa         EC - Tyrogue
30 - Venonat        6F - Rhyhorn        AE - Igglybuff      ED - Hitmontop
31 - Venomoth       70 - Rhydon         AF - Togepi         EE - Smoochum
32 - Diglett        71 - Chansey        B0 - Togetic        EF - Elekid
33 - Dugtrio        72 - Tangela        B1 - Natu           F0 - Magby
34 - Meowth         73 - Kangaskhan     B2 - Xatu           F1 - Miltank
35 - Persian        74 - Horsea         B3 - Mareep         F2 - Blissey
36 - Psyduck        75 - Seadra         B4 - Flaaffy        F3 - Raikou
37 - Golduck        76 - Goldeen        B5 - Ampharos       F4 - Entei
38 - Mankey         77 - Seaking        B6 - Bellossom      F5 - Suicune
39 - Primeape       78 - Staryu         B7 - Marill         F6 - Larvitar
3A - Growlithe      79 - Starmie        B8 - Azumarill      F7 - Pupitar
3B - Arcanine       7A - Mr. Mime       B9 - Sudowoodo      F8 - Tyranitar
3C - Poliwag        7B - Scyther        BA - Politoed       F9 - Lugia
3D - Poliwhirl      7C - Jynx           BB - Hoppip         FA - Ho-oh
3E - Poliwrath      7D - Electabuzz     BC - Skiploom       FB - Celebi
3F - Abra           7E - Magmar         BD - Jumpluff

************
Item list
************

01 - Master Ball          51 - Poison Barb          AF - Squirt Bottle
02 - Ultra Ball           52 - King's Rock          B1 - Park Ball
03 - Bright Powder        53 - Bitter Berry         B2 - Rainbow Wing
04 - Great Ball           54 - Mint Berry           B4 - Brick Piece
05 - Pok¿ Ball            55 - Red Apricorn         B5 - Surf Mail
07 - Bicycle              56 - Tiny Mushroom        B6 - Lite Blue Mail
08 - Moon Stone           57 - Big Mushroom         B7 - Portrait Mail
09 - Antidote             58 - Silver Powder        B8 - Lovely Mail
0A - Burn heal            59 - Blue Apricorn        B9 - Eon Mail
0B - Ice heal             5B - Amulet Coin          BA - Morph Mail
0C - Awakening            5C - Yellow Apricorn      BB - Blue Sky Mail
0D - Paralyze heal        5D - Green Apricorn       BC - Music Mail
0E - Full Restore         5E - Cleanse Tag          BD - Mirage Mail
0F - Max Potion           5F - Mystic Water         BF - TM01 Dynamic Punch
10 - Hyper Potion         60 - Twisted Spoon        C0 - TM02 Headbutt
11 - Super Potion         61 - White Apricorn       C1 - TM03 Curse
12 - Potion               62 - Black Belt           C2 - TM04 Rollout
13 - Escape Rope          63 - Black Apricorn       C3 - TM04 Rollout (again)
14 - Repel                65 - Pink Apricorn        C4 - TM05 Roar
15 - Max Ether            66 - Black Glasses        C5 - TM06 Toxic
16 - Fire Stone           67 - Slowpoke Tail        C6 - TM07 Zap Cannon
17 - Thunder Stone        68 - Pink Bow             C7 - TM08 Rock Smash
18 - Water Stone          69 - Stick                C8 - TM09 Psych Up
1A - HP Up                6A - Smoke Ball           C9 - TM10 Hidden Power
1B - Protein              6B - Never - Melt Ice     CA - TM11 Sunny Day
1C - Iron                 6C - Magnet               CB - TM12 Sweet Scent
1D - Carbos               6D - Miracle Berry        CC - TM13 Snore
1E - Lucky Punch          6E - Pearl                CD - TM14 Blizzard
1F - Calcium              6F - Big Pearl            CE - TM15 Hyper Beam
20 - Rare Candy           70 - EverStone            CF - TM16 Icy Wind
21 - X Accuracy           71 - Spell Tag            D0 - TM17 Protect
22 - Leaf Stone           72 - Rage Candy Bar       D1 - TM18 Rain Dance
23 - Metal Powder         75 - Miracle seed         D2 - TM19 Giga Drain
24 - Nugget               76 - Thick Club           D3 - TM20 Endure
25 - Pok¿Doll             77 - Focus Band           D4 - TM21 Frustration
26 - Full Heal            79 - Energy Powder        D5 - TM22 Solar Beam
27 - Revive               7A - Energy Root          D6 - TM23 Iron Tail
28 - Max Revive           7B - Heal Powder          D7 - TM24 Dragon Breath
29 - Guard Spec.          7C - Revival Herb         D8 - TM25 Thunder
2A - Super Repel          7D - Hard Stone           D9 - TM26 Earthquake
2B - Max Repel            7E - Lucky Egg            DA - TM27 Return
2C - Dire Hit             7F - Card Key             DB - TM28 Dig
2E - Fresh Water          80 - Machine Part         DC - TM28 Dig (again)
2F - Soda Pop             82 - Lost Item            DD - TM29 Psychic
30 - Lemonade             83 - Star Dust            DE - TM30 Shadow Ball
31 - X Attack             84 - Star Piece           DF - TM31 Mud - Slap
33 - X Defend             85 - Basement key         E0 - TM32 Double Team
34 - X Speed              86 - Pass                 E1 - TM33 Ice Punch
35 - X Special            8A - Charcoal             E2 - TM34 Swagger
36 - Coin Case            8B - Berry Juice          E3 - TM35 Sleep Talk
37 - Item Finder          8C - Scope Lens           E4 - TM36 Sludge Bomb
39 - Exp. Share           8F - Metal Coat           E5 - TM37 Sand Storm
3A - Old Rod              90 - Dragon Fang          E6 - TM38 Fire Blast
3B - Good Rod             92 - LeftOvers            E7 - TM39 Swift
3C - Silver Leaf          96 - Mystery Berry        E8 - TM40 Defense Curl
3D - Super Rod            97 - Dragon scale         E9 - TM41 Thunder Punch
3E - PP UP                98 - Berserk Gene         EA - TM42 Dream Eater
3F - Ether                9C - Sacred Ash           EB - TM43 Detect
40 - Max Ether            9D - Heavy Ball           EC - TM44 Rest
41 - Elixer               9E - Flower Mail          ED - TM45 Attract
42 - Red Scale            9F - Level Ball           EE - TM46 Thief
43 - Secret Potion        A0 - Lure Ball            EF - TM47 Steel Wing
44 - S.S.Aqua Ticket      A1 - Fast Ball            F0 - TM48 Fire Punch
45 - Mystery Egg          A3 - Light Ball           F1 - TM49 Fury Cutter
47 - Silver Wing          A4 - Friend Ball          F2 - TM50 Nightmare
48 - MooMoo Milk          A5 - Moon Ball            F3 - HM01 Cut
49 - Quick Claw           A6 - Love Ball            F4 - HM02 Fly
4A - Poison Cure Berry    A7 - Normal Box           F5 - HM03 Surf
4B - Gold Leaf            A8 - Gorgeous Box         F6 - HM04 Strength
4C - Soft Sand            A9 - Sun Stone            F7 - HM05 Flash
4D - Sharp Beak           AA - Polkadot Bow         F8 - HM06 Whirlpool
4E - Paralyze Cure Berry  AC - Up Grade             F9 - HM07 Waterfall
4F - Burnt Berry          AD - Berry                FF - Nothing
50 - Ice Berry            AE - Gold Berry

Credit to Cooley

Last edited by tysonrss (2011-11-08 07:58:20)


Pokemon Blue DX is reborn!

Offline

#2 2012-01-22 15:02:01

hacker
Member
From: Batam Grove City
Registered: 2011-07-30
Post 77/548
Website

Re: Scripting Gold/Silver

@tysonrss,can you give an example for giving pokemon script.?
Please answerr..,


[POKÉMON JOURNEY] hacking planning 2012
Visit my website  www.pokemonhackingblog.blogspot.com

Offline

#3 2012-02-04 06:26:38

Melash
Member
Registered: 2010-10-16
Post 82/132

Re: Scripting Gold/Silver

hacker wrote:

@tysonrss,can you give an example for giving pokemon script.?
Please answerr..,

Just look into the Gold ROM and you should be able to find it easily. There's the Pidgey (IIRC) with mail and the Shuckle script.

Offline

#4 2012-10-01 23:55:51

RPD490
Member
From: Blackthorn City, Johto
Registered: 2012-09-29
Post 23/260
Website

Re: Scripting Gold/Silver

Say I want to make my own script for a new map, like recently I just got the Safari Zone new event data so I was able to add people in it. Would I just use PKSV and find free space available in a different address and use that for the dialogue I want? I just wanna get the people out of the way before I move onto adding Wild Pokemon Data to the map

Offline

#5 2015-02-17 08:50:09

Rocket Grunt
Member
Registered: 2014-12-27
Post 33/75

Re: Scripting Gold/Silver

There is a question about the "yes/no" code.
I think we need to add a 85 after 4C XX XX to tell the system to wait until the player press a button.


Today I won't steal Pokemon

Offline

#6 2015-02-17 17:30:33

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

Re: Scripting Gold/Silver

Rocket Grunt wrote:

There is a question about the "yes/no" code.
I think we need to add a 85 after 4C XX XX to tell the system to wait until the player press a button.

When you use "Yes/No" script code, the yes/no box is shown on the screen and the game "waits in a loop" until you select either Yes or No. Basically, you don't need to use any wait command or anything (like keeptextopen or closetext for that matter either).

Offline

Board footer

Powered by FluxBB