<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.9.3">Jekyll</generator><link href="https://nicole.express/feed.xml" rel="self" type="application/atom+xml" /><link href="https://nicole.express/" rel="alternate" type="text/html" /><updated>2026-08-09T21:22:36-04:00</updated><id>https://nicole.express/feed.xml</id><title type="html">Nicole Express</title><subtitle>Nicole Express: Hobbyist video game development, examinations into old consoles, and more!</subtitle><entry><title type="html">Idol Mahjong Final Romance: A Slideshow Disguised as a Video Game</title><link href="https://nicole.express/2026/more-like-idle-mahjong.html" rel="alternate" type="text/html" title="Idol Mahjong Final Romance: A Slideshow Disguised as a Video Game" /><published>2026-08-09T10:49:00-04:00</published><updated>2026-08-09T10:49:00-04:00</updated><id>https://nicole.express/2026/more-like-idle-mahjong</id><content type="html" xml:base="https://nicole.express/2026/more-like-idle-mahjong.html"><![CDATA[<p>We’re back into the strip mahjong games today, here going back to 1991. Video System is a company that’s probably best known in retro-gaming circles for <em>Aero Fighters</em>/<em>Sonic Wings</em>, but mahjong games (usually branded <em>Idol Mahjong</em>) were one of their bigger moneymakers. And there’s something interesting going on here– <em>Idol Mahjong Final Romance 2-R-4 Special</em> re-releases the final three games in the series, which all also got contemporary console releases, but the first game in the series has never been seen outside of its original arcade launch. Why?</p>

<h2 id="the-last-romance">The last romance</h2>

<p>The first game in the <em>Idol Mahjong</em> series was actually 1988’s <em>Idol Mahjong Housoukyoku</em>, but all the rest of the games in the series followed the lead of this 1991 title: <em>Idol Mahjong Final Romance</em>.</p>

<p><img src="/assets/img/romance/title.png" alt="The Final Romance title screen" title="live photo from nicole's floor" /></p>

<p>The goal of this game is simple; you have dates with eight different women. And you’re going to play strip mahjong with all of them, as you do. No elaborate <a href="/2026/more-like-koi-yes-magic-potion.html">Nichibutsu</a>-style plotline here, though it’s also worth noting that unlike <a href="/2026/spooky-ghost-stories.html">Jaleco’s <em>Mahjong Daireikai</em></a>, you also don’t get a choice of which girl to play against, you always go through them in the same order.</p>

<p><img src="/assets/img/romance/8gals.png" alt="A selection of girls" title="kind of surprising they don't have a choice of girl order, honestly" /></p>

<p><em>Idol Mahjong Final Romance</em> has a lot of aesthetic, and a lot of it disappears in later games in the series. This guy who runs the item shop that appears between stages, for example, is replaced with a maid– in fact, I’m not sure you ever see a man in the <em>Final Romance</em> series again. (Is that what makes it final?) The way the item shops work, though, is about the same.</p>

<p><img src="/assets/img/romance/shop.png" alt="Item shop" title="buy some stuff" /></p>

<p>When you’re presented with a girl, you get various graphics to set the scene, along with sampled voice at a very low bitrate.</p>

<p><video SRC="/assets/img/romance/gal.mp4" width="75%" controls=""> You don't have a video tag support or something.</video></p>

<p>And then, of course, what you do is play the <em>riichi</em> variant of mahjong, with far fewer points than you should have, with the goal of winning three rounds with a girl so she will become sufficiently unclothed. I went over the <a href="/2026/put-your-clothes-back-on.html">basics</a> in my first strip mahjong post earlier this year.</p>

<p><img src="/assets/img/romance/game.png" alt="Final Romance gameplay" title="chronologically this takes place after the next image" /></p>

<p>A nice thing about this game is that every coin, even the first one, will start you with enough money to buy the item that lets you do a redraw on your initial hand, and even better, you can choose whether to use it or not after seeing the initial draw. This can be pretty useful if you get an awful hand to start with.</p>

<p><img src="/assets/img/romance/useitem.png" title="no hablo japonés" alt="the choice to use an item" /></p>

<p>This game is definitely more mahjong-centric than Nichibutsu’s; notice the girl doesn’t even show up during the matches, whereas in <em>Mahjong Koi no Magic Potion</em> the picture of the girl dominated the screen, to the point of hiding the opponents tiles. Keep your eyes on the game! And the AI player can do calls like <em>chii</em> and <em>pon</em>, so look out.</p>

<p><img src="/assets/img/romance/tenpai.png" title="she didn't do chii or pon here, though" alt="a match ending in a tie" /></p>

<p>I have to say, I really like the rotoscoped actual pictures approach to these games. Let’s put a pin in that, and instead just note how the animations are also very low frame rate. Every once in a while, you might be able to get a strange state for a single frame.</p>

<p><img src="/assets/img/romance/glitch.png" title="using this one screenshot, derive the universe" alt="the hand of the girl glitching" /></p>

<h2 id="hardware">Hardware</h2>

<p><img src="/assets/img/romance/pcb.jpeg" alt="The Final Romance PCB" title="don't confuse with idol mahjong vinyl romance, which would also be a good title for a porn game" /></p>

<p>The <em>Idol Mahjong Final Romance</em> PCB is exactly standard for contemporary Video System mahjong games of the late 1980’s and early 1990’s. How much so? Here’s my <em>Final Romance</em>, PCB code VS-Z80-7, next to my copy of <em>Mahjong Daiyogen</em>, PCB code VS-Z80-6. Pretty much the only real difference I see is that less of the board is populated.</p>

<aside><p>Maybe I'll do a byte post on <i>Mahjong Daiyogen</i> at some point. It's got fortune telling!&lt;/i&gt;</p></aside>

<p><img src="/assets/img/romance/2.jpeg" alt="The Final Romance PCB alongside the very similar Daiyogen" title="through the magic of buying two of them" /></p>

<p>So, what does this PCB get you? Well, it gets you an audio circuit with a YM2413 (the same syntehsizer used on the Master System FM add-on) and a OKI MSM5205 ADPCM chip for sample playback. It gets you two 6MHz Z80 CPUs. This is all pretty typical so far. (Someone broke off the corner of this PCB, I see)</p>

<p><img src="/assets/img/romance/audio.jpeg" alt="Final Romance PCB audio circuit" title="I hate these small audio chips that look like discrete logic, i demand you add a bunch of NC pins" /></p>

<p>The audio circuit is somewhat questionable. This is the sort of thing you’d never bother emulating, but there’s a constant buzz. In this clip from the attract mode with attract mode audio disabled, you can really hear how it interacts with sound effects, which is kind of interesting.</p>

<p><video SRC="/assets/img/romance/buzz.mp4" width="75%" controls=""> You don't have a video tag support or something.</video></p>

<p>Interestingly, the master CPU has no direct access to the audio circuit <em>or</em> the video circuit. Instead, only the sub CPU has access to that. The master CPU, however, gets the VBlank interrupt and reads the controllers. It’s an interesting division of work, and makes me wonder if the master CPU spends most of its time running the mahjong engine. Note that the other mahjong titles I’ve looked at either used a more powerful 68000 CPU, or in Nichibutsu’s case, scaled back the mahjong engine, removing features like the opponent calling.</p>

<p>The video circuit is almost entirely made up of discrete logic, with the exception of one component, the V-System GGA (Graphics Gate Array?). This chip is seen not only in other mahjong boards, but a whole host of non-mahjong games like <em>Pipe Dream</em> and <em>Welltris</em>. My understanding is it primarily provides some timing assistance in a similar way to the Motorola 6845, but don’t quote me on that one.</p>

<p><img src="/assets/img/romance/gga.jpeg" alt="The GGA chip" title="gga stands for gay, gay, awesome" /></p>

<p>Interestingly, the GGA on <em>Final Romance</em> is marked 06.5 while the one on <em>Daiyogen</em> is marked 9N.4. I did not bother to try swapping them, because they’re soldered in and have a high pin density.</p>

<h3 id="tilemaps">Tilemaps</h3>

<p>The V-System hardware used in this game features two tilemaps, with scrolling capabilities and colors in 5-bit RGB palettes, 16 colors per tile. That’s perfectly fine for the era, though an interesting quirk is that the tiles are 8x4, unlike the almost universal 8x8. I’m not aware of anyone other than V-System using 8x4 tiles, though Commodore 64 multicolor characters are 4x8.</p>

<aside><p>There are other games that use the GGA and don't have 8x4 tiles, but I'm not sure if that's because of a variant of the GGA, or because the GGA is just simple enough that it can work either way with different support circuitry.</p></aside>

<p>The interesting thing here is that this is <em>all</em> the hardware has. Now, that’s not unheard of in mahjong– <a href="/2026/spooky-ghost-stories.html"><em>Mahjong Dairekai</em></a> only had tilemaps. But it had four of them. Why does that matter? Think of it this way: the only way for things to <em>move</em> on screen in increments of less than a tile is to put them on their own scrolling layer, or waste a bunch of tile ROM.</p>

<p>In practice, not very much moves in <em>Idol Mahjong Final Romance</em>. No hands over the tiles, tiles just jump into place, and the main way you see anything move is a full-screen call that puts the text over the screen. And that’s where I say this feels a bit like a slideshow.</p>

<p><img src="/assets/img/romance/ron.png" title="damn you ronald" alt="a game ending in RON, with RON overlaid on top in katakana" /></p>

<p>This is especially true when paired with another choice made. When tilemaps are loaded in, the palette is blacked out, and then the palette is only loaded in afterwards. This is presumably to prevent you from seeing some kind of partial abomination. What’s interesting is that this is done in phases and blocks; so, for example, when a girl loads in, she fades in in separate parts, the body palette and the face palette take turns on each cycle. It’s subtle, but creates an effect.</p>

<p><img src="/assets/img/romance/steps.png" title="she didn't do chii or pon here, though" alt="the" /></p>

<p>Overall, in this case the hardware just gives the game kind of a unique “after-dark” feel. Console ports of strip mahjong games were extremely rare (though not non-existent) at the time, but without the slideshow feel and the audio buzz I think it’d actually lose something.</p>

<h2 id="pictures">Pictures</h2>

<p><img src="/assets/img/romance/boobs.png" title="drawn exclusively with tilemaps" alt="a girl with her shirt unbuttoned" /></p>

<p>So I wanted to end this by saying a bit about the direction the <em>Idol Mahjong Final Romance</em> series went. The sequel, <em>Taisen Idol Mahjong Final Romance 2</em>, came out in 1995. The “Taisen” refers to the fact that the arcade release allowed two cabinets to be connected, allowing actual two-player mahjong (since, of course, you have to stop your opponent from seeing your screen). We’ll ignore that because I don’t have any friends, or two arcade cabinets. In fact, I’ll be playing the Neo Geo CD port, over composite video because I don’t feel like pulling the SCART cable out of its setup. It is making me wonder if the old <a href="/2020/neo-geo-cd-zee.html">CDZ</a> needs some recapping, though.</p>

<aside><p>A fun fact about this Neo Geo CD port is that it's a Neo Geo CD exclusive... well, until the aftermarket got ahold of it and ported it back to the MVS. Also the disc label calls it a "Surreal Mah-Jong Game".</p></aside>

<p><img src="/assets/img/romance/fr2.png" title="name your game 'final' to ensure it gets sequels" alt="Idol Mahjong Final Romance 2 title screen" /></p>

<p>The gameplay in the single-player mode is pretty much the same as ever. You don’t get to choose your girl, but go through a set order. The item shop works the same way, as does the actual mahjong. You’ll see some pointers here rather than letters, but that’s just because this is a home version running with a controller– I do not have a Neo Geo Mahjong controller, and I doubt that’ll change.</p>

<p><img src="/assets/img/romance/gam2.png" title="name your game 'final' to ensure it gets sequels" alt="Idol Mahjong Final Romance 2 title screen" /></p>

<p>The big difference, though, is that all the artwork of the girls is no longer the rotoscoped photograph look, but instead are anime-style.</p>

<p><img src="/assets/img/romance/maid.png" title="this also means you get more anime tropes, like maids and, of course, schoolgirls" alt="the first gal in final romance 2" /></p>

<p>This is a general shift that happened in this period, and I’m not exactly sure why. It might just be because of the increased popularity of anime, and in particular, <em>hentai</em> pornographic art. Children who had grown up watching anime were now older teenagers and young adults, and were a larger audience than the old mahjong base.</p>

