The Cutting Room Floor:Common Things
Sometimes, you can find a random piece of unused content or two in one game. And sometimes, that little piece can be found in many, many other games. This page aims to list all the egregiously common things in games, mainly to reduce the redundancy on every single page. If something is listed here, it's not worth mentioning in an article.
Contents
General
- Pressing the tilde (~) key or a similar key above the Tab key (the grave key) during gameplay brings up a console in a large number of Windows, Linux, and Mac games.
- Games made with commercially-available engines such as Game Maker, Multimedia Fusion, RPGMaker, Unreal Engine, and Unity will have default assets within the game's folders and/or files.
- Similarly, many games create logs during gameplay. Unless the functionality of these is disabled by default or the game happens to include one of these hidden in its directory, these are usually not worth covering, especially with computer games.
- Dialogue and graphics relating to control methods (i.e. keyboards, dedicated controllers) can change depending on which platform the game is being played on.
- Many modern Japanese games will have a warning screen noting that piracy over the Internet, including distributing the game without the owners' permissions, is illegal. An example of such a screen can be seen below:
Or on the other hand, the warning screen is displayed in other languages and can be found in SNK-published games, such as The King of Fighters XIV, Samurai Showdown (2019), SNK Heroines: Tag Team Frenzy, etc.:
Japanese | English (official) |
---|---|
<ご注意> ゲームソフトを権利者の許諾なく、インターネットを通じて配 信、配布する行為、また、違法なインターネット配信と知りな がらダウンロードする行為は法律で固く禁じられております。 みなさまのご理解とご協力をお願いいたします。 |
WARNING Duplication and distribution without permission from the copyright holder, transmission and distribution through the internet, and downloading of this game software is prohibited by law. We ask for your understanding and cooperation. |
Arcade
Service Mode
Almost every single arcade game will have an operator's menu. The details of these are usually included in the operator's manual (note that scans may not always be available for a particular game) and is generally accessed either with a test button (not to be confused with a service button, which adds a credit) or a DIP switch, the latter possibly requiring a power cycle. The purpose is usually to assure the machine is still able to accept coins, test for controls, play sounds, and test the monitor. Pictured below is an example from Hebereke no Popoon:
Tilt
Just like pinball machines have a "tilt" feature to penalize cheating and violence against the unit, the JAMMA connector features a dedicated pin for a tilt input (mapped by default in MAME to the T key).
Rarely connected in most cabinets, the consequence of triggering this input varies from absolutely nothing (as in most games), an audible alarm, a warning screen followed by a reset (as in Bubble Bobble), to an immediate reset. It is therefore most analogous to a pinball machine's slam tilt.
Nintendo
Famicom/NES
All NES games developed by Codemasters are based on the same stub library. As a result, all of these games, including those on multicarts, include a "smiley test" that verifies the integrity of the PRG ROM and CHR RAM chips.
To activate the PRG ROM test, hold Up + Down + Left + Right + A + Select + Start and press Reset. To activate the CHR RAM test, hold Up + Down + Left + Right + B + Select + Start and press Reset. (These tests can also be run simultaneously by holding both A and B, and the results will be ORed together in RAM.) If the PRG ROM checksum matches with the internal value or the CHR RAM chip has no bad cells, the program will display a happy green face; otherwise, it will display a sad red face. The code also attempts to write the test results to an unknown device at $4400, possibly an automated cartridge tester.
Note that the tests cannot be performed with an unmodified controller, as the design of the D-Pad prevents more than two directions from being pressed at once.
Passed | Failed |
---|---|
There are a series of Namco games, made by the same programmers Haruhisa Udagawa and Kumi Hanaoka, that contains the same self-test for the data integrity (Babel no Tou, Dragon Buster, Family Jockey, Lupin Sansei: Pandora no Isan, Mappy-Land, Pro Yakyuu: Family Stadium, Sanma no Meitantei, Sky Kid, Super Xevious: Gump no Nazo, and Valkyrie no Bouken: Toki no Kagi Densetsu). In the cases of Mappy-Land and Pro Yakyuu: Family Stadium, only the Japanese versions contain such tests.
To enable any of these tests, you need a special device that should be plugged into the expansion port. The operation of that device is very simple. It should accept the data bit from the data input port and return it back inverted to the output data port. The device consists of a 4-bit shift register, working as some sort of FIFO buffer. The input bits go to the input and are then shifted to the output after four cycles.
At the game's boot, it tries to send some special data to the device. If the data output doesn't match the data input inverted, then the game continues the normal operation. But if all data (usually 32, rarely 64 bytes) matches, self-tests will be performed. The program calculates 24-bit partial checksums for the PRG (excluding the last 8K) and the CHR data, summing only every 15th byte, and comparing it against the etalon.
Before testing of the PRG data, the background color turns red, before testing the CHR data, it turns green. If any of these tests are failed, the program will jump directly to the reset routine. It means, one of these tests will be performed infinitely, but until the special device is unplugged, or until the tests are passed.
Normally, you'll see the red to green flash just before the game's boot. Or the static red screen if the PRG data is bad, or the flashing red to green screen if CHR data isn't good.
Using one of the below Game Genie codes depending on the game, you can skip tests for the special device presence and jump straight to the integrity tests.
Game | Code |
---|---|
Babel no Tou | GENYEIEI |
Dragon Buster | GAUYNTEI |
Family Jockey | GANNVTEI |
Lupin Sansei: Pandora no Isan | GAXYNTEI |
Mappy-Land | GAVYNTEI |
Pro Yakyuu: Family Stadium | GAVYNTEI |
Sanma no Meitantei | GAVYNTEI |
Sky Kid | GEONVTEI |
Super Xevious: Gump no Nazo | GEOYNTEI |
Valkyrie no Bouken: Toki no Kagi Densetsu | GEONVTEI |
Game Boy (Color)/Nintendo DS(i)
- All licensed software nominally exclusive to the Game Boy Color must, according to Nintendo's technical standards, run as far as to display an error message if the game is inserted into a Game Boy, Super Game Boy, or similar non-GBC-compatible device. These are only noteworthy if they go completely unused or there are notable regional differences (besides translation).
- Detection of the Game Boy-compatible console model relies on their different bootroms passing control to the program on cartridge with different values in the CPU registers. If the title restarts from its initial entrypoint without the console actually resetting (for example as a consequence of a bug or glitch in the game), this detection will generally fail and the title will assume a non-GBC-compatible console, and will stop updating the color data, etc. often resulting in visual oddities. This effect is sometimes called Glitch Dimension, due to the usage of said term in the Pokémon glitch community.
- An equivalent requirement applies to the very limited number of physical DSi-exclusive games, although they contain separate executables for DS and DSi and the onus of running the most appropriate one is the responsibility of the console.
- Hybrid and exclusive New 3DS titles, which switched back to a single executable, do not have these features - they all contain a v9.2 or above offline update even for original 3DS consoles, and the v9.0+ launcher will enforce New 3DS exclusivity. (Most N3DS-only titles will freeze almost immediately if forced to launch on an "old" 3DS.)
- Any Game Boy game made with GB Studio will contain the following crash handler.
- Nintendo DS(i) and 3DS games can have the option to send a cut-down version to other devices through Download Play (mainly demos or multiplayer clients). These should only be documented if there are notable differences from the full games, or if they contain something unusual.
Super Famicom/SNES/Nintendo 64
- Many games will display a region error on boot when attempting to play the NTSC version on a PAL console and vice versa. These are only noteworthy if they go completely unused or there are notable regional differences (besides translation).
Sega
Mega Drive/Genesis
- Many games will display a region error on boot when attempting to run the game on a console which doesn't match the game's region. These are only noteworthy if they go completely unused or there are notable regional differences (besides translation).
$C0001C
The Mega Drive's VDP internally has a word-length register that affects the operation of its visuals, and to a certain extent the PSG. This register has never been called by any known game. Sega's technical manuals don't list the register. Among programmer circles, it's colloquially known as the "debug register" as it can force the VDP's layers (termed "planes") to show, although the reason for its existence is still uncertain. Bit 6 allows only a single layer to display, and Bits 7 and 8 can force the two respective VDP planes to show. When enabled at the same time as Bit 6 is clear, the layers merge in a certain way that cause colors to merge. By enabling bits 7 and 8 while clearing Bit 6 using a debugger (specifically, by writing word 0x0180 to the register), you can generate transparent visuals. Since no game ever used these, however, all you get is translucent imagery with garish palettes depending on how your game of choice uses layers and colors.
Bits 7 and 8 disabled | Bits 7 and 8 enabled |
---|---|
SNK
Neo Geo Pocket Color
- Similar to the Game Boy Color, there's an error message any time a game is inserted into a plain Neo Geo Pocket when a game is meant solely for the Pocket Color. These are only noteworthy if they go completely unused or there are notable regional differences (besides translation).
Unused Content
General
- Games released on multiple platforms will sometimes share the same files across all ports, including things like graphics and text referring to the hardware it was released on. As a result, you can sometimes find things like Xbox and PlayStation 2 button prompts in a GameCube port of a game.
SDK Content
Nintendo
- Various portions of the GameCube and Wii SDKs can be found in random games.
- rebirth.thp, portions of the U.S. Constitution, etc.
- Super Game Boy dummy headers are featured in most Game Boy games from 1994 onward.
Ren'Py
- Various engine placeholder graphics as well as audio can be found within the renpy/common directory.
Unity
- Various graphics from the Unity SDK tend to be common leftovers. These include Unity logos, various types of "beta" or "development" watermarks, a yellow warning sign, a "personal edition" or "free edition" splash image, and many smaller Unity-specific UI elements.
- There are many Unity plugins that aid in the development processes of games, through various means, and leftover assets from such plugins can often be found in the files of released Unity games. Some plugins are more popular than others, with assets from them appearing in a number of Unity games.
- ProBuilder is commonly used for geometry editing.
Unreal Engine
To do: Some examples please. |
- Various graphics from the Unreal Engine UDK tend to be common leftovers.
- Some games, like A Hat in Time, share console commands with Unreal Engine 3.
Sega
Sega Pico
This needs some investigation. Discuss ideas and findings on the talk page. Specifically:
|
- Perhaps most interesting is this arrangement of Michael Jackson's "Smooth Criminal":
- (Sound ID: 81)
- Also unused are these bunch of jingles:
- (Sound ID: A1)
- (Sound ID: A2)
- (Sound ID: A3)
- (Sound ID: A4)
- (Sound ID: A5)
- (Sound ID: A6)
- (Sound ID: A7)
J2ME
China Mobile Games-released games
J2ME games released by China Mobile Games contain a standard logo screen, with a jingle playing along it.
Bugged | Fixed |
---|---|
Isolated - Bugged | Isolated - Fixed |
---|---|
The string track (channel 5) of the jingle has two extra notes that go unheard, as a program change event immediately follows them. As feature phones are limited in performance, this probably makes playing the jingle easier for them.
Others
Adobe Flash
Many Flash games with sound will often have a blank .wav file stored in the sound directories. This will often be titled "0.wav" and be 44 bytes in size.
Text Strings
General
- Many games will contain a string indicating which compiler was used for that game. Examples include (but aren't limited to) Microsoft's C Runtime Library, Borland, CodeWarrior, and Watcom.
- These strings were often used in decompilers, since it was easy to determine how a compiler worked (especially when the executable has function and variable names left in).
- Compilers tend to leave file listings or directories behind, containing lists of files used to compile the game. These are usually found within executables. Assertion strings may also reference these.
- Lorem ipsum text is often used as a placeholder.
- Executable/cartridge headers can be found in most games. These often contain the game's title in plain text.
- Sega Genesis/Mega Drive ROM headers contain a build date.
- Disc-based games often have text files named ABS.TXT, CPY.TXT, and/or BIB.TXT (or similar). These should not be documented unless their contents are particularly notable (e.g. developer notes, the game's story, etc.).
- One common example in games sold in Japan is "このCD-ROMに収録されているデータは著作権法によって保護されており、無断で転載・複製することはできません。" ("The data contained in this CD-ROM is protected by copyright law and may not be reproduced without permission.")
- Long lists of profanities and vulgarities, sometimes in multiple languages. These are used as word filters, usually to keep profanities from appearing in a game's dialogue or high-score screen. These have also been used to prevent certain words or ban users on game servers. Unless the list is unused by the game itself, contains something very unusual, or causes a notable effect in-game, it isn't worth documenting.
- Games that use the Bink video codec will contain the following error strings:
Error opening file. Not a Bink file. The file doesn't contain any compressed frames yet. The file has a corrupt header. Out of memory. Error reading Bink header. This file has bad frame size data.
- Any SCI-based game will have this string inside the main executable (usually sciv.exe or sierra.exe):
Script Interpreter, Copyright (C) 1987 Sierra On-Line, Inc. Authors: Jeff Stephenson, Bob Heitman, & Pablo Ghenis
CRIWare
- The following strings can be commonly seen:
SRD_WaitForExecServer timeout.(10sec) SRD: SRD Info. srd_enter_fg = %d srd_debug_geterror = %d srd_obj.stat = %d srd_obj.devtype = DVD srd_obj.devtype = HOST Read Status(DVD=2/HST=1) = %d SRD: 64bit Host filesystem. SRD: Enable HostLock SRD: sceLseek64 error = %d SRD: sceLseek error = %d SRD: sceIoctl error = %d SRD: sceOpen error = %d SRD: sceClose error = %d SRD: sceRead error = %d
Kirikiri2
A scripting engine typically used for Visual Novels.
- The following strings can be commonly found in the executable:
"; ============================================================================\n" "; *DO NOT EDIT* this file unless you are understanding what you are doing.\n" "; FYI:\n" "; Each line consists of NAME=\"VALUE\" pair, VALUE is a series of\n" "; \\xNN, where NN is hexadecimal representation of UNICODE codepoint.\n" "; For example, opt=\"\\x61\\x62\\x63\\x3042\\x3044\\x3046\" means that the\n" "; value of options \"opt\" is alphabets a, b, and c followed by Japanese\n" "; Hiraganas A, I, and U.\n" "; DO NOT PUT non-escaped value like opt=\"abc\". This doesn't work and should\n" "; be like opt=\"\\x61\\x62\\x63\".\n" "; ============================================================================\n" "";
3DO Company
3DO
- All 3DO games use the repeated string
iamaduck
to pad out the disc.
Amstrad
CPC
- Any game that uses the Speedlock protection system will have this string:
SPEEDLOCK PROTECTION SYSTEM (C) 1987 SPEEDLOCK ASSOCIATES : HACKER'S CHATLINE 0793-724317!
- Likewise, for AMSCopy, this string:
AMSCOPY II (c) Ultratec 198(5)
Arcade
Konami DJ Main Board
- All games contain the string
COPYRIGHT (C) KONAMIGRXXX 96.10.26DJ GROOVE
at the beginning of their PRG ROMs 6a and 8a (which are the odd and even split bytes of one single binary image). This string likely refers to a working title for the original beatmania.
Atari
7800
- All games contain
ACTUAL CART DATA STARTS HERE
after the header.
Microsoft
DOS
- Every DOS relocatable executable (≈ those that cannot form a valid .com program) has "MZ" to identify it as such to the program loader code (note that file extension is in fact irrelevant). "MZ" refers to Mark Zbikowski, the inventor of this file format.
- Games using the Borland Graphics Interface will contain a string similar to this:
BGI Device Driver (EGAVGA) 2.00 - Mar 21 1988 Copyright (c) 1987,1988 Borland International
- Games using the GX Library will contain a copyright string from Genus Microprogramming.
- Games using the AIL/Miles Sound System will contain a listing of functions from the library, plus errors for memory allocation.
--AIL_startup() AAIL_shutdown() AIL_set_preference(%d,%d) aResult = %d s AIL_get_real_vect(0x%X) ---Result = 0x%X -AIL_set_real_vect(0x%X,0x%X) --AIL_set_USE16_ISR(%d,0x%X,%u) aAIL_restore_USE16_ISR(%d) AIL_call_driver(0x%X,0x%X,0x%X,0x%X) d AIL_delay(%d) lAIL_API_read_INI(0x%X,%s) %Driver = %s ealDevice = %s %X)IO = %X SE1IRQ = %d ,%uDMA_8 = %d re_DMA_16 = %d Result = %u er(AIL_register_timer(0x%X) L_AIL_set_timer_user(%u,%u) IAIL_set_timer_period(%u,%u) eviAIL_set_timer_frequency(%u,%u) AIL_set_timer_divisor(%u,%u) A_AIL_interrupt_divisor() = AIL_start_timer(%u) imeAIL_start_all_timers() AIL_stop_timer(%u) AIL_stop_all_timers() AIL_release_timer_handle(%u) %uAIL_release_all_timers() u,AIL_get_IO_environment(0x%X) AIL_install_driver(0x%X,%u) L_sAIL_uninstall_driver(0x%X) AIL_install_DIG_INI(0x%X) eAIL_install_DIG_driver_file(%s,0x%X) uAAIL_uninstall_DIG_driver(0x%X) AIL_allocate_sample_handle(0x%X) taAIL_allocate_file_sample(0x%X,0x%X,%d) AIL_release_sample_handle(0x%X) %X)AIL_init_sample(0x%X) eAIL_set_sample_file(0x%X,0x%X,%d) GAIL_set_sample_address(0x%X,0x%X,%u) X)AIL_set_sample_type(0x%X,%d,%u) ,0xAIL_start_sample(0x%X) AIL_stop_sample(0x%X) _AIL_resume_sample(0x%X) et_AIL_end_sample(0x%X) %dAIL_set_sample_playback_rate(0x%X,%d) )AIL_set_sample_volume(0x%X,%d) AIL_set_sample_pan(0x%X,%d) IL_AIL_set_sample_loop_count(0x%X,%d) AIL_sample_status(0x%X) e(0AIL_sample_playback_rate(0x%X) AIL_sample_volume(0x%X) )AAIL_sample_pan(0x%X) x%AIL_sample_loop_count(0x%X) X,%AIL_set_digital_master_volume(0x%X,%d) AIL_digital_master_volume(0x%X) L_sAIL_install_DIG_driver_image(0x%X,%u,0x%X) AIL_minimum_sample_buffer_size(0x%X,%d,%d) AIL_sample_buffer_ready(0x%X) _AIL_load_sample_buffer(0x%X,%u,0x%X,%u) e(0AIL_set_sample_position(0x%X,%u) agAIL_sample_position(0x%X) XAIL_register_SOB_callback(0x%X,0x%X) ,%AIL_register_EOB_callback(0x%X,0x%X) _AAIL_register_EOS_callback(0x%X,0x%X) AIL_register_EOF_callback(0x%X,0x%X) AIL_set_sample_user_data(0x%X,%u,%d) 0xAIL_sample_user_data(0x%X,%u) lAIL_active_sample_count(0x%X) rAIL_install_MDI_INI(0x%X) AIL_install_MDI_driver_file(%s,0x%X) AIL_uninstall_MDI_driver(0x%X) AIL_allocate_sequence_handle(0x%X) AIL_release_sequence_handle(0x%X) rAIL_init_sequence(0x%X,0x%X,%d) nstAIL_start_sequence(0x%X) X)AIL_stop_sequence(0x%X) insAIL_resume_sequence(0x%X) aAIL_end_sequence(0x%X) AIL_set_sequence_tempo(0x%X,%d,%d) AIL_set_sequence_volume(0x%X,%d,%d) ) AIL_set_sequence_loop_count(0x%X,%d) AIL_sequence_status(0x%X) eAIL_sequence_tempo(0x%X) 0xAIL_sequence_volume(0x%X) (AIL_sequence_loop_count(0x%X) oAIL_set_XMIDI_master_volume(0x%X,%d) loAIL_XMIDI_master_volume(0x%X) LAIL_install_MDI_driver_image(0x%X,%u,0x%X) AIL_MDI_driver_type(0x%X) eAIL_set_GTL_filename_prefix(%s) 0x%AIL_timbre_status(0x%X,%d,%d) eAIL_install_timbre(0x%X,%d,%d) AIL_protect_timbre(0x%X,%d,%d) AIL_unprotect_timbre(0x%X,%d,%d) %XAIL_active_sequence_count(0x%X) s) AIL_controller_value(0x%X,%d,%d) eAIL_channel_notes(0x%X,%d) AIL_sequence_position(0x%X,0x%X,0x%X) xResult = %d:%d AIL_branch_index(0x%X,%u) AIL_register_prefix_callback(0x%X,0x%X) L_cAIL_register_trigger_callback(0x%X,0x%X) _nAIL_register_sequence_callback(0x%X,0x%X) XAIL_register_beat_callback(0x%X,0x%X) eAIL_register_event_callback(0x%X,0x%X) AIL_register_timbre_callback(0x%X,0x%X) lbaAIL_set_sequence_user_data(0x%X,%u,%d) AIL_sequence_user_data(0x%X,%u) calAIL_register_ICA_array(0x%X,0x%X) nAIL_lock_channel(0x%X) AIL_release_channel(0x%X,%d) %XAIL_map_sequence_channel(0x%X,%d,%d) 0xAIL_true_sequence_channel(0x%X,%d) AIL_send_channel_voice_message(0x%X,0x%X,0x%X,0x%X,0x%X) _lAIL_send_sysex_message(0x%X,0x%X) nAIL_create_wave_synthesizer(0x%X,0x%X,0x%X,%d) AIL_destroy_wave_synthesizer(0x%X) Floating-point support not loaded LX 0123456789ABCDEF hrt üDRIVER üDEVICE üIO_ADDR IRQ DMA_8_bit mpDMA_16_bit uCorrupted .INI file al Insufficient memory for driver descriptor lInsufficient low memory AIL3DIG AIL3MDI Invalid driver type E üOut of driver handles pOut of timer handles SOUND/SOUND.DAT SBAWE32.MDI w sound//%s.sbk SOUND/MUSIC.DAT .\ .bat .com .exe COMSPEC CMD COMMAND Minimum DMA buffer size too large for VDM dCould not allocate memory for driver m.DIG driver required reDigital sound hardware not found 0xCould not allocate DMA buffers Could not allocate build buffer r VCould not allocate SAMPLE structures veOut of timer handles reDriver file not found wDIG.INI Unable to open file DIG.INI MA Out of sample handles fmt ldata lCreative WAVE üUnrecognized digital audio file type _Invalid or missing data block %Unrecognized digital audio file type 0xInvalid or missing data block FORM CAT XMID Internal note queue overflow llCould not allocate memory for driver r .MDI driver required nXMIDI sound hardware not found Could not initialize instrument manager Could not allocate SEQUENCE structures Out of timer handles moDriver file not found rMDI.INI Unable to open file MDI.INI noTandy 3-voice music IBM internal speaker music m.AD .OPL COut of sequence handles E sInvalid XMIDI sequence TIMB es RBRN iveEVNT e nNo timbres loaded UDriver could not install timbre bank %u, patch %u IDriver could not install timbre bank %u, patch %u Insufficient memory for HWAVE descriptor Not enough memory to allocate file structures
Windows
- Windows programs extend the above-mentioned MZ .exe format with "NE" (New Executable, 16-bit) and later "PE" (Portable Executable, 32- or 64-bit) sections. A single executable is allowed and de facto required to have both Windows and DOS sections, although usually the latter part rarely does more than display an error:
- "This program cannot be run in DOS mode.", "This program requires Microsoft Windows.", or something similar appears in many Windows games when trying to run these in DOS or DOS-likes such as FreeDOS.
- "PADDING" repeated over and over is frequently seen inside Windows executables.
Xbox
- All executables that are signed for use on devkits will have "TESTTESTTESTTESTTESTTESTTESTTEST" to note that it has been signed with a dummy certificate.
Xbox 360
- Many games include unused strings from the XDK, mostly related to PIX.
{EndCapture} {BeginCapture} {EndCaptureFileCreation} {BeginCaptureFileCreation} {LimitCaptureSize} {Version} {Disconnect} {Connect} PIX!{CaptureEnded} PIX!{CaptureFileCreationEnded} VGT_DEBUG PA_SU_DEBUG PA_SC_DEBUG RBBM DEBUG CP DEBUG RB_DEBUG_0 CP_DEBUG CPU Synchronizaiton crashdump.pix2 commandbuffers with the D3DCREATECB_DEBUG_ALLOCATOR flag set and\n build using instrumented or debug versions of the D3D library.\n \n A likely potential reason for the hang is a bad growable command\n allocator. To rule out that possibility, try creating all growable\n Could the contents have become corrupted? The list of indirect\n buffer physical addresses and dword counts are as follows:\n It was a growable command buffer with its D3DALLOCATECALLBACK routine\n at address 0x%x and a callback context of 0x%x.\n \n o The GPU appears to have hung while executing the command buffer\n represented by the D3DCommandBuffer structure at address 0x%x.\n \nThe GPU state doesn't match any recognized hangs. Please send a repro\nscenario to gameds@microsoft.com so that we can supply a workaround.\n ERR[D3D]: The GPU is hung!
Funtech
Super A'can
- All games contain the following strings in order near the beginning of the ROM:
(reverse engineer)
Trademark by United Microelectronics Corp. and Funtech Entertainment Corp. All rights reserved. License is permitted.
Nintendo
- In virtually any Game Boy Color or Game Boy Advance game using the GHX or GAX Engine, it is guaranteed that you will find at least one copyright string for the GAX Engine.
- The same also goes for the driver error strings.
Famicom Disk System
- All games contain
*NINTENDO-HVC*
after the header.
Game Boy Advance
- Games that use the GBA Link Cable or the GameCube-Game Boy Advance Cable will contain the below strings:
MultiSio4Sio32Load010528 Sio32MultiLoad010214
- Games that have a save function will contain a string to indicate the save type:
SRAM
,FLASH
, orEEPROM
- although they may be deliberately misleading.
Nintendo DS(i)
- Various SDK compiler strings can be found at the beginning of the ARM9 binary. Below is an example of the ones from Mario Kart DS:
[SDK+NINTENDO:BACKUP] [SDK+NINTENDO:DWC20051007-1634_DWC20051007_NOTOUCH] [SDK+NINTENDO:WiFi1.0.10200.0510061936] [SDK+UBIQUITOUS:SSL] [SDK+UBIQUITOUS:CPS]
- Games that have Nintendo Wi-Fi support will sometimes contain company certificates somewhere in the ROM. Below is an example of the ones from Diddy Kong Racing DS:
BE, GlobalSign nv-sa, Root CA, GlobalSign Root CA IE, Baltimore, CyberTrust, Baltimore CyberTrust Root US, GTE Corporation, GTE CyberTrust Solutions, Inc., GTE CyberTrust Global Root US, GTE Corporation, GTE CyberTrust Root US, Washington, Nintendo of America Inc, NOA, Nintendo CA, ca@noa.nintendo.com ZA, Western Cape, Cape Town, Thawte Consulting cc, Certification Services Division, Thawte Premium Server CA, premium-server@thawte.com ZA, Western Cape, Cape Town, Thawte Consulting cc, Certification Services Division, Thawte Server CA, server-certs@thawte.com US, VeriSign, Inc., Class 3 Public Primary Certification Authority - G2, (c) 1998 VeriSign, Inc. - For authorized use only, VeriSign Trust Network US, VeriSign, Inc., VeriSign Trust Network, (c) 1999 VeriSign, Inc. - For authorized use only, VeriSign Class 3 Public Primary Certification Authority - G3 US, VeriSign, Inc., Class 3 Public Primary Certification Authority US, RSA Data Security, Inc., Secure Server Certification Authority
Super Famicom/SNES
- In many games using Nintendo's sound driver, there's a string with
*Ver S1.20*
in it. - Many games made using Nintendo's development tools also contain the string
NAK1989 S-CG-CADVer1.02 910320
or similar (the date and version number may be different). - Any game that uses or detects the SNES Mouse has the following strings. The version number may differ, but the strings otherwise remain the same:
START OF MOUSE BIOS NINTENDO SHVC MOUSE BIOS Ver1.10 END OF MOUSE BIOS
- Any game that uses or detects the Multitap peripheral has the following strings or something similar:
START OF MULTI5 CONNECT CHECK NINTENDO SHVC MULTI5 CONNECT CHECK Ver1.00 END OF MULTI5 CONNECT CHECK
START OF MULTI5 BIOS NINTENDO SHVC MULTI5 BIOS Ver2.00 END OF MULTI5 BIOS
- Likewise for the Super Scope:
START OF SCOPE BIOS NINTENDO SHVC SCOPE BIOS Ver1.00 END OF SCOPE BIOS
Nintendo 64
- All 64 games have some string to indicate the microcode version used. Below is an example of the microcode credits from Mario Kart 64:
RSP Gfx ucode F3DEX 0.95 Yoshitaka Yasumoto Nintendo RSP Gfx ucode F3DLX 0.95 Yoshitaka Yasumoto Nintendo
- Some games will contain these filenames:
reverb.c save.c sprawdma.c sirawread.c sirawwrite.c sirawdma.c pirawread.c epirawread.c
- A couple of common audio-related strings:
N64 PtrTablesV2 N64 WaveTables
GameCube
- All GameCube games will contain these strings within the executables:
- Apploader strings, which are very common in most games.
- These will often be printed to console, if one is connected (e.g. via the Dolphin emulator).
- A list of controllers, including Nintendo 64 controllers plus peripherals and unreleased controllers like the Steering Wheel.
- A warning about using the PAL debug setting:
! ! ! C A U T I O N ! ! ! This TV format "DEBUG_PAL" is only for temporary solution until PAL DAC board is available. Please do NOT use this mode in real games!!!
- Games that use the GameCube-Game Boy Advance Link Cable will contain a copy of the Game Boy Advance BIOS in the executable which contains the hidden credit
// Coded by Kawasedo
.
Wii
- All Wii games will contain these strings within the executable, in addition to those seen in GameCube games:
- A list of development units.
- IOS strings, including error strings.
- Wii Remote Bluetooth connection debugging messages.
- In almost every Wii game, messages are sent to the console on the initialization (startup) of the game. Most of the messages aren't unique to any game, and are used in other Wii games. The below fragment, for example, came from Wii Sports Resort:
App_MEMalloc\n App_MEMfree\n __wudSyncFlushCallback() : %d, Sync: %d\n Nintendo RVL-CNT Nintendo RVL-WBC Found the registered WBC in database\n Removed WBC data\n new entry index is %d\n %d devices is stored into SC.\n NANDOpen. [%d]\n NANDSeek. [%d]\n NANDWrite. [%d]\n NANDClose. [%d]\n Pairing Done\n write stored link key\n addr : %02x:%02x:%02x:%02x:%02x:%02x\n key : %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n Cancel searching because 4 connections exist.\n /title/00010004/52464e4a/data/RPHealth.dat WbcSaveData: %s\n WBC to WiiFit\n %02x %02x %02x %02x %02x %02x\n %02x %02x %02x %02x %02x %02x %02x %02x\n %02x%02x%02x%02x\n WARNING: Illigal status\n __wudDeleteFlushCallback() : %d, Delete: %d\n hci_version : %02x\n hci_revision : %04x\n lmp_version : %02x\n lmp_subversion: %04x\n manufacturer : %04x\n ==> 2045 firmware ver.002.003.014.%d\n __wudInitFlushCallback() : %d, Init: %d\n name : %s\n Nintendo RVL-CNT-01 Error: the workarea for synchronizing WBC pairing information is not allocated.\n NANDInit. [%d]\n CRC = %d:%08x\n CRC' = %d:%08x\n CRC Error on WiiFit SaveData.\n WiiFit does not register WBC yet.\n LinkKey saved in WiiFit SaveData is invalid.\n WBC from WiiFit\n __wudShutdownFlushCallback() : %d, Shutdown: %d\n __wudClearControlBlock\n BTA_Init() is started\n BTA_Init() is done\n WUDShutdown()\n WUDSetSyncDeviceCallback\n WUDSetClearDeviceCallback\n WUDStartSyncSpDevice()\n WUDStartClearDevice()\n WUDSetDisableChannel()\n BTM_SetAfhChannels() : %d\n WUDSetHidRecvCallback()\n WUDSetHidConnCallback()\n Initialize the BCM2045 firmware complete.\n Reset again!\n Install the patches\n Download the patch codes [%d]\n RemovePatch Callback\n SuperPeekPoke Callback\n RemovePatch\n __wudAppendRuntimePatch()\n SuperPeekPoke\n start __wudInitSub()\n BTA_DmAddDevice(): %d\n BTA_HhAddDev()\n WUDiRemoveDevice : \n handle : %d, addr : %02x:%02x:%02x:%02x:%02x:%02x\n remove device info from database.\n BTA_HhRemoveDev()\n handle : %d\n BTA_DmRemoveDevice(): %d\n WARNING: USB_CLOSE_FAILURE!\n __wudCleanupStackCallback: BTA_ENABLE_EVT\n host : %02x:%02x:%02x:%02x:%02x:%02x\n BTA_DISABLE_EVT\n BTA_DM_PIN_REQ_EVT\n BTA_DM_AUTH_CMPL_EVT\n addr : %02x:%02x:%02x:%02x:%02x:%02x\n key : %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n result = %d\n BTA_DM_AUTHORIZE_EVT\n BTA_DM_LINK_UP_EVT\n addr : %02x:%02x:%02x:%02x:%02x:%02x\n %s --> %02x:%02x:%02x:%02x:%02x:%02x\n not paired 4 links exist BTA_DM_LINK_DOWN_EVT\n result: %d\n this device in not paired\n WARNING: link num count is reset.\n BTA_DM_SIG_STRENGTH_EVT\n BTA_DM_BUSY_LEVEL_EVT\n INQUIRY RESULT: %02x:%02x:%02x:%02x:%02x:%02x %02x%02x%02x %d\n INQUIRY_COMPLETED\n DISCOVER RESULT: %02x:%02x:%02x:%02x:%02x:%02x %s (%04x)\n DISCOVER COMPLETED\n SEARCH CANCEL\n\n Warning: Search Callback returns invalid event\n __wudProcSyncEvent()\n __wudProcDeleteEvent()\n MODULE FATAL ERROR\n __wudDeviceStatusEventStackCallback\n ---- WARNING: USB FATAL ERROR! ----\n BTM_CB_EVT_RETURN_LINK_KEYS\n BD_ADDR: %02x:%02x:%02x:%02x:%02x:%02x\n LINKKEY: %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n this device is not stored in NAND\n LAST: %02x:%02x:%02x:%02x:%02x:%02x\n BTM_CB_EVT_READ_STORED_LINK_KEYS\n status: %d max_keys: %d num_keys: %d\n BTM_CB_EVT_WRITE_STORED_LINK_KEYS\n status: %d num_keys: %d\n BTM_CB_EVT_DELETE_STORED_LINK_KEYS\n WARNING: no entry is deleted\n Unknown event\n __wudPowerMangeEventStackCallback\n hci_status = %d\n Unknown device is connected and changes the connection type!!!!\n addr = %02x:%02x:%02x:%02x:%02x:%02x, status = %d\n _WUDEnableTestMode\n _WUDStartSyncDevice()\n _WUDDeleteStoreDevice()\n dev number = %d\n Not Found Found the registered WBC\n Removed\n Not Found WBC\n BTA_HH_ENABLE_EVT\n BTA_HH_DISABLE_EVT\n BTA_HH_OPEN_EVT\n handle: %d, addr: %02x:%02x:%02x:%02x:%02x:%02x\n Nintendo RVL-CNT error code: %d\n BTA_HH_CLOSE_EVT\n device handle : %d status = %d\n BTA_HH_ADD_DEV_EVT\n result: %d, handle: %d, addr: %02x:%02x:%02x:%02x:%02x:%02x\n BTA_HH_RMV_DEV_EVT\n WARNING: link num count is modified.\n BTA_HH_SET_RPT_EVT\n BTA_HH_GET_RPT_EVT\n BTA_HH_SET_PROTO_EVT\n BTA_HH_GET_PROTO_EVT\n BTA_HH_SET_IDLE_EVT\n BTA_HH_GET_IDLE_EVT\n BTA_HH_GET_DCSP_EVT\nBTA_HH_VS_UNPLUG_EVT\n
These messages follow the printf formatting.
- These will often be printed to console, if one is connected (e.g. via the Dolphin emulator).
Wii U
- Multiple Wii games released on the eShop have empty folders removed from the filesystem and a few bytes in the dol changed.
Sega
Mark III/Master System/Game Gear
- All officially licensed games contain the following string at 0x7FF0 in the ROM. This string is read by the console's BIOS and will refuse to boot the game if not found.
TMR SEGA
Mega CD/Sega CD
- Any game using the Cinepak codec will contain a string indicating the version used.
CINEPAK VER 1.3</pre ====32X==== * Module name from the "MARS User Header": <pre>MARS CHECK MODE
- Words sent and checked during Mega Drive and SH-2 synchronization:
M_OK S_OK SDER SQER
Sinclair Research
ZX Spectrum
- Any game using Speedlock as its protection will have this message near the beginning of the game's data:
SPEEDLOCK Protection System © DJL Software & D. Aubrey Jones 1984 - Tel:0793 724317 * Government Health Warning - Attempting to crack SPEEDLOCK can damage your sanity!
Sony
PlayStation
- Virtually every PlayStation game has a list of functions from the standard library.
The region string can usually be found in the game executable's first lines of text.
Sony Computer Entertainment Inc. for North America area Sony Computer Entertainment Inc. for Japan area
Games that use Multitap will include the following string:
PS-X Control TAP Driver Ver 3.0
Common commands visible in most games via the tty debug console or text in the game files.
$Id: sys.c,v 1.104 1995/09/01 02:20:49 ResetGraph:jtb=%08x,env=%08x ResetGraph(%d)... SetGraphReverse(%d)... SetGraphDebug:level:%d,type:%d reverse:%d SetGrapQue(%d)... DrawSyncCallback(%08x)... SetDispMask(%d)... DrawSync(%d)... %s:bad RECT(%d,%d)-(%d,%d) %s:ClearImageLoadImageStoreImageMoveImageClearOTag(%08x,%d)... ClearOTagR(%08x,%d)... DrawOTag(%08x)... PutDrawEnv(%08x)... PutDispEnv(%08x)... GPU timeout:que=%d,stat=%08x,chcr=%08x,madr=%08x,func=(%08x)(%08x,%08x) $Id: intr.c,v 1.71 1995/08/29 11:01:44 suzu Exp $unexpected interrupt(%04x) intr timeout(%04x:%04x) DMA bus error: code=%08x VSync: timeout SPU:T/O [%s] wait (reset)wait (wrdy H -> L)wait (dmaf clear/W)wait (ioctl/IRQ) Can't Open Sequence data any more This is not SEP Data. This is not SEQ Data. This is an old SEQ Data Format. MDEC_rest:bad option(%d) MDEC_in_syncMDEC_out_sync DMA=(%d,%d), ADDR=(0x%08x->0x%08x) FIFO=(%d,%d),BUSY=%d,DREQ=(%d,%d), RGB24=%d,STP=%d %s timeout: MDEC_vlec: invalid VLC ID noneCdlReadSCdlSeekPCdlSeekLCdlGetTDCdlGetTNCdlGetlocPCdlGetlocL?CdlSetmodeCdlSetfilterCdlDemuteCdlMuteCdlReset CdlPauseCdlStopCdlStandbyCdlReadNCdlBackwordCdlForwardCdlPlayCdlSetlocCdlNopCdlSyncDiskErrorDataEndAcknowledge CompleteDataReadyNoIntr%s:(%s) timeout Sync=%s, Ready=%s %s: DiskError(%02x) CDROM: unknown intr(%d) CD_syncCD_ready%s... %s: no param CD_cwCD open(%02x)... CD_init:addr=%08x CD read retry %2d(%02x:%02x:%02x) CD_readCD_datasyncCdInit: Init failed %s: path level (%d) error %s: dir was not found CdSearchFile: disc error CdSearchFile: searching %s... %s: found %s: not found CD_newmedia: Read error in cd_read(PVD) CD001CD_newmedia: Disc format error in cd_read(PVD) CD_newmedia: Read error (PT:%08x) CD_newmedia: sarching dir.. %08x,%04x,%04x,%s CD_newmedia: %d dir entries found CD_cachefile: dir not found CD_cachefile: searching... ...(%02x:%02x:%02x) %8d %s CD_cachefile: %d files found track=%d,%d CdGetToc2: %02x:%02x:00 CdGetToc2: error DMA STATUS ERROR %x 0123456789abcdef0123456789ABCDEF
- Some PlayStation games released after 1998 contain some form of copy protection/anti-piracy measures, in order to curb modchips and illegal copies that were instrumental in the spread of piracy on the system. Sony developed two systems for protecting games: Anti-Modchip and LibCrypt.
Others
Adobe Flash
- For games published on Newgrounds, if it includes medals/achievements, chances are a couple of placeholder text strings can be found:
NEWGROUNDS API CONNECTOR
Medal Popup Place this clip on the root of your movie, spanning any frames where medals are called. (this clip is hidden)
- If it includes any ads, this placeholder string can also be found:
Flash Ad
Regional Differences
General
- Publisher and licensing information can change between games. Only put this on a page if it's a significant change.
- The European versions of some games will contain a language option not found in the other versions of the game. This is more common on consoles that lack a built-in language setting like the Nintendo 64 or Game Boy Advance.
- The European versions can also have more languages or a different set of languages compared to other versions of games.
- Minor grammatical changes between regions. Only put this on a page if it's a significant change.
- Japanese games may include an option to show or hide furigana above kanji. An option like this will no doubt be absent from any other version.
- PAL versions of games will sometimes have an option to choose between 50Hz or 60Hz. This is most commonly seen in Dreamcast and GameCube games.
- Platform names will be changed accordingly by region. An example of this can be seen in Kirby's Dream Land 3:
Japan | International |
---|---|
Arcade
- It's common for games made for the US market between 1989 and 2000 to have a "Winners Don't Do Drugs" screen, due to a deal between then-FBI Director William S. Sessions and the American Amusement Machine Association. This is also true for "Recycle It, Don't Trash It!" and "AIDS is real. Protect Yourself", although these are comparatively much less common. Only noteworthy if it goes unused or was added in a later revision, as was the case with Cabal. There may also be AAMA parental advisory screens on US-market arcade games, especially on titles released during the aforementioned timespan.
- Japanese games will have a screen warning against exporting it outside of Japan. Screens like these can sometimes be removed, but are often changed to the appropriate region that game was distributed in.
Nintendo
- The Nintendo logo can be blue or silver in Japanese (and sometimes Korean, Asian, or Chinese) versions of games, but is usually red outside of Japan.
- Several games, especially during the NES and SNES eras, will add strings such as "Licensed by Nintendo of America" (for the US market) or "Licensed by Nintendo" (for the European market) to the copyright and/or title screens:
US | Europe |
---|---|
Sony
- In the Japanese versions of many games, you press ◯ to confirm and ✕ to cancel. For the international versions, it's vice versa (in most PS1 and PS2 games, however, you may press △ instead to cancel).
- Some PS1/PS2 games, such as those in the Gran Turismo series (until Gran Turismo 4), use both ◯/✕ to confirm and △/◻ to cancel.
- From the PSP and PS3 onwards, games can query the console for the appropriate "OK" button, however this is rarely implemented, and where it is - it may be inconsistently so (for example, using the system's default for standardized save/load dialogs and a hardcoded default everywhere else).
- On Japanese/Asian PS4 units with firmware v6.50 or newer, it is possible to officially select which button stands for "OK", with caveats that effects within games rely on the "OK" button querying mechanism mentioned above.
- European versions of PlayStation games (and by extension some US releases - and even at least one Japanese release - that originated in Europe, such as earlier Psygnosis titles) may have an anti-piracy warning before any publisher/developer logos:
Anti-Piracy
General
- A common method of anti-piracy is still to have the game lock up on a black screen if the copy protection checks fail.
- All forms of media, manual, or goodie checks present on home computer games (other than ones that react to being subverted). If the game is later patched or rereleased, it is also common that said copy protections get removed.
Microsoft
- Every game has a 14 MB sector readable by any regular DVD drive, and that is the only one that can be read by most. This sector contains a single movie with an Xbox animation (seen to the right) and a disclaimer screen.
Xbox 360
- Similar to the above, but ~60 MB this time.
Sega
Genesis/Mega Drive
- Many games will lock up on a solid red screen on boot if the checksum fails.
Sony
PlayStation
- Many games released from 1998 onward will display an error screen if a modchip is detected - .typically by attempting to read the region code, specially encoded in the physical shape of the data track near its beginning only, elsewhere on the disc. "Non-stealth" modchips (including PS2 modchips that lack a “stealth mode" for PS1 games or have it turned off) would inject the region code data throughout instead of only at the beginning, so random checks would be done to ensure that the region code data was not still being injected. If it was, the game would be shut down immediately and abruptly cut to the error screen. "Stealth" modchips avoid this by only injecting data when the game calls for it, and patches existed from warez groups to prevent the error screen from coming up on pirated copies regardless of what modchip was used. If music was streamed from the disc in "Red Book" format, it would continue playing, otherwise all audio would cut off too.
Early Japanese releases, such as PoPoRoGue, simply featured a red hand sign, which would serve as the namesake for the Japanese term "Red Hand Protect", or RHP for short. Later releases feature a slightly larger "No go" sign with Japanese or English text informing the user that the console may have been modified. The English version adds an additional line instructing the user to call the phone number for Sony Computer Entertainment America, where the user would be instructed on how to remove a modchip without a soldering iron and were also given the option to send their console back to Sony to have the modchip removed.
Japan (Red Hand) | Japan (Later) | English |
---|---|---|
|
強制終了しました。 本体が改造されている おそれがあります。 |
SOFTWARE TERMINATED CONSOLE MAY HAVE BEEN MODIFIED CALL 1-888-780-7690 |
- These are only notable if region-exclusive, or if a region uses the wrong screen (such as in Dino Crisis or Um Jammer Lammy.)
- As this method would deliberately and unfairly affect users of modchips (a third-party accessory) regardless of the legitimacy of the game disc, presumably conflicting with consumer rights in EU nations, it was eventually rejected by SCEE, which promoted the LibCrypt protection instead (based on non-standard subchannel data), which can cause the game to crash, freeze, or perform various other tricks if a pirated copy of a game is detected. This is most common with European versions of games, such as in Ape Escape where it disables controller input on the main menu. Many LibCrypt games are also known to cause issues if they are played on a PlayStation 3.
PlayStation 2
- Some games that are burned onto a disc will sometimes lead to the Red Screen.
Others
Adobe Flash
- Games can check if they are running on a site other than the one(s) intended. If the check fails, they will display a message like this one from Papa's Pizzeria: