Color $0D games: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
(→‎Tests: 240p test suite)
(→‎Effects: Add RGB PPU information)
 
(17 intermediate revisions by 8 users not shown)
Line 6: Line 6:
! style="width: 18%" | Game
! style="width: 18%" | Game
! class="unsortable" | Notes
! class="unsortable" | Notes
|-  
|-
| ''Contra 100 in 1'' || Uses both for background color and one of the sprites' color; to apply a patch, change values at those offsets in ROM from $0D to $0F:
$388B, $388F, $3893, $3897, $389B, $389C, $389F, $38A3, $38A7
|-
| ''Contra 168 in 1'' || Uses both for background color and one of the sprites' color; to apply a patch, change values at those offsets in ROM from $0D to $0F:
$2451, $2455, $2459, $245D, $2461, $2462, 2465, $2469, $246D
|-
| ''Bee 52'' ||
| ''Bee 52'' ||
|-
| ''Castelian'' ||
|-
| ''Cybernoid'' || $0D is used as the background color.
|-
|-
| ''The Fantastic Adventures of Dizzy'' ||
| ''The Fantastic Adventures of Dizzy'' ||
|-
| ''FireHawk'' (USA) || Used in both the background and sprites. The European release (with NTSC video detection) corrects this.
|-
|-
| ''Game Genie'' || The code entry screen uses it for its background.
| ''Game Genie'' || The code entry screen uses it for its background.
|-
|-
| ''The Immortal'' || Many screens in this game use it as the background colour.
| ''The Immortal'' || Also uses all three de-emphasis bits to compensate for the the user cranking up the TV set's brightness so that regular black ($xE/$xF) can be used [https://youtu.be/Gsv3ci7ZChM as a darker shade of gray while color $0D is used as a black background color].
|-
| ''Indiana Jones and the Last Crusade'' (Taito) || Used as the background color in the motorcycle level.
|-
|-
| ''Indiana Jones and the Last Crusade'' (Ubisoft) ||
| ''Indiana Jones and the Last Crusade'' (Ubisoft) ||
|-
|-
| ''Maniac Mansion'' (US) ||  
| ''Maniac Mansion'' (USA) ||  
|-
|-
| ''Micro Machines'' ||
| ''Micro Machines'' ||
|-
| ''MIG-29 Soviet Fighter '' ||
|-
|-
| ''Quattro Sports'' ||
| ''Quattro Sports'' ||
Line 25: Line 41:
| ''Quattro Adventures'' ||
| ''Quattro Adventures'' ||
|-
|-
| ''Skate or Die 2'' ||
| ''Skate or Die 2'' || Used as the background color during the introduction cutscene sequence.
|-
|-
| ''The Super Shinobi'' || Unlicensed clone of Shinobi III.
| ''The Super Shinobi'' || Unlicensed clone of Shinobi III.
Line 31: Line 47:
| ''Teenage Mutant Ninja Turtles'' || Uses it for black outlines on sprites, the lack of large areas of this color mitigates the problem.
| ''Teenage Mutant Ninja Turtles'' || Uses it for black outlines on sprites, the lack of large areas of this color mitigates the problem.
|-
|-
| ''The Three Stooges'' || Uses $xD colors that get turned to $0D during fades
| ''The Three Stooges'' || Uses $xD colors that are turned to $0D during fades.
|}
|}


