PageSourceSearch

https://1amstudios.com/

html 1amstudios.com collected 2026-10-02 06:53:26 UTC 5,842 bytes, 118 lines download raw bytes

1<!DOCTYPE html>
2<html>
3
4  <head>
5  <meta charset="utf-8">
6  <meta http-equiv="X-UA-Compatible" content="IE=edge">
7  <meta name="viewport" content="width=device-width initial-scale=1">
8
9  <link rel="preconnect" href="https://fonts.googleapis.com">
10  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
11  <link href="https://fonts.googleapis.com/css2?family=Fraunces:wght@500;600;700&family=IBM+Plex+Mono:wght@400;500&family=IBM+Plex+Sans:wght@400;500;600&family=PT+Serif:wght@400;700&family=Russo+One&display=swap" rel="stylesheet">
12
13  <link rel="stylesheet" href="/css/main.css">
14  <link rel="stylesheet" type="text/css" href="/css/bootstrap.css" />
15  <link rel="stylesheet" type="text/css" href="/css/custom-styles.css" />
16
17  <title>1am Studios - Jeff Harris</title>
18  <meta name="description" content="Random hacks, tools, products, explorations of retro tech! I am software engineer, sometime entrepreneur, New Zealander living in San Francisco
19">
20  <meta property="og:image" content="https://1amstudios.com/img/logo3.png">
21
22  <link rel="canonical" href="http://1amstudios.com/">
23  <link rel="alternate" type="application/atom+xml" title="1am Studios - Jeff Harris" href="http://1amstudios.com/feed.xml">
24</head>
25
26
27  <body>
28    <header class="site-header">
29  <div class="site-header__inner">
30    <a class="site-brand" href="/">
31      <span class="site-brand__name"><span class="site-brand__one">1</span>AM STUDIOS</span>
32      <span class="site-brand__kicker">Jeff Harris</span>
33    </a>
34
35    <nav class="site-nav" aria-label="Primary">
36      <a href="/articles/">Articles</a>
37      <a href="/about/">About</a>
38    </nav>
39
40    <div class="site-social" aria-label="External links">
41      <a href="https://github.com/jeff-1amstudios">GitHub</a>
42      <a href="https://www.youtube.com/user/1amStudios/videos">YouTube</a>
43    </div>
44  </div>
45</header>
46
47    <main class="site-shell">
48      <section class="editorial-feature">
49  <div class="editorial-feature__copy">
50    <p class="section-kicker">Featured article</p>
51    <h1><a href="/articles/these-pixels-havent-been-seen-for-20-years/">These pixels haven't been seen by anyone for 20 years</a></h1>
52    <p>When I played this game back as a kid, I was fascinated with what lay beyond. It seems like the track keeps going. What is around the next bend, over the next hill?</p>
53    <p class="feature-card__meta">Need for Speed 1</p>
54    <a class="text-link" href="/articles/these-pixels-havent-been-seen-for-20-years/">Read article →</a>
55  </div>
56  <a class="editorial-feature__media" href="/articles/these-pixels-havent-been-seen-for-20-years/">
57    <img src="/img/opennfs1/past-checkpoint-looking-back.jpg" alt="A Need for Speed track beyond the checkpoint">
58  </a>
59</section>
60
61<section class="home-section">
62  <div class="section-heading"><h2>Selected articles</h2><a class="text-link" href="/articles/">View all articles →</a></div>
63  <div class="selected-grid">
64    
65    
66      <article class="selected-card">
67        <a class="selected-card__media" href="/articles/cruisin-usa/"><img src="/articles/cruisin-usa/2026-08-attract-mode.jpg" alt="Cruis'n USA: rebuilding the arcade game from its original assembly"></a>
68        <h3><a href="/articles/cruisin-usa/">Cruis'n USA: rebuilding the arcade game from its original assembly</a></h3>
69        <p>How a released 1994 assembly codebase, the wrong version of the arcade ROM, MAME and a source-matching spider became a native SDL port of Cruis'n USA.</p>
70      </article>
71    
72      <article class="selected-card">
73        <a class="selected-card__media" href="/articles/dethrace/"><img src="/articles/dethrace/2022-01-textures.png" alt="Dethrace: rebuilding Carmageddon one function at a time"></a>
74        <h3><a href="/articles/dethrace/">Dethrace: rebuilding Carmageddon one function at a time</a></h3>
75        <p>How a forgotten symbol file became a native, verifiable rebuild of Carmageddon—and how AI is helping with the final assembly-level details.</p>
76      </article>
77    
78      <article class="selected-card">
79        <a class="selected-card__media" href="/articles/do-not-run-carma2-from-the-server/"><img src="/articles/do-not-run-carma2-from-the-server/success.png" alt="Do NOT run Carmageddon 2 from the server!"></a>
80        <h3><a href="/articles/do-not-run-carma2-from-the-server/">Do NOT run Carmageddon 2 from the server!</a></h3>
81        <p>During Carmageddon 2 development, there was a problem with people running Carmageddon 2 on "the server".</p>
82      </article>
83    
84      <article class="selected-card">
85        <a class="selected-card__media" href="/articles/reactivating-carmageddon-debug-output/"><img src="/articles/reactivating-carmageddon-debug-output/hangontoyerhelmet2.jpg" alt="Reactivating Carmageddon's debug output"></a>
86        <h3><a href="/articles/reactivating-carmageddon-debug-output/">Reactivating Carmageddon's debug output</a></h3>
87        <p>And yet...! The executable still contains those messages, so maybe we can re-enable them somehow.</p>
88      </article>
89    
90  </div>
91</section>
92
93    </main>
94
95    <footer class="site-footer">
96  <div class="site-footer__inner">
97    <p class="site-footer__eyebrow">1AM Studios · Jeff Harris</p>
98    <p class="site-footer__copy">Random hacks, tools, products, explorations of retro tech! I am software engineer, sometime entrepreneur, New Zealander living in San Francisco
99</p>
100  </div>
101</footer>
102
103
104<script>
vendor: 339 bytes, lines 104-110
104
105  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
106  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
107  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
108  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
109
110  ga('create', '
110UA-57331937-1
vendor: 39 bytes, lines 110-112
110', 'auto');
111  ga('send', 'pageview');
112
113</script>
113
114
115
116  </body>
117
118</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.