The PokéCommunity Forums  

Go Back   The PokéCommunity Forums > ROM Hacking > Tools, Tutorials & Resources
Sign Up Rules/FAQ Live Battle Blogs Mark Forums Read

Notices

Tools, Tutorials & Resources Various tools to help you develop your hacks can be found here.
New threads in this forum are to be approved by a moderator before they are displayed.

Reply
 
Thread Tools
  #1    
Old January 11th, 2009, 07:51 PM
JPAN
pokemon rom researcher
 
Join Date: Dec 2008
I come here today with a small tutorial on how to change the multi-choice options to the ones you need.
I will assume in this tutorial that you have at least an hex-editor and a way to find free space.
First of all, open your rom on any hex editor and go to offset 0x3e04b0. This is the pointer for the table containing all multi-choices.
Those pointers are laid out in this format:

xxxxxxxx yy000000

where
x = pointer
y = number of choices
If yy is greater than eight, the box will not display correctly, appearing only a small glitched box on its place.

Hex-table.png

At the adress pointed, there is a table with at least an equal number of pointers, adressing strings. The layout is similar to the previously presented, xxxxxxxx 00000000. Any different and the game crashes.

To make things easier, we'll use a script editor (in the picture, I used XSE) to compile the choice strings into the ROM.
CompiledStrings.png

Write the offsets where each string is stored and reverse them to pointer format (ex: 0x800015 becomes 15 00 80 08), then search for a place to put this list. You will need (8 x number of strings) bytes of free space.

Afterwards, insert the string offsets in the desired order, each pointer followed by eight zeros.
Finally, replace one of the existing multichoice pointers with your own. In the example, I chose multichoice 0x1 previously the Eevee and evolutions multichoice from Bill's dialog.
Finished.png

In the end, Using that set will result in one of these:
choice1.png

And so concludes this tutorial. Mind this tutorial limits you to the 65 existing in-game multichoices.

To add more Multichoice boxes, one can copy the existing table to another location and add choices there. Afterwards change the pointer at 0x09cb58 to the one your list is in. It will allow you to surpass the 0x40 limit on the multichoice command.

I hope this tutorial will help you with your hacking.

Last edited by hashtag; April 15th, 2010 at 08:26 AM.
Reply With Quote
  #2    
Old January 12th, 2009, 09:00 AM
Tropical Sunlight's Avatar
Tropical Sunlight
The Faltine
 
Join Date: Mar 2008
Location: Slovenia
Age: 18
Gender: Male
Send a message via Windows Live Messenger to Tropical Sunlight
Nice... This could be helpful!
__________________
Reply With Quote
  #3    
Old January 12th, 2009, 09:20 AM
Pokepal17's Avatar
Pokepal17
More cowbell~
 
Join Date: Oct 2008
Location: Steeltown
Age: 20
Gender: Male
Nature: Modest
Dude this is really helpful thanks
__________________
Pokémon Stardrop
Reply With Quote
  #4    
Old January 12th, 2009, 11:45 AM
Zamith's Avatar
Zamith
The well-known trainer (not)
 
Join Date: Jan 2009
Location: BRAZIL! *chachacha*
Gender:
Hey, bless you for sharing it with us. Great news for pokemon new hackers. God bless hex editing.
Reply With Quote
  #5    
Old January 12th, 2009, 02:49 PM
Liquid Shadow's Avatar
Liquid Shadow
xD
 
Join Date: Mar 2008
Gender:
I got lost here:

Quote:
Afterwards, insert the string offsets in the desired order, each pointer followed by eight zeros.
Finally, replace one of the existing multichoice pointers with your own. In the example, I chose multichoice 0x1 previously the Eevee and evolutions multichoice from Bill's dialog.
I get how you compile the list into your rom, and then you make that into a pointer. Then you go to that pointer and see the script (list) you just compiled into your rom. And then what? I know how to replace multichoice pointers but I don't get what you mean by: "Insert the string offsets in the desired order, each followed by eight zeros."

Finally, do you know the multichoice table offset for Ruby?
__________________

4 truths of life
1. You cannot touch all your teeth with your tongue.
2. All idiots, after reading the first truth, will try it.
3. And discover that the first truth is a lie.
4. You're smiling now because you're an idiot.

Last edited by Liquid Shadow; January 12th, 2009 at 03:30 PM.
Reply With Quote
  #6    
Old January 12th, 2009, 03:29 PM
Surf's Avatar
Surf
...
 