== Effects ==
== Effects ==
[[File:Color_0d_-_contra_168.jpg|thumb|Modern LCD TV and modern famiclone (probably RS-35) showing distorded image in ''Contra 168-in-1'' cartridge]]
[[File:Color_0d_-_super_robin_hood.jpg|thumb|Different modern LCD TV with digital famiclone (connected via HDMI) shows $0D color to be displayed as gray in ''Super Robin Hood'' game]]
[[File:Color_0d_-_fantblue.gif|frame|Modern 29" CRT TV with IQ502 rev 2 (UM6561 nes-on-chip) famiclone shows periodic loss of v-sync when the paper unrolls at the beginning of ''Fantastic Adventures of Dizzy'' game. Note that this TV has no problems with displaying $0D colors with different famiclones, and even using this famiclone - this is the only moment in this game that the problem manifests, though this game uses this color all the time]]
[[File:Color_0d_-_ultimate_stuntman.gif|frame|Same TV and console as above, No problems in the beginning screenshots, where $0d is used as universal background colors, while permanent v-sync loss during game, where $0d is used as blinking car's shadow color in ''Ultimate Stuntman'' game.]]


Because the signal created by $0D is outside the specifications for the video signal, there is a lot of variation in how display devices handle it. Here are some possible effects that may be seen when using $0D:
Because the signal created by $0D is outside the specifications for the video signal, there is a lot of variation in how display devices handle it. Here are some possible effects that may be seen when using $0D:
* $0D appears the same black as the other black colors (e.g. $0F).
* $0D appears the same black as the other black colors (e.g. $0F).
* $0D appears slightly darker than other blacks.
* $0D appears slightly darker than other blacks.
* $0D appears as gray.
* The device renormalizes the range when $0D appears, slightly brightening all other colours while it is onscreen.
* The device renormalizes the range when $0D appears, slightly brightening all other colours while it is onscreen.
* Wobbly or distorted image from loss of horizontal blanking stability.
* Wobbly or distorted image from loss of horizontal blanking stability (either permanent or periodic)
* Loss of vertical blanking stability.
* Total loss of picture.
* Total loss of picture.
These effects are more likely to occur when color $0D is used with the de-emphasis bits enabled, such as in ''The Immortal'', as seen in these [https://youtu.be/3fhyX3HdVcg example] [https://youtu.be/4Kli09cSGOU videos].
On consoles with an RGB PPU like the Sharp Famicom Titler or C1 TV, Color $0D is simply a "normal" black palette entry identical to $0F, so systems with an RGB PPU are immune to causing video output problems.
== Workarounds ==
* Patch the game code to replace all the $0D writes with $0F. This likely requires changes to many bytes in the ROM, so a Game Genie (limited to 3 changes) would not be sufficient. Instead, updated ROMs or a more capable pass-through patching device would likely be required
* If your TV has digital inputs (for example - HDMI), use RCA to HDMI adapter, whose analog to digital converter might cope better with the out-of-spec video signal
* Modify the console to use a different video output stage that adjusts the voltages so that the TV may accept it, such as by omitting the NPN transistor follower part of the video amplifier. However, the TV may ignore this voltage offset
* Change your TV, console and/or video adapter (if you are using one)


== Tests ==
== Tests ==

Latest revision as of 13:19, 25 February 2024

On an NES, the palette color $0D causes the signal to drop below the normal black level. This low voltage signal is sometimes mistaken by televisions for blanking signals, which can cause an unstable picture, or total picture loss on some devices. Other devices seem to process with signal without problem.

Games

Game Notes
Contra 100 in 1 Uses both for background color and one of the sprites' color; to apply a patch, change values at those offsets in ROM from $0D to $0F:

$388B, $388F, $3893, $3897, $389B, $389C, $389F, $38A3, $38A7

Contra 168 in 1 Uses both for background color and one of the sprites' color; to apply a patch, change values at those offsets in ROM from $0D to $0F:

$2451, $2455, $2459, $245D, $2461, $2462, 2465, $2469, $246D

Bee 52
Castelian
Cybernoid $0D is used as the background color.
The Fantastic Adventures of Dizzy
FireHawk (USA) Used in both the background and sprites. The European release (with NTSC video detection) corrects this.
Game Genie The code entry screen uses it for its background.
The Immortal Also uses all three de-emphasis bits to compensate for the the user cranking up the TV set's brightness so that regular black ($xE/$xF) can be used as a darker shade of gray while color $0D is used as a black background color.
Indiana Jones and the Last Crusade (Taito) Used as the background color in the motorcycle level.
Indiana Jones and the Last Crusade (Ubisoft)
Maniac Mansion (USA)
Micro Machines
MIG-29 Soviet Fighter
Quattro Sports
Quattro Adventures
Skate or Die 2 Used as the background color during the introduction cutscene sequence.
The Super Shinobi Unlicensed clone of Shinobi III.
Teenage Mutant Ninja Turtles Uses it for black outlines on sprites, the lack of large areas of this color mitigates the problem.
The Three Stooges Uses $xD colors that are turned to $0D during fades.

Effects

Modern LCD TV and modern famiclone (probably RS-35) showing distorded image in Contra 168-in-1 cartridge
Different modern LCD TV with digital famiclone (connected via HDMI) shows $0D color to be displayed as gray in Super Robin Hood game
Modern 29" CRT TV with IQ502 rev 2 (UM6561 nes-on-chip) famiclone shows periodic loss of v-sync when the paper unrolls at the beginning of Fantastic Adventures of Dizzy game. Note that this TV has no problems with displaying $0D colors with different famiclones, and even using this famiclone - this is the only moment in this game that the problem manifests, though this game uses this color all the time
Same TV and console as above, No problems in the beginning screenshots, where $0d is used as universal background colors, while permanent v-sync loss during game, where $0d is used as blinking car's shadow color in Ultimate Stuntman game.


Because the signal created by $0D is outside the specifications for the video signal, there is a lot of variation in how display devices handle it. Here are some possible effects that may be seen when using $0D:

  • $0D appears the same black as the other black colors (e.g. $0F).
  • $0D appears slightly darker than other blacks.
  • $0D appears as gray.
  • The device renormalizes the range when $0D appears, slightly brightening all other colours while it is onscreen.
  • Wobbly or distorted image from loss of horizontal blanking stability (either permanent or periodic)
  • Loss of vertical blanking stability.
  • Total loss of picture.

These effects are more likely to occur when color $0D is used with the de-emphasis bits enabled, such as in The Immortal, as seen in these example videos.

On consoles with an RGB PPU like the Sharp Famicom Titler or C1 TV, Color $0D is simply a "normal" black palette entry identical to $0F, so systems with an RGB PPU are immune to causing video output problems.

Workarounds

  • Patch the game code to replace all the $0D writes with $0F. This likely requires changes to many bytes in the ROM, so a Game Genie (limited to 3 changes) would not be sufficient. Instead, updated ROMs or a more capable pass-through patching device would likely be required
  • If your TV has digital inputs (for example - HDMI), use RCA to HDMI adapter, whose analog to digital converter might cope better with the out-of-spec video signal
  • Modify the console to use a different video output stage that adjusts the voltages so that the TV may accept it, such as by omitting the NPN transistor follower part of the video amplifier. However, the TV may ignore this voltage offset
  • Change your TV, console and/or video adapter (if you are using one)

Tests

  • Palette test ROM - Displays NES palette, and can toggle $0D display.
  • NESPix - Native graphics editor that allows use of $0D, and can test it in various visual arrangements.
  • 240p test suite - TV testing program. Test cards with $0D include PLUGE, SMPTE color bars, Solid color screen, and IRE. PLUGE also includes emphasized $0D.

See also