psp-research/web.html

121 lines
8.8 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>browsing the web on a psp</title>
<link rel="stylesheet" type="text/css" href="../theme.css" />
<link rel="shortcut icon" type="image/x-icon" href="../img/favicon.ico"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="author" content="~lucidiot" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
</head>
<body class="container">
<h1>browsing the web on a psp</h1>
<p><a href="index.html">main project page</a></p>
<div class="section" id="contents">
<h2>contents</h2>
<ul>
<li><a href="#intro">introduction</a></li>
<li><a href="#compatibility">compatibility</a></li>
<li><a href="img">~town pics</a></li>
<li><a href="#sites">relevant sites and projects</a></li>
<li><a href="#ideas">ideas</a></li>
</ul>
</div>
<div class="section" id="intro">
<a href="#contents" class="toplink">back to top</a>
<h2>introduction</h2>
<p>some discussions on IRC with <a href="/~netscape_navigator" target="_blank">netscape_navigator</a> and <a href="/~al3x" target="_blank">al3x</a> led me to test my ~page using two old devices I had immediate access to: a <a href="https://www.gsmarena.com/blackberry_curve_9320-4458.php" target="_blank">BlackBerry Curve 9320</a>, that I still use daily as a backup alarm clock since my actual phone only rings half of the time and a <abbr title="PlayStation Portable">PSP</abbr>-3000 running the latest 6.60 firmware (or the <a href="https://code.google.com/archive/p/procfw/">6.60 Pro-C2</a> custom firmware if I enable it).</p>
<p>Testing on the BlackBerry was quite uneventful, since this phone ran an old version of WebKit and could very well handle the rather basic site. But testing on the PSP has shown its load of issues!</p>
<p>Just before doing my tests, I had updated my site to validate with XHTML 1.0 Transitional. This clearly helped as most of my website was working&mdash;I had to update some links since HTTPS fails on almost every site on a PSP, but the site was overall usable.</p>
<p>However, testing for some other websites around the town has shown that there is very little compatibility with PSPs. Since I know how much townies love to play with esoteric or challenging development environments, and since I could not find any good documentation on how to write PSP-compatible websites, I started my own.</p>
</div>
<div class="section" id="compatibility">
<a href="#contents" class="toplink">back to top</a>
<h2>compatibility</h2>
<p>various tips to easily make your site's HTML, CSS, JS, media and flash animations PSP-compatible:</p>
<ul>
<li>do not use BMP images, as the PSP is unable to display them</li>
<li>
specify your page's encoding using <code>&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;</code> if not using UTF-8 or ASCII.<br />
compatible encodings:
<ul>
<li><code>Big5</code> (Traditional Chinese)</li>
<li><code>EUC-JP</code> (Japenese)</li>
<li><code>EUC-KR</code> (Korean)</li>
<li><code>GB18030</code> (Chinese)</li>
<li><code>ISO-8859-1</code> (Western)</li>
<li><code>ISO-8859-5</code> (Cyrillic)</li>
<li><code>Shift_JIS</code> (Japanese)</li>
<li><code>UTF-8</code> (though you should only except characters from the above encodings to work)</li>
</ul>
</li>
<li>
use the least possible amount of HTTPS: PSPs only support SSLv3 and many server configurations will not allow it.<br />
my best guess is that the <a href="http://en.wikipedia.org/wiki/POODLE">POODLE</a> vulnerability killed the PSP's HTTPS support in late 2014 due to everyone disabling SSLv3.
</li>
<li>use relative links on ~town: this allows HTTPS users to still use HTTPS, and PSP users to still use HTTP.</li>
<li>validate your site against XHTML 1.0, or HTML 4.01</li>
<li>the maximum supported JavaScript standard seems to be ECMAScript 3</li>
<li>do not expect more than the one sans-serif font the PSP has</li>
<li>do not expect the text size to always be the same: the font sizes are configurable (smaller, normal, bigger). the screenshots below are taken with the smaller setting.</li>
<li>flash animations are supported, although they are extremely laggy</li>
<li>high memory usage can cause the browser to stop loading images, displaying animated GIFs, running JavaScript or Flash and just show an error message. the user will have to refresh.</li>
<li>images, animated images, JS and flash can be easily disabled&mdash;and disabling them significantly reduces the lag, making it a very attractive option</li>
<li>typing in special characters is hard on a PSP, especially the tilde which is very close to a caret in the PSP font.</li>
<li>the screen size is 480&times;272</li>
<li>the only known user-agent is <code>Mozilla/4.0 (PSP (PlayStation Portable); 2.00)</code></li>
<li><code>&lt;blink&gt;</code> is <blink><b>supported!!!</b></blink></li>
</ul>
</div>
<div class="section">
<p style="font-family: monospace; font-size: 150%; font-weight: bold; text-align: center"><a href="img">some pics from browsing ~town on a PSP 3000</a></p>
</div>
<div class="section" id="sites">
<a href="#contents" class="toplink">back to top</a>
<h2>relevant sites and projects</h2>
<ul>
<li><a href="https://blazebyte.org/" target="_blank">BlazeByte</a>, a community around a well-known project to bring a windows-like UI in the PSP's browser, since it supports <code>file:/</code>;</li>
<li>sony's website for <a href="http://www.playstation.com/psp-app/sensme.html" target="_blank">SensMe Channels</a>, an optional app in the later firmware versions that could organize your music by feelings;</li>
<li>the PSP's <a href="https://manuals.playstation.net/document/en/psp/current/index.html" target="_blank">online manual</a>;</li>
<li>the <a href="https://www.playstation.com/manual/psp/rss/">online manual</a> for the PSP's RSS reader, which includes a <a href="https://www.playstation.com/manual/psp/rss/en/spec.html">very detailed page</a> on how to make the RSS feeds compatible with a PSP;</li>
<li>the <a href="https://www.playstation.com/psp-app/radio/index.html">online manual</a> for the PSP's SHOUTcast-powered internet radio feature.</li>
</ul>
<p>I am working on building offline copies of the Sony PSP websites to study them and see how Sony itself handled the PSP's browser. I already noted that they have a JS script that looks at the user agent and loads a <code>pc.css</code> stylesheet to add some styles when not using a PSP!</p>
</div>
<div class="section" id="ideas">
<a href="#contents" class="toplink">back to top</a>
<h2>ideas</h2>
<p>there is a lot more work to be done. here are a few ideas and to-dos of my own&mdash;if you want to help, feel free to contact me or head over to the <a href="https://tildegit.org/lucidiot/psp-research" target="_blank">tildegit repo</a>.</p>
<ul>
<li>Make offline copies of Sony's official PSP-compatible websites before they disappear and study them</li>
<li>
Reverse-engineer the Internet Radio files used by the PSP, in <code>.prs</code> format, downloadable <a href="https://www.playstation.com/psp-app/radio/index.html" target="_blank">here</a>:
<ul>
<li>Document the format</li>
<li>Find the common header and add it to <a href="https://en.wikipedia.org/wiki/List_of_file_signatures">file signatures lists and databases</a> as it seems to be completely unknown</li>
<li>Write a decoder</li>
<li>Write an encoder</li>
<li>Create and share new radios!</li>
</ul>
</li>
<li>Play around with the PSP's RSS feed feature using its <a href="https://www.playstation.com/manual/psp/rss/en/spec.html">extensive documentation</a> and create new feeds</li>
<li>Create a Webpack template to build modern HTML/CSS/JS to PSP-compatible websites</li>
<li>
Build an anti-HTTPS proxy:
<ul>
<li>Could replace every instance of <code>https</code> with <code>http</code></li>
<li>Could do a man-in-the-middle attack, allowing PSPs to use older HTTPS protocols to connect to sites that only accept newer protocols</li>
<li>Could be used for many other abandoned devices or software such as my beloved Windows 98SE</li>
</ul>
</li>
</ul>
</div>
</body>
</html>