Go Back   The PokéCommunity Forums > ROM Hacking > Tools, Tutorials & Resources
Reload this Page [Tutorial] Tutorial: How to change multichoice boxes (Fire Red)

Notices
For all updates, view the main page.

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). Edited April 15th, 2010 by hashtag.
JPAN JPAN is offline
pokemon rom researcher
 
Join Date: Dec 2008
Posts: 100
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.
Reply With Quote
  #2    
Old January 12th, 2009 (09:00 AM).
Tropical Sunlight's Avatar
Tropical Sunlight Tropical Sunlight is offline
The Faltine
 
Join Date: Mar 2008
Location: Slovenia
Age: 19
Gender: Male
Posts: 3,578
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 Pokepal17 is offline
More cowbell~
Silver Tier
 
Join Date: Oct 2008
Location: Steeltown
Age: 20
Gender: Male
Nature: Modest
Posts: 1,517
Dude this is really helpful thanks
__________________
Pokémon Stardrop
Reply With Quote
  #4    
Old January 12th, 2009 (11:45 AM).
Zamith's Avatar
Zamith Zamith is offline
The well-known trainer (not)
 
Join Date: Jan 2009
Location: BRAZIL! *chachacha*
Gender:
Posts: 37
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). Edited January 12th, 2009 by Liquid Shadow.
Liquid Shadow's Avatar
Liquid Shadow Liquid Shadow is offline
xD
 
Join Date: Mar 2008
Gender:
Posts: 224
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.
Reply With Quote
  #6    
Old January 12th, 2009 (03:29 PM).
Surf's Avatar
Surf Surf is offline
...
 
Join Date: Jul 2008
Location: Rust
Age: 20
Gender: Male
Nature: Relaxed
Posts: 1,198
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 JPAN is offline
pokemon rom researcher
 
Join Date: Dec 2008
Posts: 100
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 Liquid Shadow is offline
xD
 
Join Date: Mar 2008
Gender:
Posts: 224
Quote originally posted by JPAN:
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 Master_Track is offline
ROM Reaverz Scripter
 
Join Date: Mar 2008
Location: Austria
Age: 22
Gender:
Nature: Brave
Posts: 916
Send a message via Windows Live Messenger to Master_Track
Quote originally posted by NeoNemesis:
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). Edited June 6th, 2009 by master_script_maker.
master_script_maker master_script_maker is offline
 
Join Date: Jun 2009
Posts: 4
do you know the offset for emerald? Also, are you using a thingy table?
Reply With Quote
  #11    
Old June 16th, 2009 (04:50 PM).
zazazazazazaza zazazazazazaza is offline
 
Join Date: Dec 2008
Posts: 12
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 MarcusZ321 is offline
 
Join Date: Nov 2011
Gender: Male
Posts: 7
this...maybe can help me but also thanks
Reply With Quote
  #13    
Old December 30th, 2011 (04:40 AM). Edited December 31st, 2011 by LugiaMZ.
LugiaMZ's Avatar
LugiaMZ LugiaMZ is offline
 
Join Date: Dec 2011
Gender: Male
Posts: 72
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!
Reply With Quote
  #14    
Old February 25th, 2012 (01:29 PM).
Mana's Avatar
Mana Mana is offline
Kariyai.
Moderator
CS
 
Join Date: Jan 2009
Location: UK
Age: 23
Gender: Male
Posts: 5,413
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
__________________
Titans!
a superhero roleplay
Kariyai
art by Churaka
Reply With Quote
  #15    
Old March 27th, 2012 (02:51 PM).
YouListeningROMs's Avatar
YouListeningROMs YouListeningROMs is offline
 
Join Date: Mar 2012
Gender: Male
Posts: 24
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 Le pug is offline
Creator of Pokémon: Discovery
Crystal Tier
 
Join Date: Aug 2013
Location: Le bed
Age: 22
Gender: Male
Nature: Bold
Posts: 621
Quote originally posted by master_script_maker:
do you know the offset for emerald? Also, are you using a thingy table?

Emerald Table of Multichoices located at 0x58B760
__________________







/// Pokémon: Discovery
/// Pokémon: Fat Kid
/// Tile Insertion Tutorial For AdvanceMap
/// Pokémon Emerald Specials Resource Thread
/// Pokémon Emerald Decapitalization Patch
/// Emerald Titlescreen Cloud Removal Tutorial
/// Tutorial For Fixing Any ROM-related Bug
Reply With Quote
  #17    
Old December 23rd, 2014 (11:45 PM).
klingt klingt is offline
Living Poetry
 
Join Date: Dec 2014
Gender: Male
Posts: 13
I just extended my table on fr, was a pain. Isn't there an easier option, and how wide can these be?
__________________
The experienced are the dead, collapsed in their heaps
The beyond is ahead and you can only hope to catch a glimpse
You peer into the fabric mirage
There is no form, no color
A new scene without compare nor equal
Reply With Quote
  #18    
Old December 23rd, 2014 (11:49 PM).
Percy's Avatar
Percy Percy is offline
Sceptile ftw
 
Join Date: Sep 2014
Location: Somewhere in the world, obviously
Age: 18
Gender: Male
Nature: Gentle
Posts: 1,826
Quote originally posted by klingt:
I just extended my table on fr, was a pain. Isn't there an easier option, and how wide can these be?
You do realize there is a tool for that?
http://www.pokecommunity.com/showthread.php?t=335308
__________________
Pokémon Ranger Academy
Status: Coming Soon ...
#RadReds
Credit

Pair

Reply With Quote
  #19    
Old December 24th, 2014 (12:20 AM).
klingt klingt is offline
Living Poetry
 
Join Date: Dec 2014
Gender: Male
Posts: 13
yea but does it change the possible result of a choice or the number of choices available in each box. I need 100 choices in one box
__________________
The experienced are the dead, collapsed in their heaps
The beyond is ahead and you can only hope to catch a glimpse
You peer into the fabric mirage
There is no form, no color
A new scene without compare nor equal
Reply With Quote
  #20    
Old December 24th, 2014 (12:27 AM).
Percy's Avatar
Percy Percy is offline
Sceptile ftw
 
Join Date: Sep 2014
Location: Somewhere in the world, obviously
Age: 18
Gender: Male
Nature: Gentle
Posts: 1,826
Quote originally posted by klingt:
yea but does it change the possible result of a choice or the number of choices available in each box. I need 100 choices in one box
Oh, my. That's a very high number.
Well, try it, and you'll know.
__________________
Pokémon Ranger Academy
Status: Coming Soon ...
#RadReds
Credit

Pair

Reply With Quote
  #21    
Old December 24th, 2014 (12:28 AM).
klingt klingt is offline
Living Poetry
 
Join Date: Dec 2014
Gender: Male
Posts: 13
i'm trying to make a scrollable textbox that updates as you beat trainers. A kind of scoreboard
__________________
The experienced are the dead, collapsed in their heaps
The beyond is ahead and you can only hope to catch a glimpse
You peer into the fabric mirage
There is no form, no color
A new scene without compare nor equal
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

Forum Jump


All times are UTC -8. The time now is 10:28 PM.