Main Menu
Main Page
Forums
New pages
Recent changes
Random page
Help

Glitches
Arbitrary code execution
Pokémon cloning
Pomeg glitch and Glitzer Popping
Tweaking and voiding
Glitches by generation
Glitch categories

References/Resources
Databases
Disassembly projects
The Big HEX List
Pokémon cheat codes
Pokémon glitch terminology
Useful tools
More

Affiliates
Legendary Star Blob 2 (Hakuda) (日本語/Japanese)
Pokémon Speedruns wiki (English)
PRAMA Initiative (Français/French)
MissingNo. Glitch City (Italiano/Italian)
Become an affiliate!

Technical
Site source code

Search Wiki

 

Search Forums

 

Author Topic: Differences between English Ruby/Sapphire v1.0 and v1.1  (Read 21874 times)

0 Members and 1 Guest are viewing this topic.

Háčky

  • Distinguished Member
  • *
  • Offline Offline
  • Pick which packet as an error?
    • View Profile
Differences between English Ruby/Sapphire v1.0 and v1.1
« on: February 16, 2015, 07:35:29 pm »
Interesting. English Ruby v1.1 also fixed the typo in the Pokédex entry of Mawile (they had misspelled it as MAWHILE) but since there's an English Sapphire v1.1, I don't know what else was changed.
Neither do I.

I went and found at least some of the changes that were made. I can’t be sure if this is a complete list, because I don’t have a reliable way to sift out the actual changes amidst the tens of thousands of altered pointers. All offsets are for Ruby. Offsets for version 1.1 also apply to 1.2; the only change made in 1.2 was that the Berry glitch was fixed.


Pokémon name change on evolution ($803FB68 in v1.0 and v1.1)
This function is called when a Pokémon evolves. It checks if the Pokémon’s name is the same as the species it is evolving from, and if so, changes it to the name of the species it is evolving into.

In version 1.1, this function has an additional check: if the Pokémon originates from a non-English game, the name will not be changed on evolution. So, for example, if a Bulbasaur from an Italian or Spanish game (where all Pokémon have the same names as in English) is traded to English Ruby/Sapphire v1.0, its name will be changed to “IVYSAUR” when it evolves, but in v1.1, its name will remain “BULBASAUR”, as if that was a nickname.


Today’s Smart Shopper ($81AB381 in v1.0, $81AB3A1 in v1.1)
Quote
Hello!
It’s time for TODAY’S SMART SHOPPER.
INTERVIEWER: How are you, viewers?
Today we’re visiting the POKéMON MART
in \v3.
Let’s check on what the hot sellers
have been recently.
In version 1.1, the phrase “the POKéMON MART” was replaced with “a shop”. I don’t know that I’ve ever seen this TV program in the game (does it only appear after mixing records?), but I would guess that it can mention purchases made at the Lilycove Department Store or other shops that aren’t Poké Marts. This error was introduced in translation; the original Japanese text uses みせ shop, not フレンドリィショップ Friendly Shop.


Paras Pokédex entry ($83A268A in v1.0, $83A26A2 in v1.1)
Quote
PARAS has parasitic mushrooms growing
on its back called tochukaso. They grow
large by drawing nutrients from the BUG
POKéMON host. They are highly valued as
a medicine for extending life.
In version 1.1, the phrase “the BUG POKéMON host” was changed to “this BUG/GRASS POKéMON host”. Did someone suddenly decide that Pokédex entries have to be technically accurate? Why did they stop there? :P


Mawile Ruby Pokédex entry ($83ADDC3 in v1.0, $83ADDE2 in v1.1)
As is already well-known, Mawile’s Pokédex entry uses the spelling “MAWHILE” in Ruby v1.0, which was corrected in v1.1.


Something can’t be used on that Pokémon ($840EFA1 in v1.0, $840EFBD in v1.1)
Quote
This item can’t be used on
that POKéMON.
In version 1.1, the word “item” was deleted, so the message reads “This can’t be used on that POKéMON.” I guess this message appears in some context that doesn’t involve an item?


