Debugging features within Pokémon Gold/Silver/Crystal: Difference between revisions

Jump to navigation Jump to search
Content added Content deleted
>Torchickens
mNo edit summary
>Torchickens
No edit summary
Line 1: Line 1:
{{Debugging summary pages}}
{{Debugging summary pages}}
{{Summary page}}
{{Summary page}}
{{Factcheck}}
[[Image:GSCDebug menu2.png|270px|thumb|right|An unused dialogue string "Now on DEBUG..." for a possible debug menu in Pokémon Gold and Silver regarding the game's Real-Time Clock, although only one string of possible corresponding dialogue remains "Test event [XX]?"]]
[[Image:GSCDebug menu2.png|270px|thumb|right|An unused dialogue string "Now on DEBUG..." for a possible debug menu in Pokémon Gold and Silver regarding the game's Real-Time Clock, although only one string of possible corresponding dialogue remains "Test event [XX]?"]]


Several unused features have been found within the coding of the final build of Pokémon Gold/Silver/Crystal which are suggestible of debugging features which may have been used within earlier builds when Pokémon Gold and Silver were in their early stages of development.
Several unused features have been found within the coding of the final version of Pokémon Gold/Silver/Crystal related to debugging.


==MR. CHRONO RT/DF display==
==MR. CHRONO RT/DF display==


It is notable that dialogue strings corresponding to a non existent NPC named 'MR. CHRONO' exist within the game's coding. If the game is forced to start event data for "MR. CHRONO" he will give the words; "I'm MR CHRONO" and "Now on DEBUG." respectively. Prior to the "Now on DEBUG" message, an interface is displayed which shows the current time according to the "Real-Time Clock" (RT) and the DF (i.e. the time offset set by the player normally at the beginning of the game). Next to the time offset; either "ON" or "OFF" is displayed. "ON" denotes that the player is using Daylight-Saving Time and "OFF" denotes that Daylight-Saving Time is disabled.
Dialog for a non-existing NPC named 'MR. CHRONO' can be found in Pokémon Gold and Silver. If the game is forced to start event data for "MR. CHRONO" he will give the words; "I'm MR CHRONO" and "Now on DEBUG." respectively. Prior to the "Now on DEBUG" message, an interface is displayed which shows the current time according to the "Real-Time Clock" (RT) and the DF ('time difference'). Next to the time offset; either "ON" or "OFF" is displayed. "ON" denotes that the player is using Daylight-Saving Time and "OFF" denotes that Daylight-Saving Time is disabled.


===Now on DEBUG.===
===Now on DEBUG.===


The "Now on DEBUG." message will appear after the RT/DF display is exited. However, this dialog string does not appear to activate any further debugging features; which may suggest that most if not all of its associated event data has been removed from the final game. One dialog string however; "Test event XX?" (mentioned below) is still functionable and may relate to the "Now on DEBUG." message, although it can no longer be activated simply by closing the text box.
The "Now on DEBUG." message will appear after the RT/DF display is exited. However, this dialog string does not appear to activate any further debugging features.


====Test event XX?====
====Test event XX?====


A dialogue string "Test event XX?" exists within the coding of the final game, where XX is any integer between 0 and 255, for example; "Test event 04?". This might suggest that at one time the game developers had the choice of testing a certain algorithm or function, using any value given by XX. The event however, is no longer functionable and the options YES/NO do not appear normally. XX depicts a value from a RAM address nearby Real-Time Clock data, which can suggest that it is related to the "Now on DEBUG." message displayed after activating the MR. CHRONO RT/DF display.
A dialogue string "Test event XX?" exists within the coding of Pokémon Gold/Silver, where XX is any integer between 0 and 255, for example; "Test event 04?". XX is from a memory address related to the Real-Time Clock data.{{clarify}}


==Pokémon/Trainer color interface and TM/HM compatability checker==
==Pokémon/Trainer color interface and TM/HM compatability checker==


[[Image:GSbColorDebug.png|270px|thumb|right|A player altering the primary palette of an enemy Bulbasaur via an unused Pokémon/Trainer 'color test' interface within Pokémon Gold and Silver (JP).]]
[[Image:GSbColorDebug.png|270px|thumb|right|A player altering the palette of an enemy Bulbasaur via an unused Pokémon/Trainer 'color test' interface within the Japanese Pokémon Gold and Silver.]]


Interestingly, a large unused, complex interface, presumably for in-game battles, exists within the final game. It consists of two pages; the first can be used to change the colors of Pokémon or trainers in battle and the second allows one to check the TM/HM compatability of the relevant Pokémon. Although the interface still exists within translated versions of the game, it is the most stable on the original Japanese version; as the game will attempt to manage dialogue which was removed in later versions, such as おわりますか? ("Are you finished?"), graphic bugs would also ensue due to the screen not being localised.
Interestingly, a large unused, complex interface, presumably for in-game battles, exists within the final game. It consists of two pages; the first can be used to change the colors of Pokémon or trainers in battle and the second allows one to check the TM/HM compatability of the relevant Pokémon. Although the interface still exists within translated versions of the game, it is the most stable on the original Japanese version. {{clarify}} Graphic bugs also occur due to the screen not being localized.


In the Japanese version; the interface occupies memory address 3F:54F1 (v1.0 and v1.10) and can be activated by enabling the screen update service (i.e. by checking address FFD6), whether the game will attempt to manage a Pokémon or a trainer depends on the memory address CF21, where an identifier of 00 activates 'Pokémon mode' and any other identifier activates 'Trainer mode'.
In the Japanese version; the interface apparently occupies the three byte pointer 3F:54F1 (v1.0 and v1.10) and once the code at 3F:54F1 is run when the screen update service is enabled (i.e. by checking address FFD6) the menu will load. {{fact}} Whether the game will attempt to manage a Pokémon or a trainer depends on the memory address CF21, where an identifier of 00 activates 'Pokémon mode' and any other identifier activates 'Trainer mode'.


===Unused dialogue corresponding to this menu===
===Unused dialogue corresponding to this menu===
Line 38: Line 39:
===First page===
===First page===


The manageable Pokémon/Trainer is initially Bulbasaur or Falkner respectively, although it can be changed by using either the Select button to change to the next Pokémon/Trainer according to identifier in the Species or Trainer byte, or the Start button to change to the previous Pokémon/Trainer.
The Pokémon on this page can be changed by using either the Select button to change to the next Pokémon/Trainer, or the Start button to change to the previous Pokémon/Trainer. The index number of the Pokémon or Trainer is indicated on the top-left corner of the screen.


One can change the color of the front and backsprite's Pokémon/Trainer via the directional pad. Three 'scroll bars' can be adjusted to change the amount of Red, Green or Blue saturation in the relevant sprite 'region'. A cursor at the top-right section of the screen denotes what region the player is managing; the left-most section changes the primary color scheme and the right-most section changes the secondary color scheme. The location of the cursor can be changed to manage another color scheme. The hexadecimal identifier (two bytes) of the final color is shown below both icons for the primary and secondary color schemes and denotes the values for each one respectively.
One can change the color of the front and backsprite's Pokémon/Trainer via the directional pad. Three 'scroll bars' can be adjusted to change the amount of Red, Green or Blue saturation in the relevant sprite 'region'. A cursor at the top-right section of the screen denotes what region the player is managing; the left-most section changes the primary color scheme and the right-most section changes the secondary color scheme. The location of the cursor can be changed to manage another color scheme. The [[word]] (two bytes) for the final color is shown below both icons for the primary and secondary color schemes.


By pressing the A button, a player can switch between the default normal and 'rare' (shiny) palettes for the relevant Pokémon. If the player switches to a rare Pokémon palette however, the changes remain permanent for the current game session and would need to be set back to the normal color manually.
By pressing the A button, a player can switch between the default normal and 'rare' (shiny) palettes for the relevant Pokémon. If the player switches to a rare Pokémon palette however, the changes remain permanent for the current game session and would need to be set back to the normal color manually.
Line 48: Line 49:
===Second page===
===Second page===


The player can press the B button on the first page to proceed to the second page or press the B button again to return the first page. On the second page, the game will manage the Pokémon/Trainer from the first page, using the palettes previously loaded to the game's memory. The game suggests that the menu can be exited via the A button however, although the game code to exit the menu exists, it remains unused for unknown reasons.
The player can press the B button on the first page to proceed to the second page or press the B button again to return the first page. On the second page, the game will manage the Pokémon/Trainer from the first page, using the palettes previously loaded to the game's memory. The game suggests that the menu can be exited via the A button however, although the game code to exit the menu exists, activating it requires further hacking for unknown reasons.


The directional pad on this page, can be used to select a TM or HM, with respect to its relevant identifier. After choosing a TM or HM, the game will display the message "おぼえられる" if the Pokémon can be taught that move, or "おぼえられない" if the Pokémon cannot be taught that move.
The directional pad on this page can be used to select a TM or HM, with respect to its relevant identifier. After choosing a TM or HM, the game will display the message "おぼえられる" if the Pokémon can be taught that move, or "おぼえられない" if the Pokémon cannot be taught that move.


This page may have been used by the game developers to easily check whether the chosen Pokémon is capable of using a TM or HM move before deciding on its natural learn-set.
This page may have been used by the game developers to easily check whether the chosen Pokémon is capable of using a TM or HM move before deciding on its natural learn-set.
Line 58: Line 59:
[[Image:GSoColorDebug.png|270px|thumb|right|An unused color interface, allowing one to change a palette within the main map interface, modified to function correctly in Pokémon Gold and Silver.]]
[[Image:GSoColorDebug.png|270px|thumb|right|An unused color interface, allowing one to change a palette within the main map interface, modified to function correctly in Pokémon Gold and Silver.]]


Another interface; likely related to the Pokémon/Trainer color interface exists within the final builds of Pokémon Gold and Silver, but remains unused. The menu cannot normally be seen even if it is called via a [[game-altering device]] because of the fact that a return function is called prior to all subroutines. If the menu is modified however to remove the return function being used, or if a custom game code is written to load the interface directly further details can be revealed.
Another unused debugging interface; likely related to the Pokémon/Trainer color interface exists within Pokémon Gold and Silver. The menu cannot normally be seen even if it is called via a [[cheating device]] because of the fact that a return function is called prior to all subroutines. If the menu is modified however to remove the return function being used, or if a custom game code is written to load the interface directly further details can be revealed.


Upon activating the menu; presuming that the return function was not called, an interface will appear at the bottom of the screen which functions similarly to the one used in the Pokémon/Trainer color interface. Instead of changing the primary and secondary palettes of Pokémon and trainers however, it allows one to change the red, blue and green channels of elements within the main map interface, or manipulate the hexadecimal identifiers of what colors are already being used.
Upon activating the menu; presuming that the return function was not called, an interface will appear at the bottom of the screen which functions similarly to the one used in the Pokémon/Trainer color interface. Instead of changing the primary and secondary palettes of Pokémon and trainers however, it allows one to change the red, blue and green channels of elements within the main map interface, or manipulate the hexadecimal identifiers of what colors are already being used.


By pressing the Select button, players can rotate between which palettes are going to be managed depending on the order they are loaded in the game's RAM. However, the menu palette and any foreground palettes cannot be altered via this interface, with the addition of palette 07. There is no valid function in this interface to exit this menu, once called.
By pressing the Select button, players can rotate between which palettes are going to be managed depending on the order they are loaded in the game's memory. However, the menu palette and any foreground palettes cannot be altered via this interface, with the addition of palette 07. There is no valid function in this interface to exit this menu, once called.


==Advanced error messages==
==Advanced error messages==
Line 71: Line 72:


#[[N/A]] - Possibly for an invalid map location (unused)
#[[N/A]] - Possibly for an invalid map location (unused)
#[[Object event.]]
#[[Object event.]] - Possibly for when the player speaks to an object or NPC with no defined dialog data, compare with [[!]].
#[[No windows avail-able for popping.]] - Possibly for when the game attempts to bring up a window with undefined or invalid data.
#[[No windows avail-able for popping.]]
#[[Corrupted event!]] - Possibly for speaking with an object or NPC which starts an event with invalid data
#[[Corrupted event!]] - Possibly for speaking with an object or NPC which starts an event with invalid data
#[[Coordinates event.]]
#[[Coordinates event.]] - Possibly an extension of Object Event for an object or NPC whom has no defined text and changes the co-ordinates of an other object
#[[BG event.]]
#[[BG event.]] - Possibly an extension of Object Event for an object or NPC which changes details of the map background.
#[[ERROR!]] - Used for an invalid [[bp:field move|field move]].
#[[ERROR!]] - Used for an invalid [[bp:field move|field move]].
#[[?????]] - Used for an invalid Pokémon species
#[[?????]] - Used for an invalid Pokémon species.
#[[Teru-Sama]] - The shared name for 29 unused items and less in Pokémon Crystal ([http://pastebin.com/PyYf5Zs8 list of hexadecimal index numbers]).
#[[Teru-Sama]] - Denotes placeholder item data
#[[?]] - Used for an invalid item
#[[?]] - Used for the invalid hex:00 item.


==External links==
==External links==


#[http://wiki.rustedlogic.net/Pokémon_Gold_and_Silver] The Cutting Room Floor wiki - Unused elements of Pokémon Gold and Silver.
#[http://tcrf.net/Pokemon_Gold_and_Silver The Cutting Room Floor article about unused content in Pokémon Gold and Silver].