Join Date: Jul 2008
Location: Rust
Age: 19
Gender: Male
Nature: Relaxed
Send a message via Windows Live Messenger to Surf
Is this used to add to a multi choice box or just changing the words
If so it's easier to use a text
__________________
I'm looking for some good (When I say good,
I mean you can hold your own by yourself)
N**i Zombies players, to form a team or even a
clan, to play with casually.
Send me a PM with your Highest Level and your PSN,
and I'll get back to you.
Reply With Quote
  #7    
Old January 12th, 2009, 04:26 PM
JPAN
pokemon rom researcher
 
Join Date: Dec 2008
Quote:
I don't get what you mean by: "Insert the string offsets in the desired order, each followed by eight zeros."
It might have been a little confusing, I admit. What I meant by that was, taking each string offset, place them one by one in the free space you found, on the format the game recognizes. For example:
The string you wish to insert first was at 800539, and the second one at 800582. After getting to the location, you would write
39 05 80 08 00 00 00 00 | 82 05 80 08 00 00 00 00

That was all I meant with that.

Quote:
Finally, do you know the multichoice table offset for Ruby?
at 3cde00

Quote:
Is this used to add to a multi choice box or just changing the words
This tutorial allows you to change the words and amount of anwsers on each box. To make more than the preset 65, you would have to change the pointer that indicates the location of the table.
I'm trying to do so as I post, and will update this treads with the awnsers.

Hope this has cleared your questions.
Reply With Quote
  #8    
Old January 12th, 2009, 04:40 PM
Liquid Shadow's Avatar
Liquid Shadow
xD
 
Join Date: Mar 2008
Gender:
Quote:
Originally Posted by JPAN View Post
It might have been a little confusing, I admit. What I meant by that was, taking each string offset, place them one by one in the free space you found, on the format the game recognizes. For example:
The string you wish to insert first was at 800539, and the second one at 800582. After getting to the location, you would write
39 05 80 08 00 00 00 00 | 82 05 80 08 00 00 00 00

That was all I meant with that.



at 3cde00



This tutorial allows you to change the words and amount of anwsers on each box. To make more than the preset 65, you would have to change the pointer that indicates the location of the table.
I'm trying to do so as I post, and will update this treads with the awnsers.

Hope this has cleared your questions.
Ok, so if I took your example of Choice 1, Choice 2, Choice 3, etc.
I would list the strings in the following order:
F0 00 80 08 00 00 00 00 1E 02 80 08 00 00 00 00 29 02 80 08 00 00 00 00 etc... Because those are the pointers to the word/script of "Choice 1, Choice 2, and Choice 3" in XSE in your screenshot.
Then after that I edit the pointer in any multi choice I want to edit right to the place where I entered those strings, correct?

Oh, and to extend the table I think would be pretty simply like any other table. I think you would just copy the entire table, past it in a place with free space like 0x801000. Then, you would search for B0043E08 (Pointer to the table reversed), and all the pointers that are exactly like that pointer you find change to 00108008, because that's where you put your new table. Then you can just add on to the table from there.
__________________

4 truths of life
1. You cannot touch all your teeth with your tongue.
2. All idiots, after reading the first truth, will try it.
3. And discover that the first truth is a lie.
4. You're smiling now because you're an idiot.
Reply With Quote
  #9    
Old February 4th, 2009, 01:14 PM
Master_Track's Avatar
Master_Track
ROM Reaverz Scripter
 
Join Date: Mar 2008
Location: Austria
Age: 22
Gender:
Nature: Brave
Send a message via Windows Live Messenger to Master_Track
Quote:
Originally Posted by NeoNemesis View Post
Ok, so if I took your example of Choice 1, Choice 2, Choice 3, etc.
I would list the strings in the following order:
F0 00 80 08 00 00 00 00 1E 02 80 08 00 00 00 00 29 02 80 08 00 00 00 00 etc... Because those are the pointers to the word/script of "Choice 1, Choice 2, and Choice 3" in XSE in your screenshot.
Then after that I edit the pointer in any multi choice I want to edit right to the place where I entered those strings, correct?
correct!

Nice made tutorial, and I've got no problems with understanding anything
Good job there
__________________

*Busy with school*

Reply With Quote
  #10    
Old June 6th, 2009, 06:59 AM
master_script_maker
Beginning Trainer
 
Join Date: Jun 2009
do you know the offset for emerald? Also, are you using a thingy table?

Last edited by master_script_maker; June 6th, 2009 at 07:15 AM.
Reply With Quote
  #11    
Old June 16th, 2009, 04:50 PM
zazazazazazaza
Beginning Trainer
 
