<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://silentsblog.com/feed/by_tag/Research.xml" rel="self" type="application/atom+xml" /><link href="https://silentsblog.com/" rel="alternate" type="text/html" /><updated>2026-04-07T19:19:45+00:00</updated><id>https://silentsblog.com/feed/by_tag/Research.xml</id><title type="html">Silent’s Blog</title><subtitle>A blog and portfolio of Silent</subtitle><entry xml:lang="en"><title type="html">Black Box-era Need for Speed – series research</title><link href="https://silentsblog.com/2025/02/22/need-for-speed-black-box-series-research/" rel="alternate" type="text/html" title="Black Box-era Need for Speed – series research" /><published>2025-02-22T14:20:00+00:00</published><updated>2025-03-12T18:35:00+00:00</updated><id>https://silentsblog.com/2025/02/22/need-for-speed-black-box-series-research</id><content type="html" xml:base="https://silentsblog.com/2025/02/22/need-for-speed-black-box-series-research/"><![CDATA[<p class="sidenote">Last update: <time datetime="2025-03-12">March 12, 2025</time></p>

<p>This is a <a href="/categories/#Research">Research</a>-style post – as I go through more games, I will keep updating it with new findings.</p>

<ul id="markdown-toc">
  <li><a href="#loyalty-career-bonuses" id="markdown-toc-loyalty-career-bonuses">Loyalty career bonuses</a>    <ul>
      <li><a href="#nfs-most-wanted-including-black-edition" id="markdown-toc-nfs-most-wanted-including-black-edition">NFS Most Wanted (including Black Edition)</a></li>
      <li><a href="#nfs-carbon-including-collectors-edition" id="markdown-toc-nfs-carbon-including-collectors-edition">NFS Carbon (including Collector’s Edition)</a></li>
      <li><a href="#nfs-prostreet" id="markdown-toc-nfs-prostreet">NFS ProStreet</a></li>
      <li><a href="#nfs-undercover-ps2" id="markdown-toc-nfs-undercover-ps2">NFS Undercover (PS2)</a></li>
    </ul>
  </li>
  <li><a href="#nfs-underground-magazine-22" id="markdown-toc-nfs-underground-magazine-22">NFS Underground Magazine 22</a></li>
  <li><a href="#post-changelog" id="markdown-toc-post-changelog">Post changelog</a></li>
</ul>

<h2 id="loyalty-career-bonuses"><a href="#loyalty-career-bonuses"></a>Loyalty career bonuses</h2>

<p>Most games from the Black Box era grant a cash bonus if saves from the previous games are found. However, online information about this feature is incomplete,
and games themselves have some bugs and leftovers related to that.</p>

<h3 id="nfs-most-wanted-including-black-edition"><a href="#nfs-most-wanted-including-black-edition"></a>NFS Most Wanted (including Black Edition)</h3>

<p>$10.000 is awarded if a save from NFS Underground 2 is found. On the PS2, the game checks for the following set of serials depending on the current build configuration:</p>
<ul>
  <li><code class="language-plaintext highlighter-rouge">SLES-52725</code> in the European build.</li>
  <li><code class="language-plaintext highlighter-rouge">SLUS-21065</code> in the American build.</li>
  <li><code class="language-plaintext highlighter-rouge">SLPM-65766</code> in the Japanese build. Seems like Sha-Do Underground 2 does not give bonuses, unless this has been specifically addressed in the Japanese releases.</li>
  <li><code class="language-plaintext highlighter-rouge">SLKA-25241</code> in the Korean build.</li>
  <li><code class="language-plaintext highlighter-rouge">SLAJ-25054</code> in the Asian build.</li>
</ul>

<h3 id="nfs-carbon-including-collectors-edition"><a href="#nfs-carbon-including-collectors-edition"></a>NFS Carbon (including Collector’s Edition)</h3>

<p>$10.000 is awarded if a save from NFS Most Wanted is found. On the PS2 (other platforms unconfirmed), this feature has a bug – <strong>by default,
this feature only works with base Most Wanted saves, as the NTSC-U versions check for Most Wanted Black Edition using a wrong serial (<code class="language-plaintext highlighter-rouge">SLAJ-25075</code>),
while PAL-E versions do not include a BE serial at all!</strong>
I submitted <a href="https://github.com/PCSX2/pcsx2_patches/pull/499" target="_blank">a patch to the PCSX2 patch database</a> to fix this.</p>

<p>The game also has a function to list Underground 2 saves that uses the same list of serials as Most Wanted,
so it may have been planned to grant bonuses for either UG2 or MW saves. However, those remain unused, either intentionally or through an oversight.</p>

<h3 id="nfs-prostreet"><a href="#nfs-prostreet"></a>NFS ProStreet</h3>

<p>Carbon’s bug has been fixed in NTSC-U (<strong>but not PAL</strong>), and the game (at least in the old-gen releases) grants the player 3 Repair Markers and 1 Totalled Marker
when saves from any of the following games are found:</p>
<ul>
  <li>NFS Most Wanted</li>
  <li>NFS Most Wanted Black Edition (fixed in the PAL release with my above fix)</li>
  <li>NFS Carbon</li>
  <li>NFS Carbon Collector’s Edition</li>
</ul>

<p>Once again, the game can detect Underground 2 saves, but this functionality remains unused.</p>

<p>This feature has a caveat – <strong>creating a new profile and starting the career through the <kbd>START</kbd> option will NOT grant you loyalty bonuses.</strong>
You <strong>must</strong> start a new career through the <kbd>NEW CAREER</kbd> option.</p>

<h3 id="nfs-undercover-ps2"><a href="#nfs-undercover-ps2"></a>NFS Undercover (PS2)</h3>

<p>Exient’s PS2/Wii version of NFS Undercover is NFS Carbon in disguise, and so the code carries over all the checks from Carbon (including a wrong serial for MW Black Edition).
However, these go unused, and the game grants no loyalty bonuses at all.</p>

<h2 id="nfs-underground-magazine-22"><a href="#nfs-underground-magazine-22"></a>NFS Underground Magazine 22</h2>

<p>For my NFS Underground playthrough, I looked into the infamous Drift Score magazine unlock conditions. Turns out they were bugged, and I now released a SilentPatch
for PC and PS2 versions of the game fixing this bug, as well as a few others.</p>

<p>Due to the significance of this bug fix, I detailed it in <a href="/2025/03/12/need-for-speed-underground-magazine-22-silentpatch/">a separate post</a>.</p>

<hr />

<h2 id="post-changelog"><a href="#post-changelog"></a>Post changelog</h2>

<ul>
  <li><time datetime="2025-03-12">March 12, 2025</time> – NFS Underground Magazine 22 issues researched.</li>
  <li><time datetime="2025-02-22">February 22, 2025</time> – initial version. Later edited to clarify missing MW Black Edition serials in PAL releases of Carbon and ProStreet.</li>
