PDA

View Full Version : [Tutorial] Tutorial: How to change multichoice boxes (Fire Red)


JPAN
January 11th, 2009, 07:51 PM
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.

44629

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.
44630

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.
44631

In the end, Using that set will result in one of these:
44632

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.

Tropical Sunlight
January 12th, 2009, 09:00 AM
Nice... This could be helpful!

Pokepal17
January 12th, 2009, 09:20 AM
Dude this is really helpful thanks :)

Zamith
January 12th, 2009, 11:45 AM
Hey, bless you for sharing it with us. Great news for pokemon new hackers. God bless hex editing.

Liquid Shadow
January 12th, 2009, 02:49 PM
I got lost here:

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?

Surf
January 12th, 2009, 03:29 PM
Is this used to add to a multi choice box or just changing the words
If so it's easier to use a text

JPAN
January 12th, 2009, 04:26 PM
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.

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

at 3cde00

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.

Liquid Shadow
January 12th, 2009, 04:40 PM
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.

Master_Track
February 4th, 2009, 01:14 PM
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 :cool:

master_script_maker
June 6th, 2009, 06:59 AM
do you know the offset for emerald? Also, are you using a thingy table?

zazazazazazaza
June 16th, 2009, 04:50 PM
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?

MarcusZ321
November 24th, 2011, 07:50 AM
this...maybe can help me but also thanks:)

LugiaMZ
December 30th, 2011, 04:40 AM
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!

PS:Sorry 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!:)

Mana
February 25th, 2012, 01:29 PM
Somewhere in this tutorial I keep messing up :S


First I wrote out my XSE script

#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:

...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 :S

YouListeningROMs
March 27th, 2012, 02:51 PM
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?

Le pug
January 4th, 2014, 05:18 AM
do you know the offset for emerald? Also, are you using a thingy table?


Emerald Table of Multichoices located at 0x58B760

klingt
December 23rd, 2014, 11:45 PM
I just extended my table on fr, was a pain. Isn't there an easier option, and how wide can these be?

Percy
December 23rd, 2014, 11:49 PM
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? :P
http://www.pokecommunity.com/showthread.php?t=335308

klingt
December 24th, 2014, 12:20 AM
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

Percy
December 24th, 2014, 12:27 AM
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.

klingt
December 24th, 2014, 12:28 AM
i'm trying to make a scrollable textbox that updates as you beat trainers. A kind of scoreboard