Advertiser Content

JPAN

pokemon rom researcher

Seen July 2nd, 2016
Posted August 31st, 2015
104 posts
10.4 Years
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.
Seen March 7th, 2016
Posted December 28th, 2009
224 posts
11.2 Years
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?

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.

Surf

...

Age 24
Male
Rust
Seen July 30th, 2011
Posted December 29th, 2010
1,198 posts
10.8 Years
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.

JPAN

pokemon rom researcher

Seen July 2nd, 2016
Posted August 31st, 2015
104 posts
10.4 Years
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.
Seen March 7th, 2016
Posted December 28th, 2009
224 posts
11.2 Years
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.

Master_Track

ROM Reaverz Scripter

Age 26
Austria
Seen April 6th, 2011
Posted November 26th, 2010
916 posts
11.2 Years
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:

*Busy with school*

Seen July 1st, 2009
Posted June 16th, 2009
12 posts
10.4 Years
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?
Male
Seen 22 Hours Ago
Posted April 4th, 2017
74 posts
7.4 Years
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

Age 27
Male
UK
Seen 1 Day Ago
Posted 1 Week Ago
10,068 posts
10.4 Years
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

Le pug

Creator of Pokémon: Discovery / Fat Kid

Age 26
Male
Le bed
Seen 6 Days Ago
Posted October 13th, 2018
870 posts
5.8 Years
do you know the offset for emerald? Also, are you using a thingy table?

Emerald Table of Multichoices located at 0x58B760
Retired. Thank you guys for a wonderful five years.

klingt

Living Poetry

Male
Seen January 15th, 2015
Posted December 27th, 2014
13 posts
4.4 Years
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

Percy

Male
Asia
Seen 5 Hours Ago
Posted 2 Days Ago
2,783 posts
4.7 Years
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

Living Poetry

Male
Seen January 15th, 2015
Posted December 27th, 2014
13 posts
4.4 Years
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

Percy

Male
Asia
Seen 5 Hours Ago
Posted 2 Days Ago
2,783 posts
4.7 Years
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

Living Poetry

Male
Seen January 15th, 2015
Posted December 27th, 2014
13 posts
4.4 Years
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
Advertiser Content