</ul>]]></content><author><name>Silent</name></author><category term="Research" /><summary type="html"><![CDATA[Miscellaneous pieces of info about the Black Box-era Need for Speed games.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://silentsblog.com/assets/img/games/bg/need-for-speed-carbon.jpg" /><media:content medium="image" url="https://silentsblog.com/assets/img/games/bg/need-for-speed-carbon.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="en"><title type="html">Tokyo Xtreme Racer – series research</title><link href="https://silentsblog.com/2025/01/13/tokyo-xtreme-racer-series-research/" rel="alternate" type="text/html" title="Tokyo Xtreme Racer – series research" /><published>2025-01-13T22:00:00+00:00</published><updated>2025-01-13T22:00:00+00:00</updated><id>https://silentsblog.com/2025/01/13/tokyo-xtreme-racer-series-research</id><content type="html" xml:base="https://silentsblog.com/2025/01/13/tokyo-xtreme-racer-series-research/"><![CDATA[<p class="sidenote">Last update: <time datetime="2025-01-13">January 13, 2025</time></p>

<p>As a new Tokyo Xtreme Racer <a href="https://store.steampowered.com/app/2634950/Tokyo_Xtreme_Racer/" target="_blank">is just around the corner</a>,
I spent some time playing the classic TXR games. As I go through the games in order, I wanted to note some things I encountered.</p>

<p>This is a <a href="/categories/#Research">Research</a>-style post – as I go through more games, I will keep updating it with new findings.
This post is reserved for the “classic” games only; I will most likely have another post about the 2025 Tokyo Xtreme Racer in the future!</p>

<ul id="markdown-toc">
  <li><a href="#tokyo-xtreme-racer-dreamcast" id="markdown-toc-tokyo-xtreme-racer-dreamcast">Tokyo Xtreme Racer (Dreamcast)</a>    <ul>
      <li><a href="#faulty-car-unlocks" id="markdown-toc-faulty-car-unlocks">Faulty car unlocks</a></li>
    </ul>
  </li>
  <li><a href="#tokyo-xtreme-racer-2-dreamcast" id="markdown-toc-tokyo-xtreme-racer-2-dreamcast">Tokyo Xtreme Racer 2 (Dreamcast)</a>    <ul>
      <li><a href="#aspect-ratio-inconsistencies" id="markdown-toc-aspect-ratio-inconsistencies">Aspect Ratio inconsistencies</a></li>
    </ul>
  </li>
  <li><a href="#tokyo-xtreme-racer-zero-playstation-2" id="markdown-toc-tokyo-xtreme-racer-zero-playstation-2">Tokyo Xtreme Racer: Zero (PlayStation 2)</a></li>
  <li><a href="#post-changelog" id="markdown-toc-post-changelog">Post changelog</a></li>
</ul>

<h2 id="tokyo-xtreme-racer-dreamcast"><a href="#tokyo-xtreme-racer-dreamcast"></a>Tokyo Xtreme Racer (Dreamcast)</h2>

<h3 id="faulty-car-unlocks"><a href="#faulty-car-unlocks"></a>Faulty car unlocks</h3>

<p>When localizing Shutokō Battle for the West, Crave also changed several gameplay aspects of the game. Unlike in the Japanese release,
in Tokyo Xtreme Racer you unlock several cars by beating the opponents who own them. One of those rivals is <strong>Midnight Cinderella</strong>,
whose TYPE-FDD can be purchased after you win the race.</p>

<p>Even though I obviously beat this rival, the car never unlocked for me. I never ended up figuring out the exact cause of this,
but I know I wasn’t the only one. Other people also encountered this issue, others had the rival cars unlock too early
before they defeated the rival driving them.</p>

<p>This doesn’t surprise me in the slightest – considering how this aspect of the game has been changed by the publisher during
the localization process, it is highly likely they implemented it wrong and introduced a few rare bugs.</p>

<hr />

<h2 id="tokyo-xtreme-racer-2-dreamcast"><a href="#tokyo-xtreme-racer-2-dreamcast"></a>Tokyo Xtreme Racer 2 (Dreamcast)</h2>

<h3 id="aspect-ratio-inconsistencies"><a href="#aspect-ratio-inconsistencies"></a>Aspect Ratio inconsistencies</h3>

<p>While TXR2 has a “native” widescreen option, named <strong>Wide TV</strong>, its behavior is strange. When Dreamcast (real or emulated)
uses a VGA output, this option doesn’t work at all. In VGA, the game always outputs a 4:3 image, and it looks exactly how you would expect:</p>

<figure class="fig-entry natural"><a href="/assets/img/posts/txr-research/vga.jpg" target="_blank"><img src="/assets/img/posts/txr-research/vga.jpg" alt="" width="640" height="480" /></a></figure>

<p>When using Composite or RGB outputs, the option works, but the results are rather strange:</p>
<figure class="media-container small">
<figure class="fig-entry"><a href="/assets/img/posts/txr-research/normal.jpg" target="_blank"><img src="/assets/img/posts/txr-research/normal.jpg" alt="" width="640" height="480" /></a><figcaption><strong>Normal TV</strong> produces a horizontally stretched image.</figcaption></figure>

<figure class="fig-entry"><a href="/assets/img/posts/txr-research/wide.jpg" target="_blank"><img src="/assets/img/posts/txr-research/wide.jpg" alt="" width="640" height="480" /></a><figcaption><strong>Wide TV</strong> produces a horizontally squashed image, as expected of anamorphic widescreen present in such retro platforms.</figcaption></figure>

</figure>

<p>I did not get the chance to look into the game’s code, so I started experimenting with stretching the images instead, using the formulas from
the <a href="https://en.wikipedia.org/wiki/Pixel_aspect_ratio" target="_blank">Pixel aspect ratio</a> page on Wikipedia. Treating Dreamcast’s output signal
as 720x480 and rescaling from there, I was able to get better results:</p>

<figure class="media-container small">
<figure class="fig-entry"><a href="/assets/img/posts/txr-research/normal-par.jpg" target="_blank"><img src="/assets/img/posts/txr-research/normal-par.jpg" alt="" width="569" height="480" /></a><figcaption>When scaling with a PAR of \({640 \over 720} = 0.\overline{8}\), <strong>Normal TV</strong> looks better, but not the same as VGA.</figcaption></figure>

<figure class="fig-entry"><a href="/assets/img/posts/txr-research/wide-par.jpg" target="_blank"><img src="/assets/img/posts/txr-research/wide-par.jpg" alt="" width="758" height="480" /></a><figcaption>When scaling with a PAR of \({853 \over 720} \approx 1.1847\), <strong>Wide TV</strong> looks nearly identical to VGA.</figcaption></figure>

</figure>

<p>So what’s going on with <strong>Normal TV</strong>? I initially couldn’t figure out the maths behind it, but then I figured I’d try to scale it,
incorrectly, with an inverse of the scaling used for <strong>Wide TV</strong>: \({720 \over 853} \approx 0.844\). This… gave me an exact match!</p>

<figure class="fig-entry natural"><a href="/assets/img/posts/txr-research/normal-par2.jpg" target="_blank"><img src="/assets/img/posts/txr-research/normal-par2.jpg" alt="" width="540" height="480" /></a></figure>

<p>This makes me suspect that the game scales for Composite output more or less like:</p>

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">float</span> <span class="n">arCorrection</span> <span class="o">=</span> <span class="mi">853</span><span class="p">.</span><span class="mi">0</span> <span class="o">/</span> <span class="mi">720</span><span class="p">.</span><span class="mi">0</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="n">WideTV</span><span class="p">)</span>
   <span class="n">AR</span> <span class="o">*=</span> <span class="n">arCorrection</span><span class="p">;</span>
<span class="k">else</span>
   <span class="n">AR</span> <span class="o">/=</span> <span class="n">arCorrection</span><span class="p">;</span>
</code></pre></div></div>

<p>If this is true, it’s completely incorrect and is likely producing incorrect image on CRT TVs. If I look into the game’s code in the future,
I might be able to confirm or deny this suspicion properly, but as of the time of writing this post, I haven’t tried to disassemble any Dreamcast games.</p>

<p>My conclusion: <strong>When emulating, don’t bother with the in-game widescreen option. Just use VGA output and a widescreen cheat.</strong></p>

<hr />

<h2 id="tokyo-xtreme-racer-zero-playstation-2"><a href="#tokyo-xtreme-racer-zero-playstation-2"></a>Tokyo Xtreme Racer: Zero (PlayStation 2)</h2>

<p>Nothing here yet, but I published a few PCSX2 patches for this game! Head over to
<a href="/mods/tokyo-xtreme-racer-zero/">Tokyo Xtreme Racer: Zero</a> if you want to take a look.</p>

<hr />

<h2 id="post-changelog"><a href="#post-changelog"></a>Post changelog</h2>

<ul>
  <li><time datetime="2025-01-13">January 13, 2025</time> – initial version.</li>
</ul>]]></content><author><name>Silent</name></author><category term="Research" /><summary type="html"><![CDATA[Miscellaneous pieces of info about the classic Tokyo Xtreme Racer games.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://silentsblog.com/assets/img/games/bg/tokyo-xtreme-racer-zero.jpg" /><media:content medium="image" url="https://silentsblog.com/assets/img/games/bg/tokyo-xtreme-racer-zero.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="en"><title type="html">Bonus Codes Generators for TOCA Race Driver</title><link href="https://silentsblog.com/2024/03/30/toca-race-driver-bonus-codes/" rel="alternate" type="text/html" title="Bonus Codes Generators for TOCA Race Driver" /><published>2024-03-30T14:30:00+00:00</published><updated>2024-11-07T09:30:00+00:00</updated><id>https://silentsblog.com/2024/03/30/toca-race-driver-bonus-codes</id><content type="html" xml:base="https://silentsblog.com/2024/03/30/toca-race-driver-bonus-codes/"><![CDATA[<ul id="markdown-toc">
  <li><a href="#bonus-codes" id="markdown-toc-bonus-codes">Bonus Codes</a></li>
  <li><a href="#how-were-toca-race-driver-3s-cheats-cracked" id="markdown-toc-how-were-toca-race-driver-3s-cheats-cracked">How were TOCA Race Driver 3’s cheats cracked?</a></li>
  <li><a href="#note-for-pc-players" id="markdown-toc-note-for-pc-players">Note for PC players</a></li>
</ul>

<h2 id="bonus-codes"><a href="#bonus-codes"></a>Bonus Codes</h2>

<p>Hello! This post is just a quick update to announce the addition of new Bonus Codes generators added to the website.
With the addition of the TOCA Race Driver games, there are now 6 games available:</p>
<ul>
  <li><a href="/bonuscodes/cmr-3/" target="_blank">Colin McRae Rally 3</a></li>
  <li><a href="/bonuscodes/cmr-04/" target="_blank">Colin McRae Rally 04</a></li>
  <li><a href="/bonuscodes/cmr-2005/" target="_blank">Colin McRae Rally 2005</a> (including Colin McRae Rally 2005 Plus)</li>
  <li><a href="/bonuscodes/toca-race-driver/" target="_blank">TOCA Race Driver</a></li>
  <li><a href="/bonuscodes/toca-race-driver-2/" target="_blank">TOCA Race Driver 2</a> (including Race Driver 2006)</li>
  <li><a href="/bonuscodes/toca-race-driver-3/" target="_blank">TOCA Race Driver 3</a> (including TOCA Race Driver 3 Challenge)</li>
</ul>

<p>To recap – Bonus Codes was a Codemasters’ take on traditional cheat codes. While most other games had specific cheat codes
published by the developers online and in the gaming magazines, Codemasters invented a system where players could buy their “personalized”
cheat codes online or through a phone helpline. For example, that’s how this looked in Colin McRae Rally 3 – the screenshot comes from a game
with SilentPatch installed, unmodded games pointed the player towards
<a href="https://web.archive.org/web/20101201054958/http://codemasters.com/cheats/index.php?&amp;page=1" target="_blank">codemasters.com/bonuscodes/</a> instead:</p>
<figure class="fig-entry"><a href="/assets/img/posts/bonuscodes/screens/Rally_3PC_F2XZEABRTM.png" target="_blank"><img src="/assets/img/posts/bonuscodes/screens/thumb/Rally_3PC_F2XZEABRTM.jpg" alt="" width="1024" height="576" /></a></figure>

<p>The website was still up around 2011, offering a full set of cheat codes for one game for £2.99.
These days, it’s not possible to buy those cheats at all, so the only surviving resources are
some cheats for specific access codes shared by individuals over the years. That’s where my generators come in – allowing users to generate their cheat codes
directly in the web browser.</p>

<p>Thanks to Wayback Machine, we can assemble a mostly complete list of games using Bonus Codes. Aside from the games I already cover on the website,
those games most likely also used Bonus Codes. Some of them <strong>may</strong> have been using regular cheat codes, but Wayback Machine hasn’t preserved enough web pages to know.</p>

<p class="sidenote">Last update: <time datetime="2024-11-07">November 7, 2024</time></p>

<ul>
  <li>Brian Lara International Cricket 2005</li>
  <li>Clive Barker’s Jericho</li>
  <li>Colin McRae DiRT</li>
  <li>Race Driver: GRID</li>
  <li>Heatseeker</li>
  <li><del>Hospital Tycoon</del> (no access codes, only regular cheats)</li>
  <li>LMA Manager 2007</li>
  <li>Manchester United Soccer 2005</li>
  <li>Micro Machines V4</li>
  <li>Mike Tyson Heavyweight Boxing</li>
  <li>MTV Music Generator 3 – This is the Remix</li>
  <li>Operation Flashpoint: Resistance</li>
  <li>Perimeter</li>
  <li>Second Sight</li>
  <li>Soldiers: Heroes of World War II</li>
</ul>

<p>There are also a few games I know are missing from the 2011 version of the website but include Bonus Codes.
These are (<strong>now implemented thanks to <a href="https://32bits.substack.com" target="_blank">Bo</a>!</strong>):</p>
<ul>
  <li><del>LMA Manager 2003</del></li>
  <li><del>LMA Manager 2004</del></li>
  <li><del>LMA Manager 2005</del></li>
  <li><del>LMA Manager 2006</del></li>
</ul>

<p>I am hoping to eventually publish Bonus Codes generators for as many games as I can, but not all of them may be technically doable.
That said, I said the same about TOCA Race Driver 3 – until recently. In this case, the recent developments are entertaining
enough that they deserve their section in the post.</p>

<h2 id="how-were-toca-race-driver-3s-cheats-cracked"><a href="#how-were-toca-race-driver-3s-cheats-cracked"></a>How were TOCA Race Driver 3’s cheats cracked?</h2>

<p>When I first published generators for the Colin McRae Rally trilogy, I also looked into TOCA Race Driver 3 (but not 1 or 2),
and found out that the generation there is entirely different. CMR games were easy to cover – these games use a symmetric generator,
or in other words, they generate all the codes for the user’s specific access code, and then they check if the sequence entered
by the player matches any of them. Therefore, for my generators, I only had to accurately reimplement the in-game generation functions.
This has also been done by others decades ago – cheat code generators for all 3 games, as well as TOCA Race Driver 1 &amp; 2,
date back to the early 2000s. <strong>MobCat</strong> also hosts
<a href="https://www.mobcat.zip/CodemastersDB/" target="_blank">an online database of precomputed Bonus Codes</a> for those games.</p>

<p>However, TOCA Race Driver 3 is different. For this game, Codemasters switched to an asymmetric generator,
using <a href="https://en.wikipedia.org/wiki/RSA_(cryptosystem)" target="_blank">RSA</a>; the same cryptographic algorithm
that is practically the foundation of online security. This worked great – to this day, I am not aware of a single generator
or a database of codes.</p>

<p>For a while, I expected the generator to be impossible to reverse engineer, as while the game holds the public key in its executable,
only Codemasters had its private key. Only recently I revisited their implementation of the RSA algorithm present in the game,
and it turned out to be flawed in a way that made the process of obtaining the private key trivial.
To explain this, I need to quickly explain how public and private RSA keys work.</p>

<p>At the most fundamental level, data is encrypted via RSA with a pair of keys, one for each side of the communication.
Data encrypted with the private key can only be decrypted with the public key, and vice versa.
Therefore, with only the public key at hand, it is impossible to encrypt data the same way the private key does,
and in turn, impersonate the holder of the private key.</p>

<p>The process of generating the pair of keys goes as follows:</p>
<ol>
  <li>Big prime numbers \(p\) and \(q\) are picked. They are kept <strong>secret</strong>.</li>
  <li>\(n = pq\) is calculated.</li>
  <li>\(e\) is picked. For the sake of this explanation, we only need to care that the common value selected for this variable is \(65537\).
This is also the case for TOCA.</li>
  <li>\((n,e)\) is our public key. This is the key present in the game’s executable.</li>
  <li>\(d = e^{-1}\pmod{(p-1)(q-1)}\) is calculated and kept <strong>secret</strong>. This is our private key, in this case, known only to the developers.</li>
</ol>

<p>The process of encrypting and decrypting data is then straightforward. The data is encrypted with the private key by calculating
\(M' = M^d \pmod{n}\) – this (with some transformations) is what was given to the player as their personal cheat code.
Later, the game decrypts the encrypted message (as in, the cheat code) by calculating \(M = M'^e \pmod{n}\).
If the message decrypted with the public key matches the user’s access code and is interpreted as valid, the cheat activates.</p>

<p>Since \(d\) is easy to calculate if the primes used to calculate \(n\) are known,
the security of the key hinges on \(p\) and \(q\) being exceptionally difficult to guess.
This is typically achieved by picking huge numbers – for example, RSA-1024 uses \(n\) that is 1024 bits long,
which makes for 309 decimal digits. As of the time of writing this article, this is a large enough number
that it’s never been factorized (primes \(p\) and \(q\) have never been brute-forced).</p>

<p>If TOCA Race Driver 3 used a similarly large number, the algorithm would have been impossible to reverse engineer.
However, their RSA key is much smaller. How many digits does their public key \(n\) have?</p>

<p><em>20</em>.</p>

<p>The key used by the game is 8.5 bytes long (the topmost byte only uses 4 bits),
which technically makes the number RSA-68. This a number so relatively small it has never been even considered
in the <a href="https://en.wikipedia.org/wiki/RSA_Factoring_Challenge" target="_blank">RSA Factoring Challenge</a>,
and so small that Wolfram Alpha
<a href="https://www.wolframalpha.com/input?i=26952959852310653999">does prime factorization of that number even without explicitly being asked to</a>.
That’s how I “cracked” the key; I was curious to see what Wolfram Alpha would tell me about this number,
but instead, it’s done everything for me right off the bat. With primes factorized, recalculating the private key
is trivial, and I could update my generators to cover TOCA Race Driver 3’s algorithm.</p>

<p>TOCA Race Driver 3 cheats hold one more trivia. The game featured an entire section of Honda championships
and a cross-promo campaign with Honda, where players could unlock those championships for free with a generator
hosted at <a href="https://web.archive.org/web/20061223081102/http://www.honda.co.uk/racedriver/" target="_blank">honda.co.uk/racedriver/ (archived)</a>.
These Honda-specific codes use a different RSA key than the remaining cheats.</p>

<figure class="media-container small">
<figure class="fig-entry"><a href="/assets/img/posts/bonuscodes/honda1.jpg" target="_blank"><img src="/assets/img/posts/bonuscodes/honda1.jpg" alt="" width="804" height="405" /></a></figure>

<figure class="fig-entry"><a href="/assets/img/posts/bonuscodes/honda2.jpg" target="_blank"><img src="/assets/img/posts/bonuscodes/honda2.jpg" alt="" width="804" height="405" /></a></figure>

<figcaption>Honda Demo is available for download, together with StarForce DRM. Don’t try it on Windows 10.</figcaption>
</figure>

<p>In the Bonus Codes Generator, I also included a checkbox to only generate the Honda codes,
to emulate the 2006 experience of getting those free cheats (minus all the personal data Honda wanted in return).</p>

<h2 id="note-for-pc-players"><a href="#note-for-pc-players"></a>Note for PC players</h2>

<p>TOCA Race Driver 2 &amp; 3 have a bug where the access code fails to generate properly on 64-bit systems and always displays
<code class="language-plaintext highlighter-rouge">4294967</code> (in Race Driver 2) or <code class="language-plaintext highlighter-rouge">????</code> (in Race Driver 3). For a fix, see <a href="/mods/toca-race-driver-series/">TOCA Race Driver (series)</a>.
<strong>If</strong> I ever make a SilentPatch for these games, this fix will be included there too – but for now, a standalone fix is enough.</p>]]></content><author><name>Silent</name></author><category term="Research" /><category term="Releases" /><summary type="html"><![CDATA[Reversing RSA using Wolfram Alpha.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://silentsblog.com/assets/img/bonuscodes/bonuscodes-banner.png" /><media:content medium="image" url="https://silentsblog.com/assets/img/bonuscodes/bonuscodes-banner.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="en"><title type="html">Discovering cheat codes in Midnight Club: L.A. Remix</title><link href="https://silentsblog.com/2023/12/27/midnight-club-la-remix-cheat-codes/" rel="alternate" type="text/html" title="Discovering cheat codes in Midnight Club: L.A. Remix" /><published>2023-12-27T17:35:00+00:00</published><updated>2023-12-27T17:35:00+00:00</updated><id>https://silentsblog.com/2023/12/27/midnight-club-la-remix-cheat-codes</id><content type="html" xml:base="https://silentsblog.com/2023/12/27/midnight-club-la-remix-cheat-codes/"><![CDATA[<ul id="markdown-toc">
  <li><a href="#introduction" id="markdown-toc-introduction">Introduction</a></li>
  <li><a href="#list-of-cheat-codes" id="markdown-toc-list-of-cheat-codes">List of cheat codes</a></li>
  <li><a href="#the-obfuscation-algorithm" id="markdown-toc-the-obfuscation-algorithm">The obfuscation algorithm</a></li>
</ul>

<h2 id="introduction"><a href="#introduction"></a>Introduction</h2>

<p>As of the time of writing this post, it was yesterday when I learned that <a href="https://en.wikipedia.org/wiki/Midnight_Club:_Los_Angeles#Midnight_Club:_L.A._Remix">Midnight Club: L.A. Remix</a>
has a dedicated menu to input the cheat codes, but no known codes exist.
<a href="https://web.archive.org/web/20231227135328/https://gamefaqs.gamespot.com/psp/945896-midnight-club-la-remix/answers/14171-cheats">Numerous claims about different cheat codes circulate</a>,
but they appear to be all fake. Inspired by the recent findings in <a href="https://twitter.com/Nenkaai/status/1639763447826071554">Gran Turismo 4</a>
and <a href="https://www.reddit.com/r/granturismo/comments/1869me9/gt_psp_cheat_codes_found_all_cars_and_maximum/">Gran Turismo PSP</a>, I dived into MCLA Remix to look for the cheat codes.</p>

<p>A brief look around the game’s code reveals the game has <strong>11 previously unknown cheat codes</strong>, with 12 more prototype-only cheat codes that are locked by default!
The game locks them behind a check against the serial hardcoded in the executable – and only allows to use those cheat codes on the prototype (<code class="language-plaintext highlighter-rouge">ULET</code>/<code class="language-plaintext highlighter-rouge">ULUT</code>) builds.</p>

<h2 id="list-of-cheat-codes"><a href="#list-of-cheat-codes"></a>List of cheat codes</h2>

<p><em>This list can also be found in <a href="/bonuscodes/midnight-club-la-remix/">Bonus Codes</a>.</em></p>

<p>These are the cheat codes supported by the game out of the box:</p>

<div class="bonuscodes output">
    <div class="border tr"></div>
    <div class="content">
      <dl>
         
            <div><dt>Unlock all Arcade Mode content:</dt> <dd>confidential</dd></div>
         
            <div><dt>Stronger special ability effects:</dt> <dd>mmmungo</dd></div>
         
            <div><dt>Agro ability on all eligible vehicles:</dt> <dd>ragevirus</dd></div>
         
            <div><dt>Zone ability on all eligible vehicles:</dt> <dd>stayontarget</dd></div>
         
            <div><dt>Roar ability on all eligible vehicles:</dt> <dd>sushi</dd></div>
         
            <div><dt>Indestructibility:</dt> <dd>granite</dd></div>
         
            <div><dt>Orb biker heads:</dt> <dd>skidlida</dd></div>
         
            <div><dt>Pumpkin biker heads:</dt> <dd>skidlidb</dd></div>
         
            <div><dt>Bunny biker heads:</dt> <dd>skidlidc</dd></div>
         
            <div><dt>Snowman biker heads:</dt> <dd>skidlidd</dd></div>
         
            <div><dt>Skull biker heads:</dt> <dd>skidlide</dd></div>
         
      </dl>
    </div>
    <div class="border bl"></div>
</div>

<p>Prototype-only cheat codes check against the prototype serial. They can be accessed once this check is patched out:</p>
<div class="bonuscodes output">
    <div class="border tr"></div>
    <div class="content">
      <dl>
         
            <div><dt>Unlock everything:</dt> <dd>all</dd></div>
         
            <div><dt>Get $4.200.000:</dt> <dd>cash</dd></div>
         
            <div><dt>Unlock all cities:</dt> <dd>cities</dd></div>
         
            <div><dt>Unlock all car parts:</dt> <dd>parts</dd></div>
         
            <div><dt>Unlock all vehicles:</dt> <dd>cars</dd></div>
         
            <div><dt>Unlock everything and get $4.200.000:</dt> <dd>allcash</dd></div>
         
            <div><dt>Zone ability on all vehicles:</dt> <dd>zone</dd></div>
         
            <div><dt>Agro ability on all vehicles:</dt> <dd>agro</dd></div>
         
            <div><dt>Roar ability on all vehicles:</dt> <dd>roar</dd></div>
         
            <div><dt>Reset the ability cheats:</dt> <dd>normal</dd></div>
         
            <div><dt>Display the camera coordinates on the screen:</dt> <dd>cam</dd></div>
         
            <div><dt>[no effect]:</dt> <dd>fps</dd></div>
         
      </dl>
    </div>
    <div class="border bl"></div>
</div>

<p>To unlock the prototype cheat codes in the final game builds, use the following cheats in <a href="https://www.ppsspp.org/">PPSSPP</a> or in cwCheat on your PSP/PS Vita:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>_S ULUS-10383
_G Midnight Club: L.A. Remix [US]
_C1 Unlock prototype cheats
_L 0x20067094 0x00000000

_S ULES-01144
_G Midnight Club: L.A. Remix [EU]
_C1 Unlock prototype cheats
_L 0x20067094 0x00000000

_S ULJS-00180
_G Midnight Club: L.A. Remix [JP]
_C1 Unlock prototype cheats
_L 0x20068A54 0x00000000

_S ULJM-05904
_G Midnight Club: L.A. Remix (Rockstar Classics) [JP]
_C1 Unlock prototype cheats
_L 0x20068A54 0x00000000
</code></pre></div></div>

<hr />

<p>Most of the cheats are quite standard and not that interesting, but the <strong>Stronger special ability effects</strong> cheat is an exception – it makes a Roar ability look quite entertaining:</p>
<figure class="fig-entry">
    <video playsinline="" controls="" src="/assets/img/posts/mcla-remix-cheats/mcla-roar.mp4">Your browser does not support the video tag.</video><figcaption>This effect is usually not <em>that</em> strong.</figcaption></figure>

<p>Additionally, the 5 secret biker head models appear to be reused from the PSP version of Midnight Club 3: DUB Edition:</p>
<figure class="media-container small">
<figure class="fig-entry"><a href="/assets/img/posts/mcla-remix-cheats/ULUS10383_00000.jpg" target="_blank"><img src="/assets/img/posts/mcla-remix-cheats/ULUS10383_00000.jpg" alt="" width="1024" height="1024" /></a></figure>

<figure class="fig-entry"><a href="/assets/img/posts/mcla-remix-cheats/ULUS10383_00001.jpg" target="_blank"><img src="/assets/img/posts/mcla-remix-cheats/ULUS10383_00001.jpg" alt="" width="1024" height="1024" /></a></figure>

<figure class="fig-entry"><a href="/assets/img/posts/mcla-remix-cheats/ULUS10383_00002.jpg" target="_blank"><img src="/assets/img/posts/mcla-remix-cheats/ULUS10383_00002.jpg" alt="" width="1024" height="1024" /></a></figure>

<figure class="fig-entry"><a href="/assets/img/posts/mcla-remix-cheats/ULUS10383_00003.jpg" target="_blank"><img src="/assets/img/posts/mcla-remix-cheats/ULUS10383_00003.jpg" alt="" width="1024" height="1024" /></a></figure>

<figure class="fig-entry"><a href="/assets/img/posts/mcla-remix-cheats/ULUS10383_00004.jpg" target="_blank"><img src="/assets/img/posts/mcla-remix-cheats/ULUS10383_00004.jpg" alt="" width="1024" height="1024" /></a></figure>

</figure>

<h2 id="the-obfuscation-algorithm"><a href="#the-obfuscation-algorithm"></a>The obfuscation algorithm</h2>

<p>The cheat strings use an obfuscation algorithm to “hide” them, presumably to make them harder to spot when disassembling the executable.
The algorithm used is simple and reversible – to document all the cheat codes, I wrote a small decryption program, and later simplified it and cleaned it up
with the help of <a href="https://github.com/Nenkai">Nenkai</a>.</p>

<p>The encryption and decryption routines are as follows:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">def</span> <span class="nf">encryptCheat</span><span class="p">(</span><span class="n">cheat</span><span class="p">):</span>
    <span class="n">output</span> <span class="o">=</span> <span class="sh">""</span>

    <span class="n">inputSalt</span> <span class="o">=</span> <span class="nf">ord</span><span class="p">(</span><span class="sh">'</span><span class="s">E</span><span class="sh">'</span><span class="p">)</span>
    <span class="k">for</span> <span class="n">ch</span> <span class="ow">in</span> <span class="n">cheat</span><span class="p">:</span>
        <span class="n">char</span> <span class="o">=</span> <span class="nf">ord</span><span class="p">(</span><span class="n">ch</span><span class="p">)</span> <span class="o">+</span> <span class="n">inputSalt</span>
        <span class="n">outputSalt</span> <span class="o">=</span> <span class="nf">ord</span><span class="p">(</span><span class="sh">'</span><span class="s">{</span><span class="sh">'</span> <span class="k">if</span> <span class="n">char</span> <span class="o">&lt;</span> <span class="nf">ord</span><span class="p">(</span><span class="sh">'</span><span class="s">A</span><span class="sh">'</span><span class="p">)</span> <span class="k">else</span> <span class="sh">'</span><span class="s">A</span><span class="sh">'</span><span class="p">)</span>
        <span class="n">output</span> <span class="o">+=</span> <span class="nf">chr</span><span class="p">(((</span><span class="n">char</span> <span class="o">-</span> <span class="nf">ord</span><span class="p">(</span><span class="sh">'</span><span class="s">A</span><span class="sh">'</span><span class="p">))</span> <span class="o">%</span> <span class="mi">58</span><span class="p">)</span> <span class="o">+</span> <span class="n">outputSalt</span><span class="p">)</span>
        <span class="n">inputSalt</span> <span class="o">+=</span> <span class="mi">1</span>
    <span class="k">return</span> <span class="n">output</span>

<span class="k">def</span> <span class="nf">decryptCheat</span><span class="p">(</span><span class="n">cheat</span><span class="p">):</span>
    <span class="n">output</span> <span class="o">=</span> <span class="sh">""</span>

    <span class="n">inputSalt</span> <span class="o">=</span> <span class="nf">ord</span><span class="p">(</span><span class="sh">'</span><span class="s">E</span><span class="sh">'</span><span class="p">)</span>
    <span class="k">for</span> <span class="n">ch</span> <span class="ow">in</span> <span class="n">cheat</span><span class="p">:</span>
        <span class="n">charOrd</span> <span class="o">=</span> <span class="p">(</span><span class="nf">ord</span><span class="p">(</span><span class="n">ch</span><span class="p">)</span> <span class="o">-</span> <span class="nf">ord</span><span class="p">(</span><span class="sh">'</span><span class="s">A</span><span class="sh">'</span><span class="p">)</span> <span class="o">-</span> <span class="n">inputSalt</span><span class="p">)</span> <span class="o">%</span> <span class="mi">58</span>
        <span class="n">output</span> <span class="o">+=</span> <span class="nf">chr</span><span class="p">(</span><span class="n">charOrd</span> <span class="o">+</span> <span class="nf">ord</span><span class="p">(</span><span class="sh">'</span><span class="s">A</span><span class="sh">'</span><span class="p">))</span>
        <span class="n">inputSalt</span> <span class="o">+=</span> <span class="mi">1</span>
    <span class="k">return</span> <span class="n">output</span>

<span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="sh">"</span><span class="s">__main__</span><span class="sh">"</span><span class="p">:</span>
    <span class="nf">print</span><span class="p">(</span><span class="sh">'</span><span class="s">Cheats:</span><span class="sh">'</span><span class="p">)</span>
    <span class="n">cheats</span> <span class="o">=</span> <span class="p">[</span>
        <span class="sh">'</span><span class="s">nAAtxtvFMCvH</span><span class="sh">'</span><span class="p">,</span>
        <span class="sh">'</span><span class="s">xyzICwF</span><span class="sh">'</span><span class="p">,</span>
        <span class="sh">'</span><span class="s">CmtsKyIML</span><span class="sh">'</span><span class="p">,</span>
        <span class="sh">'</span><span class="s">DFnMDDKsKAzP</span><span class="sh">'</span><span class="p">,</span>
        <span class="sh">'</span><span class="s">DGFvx</span><span class="sh">'</span><span class="p">,</span>
        <span class="sh">'</span><span class="s">rDnBxJv</span><span class="sh">'</span><span class="p">,</span>
        <span class="sh">'</span><span class="s">DwvrAyus</span><span class="sh">'</span><span class="p">,</span>
        <span class="sh">'</span><span class="s">DwvrAyut</span><span class="sh">'</span><span class="p">,</span>
        <span class="sh">'</span><span class="s">DwvrAyuu</span><span class="sh">'</span><span class="p">,</span>
        <span class="sh">'</span><span class="s">DwvrAyuv</span><span class="sh">'</span><span class="p">,</span>
        <span class="sh">'</span><span class="s">DwvrAyuw</span><span class="sh">'</span><span class="p">,</span>
    <span class="p">]</span>
    <span class="k">for</span> <span class="n">ch</span> <span class="ow">in</span> <span class="n">cheats</span><span class="p">:</span>
        <span class="nf">print</span><span class="p">(</span><span class="sa">f</span><span class="sh">'</span><span class="si">{</span><span class="n">ch</span><span class="si">}</span><span class="s">: </span><span class="si">{</span><span class="nf">decryptCheat</span><span class="p">(</span><span class="n">ch</span><span class="p">)</span><span class="si">}</span><span class="sh">'</span><span class="p">)</span>

    <span class="nf">print</span><span class="p">(</span><span class="sh">''</span><span class="p">)</span>
    <span class="nf">print</span><span class="p">(</span><span class="sh">'</span><span class="s">Prototype cheats:</span><span class="sh">'</span><span class="p">)</span>
    <span class="n">prototype_cheats</span> <span class="o">=</span> <span class="p">[</span>
        <span class="sh">'</span><span class="s">lxy</span><span class="sh">'</span><span class="p">,</span>
        <span class="sh">'</span><span class="s">nmz</span><span class="sh">'</span><span class="p">,</span>
        <span class="sh">'</span><span class="s">qBF</span><span class="sh">'</span><span class="p">,</span>
        <span class="sh">'</span><span class="s">nmFv</span><span class="sh">'</span><span class="p">,</span>
        <span class="sh">'</span><span class="s">nuGwtI</span><span class="sh">'</span><span class="p">,</span>
        <span class="sh">'</span><span class="s">AmEHH</span><span class="sh">'</span><span class="p">,</span>
        <span class="sh">'</span><span class="s">nmEG</span><span class="sh">'</span><span class="p">,</span>
        <span class="sh">'</span><span class="s">lxyqpIy</span><span class="sh">'</span><span class="p">,</span>
        <span class="sh">'</span><span class="s">KAAs</span><span class="sh">'</span><span class="p">,</span>
        <span class="sh">'</span><span class="s">lsEC</span><span class="sh">'</span><span class="p">,</span>
        <span class="sh">'</span><span class="s">CAnF</span><span class="sh">'</span><span class="p">,</span>
        <span class="sh">'</span><span class="s">yAEApB</span><span class="sh">'</span>
    <span class="p">]</span>
    <span class="k">for</span> <span class="n">ch</span> <span class="ow">in</span> <span class="n">prototype_cheats</span><span class="p">:</span>
        <span class="nf">print</span><span class="p">(</span><span class="sa">f</span><span class="sh">'</span><span class="si">{</span><span class="n">ch</span><span class="si">}</span><span class="s">: </span><span class="si">{</span><span class="nf">decryptCheat</span><span class="p">(</span><span class="n">ch</span><span class="p">)</span><span class="si">}</span><span class="sh">'</span><span class="p">)</span>
</code></pre></div></div>]]></content><author><name>Silent</name></author><category term="Research" /><summary type="html"><![CDATA[Official cheat codes found 15 years after the release.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://silentsblog.com/assets/img/games/bg/midnight-club-la-remix.jpg" /><media:content medium="image" url="https://silentsblog.com/assets/img/games/bg/midnight-club-la-remix.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="en"><title type="html">Exploring the history of Juiced through prototypes and PC demos</title><link href="https://silentsblog.com/2023/10/21/juiced-acclaim-and-pc-demos/" rel="alternate" type="text/html" title="Exploring the history of Juiced through prototypes and PC demos" /><published>2023-10-21T13:05:00+00:00</published><updated>2023-10-21T13:05:00+00:00</updated><id>https://silentsblog.com/2023/10/21/juiced-acclaim-and-pc-demos</id><content type="html" xml:base="https://silentsblog.com/2023/10/21/juiced-acclaim-and-pc-demos/"><![CDATA[<ul id="markdown-toc">
  <li><a href="#introduction" id="markdown-toc-introduction">Introduction</a></li>
  <li><a href="#chapter-1-who-was-juice-games-what-is-juiced" id="markdown-toc-chapter-1-who-was-juice-games-what-is-juiced">Chapter 1: Who was Juice Games? What is Juiced?</a></li>
  <li><a href="#chapter-2-acclaim-demos" id="markdown-toc-chapter-2-acclaim-demos">Chapter 2: Acclaim Demos</a>    <ul>
      <li><a href="#may-2004-demo" id="markdown-toc-may-2004-demo"><span><time datetime="2004-05">May 2004</time> Demo</span></a></li>
      <li><a href="#june-2004-demo" id="markdown-toc-june-2004-demo"><span><time datetime="2004-06">June 2004</time> Demo</span></a></li>
      <li><a href="#july-2004-demo" id="markdown-toc-july-2004-demo"><span><time datetime="2004-07">July 2004</time> Demo</span></a></li>
      <li><a href="#acclaim-silentpatch-fixes" id="markdown-toc-acclaim-silentpatch-fixes">Fixes included in SilentPatch &amp; Enhanced PC Demo</a></li>
    </ul>
  </li>
  <li><a href="#chapter-3-thq-demos" id="markdown-toc-chapter-3-thq-demos">Chapter 3: THQ Demos</a>    <ul>
      <li><a href="#january-2005-demo" id="markdown-toc-january-2005-demo"><span><time datetime="2005-01">January 2005</time> Demo</span></a></li>
      <li><a href="#april-2005-demo-v20" id="markdown-toc-april-2005-demo-v20"><span><time datetime="2005-04">April 2005</time> Demo (v2.0)</span></a></li>
      <li><a href="#may-2005-demo-v21" id="markdown-toc-may-2005-demo-v21"><span><time datetime="2005-05">May 2005</time> Demo (v2.1)</span></a></li>
      <li><a href="#thq-silentpatch-fixes" id="markdown-toc-thq-silentpatch-fixes">Fixes included in SilentPatch &amp; Enhanced PC Demo</a></li>
    </ul>
  </li>
  <li><a href="#chapter-4-ps2-prototypes-briefly" id="markdown-toc-chapter-4-ps2-prototypes-briefly">Chapter 4: PS2 Prototypes, briefly</a>    <ul>
      <li><a href="#60-fps" id="markdown-toc-60-fps">60 FPS</a></li>
      <li><a href="#progressive-scan" id="markdown-toc-progressive-scan">Progressive Scan</a></li>
      <li><a href="#fixed-widescreen" id="markdown-toc-fixed-widescreen">Fixed Widescreen</a></li>
      <li><a href="#dnas-bypass" id="markdown-toc-dnas-bypass">DNAS Bypass</a></li>
    </ul>
  </li>
  <li><a href="#downloads" id="markdown-toc-downloads">Downloads</a></li>
  <li><a href="#credits-and-acknowledgments" id="markdown-toc-credits-and-acknowledgments">Credits and acknowledgments</a></li>
</ul>

<h2 id="introduction"><a href="#introduction"></a>Introduction</h2>

<p>Usually, when I dissect games on this blog, I don’t give much attention to demos. However, due to its troubled
development cycle, <a href="https://en.wikipedia.org/wiki/Juiced_(video_game)" target="_blank">Juiced</a> is an exceptional case.
Because of the game changing publishers right before the original release date, the game has changed considerably
– and thanks to PC demos and leaked PS2/Xbox prototypes, we have a unique opportunity to experience the game in its original form.</p>

<p>This post is the first in the series of <a href="/categories/#Research">Research</a>-style posts.
I intend to keep updating posts in this category as new information comes in instead of publishing new posts about the same game,
so keep an eye on this category from time to time 😉
In this post, instead of focusing on modifying Juiced, I want to showcase the game and its history through the evolution of
all 6 PC demos that are available online. They all have minor compatibility issues, so for that, I’m releasing
the first strictly demo-oriented SilentPatch with two clear goals:</p>
<ol>
  <li>Fix the demos just enough for them to be playable without compatibility issues. I wish to preserve those demos in their original state,
  so I focused solely on critical bugs. This means that separate <kbd><samp>Quit</samp></kbd> and <kbd><samp>Quit Game</samp></kbd> options
  present in the Acclaim demos are here to stay for the sake of history 😉 Despite the limited scope of this SilentPatch, it should still make for an entertaining
  read – since the bugs I fixed range from incorrect math behind the field of view calculations, compatibility bugs, through (for the first time)
  a possible compiler/optimizer bug breaking the game’s code!</li>
  <li>(Optionally) unlock the demos as much as possible. Early demos had widescreen support from the console versions left unused,
  and they all ship more content than was made available officially. Since I want to use those PC demos as a showcase of “the game that never came to be”,
  I want everyone to enjoy them to the fullest.</li>
</ol>

<p>Not interested in demos and you’d rather experience the full prototype builds? I have something for you too.
As part of my research, I was playtesting those builds too, and later I created several small patches for the PS2 versions – including a 60 FPS
hack and <strong>a patch to make those prototypes playable online via <a href="https://ps2online.com/" target="_blank">PS2Online</a>!</strong>
The latest builds to surface online are developed so far that you can even play them through the Internet.</p>

<h2 id="chapter-1-who-was-juice-games-what-is-juiced"><a href="#chapter-1-who-was-juice-games-what-is-juiced"></a>Chapter 1: Who was Juice Games? What is Juiced?</h2>

<p>The history of Juiced and Juice Games isn’t told in full without mentioning <a href="https://en.wikipedia.org/wiki/Rage_Games" target="_blank">Rage Software</a>.
This British studio was responsible (among other games) for racing games like <a href="https://en.wikipedia.org/wiki/E-racer" target="_blank">E-racer</a>
or <a href="https://en.wikipedia.org/wiki/Off-Road_Redneck_Racing" target="_blank">Off-Road Redneck Racing</a>, however, they were also working on
<a href="https://en.wikipedia.org/wiki/Lamborghini_(video_game)" target="_blank">Lamborghini</a> – a racing game <a href="https://www.ign.com/articles/2002/05/24/e3-2002-first-lamborghini-shots" target="_blank">announced in <time datetime="2002-05">May 2002</time></a>
that promised to feature every single car model from this Italian automaker.<sup id="fnref:lamborghini-cars"><a href="#fn:lamborghini-cars" class="footnote" rel="footnote" role="doc-noteref">1</a></sup></p>

<figure class="media-container small">
<figure class="fig-entry"><a href="https://files.hiddenpalace.org/8/80/LamborghiniDec10_4.png" target="_blank"><img src="https://files.hiddenpalace.org/8/80/LamborghiniDec10_4.png" alt="" width="640" height="480" /></a></figure>

<figure class="fig-entry"><a href="https://files.hiddenpalace.org/e/e9/LamborghiniDec10_7.png" target="_blank"><img src="https://files.hiddenpalace.org/e/e9/LamborghiniDec10_7.png" alt="" width="640" height="480" /></a></figure>

</figure>

<p>Unfortunately, Rage Software
<a href="https://www.gamespot.com/articles/rage-software-closes-its-doors/1100-2908866/" target="_blank">went bankrupt</a> in <time datetime="2003-01">January 2003</time>, just before they could release the game.
Lamborghini became a lost media, with only an Xbox Demo surviving, at least until <time datetime="2022-05">May 2022</time>,
when a nearly finished beta build <a href="https://hiddenpalace.org/Lamborghini_(Dec_10,_2002_prototype)" target="_blank">has been published on HiddenPalace</a>.</p>

<p>Not long after, part of the Rage Software staff founded Juice Games.
Even on their <a href="https://web.archive.org/web/20081003032009/http://www.juicegames.com:80/html/company.html" target="_blank">official website</a>,
they were always upfront about their Rage Software roots:</p>

<blockquote>
  <p>With a back catalogue that includes TFX, EF2000 <strong>and the critically acclaimed but unreleased Lamborghini</strong>,
Juice Games developed the multi-million unit selling Juiced franchise.</p>
</blockquote>

<p>Sometime in <time datetime="2003">2003</time>, the team secured funding from <a href="https://www.gamesindustry.biz/fund4games-a-new-funding-model-for-development" target="_blank">Fund4Games</a>
and a publishing deal with <a href="https://en.wikipedia.org/wiki/Acclaim_Entertainment" target="_blank">Acclaim Entertainment</a> (who needed a new racing title after losing
the publishing rights for Burnout) for their new game, <strong>Juice</strong>.
While the game was never officially referred to by this name, thanks to a very early prototype we know this name was in use at least until <time datetime="2003-11">November 2003</time>.</p>

<figure class="iframe-entry"><iframe src="https://www.youtube.com/embed/4rx5WTrZkTs" allowfullscreen=""></iframe></figure>

<p>By the time Juice Games officially <a href="https://www.ign.com/articles/2004/01/22/juice-games-announces-juiced" target="_blank">announced the game in <time datetime="2004-01">January 2004</time></a>,
it was already known by its final name and set for a <time datetime="2004-09">Fall 2004</time> release. The development process under Acclaim was relatively well documented,
with multiple websites showcasing the game in its early state<sup id="fnref:ign-preview"><a href="#fn:ign-preview" class="footnote" rel="footnote" role="doc-noteref">2</a></sup> <sup id="fnref:gamespot-preview"><a href="#fn:gamespot-preview" class="footnote" rel="footnote" role="doc-noteref">3</a></sup> <sup id="fnref:eurogamer-preview"><a href="#fn:eurogamer-preview" class="footnote" rel="footnote" role="doc-noteref">4</a></sup>, and with demos on all platforms releasing around
<time datetime="2004-07">July 2004</time>.
In fact, you could say that they released one demo too many – on <time datetime="2004-06-09">June 9, 2004</time>,
<a href="https://www.ign.com/articles/2004/06/09/juiced-demo-released" target="_blank">a PC demo was released</a> early by the German division of Acclaim,
then <a href="https://web.archive.org/web/20040521201131/http://www.acclaim.de:80/" target="_blank">promptly delisted</a> on <time datetime="2004-06-11">June 11, 2004</time>. and scrubbed from the internet thoroughly:</p>

<blockquote>
  <p><strong>Juiced Demo</strong></p>

  <p>The Juiced demo was taken from the server because it does not show the final status of the game.
A new demo will be available as soon as possible. Thank you for your interest!</p>
</blockquote>

<p>A “final” Acclaim demo was eventually <a href="https://www.ign.com/articles/2004/07/14/updated-juiced-demo" target="_blank">released on <time datetime="2004-07-14">July 14, 2004</time></a>,
in a much better state than the first one. While Acclaim has done a good job replacing the early demo with a proper build,
some downloads survived thanks to <a href="https://archive.org/web/" target="_blank">Wayback Machine</a> and we can experience this early demo with all its issues – but more on that later 😉</p>

<p>Thanks to <a href="https://hiddenpalace.org/Category:Juiced_prototypes" target="_blank">many prototypes surfacing online</a>, we know that by <time datetime="2004-08">August 2004</time> the game was nearly complete,
and reviews stated <a href="https://www.gamespot.com/articles/juiced-preview/1100-6104070/" target="_blank">the game was to be released in <time datetime="2004-09">September 2004</time></a>.</p>

<blockquote>
  <p>We’ll bring you more on Juiced as its early September release date approaches.</p>
</blockquote>

<p><a href="https://www.amazon.com/Acclaim-Ent-Juiced-complete-package-PlayStation/dp/B0001XASGC" target="_blank">An Amazon listing</a> attributed to Acclaim Entertainment exists
and lists the release date as <time datetime="2004-09-07">September 7, 2004</time>, although this listing doesn’t use Acclaim’s cover art.
Interestingly, <a href="https://www.amazon.co.uk/THQ-Juiced-PS2/dp/B000219OCC/" target="_blank">THQ listings</a> also exist and they have a different <abbr title="Amazon Standard Identification Number">ASIN</abbr>, but that may just be an US vs. EU Amazon.</p>

<figure class="fig-entry natural"><a href="https://cdn.mobygames.com/promos/7167894-juiced-other-playstation-2-preliminary-box-art.jpg" target="_blank"><img src="https://cdn.mobygames.com/promos/7167894-juiced-other-playstation-2-preliminary-box-art.jpg" alt="" width="565" height="800" /></a><figcaption>Even the original box art was revealed.</figcaption></figure>

<p>September release never happened, though – instead, Acclaim <a href="https://www.cnet.com/tech/gaming/game-maker-acclaim-files-for-bankruptcy/" target="_blank">filed for bankruptcy in <time datetime="2004-10">October 2004</time></a>
and the game’s future became unknown. This has all happened so late so some boxed copies of the game <a href="https://www.reddit.com/r/gamecollecting/comments/3r9y36/picked_up_the_cancelled_version_of_juiced_on_the/" target="_blank">ended up turning up online years later</a>, although there is no evidence of the game reaching the store shelves.</p>

<figure class="iframe-entry"><iframe src="https://www.youtube.com/embed/wNuw6uVv8ng" allowfullscreen=""></iframe></figure>

<blockquote class="twitter-tweet" data-align="center"><p lang="en" dir="ltr">- work for Rage Software<br />- develop a Lamborghini game nearly to completion<br />- studio bankrupts, game never releases<br />- move on to found Juice Games<br />- develop Juiced for Acclaim nearly to completion<br />- publisher bankrupts, new publisher modifies the game<br /><br />Folks had the worst luck :( <a href="https://t.co/wIwmERTVb7">pic.twitter.com/wIwmERTVb7</a></p>&mdash; Silent (@__silent_) <a href="https://twitter.com/__silent_/status/1704429355684766178?ref_src=twsrc%5Etfw">September 20, 2023</a></blockquote>
<script async="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<p>Before long, <a href="https://en.wikipedia.org/wiki/THQ">THQ</a> and Take-Two <a href="https://www.gamespot.com/articles/take-two-squeezing-juiced/1100-6108179/" target="_blank">both bid</a> to acquire rights to Juiced;
Electronics Arts also attempted to join the bid but failed to meet the deadline (and, honestly, it’s good that they didn’t manage to buy a direct competitor
to their own Need for Speed: Underground). <a href="https://www.gamedeveloper.com/pc/thq-wins-i-juiced-i-bidding-war" target="_blank">THQ eventually won</a> and moved the release date to
<time datetime="2005-05">Summer 2005</time>,
giving Juice Games <a href="https://www.eurogamer.net/i-juiced-june2005" target="_blank">5 more months</a> to make changes to the game. If the reviews were to be trusted,
that new iteration <a href="https://www.gamespot.com/articles/juiced-updated-hands-on/1100-6117203/" target="_blank">was received better than the Acclaim’s version</a>.
The public was also able to see the changes themselves first through a round of demos released in
<time datetime="2005-01">January 2005</time>, then in <time datetime="2005-05">May 2005</time>,
just before the game’s release. The game was eventually released on
<time datetime="2005-06-13">June 13, 2005</time> in North America and <time datetime="2005-06-17">June 17, 2005</time> in Europe.</p>

<hr />

<p>This brief recap of the game’s history brings me to the clue of this article. Even though Acclaim’s Juiced and THQ’s Juiced are not entirely different games,
the game went through some significant design changes. With no known full PC builds surviving, demos is all we have on this platform.
In my analysis, I’ll go through all 6 known PC demos and compare them one by one in the order of their internal timestamps.</p>

<h2 id="chapter-2-acclaim-demos"><a href="#chapter-2-acclaim-demos"></a>Chapter 2: Acclaim Demos</h2>

<p>All 3 Acclaim demos have content parity, at least when it comes to officially unlocked content:</p>
<ul>
  <li>3 cars with an option to pre-tune them</li>
  <li>1 selectable route in San Ricardo</li>
</ul>

<p>When it comes to locked content shipped with the files, there are a few differences.
In SilentPatch &amp; Enhanced PC Demo, all exclusive content is “ported” to the latest Acclaim Demo.</p>

<p>SilentPatch includes identical fixes for all 3 demos, and therefore I’ll be only <a href="#acclaim-silentpatch-fixes">highlighting them on the latest, most polished demo</a>.
Screenshots included in this chapter are all taken with SilentPatch installed, as otherwise I would have to take them in 4:3.
However, this is the <strong>only</strong> modified visual aspect of those demos.</p>

<h3 id="may-2004-demo"><a href="#may-2004-demo"></a><span><time datetime="2004-05">May 2004</time> Demo</span></h3>

<ul>
  <li>Compilation date: <strong><time datetime="2004-05-27T10:38:44+0000">Thursday, 27 May 2004 10:38:44</time></strong></li>
  <li>Download links: <a href="https://archive.org/download/gamefiles.blueyonder.co.uk/gamefiles.blueyonder.co.uk.tar/gamefiles.blueyonder.co.uk%2Fblueyondergames%2Fdemos%2Fjuiced_demo.zip">DOWNLOAD</a> (retrieved)</li>
  <li>Worth testing: <strong style="color:red">NO</strong> (too buggy)</li>
</ul>

<p>As mentioned previously, this demo was accidentally <a href="https://www.ign.com/articles/2004/06/09/juiced-demo-released">released online early</a>, and it shows.
Acclaim’s attempts to scrub this version off the internet were mostly successful, as the above download link is virtually the only source I could find online.
This build has a range of issues, ranging from regular crashes, graphical artifacts,
and missing PC features, to an unimplemented Quit (<kbd>Alt</kbd> + <kbd>F4</kbd> doesn’t work either!). Even ignoring all those, as far as I can tell,
a Nitrous button is completely unmapped in this build, and unlike later builds, this one doesn’t give the player an option to redefine controls.</p>

<figure class="media-container small">
<figure class="fig-entry"><a href="/assets/img/posts/juiced-research/screens/Juiced_5XeRWcy9N2.png" target="_blank"><img src="/assets/img/posts/juiced-research/screens/thumb/Juiced_5XeRWcy9N2.jpg" alt="" width="1024" height="576" /></a></figure>

<figure class="fig-entry"><a href="/assets/img/posts/juiced-research/screens/Juiced_5rEPO69pXg.png" target="_blank"><img src="/assets/img/posts/juiced-research/screens/thumb/Juiced_5rEPO69pXg.jpg" alt="" width="1024" height="576" /></a></figure>

</figure>

<p>It doesn’t even have a game icon.</p>

<figure class="fig-entry natural"><img src="/assets/img/posts/juiced-research/may-icons.jpg" alt="" width="612" height="44" /></figure>

<p>Although this demo has 3 cars available by default, it also ships a 4th car – <strong>Toyota MR2</strong>. In SilentPatch &amp; Enhanced PC Demo, this car has been made selectable.
Since I included this car in the mod package, it’s now also available in later demos.</p>

<figure class="fig-entry" id="toyota-mr2"><a href="/assets/img/posts/juiced-research/screens/Juiced_5eOw0UtSdM.png" target="_blank"><img src="/assets/img/posts/juiced-research/screens/thumb/Juiced_5eOw0UtSdM.jpg" alt="" width="1024" height="576" /></a><figcaption>Fonts don’t scale either.</figcaption></figure>

<p>Unlike later demos, a <kbd><samp>Videos</samp></kbd> menu entry is available, with 3 small game teasers available – although their appearance is slightly glitchy.</p>

<figure class="fig-entry"><a href="/assets/img/posts/juiced-research/screens/Juiced_RqI3nRZ7o3.png" target="_blank"><img src="/assets/img/posts/juiced-research/screens/thumb/Juiced_RqI3nRZ7o3.jpg" alt="" width="1024" height="576" /></a></figure>

<p>SilentPatch &amp; Enhanced PC Demo unlocks all shipped content in this demo, but there is a twist – <strong>in this build, the Sprint races work differently.</strong> Rather than taking place on the straight section of the road,
much like drag races in other games (or Sprints in the final version of the game), these Sprints take place on small sections of regular tracks.
Considering that the game mode works identically to the final game (including forced manual shifting), I initially thought it was a bug. However, as found by <strong>Eagle</strong>,
the final game includes unused minimaps for the Sprint races, and one of those minimaps closely resembles a playable track in this build.
It’s just speculation, but it is possible that this demo represents a work-in-progress redesign of this game mode,
or it was just not finalized yet and used sections of the existing tracks as placeholders.</p>

<figure class="media-container small">
<figure class="fig-entry"><a href="/assets/img/posts/juiced-research/aw.png" target="_blank"><img src="/assets/img/posts/juiced-research/aw.png" alt="" width="800" height="600" /></a></figure>

<figure class="fig-entry"><a href="/assets/img/posts/juiced-research/CH1.png" target="_blank"><img src="/assets/img/posts/juiced-research/CH1.png" alt="" width="800" height="600" /></a></figure>

<figure class="fig-entry"><a href="/assets/img/posts/juiced-research/eng.png" target="_blank"><img src="/assets/img/posts/juiced-research/eng.png" alt="" width="800" height="600" /></a></figure>

<figcaption>Credits: <strong>Eagle</strong></figcaption>
</figure>

<p>I also have <strong>not</strong> fixed the crashes exclusive to this demo, so it is barely playable even patched. IMO this demo is not worth the effort, except for its rarity.</p>

<h3 id="june-2004-demo"><a href="#june-2004-demo"></a><span><time datetime="2004-06">June 2004</time> Demo</span></h3>

<ul>
  <li>Compilation date: <strong><time datetime="2004-06-23T09:22:06+0000">Wednesday, 23 June 2004 09:22:06</time></strong></li>
  <li>Download links: <a href="https://files.hiddenpalace.org/1/11/Juiced_%28Jun_2%2C_2004_prototype%29.7z">DOWNLOAD</a>,
        <a href="https://archive.org/download/acclaim-qa-pc/Juiced%20%28June%202%2C%202004%29%20%28Build%20PCJUIOFD003%29.7z">MIRROR</a>; the installer doesn’t allow picking an installation directory by default, <a href="#acclaim-installers">see below</a> for a fix</li>
  <li>Worth testing: <strong style="color:red">NO</strong> (just get the July demo)</li>
</ul>

<p>This build is a prototype demo retrieved from <a href="https://www.sega-dreamcast-info-games-preservation.com/en/duffy-s-collection-partie-2-acclaim-prototype-iso">Duffy’s Dreamcast Collection</a>
– a bunch of prototypes from an ex-Acclaim beta tester <strong>Duffy</strong>, who passed away recently. Compared to the May demo, it’s much more polished – all issues I mentioned
(except for the texts not scaling to resolution) have been fixed. Comparison screenshots show several obvious differences.</p>

<figure class="media-container small">
<figure class="fig-entry">
    <div class="juxtapose" data-startingposition="">
        <img src="/assets/img/posts/juiced-research/screens/juxtapose/Juiced_laDHj6Gwf9.jpg" data-label="May 2004" alt="May 2004" width="1024" height="576" />
        <img src="/assets/img/posts/juiced-research/screens/juxtapose/Juiced_pkIBVvtInu.jpg" data-label="June 2004" alt="June 2004" width="1024" height="576" />
    </div></figure>

<figure class="fig-entry">
    <div class="juxtapose" data-startingposition="">
        <img src="/assets/img/posts/juiced-research/screens/juxtapose/Juiced_y3tpqe9WVS.jpg" data-label="May 2004" alt="May 2004" width="1024" height="576" />
        <img src="/assets/img/posts/juiced-research/screens/juxtapose/Juiced_XJc5v9apQw.jpg" data-label="June 2004" alt="June 2004" width="1024" height="576" />
    </div></figure>

<figure class="fig-entry">
    <div class="juxtapose" data-startingposition="">
        <img src="/assets/img/posts/juiced-research/screens/juxtapose/Juiced_YGROHPWmIP.jpg" data-label="May 2004" alt="May 2004" width="1024" height="576" />
        <img src="/assets/img/posts/juiced-research/screens/juxtapose/Juiced_XOMk76rR89.jpg" data-label="June 2004" alt="June 2004" width="1024" height="576" />
    </div></figure>

</figure>

<p>Based on my observations, I could identify the following differences between May and June builds:</p>
<ul>
  <li>The title screen is slightly different, with <kbd><samp>PRESS ENTER</samp></kbd> relocated to the center of the screen.</li>
  <li>New intro copyright disclaimers.</li>
  <li>Car select UI has been rearranged slightly.</li>
  <li>New keyboard button prompts.</li>
  <li>Car names have been changed.</li>
  <li>Reflections in the car select screen are slightly toned down.</li>
  <li>Videos have been cut.</li>
  <li>Sprint races (unlocked by SilentPatch &amp; Enhanced PC Demo) now work like in the final game.</li>
  <li><kbd><samp>Exit Demo</samp></kbd> option has been added.</li>
  <li>Race HUD has been slightly changed not to feature black backgrounds.</li>
  <li>For some reason, motion blur is extremely overdone in this build.</li>
  <li>Pre-race cutscenes have different camera angles.</li>
  <li>Tire smoke is visible, while it was absent from the May build.</li>
  <li>The configurator app is slightly more fleshed out, with Shader Model 2.0 added. However, that introduced a bug where the application requires the Windows XP SP2 compatibility mode to run
(fixed in SilentPatch).</li>
  <li>Controls can now be remapped, although instead of an in-game remapper, <a href="https://community.pcgamingwiki.com/files/file/58-microsoft-directinput-mapper">DirectInput Mapper</a>
((in)famously removed from Windows Vista and newer) is used. The game must also be running in the windowed mode, or else it obscures the mapper window.</li>
</ul>

<figure class="fig-entry"><a href="/assets/img/posts/juiced-research/screens/Juiced_JGSrHwJ2h9.png" target="_blank"><img src="/assets/img/posts/juiced-research/screens/thumb/Juiced_JGSrHwJ2h9.jpg" alt="" width="1024" height="576" /></a></figure>

<p>Aside from the compatibility issues of the configurator app, this build also introduced a peculiar issue where the HUD flickers randomly. Since the July build was also affected,
I will explain this bug in detail <a href="#acclaim-silentpatch-fixes">below</a>.</p>

<h3 id="july-2004-demo"><a href="#july-2004-demo"></a><span><time datetime="2004-07">July 2004</time> Demo</span></h3>

<ul>
  <li>Compilation date: <strong><time datetime="2004-07-02T17:00:06+0000">Friday,  2 July 2004 17:00:06</time></strong></li>
  <li>Download links: <a href="https://download.cnet.com/juiced-final-demo/3000-7513_4-10295963.html">DOWNLOAD</a>,
          <a href="https://www.pcworld.pl/ftp/juiced-official-demo.html">MIRROR</a>; the installer doesn’t allow picking an installation directory by default, <a href="#acclaim-installers">see below</a> for a fix</li>
  <li>Worth testing: <strong style="color:green">YES</strong></li>
</ul>

<p>This demo is similar to the June build, but with a few additional fixes:</p>
<ul>
  <li>Texts are now scaling to resolution.</li>
  <li>The main menu has been slightly rearranged.</li>
  <li>Excessive motion blur from the June build appears to have been toned down.</li>
  <li>The bloom effect when activating nitrous is noticeably ramped up.</li>
  <li>Lighting (especially on cars) seems to be a little darker, as evidenced by the comparison screenshots.</li>
</ul>

<figure class="media-container small">
<figure class="fig-entry">
    <div class="juxtapose" data-startingposition="">
        <img src="/assets/img/posts/juiced-research/screens/thumb/Juiced_5rEPO69pXg.jpg" data-label="May 2004" alt="May 2004" width="1024" height="576" />
        <img src="/assets/img/posts/juiced-research/screens/juxtapose/Juiced_YR3rVipjAJ.jpg" data-label="July 2004" alt="July 2004" width="1024" height="576" />
    </div></figure>

<figure class="fig-entry">
    <div class="juxtapose" data-startingposition="">
        <img src="/assets/img/posts/juiced-research/screens/thumb/Juiced_JGSrHwJ2h9.jpg" data-label="June 2004" alt="June 2004" width="1024" height="576" />
        <img src="/assets/img/posts/juiced-research/screens/juxtapose/Juiced_VcNQfgLy7o.jpg" data-label="July 2004" alt="July 2004" width="1024" height="576" />
    </div></figure>

<figure class="fig-entry" id="june-july-lighting">
    <div class="juxtapose" data-startingposition="">
        <img src="/assets/img/posts/juiced-research/screens/juxtapose/Juiced_3pPERfVUUc.jpg" data-label="June 2004" alt="June 2004" width="1024" height="576" />
        <img src="/assets/img/posts/juiced-research/screens/juxtapose/Juiced_9byolLFsSJ.jpg" data-label="July 2004" alt="July 2004" width="1024" height="576" />
    </div></figure>

</figure>

<h3 id="acclaim-silentpatch-fixes"><a href="#acclaim-silentpatch-fixes"></a>Fixes included in SilentPatch &amp; Enhanced PC Demo</h3>

<p>Since I want those Acclaim demos (especially the latest one) to be enjoyable to their fullest, SilentPatch includes several fixes for the most severe issues present in those builds.
As they are demos, they are inherently a work-in-progress product and so most of those issues shouldn’t come as a surprise, for that reason I also have not fixed any gameplay shortcomings.
I want those demos to be playable, but I don’t want to distort their “history” by “completing” them. Here are the highlights of this release:</p>

<ul>
  <li>All shipped content has been unlocked. This increases the amount of in-game content from 1 route in the Race mode and 3 selectable cars to:
    <ul>
      <li>4 selectable cars (<a href="#toyota-mr2">Toyota MR2 from the May demo</a> has been added and made usable).</li>
      <li>4 routes in the Race mode + reverse variants + 1 Point-to-Point race.</li>
      <li>Sprint race.</li>
      <li>Showoff (Cruise) mode.</li>
      <li>Solo mode.</li>
    </ul>

    <p>Additionally, the users may enable <strong>all</strong> menus with an INI option but do note that most menus are not finished and will softlock.</p>
  </li>
  <li>
    <p>3 teaser videos from the May demo have been included and re-enabled.</p>
  </li>
  <li>
    <p>The laps limit has been lifted from 2 to 6, like in the console prototype builds from a similar timeframe.</p>
  </li>
  <li>
    <p>In night and wet races, the limit of on-track cars has been lifted from 4 to 6. This appears to have been a purely performance-focused constraint,
and with modern PCs, we can easily brute force through it without any noticeable issues.</p>
  </li>
  <li id="acclaim-widescreen">Widescreen from the console builds has been re-enabled and further improved. The default widescreen option slightly distorts the aspect ratio and appears horizontally squashed
compared to 4:3. SilentPatch corrects this and additionally supports arbitrary aspect ratios, which means ultra widescreen now looks as expected.
The configuration application can now also select widescreen resolutions when in windowed mode.
    <figure class="fig-entry">
  <div class="juxtapose" data-startingposition="">
      <img src="/assets/img/posts/juiced-research/screens/juxtapose/Juiced_RlmB8wyX8f.jpg" data-label="Stock" alt="Stock" width="1024" height="576" />
      <img src="/assets/img/posts/juiced-research/screens/juxtapose/Juiced_44IkcUPlm6.jpg" data-label="SilentPatch" alt="SilentPatch" width="1024" height="576" />
  </div></figure>
  </li>
  <li>
    <p>The default driver name <code class="language-plaintext highlighter-rouge">Player1</code> can now be overridden via the INI file.</p>
  </li>
  <li>
    <p>All known compatibility issues have been fixed. <code class="language-plaintext highlighter-rouge">JuicedConfig.exe</code> no longer needs Windows XP SP2 compatibility mode to run.</p>
  </li>
  <li>
    <p>May 2004 Demo can now be quit by pressing <kbd>Alt</kbd> + <kbd>F4</kbd>.</p>
  </li>
  <li>
    <p>All game settings have been moved from registry to <code class="language-plaintext highlighter-rouge">settings.ini</code>. This makes demos fully portable and prevents them from overwriting
each other’s settings.</p>
  </li>
  <li>June and July demos introduced a bug where the UI elements flicker randomly, with seemingly no fix.
    <figure class="fig-entry">
  <video playsinline="" controls="" loop="" src="/assets/img/posts/juiced-research/juiced-flicker.mp4">Your browser does not support the video tag.</video><figcaption>In-game elements can also flicker like this (or worse), making for a miserable experience.</figcaption></figure>

    <p>I initially suspected this is similar to an issue present in <a href="/2020/03/29/silentpatch-scarface/">Scarface</a> (this is the second post in
a row where Scarface gets a shout-out), and to make matters worse, applying an identical fix (removing the <code class="language-plaintext highlighter-rouge">D3DLOCK_DISCARD</code> flag when locking the vertex buffers)
helped. However, that turned out to be a red herring, as the game’s usage of this flag was correct. I later identified this issue to be a <strong>potential compiler/optimizer bug!</strong>
<a href="https://en.wikipedia.org/wiki/X86_calling_conventions">x86 calling conventions</a> have strict requirements regarding the state of the <abbr title="Floating-Point Unit; part of the CPU responsible for floating-point calculations">FPU</abbr>…</p>
    <blockquote>
      <p>The x87 floating point registers ST0 to ST7 must be empty (popped or freed) when calling a new function, <strong>and ST1 to ST7 must be empty on exiting a function.</strong></p>
    </blockquote>

    <p>…however, the game’s code ignores this requirement when calling into one of the Direct3D 9 functions, either by a mistake in handwritten assembly code (unlikely)
or due to a compiler bug:</p>
    <div class="language-nasm highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nf">mov</span>     <span class="nb">esi</span><span class="p">,</span> <span class="nb">eax</span>
<span class="nf">mov</span>     <span class="kt">dword</span> <span class="nv">ptr</span> <span class="p">[</span><span class="nb">eax</span><span class="o">+</span><span class="mh">24h</span><span class="p">],</span> <span class="mi">1</span>
<span class="nf">call</span>    <span class="nv">LockVertexBuffer</span>
<span class="nf">fld</span>     <span class="nv">st</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> <span class="c1">; The code assumes this value was not changed by the above</span>
              <span class="c1">; function, but this is not guaranteed to be the case!</span>
<span class="nf">mov</span>     <span class="nb">ecx</span><span class="p">,</span> <span class="p">[</span><span class="nb">ebp</span><span class="o">+</span><span class="mi">0</span><span class="p">]</span>
</code></pre></div>    </div>
    <p>I authored a fix where <code class="language-plaintext highlighter-rouge">LockVertexBuffer</code> saves and restores the entire <abbr title="Floating-Point Unit; part of the CPU responsible for floating-point calculations">FPU</abbr> state, and lo and behold – the issue is fixed.
This is the first time I fixed a game issue that I suspect was caused by a compiler bug, but I’m not surprised too much;
I’ve already encountered such bugs multiple times in my programming career outside of reverse engineering games.</p>
  </li>
  <li>In-game music plays with crackles and pops in all 3 Acclaim demos. This bug, later fixed in THQ demos, occurs because
the game requests more data to be loaded from the disk after playback reaches a specific point in the audio track.
In the case of THQ demos, this happens when passing a mid-point of the 1-second-long chunk of loaded music, but in Acclaim demos this
marker is set to <strong>one byte</strong> before the end of the track. This obviously doesn’t allow the game to stream more data in time,
and that results in broken music playback. In SilentPatch, I mirrored the change made to the 2005 demos.
    <figure class="media-container small">
<figure class="fig-entry">
  <audio controls=""><source src="/assets/img/posts/juiced-research/music-stock.ogg" type="audio/ogg" /><source src="/assets/img/posts/juiced-research/music-stock.mp3" type="audio/mpeg" /><a href="/assets/img/posts/juiced-research/music-stock.ogg">Download audio</a>
  </audio><figcaption>By default, the music crackles quite a bit.</figcaption></figure>
<figure class="fig-entry">
  <audio controls=""><source src="/assets/img/posts/juiced-research/music-fixed.ogg" type="audio/ogg" /><source src="/assets/img/posts/juiced-research/music-fixed.mp3" type="audio/mpeg" /><a href="/assets/img/posts/juiced-research/music-fixed.ogg">Download audio</a>
  </audio><figcaption>With SilentPatch, it sounds as expected.</figcaption></figure>
</figure>
  </li>
</ul>

<hr />

<ul>
  <li>Last but not least, an issue I did <strong>not</strong> fix (as I said earlier, I decided against altering the work-in-progress state of those demos beyond
the essential fixes), but I consider it worth mentioning anyway. For some strange reason, parts of the environment are darker when the HUD isn’t displaying.
This comparison is done with the HUD disabled via a hack, but you can replicate the same scenario by using a rearview camera (by default mapped to <kbd>Space</kbd>).
Furthermore, after <kbd>Alt</kbd> + <kbd>Tab</kbd>, this issue vanishes and the environments are dark regardless of whether the HUD is drawn or not.
I haven’t looked into this issue with PIX, so I am not sure which of the two states is “correct”, but in my opinion the darker state makes the affected objects
(especially the car) blend with the rest of the environment better.
    <figure class="fig-entry">
  <div class="juxtapose" data-startingposition="">
      <img src="/assets/img/posts/juiced-research/screens/juxtapose/Juiced_KPTyoqw3g8.jpg" data-label="HUD" alt="HUD" width="1024" height="576" />
      <img src="/assets/img/posts/juiced-research/screens/juxtapose/Juiced_2w2s8Ynrza.jpg" data-label="No HUD" alt="No HUD" width="1024" height="576" />
  </div><figcaption>This looks somewhat similar to the <a href="#june-july-lighting">June/July comparison</a>.</figcaption></figure>
  </li>
</ul>

<h3 id="acclaim-installers" class="no_toc"><a href="#acclaim-installers"></a>Demo installer issues</h3>

<p>By default, June and July demos’ installers don’t include an option to change the installation directory and instead, they always install the game to
<code class="language-plaintext highlighter-rouge">C:\Program Files (x86)\Acclaim Entertainment\JuicedDemo</code>. Since these installers use InstallShield, I created a Transform file to re-enable
the Destination Folder screen.</p>
<figure class="fig-entry natural"><img src="/assets/img/posts/juiced-research/msiexec_HaLbpb5KTv.png" alt="" width="500" height="381" /></figure>

<p>I strongly recommend downloading it from <a href="#downloads">Downloads</a> and running the installer via <code class="language-plaintext highlighter-rouge">run.bat</code>,
instead of installing them to Program Files – it’s not a good idea, especially with such older, UAC-unaware games and with SilentPatch
redirecting settings to the INI file.</p>

<h2 id="chapter-3-thq-demos"><a href="#chapter-3-thq-demos"></a>Chapter 3: THQ Demos</h2>

<p>Just like with Acclaim, all 3 demos from THQ have content parity. However, this content has been entirely refocused and instead of
a free custom race form of the earlier demos, THQ demos are linear:</p>
<ul>
  <li>The initial race puts the player in a Nissan Skyline in a night 1v1 race against a Toyota Supra.
The player also gets an option to bet with their rival – a mechanic also present in the Acclaim version of the game,
but not covered by their demo at all.</li>
  <li>After the race, the player gets a chance to freely tune their Skyline.</li>
  <li>Once they are done, a second race against 3 opponents (this time set in the morning) starts.</li>
  <li>After the second race, the demo ends.</li>
</ul>

<figure class="fig-entry"><a href="/assets/img/posts/juiced-research/screens/jan-2005-tuning.jpg" target="_blank"><img src="/assets/img/posts/juiced-research/screens/thumb/jan-2005-tuning.jpg" alt="" width="1024" height="576" /></a></figure>

<p>It’s clear that this demo showcases the game better, as the player gets a taste of what the career mode looks like, and they can experiment with the game’s tuning system
on their own, instead of relying on auto-mod from the Acclaim demo.</p>

<h3 id="january-2005-demo"><a href="#january-2005-demo"></a><span><time datetime="2005-01">January 2005</time> Demo</span></h3>

<ul>
  <li>Compilation date: <strong><time datetime="2005-01-28T15:07:00+0000">Friday, 28 January 2005 15:07:00</time></strong></li>
  <li>Download links: <a href="https://www.gamepressure.com/download.asp?ID=7430">DOWNLOAD</a>,
          <a href="https://www.pcworld.pl/ftp/juiced-demo-nr-2.html">MIRROR</a></li>
  <li>Worth testing: <strong style="color:DarkOrange">SOMEWHAT</strong> (slightly different from the final game, runs with nearly no compatibility issues)</li>
</ul>

<p>Out of the box, this demo will refuse to boot on PCs with more than 4 logical CPU cores (fixed in SilentPatch).
However, this demo does <strong>not</strong> exhibit the compatibility issues present in the final game – that is, <kbd>Alt</kbd> + <kbd>Tab</kbd> does not crash the game
and the <code class="language-plaintext highlighter-rouge">Juiced requires virtual memory to be enabled</code> is not present.</p>

<p>This demo is also the only one to feature more than one executable – <code class="language-plaintext highlighter-rouge">Juiced.exe</code> is compiled with SSE2 instructions, but there is also <code class="language-plaintext highlighter-rouge">Juiced_NOSSE2.exe</code>.
The final game doesn’t ship multiple executables.</p>

<p>There isn’t much to talk about in this version otherwise, as it’s mostly identical to the final game.
However, while working on unlocking its content, I accidentally reached a semi-broken Career screen – despite its brokenness,
its layout is distinctly different from the final game, more resembling a career screen from the Acclaim prototypes!</p>

<figure class="fig-entry"><a href="/assets/img/posts/juiced-research/screens/jan-2005-career.jpg" target="_blank"><img src="/assets/img/posts/juiced-research/screens/thumb/jan-2005-career.jpg" alt="" width="1024" height="576" /></a></figure>

<h3 id="april-2005-demo-v20"><a href="#april-2005-demo-v20"></a><span><time datetime="2005-04">April 2005</time> Demo (v2.0)</span></h3>

<ul>
  <li>Compilation date: <strong><time datetime="2005-04-14T15:54:25+0000">Thursday, 14 April 2005 15:54:25</time></strong> (4 days before the full game)</li>
  <li>Download links: <a href="https://www.moddb.com/downloads/juiced-updated-demo">DOWNLOAD</a>,
          <a href="https://www.ausgamers.com/files/download/16587/juiced-demo-v2">MIRROR</a></li>
  <li>Worth testing: <strong style="color:Red">NO</strong> (if you really want to try it, don’t bother without installing a v2.1 patch)</li>
</ul>

<p>Content-wise, this demo is fleshed out further, but on the technical side it only gets worse – unlike the January demo,
this one includes all the incompatibilities of the final game 😕</p>

<figure class="media-container small">
<figure class="fig-entry">
    <div class="juxtapose" data-startingposition="">
        <img src="/assets/img/posts/juiced-research/screens/juxtapose/jan-2005-fonts.jpg" data-label="January 2005" alt="January 2005" width="1024" height="576" />
        <img src="/assets/img/posts/juiced-research/screens/juxtapose/apr-2005-fonts.jpg" data-label="April 2005" alt="April 2005" width="1024" height="576" />
    </div></figure>

<figure class="fig-entry">
    <div class="juxtapose" data-startingposition="">
        <img src="/assets/img/posts/juiced-research/screens/juxtapose/jan-2005-betting.jpg" data-label="January 2005" alt="January 2005" width="1024" height="576" />
        <img src="/assets/img/posts/juiced-research/screens/juxtapose/apr-2005-betting.jpg" data-label="April 2005" alt="April 2005" width="1024" height="576" />
    </div></figure>

<figure class="fig-entry">
    <div class="juxtapose" data-startingposition="">
        <img src="/assets/img/posts/juiced-research/screens/juxtapose/jan-2005-widescreen.jpg" data-label="January 2005" alt="January 2005" width="1024" height="576" />
        <img src="/assets/img/posts/juiced-research/screens/juxtapose/apr-2005-widescreen.jpg" data-label="April 2005" alt="April 2005" width="1024" height="576" />
    </div></figure>

</figure>

<p>Generally, this demo appears to be identical to the final game, with all design locked in place.
Based on my observations, I could identify the following content differences between January and April builds:</p>

<ul>
  <li>Copyrights have been updated from 2004 to 2005.</li>
  <li>Car reflections have been updated.</li>
  <li>Fonts and UI sounds have been replaced. As far as I know, the old UI sounds have later been used in <a href="https://en.wikipedia.org/wiki/Juiced:_Eliminator">Juiced: Eliminator</a>.</li>
  <li>Music in the garage screen has been updated to be different from the main menu music.</li>
  <li>Weird changes have been made to widescreen support – in the January build, the game scaled properly to 16:9, but in this build (and the final game), scaling is incorrect!
According to <a href="https://www.pcgamingwiki.com/wiki/Juiced#Widescreen_resolution">PCGamingWiki</a>, the Widescreen option in the full version
of the game is for 16:10, not 16:9. I’m not sure why they changed it, and why they didn’t leave both 16:9 and 16:10 as options instead.</li>
</ul>

<h3 id="may-2005-demo-v21"><a href="#may-2005-demo-v21"></a><span><time datetime="2005-05">May 2005</time> Demo (v2.1)</span></h3>

<ul>
  <li>Compilation date: <strong><time datetime="2005-05-18T09:13:12+0000">Wednesday, 18 May 2005 09:13:12</time></strong> (30 days after the full game, 51 days before patch v1.01)</li>
  <li>Download links: <a href="https://www.gamepressure.com/download.asp?ID=7892">DOWNLOAD</a>,
          <a href="https://www.moddb.com/games/juiced/downloads/juiced-demo-2-0-to-2-1-patch">MIRROR</a>; patches the above v2.0 demo to v2.1</li>
  <li>Worth testing: <strong style="color:DarkOrange">SOMEWHAT</strong> (if you <strong>really</strong> can’t try the full game)</li>
</ul>

<p>Officially, this patch exclusive for the demo version is supposed to only improve performance:</p>

<blockquote>
  <p>Juiced by Juice Games - demo v2.0 → v2.1 patch</p>

  <p>It has come to our attention that some people may have experienced performance
problems with Version 2 of the Juiced PC Demo.</p>

  <p>THQ are pleased to announce that a patch to update Version 2 of the demo to
Version 2.1.</p>

  <p>PLEASE NOTE THIS PATCH WILL UPDATE VERSION 2 OF THE PC DEMO ONLY.</p>
</blockquote>

<p>However, there is more to it – the demo patch was compiled <strong>1 month</strong> after the initial PC version of the full game,
and it also seems to include more changes later seen in the regional releases in Czechia, Poland, and Russia,
and possibly also some fixes later rolled out in a v1.01 patch.</p>

<figure class="media-container small">
<figure class="fig-entry" style="text-align: left">
    <div class="language-nasm highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nf">mov</span> <span class="p">[</span><span class="nb">esp</span><span class="o">+</span><span class="mh">34h</span><span class="o">+</span><span class="nv">var_14</span><span class="p">],</span> <span class="nv">offset</span> <span class="nv">aControlsDx9ETx</span> <span class="c1">; "controls_dx9_e.txt"</span>
<span class="nf">mov</span> <span class="p">[</span><span class="nb">esp</span><span class="o">+</span><span class="mh">34h</span><span class="o">+</span><span class="nv">var_10</span><span class="p">],</span> <span class="nv">offset</span> <span class="nv">aControlsDx9FTx</span> <span class="c1">; "controls_dx9_f.txt"</span>
<span class="nf">mov</span> <span class="p">[</span><span class="nb">esp</span><span class="o">+</span><span class="mh">34h</span><span class="o">+</span><span class="nv">var_C</span><span class="p">],</span> <span class="nv">offset</span> <span class="nv">aControlsDx9GTx</span> <span class="c1">; "controls_dx9_g.txt"</span>
<span class="nf">mov</span> <span class="p">[</span><span class="nb">esp</span><span class="o">+</span><span class="mh">34h</span><span class="o">+</span><span class="nv">var_8</span><span class="p">],</span> <span class="nv">offset</span> <span class="nv">aControlsDx9ITx</span> <span class="c1">; "controls_dx9_i.txt"</span>
<span class="nf">mov</span> <span class="p">[</span><span class="nb">esp</span><span class="o">+</span><span class="mh">34h</span><span class="o">+</span><span class="nv">var_4</span><span class="p">],</span> <span class="nv">offset</span> <span class="nv">aControlsDx9STx</span> <span class="c1">; "controls_dx9_s.txt"</span>
</code></pre></div>    </div>
    <figcaption>April demo only supports <abbr title="English, French, Italian, German, Spanish">EFIGS</abbr>.</figcaption>
  </figure>
<figure class="fig-entry" style="text-align: left">
    <div class="language-nasm highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nf">mov</span> <span class="p">[</span><span class="nb">esp</span><span class="o">+</span><span class="mh">40h</span><span class="o">+</span><span class="nv">var_20</span><span class="p">],</span> <span class="nv">offset</span> <span class="nv">aControlsDx9ETx</span> <span class="c1">; "controls_dx9_e.txt"</span>
<span class="nf">mov</span> <span class="p">[</span><span class="nb">esp</span><span class="o">+</span><span class="mh">40h</span><span class="o">+</span><span class="nv">var_1C</span><span class="p">],</span> <span class="nv">offset</span> <span class="nv">aControlsDx9FTx</span> <span class="c1">; "controls_dx9_f.txt"</span>
<span class="nf">mov</span> <span class="p">[</span><span class="nb">esp</span><span class="o">+</span><span class="mh">40h</span><span class="o">+</span><span class="nv">var_18</span><span class="p">],</span> <span class="nv">offset</span> <span class="nv">aControlsDx9GTx</span> <span class="c1">; "controls_dx9_g.txt"</span>
<span class="nf">mov</span> <span class="p">[</span><span class="nb">esp</span><span class="o">+</span><span class="mh">40h</span><span class="o">+</span><span class="nv">var_14</span><span class="p">],</span> <span class="nv">offset</span> <span class="nv">aControlsDx9ITx</span> <span class="c1">; "controls_dx9_i.txt"</span>
<span class="nf">mov</span> <span class="p">[</span><span class="nb">esp</span><span class="o">+</span><span class="mh">40h</span><span class="o">+</span><span class="nv">var_10</span><span class="p">],</span> <span class="nv">offset</span> <span class="nv">aControlsDx9STx</span> <span class="c1">; "controls_dx9_s.txt"</span>
<span class="nf">mov</span> <span class="p">[</span><span class="nb">esp</span><span class="o">+</span><span class="mh">40h</span><span class="o">+</span><span class="nv">var_C</span><span class="p">],</span> <span class="nv">offset</span> <span class="nv">aControlsDx9CTx</span> <span class="c1">; "controls_dx9_c.txt"</span>
<span class="nf">mov</span> <span class="p">[</span><span class="nb">esp</span><span class="o">+</span><span class="mh">40h</span><span class="o">+</span><span class="nv">var_8</span><span class="p">],</span> <span class="nv">offset</span> <span class="nv">aControlsDx9PTx</span> <span class="c1">; "controls_dx9_p.txt"</span>
<span class="nf">mov</span> <span class="p">[</span><span class="nb">esp</span><span class="o">+</span><span class="mh">40h</span><span class="o">+</span><span class="nv">var_4</span><span class="p">],</span> <span class="nv">offset</span> <span class="nv">aControlsDx9RTx</span> <span class="c1">; "controls_dx9_r.txt"</span>
</code></pre></div>    </div>
    <figcaption>May demo supports <abbr title="English, French, Italian, German, Spanish">EFIGS</abbr>, Czech, Polish, and Russian!</figcaption>
  </figure>
</figure>

<p>But here’s the catch – while the demo’s code supports the additional languages and even attempts to pick them by default based
on the user’s system locale, they… don’t ship the language files! The result is that on my OS with a Polish locale selected,
I was consistently crashing on startup and couldn’t run this demo at all until I “reverted” support for those 3 languages with SilentPatch 🙃
This almost made me drop support for this patch until a trace with <a href="https://learn.microsoft.com/sysinternals/downloads/procmon">Process Monitor</a>
revealed that the game tried to access <code class="language-plaintext highlighter-rouge">controls_dx9_p.txt</code> and failed. This, combined with the fact that the game booted fine on Windows Sandbox
(that did <strong>not</strong> use a Polish locale) proved that the issue lies there, and thus is trivially fixable by “cutting” those 3 languages from the demo. Phew.</p>

<h3 id="thq-silentpatch-fixes"><a href="#thq-silentpatch-fixes"></a>Fixes included in SilentPatch &amp; Enhanced PC Demo</h3>

<ul>
  <li>All shipped content has been unlocked. Since these demos don’t include Custom Races, customization is done through the <code class="language-plaintext highlighter-rouge">SilentPatchJuicedDemo.ini</code> file
and concerns only the second race. The following options are available:
    <ul>
      <li>4 routes in the Race mode + reverse variants + 1 Point-to-Point race + its reverse variant.</li>
      <li>Sprint race.</li>
      <li>Showoff (Cruise) mode.</li>
      <li>Solo mode.</li>
      <li>Customizable time of day, weather, number of laps, and number of AI opponents.</li>
    </ul>

    <p>Additionally, the users may enable <strong>all</strong> menus with an INI option but do note that most menus are not finished and will softlock.</p>
  </li>
  <li>The player’s starter car can now be customized by editing the <code class="language-plaintext highlighter-rouge">scripts\CMSPlayersCrewCollection2.txt</code> file. The following cars
are available: <code class="language-plaintext highlighter-rouge">gtr</code>, <code class="language-plaintext highlighter-rouge">nsx</code>, <code class="language-plaintext highlighter-rouge">supra</code>, <code class="language-plaintext highlighter-rouge">vette_zo6</code>, <code class="language-plaintext highlighter-rouge">viper</code>.
    <figure class="fig-entry"><a href="/assets/img/posts/juiced-research/screens/jan-2005-viper.jpg" target="_blank"><img src="/assets/img/posts/juiced-research/screens/thumb/jan-2005-viper.jpg" alt="" width="1024" height="576" /></a></figure>
  </li>
  <li>
    <p>Demos have optionally been made endless. Instead of the game exiting after the second race, it returns to the garage and gives an option
of tuning the car again and starting another race. Combined with the aforementioned content unlocks, this lets the player try multiple different
routes and game modes in a single session, as the race configuration options in the INI file can be modified while the game is running.</p>
  </li>
  <li>
    <p>The default driver name <code class="language-plaintext highlighter-rouge">Player</code> can now be overridden via the INI file.</p>
  </li>
  <li>
    <p>A startup crash in the <time datetime="2005-01">January 2005</time> demo occurring on PCs with more than 4 logical CPU cores has been fixed.</p>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">Juiced requires virtual memory to be enabled</code> error from the <time datetime="2005-04">April 2005</time> and <time datetime="2005-05">May 2005</time> demos has been fixed.</p>
  </li>
  <li>
    <p>Startup crashes in the <time datetime="2005-05">May 2005</time> demo occurring when the OS locale is set to Czech, Polish or Russian have been fixed.</p>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">JuicedConfig.exe</code> no longer needs Windows XP SP2 compatibility mode or a Windows compatibility shim to run.
This improves compatibility with environments where compatibility shims are not enabled by default, e.g. on Wine/Proton.</p>
  </li>
  <li>All game settings have been moved from registry to <code class="language-plaintext highlighter-rouge">settings.ini</code>. This makes demos fully portable and prevents them from overwriting
each other’s settings.</li>
</ul>

<h2 id="chapter-4-ps2-prototypes-briefly"><a href="#chapter-4-ps2-prototypes-briefly"></a>Chapter 4: PS2 Prototypes, briefly</h2>

<p>As I mentioned earlier, many PS2 and Xbox prototypes of Acclaim’s Juiced have surfaced online. Although they all come from the tail end
of the game’s development under the original publisher, they seem to be slightly different from one another. However, comparing all these prototypes
in detail would be an enormous task, much bigger than the demo comparisons presented above (that already are quite lengthy). Most of the differences
are likely also purely technical and not that entertaining for a casual reader.</p>

<p>That said, during the course of the entirety of this research, I came across a few findings specifically in the PS2 prototypes
that warranted some attention, and I’m publishing them in the form of patches for the two prototypes that by the time of writing this
are available online – <time datetime="2004-06-11">June 11, 2004</time> and <time datetime="2004-07-28">July 28, 2004</time> builds.</p>

<h3 id="60-fps"><a href="#60-fps"></a>60 FPS</h3>

<p>While the Xbox prototypes and the final game (on all platforms) target 60 FPS, both PS2 prototypes are locked to 30 FPS.
This patch lifts the FPS cap, allowing the game to hit 60 FPS. When using this cheat in PCSX2, the default configuration tailored for the final version
of Juiced prevents these prototypes from maintaining a stable 60 FPS, even with an overclocked emulated CPU.
For an optimal experience, several settings should be changed as follows.
<strong>Please make sure to use Per-Game Settings to change those, as changing those settings globally is guaranteed to cause problems with other games,
including the final version of Juiced:</strong></p>
<ul>
  <li>Set <kbd><samp>EE Cycle Rate</samp></kbd> to <strong>130%</strong>.</li>
  <li>Enable <kbd><samp>Enable Instant VU1</samp></kbd>.</li>
  <li>Disable <kbd><samp>Enable Game Fixes</samp></kbd> (in the <kbd><samp>Advanced</samp></kbd> tab).</li>
</ul>

<h3 id="progressive-scan"><a href="#progressive-scan"></a>Progressive Scan</h3>

<p>The <time datetime="2004-07-28">July 28, 2004</time> build and the final version of Juiced include an option to switch the game to use Progressive Scan
by holding <strong style="color:rgb(124, 178, 232);font-family:monospace, monospace">X</strong> + <strong style="color:rgb(64, 226, 160);font-family:monospace, monospace">△</strong>,
while the <time datetime="2004-06-11">June 11, 2004</time> build doesn’t implement this option yet. With this cheat, Progressive Scan is enabled also on this build.</p>

<h3 id="fixed-widescreen"><a href="#fixed-widescreen"></a>Fixed Widescreen</h3>

<p>Just like I <a href="#acclaim-widescreen">mentioned earlier</a>, all Acclaim’s versions of the game have slightly defective widescreen support and
the aspect ratio is “overcorrected”, causing the image to be squashed. With this patch, the widescreen proportions match 4:3 perfectly,
the same as I did for PC demos.</p>

<figure class="fig-entry">
    <div class="juxtapose" data-startingposition="">
        <img src="/assets/img/posts/juiced-research/screens/juxtapose/Juiced_SLUS-20872_20231004174952.webp" data-label="4:3" alt="4:3" width="1024" height="576" />
        <img src="/assets/img/posts/juiced-research/screens/juxtapose/Juiced_SLUS-20872_20231004174845.webp" data-label="16:9 (Stock)" alt="16:9 (Stock)" width="1024" height="576" />
    </div></figure>

<h3 id="dnas-bypass"><a href="#dnas-bypass"></a>DNAS Bypass</h3>

<p>On the PlayStation 2, online multiplayer was protected by <a href="https://en.wikipedia.org/wiki/DNAS" target="_blank">Dynamic Network Authentication System (DNAS)</a>,
an authentication protocol that ensured pirated game copies couldn’t access the online functionality.
Sony kept this service up for long after the PS2’s end of life, but finally took it offline on <time datetime="2016-04-04">April 4, 2016</time>,
leaving unmodified games unable to play online. As DNAS was not responsible for the actual online functionality, only for authentication,
DNAS Bypass codes have been created for various games to circumvent the authentication entirely. Thanks to the <a href="https://ps2online.com/" target="_blank">PS2Online</a> project,
the final version of Juiced has a DNAS Bypass patch that allows people to play online through <a href="http://openspy.net/" target="_blank">OpenSpy</a>, but that patch didn’t work for the prototypes.</p>

<p>With my DNAS Bypass, Acclaim prototypes can connect to OpenSpy and online play is possible just like in the final game! Prototypes and retail games see each other’s lobbies,
but they cannot enter them – so it is not possible to accidentally ruin someone else’s fun by joining their game with the wrong version of the game.
My tests were also done only on the June build; July build can go online too, but I’ve not had much success creating a lobby.</p>

<figure class="fig-entry"><a href="/assets/img/posts/juiced-research/screens/Juiced_SLUS-20872_20230921212557.jpg" target="_blank"><img src="/assets/img/posts/juiced-research/screens/thumb/Juiced_SLUS-20872_20230921212557.jpg" alt="" width="1024" height="576" /></a></figure>

<h2 id="downloads"><a href="#downloads"></a>Downloads</h2>

<p><a href="http://f4mi.com/" target="_blank"><strong>f4mi</strong></a> has created a showcase of SilentPatch &amp; Enhanced PC Demo and the improvements it makes to Acclaim’s Juiced Demo – check it out if you want to see the new content in action:</p>
<figure class="iframe-entry"><iframe src="https://www.youtube.com/embed/4lQ76h8KEkI" allowfullscreen=""></iframe></figure>

<p>All known PC demos of Juiced, as well as SilentPatch &amp; Enhanced PC Demo can be downloaded from <em>Mods &amp; Patches</em>. Click here to head to the game’s page directly:
<a href="/mods/juiced-demo/" class="button" target="_blank"><i class="fas fa-download"></i> Download Juiced Demos and SilentPatch &amp; Enhanced PC Demo</a></p>

<p>For patches targetting the PlayStation 2 prototypes, go to:
<a href="/mods/juiced-acclaim-ps2/" class="button" target="_blank"><i class="fas fa-download"></i> Juiced (Acclaim, PS2) Downloads</a></p>

<h2 id="credits-and-acknowledgments"><a href="#credits-and-acknowledgments"></a>Credits and acknowledgments</h2>

<ul>
  <li><a href="http://f4mi.com/" target="_blank"><strong>f4mi</strong></a> for researching the history of Juiced and making sure that my summary is accurate, and for preparing the showcase video</li>
  <li><a href="https://discord.com/invite/pu2jdxR/" target="_blank"><strong>Juiced Modding Community</strong></a> for helping me find and dissect those demos and for answering all of my many questions regarding the game</li>
</ul>

<hr />
<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:lamborghini-cars">
      <p><a href="https://www.lambocars.com/rage-will-launch-official-lamborghini-game/">RAGE WILL LAUNCH OFFICIAL LAMBORGHINI GAME – LamboCARS.com</a> <a href="#fnref:lamborghini-cars" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:ign-preview">
      <p><a href="https://www.ign.com/articles/2004/01/27/juiced-4">Juiced - IGN</a> <a href="#fnref:ign-preview" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:gamespot-preview">
      <p><a href="https://www.gamespot.com/articles/juiced-preview/1100-6104070/">Juiced Preview - GameSpot</a> <a href="#fnref:gamespot-preview" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:eurogamer-preview">
      <p><a href="https://www.eurogamer.net/p-juiced">Juiced | Eurogamer.net</a> <a href="#fnref:eurogamer-preview" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name>Silent</name></author><category term="Research" /><category term="Releases" /><summary type="html"><![CDATA[Looking into Acclaim and THQ demos and into the history of Juice Games in general.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://silentsblog.com/assets/img/games/bg/juiced-acclaim.jpg" /><media:content medium="image" url="https://silentsblog.com/assets/img/games/bg/juiced-acclaim.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>