Font adjustments ($8EA2C44 in v1.0 and v1.1)
Version 1.1 includes some of the font changes made for the European localizations: a more legible superscript “er”, and the additions of the semicolon, French guillemets ‹›, and superscript “e” and “re”. However, the height of capital letters and the shape of the ligature œ remain as they were in the original English release.

SatoMew

  • Member+
  • *
  • Offline Offline
  • Gender: Female
    • View Profile
Re: Differences between English Ruby/Sapphire v1.0 and v1.1
« Reply #1 on: February 16, 2015, 08:30:30 pm »
Wow, awesome :)

Pokémon name change on evolution ($803FB68 in v1.0 and v1.1)
This function is called when a Pokémon evolves. It checks if the Pokémon’s name is the same as the species it is evolving from, and if so, changes it to the name of the species it is evolving into.

In version 1.1, this function has an additional check: if the Pokémon originates from a non-English game, the name will not be changed on evolution. So, for example, if a Bulbasaur from an Italian or Spanish game (where all Pokémon have the same names as in English) is traded to English Ruby/Sapphire v1.0, its name will be changed to “IVYSAUR” when it evolves, but in v1.1, its name will remain “BULBASAUR”, as if that was a nickname.

I believe that this is how later Generation III games behave as well.

Today’s Smart Shopper ($81AB381 in v1.0, $81AB3A1 in v1.1)
Quote
Hello!
It’s time for TODAY’S SMART SHOPPER.
INTERVIEWER: How are you, viewers?
Today we’re visiting the POKéMON MART
in \v3.
Let’s check on what the hot sellers
have been recently.
In version 1.1, the phrase “the POKéMON MART” was replaced with “a shop”. I don’t know that I’ve ever seen this TV program in the game (does it only appear after mixing records?), but I would guess that it can mention purchases made at the Lilycove Department Store or other shops that aren’t Poké Marts. This error was introduced in translation; the original Japanese text uses みせ shop, not フレンドリィショップ Friendly Shop.

It's related to record mixing, yes.

Something can’t be used on that Pokémon ($840EFA1 in v1.0, $840EFBD in v1.1)
Quote
This item can’t be used on
that POKéMON.
In version 1.1, the word “item” was deleted, so the message reads “This can’t be used on that POKéMON.” I guess this message appears in some context that doesn’t involve an item?
What's the equivalent Japanese text?

Font adjustments ($8EA2C44 in v1.0 and v1.1)
Version 1.1 includes some of the font changes made for the European localizations: a more legible superscript “er”, and the additions of the semicolon, French guillemets ‹›, and superscript “e” and “re”. However, the height of capital letters and the shape of the ligature œ remain as they were in the original English release.
Interesting. Given the encoding issues that may occur in Generation IV, does it affect anything else in the Generation III games?
« Last Edit: October 09, 2015, 12:34:35 pm by SatoMew »

Háčky

  • Distinguished Member
  • *
  • Offline Offline
  • Pick which packet as an error?
    • View Profile
Re: Differences between English Ruby/Sapphire v1.0 and v1.1
« Reply #2 on: February 16, 2015, 09:32:17 pm »
Something can’t be used on that Pokémon ($840EFA1 in v1.0, $840EFBD in v1.1)
Quote
This item can’t be used on
that POKéMON.
In version 1.1, the word “item” was deleted, so the message reads “This can’t be used on that POKéMON.” I guess this message appears in some context that doesn’t involve an item?
What's the equivalent Japanese text?
そのポケモンには つかえません。
I can’t even think of a situation in which this message is seen. Normally if an item can’t be used, it says “It won’t have any effect.”

Interesting. Given the encoding issues that may occur in Generation IV, does it affect anything else in the Generation III games?
I don’t know that the Generation III games exchange any sort of text other than Pokémon and trainer names, and the only “interesting” characters those can legally contain are quotation marks (which change appearance between games), except for the accented default names from Spanish FireRed/LeafGreen (which display as kana in Japanese games).

