{"id":779,"date":"2021-12-20T21:40:09","date_gmt":"2021-12-20T19:40:09","guid":{"rendered":"https:\/\/immerhax.com\/?p=779"},"modified":"2024-02-06T22:05:07","modified_gmt":"2024-02-06T20:05:07","slug":"region-modding-a-psone-tft-screen-scph-130","status":"publish","type":"post","link":"https:\/\/immerhax.com\/?p=779","title":{"rendered":"Region modding a PSone TFT screen (SCPH-130)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>UPDATE <\/strong><em>Read the last part about the 3.3V vs. 5V of the MN5814!<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A guy on Facebook asked if it was possible to region mod a NTSC PSone with the original PSone screen attached, to be able to play PAL games also, to which I replied that as far as I knew, the screen is &#8220;region&#8221; locked, so PAL signals will give a rolling image, exactly like if your VHOLD on a CRT is &#8220;out of sync&#8221;. I remembered I had a banged up SCPH-130 monitor, which as far as I know is the first Japanese revision (unsure tho), and is thus NTSC, so I tried it out on my modchipped and DFO&#8217;ed EU\/PAL PSone (SCPH-101), and true enough, when playing PAL games the picture would begin rolling.<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video height=\"720\" style=\"aspect-ratio: 1280 \/ 720;\" width=\"1280\" controls src=\"https:\/\/immerhax.com\/wp-content\/uploads\/2021\/12\/VID_20211219_142751.mp4\"><\/video><figcaption class=\"wp-element-caption\">Chipped PSone playing a PAL game (Die Hard Trilogy) on a NTSC SCPH-130 TFT screen.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Since the screen was already pretty banged up (not my doing) I decided to investigate and see if I could determine *what* was actually causing this.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It should be noted that there are several revisions out of this monitor, and I have no idea how other revisions work, so your mileage may vary.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Anyways, to disassemble the monitor, you need to remove the speaker grille, at least in the outer corners, as there are two screws in each side here. Note that I would assume it quite easy to destroy the grille (and end up with a result like mine), so take care.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When all screws are removed you should be able to pry the back cover off, and see the main PCB of the monitor:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"1024\" src=\"https:\/\/immerhax.com\/wp-content\/uploads\/2021\/12\/IMG_20211219_163255_410-1-768x1024.jpg\" alt=\"\" class=\"wp-image-783\" style=\"width:768px;height:1024px\" srcset=\"https:\/\/immerhax.com\/wp-content\/uploads\/2021\/12\/IMG_20211219_163255_410-1-768x1024.jpg 768w, https:\/\/immerhax.com\/wp-content\/uploads\/2021\/12\/IMG_20211219_163255_410-1-225x300.jpg 225w, https:\/\/immerhax.com\/wp-content\/uploads\/2021\/12\/IMG_20211219_163255_410-1-scaled.jpg 1920w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><figcaption class=\"wp-element-caption\">The SCPH-130 mainboard.<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">So there are three large IC&#8217;s which is of interest here. IC12 in the middle which is an AN2526NFH signal processor (&#8220;jungle&#8221; IC), IC1 in the bottom which is a MN5814 &#8220;TFT AV Panel Controller IC&#8221; and IC3 which is a Wiseview LTS5QTB. The latter I couldn&#8217;t find any information about, but since it isn&#8217;t important, who cares.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So looking at IC12 it has a ~3.57MHz crystal, the color carrier frequency for NTSC composite signals, and thus is wired for NTSC. Looking at the datasheet, the unit does support PAL (with a 4.43MHz crystal instead, and another color trap filter), but since the PSone is connected via RGB, PAL\/NTSC shouldn&#8217;t matter.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The MN5814 is apparently a controller for TFT panels, so I looked at the datasheet to see what its pins did. Here I noticed the NP1 (pin 46) which is labeled &#8220;NTSC\/PAL&#8221; in the pin overview. This pin has a built in 100K pull-down resistor, and whaddaya know, there&#8217;s a test pad labeled <strong>NP1<\/strong> on the SCPH-130 mainboard!<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/immerhax.com\/wp-content\/uploads\/2021\/12\/IMG_20211219_174644_816-scaled.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"1024\" src=\"https:\/\/immerhax.com\/wp-content\/uploads\/2021\/12\/IMG_20211219_174644_816-768x1024.jpg\" alt=\"\" class=\"wp-image-785\" srcset=\"https:\/\/immerhax.com\/wp-content\/uploads\/2021\/12\/IMG_20211219_174644_816-768x1024.jpg 768w, https:\/\/immerhax.com\/wp-content\/uploads\/2021\/12\/IMG_20211219_174644_816-225x300.jpg 225w, https:\/\/immerhax.com\/wp-content\/uploads\/2021\/12\/IMG_20211219_174644_816-scaled.jpg 1920w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/a><figcaption class=\"wp-element-caption\">The MN5814 TFT controller. Notice the <strong>NP1<\/strong> pad in the top left of the IC.<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">The datasheet I had didn&#8217;t mention much about what level did what, but measuring it out, it is pulled low by the internal resistor. I thought that I&#8217;d try to pull this high, so I did that, and voila, now NTSC was rolling and PAL video was steady! So to &#8220;fix&#8221; the issue, this pin needs to be toggled depending on the video type.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I tried looking around for a suitable signal, but couldn&#8217;t find any, but I found a bunch of VSYNC pads, including one called <strong>VOUT<\/strong> at the AN2526NFH.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/immerhax.com\/wp-content\/uploads\/2021\/12\/IMG_20211219_163301_475-scaled.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"1024\" src=\"https:\/\/immerhax.com\/wp-content\/uploads\/2021\/12\/IMG_20211219_163301_475-768x1024.jpg\" alt=\"\" class=\"wp-image-787\" srcset=\"https:\/\/immerhax.com\/wp-content\/uploads\/2021\/12\/IMG_20211219_163301_475-768x1024.jpg 768w, https:\/\/immerhax.com\/wp-content\/uploads\/2021\/12\/IMG_20211219_163301_475-225x300.jpg 225w, https:\/\/immerhax.com\/wp-content\/uploads\/2021\/12\/IMG_20211219_163301_475-scaled.jpg 1920w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/a><figcaption class=\"wp-element-caption\">AN2526NFH. Notice the pads to the right top of the chip.<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">There are 4 pads, bottom is labeled <strong>FIELD<\/strong>, next is <strong>VOUT<\/strong>, then <strong>HOUT<\/strong> and then <strong>BURST<\/strong> (VOUT, HOUT and BURST labels are further to the right just after the caps).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I took a scope and measured <strong>VOUT<\/strong>, and could read that it was the discrete VSYNC output. To prove that my hypothesis worked, I took an Arduino Nano, wrote a very small program that measured the VSYNC duration, and from that decides if the VSYNC is 50Hz or 60Hz. I do this by connecting  VOUT to INT0\/D2 (interrupt 0) so the MCU runs a piece of code when the signal changes state, and then measure the number of milliseconds from LOW to LOW (using <em>millis()<\/em> function). Above 18ms I decide it to be 50Hz (which is ideally 20ms) and below is 60Hz (essentially ~16,7ms). Below 12ms is considered &#8220;noise&#8221;. Applying the decision to an output and then connect that output to the <strong>NP1<\/strong>, and *pling* everything now works! You can find the code here: https:\/\/github.com\/skumlos\/frqdetector<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"720\" style=\"aspect-ratio: 1280 \/ 720;\" width=\"1280\" controls src=\"https:\/\/immerhax.com\/wp-content\/uploads\/2021\/12\/VID_20211219_233012.mp4\"><\/video><figcaption class=\"wp-element-caption\">The same setup as previously, now with the Arduino attached.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Now this is very crude, I don&#8217;t even know where to put the Arduino, but maybe using a Mini Pro or any smaller footprint Arduino compatible board, or writing a version that works for the PIC12F508 which is really common for modchips, I suppose that would be much better (or any ATTiny or whatever).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The Arduino is powered by the 7.5V point in the bottom of the PCB near the hinge and whatever GND point.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/immerhax.com\/wp-content\/uploads\/2021\/12\/IMG_20211219_233535_094-scaled.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/immerhax.com\/wp-content\/uploads\/2021\/12\/IMG_20211219_233535_094-1024x768.jpg\" alt=\"\" class=\"wp-image-790\" srcset=\"https:\/\/immerhax.com\/wp-content\/uploads\/2021\/12\/IMG_20211219_233535_094-1024x768.jpg 1024w, https:\/\/immerhax.com\/wp-content\/uploads\/2021\/12\/IMG_20211219_233535_094-300x225.jpg 300w, https:\/\/immerhax.com\/wp-content\/uploads\/2021\/12\/IMG_20211219_233535_094-768x576.jpg 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">The <strong>NP1<\/strong> pad connection.<\/figcaption><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/immerhax.com\/wp-content\/uploads\/2021\/12\/IMG_20211219_233549_005-scaled.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/immerhax.com\/wp-content\/uploads\/2021\/12\/IMG_20211219_233549_005-1024x768.jpg\" alt=\"\" class=\"wp-image-791\" srcset=\"https:\/\/immerhax.com\/wp-content\/uploads\/2021\/12\/IMG_20211219_233549_005-1024x768.jpg 1024w, https:\/\/immerhax.com\/wp-content\/uploads\/2021\/12\/IMG_20211219_233549_005-300x225.jpg 300w, https:\/\/immerhax.com\/wp-content\/uploads\/2021\/12\/IMG_20211219_233549_005-768x576.jpg 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">The <strong>VOUT<\/strong> pad connection.<\/figcaption><\/figure>\n<\/div>\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/immerhax.com\/wp-content\/uploads\/2021\/12\/IMG_20211219_232940_491-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/immerhax.com\/wp-content\/uploads\/2021\/12\/IMG_20211219_232940_491-1024x768.jpg\" alt=\"\" class=\"wp-image-792\" srcset=\"https:\/\/immerhax.com\/wp-content\/uploads\/2021\/12\/IMG_20211219_232940_491-1024x768.jpg 1024w, https:\/\/immerhax.com\/wp-content\/uploads\/2021\/12\/IMG_20211219_232940_491-300x225.jpg 300w, https:\/\/immerhax.com\/wp-content\/uploads\/2021\/12\/IMG_20211219_232940_491-768x576.jpg 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">The Arduino Nano (notice the 7.5V pad in the top right)<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>UPDATE<\/strong> It was brought to my attention that the MN5814 is running on 3.3V and not 5V. Since the Arduino is (usually) running on 5V, it&#8217;s I\/Os are also 5V. The MN5814 specifies that max. I\/O voltage is VDD+0.3V (meaning there&#8217;s most likely a diode there) so it is advisable to run the NP0 output from the Arduino through a voltage divider, like two 1K resistors, and then pull the NP0 signal between the two.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Fun stuff! Any ideas or something for this? Let me know! martin@hejnfelt.com or skumlos\/skum on various boards.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>UPDATE Read the last part about the 3.3V vs. 5V of the MN5814! A guy on Facebook asked if it was possible to region mod a NTSC PSone with the original PSone screen attached, to be able to play PAL games also, to which I replied that as far as I knew, the screen is &hellip; <a href=\"https:\/\/immerhax.com\/?p=779\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Region modding a PSone TFT screen (SCPH-130)<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-779","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/immerhax.com\/index.php?rest_route=\/wp\/v2\/posts\/779","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/immerhax.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/immerhax.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/immerhax.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/immerhax.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=779"}],"version-history":[{"count":10,"href":"https:\/\/immerhax.com\/index.php?rest_route=\/wp\/v2\/posts\/779\/revisions"}],"predecessor-version":[{"id":935,"href":"https:\/\/immerhax.com\/index.php?rest_route=\/wp\/v2\/posts\/779\/revisions\/935"}],"wp:attachment":[{"href":"https:\/\/immerhax.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=779"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/immerhax.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=779"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/immerhax.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=779"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}