Join Date: Dec 2008
Reviving thread out of desperate need.

I am a noobish failure and I need to ask: can you further explain "compiling strings into the rom"? Do I write it exactly as is in the picture example and just click compile without specifying anything else?

If you can give me a short explanation on all of those parts, thankyou so much. Also, extremely dumb question: if I were to change the name-select box at the beginning of the rom, which offset am I to go to or was I supposed to find it somewhere?
Reply With Quote
  #12    
Old November 24th, 2011, 07:50 AM
MarcusZ321
Beginning Trainer
 
Join Date: Nov 2011
Gender: Male
this...maybe can help me but also thanks
Reply With Quote
  #13    
Old December 30th, 2011, 04:40 AM
LugiaMZ's Avatar
LugiaMZ
 
Join Date: Dec 2011
Gender: Male
I tried this tutorial....Why it dosent work...When I test multi choice my screen become to black only left me(Red) at the screen.Then I walk 1 step after become back normal.Please help me!

PSorry my very bad english.

EDIT:Oopps,your tutorial is work!!!!I think is me do wrong things,I try more 1 time that work!Thank you very much!

Last edited by LugiaMZ; December 31st, 2011 at 05:39 AM.
Reply With Quote
  #14    
Old February 25th, 2012, 01:29 PM
Magic's Avatar
Magic
DLOA - Please contact Adventure
Community Supporter
 
Join Date: Jan 2009
Location: UK
Age: 23
Gender: Male
Somewhere in this tutorial I keep messing up


First I wrote out my XSE script

Quote:
#dynamic 0x800000

#org @Choice1
= Yellow Beach

#org @Choice2
= Capital City
Giving me the offsets: 8186AA and 8199B0, which I then ordered into the bytes AA 86 81 08 00 00 00 00 B0 99 81 08 00 00 00 00.

I then inserted that string into 0x72EE94

Then over the Hall of Fame multibox selection I typed 94 EE 72 08 02 00 00 00

However when used in game by scripting:

Quote:
...preparemsg 0x8819A46 '"In which area of the Golden Isles\..."
waitmsg
multichoice 0x0 0x0 0x3 0x0...
No box comes up (if changed to 0x4 then the multibox appears, but then obviously that has different options).

Any advice? Where have I gone wrong in this tutorial
__________________
Reply With Quote
  #15    
Old March 27th, 2012, 02:51 PM
YouListeningROMs's Avatar
YouListeningROMs
Beginning Trainer
 
Join Date: Mar 2012
Gender: Male
If you use this method to insert another multichoice table, how would you bring about those multichoice boxes via command? Does it just continue past the normal amount?
Reply With Quote
  #16    
Old January 4th, 2014, 05:18 AM
Le pug's Avatar
Le pug
Creator of Pokémon: Discovery
Community Supporter
 
Join Date: Aug 2013
Location: Le bed
Age: 21
Gender: Male
Nature: Bold
Quote:
Originally Posted by master_script_maker View Post
do you know the offset for emerald? Also, are you using a thingy table?

Emerald Table of Multichoices located at 0x58B760
__________________



Check out some of my contributions:
• Check out my easy tile insertion tutorial, Inserting Tiles Into AdvanceMap For Dummies
Click here to find out how to remove clouds from the Emerald titlescreen
• Check out the most updated Emereld Decapitalization Patch around by clicking here
• Need help fixing a gross bug in your hack? Let me show you how by clicking here



Click here to view the PC thread of Pokémon: Discovery.
Click here to view the PC thread of Pokémon: Fat Kid.

Pokétch ROM Hacking Community Pokémon: Discovery Discovery Twitter Discovery FB IRC Chat
Reply With Quote
Reply
Quick Reply

Sponsored Links
Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Minimum Characters Per Post: 25



All times are UTC -8. The time now is 03:42 PM.


Style by Nymphadora, artwork by Sa-Dui.
Like our Facebook Page Follow us on Twitter © 2002 - 2014 The PokéCommunity™, pokecommunity.com.
Pokémon characters and images belong to The Pokémon Company International and Nintendo. This website is in no way affiliated with or endorsed by Nintendo, Creatures, GAMEFREAK, The Pokémon Company or The Pokémon Company International. We just love Pokémon.
All forum styles, their images (unless noted otherwise) and site designs are © 2002 - 2014 The PokéCommunity / PokéCommunity.com.
PokéCommunity™ is a trademark of The PokéCommunity. All rights reserved. Sponsor advertisements do not imply our endorsement of that product or service. User generated content remains the property of its creator.