Difference between revisions of "Optimal timings"

From Classic Console Upscaler Wiki
Jump to navigation Jump to search
m
 
(55 intermediate revisions by 10 users not shown)
Line 1: Line 1:
 +
The advanced timing options on the OSSC allow for fine control over how the output image is generated and how the analogue signal is sampled. In some cases it is possible to adjust these values to perfectly match the incoming analogue signal from a console. This results in a very sharp image (possibly even too sharp for many people's tastes).
  
 +
The table below contains some preliminary timings for popular consoles, it should be considered a work in progress, do not be surprised if further fine tuning is required. You will almost always be required to fine tune the sampling phase after making these adjustments.
  
 
{| class="wikitable"
 
{| class="wikitable"
Line 10: Line 12:
 
|-
 
|-
 
|NES 256x240 @60.10Hz
 
|NES 256x240 @60.10Hz
|341 / 262 / @5.37MHz(NTSC) [http://wiki.nesdev.com/w/index.php/NTSC_video][http://wiki.nesdev.com/w/images/d/d1/Ntsc_timing.png]
+
|341* / 262 / @<u><span title="21.477272MHz ÷ 4">5.37MHz</span></u>(NTSC) [http://wiki.nesdev.com/w/index.php/NTSC_video][http://wiki.nesdev.com/w/images/d/d1/Ntsc_timing.png][http://problemkaputt.de/everynes.htm]
 
|256x240
 
|256x240
 
|
 
|
| To reduce jitter in couple topmost lines, try disabling ""Allow TVP HPLL2x" and/or using mask.
+
| To reduce jitter in couple topmost lines, try disabling ""Allow TVP HPLL2x" and/or using mask.<br />* one scanline is typically 1 dot shorter on every other frame
 
| <pre>Modeline "ossc_nes_1280x720_60.08"  80.55  1280 1385 1510 1705  720 729 738 786  -hsync -vsync</pre>
 
| <pre>Modeline "ossc_nes_1280x720_60.08"  80.55  1280 1385 1510 1705  720 729 738 786  -hsync -vsync</pre>
 
|-
 
|-
|SNES 256x239/224 @60.10Hz
+
|SNES 256x240/224 @60.10Hz
|341 / 262 / @5.37MHz(NTSC) @5.32MHz(PAL) [http://problemkaputt.de/fullsnes.htm#snestiminghvcounters]
+
|341* / 262 / @<u><span title="21.477272MHz ÷ 4">5.37MHz</span></u>(NTSC) @<u><span title="(3 ÷ 10) × 17.734475MHz">5.32MHz</span></u>(PAL) [http://problemkaputt.de/fullsnes.htm#snestiminghvcounters]
 
|256x240
 
|256x240
 
|
 
|
 +
| * one scanline is typically 1 dot shorter on every other frame
 +
| <pre>Modeline "ossc_snes_1280x720_60.08"  80.55  1280 1385 1510 1705  720 729 738 786  -hsync -vsync</pre>
 +
|-
 +
|Mega Drive 320x224 @59.92Hz
 +
|320×8 + 86×10 (?) / 262 / @53.693175MHz(NTSC) @53.203425MHz(PAL)
 +
|320x240
 +
|H.samplerate=427.50
 +
|[https://www.youtube.com/watch?v=1HkBblIhuXw Video tutorial]
 +
|
 +
|-
 +
|Mega Drive 256x224 @59.92Hz
 +
|342 / 262 / @<u><span title="53.693175MHz ÷ 10">5.37MHz</span></u>(NTSC) @<u><span title="53.203425MHz ÷ 10">5.32MHz</span></u>(PAL) [http://md.squee.co/VDP#H.2FV_Counter][http://www.emulationzone.org/projects/s&k/reference/genhw.txt]
 +
|256x240
 +
|H.samplerate=342
 +
|[https://youtu.be/1HkBblIhuXw?t=22m23s Video tutorial]
 +
|
 +
|-
 +
|N64 320x237 @59.82Hz
 +
|773.5 / 263 / @<u><span title="((17 ÷ 5) ÷ 4) × 14.31818MHz">12.17MHz</span></u>(NTSC) @<u><span title="((14 ÷ 5) ÷ 4) × 17.734475MHz">12.41MHz</span></u>(PAL) [http://www.datasheets360.com/part/detail/mx8350/-7133688394404043430/?alternatePartManufacturerId=0][https://assemblergames.com/threads/direct-hdmi-output-for-n64-and-other-consoles.42764/page-2]
 +
|320x240
 +
|H.samplerate=386.75, H.synclen=22, H.backporch=36
 +
|Every other visible dot (of 640) is interpolated
 
|
 
|
| <pre>Modeline "ossc_snes_1280x720_60.08"  80.55  1280 1385 1510 1705  720 729 738 786  -hsync -vsync</pre>
 
 
|-
 
|-
|Mega Drive 320x224 @60Hz
+
|PlayStation 320x224 @59.82Hz
|427 / 262 / @?
+
|426.625 / 263 / @<u><span title="exact frequency varies between boards">6.71MHz</span></u>(NTSC) @<u><span title="exact frequency varies between boards">6.65MHz</span></u>(PAL) [http://problemkaputt.de/psx-spx.htm#gputimings] [http://forum.fobby.net/index.php?t=msg&&th=1117&goto=4132#msg_4132]
 
|320x240
 
|320x240
|H.samplerate=427
+
|H.samplerate=426.60
 +
|Example games: Chrono Cross, Final Fantasy VII & VIII, Klonoa
 
|
 
|
 +
|-
 +
|PlayStation 384x224 @59.82Hz
 +
|487.571 / 263 / @<u><span title="exact frequency varies between boards">7.67MHz</span></u>(NTSC)
 +
|384x240
 +
|H.samplerate=487.55, H.synclen=63, H.backporch=18
 +
|Example games: Ape Escape, Grandia, Oddworld, Tomb Raider 1 & 2
 
|
 
|
 
|-
 
|-
|Mega Drive 256x224 @60Hz
+
|PlayStation 256x224 @59.82Hz
|341 / 262 / @?
+
|341.30 / 263 / @<u><span title="exact frequency varies between boards">5.369MHz</span></u>(NTSC)
 
|256x240
 
|256x240
 +
|H.samplerate=341.30
 +
|Example games: Adventure of Little Ralph, Castlevania SotN (in-game only), Tactics Ogre
 +
|
 +
|-
 +
|PlayStation 512x224 @59.82Hz
 +
|682.6 / 263 / @<u><span title="exact frequency varies between boards">10.74MHz</span></u>(NTSC)
 +
|512x240
 +
|H.samplerate=682.60
 +
|Example games: Crash Bandicoot, Soul Reaver, Spyro, Tekken
 
|
 
|
 +
|-
 +
|PlayStation 600x480i @60Hz
 +
|910 / 525 / @<u><span title="((1820 ÷ 910) ÷ 2) × 14.31818MHz">14.32MHz</span></u>(NTSC)
 +
|480i / 576i
 +
|Video LPF = 9MHz, H.samplerate=910, H. synclen = 62, H. backporch = 98, H. active = 600
 +
|Example game: Tobal 1 and 2 (stretched from 512x480i to 600x480i)
 +
|
 +
|-
 +
|PS2 512x320i @59.94Hz
 +
|686.4 / 525 / @10.8MHz(NTSC)
 +
|480i / 576i
 +
|H.active=512, H.samplerate=686.40, H.synclen=44, H.backporch=84
 +
|Example games: Megaman X7, Castlevania Lament of Innocence
 
|
 
|
 +
|-
 +
|PS2 640x400i @59.94Hz
 +
|858 / 525 / @<u><span title="exact frequency varies between boards">6.71MHz</span></u>(NTSC) @<u><span title="exact frequency varies between boards">6.65MHz</span></u>(PAL)
 +
|480i / 576i
 +
|H.active=640, H.synclen=44, H.backporch=116
 +
|Example games: GTA III, Crash Bandicoot Wrath of Cortex
 +
|
 +
|-
 +
|PS2 256x240 @59.94Hz
 +
|858 / 263 / @6.30MHz
 +
|256x240
 +
|H.samplerate=858
 +
|Example games: FCEU, SNESticle and some emulators
 
|
 
|
 
|-
 
|-
|N64 320x240 @60Hz
+
|Saturn 320x240 @60Hz
|773.25 (?) / 262 / @12.18MHz(NTSC) [http://assemblergames.com/l/threads/direct-hdmi-output-for-n64-and-other-consoles.42764/page-2]
+
|427 / 263 / @<u><span title="((1708 ÷ 910) ÷ 4) × 14.31818MHz">6.72MHz</span></u>(NTSC) [http://dreamjam.co.uk/emuviews/sat/sattech.txt][https://i.imgur.com/AaNN2Zh.png]
 
|320x240
 
|320x240
|H.samplerate=387, H.synclen=22, H.backporch=36
+
|Video LPF = 9MHz, H.samplerate=427
|Every other visible dot (of 640) is interpolated
+
|Example game: World Heroes Perfect (has in-game letterboxing)
|
+
|  
 
|-
 
|-
|PSX 320x240 @60Hz
+
|Saturn 352×240 @60Hz
|426.625 (?) / 263 / @6.71MHz(NTSC) @6.65MHz(PAL) [http://problemkaputt.de/psx-spx.htm#gputimings] [http://forum.fobby.net/index.php?t=msg&&th=1117&goto=4132#msg_4132]
+
|455 / 263 / @<u><span title="((1820 ÷ 910) ÷ 4) × 14.31818MHz">7.16MHz</span></u>(NTSC)
 
|320x240
 
|320x240
| -
+
|Video LPF = 9MHz, H.samplerate=455, H. active = 352
 +
|Example game: All of the various Capcom arcade fighting game ports
 
|  
 
|  
 +
|-
 +
|Saturn 704x480i @60Hz
 +
|910 / 525 / @<u><span title="((1820 ÷ 910) ÷ 2) × 14.31818MHz">14.32MHz</span></u>(NTSC)
 +
|480i / 576i
 +
|Video LPF = 9MHz, H.samplerate=910, H. synclen = 62, H. backporch = 98, H. active = 704
 +
|Example game: Virtua Fighter 2 (stage areas)
 
|  
 
|  
 
|-
 
|-
|Saturn 320x240 @60Hz
+
|Neo-Geo MVS 320x240 @59.19Hz
|427 / 262 / @6.71MHz [http://dreamjam.co.uk/emuviews/sat/sattech.txt]
+
|384 / 264 / @6.00MHz [https://wiki.neogeodev.org/index.php?title=Display_timing]
 
|320x240
 
|320x240
|H.samplerate=427
+
|H.samplerate=384, H.backporch=25
 
|
 
|
 
|  
 
|  
 
|-
 
|-
|DC VGA @60Hz
+
|DC VGA 720x480 @60Hz
 
|858 / 525 / @27MHz [http://mc.pp.se/dc/pvr.html]
 
|858 / 525 / @27MHz [http://mc.pp.se/dc/pvr.html]
 
|480p
 
|480p
|H active=640
+
|H active=720
 +
|Outputs games at 640x480 in a frame of 720x480.
 +
|
 +
|-
 +
|GameCube 480i @59.94Hz
 +
|858 / 525 / @13.5MHz
 +
|480i / 576i
 +
|H.active=720
 
|
 
|
 +
|
 +
|-
 +
|GameCube 480p @59.94Hz
 +
|858 / 525 / @27MHz
 +
|480p / 576p
 +
|H.active=720
 +
|Only available on GameCube models with a Digital AV Out port. Requires proprietary RCA component or D-terminal cables, or a third-party adapter. Supported by many NTSC games, but no PAL games.
 +
|
 +
|-
 +
|Wii 480i @59.94Hz
 +
|858 / 525 / @13.5MHz
 +
|480i / 576i
 +
|H.samplerate=858 for both 4:3 and 16:9 modes, H.active=640 and 720 in 4:3 mode and 854 in 16:9 mode
 +
|
 +
|
 +
|-
 +
|Wii 480p @59.94Hz
 +
|858 / 525 / @27MHz
 +
|480p / 576p
 +
|H.samplerate=858 for both 4:3 and 16:9 modes, H.active=640 and 720 in 4:3 mode and 854 in 16:9 mode
 +
|Requires RCA component or D-terminal cables. Supported by most, but not all games.
 +
|
 +
|-
 +
|Wii 320x240 @59.82Hz
 +
|429.05 / 263 / @6.75MHz
 +
|320x240
 +
|H.samplerate=429.05
 +
|Example Games: Many Virtual Console games (only if output resolution is set to in 480i in System Settings)
 
|  
 
|  
 
|-
 
|-
Line 73: Line 180:
 
|-
 
|-
 
|CPS2 384x224 @59.64Hz
 
|CPS2 384x224 @59.64Hz
|512 / 262 / @8MHz
+
|512 / 262 / @<u><span title="16MHz ÷ 2">8MHz</span></u>
|320x240
+
|384x240
|H.samplerate=512, H.active=384, H.backporch=66
+
|
 
|  
 
|  
 
|  
 
|  
 
|-
 
|-
|Seibu SPI
+
|PC-8801 640x400 @55.39z
|? / 293 (?)
+
|848 / 525
|?
+
|480p
|
+
|H.samplerate=848, H.synclen=64, H.backporch=80, V.backporch=38
 +
|Allow upsample2x might reduce noise
 
|  
 
|  
 +
|-
 +
|PC-98 640x400 @56.4Hz
 +
|848 / 525 / @21.0526MHz
 +
|480p
 +
|H.samplerate=848, H.synclen=64, H.backporch=80, V.backporch=32
 
|  
 
|  
 +
|
 +
|-
 +
|PSP
 +
|
 +
|
 +
|
 +
|See the [[Playstation Portable|dedicated page]].
 +
|
 
|}
 
|}
  
Line 90: Line 211:
 
=== Horizontal multiplication factors ===
 
=== Horizontal multiplication factors ===
  
Frame width is multiplied by an integer factor defined below while picture area is multiplied by the value in parenthesis to maintain correct aspect ratio. Vertical multiplication factor is defined directly by line multiplication mode. For example, consider 320x240 in line3x mode. Frame size is multiplied by 4 in horizontal direction, and by 3 in vertical direction to generate a frame of 1280x720 which is ideal for 720p output. However, picture area is multiplied by 3 in both directions so that effective area (960x720) maintains 4:3 ratio of the source.
+
Frame width is multiplied by an integer factor defined below while picture area is multiplied by the value in parenthesis (if different) to maintain correct aspect ratio. Vertical multiplication factor is defined directly by line multiplication mode. For example, consider 320x240 in line3x mode. Frame size is multiplied by 4 in horizontal direction, and by 3 in vertical direction to generate a frame of 1280x720 which is ideal for 720p output. However, picture area is only multiplied by 3 in horizontal direction so that effective area (960x720) maintains 4:3 ratio of the source.
  
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! scope="col"|
 
! scope="col"|
 +
! scope="col"| 512x240
 +
! scope="col"| 384x240
 
! scope="col"| 320x240
 
! scope="col"| 320x240
 
! scope="col"| 256x240 (4:3)
 
! scope="col"| 256x240 (4:3)
 
! scope="col"| 256x240 (8:7)
 
! scope="col"| 256x240 (8:7)
 +
|-
 +
! scope="row"| Line2x
 +
| 2x
 +
| 2x
 +
| 2x
 +
| 3x
 +
| 3x(2x)
 
|-
 
|-
 
! scope="row"| Line3x
 
! scope="row"| Line3x
 +
| 2x
 +
| 3x
 
| 4x(3x)
 
| 4x(3x)
 
| 5x(4x)
 
| 5x(4x)
Line 105: Line 237:
 
|-
 
|-
 
! scope="row"| Line4x
 
! scope="row"| Line4x
 +
| 2x
 +
| 3x
 
| 4x
 
| 4x
 
| 5x
 
| 5x
Line 110: Line 244:
 
|-
 
|-
 
! scope="row"| Line5x
 
! scope="row"| Line5x
 +
| 3x*
 +
| 4x*
 
| 5x*
 
| 5x*
 
| 6x*
 
| 6x*
 
| 6x(5x)*
 
| 6x(5x)*
 +
|-
 +
! scope="row"| Line6x
 +
| 4x
 +
| 6x
 +
| 6x
 +
| 8x
 +
| 8x(6x)
 
|}
 
|}
  
 
* With Line5x, horizontal active and mask are adjusted internally so that frame width of 1600 or 1920 (depending on "Line5x format") is always generated. In 1920x1080 format, vertical active and backporch are also internally adjusted (-24 and +12) to generate suitable frame height.
 
* With Line5x, horizontal active and mask are adjusted internally so that frame width of 1600 or 1920 (depending on "Line5x format") is always generated. In 1920x1080 format, vertical active and backporch are also internally adjusted (-24 and +12) to generate suitable frame height.
 +
 +
== '''The FirebrandX optimal timing method''' ==
 +
 +
Community member FirebrandX has produced a useful YouTube video tutorial on how to discover optimal video timings. This video can be viewed [https://www.youtube.com/watch?v=EBStHr4XCTg here].

Latest revision as of 13:40, 14 November 2024

The advanced timing options on the OSSC allow for fine control over how the output image is generated and how the analogue signal is sampled. In some cases it is possible to adjust these values to perfectly match the incoming analogue signal from a console. This results in a very sharp image (possibly even too sharp for many people's tastes).

The table below contains some preliminary timings for popular consoles, it should be considered a work in progress, do not be surprised if further fine tuning is required. You will almost always be required to fine tune the sampling phase after making these adjustments.

Console / mode Dots per scanline / no. scanlines / @dotclk OSSC base mode Modified parameters Notes PC modeline
NES 256x240 @60.10Hz 341* / 262 / @5.37MHz(NTSC) [1][2][3] 256x240 To reduce jitter in couple topmost lines, try disabling ""Allow TVP HPLL2x" and/or using mask.
* one scanline is typically 1 dot shorter on every other frame
Modeline "ossc_nes_1280x720_60.08"  80.55  1280 1385 1510 1705  720 729 738 786  -hsync -vsync
SNES 256x240/224 @60.10Hz 341* / 262 / @5.37MHz(NTSC) @5.32MHz(PAL) [4] 256x240 * one scanline is typically 1 dot shorter on every other frame
Modeline "ossc_snes_1280x720_60.08"  80.55  1280 1385 1510 1705  720 729 738 786  -hsync -vsync
Mega Drive 320x224 @59.92Hz 320×8 + 86×10 (?) / 262 / @53.693175MHz(NTSC) @53.203425MHz(PAL) 320x240 H.samplerate=427.50 Video tutorial
Mega Drive 256x224 @59.92Hz 342 / 262 / @5.37MHz(NTSC) @5.32MHz(PAL) [5][6] 256x240 H.samplerate=342 Video tutorial
N64 320x237 @59.82Hz 773.5 / 263 / @12.17MHz(NTSC) @12.41MHz(PAL) [7][8] 320x240 H.samplerate=386.75, H.synclen=22, H.backporch=36 Every other visible dot (of 640) is interpolated
PlayStation 320x224 @59.82Hz 426.625 / 263 / @6.71MHz(NTSC) @6.65MHz(PAL) [9] [10] 320x240 H.samplerate=426.60 Example games: Chrono Cross, Final Fantasy VII & VIII, Klonoa
PlayStation 384x224 @59.82Hz 487.571 / 263 / @7.67MHz(NTSC) 384x240 H.samplerate=487.55, H.synclen=63, H.backporch=18 Example games: Ape Escape, Grandia, Oddworld, Tomb Raider 1 & 2
PlayStation 256x224 @59.82Hz 341.30 / 263 / @5.369MHz(NTSC) 256x240 H.samplerate=341.30 Example games: Adventure of Little Ralph, Castlevania SotN (in-game only), Tactics Ogre
PlayStation 512x224 @59.82Hz 682.6 / 263 / @10.74MHz(NTSC) 512x240 H.samplerate=682.60 Example games: Crash Bandicoot, Soul Reaver, Spyro, Tekken
PlayStation 600x480i @60Hz 910 / 525 / @14.32MHz(NTSC) 480i / 576i Video LPF = 9MHz, H.samplerate=910, H. synclen = 62, H. backporch = 98, H. active = 600 Example game: Tobal 1 and 2 (stretched from 512x480i to 600x480i)
PS2 512x320i @59.94Hz 686.4 / 525 / @10.8MHz(NTSC) 480i / 576i H.active=512, H.samplerate=686.40, H.synclen=44, H.backporch=84 Example games: Megaman X7, Castlevania Lament of Innocence
PS2 640x400i @59.94Hz 858 / 525 / @6.71MHz(NTSC) @6.65MHz(PAL) 480i / 576i H.active=640, H.synclen=44, H.backporch=116 Example games: GTA III, Crash Bandicoot Wrath of Cortex
PS2 256x240 @59.94Hz 858 / 263 / @6.30MHz 256x240 H.samplerate=858 Example games: FCEU, SNESticle and some emulators
Saturn 320x240 @60Hz 427 / 263 / @6.72MHz(NTSC) [11][12] 320x240 Video LPF = 9MHz, H.samplerate=427 Example game: World Heroes Perfect (has in-game letterboxing)
Saturn 352×240 @60Hz 455 / 263 / @7.16MHz(NTSC) 320x240 Video LPF = 9MHz, H.samplerate=455, H. active = 352 Example game: All of the various Capcom arcade fighting game ports
Saturn 704x480i @60Hz 910 / 525 / @14.32MHz(NTSC) 480i / 576i Video LPF = 9MHz, H.samplerate=910, H. synclen = 62, H. backporch = 98, H. active = 704 Example game: Virtua Fighter 2 (stage areas)
Neo-Geo MVS 320x240 @59.19Hz 384 / 264 / @6.00MHz [13] 320x240 H.samplerate=384, H.backporch=25
DC VGA 720x480 @60Hz 858 / 525 / @27MHz [14] 480p H active=720 Outputs games at 640x480 in a frame of 720x480.
GameCube 480i @59.94Hz 858 / 525 / @13.5MHz 480i / 576i H.active=720
GameCube 480p @59.94Hz 858 / 525 / @27MHz 480p / 576p H.active=720 Only available on GameCube models with a Digital AV Out port. Requires proprietary RCA component or D-terminal cables, or a third-party adapter. Supported by many NTSC games, but no PAL games.
Wii 480i @59.94Hz 858 / 525 / @13.5MHz 480i / 576i H.samplerate=858 for both 4:3 and 16:9 modes, H.active=640 and 720 in 4:3 mode and 854 in 16:9 mode
Wii 480p @59.94Hz 858 / 525 / @27MHz 480p / 576p H.samplerate=858 for both 4:3 and 16:9 modes, H.active=640 and 720 in 4:3 mode and 854 in 16:9 mode Requires RCA component or D-terminal cables. Supported by most, but not all games.
Wii 320x240 @59.82Hz 429.05 / 263 / @6.75MHz 320x240 H.samplerate=429.05 Example Games: Many Virtual Console games (only if output resolution is set to in 480i in System Settings)
GBI ULL 480p @59.72Hz 866 / 522 / @27MHz ? 480p H samplerate=866 ?
CPS2 384x224 @59.64Hz 512 / 262 / @8MHz 384x240
PC-8801 640x400 @55.39z 848 / 525 480p H.samplerate=848, H.synclen=64, H.backporch=80, V.backporch=38 Allow upsample2x might reduce noise
PC-98 640x400 @56.4Hz 848 / 525 / @21.0526MHz 480p H.samplerate=848, H.synclen=64, H.backporch=80, V.backporch=32
PSP See the dedicated page.


Horizontal multiplication factors

Frame width is multiplied by an integer factor defined below while picture area is multiplied by the value in parenthesis (if different) to maintain correct aspect ratio. Vertical multiplication factor is defined directly by line multiplication mode. For example, consider 320x240 in line3x mode. Frame size is multiplied by 4 in horizontal direction, and by 3 in vertical direction to generate a frame of 1280x720 which is ideal for 720p output. However, picture area is only multiplied by 3 in horizontal direction so that effective area (960x720) maintains 4:3 ratio of the source.

512x240 384x240 320x240 256x240 (4:3) 256x240 (8:7)
Line2x 2x 2x 2x 3x 3x(2x)
Line3x 2x 3x 4x(3x) 5x(4x) 5x(3x)
Line4x 2x 3x 4x 5x 5x(4x)
Line5x 3x* 4x* 5x* 6x* 6x(5x)*
Line6x 4x 6x 6x 8x 8x(6x)
  • With Line5x, horizontal active and mask are adjusted internally so that frame width of 1600 or 1920 (depending on "Line5x format") is always generated. In 1920x1080 format, vertical active and backporch are also internally adjusted (-24 and +12) to generate suitable frame height.

The FirebrandX optimal timing method

Community member FirebrandX has produced a useful YouTube video tutorial on how to discover optimal video timings. This video can be viewed here.