…Actually, there’s Mail, too. Do any NPCs give Mail with a pre-written message in Generation III? Never mind, Mail uses the easy chat system.
« Last Edit: February 16, 2015, 09:33:57 pm by Háčky »

SatoMew

  • Member+
  • *
  • Offline Offline
  • Gender: Female
    • View Profile
Re: Differences between English Ruby/Sapphire v1.0 and v1.1
« Reply #3 on: February 17, 2015, 08:45:04 am »
そのポケモンには つかえません。
I can’t even think of a situation in which this message is seen. Normally if an item can’t be used, it says “It won’t have any effect.”

Just for the sake of confirmation, I used A-Save to delete my only Pokémon on a relatively fresh Japanese Sapphire save file. The game didn't trigger that message but it didn't return the usual message either. Instead, it said ポケモンが いませんよ!("There is no POKéMON." in the English version), which is similar to the message that appears in the Generation II games in this exact situation ("You don't have a POKéMON!" in English or ポケモンを もっていません! in Japanese).

AniGIF:



In the Pokémon Storage System, the game instead lists a "ghost" golden Bulbasaur in my party that can be selected but not used in any way, by the way.

I don’t know that the Generation III games exchange any sort of text other than Pokémon and trainer names, and the only “interesting” characters those can legally contain are quotation marks (which change appearance between games), except for the accented default names from Spanish FireRed/LeafGreen (which display as kana in Japanese games).

…Actually, there’s Mail, too. Do any NPCs give Mail with a pre-written message in Generation III? Never mind, Mail uses the easy chat system.

I see. So everything we discussed in the thread about the Pal Park encoding glitches remains valid, correct?
« Last Edit: February 24, 2015, 01:52:13 pm by SatoMew »

Háčky

  • Distinguished Member
  • *
  • Offline Offline
  • Pick which packet as an error?
    • View Profile
Re: Differences between English Ruby/Sapphire v1.0 and v1.1
« Reply #4 on: February 17, 2015, 05:06:41 pm »
Mystery solved: “This [item] can’t be used on that POKéMON” is the message displayed when attempting to use the field move Softboiled on a Pokémon that is fainted or at full health. Since Softboiled isn’t even obtainable in Ruby and Sapphire except by trading with a future game, it’s understandable that this translation error would have gone unnoticed until after release.

SatoMew

  • Member+
  • *
  • Offline Offline
  • Gender: Female
    • View Profile
Re: Differences between English Ruby/Sapphire v1.0 and v1.1
« Reply #5 on: February 17, 2015, 05:28:01 pm »
Mystery solved: “This [item] can’t be used on that POKéMON” is the message displayed when attempting to use the field move Softboiled on a Pokémon that is fainted or at full health. Since Softboiled isn’t even obtainable in Ruby and Sapphire except by trading with a future game, it’s understandable that this translation error would have gone unnoticed until after release.

Oh, nice. Looks like the localization team missed a few things at first :P I wonder why they made foreign Pokémon names behave like nicknames, though.

Háčky

  • Distinguished Member
  • *
  • Offline Offline
  • Pick which packet as an error?
    • View Profile
Re: Differences between English Ruby/Sapphire v1.0 and v1.1
« Reply #6 on: September 28, 2015, 04:41:56 am »
Pokémon name change on evolution ($803FB68 in v1.0 and v1.1)
This function is called when a Pokémon evolves. It checks if the Pokémon’s name is the same as the species it is evolving from, and if so, changes it to the name of the species it is evolving into.