<p>However, <a href="https://w.atwiki.jp/aniwotawiki/pages/48799.html">Atwiki</a> claims that it was a rights issue, that using actual models became increasingly complicated as they gained additional rights to their portraits. And, as I noted in the intro, <em>Idol Mahjong Final Romance 2-R-4 Special</em>, the modern re-release, didn’t bother throwing in the original. I mean, otherwise how hard could it be to include? But these are all theories; unless we get an interview with someone from Video System at the time, I doubt we’ll ever know.</p>]]></content><author><name></name></author><category term="arcade" /><category term="mahjong" /><category term="8bit" /><summary type="html"><![CDATA[We’re back into the strip mahjong games today, here going back to 1991. Video System is a company that’s probably best known in retro-gaming circles for Aero Fighters/Sonic Wings, but mahjong games (usually branded Idol Mahjong) were one of their bigger moneymakers. And there’s something interesting going on here– Idol Mahjong Final Romance 2-R-4 Special re-releases the final three games in the series, which all also got contemporary console releases, but the first game in the series has never been seen outside of its original arcade launch. Why?]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://nicole.express/assets/img/romance/title.png" /><media:content medium="image" url="https://nicole.express/assets/img/romance/title.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">The Brick Game, through the Ages</title><link href="https://nicole.express/2026/bricked-up-and-no-amontillado.html" rel="alternate" type="text/html" title="The Brick Game, through the Ages" /><published>2026-07-19T17:39:00-04:00</published><updated>2026-07-19T17:39:00-04:00</updated><id>https://nicole.express/2026/bricked-up-and-no-amontillado</id><content type="html" xml:base="https://nicole.express/2026/bricked-up-and-no-amontillado.html"><![CDATA[<p>What do you think about gaming in the late 90’s – early 2000’s? The PlayStation? The Nintendo 64? Maybe later SuperFX SNES games like <em>Yoshi’s Island</em>? Well, too bad. You’re not getting any of those, but you can get a portable game console in a church fundraiser. No, it’s not a Game Boy Color either, but hey, it’s got hundreds of games built right in! How bad could it be?</p>

<h2 id="talking-brick-game">Talking Brick Game</h2>

<p><img src="/assets/img/brickz/long.jpeg" title="i had one of these as a kid, but this isn't it" alt="The grey Talking Brick Game 118 in 1" /></p>

<p>At least the fundraiser sprung for the fancy “talking” model. This is a pretty typical model, though I don’t see any year on it, even though I do have the packaging.</p>

<p><img src="/assets/img/brickz/118.jpeg" title="but I don't speak Chinese" alt="The Talking Brick Game 118 in 1 packaging" /></p>

<p>Notice that it mentions that there are no repeats, and that it’s talking. Therefore I don’t think this is the original “brick game”. However, this one does seem to predate the one we can see on <a href="https://commons.wikimedia.org/wiki/File:Brick_Game.png">Wikipedia</a>, which promises 576-in-1, and features an “up” button.</p>

<p><img src="/assets/img/brickz/faux.jpeg" title="better graphics than the microvision" alt="The Talking Brick Game 118 in 1 packaging, showing the screen" /></p>

<p>Another oddity about the box. Take a look at the screen. Notice that it has square blocks with a square inside, and a number of icons. Now compare it to the real thing.</p>

<p><img src="/assets/img/brickz/real.jpeg" title="no hearts, clubs, or diamonds" alt="The real brick game" /></p>

<p>Now notice on the real thing. The block have spades inside each of them, and the sidebar segments are different too, with an odd child. I don’t really think anything of it, but it is odd.</p>

<p>So, what is the Talking Brick Game 118-in-1? Well, the packaging promises all sorts of games:</p>

<p><img src="/assets/img/brickz/shots.jpeg" title="wow are those real screenshots" alt="The packaging, promising a variety of games" /></p>

<p>Does it talk for real? Oh, you bet. I can’t understand what it’s saying, though.</p>

<p><audio controls="" src="/assets/img/brickz/old.wav">Your browser does not support the <code>audio</code> element.</audio></p>

<p>And it does boot up to a select screen. All of these have a particularly annoying select screen– you don’t scroll through the games using the directional keys as directions. Instead, look at the secondary labels. “Level” increments the level. “Speed” increments the game speed. And “Mode” increments the game type (a letter). “Rotate/Direction” increments the game subtype (a number underneath the letter). You can only increment, but they loop. In this case, the game types go from A to E. The game subtypes vary based on the game.</p>

<p>But there is one game in particular whose name doesn’t appear, but is basically the primary reason for the console: <em>Tetris</em>. Why do I say that? Well, I mean, come on. It even plays <em>Korobeiniki</em> when you choose one of the <em>Tetris</em>-like games.</p>

<p><audio controls="" src="/assets/img/brickz/koro.wav">Your browser does not support the <code>audio</code> element.</audio></p>

<p>That’s not to say the other games aren’t real; there are driving games, where your giant pixelated car moves back and forth, and that’s even game “A”. In fact, that’s <em>only</em> game “A”.</p>

<p><img src="/assets/img/brickz/car.jpeg" title="vroom vroom" alt="The racing game" /></p>

<p>Every other game is a <em>Tetris</em> clone with some variant. For example, pieces may fall occasionally that are just one block. These variants are mostly annoying. Honestly, though, it’s hard to state just how big <em>Tetris</em> was at the time. It’s still one of the most addicting games ever made, but it was even more popular then, in an era before <em>Candy Crush</em> on everyone’s phones. (I guess we’re in the era <em>after</em> that now)</p>

<h3 id="whats-inside">What’s inside</h3>

<p>What’s inside the Talking Brick Game? Well, there’s an incredibly thin PCB behind the screen with an epoxy blob, the infamous “chip-on-board” packaging that makes it so much harder to understand what’s happening. Underneath this is the die.</p>

<p><img src="/assets/img/brickz/screen.jpeg" title="seriously you can see through this thing" alt="The screen PCB" /></p>

<p>And there’s a PCB behind the buttons. The buttons are individual pieces of hard plastic, with rubber contacts underneath. Extremely typical for handheld gaming consoles.</p>

<p><img src="/assets/img/brickz/buttons.jpeg" title="slightly more rigid" alt="The buttons PCB" /></p>

<p>Really, the most interesting thing is the little capacitor that does some filtering of the audio, and the transistor that does… something. Unfortunately, handheld games are pretty integrated. The brick games in MAME mention using CPUs from the <a href="https://github.com/mamedev/mame/blob/2badb97436c9ad7c32cb8f29757834efefde52a1/src/mame/handheld/hh_ht11xx.cpp">“Holtek HT1130”</a> 4-bit microcontroller family, but I don’t see 118-in-1 there.</p>

<h2 id="did-i-say-2000s">Did I say 2000’s?</h2>

<p>Now, here’s where things get fun: the Brick Game is still around. You can buy brand new ones, usually for less than $10.</p>

<p><img src="/assets/img/brickz/2bric.jpeg" title="not the same" alt="Two side by side" /></p>

<p>Now, the differences are subtle, but they add up to show that this actually doesn’t have much in common with the older counterpart.</p>

<ul>
  <li>The screen is larger</li>
  <li>The big center hump has been moved slightly to compensate</li>
  <li>The whole thing is slightly thinner</li>
  <li>The controls are now made entirely of a single piece of rubber; they’re moved closer together to compensate</li>
  <li>There’s an up button and a reset button</li>
  <li>The rear speaker is moved from behind the controls to behind the screen</li>
  <li>The battery compartment has the option for a screw to hold the cover in place (not used, on mine)</li>
</ul>

<p>All in all, while you can definitely recognize the design heritage, none of the plastic could actually be the same molds as before. Also, even though I ordered this new, there was no box or any real packaging beyond a plastic bag. (What can you expect, for such a low price?)</p>

<p><img src="/assets/img/brickz/9999.jpeg" title="nine is the best number, but this is a little out of hand" alt="9999 in 1" /></p>

<p>However, if they just reused the same box design, at least the pixels would actually be a box inside of a box. However, they’re not square! Even brick games aren’t free of the scourge of non-square pixels. And yeah, the screen is indeed noticeably worse in person too.</p>

<h3 id="9999-in-1">9999-in-1</h3>

<p>You might notice the other thing: we’re no longer being modest and limiting ourselves to 118-in-1. Oh no; we’re all the way at 9999-in-1, which for those of you unfamiliar, just means “a lot of games”. And the music is different too; no more <em>Pac-Man</em> music here. (<em>Korobeiniki</em> is also gone, even though I thought that was public domain)</p>

<p><audio controls="" src="/assets/img/brickz/new.wav">Your browser does not support the <code>audio</code> element.</audio></p>

<p>We’ll confirm once we crack this thing open, but hearing the audio I’m pretty sure they cut that filtering capacitor out of the circuit. This thing has <em>decades</em> of cost-shaving.</p>

<p><img src="/assets/img/brickz/menu2.jpeg" title="it's more differenter" alt="The new menu" /></p>

<p>The menu’s also different. The controls are no longer labeled, and while they’re similar, they’re still different– the “ROTATE” button now rotates through the game types, and they’re numbered, not lettered. I’m not sure why; there’s only 23 game types, so they <em>could’ve</em> kept the letters.</p>

<p><img src="/assets/img/brickz/car2.jpeg" title="my car is small" alt="The racing game, with a smaller car" /></p>

<p>The racing game is no longer game A, and you can see it’s been completely reimplemented, with a smaller car, and you dodge other cars rather than walls. While <em>Tetris</em> is clearly still the main attraction here and covers the vast majority of the game types, there are some more non-<em>Tetris</em> games, including <em>Breakout</em>.</p>

<p><img src="/assets/img/brickz/9.jpeg" title="battle city, or maybe battle town" alt="The tank game" /></p>

<p>Possibly the most interesting is game 9, where you drive a tank around the screen, you do indeed need to use the “up” button to move your tank, well, up. So that explains the extra button. These differences add up to enough that I think this is a reimplementation of the Brick Game, without shared code– probably a different microcontroller core. Of course, we haven’t even opened it yet, and we already know we’ll just find a blob.</p>

<h3 id="crack-it-open">Crack it open</h3>

<p><img src="/assets/img/brickz/inside.jpeg" title="terrible picture, nicci" alt="The interior" /></p>

<p>The inside surprised me. Not only is it completely different from the older model, it combines the controls and LCD connection on a single PCB. But what <em>really</em> blew my mind is the other side.</p>

<p><img src="/assets/img/brickz/pcb.jpeg" title="more modern than we believed" alt="The PCB labeled 2025.10.27" /></p>

<p>First off, let’s appreciate that perfectly round, shiny epoxy blob. <em>So</em> much nicer than the older matte misshapen one. They must have a tool for doing this. But the bigger surprise to me was the date: 2025.10.27. So this isn’t something they have a big vault of that they’re just selling off gradually; they’re making new ones of these these, and they’re constantly improving them, as recently as less than a year ago.</p>

<p><img src="/assets/img/brickz/no.jpeg" title="do you want off, or no off" alt="A pad labeled NO/OFF" /></p>

<p>Also, like, yes, their English is nearly infinitely better than my Chinese, which consists mostly of me trying to recognize characters I know from Japanese, but I have to call out the “NO/OFF” label. I have to. Surely you understand.</p>

<h2 id="bricks">Bricks</h2>

<p>So that’s all that I can really say about the Brick Game. I had one of these when I was younger, so it really surprises me that they’re still around, but I guess it makes sense? <em>Tetris</em> is the near-perfect game, and there’s still a lot of children in the world who aren’t going to have easy access to anything else to play games on. In that situation, this is a lot better than nothing.</p>]]></content><author><name></name></author><category term="lcd" /><category term="4bit" /><summary type="html"><![CDATA[What do you think about gaming in the late 90’s – early 2000’s? The PlayStation? The Nintendo 64? Maybe later SuperFX SNES games like Yoshi’s Island? Well, too bad. You’re not getting any of those, but you can get a portable game console in a church fundraiser. No, it’s not a Game Boy Color either, but hey, it’s got hundreds of games built right in! How bad could it be?]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://nicole.express/assets/img/brickz/2bric.jpeg" /><media:content medium="image" url="https://nicole.express/assets/img/brickz/2bric.jpeg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Composite Video on the NES: Why’s it so wobbly?</title><link href="https://nicole.express/2026/phase-altering-by-line.html" rel="alternate" type="text/html" title="Composite Video on the NES: Why’s it so wobbly?" /><published>2026-07-05T14:03:00-04:00</published><updated>2026-07-05T14:03:00-04:00</updated><id>https://nicole.express/2026/phase-altering-by-line</id><content type="html" xml:base="https://nicole.express/2026/phase-altering-by-line.html"><![CDATA[<p>The Nintendo Entertainment System. Is it the platonic ideal of an 8-bit video game system? Well, only because it’s so prominent and successful– it’s actually <a href="/2022/the-nes-as-an-artifact.html">kind of an oddball</a> in its expandability and design. But there’s something else about it. The picture is a bit… wobbly. Well, over composite video anyway. Let’s dig in and learn a little big more about the nitty-gritty of composite video.</p>

<aside><p>This whole blog post is only going to talk about NTSC encoding and timing. PAL encoding is its own thing, and the signal timings on 50Hz are different in significant ways. I don't have many consoles that output PAL and I'm less familiar with it.</p></aside>

<h2 id="not-so-mighty-now-are-you">Not so mighty now, are you</h2>

<p><video SRC="/assets/img/wobbly/jack.mp4" width="75%" autoplay="" loop="" muted=""> You don't have a video tag support or something? So you can't see this footage of the *Mighty Bomb Jack* title screen? Ah too bad.</video></p>

<p><em>Mighty Bomb Jack</em>, the most iconic bomb-collection platform taking place in a pyramid for the Nintendo Entertainment System. The title screen here, like a lot of title screens, is entirely static. But here, I’m using my composite-modded system, which just amplifies the video signal coming right off of the PPU, and the picture is wobbly.</p>

<p>And you might be tempted to say, now wait a second Nicole, this is composite video. You wrote <a href="/2021/shouldve-had-field-sequential.html">a whole post</a> on it! Composite video is inferior to other signals because it’s basically a form of video signal compression. And that’s true; but there’s no reason a composite frame should differ from frame to frame, is there? Here’s my beautiful Apple ][ running <em>Shanghai</em> (as referenced in <a href="/2026/the-other-type-of-mahjong.html">a recent post</a>).</p>

<p><video SRC="/assets/img/wobbly/shanghai.mp4" width="75%" autoplay="" loop="" muted=""> You don't have a video tag support or something? So you can't see this footage of the *Shanghai* title screen? Ah too bad.</video></p>

<p>That’s incredibly static!</p>

<h2 id="explanation-attempt-1-interference">Explanation Attempt 1: Interference</h2>

<p>Interference isn’t actually as big of a problem as you’d expect. It’s probably something you’re thinking about, but interference would generally present as a random pattern, not the cyclic noise seen on the NES screenshot. In fact, the Apple video was captured using a much longer cable, being strewn over my desk where several electronics were running, and you can actually see some noise in the white parts of the image. But it’s noise; it’s uncorrelated to the input signal.</p>

<p><img src="/assets/img/wobbly/b.png" title="can I use emoji in title-text? 🅱️" alt="The letter B on composite video from the title screen of Mighty Bomb Jack" /></p>

<p>This is the letter “B” from <em>Mighty Bomb Jack</em> above, cropped from the raw capture. Notice the repeating jagged pattern on the left side of the letter “B” where the white meets the blue of the sky. If this was just signal interference from outside, there’d be no reason to expect it to follow the images that closely.</p>

<h2 id="explanation-attempt-2-the-colorburst">Explanation Attempt 2: The colorburst</h2>

<p>If we divide the colorburst frequency of ~3.57 MHz by the NTSC linerate of 15.734kHz, we get a near-exact 227.5. That’s no coincidence; RCA deliberately aimed to have the color carrier a half-integer multiple of the linerate. That’s because if one scanline is similar to the next line, it’ll be a signal with a frequency similar to the linerate. It’s very rare, on the other hand, for the television signal to have components that are a half-integer multiple; so this makes it easier to filter out the color signal. I talked about this a bit in my <a href="/2021/shouldve-had-field-sequential.html">2021 post.</a></p>

<p>You might notice something here. The colorburst is expected to just be a portion of a continuous 3.57 MHz signal. That’s signal doesn’t fit evenly into the line frequency; so as a result, the colorburst should not be the same on every scanline. Could that be the cause of our wobble?</p>

<p>On the Apple, on the other hand, Woz noted it’d be very hard to use his <a href="/2024/phasing-in-and-out-of-existence.html">HIRES mode</a> if the pixel arrangements different on every other scanline; differing in every other byte on a single scanline is hard enough. So in this rare case, he took pity, and included extra hardware to stretch the clock cycle; on the Apple, the line rate is altered such that it has 228 color cycles. That is to say, it breaks RCA’s optimization, and allows the luminance to more easily interfere with the chrominance. Which is what artifact color is, after all.</p>

<p>So the Apple was a bad example. Another console with 228 color cycles per scanline is my Japanese Sega Master System, even though it’s seen as a more compliant signal in other ways. It was actually surprisingly hard to find a Master System game with a static title screen without a black background; I went with <em>Ace of Aces</em>.</p>

<aside><p>Black backgrounds are only to be used to represent space, Atari said so.</p></aside>

<p><video SRC="/assets/img/wobbly/aces.mp4" width="75%" autoplay="" loop="" muted=""> You don't have a video tag support or something? So you can't see this footage of the *Ace of Aces* title screen? Ah too bad.</video></p>

<p>Where you do see variation in scanline artifacts is in scrolling. Look at the ground in the <em>Alex Kidd in Miracle World</em> shot above. Look at the ground, and the artifacts on the ground in particular– where the artifacts are varies from frame to frame; or it’s more accurate to say, remains constant, while the ground moves, producing a shimmering effect.</p>

<p><img src="/assets/img/wobbly/output.gif" title="i threw it on the ground, but it was the ground, so it's a bit confusing" alt="Scrolling ground" /></p>

<p>What does a system that actually has 227.5 color cycles per scanline look like? Well, the PC Engine! (or, in this case, the SuperGrafx, but that shouldn’t matter)</p>

<p><video SRC="/assets/img/wobbly/wonder.mp4" width="75%" autoplay="" loop="" muted=""> You don't have a video tag support or something? So you can't see this footage of the *Wonder Momo* title screen? Ah too bad.</video></p>

<aside><p>"Hey Nicole, this looks <i>worse</i> than the more out-of-spec versions! What's the deal?"</p><p>Composite video wasn't designed for computer-generated images like this, but for images of the real world! Additionally, it was more designed for moving objects than still ones.</p></aside>

<p>This might be even more obvious if we zoom in a bit. Here’s a screenshot from the title screen of <a href="/2020/space-ava-201-release.html"><em>Space Ava 201</em></a>– it happens to be in SuperGrafx mode, which seems to have more noise for some reason, but we’ll ignore that today because this is extremely zoomed in.</p>

<p><img src="/assets/img/wobbly/jpeg.png" title="can I use emoji in title-text? 🅱️" alt="New Game in yellow text on a blue background" /></p>

<p>Look especially at where the blue background touches the yellow letters. Kind of hard to see through the video capture macroblocking, but every other pixel is slightly off. That’s because the color resolution is lower than the pixel resolution.</p>

<p>But compare it to the “B” above– the NES has a three-line pattern, not a two-line pattern. Intriguing.</p>

<h2 id="explanation-attempt-3-the-nes-is-different">Explanation Attempt 3: The NES is different</h2>

<p>The Sega Master System is a natively RGB animal. Its VDP doesn’t have a composite output; it outputs only an RGB image, which an external chip encodes to composite video. My <a href="/2021/adapteur-i-hardly-know-eur.html">French Master System 2</a> doesn’t even have that encoder, and as a result can <em>only</em> output RGB. We might say this is the norm for video game consoles, at least those from the latter half of the 1980’s onwards. The rainbow banding in the Master System screenshots above come from the Sony CXA1145 video encoder, and might be different if you used a different encoder.</p>

<p>The Famicom is a creature of the early 1980’s. It does not have a separate video encoder, and it actually <em>never</em> acts in RGB. The PPU doesn’t just output a composite video signal, it also works in that domain throughout, or with digital video data that isn’t color encoded at all. The lack of the RGB intermediary is what makes getting RGB out of the Famicom <a href="/2023/that-blasted-rgb.html">a bit complicated</a>.</p>

<aside><p>The 1994 PC-FX also doesn't act in RGB, but it's a creature of <i>component</i> video internally, so we'll ignore it.</p></aside>

<p>What does this mean? Well, take the NES palette (please!). This one’s <a href="https://www.firebrandx.com/nespalettes.html">FirebrandX’s</a> “Digital Prime”.</p>

<p><img src="/assets/img/wobbly/digitalprime.png" title="I hope FirebrandX doesn't mind my use of this" alt="The grid of colors that every NES game is confined to." /></p>

<p>But why did we need to credit someone with the palette? Because this is an RGB PNG image, and the NES knows nothing about RGB. As you can see, there are four different brightnesses (that last column’s a little weird), and there are twelve different hues. The first column has no hue; that’s just raw brightness. The NES internally translates directly from palette indices to these hues and brightnesses; it doesn’t even have an S-Video intermediary, let alone RGB.</p>

<p>The <a href="/2023/have-you-read-atari-today.html">Atari 2600</a> works in a very similar way, but <i>does</i> have an S-Video intermediary, and has sixteen different hues to boot. So why does the NES only have twelve?</p>

<p>The NES has a 21.47727 MHz crystal oscillator, which is exactly six times the colorburst frequency of 3.579545 MHz. The PPU can do a trick where it uses both the rising and falling edge of this clock when generating the color signal, so it has access to a base rate twelve times the colorburst frequency– and so, twelve possible phases come out of that pretty naturally.</p>

<aside><p>The Atari 2600 uses a 3.579545 MHz colorburst oscillator. So it's clearly generating its phase shifts differently, but that is outside of the scope of this blog post and is left as an exercise for the reader.</p></aside>

<p>And now we start to see where the NES gets its timing from. The NTSC Famicom <em>only</em> has a 21.47727 MHz oscillator. Every other clock is derived from it; divide that by twelve and you’ll get a beautiful 1.7897725MHz clock speed for the <del>6502</del> 2A03. Within the PPU, the master oscillator is divided by four to get a 5.3693175MHz dot clock, and each scanline is 341 dots (including the horizontal blanking interval), giving us a linerate of 15.7458kHz. Close enough for government work.</p>

<p>And now we see the trick. The relationship between the divided-by-six colorburst frequency and the divided-by-four pixel clock gives us an awkward 227.3<span style="text-decoration: overline">3</span> colorburst cycles per scanline. And that’s why we have a pattern that seems to repeat every three lines. Now we understand the B.</p>

<p><img src="/assets/img/wobbly/b.png" title="jeez nicole so lazy, at least use a different letter" alt="The letter B on composite video from the title screen of Mighty Bomb Jack" /></p>

<p>But let’s look at that title screen again. It seems like it’s alternating between two frames, not three. Why?</p>

<p><video SRC="/assets/img/wobbly/jack.mp4" width="75%" autoplay="" loop="" muted=""> You don't have a video tag support or something? So you can't see this footage of the *Mighty Bomb Jack* title screen? Ah too bad.</video></p>

<p>Ricoh’s engineers noticed this relationship between the line rate and the colorburst meant that across 262 scanlines (including the vertical blanking interval), you’d end up with a three-frame pattern of possible colorburst/scanline alignments. Apparently, this was unacceptable– on <a href="https://forums.nesdev.org/viewtopic.php?t=24294">NESdev</a>, you can see a good diagram by user lidnariq on how this could produce a moving diagonal pattern across the screen.</p>

<p>Instead, the NES does what might described as the world’s laziest interlacing. In interlacing, the last scanline between fields is half the length of a normal scanline. On the NES, that scanline alternates between 341 dots and 340 dots, a “missing dot”. Effectively, this means that you only see two of the possible three alignments, which alternate every other frame, thus creating an effect superficially similar to something with the “proper” 227.5 giving two possible alignments.</p>

<p>It’s worth stressing again that all of this is only true for the NTSC console. The PAL console naturally has a completely different timing system, with a different master oscillator and different divisors– and it doesn’t bother with the missing dot shenanigan at all. Still, the attention to detail here is impressive. The PPU is really an impressive machine for its time!</p>

<h2 id="rare-is-the-exception">Rare is the exception</h2>

<p>Another edge case of the missing dot is that it only occurs when the PPU is actually rendering; if both background and sprite rendering are turned off, then the PPU won’t bother; I’m not sure why, but if I had to guess, maybe just due to some implementation detail. A screen rendering nothing isn’t going to have anything complex on-screen that would show artifacts.</p>

<p>Now, why would you want to turn off the screen? The PPU, for all its merits, has a major flaw: during active screen rendering, you can’t write to video RAM at all. Instead, you have to batch your writes to occur during the vertical blanking interval. But if you turn off rendering, the PPU gives full access to the video RAM all the time; this is especially convenient if you’re using CHR-RAM, and need to upload all your tiles into on-cartridge RAM.</p>

<p>One game that does this is Rare’s <em>Battletoads</em>, one of their <a href="/2024/wizards-and-warriors-and-rare-oh-my.html">AxROM games</a>. It goes further than most– in order to get the maximum amount of CHR-RAM access time, it turns off rendering every single frame, using careful timing to turn it back on after a few blank lines that can squeeze out a few more tiles for more animation. Let’s take a look. This isn’t the title screen; it’s in-game, but much of the screen is still stationary. Just ignore my toad getting beat up, I’m sure he’s fine.</p>

<p><video SRC="/assets/img/wobbly/toads.mp4" width="75%" autoplay="" loop="" muted=""> You don't have a video tag support or something? So you can't see this footage of me getting beat up in *Battletoads*? Ah too bad.</video></p>

<p>It’s a little more noisy sure, but to confirm that’s really what’s happening, here’s a bit of the HUD from four adjacent frames. Like in <em>Alex Kidd in Miracle World</em> above, you can really see the effect in the rainbow banding, which in this case shows up on the partial heart– we are basically looking at a snapshot of the colorburst at this dot.</p>

<p><img src="/assets/img/wobbly/1.png" title="" alt="Frame 1." /></p>

<p><img src="/assets/img/wobbly/2.png" title="" alt="Frame 2." /></p>

<p><img src="/assets/img/wobbly/3.png" title="" alt="Frame 3. It is not the same as either above it." /></p>

<p><img src="/assets/img/wobbly/4.png" title="" alt="Frame 4. It is the same as Frame 1." /></p>

<p>Notice the first and fourth images are near-identical; this is a three-frame repeating pattern, exactly what the missing dot was supposed to cover for. Rare does it again.</p>]]></content><author><name></name></author><category term="explain" /><category term="video" /><summary type="html"><![CDATA[The Nintendo Entertainment System. Is it the platonic ideal of an 8-bit video game system? Well, only because it’s so prominent and successful– it’s actually kind of an oddball in its expandability and design. But there’s something else about it. The picture is a bit… wobbly. Well, over composite video anyway. Let’s dig in and learn a little big more about the nitty-gritty of composite video.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://nicole.express/assets/img/wobbly/frames.gif" /><media:content medium="image" url="https://nicole.express/assets/img/wobbly/frames.gif" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">How a Konami Cabinet Stays on Target: Target Panic!</title><link href="https://nicole.express/2026/stay-on-target.html" rel="alternate" type="text/html" title="How a Konami Cabinet Stays on Target: Target Panic!" /><published>2026-06-21T07:48:00-04:00</published><updated>2026-06-21T07:48:00-04:00</updated><id>https://nicole.express/2026/stay-on-target</id><content type="html" xml:base="https://nicole.express/2026/stay-on-target.html"><![CDATA[<p>We’ve seen a few test PCBs now; games that were only sold alongside Japanese arcade cabinets to satisfy a law requiring a minimum amount of functionality. Sega gave us <a href="/2021/a-lot-of-effort-for-dots.html"><em>Dottori-kun</em></a>, a remake of <i>Head-On</i>; Taito gave us <a href="/2024/taito-does-what-segant.html"><em>Mini-Vaders</em></a>, another retro throwback. But what about Konami? Let’s test out our system with <i>Target Panic</i>!</p>

<h2 id="no-expenses-spent">No Expenses Spent</h2>

<p><img src="/assets/img/tarzhay/board.jpeg" title="Certainly making me panic" alt="The small Target Panic PCB" /></p>

<p>Konami’s <em>Target Panic</em> is a small densely-packed PCB, intended presumably to be sold alongside cabinets like the 1996 <a href="https://wiki.arcadeotaku.com/w/Konami_Windy">Konami “Windy”</a>. We haven’t seen a Konami game from 1996 on the blog yet, but it’s fair to assume they did better for their retail games than a Z80 CPU. (A CMOS Z84, as it turns out) Interestingly, the position that would be taken up by a crystal oscillator is vacant on this board.</p>

<p><img src="/assets/img/tarzhay/osc.jpeg" title="Where we're going, we don't need... a CPU clock? No, we do need that" alt="an unpopulated area on the PCB labeled '4MHZOSC'" /></p>

<p>Of course, a CPU needs a system clock. Konami just went with a cheaper option– a ceramic resonator rather than a crystal oscillator. For reference, a random <a href="https://www.mouser.com/catalog/specsheets/tdk_ctl_4.3.2.pdf">datasheet</a> for a ceramic resonator gives a frequency tolerance of up to ±0.5%. A totally random <a href="https://www.we-online.com/components/products/datasheet/830208544409.pdf">crystal oscillator</a>, on the other hand, measures its frequency stability as ±50ppm– that is, 0.005%. While these aren’t the exact parts used, two orders of magnitude less stable sounds about right.</p>

<p>Now, that would definitely be enough to cause some problems for a composite video signal’s colorburst. It might also just barely be audible to a human with perfect pitch, if there was a sound chip and depending on the frequency. But this is an arcade PCB intended to be run on 90’s cabinets, with RGB CRT monitors, and there’s no sound chip. Obviously Konami considered it worth the tradeoff, though both Sega and Taito used crystal oscillators.</p>

<p>Let’s do some comparisons between the three PCBs.</p>

<table>
  <thead>
    <tr>
      <th> </th>
      <th><em>Dottori-kun</em></th>
      <th><em>Mini-Vaders</em></th>
      <th><em>Target Panic</em></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Year of release</td>
      <td>1990</td>
      <td>1992</td>
      <td>1996</td>
    </tr>
    <tr>
      <td>Main oscillator</td>
      <td>4MHz crystal</td>
      <td>24MHz crystal</td>
      <td>4MHz resonator</td>
    </tr>
    <tr>
      <td>Main CPU</td>
      <td>4MHz Z80</td>
      <td>4MHz Z80</td>
      <td>4MHz Z80</td>
    </tr>
    <tr>
      <td>Resolution</td>
      <td>128x96</td>
      <td>256x224</td>
      <td>192x96</td>
    </tr>
    <tr>
      <td>Colors</td>
      <td>8 (2 per screen)</td>
      <td>Monochrome</td>
      <td>8 (4 per screen)</td>
    </tr>
    <tr>
      <td>RAM</td>
      <td>2kiB</td>
      <td>8kiB</td>
      <td>8kiB</td>
    </tr>
  </tbody>
</table>

<p>It’s worth noting that I believe all three PCBs stall the CPU for at least some of the time during the active display, so the 4MHz is more of a theoretical maximum. Similarly, the four colors the <em>Target Panic</em> can draw are actually limited, as black and white are hardcoded. Despite spanning half a decade and three separate companies, the hardware specs barely changed. This was how you made a bare minimum game.</p>

<p>Both <em>Dottori-kun</em> and <em>Mini-Vaders</em> are based off of one of their respective company’s popular 1970’s arcade machines. Konami only really started to get into their stride in the 1980’s, though, so what did they turn to here? Well, they didn’t just dig into the past of their games; they dug into the past of arcades and amusements. (Sorry, <em>Astro Invader</em> diehards)</p>

<h2 id="the-game">The game</h2>

<p>The first thing I want to say is that despite any concerns you might have from the ceramic resonator, I had absolutely no issue syncing this device with my capture setup. So points on that, Konami; thank you for thinking of people playing your game decades later on hardware it most certainly was never intended to run on. Or for having it coincidentally work. I’ll take either.</p>

<h3 id="the-test">The test</h3>

<p>Before we start, let’s look at this self-test. This was a hard screenshot to get; I had to time it pretty much perfectly, it only lasts about as long as the Framemeister takes to sync.</p>

<aside><p>Of course, I could've used the OSSC Pro or GBS-Control in a free-running mode. But this was easier than setting those up.</p></aside>

<p><img src="/assets/img/tarzhay/test.png" title="I've never seen a version other than JAA" alt="Self test screen. WORK &amp; GRAM OKAY, ROM OKAY 0x74FH, Ver. JAA" /></p>

<p>So, this might not be worth mentioning. <em>Most</em> arcade games start up with a self test, it’s just good practice. But let’s go back to the part where I say that it was extremely fast. Take a look at what the <a href="https://github.com/mamedev/mame/blob/master/src/mame/konami/tgtpanic.cpp">MAME source</a> says:</p>

<blockquote>
  <p>Konami Target Panic (cabinet test PCB)
It takes a while to boot up, just hold INS for a bit to fast forward.</p>
</blockquote>

<p>And if you load the ROM in MAME, you will indeed be stuck on the test screen for quite some time before it finally lets you play the game. What’s interesting is, I dumped my ROM just to be sure, and it’s byte-for-byte identical. So this must be waiting on some edge case that isn’t emulated yet. Proof that even tiny boards can have complications for emulating.</p>

<h3 id="the-presentation">The presentation</h3>

<p><img src="/assets/img/tarzhay/title.png" title="Amazing" alt="TARGET PANIC title screen" /></p>

<p><em>Target Panic</em> has the most proper title screen out of any of the arcade test PCBs I’ve looked at so far. Not only does it actually show the name of the game (something both <em>Dottori-kun</em> and <em>Mini-Vaders</em> failed at), it even has copyright information, and a trademark symbol. Apparently Konami’s lawyers are very thorough.</p>

<p><img src="/assets/img/tarzhay/copyright.png" title="original video game do not steal" alt="TARGET PANIC title screen, showing '1996 COPYRIGHT KONAMI ALL RIGHTS RESERVED" /></p>

<p>One thing I found interesting are these vertical lines that are visible in the full capture. My guess is that these are gaps in the pixels, nearly instantaneous as the 74LS157 or other logic in the chain clocks out the bits. Worth noting I couldn’t see that at all on my Sony Trintron, but it might just because it’s so small.</p>

<p><img src="/assets/img/tarzhay/upscale.png" title="i kept calling these horizontal lines" alt="PRESS START with vertical lines through it" /></p>

<h3 id="no-really-the-game">No really, the game</h3>

<p>So what is <em>Target Panic</em>?</p>

<p><img src="/assets/img/tarzhay/target.png" title="Taking 8-way joystick too literally" alt="Target Panic gameplay. Eight targets, one of which rotates to face the player." /></p>

<p>It’s a simple game where one of the eight targets that surround the screen will rotate forwards, showing itself to the player. You control the joystick, and your goal is to push to one of the targets and fire by pressing the action button. The joystick control is actually kind of interesting here; you don’t move the cursor. Instead, the cursor follows the motion of the joystick exactly; when it returns to center, the target does. Hold it left, the cursor is left. Hold down-right, the cursor is down-right. This also makes it more useful as a simple console test.</p>

<p><img src="/assets/img/tarzhay/hit.png" title="blast" alt="Target Panic gameplay. The screen turns red-- a hit!" /></p>

<p>Color is part of the gameplay; it turns red when you get a hit, and then rotates back afterwards. A fun thing to notice is that when looking through the footage for this screenshot, I went back one frame and found that the game actually toggled the color bit mid-frame. You can see where it changes– I don’t believe this hardware has any way for the Z80 to know when VBlank is to avoid glitches like this.</p>

<p><img src="/assets/img/tarzhay/split.png" title="blast!" alt="Target Panic gameplay. The screen is blue in the top half and red below" /></p>

<p>I think you can probably see why I call <em>Target Panic</em> a throwback to an era from before video gaming. It’s a carnival shooting gallery! The sort of rotating targets might also remind you of <em>Hogan’s Alley</em>. A fun little throwback for sure.</p>

<h3 id="test-again">Test, again</h3>

<p><em>Target Panic</em> also contains a small service menu. Since this game is so poorly documented online, I decided to go through it. Plus, there’s a fun little bit.</p>

<p><img src="/assets/img/tarzhay/menu.png" title="so many choices" alt="MAIN MENU: IO CHECK, SCREEN CHECK, COLOR CHECK, GAME MODE. 1PLAYER JOYSTICK = SELECT ITEM 1PLAYER PUSH1 = DO CHECK" /></p>

<p>As you’d expect, GAME MODE just brings you into the game. But what about the other options?</p>

<p><img src="/assets/img/tarzhay/io.png" title="dumping money in" alt="IO CHECK, listing all the buttons. COIN is currently active." /></p>

<p>IO Check allows you to test the player 1 controls. It’s a little more thorough than just using the game to test, but it’s worth noting that there’s no player 2 options– in fact, they’re not even connected on the PCB.</p>

<p><img src="/assets/img/tarzhay/no2.jpeg" title="waste of money putting the pads here at all tsk tsk" alt="The JAMMA edge on the reverse side of the PCB, showing pads not connected to anything" /></p>

<p>Of course, <em>Dottori-kun</em> and <em>Mini-Vaders</em> also lacked any 2P controls.</p>

<p><img src="/assets/img/tarzhay/grid.png" title="that's a grid" alt="A grid of white lines on black. 1PLAYER START=EXIT" /></p>

<p>The screen test is just a very simple grid, used to measure and adjust convergence.</p>

<p><img src="/assets/img/tarzhay/color.png" title="just two colors" alt="Color check, showing red and green" /></p>

<p>The color test allows you to see the eight colors this PCB can produce. However, it can’t display them all at once, as noted above, so they can’t show color bars. I imagine adjusting color would be very frustrating with this as your only reference.</p>

<p><img src="/assets/img/tarzhay/christmas.png" title="RARE Christmas Target Panic L@@K!!!" alt="Target Panic, now in red and green" /></p>

<p>One neat thing is that if you exit color test mode, it keeps the colors you had set. For example, here I now can play <em>Target Panic</em> in red and green; in this case, it changes to magenta when I shoot, and persists back to red and green afterwards, so this doesn’t appear to just be a failure to reset the color bits, but something deliberate.</p>

<h2 id="how-much-can-i-say">How much can I say?</h2>

<p><img src="/assets/img/tarzhay/over.png" title="nice" alt="Target Panic, GAME OVER" /></p>

<p>There’s not really too much to say about <em>Target Panic</em>. Is it even really a game, or just a piece of test software that has some game-like characteristics thrown in for fun? In any case, I think it’s neat just to see something that the general public was never intended to. I hope you enjoyed the look as well!</p>

<div class="steps">
    <h2><i>A series on:</i> <b>Throwaway Arcade Games</b></h2>
    <p>Games intended to be played once and discarded after confirming the basic functions of the arcade hardware they came with. Can they stand on their own?</p>
    <ul>
        
        
        

        

        
        <li>
            
                <a href="/2021/a-lot-of-effort-for-dots.html">A Lot of Effort to be Thrown Away: Sega's Dottori-kun!</a>
            
            
                — Sega's <i>Dottori-kun</i>, and the discrete logic that powers this simple game. <i>Head-On</i> is back!
            
        </li>
        
        
        
        

        

        
        <li>
            
                <a href="/2024/taito-does-what-segant.html">Taito's Mini-Vaders: Why Should Dottori Have All the Fun?</a>
            
            
                — Taito enters the ring with <i>Mini-Vaders</i>. How could they do anything else except <i>Space Invaders</i>, after all.
            
        </li>
        
        
        
        

        

        
        <li>
            
                <b>How a Konami Cabinet Stays on Target: Target Panic!</b>
            
            
                — Konami could hardly be left out. Can you imagine that they used a Z80 and some discrete logic? Truly shocking.
            
        </li>
        
        
    </ul>
</div>]]></content><author><name></name></author><category term="arcade" /><category term="stuff" /><category term="konami" /><summary type="html"><![CDATA[We’ve seen a few test PCBs now; games that were only sold alongside Japanese arcade cabinets to satisfy a law requiring a minimum amount of functionality. Sega gave us Dottori-kun, a remake of Head-On; Taito gave us Mini-Vaders, another retro throwback. But what about Konami? Let’s test out our system with Target Panic!]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://nicole.express/assets/img/tarzhay/christmas.png" /><media:content medium="image" url="https://nicole.express/assets/img/tarzhay/christmas.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">The Truth about Sega’s TradeMark Security System (TMSS)</title><link href="https://nicole.express/2026/the-truth-about-tmss.html" rel="alternate" type="text/html" title="The Truth about Sega’s TradeMark Security System (TMSS)" /><published>2026-06-07T09:03:00-04:00</published><updated>2026-06-07T09:03:00-04:00</updated><id>https://nicole.express/2026/the-truth-about-tmss</id><content type="html" xml:base="https://nicole.express/2026/the-truth-about-tmss.html"><![CDATA[<p>I’m bringing out the <strong>truth</strong> about TMSS! <strong>Admit it!</strong> Sega never made a game console that can’t play that region’s release of <em>Phantasy Star II</em>, and it’s time to show exactly what that means and why. Let’s dig into the technical nitty-gritty of one of the biggest flops in console licensing history. Spoilers: It’s a little more complicated than you think, at least in Japan.</p>

<h2 id="trademarks-and-security-and-bears-oh-my">Trademarks and Security and Bears, oh my</h2>

<p><img src="/assets/img/segala2/gen1.jpeg" title="wait why doesn't it have HDMI if it has High Definition Graphics" alt="A Sega Genesis 1" /></p>

<p>This is my Model 1 Sega Genesis, VA3 motherboard. As a result, it has no security of any sort. When you plug in a cartridge, the Motorola 68000 starts executing code from the cartridge, and the VDP will output a video signal based off of the commands sent by the 68000. Even the export Sega Master System had a BIOS to check the cartridge had a valid header; this doesn’t even have that. In this regard, it is very similar to the Atari 2600, the Nintendo Famicom, top-loading NESes without the lockout chip, or Sega’s own SG-1000.</p>

<p>It would be the last Sega console to be this free.</p>

<aside><p>The Zilog Z80 could execute code at the very start if you're running in Master System mode. Yes, yes. However, every Sega Genesis that can execute Master System code does it without any security.</p></aside>

<p>From the beginning, Sega had planned to include the possibility of a security system in the Genesis; it just wasn’t present in the first release. Why? Unclear; perhaps they wanted to see if companies actually would try to release third-party cartridges before investing the time to implement. But in any case, if I turn on my Sega Genesis <a href="/2026/people-love-the-sega.html">MD3</a>, or any Genesis from the “VA6” variant of the Model 1 motherboard onwards, I am presented with this:</p>

<p><img src="/assets/img/segala2/tmss.png" title="produced by or under license from your mom GOTTEM" alt="PRODUCED BY OR UNDER LICENSE FROM SEGA ENTERPRISES LTD." /></p>

<aside><p>If you use an upscaler like the Framemeister, it can often take long enough to sync that you won't actually see the screen.</p></aside>

<p>This is the tell-tale mark of the TradeMark Security System (TMSS). I’ve talked about this <a href="/2020/trademarks-and-region-locks.html">before</a>, so I’ll summarize. The TMSS system displays a screen claiming that Sega endorsed the game in question. Therefore, to display the screen would be a trademark violation if Sega did <em>not</em> endorse the game, but the Genesis won’t play a game without displaying the screen.</p>

<p>TMSS-enabled consoles have a tiny boot ROM in the IO controller that does the following:</p>

<ol>
  <li>Have the string <code class="language-plaintext highlighter-rouge">SEGA</code> or ` SEGA<code class="language-plaintext highlighter-rouge"> (with a space) at address </code>0x100` in the ROM. This is what displays the copyright screen, but then the boot ROM turns off the VDP again.</li>
  <li>To activate it back again, the game must first write the 16-bit word “SEGA” to a certain address on the IO controller, before it turns on the VDP.</li>
</ol>

<p>Sega’s lawyers believed that doing this without the explicit written permission of Sega League Baseball would be a trademark violation. <a href="https://en.wikipedia.org/wiki/Sega_v._Accolade">Courts disagreed</a>, but you can’t blame a megacorporation for trying.</p>

<h3 id="games">Games</h3>

<p><em>Populous</em> by Electronic Arts is my go-to example of a game that doesn’t work on TMSS-enabled consoles; it doesn’t do either of the steps mentioned above. Therefore, even though it got the Sega Seal of Quality, it won’t run on many Genesis consoles.</p>

<p><img src="/assets/img/segalaw/sega-seal.jpg" title="If I can't trust marketing who can I trust" alt="The Sega Seal of Quality on a copy of Populous that doesn't run on most Genesis revisions" /></p>

<p>Now that we’re on the same page, let’s look at two games:</p>

<p><img src="/assets/img/segala2/2g.jpeg" title="mahjong lady's just here for fun" alt="Two games" /></p>

<p>These two games are the Japanese release of <em>Phantasy Star II</em>, and a pirate game called <em>Mahjong Lady</em>; the pirate game is actually just stolen from an unlicensed game, <em>Dial Q o Mawase</em>. These two games do not work on my Sega CDX, as you’d expect. They do work on the VA3 Genesis Model 1 (though <em>Phantasy Star II</em> doesn’t fit in the cartridge slot). So the same as <em>Populous</em>? Not quite.</p>

<p><img src="/assets/img/segala2/ps2.png" title="they redid all the drum samples for the US release" alt="Phantasy Star II title screen" /></p>

<p>That’s coming from my Genesis 3 (“MD3”), but only with the region switch set to Japan. You’d get the same thing on a Japanese Mega Drive 2. These games <em>work</em> on Japanese consoles with TMSS, but not American ones. So what’s special about them? They have the <code class="language-plaintext highlighter-rouge">SEGA</code> string where the boot ROM can see it, but they don’t write <code class="language-plaintext highlighter-rouge">SEGA</code> to the magic address.</p>

<aside><p>As far as I know, PAL consoles behave the same way as American ones. In this case, the relevant bit is actually just "Japan vs. Export". However, Asia region consoles seem to sometimes share the Japan behavior; that requires more research.</p></aside>

<p>So from this, can we conclude that TMSS in Japan only ever required the BIOS check, making it equivalent to the export Master System’s region check? Well, I’d hope it’d be that simple, but…</p>

<h2 id="channel">Channel</h2>

<p><a href="https://segaretro.org/TradeMark_Security_System">Sega Retro</a> makes some interesting claims about TMSS– for example, the TeraDrive got a cool full Sega logo screen. At the time of this writing, it lacks the information about the region difference I mention above. But more important is the following claim, hidden in a list of official games with partial TMSS support:</p>

<blockquote>
  <ul>
    <li>Sega Channel (Japanese version) — All cartridges (skips step 1)</li>
  </ul>
</blockquote>

<p>This is the first and only time I’ve ever heard of an official Sega cartridge missing Step 1. But on the other hand, the Sega Channel is kind of an oddball. But it also came out in 1994, by which time the Mega Drive 2 was released in Japan, which <em>always</em> has TMSS, even if it’s export-region TMSS.</p>

<p>So, I don’t have a Sega Channel for Japan or any other region. But there are versions of the BIOS ROM… around… and you can look at the address <code class="language-plaintext highlighter-rouge">0x100</code>.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>00000100: 2020 2020 2020 2020 2020 2020 2020 2020
00000110: 2843 2953 4547 4120 3139 3934 2e4a 554c  (C)SEGA 1994.JUL
00000120: 5345 4741 2043 4841 4e4e 454c 2041 4441  SEGA CHANNEL ADA
00000130: 5054 4552 2042 494f 5320 464f 5220 3143  PTER BIOS FOR 1C
00000140: 4849 5020 472f 4120 2020 2020 2020 2020  HIP G/A
</code></pre></div></div>

<p>The string Sega’s there, but it’s not where TMSS can find it. So something interesting is definitely going on here. Meanwhile, on an American Sega Channel, you see <code class="language-plaintext highlighter-rouge">SEGA</code> exactly where it’s expected.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>00000100: 5345 4741 2047 454e 4553 4953 0000 0000  SEGA GENESIS....
00000110: 2843 2954 2d58 5820 3139 3934 2e4a 414e  (C)T-XX 1994.JAN
00000120: 5365 6761 2043 6861 6e6e 656c 2020 2020  Sega Channel
00000130: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000140: 0000 0000 0000 0000 0000 0000 0000 0000  ................
</code></pre></div></div>

<aside><p>These come from the Unix xxd command, which should be available on most Linux and macOS computers, or presumably also Windows Subsystem for Linux.</p></aside>

<p>So now we have something to confirm. We know Japanese games can work if they don’t do step 2, as long as they have Sega in the right place. We know that games that do neither won’t work at all. But can games run without <code class="language-plaintext highlighter-rouge">SEGA</code> in the right place, as long as they still trigger the VDP address? Did Sega release a Sega Channel in Japan that didn’t work with the Mega Drives on store shelves? I wouldn’t put it past them, honestly.</p>

<p>Mind you, it’s also possible that the Sega Channel itself does some ROM-mapping shenanigans on bootup.</p>

<h2 id="test-harness">Test harness</h2>

<p>So, we want to try out some code on a Genesis. Unfortunately, a simple flash cart won’t work for this. Every Genesis flash cart I know of boots into an onboard BIOS when it first runs, even if only to check whether jumping to a game has been activated. Therefore, every flash cart already does the TMSS dance on bootup, if they want to work on most consoles.</p>

<p>What we want is to just shove a EPROM we can write to onto the Genesis’ 68000 bus. And that’s exactly what this cartridge, which I got from <a href="https://www.ebay.com/sch/i.html?item=156078610879&amp;rt=nc&amp;_trksid=p4429486.m3561.l161211&amp;_ssn=mamoh-4702">this eBay seller</a>, does.</p>

<p><img src="/assets/img/segala2/cart.jpeg" title="nice and simple" alt="A Sega Genesis cartridge PCB" /></p>

<p>So, easy-peasy, right? Yes, that’s what I thought too, until I tried to put a 27C160 into my EPROM programmer.</p>

<p><img src="/assets/img/segala2/nope.jpeg" title="damnit" alt="One too many rows of pins here" /></p>

<p>Yep, you might notice that it’s got one too many pins. After looking around for a solution to this, eventually I built one of these <a href="https://github.com/mafe72/27c160-tl866-adapter">adapters</a>, which let you treat a larger 16-bit EPROM as several smaller ones. I got this as a kit; it’s very reassuring to solder something and have it work the first time!</p>

<p><img src="/assets/img/segala2/adapt.jpeg" title="it's a bit annoying to use this on a T48 because of the placement of the ZIF socket switch, it was really designed for the older models" alt="The adapter inside the programmer, with a larger ZIF socket and some dip switches" /></p>

<p>Note that you’ll be pretending that your device is an “AM27C4096@DIP40”, but it won’t have the right ID. That’s fine as long as you see something like this; the command line <code class="language-plaintext highlighter-rouge">minipro</code> is nice enough to let you know that it detected a 27C160.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Invalid Chip ID: expected 0x1001900, got 0x2000B100 (M27C160@DIP42)
(use '-y' to continue anyway at your own risk)
</code></pre></div></div>

<p>There is one more problem you’ll have to overcome, though. You see, the EPROM is 16-bit. A Genesis ROM dump intended to be used in an emulator is pretty much always going to be arranged as a “little-endian” 16-bit ROM. This means the byte ordering will match what Intel x86 CPUs use, as well as AMD x86-64 and essentially all ARM CPUs in actual use, including the Apple M3 I’m writing this blog post on. That’s great for your emulator, but the Motorola 68000 is actually “big-endian”. So you need to swap every 8-bit byte with the one next to it. It turns out <a href="https://stackoverflow.com/questions/71182536/swap-or-replace-bytes-in-a-binary-file-from-command-line">Stack Overflow</a> taught me the common Unix command <code class="language-plaintext highlighter-rouge">dd</code> can do that, which is nice.</p>

<p>Do all that, and you’ll finally get this:</p>

<p><img src="/assets/img/segala2/hell.png" title="hellfire! hell hell fire!" alt="Hellfire title screen" /></p>

<p>I chose Toaplan’s <em>Hellfire</em> for two reasons:</p>

<ol>
  <li>It misuses the YM2612 sound chip in ways that are perfectly fine on the YM2612, but it means on later Genesises that use an integrated YM3438, the sound plays too slowly, so it’s fun to use as a test game.</li>
  <li>It’s a small enough game that putting the ROM using the adapter doesn’t require me to break it up into parts.</li>
</ol>

<aside><p>Discrete YM2612s can have issues with <i>Earthworm Jim</i>, whose soundtrack was only tested on YM3438-containing systems and is known to stutter a bit otherwise. Therefore, there is no ideal Genesis that can play every licensed game without issue.</p></aside>

<p><em>Hellfire</em> as a game is fully licensed by Sega, and follows all the TMSS rules. But it’s extremely easy to overwrite the ROM header. We could even use the name of <strong>The Enemy</strong>.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>00000100: 6e69 6e74 656e 646f 3f3f 3f3f 3f3f 3f20  nintendo???????
00000110: 2843 2954 2d33 3520 3139 3930 2e4a 554e  (C)T-35 1990.JUN
00000120: 4845 4c4c 4649 5245 2020 2020 2020 2020  HELLFIRE
</code></pre></div></div>

<p>This should run fine in emulators, because there’s no real reason to emulate TMSS. But what about consoles? We’ve overwritten the header, but it still should write to the magic address afterwards. And of course, the Sega Genesis Model 1 VA3…</p>

<p><img src="/assets/img/segala2/hell.png" title="reusing screenshots to save the environment" alt="Hellfire title screen" /></p>

<p>Runs everything.</p>

<h3 id="results">Results</h3>

<table>
  <thead>
    <tr>
      <th>Console</th>
      <th>Region</th>
      <th>Runs?</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Sega Genesis Model 1 VA3</td>
      <td>Export</td>
      <td>✅</td>
    </tr>
    <tr>
      <td>Sega CDX</td>
      <td>Export</td>
      <td>❌</td>
    </tr>
    <tr>
      <td>Sega Mega Drive 2</td>
      <td>Japan</td>
      <td>❌</td>
    </tr>
    <tr>
      <td>Sega Genesis 3 (“MD3”)</td>
      <td>Export</td>
      <td>❌</td>
    </tr>
    <tr>
      <td>Sega Genesis 3 (“MD3”)</td>
      <td>Japan</td>
      <td>❌</td>
    </tr>
  </tbody>
</table>

<p>So, this basically shows that yes, the header is necessary for TMSS to function, even in Japan. And therefore, Sega Channel must be doing something special, either mapping its ROM in a particular way, or maybe even just taking over the bus on bootup to fake the expected <code class="language-plaintext highlighter-rouge">SEGA</code>. I’d need to get my hands on one of those to find out, and likely even a logic analyzer; that’s beyond the capabilities of my setup at the moment.</p>

<p>One thing I do find interesting is that I didn’t even get a video signal I could sync to from the Mega Drive 2, while the others gave a blank output. This might imply that it implements this slightly differently, but I’m not sure. In any case, I think this slightly more elucidates the inner working of Sega’s 16-bit console, and that’s all I wanted to do. I hope you found it interesting!</p>]]></content><author><name></name></author><category term="16bit" /><category term="info" /><category term="sega" /><category term="technical" /><summary type="html"><![CDATA[I’m bringing out the truth about TMSS! Admit it! Sega never made a game console that can’t play that region’s release of Phantasy Star II, and it’s time to show exactly what that means and why. Let’s dig into the technical nitty-gritty of one of the biggest flops in console licensing history. Spoilers: It’s a little more complicated than you think, at least in Japan.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://nicole.express/assets/img/segala2/tmss.png" /><media:content medium="image" url="https://nicole.express/assets/img/segala2/tmss.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">You Need a PC for PC Games: Sunsoft’s Shanghai</title><link href="https://nicole.express/2026/the-other-type-of-mahjong.html" rel="alternate" type="text/html" title="You Need a PC for PC Games: Sunsoft’s Shanghai" /><published>2026-05-24T09:38:00-04:00</published><updated>2026-05-24T09:38:00-04:00</updated><id>https://nicole.express/2026/the-other-type-of-mahjong</id><content type="html" xml:base="https://nicole.express/2026/the-other-type-of-mahjong.html"><![CDATA[<p>There’s a problem with my current series on mahjong games– when I say “mahjong”, people in my home country of the United States of America probably don’t think of the 2-4 player competitive game. They think of the single-player tile-matching game, Mahjong Solitaire, also known as <em>Shanghai</em>, beloved of office-workers and casual gamers everywhere. And that’s popular in Japan too; popular enough to get arcade releases. How did Sunsoft bring <em>Shanghai</em> to arcades? Why is that even a question worth asking?</p>

<h2 id="born-on-the-pc">Born on the PC</h2>

<p>The exact origins of the tile-matching game using mahjong tiles are unclear, but making it a video game is usually attributed to Brodie Lockard, who discovered the tile-matching game as he dealt with recovery from an injury that had left him paralyzed, porting it to the PLATO system. But it was the Activision-published 1986 release across computers that really made it a mainstream hit.</p>

<p><img src="/assets/img/shanghaid/shanghai2.png" title="shanghai ][, not to be confused with shanghai 2, which only got a iigs release" alt="Shanghai on the Apple II, the dragon" /></p>

<p><em>Shanghai</em> presents you with an arrangement of mahjong tiles arranged in a multi-level structure. You can remove tiles from the structure, but you have to follow certain rules when doing so: to be removed, they must have an empty space on one side, and nothing on top of them. This is a nice brain teaser, and honestly I’m completely addicted to it.</p>

<p><img src="/assets/img/shanghaid/shanghai22.png" title="I don't like when the directions aren't kanji" alt="Shanghai on the Apple II gameplay. Tiles are stacked" /></p>

<p>Take a look at the 1986 Apple ][ version above. This uses the Apple’s <a href="/2024/phasing-in-and-out-of-existence.html#hires-mode">“HIRES”</a> directly-addressable pixel graphics mode; and while that’s normal for games on this platform, <em>Shanghai</em> pretty much necessitates using the directly-addressable pixel graphics modes whenever possible. Because the problem is that any tile could be on top of any other tile, and they can be on different levels. There’s no tile grid.</p>

<aside><p>An interesting thing to note is that the tiles used in <i>Shanghai</i> don't match those used in Japanese <i>riichi</i> mahjong. Even putting aside the simplified labels used in the Apple release, the game has flower and season tiles, which aren't typically used in <i>riichi</i>, making it closer to Chinese variants of mahjong. (It also lacks the jokers used in American mahjong)</p><p>Given the demographics of English-speaking mahjong players and of people who read this blog, my guess is that among most readers, if they're familiar with any version of the competitive game at all, it's most likely going to be <i>riichi</i>.</p></aside>

<p><img src="/assets/img/shanghaid/nes.png" title="breaking out the rgb blaster" alt="Shanghai on NES. The colors are different, rather than having visually different levels" /></p>

<p>And that’s what makes this game so interesting as a use case for comparing ports. Because while computers of this period generally have directly-addressable graphics modes, game-centric hardware usually did not, and that made this game hard to port. The Famicom port above is particularly pathetic; it uses colors to simulate the layers and tiles are limited to 16x16. It’s actually extremely playable and has catchy music, but it’s highly compromised visually. (Oddly, the <a href="https://www.youtube.com/watch?v=TT39grfv6L0">CGA IBM PC</a> release also used colors instead of levels)</p>

<aside><p>We actually have a <a href="https://tcrf.net/Proto:Shanghai_(NES)">prototype version</a> of this game, which made different compromises. (And was for the FDS, but that might've just been a development artifact) I think the final version turned out better, myself.</p><p><img src="/assets/img/shanghaid/proto.png" title="colorful tiles, but not in the usual way" alt="Shanghai prototype on NES. The background is black and the tiles colors are accents rather than filling them in, but there's still not proper leveling." />
</p></aside>

<p><img src="/assets/img/shanghaid/sms.png" title="i made a terrible mistake early on and decided to just roll with it. it didn't work" alt="a shanghai game on master system. The tiles are big but the player is stuck" /></p>

<p>The Sega Master System version is far superior, with big tiles taking up almost the entire screen. This is because the Master System, while not having directly-addressable pixel modes (other than the legacy mode, used in <em>F-16 Fighting Falcon</em> for exactly this purpose, but thank goodness they didn’t use that), does have video RAM. But it doesn’t actually have <em>enough</em> video ram to tile this whole area. So how’s it doing this? Take a look at the tiles in an emulator like <a href="https://emulicious.net/">Emulicious</a>.</p>

<p><img src="/assets/img/shanghaid/flicker.gif" title="party time" alt="list of the tiles. a few are flickering" /></p>

<p>Certain tiles from the top row of tiles are being redrawn mid-frame so they can fulfill double-duty as also covering the bottom row. You can also see how this game uses the majority of the sprite table in VRAM to act as additional tiles instead; the only sprites used are those that make up the cursor. It seems like such a simple screen, but they’re actually pushing the console here! This port was developed in-house at Sega, usually attributed to the famous Mark Cerny.</p>

<aside><p>The Famicom version of <i>Shanghai II</i> draws properly overlapping tiles. Unfortunately, the Famicom can't rewrite CHR-RAM during active display like the Master System can, so the directly-addressable screen area is more limited in size.</p><p><img src="/assets/img/shanghaid/nes2.png" title="the original feels faster and more responsive, though" alt="Shanghai II on NES. The tiles are smaller but they do overlap properly" />
</p></aside>

<p>It’s not just graphical issues. Look at the video of <em>Shanghai</em> on Famicom below. Notice how long it takes for the game to figure out how many moves the player has remaining. Sure, it’s not more than a few seconds, but that’s a <em>lot</em> of frames. Therefore, this version of <em>Shanghai</em> can’t end your game automatically when you have no moves left. I’ve often complimented the Famicom’s plucky little 1.7MHz almost-6502, but this is a complex combinatorial problem. (It’s a faster CPU than the Apple ][!)</p>

<p><video SRC="/assets/img/shanghaid/calc.mp4" width="75%" controls=""> You don't have a video tag support or something</video></p>

<p>It’s worth noting, though, that <em>Shanghai II</em>  on the same platform does detect this automatically (though it still takes a few frames to notice), so it’s likely that the original game could’ve done this. This is all just context to let you know that <em>Shanghai</em> is more complex to support than it looks at first glance. We’ve looked at a lot of arcade game hardware here, and it’s almost all tile-based. Tiles are great for video games! But this game required another approach.</p>

<p><img src="/assets/img/koipond/furiten.png" alt="The game warns that the player can not call ron, due to the rule of furiten" title="today, we are all in furiten" /></p>

<p>You might wonder if this is another case where a blitter, like <a href="/2026/more-like-koi-yes-magic-potion.html">Nichibutsu used</a> on almost all their mahjong titles, would be a good fit. After all, it’s very clearly shown that those can copy large mahjong tiles around. Well, maybe it would’ve been. But for their 1988 arcade release, Sunsoft did something else.</p>

<h2 id="advances-in-pc">Advances in PC</h2>

<p>The PCB is large but spacious, festooned with both Sunsoft’s logo and the logo of their parent company, the Sun Corporation of Japan, a Japanese conglomerate that still exists today, owning businesses ranging from the recent Sunsoft revival to, uh, an Israeli phone-hacking firm? Okay then…</p>

<p><img src="/assets/img/shanghaid/bored.jpeg" title="today, you are all in furiten" alt="The PCB of Shanghai" /></p>

<p>In any case, the first interesting thing about this board is the CPU. It’s an 8MHz NEC V30; this is an upgraded version of the Intel 8086, which means it’s a 16-bit CPU with a 16-bit data bus and a 20-bit address bus.</p>

<p><img src="/assets/img/shanghaid/v30.jpeg" title="so many bits" alt="NEC V30 chip" /></p>

<p>Certainly x86 processors are less common than Motorola 68000s in arcade boards of this time, but they’re not unheard of either. In terms of arcade boards that have shown up on this blog, <a href="/2022/panic-at-the-road.html"><em>Panic Road</em></a> used an NEC V30 clone made by Sony. And of course, this also would’ve been a decent CPU for a home computer of the time, though the high-end was leaving it behind by 1988. Pairing it with 16kiB of RAM, though? Extremely stingy. (Yes, yes, code executes from ROM)</p>

<p><img src="/assets/img/panicing/panic.jpg" title="Awfully cute to be panicing" alt="Panic Road title screen, with a Seibu Kaihatsu copyright" /></p>

<p>I’m not certain, but I suspect that Seibu Kaihatsu, who developed <em>Panic Road</em>, may have been involved in the hardware side of things for <em>Shanghai</em>. Admittedly, this is mostly just the use of the V30 CPU, and the fact that Success’ <a href="https://archive.org/details/arcade_kothello"><em>Kyuukyoku no Othello</em></a> used similar hardware, but paired with a Seibu Kaihatsu sound setup, and Seibu Kaihatsu appears to have very frequently did this kind of contract hardware work. (The software is all Sunsoft, as far as I can tell)</p>

<p><img src="/assets/img/shanghaid/ym2203.jpeg" title="Yum! 2203!" alt="YM2203 on the PCB" /></p>

<p>That being said, <em>Shanghai</em> does <em>not</em> use a Seibu Kaihatsu sound system; it hooks up a Yamaha YM2203 FM synthesizer right up to the V30’s IO ports. The four-operator three-voice YM2203 was a constant companion of Japanese arcade games in the 1980’s; we’ve seen it most recently in my post on Taito’s <a href="/2025/pocky-but-wheres-rocky.html"><em>Kiki KaiKai</em></a>, and it was a popular sound expansion option for NEC’s PC98 computer series.</p>

<p><img src="/assets/img/shanghaid/hd63484.jpeg" title="it's a big one" alt="The large many-pinned HD63484" /></p>

<p>The graphics is where this gets particularly interesting. This is the Hitachi HD63484; their answer to the NEC APC’s μPD7220 (which shared a team with the <a href="/2023/tv-luke-i-am-your-tv-vader.html">μPD777</a> we saw in the past with Epoch’s machines). <a href="https://www.computer.org/publications/tech-news/chasing-pixels/gpu-history-hitachi-artc-hd63484">IEEE Computer World</a> notes that in 1988 24% of the PC graphics cards targeting computer-assisted design (CAD) used it.</p>

<p>It was noted for its elegant command-based interface and very high resolution graphics capability; 4096x4096, for a chip released in 1984! (Though at that high resolution, you’re limited to monochrome) Of course, <em>Shanghai</em> is designed for JAMMA, which is limited to “standard definition” video, so you’d never reach that. That mode also required 2MiB of RAM, apparently; here, it’s paired with 256kiB of RAM; this is also the slower 8MHz version.</p>

<p>Indeed, overall the low RAM (and the 15kHz output) is really the main thing separating this from a PC of the time; otherwise, this is a “professional-grade” video setup and CPU. And for what?</p>

<h2 id="shanghai">Shanghai</h2>

<p><img src="/assets/img/shanghaid/title.png" title="pictured: the only thing anyone ever does in shanghai, or so activision WANTS you to believe" alt="Shanghai title screen, showing two Chinese men looking at the tile structure" /></p>

<p>The title screen of <em>Shanghai</em> is the same image that Activision used on the box art for most releases in this time, and was also used in the Famicom support, though this is much higher resolution and pretty good quality. (The kanji characters, 上海, mean “above the sea”, but in this case are likely used because this is the Chinese character rendering of the name of the city of Shanghai)</p>

<p>Before we dig into the gameplay, let’s talk about the video a bit more. I used the Framemeister for this capture, and got some stats from it.</p>

<p><img src="/assets/img/shanghaid/stats.png" title="don't talk about the game don't talk about the game" alt="Input RGB, Dot 720x279p, V: 53.44Hz, Color: RGB Analog" /></p>

<p>You might notice the screen looks slightly cut-off; this makes sense when you notice the Framemeister identifies this as actually running at 53.44Hz and 279p, a very odd video resolution. Weird frequencies like this were more common in the PC space, but weren’t unheard of in the arcade space either. Generally you’d tune your monitor once for a particular board, and that board would stay in place for awhile, so being off was fine. It’s mostly an issue for those of us who want to switch out boards at random and use upscalers; that was never the target market.</p>

<p><img src="/assets/img/shanghaid/compy.jpeg" title="notice the reflection of the board itself" alt="Shanghai running on a CRT" /></p>

<p>My little 9” Trinitron does sync otot the image, but you can see even more of the top of the image was cropped, and my phone completely failed to sync properly to take a good image. Still, in practice I don’t think this is a bit problem. Let’s shift gears from the video signal to talking about something else that is a prediliction of this blog: talking about the difference between arcade games and home computer games!</p>

<h3 id="translating-shanghainese">Translating Shanghainese</h3>

<p><em>Shanghai</em>, as a game, falls into the same category of “patience” games like the classic card game Klondike Solitaire. It’s a single-player game where the main point is just to complete the challenge by moving things about. There isn’t really a <em>loss</em> condition, other than the game becoming impossible. Indeed, Activision’s game usually provides options for reversing moves and finding new moves. (Peeking, on the other hand, usually ends your game) These features are why it’s so much nicer to play <em>Shanghai</em> on a computer rather than building a tower on your table.</p>

<p><img src="/assets/img/shanghaid/cheater.png" title="my wife calls this cheating" alt="Shanghai on Famicom, options menu: BACKUP, RETRY, FIND, PEEK" /></p>

<p>Naturally, this is a great way to sabotage the productivity of office workers. But it’s not a great way to make money in an arcade; obviously, if you could just put in one quarter and play for hours, arcade operators would go and buy someone else’s game instead. It’s a business.</p>

<p><img src="/assets/img/shanghaid/game.png" title="behold" alt="Shanghai gameplay" /></p>

<p>So Sunsoft made some changes. Notice the timer at the bottom of the screen; if you make a pair, the timer replenishes a bit. Being able to “find” is limited to three times; this is what the three sticks labeled “HELP!” are for. Being able to back up is gone entirely. On the other hand, since this was a fairly new game, Japanese text explaining how to play is also added.</p>

<p><img src="/assets/img/shanghaid/dead.png" title="behold, i am bad at games" alt="Shanghai death screen" /></p>

<p>If you run out of possible moves, the game kills you, but gives you the option to restart with the same board. You start from the beginning, though, so I hope your memory’s good. The lack of any sort of single-step backup is I think a weakness of this game. The later Sunsoft arcade title <em>Shanghai: The Great Wall (Shanghai Triple Threat)</em>, which used the <a href="/2021/segasonic-the-saturn.html">Sega ST-V hardware</a>, allows both a selection of three helps and three backups. Otherwise, it follows the basic pattern of this timer-based gameplay very closely, because it actually works pretty well.</p>

<p><img src="/assets/img/shanghaid/stv.png" title="I had no reason to go back at this point, but it was for demonstration" alt="Shanghai on STV, showing the backs" /></p>

<p>There’s another thing that’s kind of odd. In all the versions of <em>Shanghai</em> I’ve discussed here except the arcade one, the mouse cursor moves freely. This is because it’s a mouse cursor, and that’s what they usually do; even when they’re being moved by a controller or something else that isn’t technically a mouse.</p>

<p><img src="/assets/img/shanghaid/snap.png" title="also the game is yelling at me" alt="Shanghai on arcade" /></p>

<p>But for this arcade game, your cursor is snapped; it always moves to be on top of something you can click on. Moving left doesn’t move it left by a small amount, it moves it to the next leftmost element that you can click on (presumably a tile). It’s fine, and maybe was done to speed up play, but I can see why the ST-V sequel does away with it.</p>

<aside><p>I happened to take a look at the <a href="https://www.youtube.com/watch?v=cCWgkFmlzcs">PC98 version</a> of Shanghai to see if it had the same behavior, given that it also uses an x86 CPU, so there could be code-sharing. But it looks to be completely unrelated, with a freely-moving cursor.</p>
<p>Also I realize <i>Shanghai: The Great Wall / Shanghai: Triple Threat</i> isn't the <i>direct</i> sequel to this <i>Shanghai</i> game; there were other arcade Shanghais in between. But at the time of this post, these are the only two I have.</p></aside>

<h2 id="ive-never-even-been-to-china">I’ve never even been to China</h2>

<p>This might sound like I’m being harsh on <em>Shanghai</em>. And maybe I am, so let’s be clear: this is a very fun game, and there’s a reason it kicked off a whole series of Sunsoft arcade games. The timer adds an element of urgency that’s lacking in the original. It’s hardly the first game’s fault Sunsoft refined the formula later on.</p>

<p><img src="/assets/img/shanghaid/clear.png" title="this also got a disc release but I don't have that" alt="Screen clear! in ST-V Shanghai" /></p>

<p>In fact, I always like to go back to the original <em>Shanghai</em> for the simplicity of design; something about just having a single possible layout and a basic set of controls is appealing. And <em>Shanghai</em> for arcade provides that much. The fact that it does so while also being basically a contemporary PC workstation someone stole all the RAM from? That’s just icing on the cake.</p>

<p><img src="/assets/img/shanghaid/select.png" title="I should've captured more footage" alt="Arcade Shanghai with the top tile selected" /></p>]]></content><author><name></name></author><category term="arcade" /><category term="mahjong" /><category term="16bit" /><category term="sunsoft" /><summary type="html"><![CDATA[There’s a problem with my current series on mahjong games– when I say “mahjong”, people in my home country of the United States of America probably don’t think of the 2-4 player competitive game. They think of the single-player tile-matching game, Mahjong Solitaire, also known as Shanghai, beloved of office-workers and casual gamers everywhere. And that’s popular in Japan too; popular enough to get arcade releases. How did Sunsoft bring Shanghai to arcades? Why is that even a question worth asking?]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://nicole.express/assets/img/shanghaid/dead.png" /><media:content medium="image" url="https://nicole.express/assets/img/shanghaid/dead.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Sprite Scaling on the Master System: Building the New on the Ruins of the Old</title><link href="https://nicole.express/2026/zoom-zoom.html" rel="alternate" type="text/html" title="Sprite Scaling on the Master System: Building the New on the Ruins of the Old" /><published>2026-05-10T12:42:00-04:00</published><updated>2026-05-10T12:42:00-04:00</updated><id>https://nicole.express/2026/zoom-zoom</id><content type="html" xml:base="https://nicole.express/2026/zoom-zoom.html"><![CDATA[<p>Sprite scaling. It is the coolest effect of the 2D arcade era, a must-have for games from <em>Space Harrier</em> to <em>Real Bout Fatal Fury Special</em>. Home consoles pretty much lacked it– sorry, Nintendo, but Mode 7 only scales a background, not sprites. So therefore you might be surprised to hear that Sega’s plucky underdog Master System could do it. Well, don’t get your hopes up; this is far too limited– calling it <em>scaling</em> is overstating things. But let’s dig in anyway!</p>

<h2 id="history">History</h2>

<p>The Sega Master System is the direct descendant of Sega’s first console, the SG-1000. In fact, in Japan it was called the “Mark III”; the third redesign, after the <a href="/2023/sg-1000-is-a-stupid-name-why-is-there-no-sg-500.html">SG-1000 II</a> that ditched the hardwired controller. While Sega was a hardware company, there’s pretty much nothing “Sega” about the original SG-1000 design; it’s made of off-the-shelf parts, pairing a Zilog Z80 with Texas Instruments’ SN74689A sound chip and TMS9918A Video Display Processor (VDP).</p>

<p>And that VDP is the starting point here. It was used pretty much everywhere, from TI’s own TI-99/4A computer, to the ColecoVision, the MSX1, the Nichibutsu My Vision, the Tomy Tutor, the CreatiVision… It just keeps going. The TMS9918A introduced the modern concept of “sprites” to home machines.</p>

<p>TMS9918A sprites could be used in any mode except text mode. They were single color, 8x8 or 16x16 pixels, and you had 32 of them at a time, with only four on each scanline. This might seem very limited, but compared to the player/missile/ball of the <a href="/2023/have-you-read-atari-today.html">Atari 2600</a>, it was a game-changer.</p>

<p>The Atari 2600 had the ability to expand the pixels of its movable objects horizontally (of course, on the Atari, everything was horizontal). And the TMS9918A had that capability too, for both horizontal and vertical; the TMS9918A <a href="https://www.cs.columbia.edu/~sedwards/papers/TMS9918.pdf">datasheet</a> refers to this bit as “MAG”, for magnification. It expands sprites horizontally <em>and</em> vertically. You can see it used here in <em>Champion Boxing</em>.</p>

<p><img src="/assets/img/sg1k2k2/challenge.png" title="in my brain this says challenge next stage, and i can not convince it otherwise" alt="Champion Boxing arcade win screen" /></p>

<p>Now, “MAG” mode is a single bit in a VDP register. It applies to <em>all</em> sprites on screen at any given time; in <em>Champion Boxing</em>, the reason the boxers aren’t scaled is because they’re actually made of background tiles, not sprites. So this wasn’t the most commonly-used effect, but it’s definitely out there.</p>

<p>Why do I talk about this? Because the VDP on the Sega Master System is a direct descendant of the TMS9918A.</p>

<h2 id="the-sega-master-system">The Sega Master System</h2>

<p>The Sega Master System made two major changes to the TMS9918A. The first was that it switched from hard-coded colors to a 6-bit RGB output, producing the infamous compatibility palette I whine about on this blog all the time.</p>

<aside><p>The original Sega Master System and the later variant of the VDP have slightly different output colors; the blue is boosted more than it should be on the original Master System. In practice, saying it's 6-bit RGB is good enough.</p></aside>

<p>But the second was that it added Mode 4. Mode 4 provided a tilemap made out of 8x8 tiles, 16-color palettes, an an entirely rebuilt sprite system. In a very real sense, Mode 4 <em>is</em> the Sega Master System. Every licensed game used it. Yes, even <em>F-16 Fighting Falcon</em>; it just used it on the title screen, though when actually flying the plane it used TMS9918A modes.</p>

<p><img src="/assets/img/bigmaster/f16.png" title="the original F-16 had a 16-bit CPU, so of course sacrifices had to be made bringing it home" alt="F-16 Fighting Falcon title screen, too colorful to be a TMS9918A mode" /></p>

<p>But on the first generation of Master Systems, those that used the Sega 315-5124 VDP (often called “SMS1”), the new mode was built on the ruins of the old. Take, for example, the <a href="https://www.smspower.org/Development/TilemapMirroring">tilemap mirroring</a> bug. An extra bit, which we call the “mask bit”, in the VDP’s Register <code class="language-plaintext highlighter-rouge">0x02</code>, which is supposed to set the high bits of the tilemap address, ends up interferes with the tilemap scanning instead; if you set this bit to <code class="language-plaintext highlighter-rouge">0</code>, then games using the 315-5124 VDP will repeat the top 12 rows of the tilemap over the bottom 12.</p>

<p><img src="/assets/img/bigmaster/ys1.png" title="adol is like 'why can't i be on the turbografx-cd'" alt="Ys gameplay in the first town. The status bar is fine." /></p>

<p>The game <em>Ys</em> relied on this behavior in its Japanese release as part of its status bar. (A full screen status bar in a fixed location at the bottom of the screen is pretty hard on the SMS!) You can see the town looks perfectly normal above, which is on my Japanese Master System. But if I play it on my French Master System 2 instead…</p>

<p><img src="/assets/img/bigmaster/ys2.png" title="there are some minor color differences between the VDPs, but I bet the bigger cause here is the differing cables" alt="Ys gameplay in the first town. The status bar is glitched." /></p>

<p>Thankfully, the translated release of <em>Ys</em> no longer relies on this behavior, and every Master System and Mark III sold in Japan had the 315-5124 VDP, so this wasn’t a real issue in practice for this game.</p>

<p>There are all sorts of strange states you can get the SMS1 VDP into by messing with the registers. We actually have <a href="https://www.smspower.org/Development/OfficialDocumentation">Sega’s official Master System documentation</a>, and you can see how they handled this; they basically just told users to always set or unset certain bits, either explicitly, or by only providing valid values with those bits set. One of those bits was <code class="language-plaintext highlighter-rouge">MAG</code>, which was ordered to be always set to <code class="language-plaintext highlighter-rouge">0</code>.</p>

<h3 id="sega-master-system-sprites">Sega Master System sprites</h3>

<p>Mode 4 sprites are an entirely new system. There are now 64 possible sprites, not 32. Their arrangement in memory is entirely different. There are only three bytes per sprite attribute table entry instead of four. You can have up to eight sprites per scanline, instead of four. Sprites can still be 8x8 pixels, but the 16x16 sprites are replaced by narrower 8x16 sprites.</p>

<aside><p>The fourth byte on the TMS9918A sprite table was used for color selection, and an "early clock bit" that provided a shift in the sprite position to allow sprites to emerge partially from the left side of the screen. In Mode 4, there is only one sprite palette, and the functionality of the "early clock" bit is instead provided globally through a VDP register.</p><p>Sprites on the NES still use four bytes in their attribute table (called "OAM", Object Attribute Memory), and the fourth byte is used for palette select and for horizontal and vertical sprite flipping. Sprite flipping would've been nice to see on the SMS, but hey, the Famicom can't do tile flipping and Sega can, so it was just an early example of Sega doing what Nintendon't.</p></aside>

<p>But on the 315-5124, the new is based on the ruins of the old. It’s fairly clear to me that Sega or Yamaha’s hardware designers didn’t actually intend for sprite magnification to be a feature of the VDP. But the sprite systems aren’t independent, either. We already know that– the “mask bit” applies to the sprite table register as well. But I don’t know of any games that rely on it; because of the way the memory is laid out, it just limits how many tiles you can use for sprites, which is pointless.</p>

<aside><p>I suppose this could be used to detect an SMS1 or SMS2 VDP. But we haven't gotten to the SMS2 VDP yet.</p></aside>

<p>So the sprite magnification bit <em>does</em> work on the SMS1. But there are a few heavy conditions.</p>

<p>First off, only four sprites can be magnified in both directions. Take a look at this dialogue scene from a game I’m working on. Notice that Ava is made up of magnified sprites. But there’s only one character on screen. Ava is made up of magnified 8x16 sprites.</p>

<p><img src="/assets/img/bigmaster/ava1.png" title="ava's got a spiffy blazer, what could it mean" alt="A zoomed sprite of Ava (from Space Ava) on top of a non-zoomed background. The text says 'AVA: I don't think I like where this is going...' in a variable-width font" /></p>

<p>But also, there’s something you <em>can’t</em> see here. Even though Ava is only made up of four sprites per scanline, there are four more sprites on each scanline. They’re just invisible and off-screen. Why would I do that? Do I just like being wasteful? Well, clearly yes, but that’s not relevant here. Because if I don’t have the placeholder sprites, I get this:</p>

<p><img src="/assets/img/bigmaster/stripava.png" title="ok i guess it was bad" alt="A zoomed sprite of Ava (from Space Ava) on top of a non-zoomed background. Ava consists of horizontal strips. The text says 'AVA: AHHHHHHHHHH' in a variable-width font" /></p>

<p>The 315-5124 VDP can in fact scale <em>eight</em> sprites per scanline, but only vertically. Horizontally, only the first N-4 out of N sprites on the scanline will be stretched. For example, if I only put two placeholder sprites, I only get two horizontally scaled sprites.</p>

<p><img src="/assets/img/bigmaster/sliceava.png" title="slicing a few strips off of ava" alt="A zoomed sprite of Ava (from Space Ava) on top of a non-zoomed background. Ava has two horizontal strips and two properly zoomed sprites. The text says 'AVA: AHHHHHHHHHH' in a variable-width font" /></p>

<p>This is kind of a pain to deal with, which is probably why there are no commercial games designed for the 315-5124-capable systems that use sprite scaling. It does create some funky effects, though.</p>

<h2 id="the-bare-minimum-on-the-genesis">The bare minimum on the Genesis</h2>

<p>Sega, in their magnificent wisdom, seems to have completely reimplemented the Master System’s Mode 4 at least twice. The first was for the 1988 Sega Mega Drive, known as the Genesis by me. We’ve already seen a <a href="/2021/alf-2-alf-harder.html">strange bug</a> in the Genesis’ Mode 4 that <em>ALF</em> triggered, but at least in that case, the Genesis VDP also has the capability of sprite collision detections in Genesis mode (“Mode 5”) as well.</p>

<p>Essentially every feature that wasn’t used in Genesis mode is gone in the compatibility Mode 4. While the 315-5124 was built on the ruins of the past, Genesis compatibility is built on the ruins of the <em>future</em>. The TMS9918A modes are gone (sorry, <em>F-16 Fighting Falcon</em>), and the mask bit issues they brought with them are gone too– so this is the one case Japanese users had to run into the bug in <em>Ys</em>.</p>

<p>Magnified sprites on the 315-5124 were a leftover from the TMS9918A, and they’re gone too. For these tests, we’ll be running on my Sega CDX. The Power Base Converter does fit just fine on this, though it looks kind of weird.</p>

<p><img src="/assets/img/bigmaster/mushroom.jpeg" title="some sort of parasitic mushroom has colonized my CDX, help" alt="The Power Base Converter on the CDX. It is wider and longer, and the power light isn't where it says it is, but it does technically fit." /></p>

<p>If I run my same program from earlier, no matter how many placeholder sprites I have, Ava just explodes.</p>

<p><img src="/assets/img/bigmaster/ava3.png" title="omae wa mou shindeiru" alt="A zoomed sprite of Ava (from Space Ava) on top of a non-zoomed background. Ava is broken into 8x16 pieces. The text says 'AVA: AHHHHHHHHHH' in a variable-width font" /></p>

<p><em>F-16 Fighting Falcon</em> also doesn’t run, but the title screen works, and few genres have aged as badly as outdated flight simulators anyway. I also don’t have two Master System controllers anyway…</p>

<p><img src="/assets/img/bigmaster/f162.png" title="if I had used the screenshot from above, would anyone have noticed?" alt="F-16 Fighting Falcon title screen, too colorful to be a TMS9918A mode" /></p>

<p>Interestingly, apparently Master System games can trigger Mode 5 by toggling an appropriate bit in the VDP status. I have no idea why anyone would do this, unless you have a grudge against the 68000 and the YM2612 or something, and of course no commercial games did.</p>

<h2 id="a-coherent-whole">A coherent whole</h2>

<p>After the Mega Drive, Sega released a cost-reduced model of the Master System, generally called the Master System 2. (But it was the Master System 3 in Brazil) That used, for some reason, a rearchitected VDP, the 315-5246.</p>

<aside><p>Apparently, there is the rare original-style Master System that uses the 315-5246, and possibly vice-versa as well. However, referring to the two VDPs as "SMS1" and "SMS2" is, as I noted, the standard notation.</p><p>Other than the <a href="/2021/adapteur-i-hardly-know-eur.html">French model</a>, all SMS2s were RF-only, so finding an original Master System with the newer VDP could be quite convenient.</p></aside>

<p>Why did they redesign the VDP? I’m not sure, but my suspicion would be that it was because of the Game Gear, which released in 1990 in Japan and 1991 in North America and Europe. The Game Gear is <a href="https://nicole.express/2022/sega-8-bit-conversion-kit.html">based on the Master System</a>, but has a new mode with a lower resolution and higher color resolution, along with outputting a signal for an LCD rather than a CRT TV.</p>

<p>Whether the 315-5246 is derived from Game Gear work or not (if we had die shots, that might make it clear), it’s clear that it is a new design. Whereas the original SMS VDP was built on the ruins of the past, and the Genesis VDP provided the bare minimum for compatibility, the SMS2 seems to have been designed as a coherent whole. Backwards compatibility with the TMS9918A is still provided in the same colors, which makes me wonder if a Japanese release was planned.</p>

<aside><p>The backwards compatibility modes on the Game Gear do not use the compatibility palette! Instead, they rely on the games themselves to provide a palette in CRAM, just like Mode 4 games have to. This in theory makes them more flexible, but in practice there's no real reason to use them, and it breaks direct compatibility. Flashcarts can set the palette in advance, though.</p></aside>

<p>A particularly odd choice on the 315-5246 is that it provides two new graphics modes; 224-line and 240-line variants of Mode 4. (Original Mode 4 is 192-lines, same as the TMS9918A) These have slightly different sprite behavior, and 240-line mode doesn’t work in NTSC or on the Game Gear. In Europe, the SMS2 was by far the most common model, and Codemasters actually used the 224-line mode in some games, like <em>Micro Machines</em>. You can see how my SMS1 can’t handle their absolute brilliance.</p>

<p><video SRC="/assets/img/bigmaster/code.mp4" width="75%" controls=""> You don't have a video tag support or something</video></p>

<p>Interestingly, it works a little better on the Genesis, and I can get into the game. Where the scrolling is all screwed up, because the Genesis <em>also</em> doesn’t support the 224-line or 240-line modes. (Being an NTSC console probably doesn’t help either) It’s just interpreting all the calls for the usual 192-line mode, and that’s close enough to mostly work on a good day.</p>

<p><img src="/assets/img/bigmaster/micro.png" title="my machine, she is so micro" alt="Micro Machines hoverboat with weird scrolling" /></p>

<p><strong>UPDATE 3/16/2026</strong>: <a href="https://bsky.app/profile/sikthehedgehog.bsky.social/post/3mlyfk3wmpc2p">Sik</a> on Bluesky speculates that this redesign might’ve been to enable usage of the SMS VDP as an overlay for the arcade Mega-Tech and Mega-Play systems; the 224 and 240 line modes share timing with similar modes on the Genesis, allowing one screen to overlay the other for when those arcade boards were used in a single-monitor setup.</p>

<p>But we’re here to talk about sprite scaling. And I’m glad to say that the SMS2 just supports sprite magnification the same way everywhere, treating it as an actual feature of the sprites. All sprites are properly doubled in size. Since all Game Gears use a similar VDP, while Sega’s official documentation for the Game Gear still says not to use it, some games did anyway, like <em>X-Men</em> on the title screen.</p>

<p><img src="/assets/img/minimaster/xmen-sms2.jpg" title="want to know how I'm running a game gear game directly on my master system? read the other blog post" alt="X-Men title screen with double-sized sprites rising behind the titular team." /></p>

<p>Most emulators seem to replicate the Master System 2’s behavior. Sometimes they’ll do both, with double-sized sprites acting like the 315-5246, while also having the older mask bit behavior to make <em>Ys</em> work. And of course, even with no placeholder sprites, Ava shows up just fine.</p>

<p><img src="/assets/img/bigmaster/ava2.png" title="dunno what her problem is" alt="A zoomed sprite of Ava (from Space Ava) on top of a non-zoomed background. Ava is screaming, but her sprite is fine. The text says 'AVA: AHHHHHHHHHH' in a variable-width font" /></p>

<h2 id="as-a-developer">As a developer…</h2>

<p>What does this mean for the homebrew developer? Well, the easiest option is what essentially all commercial game developers for the console did: don’t use TMS9918A modes, and don’t use sprite magnification. Mode 4 is good enough. Zoomed sprites are weird anyway, what with having different sized pixels and all.</p>

<p>Know your market. The 315-5246 was more common in Europe, but the 315-5124 was more common in America as far as I can tell, and pretty much universal in Japan. The Genesis in all its forms is way more common than either, and so a lot of modern homebrew players will be using that to play Master System games too, so you probably don’t want to leave them out. (Similarly, make sure you support the Genesis controller, even if you don’t use the extra buttons) Well, not the Genesis 3.</p>

<p>What am <em>I</em> doing? I’m so glad you asked!</p>

<p>When the game boots up, I detect whether zoomed sprites are supported at all by doing a simple test. Two sprites are set up so they will overlap if zoomed sprites are supported, and if they’re not, they won’t. This works perfectly; the Genesis still supports the collision bit, and I know how to avoid the <em>ALF</em> bug. This is very quick and the screen is blacked out while it happens, so you don’t see anything.</p>

<p>On both Master Systems, I just treat it like it’s using the older 315-5124 VDP. The placeholder sprites don’t do any damage on the SMS2. While this means I can only have one character on screen at a time, it also means that I can use the full sprite palette for one character, which is a fair tradeoff in my book, as it means I can reuse sprites from <a href="/2020/space-ava-201-release.html"><em>Space Ava 201</em></a> more easily.</p>

<p>What about the Genesis? Well, players there will get to see a full sprite as well. Sorcery? No, just using the full eight sprites, and including a pre-doubled fallback image in the ROM.</p>

<p><img src="/assets/img/bigmaster/ava4.png" title="technically, this could be higher resolution, but then i'd have to draw at a higher resolution" alt="A zoomed sprite of Ava (from Space Ava) on top of a non-zoomed background. Ava is screaming, but her sprite is fine. The text says 'AVA: AHHHHHHHHHH' in a variable-width font" /></p>

<p>This takes four times as much VRAM. So what’s the point? Well, on the Master System, I can use that for four frames of animation. Master System players get a slightly better experience, but the game is still playable on Genesis.</p>

<p>…That being said, there is a possible alternative I’m toying with. The Genesis should be able write to VRAM at the full speed of the Z80 during active display (as long as you don’t saturate the FIFO buffer); the Master System VDP in either of its forms can’t. So it’s possible that I might be able to get away with animation by just constantly writing the new frames to VRAM. I’d have to store many more pre-doubled frames in the ROM, though, so even with compression this would be a bit painful, and the doubled-sprites are very large. Maybe I could do some diffing logic as well? My animations are pretty simplistic. Right now it’s not a priority, but watch this space.</p>]]></content><author><name></name></author><category term="games" /><category term="8bit" /><category term="sega" /><summary type="html"><![CDATA[Sprite scaling. It is the coolest effect of the 2D arcade era, a must-have for games from Space Harrier to Real Bout Fatal Fury Special. Home consoles pretty much lacked it– sorry, Nintendo, but Mode 7 only scales a background, not sprites. So therefore you might be surprised to hear that Sega’s plucky underdog Master System could do it. Well, don’t get your hopes up; this is far too limited– calling it scaling is overstating things. But let’s dig in anyway!]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://nicole.express/assets/img/bigmaster/stripava.png" /><media:content medium="image" url="https://nicole.express/assets/img/bigmaster/stripava.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Blitting the Night Away: Nichibutsu’s Mahjong Koi no Magic Potion</title><link href="https://nicole.express/2026/more-like-koi-yes-magic-potion.html" rel="alternate" type="text/html" title="Blitting the Night Away: Nichibutsu’s Mahjong Koi no Magic Potion" /><published>2026-04-26T08:46:00-04:00</published><updated>2026-04-26T08:46:00-04:00</updated><id>https://nicole.express/2026/more-like-koi-yes-magic-potion</id><content type="html" xml:base="https://nicole.express/2026/more-like-koi-yes-magic-potion.html"><![CDATA[<p>Imagine, if you will, a young man. So desperate for a cure for his disease, that he seeks out a time machine to travel to a future where a cure might exist. But whenever he approaches someone, they insist on playing the tile game mahjong, and for some reason the women start interrogating him about their bodies as they take off their clothes. Will he ever find his cure? This is the story of <em>Mahjong Koi no Magic Potion</em>. No, really.</p>

<h2 id="top-of-the-industry">Top of the Industry</h2>

<p>There were a lot of companies that did strip mahjong. <a href="/2026/put-your-clothes-back-on.html">Mitchell</a>, <a href="/2026/spooky-ghost-stories.html">Jaleco</a>, Seta, Toaplan, Capcom, Psikyo, nearly everyone at least gave it a dabble. But the one company above them all is the one who came up with the whole idea, Nichibutsu. Nichibutsu wasn’t just the first company and the last company in the arcade strip mahjong business, they were almost certainly the most prolific. Like seriously, they made a <em>ton</em> of these.</p>

<p><img src="/assets/img/koipond/pcb.jpeg" alt="Nichibutsu PCB" title="my wife looked at this and wondered why they were using a grid layout with that many surface-mount chips" /></p>

<aside><p>Nichibutsu used a bunch of different brand names for their strip mahjong games. In 1992, they seemed to use "Nichibutsu" for their tamer games (like this one), and other brand names like "Sphinx" and "Fujic" for their spicier games that used real digitized photographs or even LaserDiscs.</p><p>Nichibutsu itself is short for "Nihon Bussan", which basically just means "Japanese Products". Everybody loves products.</p></aside>

<p>And today’s game is a perfect example of Nichibutsu’s arcade mahjong hardware. None of them have names; <em>Koi no Magic Potion</em> was released in 1992, and MAME groups Nichibutsu games between 1991 and 1995 into a single driver in MAME, but that seems to be a MAME thing. Overall this hardware just seems to have been tweaked and changed over time without regard for creating a single family. This was hardware made <em>en masse</em> for games with a short shelf life.</p>

<p><img src="/assets/img/koipond/cpu.jpeg" alt="A surface-mount CPU and a through-hole ROM" title="too many pins" /></p>

<p>For CPU power, <em>Mahjong Koi no Magic Potion</em> uses two Toshiba TMPZ84C011 CPUs. The TMPZ84C011 is a surface-mount, CMOS version of the famous Zilog Z80, and the C011 means that Toshiba included a few I/O ports built-in. To the internal CPU core, these are mapped to some of the Z80’s existing I/O port, so from a programmer’s perspective, the TMPZ84C011 is just a Z80. You might compare it to the Commodore 64’s 6510 CPU, which adds an I/O port to the famous 6502.</p>

<aside><p>I kept calling this CPU the "Z84" in discussions, but that confused people, because the TMPZ84C00 is just a CMOS Z80 (hey now the Z84 on <a href="/2025/sorcers-on-strike.html"><i>Sorcer Striker</i></a> makes more sense), the TMPZ84C015 (used by arcade mahjong specialist Dynax) has different stuff taped to it, etc. So the full part code does matter here.</p></aside>

<h3 id="sound">Sound</h3>

<p>The first of those Z84C011’s, running at apparently a whopping 8MHz, handles the sound. A Z80 (~ish) for a sound CPU is nothing new in 1992, and neither is what it’s hooked up to: a YM3812 “OPL2” FM synthesizer, a two-operator chip.</p>

<p><img src="/assets/img/koipond/sound.jpeg" alt="A bunch of chips, including a YM3812" title="a GAL is a chip for girls" /></p>

<p>This is an interesting one because I think the YM3812 might be more nostalgic in the west, as it was used in the Ad Lib and Sound Blaster cards for the IBM PC, while the PC98 sound cards usually preferred four-operator synthesizer chips like the YM2608 “OPNA”. Here’s a clip of music from <em>Mahjong Koi no Magic Potion</em>’s attract mode. That twangy sound wouldn’t be out of place in a 1992 MS-DOS game! (Though either my capture or the sound filter circuit don’t sound great on those drums; probably my capture)</p>

<p><video SRC="/assets/img/koipond/music.mp4" width="75%" controls=""> You don't have a video tag support or something</video></p>

<p>For sound effects, two of the Z84C011’s I/O ports are used as 8-bit outputs that can drive basic 8-bit DACs. This might takes up almost all of the CPU time, but that doesn’t really matter at all, because this is a dedicated sound CPU. The sound effects sound… fine. All of the sound samples and music data are contained in a single 128kiB ROM.</p>

<aside><p>For comparison, the game ROM is only 64kiB. That's not even one mega power, for a 1992 arcade game!</p></aside>

<h3 id="video">Video</h3>

<p>Consider the technical requirements. Nichibutsu was making mahjong and hanafuda games. They had short shelf-lives, so they had to be as cheap as possible. Nichibutsu’s non-mahjong arcade business was in steep decline as they moved to consoles (for example, 1992’s <em>Terra Cresta II</em> was a PC Engine exclusive), so they didn’t reuse hardware from that. Card or tile games, on the other hand, don’t rely very much on needing to move a lot of objects around the screen. Having larger, detailed objects is more valuable.</p>

<p>So Nichibutsu went with the blitter. Amusingly, the main example of a 2D blitter-based arcade hardware on this blog has been the <a href="/2022/games-made-in-a-cave.html">CAVE CV-1000</a>, which was specifically made to move a lot of objects around on the screen to accommodate bullet hell shooters. But that’s what ten years will do for you; as well as a 133MHz SH-3 on the CAVE vs. our main CPU, a 6MHz Z80-with-stuff-duct-taped-to-it.</p>

<p>As a quick summary, blitter hardware generally works as follows: a dedicated area of RAM, the <strong>framebuffer</strong>, is used to directly render the screen. (The Nichibutsu system is paletted) This part is similar to other directly-addressable-pixel systems, like the <a href="/2024/phasing-in-and-out-of-existence.html">Apple ][’s HIRES mode</a>. The <strong>blitter</strong>, however, is dedicated hardware that can receive commands from the CPU, which will cause it to copy blocks of data directly into the framebuffer. It is optimized for the graphics usecase, which involves rows that may need to be shifted or with transparency.</p>

<p><img src="/assets/img/koipond/twolayer.jpeg" alt="Two large surface mount chips" title="two-in-a-row" /></p>

<p>I’m pretty sure these surface-mount NB9010 chips are associated with the frame-buffers, and the <em>Koi no Magic Potion</em> hardware features two of them. That means two framebuffers overlaid on each other; since these also have hardware scrolling registers, this can be used to have a single moving object, or just the usual use, two layers on top of each other. (Plus, you can do linescrolling effects, like in the title screen video above) The CAVE CV-1000 hardware doesn’t have this capability, and I’ve also not noticed slowdown in a Nichibutsu mahjong game. Clearly this is much more advanced.</p>

<p><img src="/assets/img/koipond/over.png" alt="game over screen" title="the game over screen is the time machine controls, but you go to it even before you get the time machine, PLOTHOLE" /></p>

<p>The pixels on the Nichibutsu hardware are very much not square; in fact, at a 240p row being 640 pixels wide, they’re essentially halved horizontally. Color palettes are 12-bit RGB, which is nothing special in 1992, but good enough to show a pretty girl.</p>

<p><img src="/assets/img/koipond/pretty.png" alt="A pretty girl in a pink out" title="is this less safe for work than a typical nicole blog post? i did have some spicy things back in the system 1 but it's been awhile... well, you clicked on a strip mahjong post i don't know what you expect" /></p>

<p>One thing worth noting is that <a href="https://blog.system11.org/?p=2200">the System11 blog</a> has observed color fringing in some Nichibutsu mahjong games from 1989-1990 as a result of using 74LS-chips that are just a little too slow for the job. It looks like by 1992 they had fixed this, since I don’t see any equivalent here; it looks to me like this hardware was constantly being iterated on over time. As an aside, if you like strip mahjong hardware, check out the system11 blog.</p>

<h2 id="koi-no-magic-potion">Koi? No, Magic Potion!</h2>

<p><img src="/assets/img/koipond/title.png" alt="Mahjong Koi no Magic Potion title screen" title="i have no idea why sometimes it's written マージャン and sometimes it's written 麻雀" /></p>

<p>So, what is <em>Mahjong Koi no Magic Potion</em>? The title means “Magic Potion of Love”, but I think that choice was made for a simple reason unrelated to the game. Specifically, it’s hard to ignore the popular 1991 song <a href="https://www.youtube.com/watch?v=a0CSCr7ZFrQ"><em>Koi no Magic Potion</em></a>. (Or, uh “Koi no Magic Portion”. My Japanese is terrible I can’t talk…) Nichibutsu was definitely not above a few pop culture references to get attention in a crowded arcade, but I don’t think the game has very much to do with the song.</p>

<p><img src="/assets/img/koipond/title1.png" alt="A white screen with red text" title="But there was nothing can be done" /></p>

<p>The doctor gives you the bad news in the attract mode: your disease is incurable. And maybe they could make a cure, but you won’t live long enough for them to develop it. But then on TV, you find out that a scientist has built a time machine… That’s the magic potion you’re looking for; thankfully, in the future we’ve decided that yes, we should put medical cures in big scientific potion flasks.</p>

<p><img src="/assets/img/koipond/title2.png" alt="The doctor gives you the bad news" title="*nicole who's only played phantasy star 2* getting a lot of phantasy star 2 vibes from the presentation here" /></p>

<p>As for the stripping? (That’s what you’re all here for) We know that in 1992 Nichibutsu left JAMMA because they didn’t want to follow restrictions that resulted in <a href="/2026/put-your-clothes-back-on.html">Mitchell</a> putting out a game that became known as “strip mahjong without stripping”. <em>Mahjong Koi no Magic Potion</em>, though, is honestly to my eyes less sexual than <em>Mirage Youjuu Mahjongden</em>. Yeah, there’s girls in their underwear, but they seem to be enjoying themselves throughout, which is what I think Mitchell’s game used for its edge. Also there’s no giant tongues. You don’t even get to see a nipple.</p>

<p><img src="/assets/img/koipond/nurse.png" alt="A girl in a white bra with a smile" title="she's happy about it it's all good" /></p>

<h3 id="gameplay">Gameplay</h3>

<p><img src="/assets/img/koipond/hi.png" alt="A mahjong game. The girl's face is big" title="possibly bigger than her IRL face on the typical big-screen mahjong candy cab of the 90's" /></p>

<p><em>Mahjong Koi no Magic Potion</em> is a mahjong game. You play a two-player variant of Japanese <em>riichi</em> mahjong. In fact, the gameplay is subtly simplified here. Notice that on screen, the girl’s face is huge, taking up a lot of the game. Like <em>Mirage Youjuu Mahjongden</em>, your opponent doesn’t have points, per se; instead, a love percentage ticks up. Once it reaches 100%, you win, which generally takes three rounds.</p>

<p><img src="/assets/img/koipond/loser.png" alt="The screen is scrolled up to show the opponent's hand" title="yeah yeah i deserve this" /></p>

<p>But you might notice something is missing: the opponent’s hand. You’ll only have the game scroll up to show you it if you lose. Now, they’re still discarding tiles, and you can call those tiles, but as far as I can tell, your opponent will never make a <em>chii</em>, <em>pon</em>, or <em>kan</em> call. That makes this mahjong engine less advanced than 1989’s <a href="/2026/spooky-ghost-stories.html"><em>Mahjong Daireikai</em></a>. Your opponent will always have a closed hand, and usually will call <em>riichi</em>, though not always.</p>

<p><img src="/assets/img/koipond/furiten.png" alt="The game warns that the player can not call ron, due to the rule of furiten" title="majsoul spoiled me" /></p>

<p>Mind you, the game is still good enough to know the rule of <em>furiten</em>, so don’t think you can play too lazily.</p>

<p><img src="/assets/img/koipond/big.png" alt="The girl proceeds to win a reach, closed chinitsu, sanankou and sanrenkou, the last being a local yaku, to get a dealer sanbaiman and annihilate me with 36000 points" title="I was feeling pretty good after winning a mangan and the very next round the game hits me with this" /></p>

<p>So, how do they beat you? Obviously, they just get massively favorable hands at a rate higher than would be expected from random chance. Also, check out something else there: mahjong fans will notice that 三連刻, <em>sanrenkou</em>, is not a common yaku in <em>riichi</em> mahjong. It’s a relatively rare local yaku, which my opponent wields regardless. I’m not sure if this was considered a standard yaku in 1992.</p>

<p><img src="/assets/img/koipond/quiz.png" alt="A girl asks you a question" title="wait weren't we talking on the street, why are you in bed now" /></p>

<p>If you do manage to win a round against a girl, you get the obligatory stripping scenes. The game makes an effort to add some gameplay with quiz questions during the stripping scenes. These questions, like “which breast do I have a mole on”, “am I holding a pillow or a stuffed animal”, “what has baggins got in his pocketses”, etc. don’t seem to really be predictable in advance. They kind of remind me of the ZZT game <a href="https://archive.org/details/zzt_parell1"><em>Parell Wars 1</em></a>, which came out seven years later and features a scene wherein you are asked a password at the bank and are given two options, with no clue to guess which is right.</p>

<p><img src="/assets/img/koipond/zzt.png" alt="Parell Wars 1 for ZZT. You are asked for a password and given options 'a' and 'b'." title="funny the things that stick with you" /></p>

<p><em>Parell Wars 1</em>, in true ZZT fashion, kills you if you get the question wrong; <em>Mahjong Koi no Magic Potion</em> just removes a few percent from your love meter. However, if you get too many wrong you’ll end up having to play one more round of mahjong against the same girl rather than getting to see her final picture or advance the plot.</p>

<aside><p>I don't actually recommend <i>Parell Wars 1</i>, which seems to be the product of a small child deciding to copy <i>Chrono Wars</i>. Seems to be. Is hypothetically.</p></aside>

<p><img src="/assets/img/koipond/item.png" alt="Item option at the start of the game" title="too lazy to use a later item shot" /></p>

<p>Cheat items in <em>Mahjong Koi no Magic Potion</em> work similarly to <em>Mahjong Daireikai</em> in that you gain points for each <em>han</em> you score in a hand that you can spend on them. Unlike <em>Daireikai</em>, you can reuse the items; each <strong>use</strong> is what costs points, but you have the ability to choose whether or not to use an item right when you need to. For example, you’ll have the option to use an item that lets you see what the opponent’s <em>riichi</em> wait is when your opponent calls <em>riichi</em>.</p>

<p><img src="/assets/img/koipond/gift.png" alt="A woman gives you an item" title="so what are these items, in reality" /></p>

<p>Oddly, these items are given out or powered up over the course of the story, so you start out having to play regular mahjong, with only the additional option to switch out tiles you don’t want in your initial hand, a gift from the first girl in the game. (Something so common in video mahjong, “BET” games often give you it for free) I won’t give away too much here, but you do get access to the time machine, and get to go to the future. Thankfully, it’s pretty similar to the present. In fact, I suspect this image is a digitization on top of a photo of an actual place, though I’m not sure where.</p>

<p><img src="/assets/img/koipond/where.png" alt="A choice between three girls in a modern plaza" title="be neat to see if it looks similar today" /></p>

<p><em>Mahjong Koi no Magic Potion</em> also features multiple endings, but I’m not quite sure how to trigger them. There are two full playthroughs of the game on YouTube, one gets the <a href="https://www.youtube.com/watch?v=6gAsroFF8YA">good ending</a>, one gets the <a href="https://www.youtube.com/watch?v=P5cABkh2LK0">bad ending</a> and I don’t know why. Maybe depending on how you treat the scientist? You do get to play against him, but he won’t strip.</p>

<p><img src="/assets/img/koipond/scientist.png" alt="Mahjong against the scientist" title="can you at least take off those stupid glasses" /></p>

<p>Note that I do know which one is good or bad; <em>Mahjong Koi no Magic Potion</em> has a full suite of debug features accessed by dip switches, including an ending select.</p>

<p><img src="/assets/img/koipond/ends.png" alt="ENDING TEST MODE A. HAPPY ENDING B. BAD ENDING" title="bad ending is, of all things, dragon tf. look don't blame me for spoiling things" /></p>

<p>Another fun thing in the debug mode is when you go into an option that requires which girl to look at, you’ll see two “JAMA GAL”. Who are these? Are they the incarnation of JAMMA in female form?</p>

<p><img src="/assets/img/koipond/gal.png" alt="GAL SHOUKAI TEST MODE" title="bad ending is, of all things, dragon tf. look don't blame me for spoiling things" /></p>

<p>No. JAMA is a transcription of 邪魔, which just means “a bother”. These two girls are the incorrect option when you choose one of three girls in the future; you still play a round of mahjong with them, but they won’t strip. You do get smiley-face points for your <em>han</em> if you win, but you will also lose your credit if you lose, so they mostly just serve to lengthen the game and annoy you, and even Nichibutsu recognized that.</p>

<h2 id="drink-the-potion">Drink the potion</h2>

<p>First off, I’d like to thank the flyer for some beautiful close-up CRT pixels. Yep, people in the 90’s knew those looked good too, even when they were just the normal way to see pixels. Also they were easier than having additional art. Click on it for my full 1200dpi scan, 26MiB of CRT glory. Don’t you all do it, though, I pay for my own bandwidth. (Also I just noticed now my scanner cropped off the top, why did it do that, rude)</p>

<p><a href="/assets/img/koipond/flyer_big.jpg"><img src="/assets/img/koipond/flyer.jpg" alt="The flyer of Koi no Magic Potion" title="'The Ending Will Change Based off of the Player's Actions' yeah fuck you too" /></a></p>

<p><em>Mahjong Koi no Magic Potion</em> is the most fun I’ve had with a strip mahjong game. However, the game is pretty much entirely forgotten; I couldn’t find any sources of any worth in Japanese. Which makes sense; as I noted, these games were made in bulk and swapped out fast. Would I call it a hidden gem? I mean, it’s still a strip mahjong game, whose mahjong engine is simple even by genre standards. But I guess the light-hearted plot and pleasant art swept me up.</p>

<p>All of Nichibutsu’s game rights now belong to Hamster Corporation, so I assume that includes <em>Mahjong Koi no Magic Potion</em>. Other mahjong series, like Jaleco’s <em>Idol Janshi Suchie-Pai</em> and Seta’s <em>Super Real Mahjong</em>, have gotten modern compilation re-releases, but nothing of the sort exists for Nichibutsu’s arcade-exclusive titles, and they’re obscure enough that I’d be surprised if that changes. So for now, MAME or this PCB are the best way to play them. Or just watch a video. There isn’t <em>that</em> much gameplay.</p>

<p><img src="/assets/img/koipond/bye.png" alt="The time machine departs with a wavy effect" title="cya suckers i'm off to the future" /></p>]]></content><author><name></name></author><category term="arcade" /><category term="mahjong" /><category term="8bit" /><summary type="html"><![CDATA[Imagine, if you will, a young man. So desperate for a cure for his disease, that he seeks out a time machine to travel to a future where a cure might exist. But whenever he approaches someone, they insist on playing the tile game mahjong, and for some reason the women start interrogating him about their bodies as they take off their clothes. Will he ever find his cure? This is the story of Mahjong Koi no Magic Potion. No, really.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://nicole.express/assets/img/koipond/flye.jpg" /><media:content medium="image" url="https://nicole.express/assets/img/koipond/flye.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">The OSSC Pro Legacy AV Expansion, now with RF</title><link href="https://nicole.express/2026/a-legacy-of-radio-frequency.html" rel="alternate" type="text/html" title="The OSSC Pro Legacy AV Expansion, now with RF" /><published>2026-04-12T09:32:00-04:00</published><updated>2026-04-12T09:32:00-04:00</updated><id>https://nicole.express/2026/a-legacy-of-radio-frequency</id><content type="html" xml:base="https://nicole.express/2026/a-legacy-of-radio-frequency.html"><![CDATA[<p>There is a major issue with video game consoles and even some computers prior to about, say, 1985 or so; nearly all of them lacked even composite video outputs and required RF. This is a huge pain; <a href="/2024/super-duper-rainbow-pong.html">composite mods</a> require effort and reverse-engineering, while RF demodulation usually relies on old machines as modern demodulators can be questionable at best. And now, finally, we have what promises to be an enthusiast-grade solution: the OSSC Pro Legacy AV expansion, now with RF input.</p>

<p><strong>DISCLOSURE</strong>: I was given the expansion for free, though I did pay for the OSSC Pro myself (quite awhile ago, in fact). Therefore, you should take everything with a grain of salt: believe my factual conclusions, but question any of my subjective opinions.</p>

<h2 id="the-device">The device</h2>

<p>I didn’t get the prior Legacy AV expansion because I already had a Koryuu, which does a similar transcoding of composite and S-Video. That being said, the Legacy AV is a lot nicer than the Koryuu; it shares a power supply, and doesn’t take up your component inputs. (I had gotten the Koryuu for an original OSSC at first, which doesn’t have the expansion port)</p>

<p><img src="/assets/img/legacy/inputs.jpeg" title="wow" alt="Three inputs on an open PCB" /></p>

<p>The Legacy AV has three inputs on the rear. (I would’ve preferred on the front, but I think for people who switch devices less than me this is probably better.) Composite, S-Video, and RF, here represented by the coaxial F-connector common in North America. Notice that I have an exposed PCB here with no case.</p>

<p>One downside of the Legacy AV connector is that it’s not actually a legacy <em>AV</em> connector at all; the audio goes through the existing inputs. That can be pretty annoying, but it does save complexity. In any case, after updating my OSSC Pro’s firmware, getting started with composite video is pretty easy</p>

<p><img src="/assets/img/legacy/nes.png" title="the best version of shanghai? not graphically, but it's incredibly playable and the music is catchy" alt="Famicom Shanghai overlaid with video information" /></p>

<p>Oddly, in the default line-doubler mode, while my screen synced to the Famicom’s signal fine, I did need to switch to scaler mode to be able to capture the video with my external capture box. I didn’t need to do this for the Koryuu; odd, because this is just my usual Famicom; with some non-standard <a href="/2022/what-does-the-nes-say.html">audio mods</a> but a pretty normal video. By default, the signal has a bit less color vibrancy than composite video does on the Framemeister, but I assume adjusting the picture could help. There are a lot more options here than the Koryuu!</p>

<p><img src="/assets/img/legacy/spoilers.png" title="spoilers for the next section" alt="Atari 130XE running Pitfall II with a host of video options shown, including NTSC Pedestal, Brightness, Contrast, and others" /></p>

<h3 id="have-we-played-atari-today">Have we played Atari today?</h3>

<p>For a little more fun, and to start trying out the RF mode, I decided to break out the <a href="/2017/nicole-buys-stuff-atari-130xe.html">Atari 130XE</a>. This machine has an interesting characteristic: it has composite, S-Video, and an RF modulator, built right in, all running at the same time. Plus, the RF is an RCA jack on the back, so I can bring my own cable. I was warned: cable quality here matters a <em>lot</em>. At least here, I can give it the most fighting chance.</p>

<p>There are two ways to approach channels here. The first is to simply do an automatic scan. That’s probably the easiest for most people.</p>

<p><img src="/assets/img/legacy/scan.png" title="the frequency, she is very high" alt="Black screen with a blue notification that it is scanning VHF I" /></p>

<p>You can also tune into a particular frequency manually. For the Atari 130XE, the automatic was good enough, though.</p>

<p><img src="/assets/img/legacy/tune.png" title="the frequency, she is very high" alt="Black screen with a blue notification that it is scanning VHF I" /></p>

<p>For the Atari, Here’s me switching between modes while <a href="/2021/fallin-in-a-pitfall.html"><em>Pitfall II</em></a> plays. It’s starting with RF.</p>

<p><video SRC="/assets/img/legacy/modes.mp4" width="75%" controls=""> You don't have a video tag support or something</video></p>

<p>Notice that the high-frequency noise is gone on RF, but shows as vertical lines on the other modes. This is a characteristic of the modulation and demodulation; it’s pretty much inevitable that higher-frequency components of the signal will be lost. Some might find this preferable. I’d definitely find it playable.</p>

<h2 id="colors-in-my-tv-game">Colors? In my TV Game?</h2>

<p><img src="/assets/img/colory/ctg6.JPEG" title="the color tv game 6: inferior, but very pretty" alt="A Color TV Game 6, in brilliant yellow, with built-in controls" /></p>

<p>The Color TV Game 6 is the iconic first Nintendo console. Thankfully, mine is <em>not</em> the first, it’s the later CTG-6V, so it should be much <a href="/2023/not-another-color-post-i-swear.html">more playable</a>.</p>

<p><img src="/assets/img/colory/reset.jpg" title="the small paddle is another option, but it wasn't used to beef up the numbers" alt="0-0, both paddles in the center" /></p>

<p>My past attempts to take screenshots of this console and its 15-game sibling didn’t turn out that great, with a lot of distortion. This was using a generic AV box; so let’s see if the Legacy RF can handle this any better.</p>

<p>One major downside here is that the Color TV-Game 6 has a built-in cable. Therefore, I won’t be able to use my own nicer one like I could for the Atari 130XE. Honestly, this cable feels thin and weak too. Here’s a quick side-by-side comparison.</p>

<p><img src="/assets/img/legacy/cables.jpeg" title="i have calipers somewhere but I don't feel like going looking for them" alt="two cables, one thicker than the other" /></p>

<p>And like I was afraid of, unfortunately there is still a lot of noise in the output. You can’t really blame the upscaler for that. I suppose a cable mod <em>would</em> be a lot easier than a composite mod, at least.</p>

<p><img src="/assets/img/legacy/game6.png" title="This mode isn't very fun to play in doubles, actually-- and even less fun as one person" alt="Color TV game 6 gameplay, with noise" /></p>

<p>In fact, you can really tell it’s the cable’s fault because just moving around the cable, with no impact on the console, causes a lot of distortion and even a brief signal dropout. Also, enjoy some beautiful beeping audio– American Pong-consoles usually had a separate speaker for that!</p>

<p><video SRC="/assets/img/legacy/glitch.mp4" width="75%" controls=""> You don't have a video tag support or something</video></p>

<p>It’s worth noting that for Japanese consoles like this, you want to search for NTSC-M. You may have heard of NTSC-J, but that’s a matter of how the signal is to be interpreted; the channel layout and encoding is still the same, and that’s what the scan is doing.</p>

<h2 id="hard-mode">Hard mode</h2>

<p>In October of 2023, I wrote an article on <a href="/2023/tv-luke-i-am-your-tv-vader.html"><em>TV Vader</em></a>, in which I promised a future article on the Epoch Cassette Vision. And in July of 2024, I finally <a href="/2024/cassette-a-nova.html">delivered</a>. What took so long? Well, the problem was that the Cassette Vision I <em>wanted</em> to use was this:</p>

<p><img src="/assets/img/vader/cassie.jpg" title="it's a nice system" alt="A console labeled Epoch Cassette Vision Jr, with a game called Battle Vader inside" /></p>

<p>The Epoch Cassette Vision Jr. However, it proved a formidable foe– none of my capture devices could get its signal– though I could see it over an analog TV, my days of television photographing are mostly behind me. But it also resisted a composite mod; the negative voltages make this complicated in a good day, and the Jr.’s circuit board ruined it, providing heavy interference. This interference is probably why it was so hard to capture as well.</p>

<p><img src="/assets/img/cassie/noiz.JPG" title="this file is called 'noiz.JPG'. little behind the scenes peek" alt="Noisy screen" /></p>

<p>It’s a bit funny; the Cassette Vision has all of the game hardware on the cartridge. The only role the console plays is to provide controls, and to encode the video. The Jr. may have a better control scheme for <em>Pak-Pak Monster</em>, but it fails at the video job. It all worked out; getting a full-size Cassette Vision allowed me to cover <a href="/2024/game-consoles-have-games.html#:~:text=Big%20Sports%2012"><em>Big Sports 12</em></a>. But can the Legacy AV make it work?</p>

<p>Yet again, the Cassette Vision Jr. has a hardwired cable. I also had to switch to “2ch”. Nevertheless, I got a picture on 98.7MHz, but it’s <em>rough</em>. Scaler mode without framelock is the way to go here. (Plus, the Cassette Vision is interlaced!) It also lacked audio.</p>

<p><video SRC="/assets/img/legacy/wobbly.mp4" width="75%" autoplay="" muted="" loop=""> You don't have a video tag support or something</video></p>

<p>Dropping to 97.7MHz using the manual tune got me some audio. Definitely playable in this state, though very wobbly. I might’ve just gone with this for the blog post!</p>

<p><video SRC="/assets/img/legacy/noisy.mp4" width="75%" controls=""> You don't have a video tag support or something</video></p>

<p>One thing I did notice is that while the picture is wobbly, I don’t see all the weird noise that was in the composite mod attempt. To make sure this wasn’t an artifact of the game (after all, most of the hardware is on the cartridge!) I decided to switch to <em>Battle Vader</em>.</p>

<aside><p>I also found out while doing this that my <i>Battle Vader</i> cartridge is missing all of its screws. Did I do that?</p></aside>

<p>In this case, the game showed no picture on 97.7MHz, but <em>did</em> work with audio on 98.7MHz. I don’t really understand…</p>

<p><img src="/assets/img/legacy/vader.png" title="I was expecting to battle darth vader, I don't understand" alt="Battle Vader gameplay" /></p>

<p>But it didn’t show the noise. My guess would be the inherent filtering that you get looking over the signal over RF gets rid of it, which is why the engineers at Epoch didn’t care about its presence. Perhaps a sufficient low-pass filter would fix things and allow this to be S-Video modded like its larger counterpart? (In fact, perhaps those colored smears <em>are</em> the noise)</p>

<h2 id="conclusions">Conclusions</h2>

<p>So, what’s my opinion of the Legacy AV with RF attachment for the OSSC Pro? I think, combined with the OSSC Pro’s scaler mode, this is probably the best solution I’ve used for RF on vintage consoles, period.</p>

<p><img src="/assets/img/legacy/legit.png" title="all legitimately acquired and dumped, of course" alt="Unreadable 80-column text" /></p>

<p>But of course, it can’t do magic. RF is inherently a compromised video format, encoding things for broadcast and mixing audio and video. 80 column text is right out. But on a good day, with a powerful signal and a high-quality cable, the RF mode comes pretty damn close to composite. And I’d say that’s great. (Do need to tweak those colors, though) Thanks to Matt Buxton at <a href="https://videogameperfection.com/">VGP</a> for sending it my way!</p>

<p><img src="/assets/img/legacy/pitfall.png" title="it's white gold, that's a thing" alt="Pitfall II on MSX" /></p>

<p>But seriously Nicole your Panasonic FS-A1F has RGB, just use that.</p>]]></content><author><name></name></author><category term="upscaler" /><category term="oscc" /><category term="rf" /><summary type="html"><![CDATA[There is a major issue with video game consoles and even some computers prior to about, say, 1985 or so; nearly all of them lacked even composite video outputs and required RF. This is a huge pain; composite mods require effort and reverse-engineering, while RF demodulation usually relies on old machines as modern demodulators can be questionable at best. And now, finally, we have what promises to be an enthusiast-grade solution: the OSSC Pro Legacy AV expansion, now with RF input.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://nicole.express/assets/img/legacy/die.png" /><media:content medium="image" url="https://nicole.express/assets/img/legacy/die.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Lost Prototype Found! The Origin of Lock-On Technology!</title><link href="https://nicole.express/2026/april-fools-joke.html" rel="alternate" type="text/html" title="Lost Prototype Found! The Origin of Lock-On Technology!" /><published>2026-04-01T09:01:00-04:00</published><updated>2026-04-01T09:01:00-04:00</updated><id>https://nicole.express/2026/april-fools-joke</id><content type="html" xml:base="https://nicole.express/2026/april-fools-joke.html"><![CDATA[<p>That’s right. We all know about <a href="https://ieeexplore.ieee.org/abstract/document/5254691/">Lock-On Technology</a>, the secret dark art of Sega used to turn <em>Sonic &amp; Knuckles</em> into what it should have been if <em>Sonic the Hedgehog 3</em> hadn’t been rushed to release. But what if I told you that that wasn’t supposed to be the first game with <a href="https://apps.dtic.mil/sti/html/tr/ADA633541/">Lock-On Technology</a>? What if Sega had intended Lock-On Technology for an entirely different game, on a different console? Also, what if 80’s sitcoms were involved?</p>

<h2 id="but-of-course">But of course</h2>

<p>That’s right. The Sega Master System was intended to have Lock-On Technology before the Genesis. However, in 1989, Tonka wasn’t convinced this was the best route, and decided to save money by omitting the cartridge header. And admittedly, Sega made what many researchers have seen since as a questionable decision, partnering with tiny American developer Nexa. But at the time, the massive success of <em>Monopoly</em> was seen to demand a truly dramatic follow-up.</p>

<p><img src="/assets/img/alfreally/alf.jpg" title="after 10,000 years I'm free! time to conquer earth!" alt="Alf title screen" /></p>

<p>That’s right. <em>ALF</em> for the Sega Master System. We’ve seen it <a href="/2021/alf-2-alf-harder.html">before</a>, already known on this blog for pushing the limits of the Master System hardware farther than even the vaunted “blast processing” of the Sega Genesis could keep up with. But it could’ve gone farther.</p>

<p><img src="/assets/img/alfalfa/cart.jpeg" title="no, you're off-center" alt="ALF for the Master System with a cartridge slot on top" /></p>

<p>That’s right. By spending six weeks digging through various dumpsters, the lost prototype has finally been found: <em>ALF</em>, now enhanced with Lock-On Technology. This version is a bit more primitive than the later Genesis version, without a shield to protect the cartridge port, but that snapped off my <em>Sonic &amp; Knuckles</em> anyway.</p>

<p><img src="/assets/img/alfalfa/snk.jpeg" title="knuckles and sonic" alt="Sonic and Knuckles with its broken lid" /></p>

<p>That’s right. I should’ve taken better care of my things as a child, but that’s not relevant. What’s relevant is this would’ve been revolutionary. A game-changer, if you will. In that it literally changed games. To add ALF to them.</p>

<h2 id="alf-lex-kidd-in-miracle-world">ALF-lex Kidd in Miracle World</h2>

<p><img src="/assets/img/alfalfa/kid.jpeg" title="more like ALF-lex.. oh wait I used that for the section title" alt="Alex Kidd in Miracle World 'locked on' to ALF" /></p>

<p>That’s right. Of course, <em>Alex Kidd in Miracle World</em> was basically Sega’s answer to <em>Super Mario Bros.</em> (Wonder who? Is he in a Miracle World? I thought not) so of course, it should’ve been a high priority to support for this. And at first glance, it looks pretty good. There’s ALF. He’s in Miracle World. All is right with the world.</p>

<p><img src="/assets/img/alfalfa/alfwater.jpg" title="wait there's nowhere for him to buy the swimsuit" alt="Alf swimming in Miracle World" /></p>

<p>That’s right. Alf’s swimming idea doesn’t fit in this narrow passage. In fact, putting ALF in Miracle World was a silly idea. Let’s just switch out the cartridge and go back to <em>ALF</em>.</p>

<p><img src="/assets/img/alfalfa/alfgone.jpg" title="now he's just copying Garfield" alt="Alf title screen without Alf" /></p>

<p>That’s right. He’s loose. We’re all doomed.</p>

<div class="steps">
    <h2><i>A series on:</i> <b>April Fool's Day</b></h2>
    <p>A bit of levity on this otherwise deathly serious blog.</p>
    <ul>
        
        
        

        

        
        <li>
            
                <a href="/2019/april-fools-joke.html">The Canon Cat!</a>
            
            
                — Wherein a rare 1980s computer gets fur all over my carpet and begs for food.
            
        </li>
        
        
        
        

        

        
        <li>
            
                <a href="/2022/april-fools-joke.html">Mr. Do Proves Our History Is Not What It Seems</a>
            
            
                — A look at a vintage arcade board reveals the dark secrets of reality itself. Don't believe what they say, only believe what they (Mr.) Do
            
        </li>
        
        
        
        

        

        
        <li>
            
                <a href="/2023/april-fools-joke.html">Another Weird Cartridge! Why doesn't it have a label?</a>
            
            
                — The deepest depravity of the human condition revealed in the form of an NES cartridge. Not just because this post has 240p interpreted as 480i, but mostly because of the murder
            
        </li>
        
        
        
        

        

        
        <li>
            
                <a href="/2024/april-fools-joke.html">ROM Hacking in the 90's</a>
            
            
                — A look back at an internet that is no more. Under construction!!
            
        </li>
        
        
        
        

        

        
        <li>
            
                <a href="/2025/april-fools-joke.html">The Nintendo Family Computer: Forgotten 8-bit Powerhouse?</a>
            
            
                — History takes a very different turn, and now westerners don't get to enjoy Nintendo games. Also some other stuff might've happened
            
        </li>
        
        
        
        

        

        
        <li>
            
                <b>Lost Prototype Found! The Origin of Lock-On Technology!</b>
            
            
                — What if Lock-On Technology had existed on the Sega Master System? That's right!
            
        </li>
        
        
    </ul>
</div>]]></content><author><name></name></author><category term="silly" /><summary type="html"><![CDATA[That’s right. We all know about Lock-On Technology, the secret dark art of Sega used to turn Sonic &amp; Knuckles into what it should have been if Sonic the Hedgehog 3 hadn’t been rushed to release. But what if I told you that that wasn’t supposed to be the first game with Lock-On Technology? What if Sega had intended Lock-On Technology for an entirely different game, on a different console? Also, what if 80’s sitcoms were involved?]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://nicole.express/assets/img/alfalfa/cart_.jpeg" /><media:content medium="image" url="https://nicole.express/assets/img/alfalfa/cart_.jpeg" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>