Glitch City Laboratories Archives

Glitch City Laboratories closed on 1 September 2020 (announcement). This is an archived copy of a thread from Glitch City Laboratories Forums.

You can join Glitch City Research Institute to ask questions or discuss current developments.

You may also download the archive of this forum in .tar.gz, .sql.gz, or .sqlite.gz formats.

Pokémon Discussion

Differences between English Ruby/Sapphire v1.0 and v1.1 - Page 1

Differences between English Ruby/Sapphire v1.0 and v1.1

Posted by: Háčky
Date: 2015-02-16 19:35:29

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 cant be sure if this is a complete list, because I dont 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émons 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.


Todays Smart Shopper ($81AB381 in v1.0, $81AB3A1 in v1.1)
Hello!
Its time for TODAYS SMART SHOPPER.
INTERVIEWER: How are you, viewers?
Today were visiting the POKéMON MART
in \v3.
Lets 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 dont know that Ive 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 arent 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)
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, Mawiles Pokédex entry uses the spelling MAWHILE in Ruby v1.0, which was corrected in v1.1.


Something cant be used on that Pokémon ($840EFA1 in v1.0, $840EFBD in v1.1)
This item cant be used on
that POKéMON.

In version 1.1, the word item was deleted, so the message reads This cant be used on that POKéMON. I guess this message appears in some context that doesnt 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.

Re: Differences between English Ruby/Sapphire v1.0 and v1.1

Posted by: SatoMew
Date: 2015-02-16 20:30:30
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émons 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.


Todays Smart Shopper ($81AB381 in v1.0, $81AB3A1 in v1.1)
Hello!
Its time for TODAYS SMART SHOPPER.
INTERVIEWER: How are you, viewers?
Today were visiting the POKéMON MART
in \v3.
Lets 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 dont know that Ive 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 arent 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 cant be used on that Pokémon ($840EFA1 in v1.0, $840EFBD in v1.1)
This item cant be used on
that POKéMON.

In version 1.1, the word item was deleted, so the message reads This cant be used on that POKéMON. I guess this message appears in some context that doesnt 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?

Re: Differences between English Ruby/Sapphire v1.0 and v1.1

Posted by: Háčky
Date: 2015-02-16 21:32:17

Something cant be used on that Pokémon ($840EFA1 in v1.0, $840EFBD in v1.1)
This item cant be used on
that POKéMON.

In version 1.1, the word item was deleted, so the message reads This cant be used on that POKéMON. I guess this message appears in some context that doesnt involve an item?

What's the equivalent Japanese text?

そのにはつま
I cant even think of a situation in which this message is seen. Normally if an item cant be used, it says It wont 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 dont 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, theres Mail, too. Do any NPCs give Mail with a pre-written message in Generation III? Never mind, Mail uses the easy chat system.

Re: Differences between English Ruby/Sapphire v1.0 and v1.1

Posted by: SatoMew
Date: 2015-02-17 08:45:04

そのにはつま
I cant even think of a situation in which this message is seen. Normally if an item cant be used, it says It wont 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:

[img]http://i.imgur.com/QcpFxDH.gif[/img]

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 dont 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, theres 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?

Re: Differences between English Ruby/Sapphire v1.0 and v1.1

Posted by: Háčky
Date: 2015-02-17 17:06:41
Mystery solved: This [item] cant 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 isnt even obtainable in Ruby and Sapphire except by trading with a future game, its understandable that this translation error would have gone unnoticed until after release.

Re: Differences between English Ruby/Sapphire v1.0 and v1.1

Posted by: SatoMew
Date: 2015-02-17 17:28:01

Mystery solved: This [item] cant 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 isnt even obtainable in Ruby and Sapphire except by trading with a future game, its 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.

Re: Differences between English Ruby/Sapphire v1.0 and v1.1

Posted by: Háčky
Date: 2015-09-28 05:41:56
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émons 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, its 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.

Whats 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 havent looked into the exact cause yet.)




Heres a few things I missed the first time around. I believe this completes the list of changes in Ruby v1.1, although I still havent 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 dont 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 havent figured out what these functions actually do or in what circumstances theyre called, but they display these text strings (along with the sprite of Prof. Birchs bag from the starter selection screen?):
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)
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 games 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 12 px of extra space in the first table, and the kana and inverted exclamation mark are 12 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:
[img]http://imgur.com/J6L6uKr.png[/img]
If the first table were used, it would theoretically look like this (done in an image editor):
[img]http://imgur.com/i13nBiY.png[/img]

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

I dont 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)
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 doesnt seem to have been documented anywhere, and I guess thats not really surprising, since the only way to obtain the Togepi Doll is by spending 48 BP in Emeralds Battle Frontier and sending it back to Ruby/Sapphire via the Trader in Mauville City.

Re: Differences between English Ruby/Sapphire v1.0 and v1.1

Posted by: Stackout
Date: 2015-09-28 08:49:51

The functions at $8146E50, $8147048, $8147154, and $8147218 in v1.0 (add $20 for v1.1) were altered. I havent figured out what these functions actually do or in what circumstances theyre called, but they display these text strings (along with the sprite of Prof. Birchs 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.

Re: Differences between English Ruby/Sapphire v1.0 and v1.1

Posted by: SatoMew
Date: 2015-09-28 11:34:24
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]

Re: Differences between English Ruby/Sapphire v1.0 and v1.1

Posted by: Stackout
Date: 2015-09-29 19:17:10

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.

Re: Differences between English Ruby/Sapphire v1.0 and v1.1

Posted by: Crystalame
Date: 2015-09-29 21:08:05
Are you talking about this post/video, Wack0?

Re: Differences between English Ruby/Sapphire v1.0 and v1.1

Posted by: Stackout
Date: 2015-09-30 08:46:03

Are you talking about this post/video, Wack0?


Yes, that's the one.

Re: Differences between English Ruby/Sapphire v1.0 and v1.1

Posted by: Háčky
Date: 2015-10-01 02:50:38
Not quite what I was expecting to see, but here it is:

[img]http://imgur.com/V63NQoy.png[/img][img]http://imgur.com/cxq1lHZ.png[/img]
[img]http://imgur.com/QfLUQmz.png[/img][img]http://imgur.com/yLmZeWT.png[/img]

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 cartridges 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 its written, and retries if its 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 dont know how its 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 isnt 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.

Re: Differences between English Ruby/Sapphire v1.0 and v1.1

Posted by: Stackout
Date: 2015-10-01 12:20:54
I guess I should have realised it was something like that! Thanks for the information.

Re: Differences between English Ruby/Sapphire v1.0 and v1.1

Posted by: Háčky
Date: 2015-10-03 02:49:11
These would explain why the Record Center text was changed:

When I accessed the RECORD CORNER,
the data for whats hot in DEWFORD
got updated.
Now that bit of data is the same
as my friends!

A RECORD CORNER opened upstairs in
the POKéMON CENTER.
I dont know what its about, but it
sounds fun. Ill go check it out!

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


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

Im terribly sorry. The RECORD CORNER
is under preparation.