In version 1.1, this function has an additional check: if the Pokémon originates from a non-English game, the name will not be changed on evolution. So, for example, if a Bulbasaur from an Italian or Spanish game (where all Pokémon have the same names as in English) is traded to English Ruby/Sapphire v1.0, its name will be changed to “IVYSAUR” when it evolves, but in v1.1, its name will remain “BULBASAUR”, as if that was a nickname.
There may have been a good reason for changing this. Since Latin letters are available for nicknames in the Japanese Generation III games, it’s possible, for example, to hatch a Pichu in a Japanese game, nickname it PICHU, trade it to English Ruby/Sapphire 1.0, and evolve it into a Pikachu named PIKACHU.

…What’s so bad about that, you ask? Since the Pokémon originated in a Japanese game, its name, which is now longer than five characters, will still be printed in the Japanese font, and when you open the party screen or send it into battle, it will crash the game. (At least, it did when I tried it. I haven’t looked into the exact cause yet.)



Here’s a few things I missed the first time around. I believe this completes the list of changes in Ruby v1.1, although I still haven’t checked for any changes exclusive to Sapphire.

Font metrics function ($80048E8 in v1.0 and v1.1)
This function looks up the pixel width of a text character in one of four tables, given some font information and the character code. In version 1.0, this function will always return a default value of 8 as long as offset 2 of the font data is not set to 2. In version 1.1, it will return 8 if this offset is set to 1. I presume the value being checked is a language code, because Japanese is language code 1, English is 2, and the Japanese fonts use a fixed width of 8 px while the English character widths need to be looked up in a table. Version 1.0 is returning the fixed 8 px width if the language is anything other than English, while version 1.1 only does this if the language is Japanese specifically, a change which was probably meant to accomodate the European localizations somehow. I don’t know if this actually makes a difference anywhere.


Text box overflow ($8146E50 in v1.0, $8146E70 in v1.1)
The functions at $8146E50, $8147048, $8147154, and $8147218 in v1.0 (add $20 for v1.1) were altered. I haven’t figured out what these functions actually do or in what circumstances they’re called, but they display these text strings (along with the sprite of Prof. Birch’s bag from the starter selection screen?):
Quote
Save failed.
Checking the backup memory...
Please wait.
“Time required: 1 minute”

The backup memory is damaged or
the internal battery has run dry.
The game can be played. However,
progress cannot be saved.

“Gameplay cannot be continued.
Returning to the title screen...”

Check completed.
Attempting to save again.
Please wait.

Save completed.
“Gameplay cannot be continued.
Returning to the title screen.”

Save completed.
“Please press the A Button.”
In version 1.0, these messages are printed in a text box that has space for three lines, but some of them are four lines long, so the last line would be cut off at the bottom of the screen. In version 1.1, the coordinates were adjusted to make room for the fourth line.


That room nobody uses ($81A45FE in v1.0, $81A461E in v1.1)
Quote
Welcome to the POKéMON CABLE CLUB
RECORD CENTER.
You may mix your records as a TRAINER
with the records of your friends.
Would you like to mix records?
In version 1.1, “RECORD CENTER” was changed to “RECORD CORNER”.


Font metrics table ($81E62DE in v1.0, $81E62F6 in v1.1)
There are four tables here which define how wide each character is in the game’s two Western fonts.

The first tables (220 bytes each) are for the small font: the one used for Pokémon names next to their health bars. For some reason, there are two identical copies of this table. The tables in version 1.1 have the expected changes to account for the modified er glyph and the replacement of the characters ッ ャ ュ ョ ょ with re e ‹ › ; for French.

The next tables (254 bytes each) are for the large font used for most text in the game. There are also two copies of this table, and in version 1.0 there are nine characters which have different widths in the two tables: ì ぃ ぅ ぇ ょ ¡ â í ギ. The accented letters have 1–2 px of extra space in the first table, and the kana and inverted exclamation mark are 1–2 px narrower in the first table. Most notably, ギ is given a width of 6 px in the first table, which would cut off the right side of the glyph.

It seems that the second table is used rather than the first:

If the first table were used, it would theoretically look like this (done in an image editor):


In version 1.1, the two tables are identical and are derived from version 1.0’s second table, with changes to account for the replaced and modified characters.

I don’t know if anything in the game uses the first table, but function $80048E8 is designed to use it if the right value is passed.


Togepi Doll description ($83EAD1E in v1.0, $83EAD3A in v1.1)
Quote
A TOPGEPI doll.
Place it on a mat
or a desk.
In version 1.1, the spelling of “TOPGEPI” was corrected to “TOGEPI”. Unlike MAWHILE, this mistake doesn’t seem to have been documented anywhere, and I guess that’s not really surprising, since the only way to obtain the Togepi Doll is by spending 48 BP in Emerald’s Battle Frontier and sending it back to Ruby/Sapphire via the Trader in Mauville City.

Wack0

  • Coder, reverser, beta collector [BetaArchive staff]
  • Staff
  • *****
  • Offline Offline
  • Gender: Male
  • cBRH - Doing nothing since 2k7
    • View Profile
Re: Differences between English Ruby/Sapphire v1.0 and v1.1
« Reply #7 on: September 28, 2015, 07:49:51 am »
The functions at $8146E50, $8147048, $8147154, and $8147218 in v1.0 (add $20 for v1.1) were altered. I haven’t figured out what these functions actually do or in what circumstances they’re called, but they display these text strings (along with the sprite of Prof. Birch’s bag from the starter selection screen?):

I'm interested myself to know when these functions are called. Via some google searching I saw an image of when one of those functions was called on Emerald, on real hardware, that was from a post on serebii.net forums, from December 2008: (I mirrored it to imgur; the original was on imageshack. Knowing imageshack, I'm amazed I managed to download the image.)
https://imgur.com/wY7lvwg (link, the original is 2048x1536..)

Note how by Emerald, the message has changed, from "The game can be played. However,\nprogress cannot be saved." to "You can still play, but not save."

I'm sure I saw one of those messages in a youtube video somewhere also. No idea what video it was though.
« Last Edit: September 28, 2015, 07:51:54 am by Wack0 »
C H E C K E D . B U I L D S . A R E . A W E S O M E N E S S

BetaArchiveSoftHistory Forumsirc.rol.im #galaxy,#softhistory

Also known as The Distractor.

Shane, please stop telling children that there's a Mew outside under the delivery trucks. - Management

Pokémon: arbitrary code execution 1996-2016

SatoMew

  • Member+
  • *
  • Offline Offline
  • Gender: Female
    • View Profile
Re: Differences between English Ruby/Sapphire v1.0 and v1.1
« Reply #8 on: September 28, 2015, 10:34:24 am »
Thank you for the research, Háčky. I hope you can fill in some of the missing details soon :)

I'm sure I saw one of those messages in a youtube video somewhere also. No idea what video it was though.

True Time Attack has a video showing them in Emerald.

[youtube]https://www.youtube.com/watch?v=1lSPJwjnnUI[/youtube]

Wack0

  • Coder, reverser, beta collector [BetaArchive staff]
  • Staff
  • *****
  • Offline Offline
  • Gender: Male
  • cBRH - Doing nothing since 2k7
    • View Profile
Re: Differences between English Ruby/Sapphire v1.0 and v1.1
« Reply #9 on: September 29, 2015, 06:17:10 pm »
True Time Attack has a video showing them in Emerald.

Pretty sure the video I'm thinking of was related to FR/LG.. and might have been Decamark-related.
C H E C K E D . B U I L D S . A R E . A W E S O M E N E S S

BetaArchiveSoftHistory Forumsirc.rol.im #galaxy,#softhistory

Also known as The Distractor.

Shane, please stop telling children that there's a Mew outside under the delivery trucks. - Management

Pokémon: arbitrary code execution 1996-2016

Crystalame

  • GCLF Member
  • Offline Offline
  • "Please try again in 0 minutes."
    • View Profile
" 'What will do?' Oh god, I have no idea. What will do? At this point, what can do? And when I saw had no energy left to battle, I knew there was nothing could do."

Wack0

  • Coder, reverser, beta collector [BetaArchive staff]
  • Staff
  • *****
  • Offline Offline
  • Gender: Male
  • cBRH - Doing nothing since 2k7
    • View Profile
C H E C K E D . B U I L D S . A R E . A W E S O M E N E S S

BetaArchiveSoftHistory Forumsirc.rol.im #galaxy,#softhistory

Also known as The Distractor.

Shane, please stop telling children that there's a Mew outside under the delivery trucks. - Management

Pokémon: arbitrary code execution 1996-2016

Háčky

  • Distinguished Member
  • *
  • Offline Offline
  • Pick which packet as an error?
    • View Profile
Re: Differences between English Ruby/Sapphire v1.0 and v1.1
« Reply #12 on: October 01, 2015, 01:50:38 am »
Not quite what I was expecting to see, but here it is:




The glitchy text box in 1.0 is caused by the text running off the edge of the screen and overwriting the text box graphics.

As for what this thing is doing: First, the “internal battery” text is a red herring; this is all to do with the cartridge’s flash memory. The original Japanese message is 「バックアップきのうの こしょう または じゅみょうが きました。セーブすることは できませんが このまま ゲームを あそぶことはできます」, which seems to say roughly that “the backup function has failed or reached its end-of-life”. Chalk it up as yet another localization error.

The code that writes to the flash memory verifies each byte as it’s written, and retries if it’s not. After a few tries, if the data is still not written correctly, it gives up and flags the sector as bad. This triggers the “Save failed” screen.

“Checking the backup memory” appears to mean trying to zero out any bad sectors. If this succeeds, then it will attempt to save again. If the zeroing fails, or if the save fails three more times, then “The backup memory is damaged” and “Gameplay cannot be continued. Returning to the title screen…” If the save succeeds, then it shows one of the two “Save completed” messages, but I don’t know how it’s determined whether gameplay can be continued.

The bitfield of bad sectors is at $3005EA8; you can write a non-zero value to this address during a save to force the “Save failed” screen to appear.

It seems that no$gba isn’t able to emulate the zeroing process correctly; it gets stuck on “Checking the backup memory”, or at least the “Time required” is a lot more than “1 minute”. VBA-M, on the other hand, finishes in just a few seconds even if all 32 sectors are flagged.

Wack0

  • Coder, reverser, beta collector [BetaArchive staff]
  • Staff
  • *****
  • Offline Offline
  • Gender: Male
  • cBRH - Doing nothing since 2k7
    • View Profile
Re: Differences between English Ruby/Sapphire v1.0 and v1.1
« Reply #13 on: October 01, 2015, 11:20:54 am »
I guess I should have realised it was something like that! Thanks for the information.
C H E C K E D . B U I L D S . A R E . A W E S O M E N E S S

BetaArchiveSoftHistory Forumsirc.rol.im #galaxy,#softhistory

Also known as The Distractor.

Shane, please stop telling children that there's a Mew outside under the delivery trucks. - Management

Pokémon: arbitrary code execution 1996-2016

Háčky

  • Distinguished Member
  • *
  • Offline Offline
  • Pick which packet as an error?
    • View Profile
Re: Differences between English Ruby/Sapphire v1.0 and v1.1
« Reply #14 on: October 03, 2015, 01:49:11 am »
These would explain why the Record Center text was changed:

Quote
When I accessed the RECORD CORNER,
the data for what’s hot in DEWFORD
got updated.
Now that bit of data is the same
as my friend’s!

A RECORD CORNER opened upstairs in
the POKéMON CENTER.
I don’t know what it’s about, but it
sounds fun. I’ll go check it out!

Have you done anything at the
RECORD CORNER?
It’s pretty neat. It mixes and matches
the records of TRAINERS.
I don’t know quite how it works,
but it’s cool. It’s exciting, even!

I guess everyone knew the name of the place except the attendant who works there…and even she did at one point:

Quote
I’m terribly sorry. The RECORD CORNER
is under preparation.