<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Get Info: #hanafuda</title>
    <description>Posts tagged “hanafuda” — Blog of independent game and app developer Matt Sephton. Featuring vintage Macintosh, game development, digital artwork, Japanese esoterica, video game reviews, hacks and tips, and much more.</description>
    <link>https://blog.gingerbeardman.com/tag/hanafuda/</link>
    <atom:link href="https://blog.gingerbeardman.com/tag/hanafuda/index.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Sat, 11 Jul 2026 16:22:12 +0000</pubDate>
    <lastBuildDate>Sat, 11 Jul 2026 16:22:12 +0000</lastBuildDate>
    <generator>Jekyll v4.4.1</generator>

    
      
        <item>
          <title>Casio CALEID XM-700 Mobile Navigator (1997)</title>
          <description>&lt;p&gt;I like to think everybody collects something odd. Me? I collect hanafuda video games: digital implementations of traditional physical Japanese card games. Mostly that means physical copies of games for consoles and computers both new and old, for handhelds like Game Boy Advance, WonderSwan, digital versions for computers, handhelds and smart phones, and sometimes versions for platforms nobody has ever heard of.&lt;/p&gt;

&lt;h2 id=&quot;down-the-rabbit-hole&quot;&gt;Down the rabbit hole&lt;/h2&gt;

&lt;p&gt;At some point last year (shortly before I began writing this blog post!) I found reference to a hanafuda video game created in 1998 for the Casio CALEID XM-700 Mobile Navigator &lt;a href=&quot;http://webcache.googleusercontent.com/search?q=cache%3Ahp.vector.co.jp%2Fauthors%2FVA003746%2FCALEID3.HTM&amp;amp;ie=UTF-8&amp;amp;oe=UTF-8&amp;amp;hl=en-gb&amp;amp;client=safari&quot;&gt;on a random old, Japanese website&lt;/a&gt;. It turns out this device is a long-forgotten handheld computer that was released in 1997, only in Japan. The device is what you might refer to as a &lt;abbr title=&quot;Personal Information Manager&quot;&gt;PIM&lt;/abbr&gt; or &lt;abbr title=&quot;Personal Data Assistant&quot;&gt;PDA&lt;/abbr&gt;, roughly equivalent to Apple Newton or Palm Pilot, particularly as it featured handwriting recognition. Not what we would consider powerful in this day and age, but good at running database lookups and any undemanding software written specifically for it. The CPU was Intel 8086 compatible, like &lt;a href=&quot;https://www.youtube.com/watch?v=q3qIS5XvzfQ&quot;&gt;other period CASIO handheld personal computers&lt;/a&gt;, and &lt;a href=&quot;https://www.sci.u-toyama.ac.jp/~iwao/caleid.html&quot;&gt;an SDK was available&lt;/a&gt;. Cost of the device was 47800JPY, which was around 240GBP or 400USD at the time.&lt;/p&gt;

&lt;p&gt;The game file came with a reference bitmap showing hanafuda scoring, which was just the type of guarantee and encouragement I needed to start hunting.&lt;/p&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/caleid-hanafuda-cards.png#pixel&quot; alt=&quot;PNG&quot; title=&quot;Scoring reference image, included inside HANA100.LZH&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;research-first&quot;&gt;Research first&lt;/h2&gt;

&lt;p&gt;So, after making sure the related web pages were archived to the Wayback Machine, and the downloads backed up, I did a bunch of reading to try to figure out whether or not I would be able to play this game if I bought a device.&lt;/p&gt;

&lt;p&gt;It turns out the device arrived around the same time as USB 1.0. So perhaps its development, and most definitely its buyers, existed in a world that predated widespread support for USB. To that end, the device only has a serial connection. And not only that, the serial connection is on a dock that was not always sold with the device. Without the dock there is no way to transfer files to/from the device!&lt;/p&gt;

&lt;p&gt;For me to stand a chance at this, I’d need to buy a device with a dock and the software to put files onto the device. After some searching, lots of waiting, and more searching, one came up for auction on Yahoo! Japan Auctions. I bought it.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/caleid-promo.jpg&quot; alt=&quot;PNG&quot; title=&quot;Promotional photo of Casio CALEID XM-700 Mobile Navigator&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;caleid-get&quot;&gt;CALEID GET!&lt;/h2&gt;

&lt;p&gt;The screen is 320x240 monochrome (1-bit) which exhibits an odd quirk that active pixels cast a shadow because the LCD is clear and the silver backing is some distance away. This is long before the LCD would be fused to the backing. In fact, some units you see for sale have creases in the silver backing, I’m not sure what must have happened to those devices!&lt;/p&gt;

&lt;p&gt;The system software is a charming custom OS, featuring a full mobile office suite, and 2MB of flash storage (1.49MB free for user data). Most importantly it allows user-created Add-ins to be loaded onto it, we would call them plugins or apps today. The device even has an expansion port for communications peripherals, enabling it to do email/fax using a cell phone or pay phone as data connection. A salaryman’s dream in late-90s Japan!&lt;/p&gt;

&lt;p&gt;My goal: sideload the hanafuda game, along with anything else I can lay my hands on, using the proprietary dock, sync software and a Japanese install of Windows 98!&lt;/p&gt;

&lt;p&gt;I love this sort of challenge that requires discovery and understanding of old hardware and software, and a little (but not too much) messing around with old versions of Windows.&lt;/p&gt;

&lt;lite-youtube style=&quot;aspect-ratio: 16/9;&quot; videoid=&quot;6vCO28GqnlA&quot; params=&quot;start=0&amp;amp;modestbranding=2&quot;&gt;
&lt;/lite-youtube&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;installation&quot;&gt;Installation&lt;/h2&gt;

&lt;blockquote&gt;
  &lt;p&gt;You can &lt;a href=&quot;https://twitter.com/gingerbeardman/status/1560631734198104065&quot;&gt;follow this process in a Twitter thread I created last year&lt;/a&gt; which contains additional images. I’ve also created an &lt;a href=&quot;https://imgur.com/a/4Ef6nXP&quot;&gt;imgur gallery&lt;/a&gt; of photos and screenshots from the installation process.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I thought it would be fun to try to do this on period correct hardware, so I tried to use my old Sony VAIO PCG-Z600RE from 1999, but the battery is coming up to 20 years old and even with mains power it no longer turns on reliably enough for me to do anything. I would have had to install Japanese language support into Windows. So I quickly gave up this folly.&lt;/p&gt;

&lt;p&gt;A better approach would be to use modern hardware running Windows in a Virtual machine, and &lt;a href=&quot;https://archive.org/details/windows-98-se-japanese-vmware&quot;&gt;I already have one set up running Japanese Windows 98&lt;/a&gt;. I hit a temporary roadblock whilst installing the DATA IMPRESSION for CALEID sync software: it is date locked to only run between the years 1988 and 2010. And here I am over a decade late! Thankfully a quick date change and we’re back in business.&lt;/p&gt;

&lt;p&gt;The first run of sync software post-install requests that you run a Comms check. You have to tap the menu and folder buttons alternately seven times to put the device into a special debug mode, a tip cleaned from an addendum leaflet that came in the box. Without that leaflet I probably would have been stuck.&lt;/p&gt;

&lt;p&gt;I used a USB to Serial cable to take care of the connection to the dock and it just worked, though I know from first hand experience that is lucky as some cheap adapters require a bit of fiddling to work with ancient Windows versions. Data transfer is slow at 9600 baud, that’s less than 1KB per second. I’ll try increasing the baud rate later, maybe.&lt;/p&gt;

&lt;h2 id=&quot;syncing&quot;&gt;Syncing&lt;/h2&gt;

&lt;p&gt;Syncing is done using a custom version of Data Impression 2, renamed Data Impression for CALEID. It has an arcane, overly complicated user interface along with a multitude of period and cultural quirks.&lt;/p&gt;

&lt;p&gt;After some time spent browsing and translating the menus I found the section of the interface listing Add-ins and imported a bunch that I downloaded earlier. There’s some awkwardness to this process which I’ll describe later.&lt;/p&gt;

&lt;p&gt;Syncing was working, but the add-ins were not syncing across for some reason. My thought that it was probably something obvious was correct. In the DATA IMPRESSION app you need to press the button that doesn’t look like other buttons (yellow text) and then enable Add-in syncing! We’re almost there, I can feel it.&lt;/p&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/caleid-data-impression.png&quot; alt=&quot;PNG&quot; title=&quot;Data synchronisation is achieved using Data Impression for CALEID (see &amp;lt;a href=&apos;https://imgur.com/a/4Ef6nXP&apos;&amp;gt;imgur gallery&amp;lt;/a&amp;gt;)&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;add-ins&quot;&gt;Add-ins&lt;/h2&gt;

&lt;p&gt;The last little bits are worth bullet pointing, as they require some detailed operation:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Launch “DATA IMPRESSION for CALEID”&lt;/li&gt;
  &lt;li&gt;Select 電子手帳 (“Electronic Notebook”) from the buttons above the clock on the right (2nd from bottom) and then:
    &lt;ol&gt;
      &lt;li&gt;Make the model selection カレイド (“Caleid”, default)&lt;/li&gt;
      &lt;li&gt;Make the type of communication データ送信 (“data transmission”, dropdown 2, 3rd list item)&lt;/li&gt;
      &lt;li&gt;Click the 動作設定 (“operation settings”, button 3)&lt;/li&gt;
      &lt;li&gt;Check the アドイン (“Add-in”) checkbox (bottom, alt+D)&lt;/li&gt;
      &lt;li&gt;Uncheck all other types of data to disable syncing of those&lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;
  &lt;li&gt;Select メモ帳 (“Notepad”) from the menu on the right and then:
    &lt;ol&gt;
      &lt;li&gt;Select the アドイン (“Add-in”) folder&lt;/li&gt;
      &lt;li&gt;Select メモ帳 (“Notepad”) -&amp;gt; アドインデータの読み込み (“Read Add-in Data”) from the menu bar (alt+M, R)&lt;/li&gt;
      &lt;li&gt;Choose an add-in file (*.adi)&lt;/li&gt;
      &lt;li&gt;Repeat steps 1-3 for multiple add-ins&lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;
  &lt;li&gt;Press the スタート (“Start”) button on the dock. Add-In will be sent to the CALEID.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Gotchas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Serial ports in VMs can be a hassle, try both the host PC and guest VM ports&lt;/li&gt;
  &lt;li&gt;DATA IMPRESSION will let you know if it can’t communicate over the selected serial port&lt;/li&gt;
  &lt;li&gt;Cursor needs to be in the Add-Ins folder for the Add-in menu items to be enabled&lt;/li&gt;
  &lt;li&gt;Syncing without an Add-in selected will result in a failure message&lt;/li&gt;
  &lt;li&gt;If you select an existing add-in rather than the Add-in folder, the existing add-in will be overwritten by the newly imported one(!)&lt;/li&gt;
  &lt;li&gt;If you start with the demo data you’ll have a bunch of test items in the various apps, see note below&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Awkwardness: Add-ins have to be transferred one at a time, but a sync of a single Add-in goes fast enough after disabling syncing of all other types of data (notes, calendar, spreadsheets, etc).&lt;/p&gt;

&lt;p&gt;Note: the first time I setup the device starting with the demo data it must have been syncing 25 years worth of recurring demonstration calendar events. Each sync of a single add-in took multiple minutes. Maybe that’s why they didn’t want anybody running the sync software so long after the device had been released?&lt;/p&gt;

&lt;p&gt;The final, &lt;a href=&quot;https://lucidar.me/en/serialib/most-used-baud-rates-table/&quot;&gt;highest supported baud rate is 38400&lt;/a&gt; (4800 bytes/sec theoretical speed, 3840 bytes/s actual speed, that’s 3.75KB/sec). Game sizes range between 3KB and 32KB, averaging 12KB each. So the slowest part of the process is the GUI busy work to install the Add-ins in DATA IMPRESSION for CALEID, and then syncing them one by one.&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;game-on&quot;&gt;Game on!&lt;/h2&gt;

&lt;p&gt;Here’s my Casio CALEID XM-700 Mobile Navigator running 花合わせ (Hana-awase) a hanafuda game made by すーさん (Sū-san) in 1998. Pixels are slightly wider than they are tall so the cards in the game display wider than in the image at the top of the page.&lt;/p&gt;

&lt;p&gt;…I wonder how many other people have played this game in the last 25 years?&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;In a follow-up post I’ll detail the other games that I was able to install on the device.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/caleid-hanafuda-running.jpg&quot; alt=&quot;JPG&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/caleid-hanafuda-running-close-up.jpg&quot; alt=&quot;JPG&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;casio-catalog-97-12&quot;&gt;CASIO Catalog ‘97-12&lt;/h2&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/caleid-catalog.webp&quot; alt=&quot;WEBP&quot; title=&quot;CALEID page from the CASIO Catalog, December 1997, with thanks to &amp;lt;a href=&apos;https://www.casio-calculator.com/Download/Catalogue/Catalogues.html&apos;&amp;gt;casio-calculator.com&amp;lt;/a&amp;gt;&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;extras&quot;&gt;Extras&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://cdn.gingerbeardman.com/files/caleid-addins.dim.zip&quot;&gt;caleid.addins.dim.zip&lt;/a&gt; (294KB) a profile for DATA IMPRESSION for CALEID that has all the Add-ins I’ve found so far pre-installed and ready to sync&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://cdn.gingerbeardman.com/files/caleid.portmon-serial-addin.txt&quot;&gt;caleid.portmon-serial-addin.txt&lt;/a&gt;
(44KB) a &lt;a href=&quot;https://learn.microsoft.com/en-us/sysinternals/downloads/portmon&quot;&gt;portmon&lt;/a&gt; serial log taken whilst syncing a single Add-in (the sample card game that comes with DATA IMPRESSION for CALEID)&lt;/li&gt;
&lt;/ul&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Fri, 25 Aug 2023 21:44:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2023/08/25/casio-caleid-xm700-mobile-navigator-hardware/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2023/08/25/casio-caleid-xm700-mobile-navigator-hardware/</guid>
        </item>
      
    
      
        <item>
          <title>Preserving the Marguerite Hanafuda browser game</title>
          <description>&lt;p&gt;Marguerite is a defunct Japanese website, previously at &lt;a href=&quot;https://marguerite.jp&quot;&gt;marguerite.jp&lt;/a&gt; (dead link) that hosted HTML5 implementations of Hanafuda and Mahjong.&lt;/p&gt;

&lt;p&gt;Their Hanafuda in particular was very well done, offering a variety of rulesets some of which are difficult to find in video game form and impossible to find in a browser game. The experience was single player versus one or two CPU players.&lt;/p&gt;

&lt;p&gt;The complete list of rules offered:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2-player&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Koi-Koi&lt;/li&gt;
  &lt;li&gt;Mushi (aka “Insect”)&lt;/li&gt;
  &lt;li&gt;Roppyakken (aka “600”)&lt;/li&gt;
  &lt;li&gt;Hachi-Hachi (aka “88”)&lt;/li&gt;
  &lt;li&gt;Hachi (aka “8”)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3-player&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Hana-Awase&lt;/li&gt;
  &lt;li&gt;Hachi-Hachi (aka “88”)&lt;/li&gt;
  &lt;li&gt;Sudaoshi&lt;/li&gt;
  &lt;li&gt;Roppyakken (aka “600”)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/marguerite-hanafuda.png&quot; alt=&quot;PNG&quot; title=&quot;Marguerite Hanafuda&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;gone-but-not-forgotten&quot;&gt;Gone but not forgotten&lt;/h2&gt;

&lt;p&gt;The site went offline mid-2022, about a year ago at this point, and all was thought to be lost. We had tried the Wayback Machine but the archive seemed incomplete.&lt;/p&gt;

&lt;p&gt;This week Marguerite was mentioned on the &lt;a href=&quot;https://discord.com/invite/mKbdwy9&quot;&gt;Hanafuda Discord&lt;/a&gt;, so I decided to try again. Taking a fresh look at the state of the site, it seemed to be stalling trying to load two images.&lt;/p&gt;

&lt;p&gt;A couple of small changes later (two hard-coded URLs in the JavaScript pointed to the dead website) I managed to get the desktop version of the Marguerite Hanafuda working locally!&lt;/p&gt;

&lt;h2 id=&quot;its-alive&quot;&gt;It’s alive!&lt;/h2&gt;

&lt;p&gt;So, I’m now hosting a mirror copy on my website: &lt;a href=&quot;https://marguerite.gingerbeardman.com&quot;&gt;marguerite.gingerbeardman.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notes:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Sound requires Chrome&lt;/li&gt;
  &lt;li&gt;Safari/Chrome built-in translation works well for this web app&lt;/li&gt;
  &lt;li&gt;Some links out of the game will be broken&lt;/li&gt;
  &lt;li&gt;if Marguerite.jp comes back online I’ll remove my mirror&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Read more about the game rules:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://fudawiki.org/en/hanafuda/games&quot;&gt;Fuda Wiki&lt;/a&gt; (English)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://marguerite.gingerbeardman.com/Nihongo/Games/しらぎく花札/index.html&quot;&gt;Marguerite rules website&lt;/a&gt; (Japanese)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;mobile--mahjong&quot;&gt;Mobile &amp;amp; Mahjong?&lt;/h2&gt;

&lt;p&gt;Sadly the Wayback Machine archive of the Marguerite website is incomplete, so Mobile Hanafuda is lost as are both versions of Marguerite Mahjong.&lt;/p&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Fri, 23 Jun 2023 00:00:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2023/06/23/preserving-the-marguerite-hanafuda-browser-game/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2023/06/23/preserving-the-marguerite-hanafuda-browser-game/</guid>
        </item>
      
    
      
        <item>
          <title>Usajong gaiden ore ga kirifuda! (Game Soundtrack Rip)</title>
          <description>&lt;p&gt;I recently played through COMPILE’s うさ雀外伝 俺が切り札！ “Usajong gaiden ore ga kirifuda!” (a ninja-themed Hanafuda Koi-Koi game for PC-98 featured on Disc Station Vol. 10) and took the liberty of recording its great soundtrack as I went along.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/kirifuda.png#pixel&quot; alt=&quot;PNG&quot; title=&quot;うさ雀外伝 俺が切り札！ “Usa suzume gaiden ore ga kirifuda!”&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;soundtrack-download&quot;&gt;Soundtrack download&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://archive.org/details/usa-suzume-gaiden-ore-ga-kirifuda-pc-98-unofficial-soundtrack&quot;&gt;archive.org/details/usa-suzume-gaiden-ore-ga-kirifuda-pc-98-unofficial-soundtrack&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Track listing:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Logo (SFX) &lt;em&gt;00:02&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Intro &lt;em&gt;03:00&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Start (SFX) &lt;em&gt;00:06&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;World Ninja Atlas &lt;em&gt;03:06&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Deal (SFX) &lt;em&gt;00:10&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Normal Round &lt;em&gt;03:07&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Final Round &lt;em&gt;03:05&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Chime (SFX) &lt;em&gt;00:02&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Scores (SFX) &lt;em&gt;00:06&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Lose (SFX) &lt;em&gt;00:05&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Win (SFX) &lt;em&gt;00:03&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Ending &lt;em&gt;01:51&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;how-to-play-the-game&quot;&gt;How to play the game&lt;/h2&gt;

&lt;p&gt;I’m going to recommend using RetroArch to play this:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.retroarch.com/?page=platforms&quot;&gt;download RetroArch&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://archive.org/download/NeoKobe-NecPc-98012017-11-17/Compile.zip/Compile%2FDisc%20Station%20Vol.%2010%2FDisc%20Station%20Vol.%2010%20%28Usajan%20Gaiden%20-%20Ore%20ga%20Kirifuda%21%29%20%5BFD%5D.zip&quot;&gt;download a zip of the game&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/Abdess/retroarch_system/tree/libretro/NEC%20-%20PC-98&quot;&gt;download PC-98 System files&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;start RetroArch&lt;/li&gt;
  &lt;li&gt;system files will need to go into RetroArch System folder, check Settings &amp;gt; Directory &amp;gt; System/BIOS and move them there&lt;/li&gt;
  &lt;li&gt;download PC-98 core: Main Menu &amp;gt; Online Updater &amp;gt; Core Downloader &amp;gt; NEC PC-98 (Neko project II Kai)&lt;/li&gt;
  &lt;li&gt;start the game: Main Menu &amp;gt; Load Content &amp;gt; (choose game zip) &amp;gt; Load &amp;gt; NEC PC-98&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can play the game using mouse, though I used the right analog stick and a single button of a game controller…have fun!&lt;/p&gt;

&lt;h2 id=&quot;notes&quot;&gt;Notes&lt;/h2&gt;

&lt;p&gt;Some interesting things about this game:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;a draw results in the round being replayed&lt;/li&gt;
  &lt;li&gt;koi-koi increases your “level-up” which counts along a sword, pretty cool visualisation&lt;/li&gt;
  &lt;li&gt;your score doesn’t double if you finish a round after the opponent calls koi-koi&lt;/li&gt;
  &lt;li&gt;I can’t see any way to check the current score, so i memorise it as i go&lt;/li&gt;
  &lt;li&gt;if you lose to an opponent you can simply try again by choosing them from the map screen&lt;/li&gt;
  &lt;li&gt;it has a cool soundtrack!&lt;/li&gt;
&lt;/ul&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Thu, 15 Jun 2023 00:00:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2023/06/15/usa-suzume-gaiden-ore-ga-kirifuda-soundtrack/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2023/06/15/usa-suzume-gaiden-ore-ga-kirifuda-soundtrack/</guid>
        </item>
      
    
      
        <item>
          <title>Fixing bugs using Bird on Palm OS</title>
          <description>&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/hana-pixels.jpg&quot; alt=&quot;JPG&quot; title=&quot;Tenohira Hanafuda for Palm OS, running on a Sony CLIÉ PEG-SJ22&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://fudawiki.org/en/hanafuda/video-games/palm/tenohira-hanafuda-kai&quot;&gt;Tenohira Hanafuda Kai&lt;/a&gt; (掌花札 kai) is a koi-koi card game for Palm OS, created in 2001 by Hiroki Takahashi. It’s a fun game with varying difficulty, stats tracking, and lovely high-resolution (for the time!) colour graphics.&lt;/p&gt;

&lt;p&gt;But, it has one serious problem: sometimes it will forfeit the current round when you choose to continue!&lt;/p&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/hana-buggy.gif#pixel&quot; alt=&quot;GIF&quot; title=&quot;https://youtube.com/shorts/0fZefFpGd5Y&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;analysis&quot;&gt;Analysis&lt;/h2&gt;

&lt;p&gt;After repeated play I figured out that the game would continue as intended only if I pressed the right half of the こいこい (koi-koi) button.&lt;/p&gt;

&lt;p&gt;But if I pressed the left half of the button it would not behave as expected and forfeit the round. More on that later.&lt;/p&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/hana-problem.png#pixel&quot; alt=&quot;PNG&quot; title=&quot;The problem happens when we press the left side of the こいこい button&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;the-plan&quot;&gt;The Plan&lt;/h2&gt;

&lt;p&gt;One of the beautiful things about Palm OS is that apps and their resources are viewable, and even editable, right there on the device itself! It’s a lot like Classic Macintosh in that regard, which is no surprise as Palm took a lot of inspiration from the original Mac.&lt;/p&gt;

&lt;p&gt;And much like ResEdit on Macintosh, Palm had it’s own equivalent app in &lt;a href=&quot;https://palmdb.net/app/rsrcedit&quot;&gt;RsrcEdit&lt;/a&gt; by Quartus, though I preferred to use an app called &lt;a href=&quot;https://palmdb.net/app/bird&quot;&gt;Bird&lt;/a&gt; by Philippe Guillot. You can view strings, bitmaps, menu bars, and other user interface elements (organised as Forms).&lt;/p&gt;

&lt;h2 id=&quot;lets-do-this&quot;&gt;Let’s do this&lt;/h2&gt;

&lt;p&gt;So I launched Bird and loaded up the contents of Tenohira Hanafuda Kai, and went through all the forms until I found the one that displays the continue prompt.&lt;/p&gt;

&lt;p&gt;Interestingly the form is dual-purpose. It contains the continue/stop buttons (a List of two items) and also a single button (了解; confirm) used on a different prompt. It’s overlaid on the continue button in a close enough position to be suspect. Perhaps it’s moved slightly at run time?&lt;/p&gt;

&lt;p&gt;We can easily change the order of the controls on the form by cutting and pasting, so we do that with the List and it now comes below the button in the order and will be drawn last on the screen. Presumably the things drawn last are the first to capture interactions? Let’s see.&lt;/p&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/hana-bird.gif#pixel&quot; alt=&quot;GIF&quot; title=&quot;https://youtube.com/shorts/yRLfHoHkjTY&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;result&quot;&gt;Result&lt;/h2&gt;

&lt;p&gt;I apply all changes and they are saved directly into the app data. Launching the game again and playing enough to trigger another continue/stop prompt, I tap the left half of the button and… the game continues as expected. There is no strange forfeit. The problem has been solved!&lt;/p&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/hana-fixed.gif#pixel&quot; alt=&quot;GIF&quot; title=&quot;https://youtube.com/shorts/3faHHcuSQv4&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;addendum&quot;&gt;Addendum&lt;/h2&gt;

&lt;p&gt;I figured this out back in 2019 and edited the app on my Sony CLIÉ device. Recently I’ve been using &lt;a href=&quot;https://cloudpilot-emu.github.io&quot;&gt;CloudPilot&lt;/a&gt; to run Palm OS apps and games on my iPhone. So to play Tenohira Hanafuda Kai I had to either find the old modified game file, or do it all over again from scratch. I chose to do it again to test my memory and so I could document the process.&lt;/p&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Fri, 07 Oct 2022 00:00:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2022/10/07/fixing-bugs-using-bird-on-palm-os/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2022/10/07/fixing-bugs-using-bird-on-palm-os/</guid>
        </item>
      
    
      
        <item>
          <title>Playing Hanafuda on Palm OS in a web browser</title>
          <description>&lt;p&gt;I recently found out that it’s possible to run Palm OS in a web browser, using &lt;a href=&quot;https://cloudpilot-emu.github.io&quot;&gt;cloudpilot-emu.github.io&lt;/a&gt; which is optimised for use on iPhone and Android, so you can use old Palm apps and run old games and apps on your smart phone!&lt;/p&gt;

&lt;h2 id=&quot;koi-koi&quot;&gt;Koi-Koi&lt;/h2&gt;

&lt;p&gt;I play a lot of video game hanafuda and out of all platforms Palm OS has three of the most interesting games. To play these games I carry around either an old Palm OS device (Sony Clié PEG-SL10) or an Android phone (Galaxy Fame Lite S6790) that runs an old Palm OS emulator.&lt;/p&gt;

&lt;p&gt;So it’s great news that Palm OS Hanafuda games can now be played easily on modern devices.&lt;/p&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/palmos-hanafuda-real.jpg&quot; alt=&quot;Keisuke Mitani&apos;s Koi-Koi running on Sony Clié PEG-SL10&quot; title=&quot;Keisuke Mitani&apos;s Koi-Koi running on Sony Clié PEG-SL10&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;preparation&quot;&gt;Preparation&lt;/h2&gt;

&lt;p&gt;We’re going to use CloudPilot to create two Palm OS devices, both running in Japanese, and install the games we want to play. You could create English devices, but there will be issues with some text displayed in the games as they expect Japanese text support.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Sony Clié N700C (Colour, Japanese)&lt;/li&gt;
  &lt;li&gt;Palm V (Greyscale, Japanese)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can source alternative Palm OS system files from &lt;a href=&quot;https://palmdb.net/app/palm-roms-complete&quot;&gt;PalmDB&lt;/a&gt;. You might choose to add an English device to run other Palm OS games and apps.&lt;/p&gt;

&lt;h2 id=&quot;support-files&quot;&gt;Support files&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://www.dropbox.com/s/b2obo97hlbb89n5/Palm%20OS%20Hanafuda%20games.zip?dl=0&quot;&gt;Download Palm OS Hanafuda games and required support files&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;installation&quot;&gt;Installation&lt;/h2&gt;

&lt;p&gt;Steps to play in Japanese, carry out twice to create one device each of Grey/Colour:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;add new device and pick the respective .rom file&lt;/li&gt;
  &lt;li&gt;go through first launch setup and touch screen calibration&lt;/li&gt;
  &lt;li&gt;top right button to add the .prc files to device&lt;/li&gt;
  &lt;li&gt;top left button to reset, normal boot&lt;/li&gt;
  &lt;li&gt;launch and play the games&lt;/li&gt;
  &lt;li&gt;switch devices using the Sessions button in the website toolbar&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;games&quot;&gt;Games&lt;/h2&gt;
&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;Koi-Koi&lt;/strong&gt; (1999, by Keisuke Mitani/Palm Boarderz)
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://fudawiki.org/en/hanafuda/video-games/palm/koi-koi&quot;&gt;fudawiki.org/en/hanafuda/video-games/palm/koi-koi&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;my favourite&lt;/li&gt;
      &lt;li&gt;cards can be picked from the field as well as your hand&lt;/li&gt;
      &lt;li&gt;only works on old greyscale devices
&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/palmos-hanafuda-1.png#pixel&quot; alt=&quot;PNG&quot; title=&quot;Koi-Koi&quot; /&gt;&lt;br /&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Tenohira Hanafuda Kai&lt;/strong&gt; (2001, by Hiroki Takahashi)
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://fudawiki.org/en/hanafuda/video-games/palm/tenohira-hanafuda-kai&quot;&gt;fudawiki.org/en/hanafuda/video-games/palm/tenohira-hanafuda-kai&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;low and high resolution support&lt;/li&gt;
      &lt;li&gt;multiple opponents/difficulties&lt;/li&gt;
      &lt;li&gt;tracks play history and win ratios
&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/palmos-hanafuda-2.png#pixel&quot; alt=&quot;PNG&quot; title=&quot;Tenohira Hanafuda Kai&quot; /&gt;&lt;br /&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;palm Hanafuda&lt;/strong&gt; (2001, by Oruge/e-frontier)
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://fudawiki.org/en/hanafuda/video-games/palm/palm-hanafuda&quot;&gt;fudawiki.org/en/hanafuda/video-games/palm/palm-hanafuda&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;has 5 game types, including Mushi&lt;/li&gt;
      &lt;li&gt;I could swear this displayed in English on my real Palm OS device
&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/palmos-hanafuda-3.png#pixel&quot; alt=&quot;PNG&quot; title=&quot;palm Hanafuda&quot; /&gt;&lt;br /&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Catch-A-Bird&lt;/strong&gt; (2003, by Juergen Bermann)
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://fudawiki.org/en/hanafuda/video-games/palm/catch-a-bird&quot;&gt;fudawiki.org/en/hanafuda/video-games/palm/catch-a-bird&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;similar to Go-stop&lt;/li&gt;
      &lt;li&gt;no idea how to get it to display in colour&lt;/li&gt;
      &lt;li&gt;doesn’t work on old greyscale devices
&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/palmos-hanafuda-4.png#pixel&quot; alt=&quot;PNG&quot; title=&quot;Catch-a-Bird&quot; /&gt;&lt;br /&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Mon, 03 Oct 2022 00:00:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2022/10/03/playing-hanafuda-on-palm-os/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2022/10/03/playing-hanafuda-on-palm-os/</guid>
        </item>
      
    
      
        <item>
          <title>HyperCard Hanafuda</title>
          <description>&lt;p&gt;&lt;em&gt;Good news, everyone!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For over a decade I’ve wondered if there was a 1-bit Hanafuda game for Macintosh made by somebody in Japan back in the day. It turns out there is!&lt;/p&gt;

&lt;p&gt;It’s called 花札スタック (Hanafuda Stack) and was created by Kenji Chihara (千原健次氏)in 1992/3 using HyperCard. YES! ✨🎴✨&lt;/p&gt;

&lt;p&gt;I couldn’t find a single thing about this game online. My first Googlewhack!&lt;/p&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/hypercard-hanafuda-stack.gif#pixel&quot; alt=&quot;GIF&quot; title=&quot;花札スタック (Hanafuda Stack)&quot; /&gt;&lt;/p&gt;

&lt;p&gt;According to menu system on the disc it came on, this game was the Winner of the Miyuki Oshige Award, the judges’ prize in the “1st HyperCard Stack Contest” which was sponsored by Japanese Macintosh magazine MacPower Monthly.&lt;/p&gt;

&lt;h2 id=&quot;where-did-this-come-from&quot;&gt;Where did this come from?&lt;/h2&gt;

&lt;p&gt;I found this game in my collection of Japanese Macintosh Magazine CD-ROMs, which at the time of writing consists of over 120 discs and almost 500,000 files. It’s a real treasure trove of old software that has many more secrets waiting to be rediscovered! You can &lt;a href=&quot;https://www.patreon.com/gingerbeardman&quot;&gt;help me preserve more lost software by joining my Patreon&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;how-can-i-play-this-game&quot;&gt;How can I play this game?&lt;/h2&gt;

&lt;p&gt;You can play it in your web browser right now at: &lt;a href=&quot;https://archive.org/details/hanafuda-stack&quot;&gt;archive.org/details/hanafuda-stack&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Alternatively, you can &lt;a href=&quot;https://macintoshgarden.org/games/hanafuda-stack&quot;&gt;download it&lt;/a&gt; to play on your real Macintosh or in an emulator.&lt;/p&gt;

&lt;h2 id=&quot;version-history&quot;&gt;Version history&lt;/h2&gt;

&lt;p&gt;This page refers to version 0.6. However, the DOS game HP-華時雨 (HP-Hana Shigure) from 1997 says that it reuses, with permission, the card images from version 0.8 of Hanafuda Stack.&lt;/p&gt;

&lt;h2 id=&quot;hanafuda-resources&quot;&gt;Hanafuda Resources&lt;/h2&gt;

&lt;p&gt;If you’re into Hanafuda, be sure to check out the &lt;a href=&quot;https://discord.com/invite/mKbdwy9&quot;&gt;Hanafuda Discord&lt;/a&gt; and &lt;a href=&quot;https://www.fudawiki.org/&quot;&gt;Fuda Wiki&lt;/a&gt; where a fantastic group of people from around the world are building a comprehensive resource for these traditional Japanese flower cards. There are &lt;a href=&quot;https://www.fudawiki.org/en/hanafuda/games&quot;&gt;rules for a multitude of different games&lt;/a&gt; (not just Koi-Koi), a list of over 300 &lt;a href=&quot;https://www.fudawiki.org/en/hanafuda/video-games&quot;&gt;Hanafuda video games&lt;/a&gt; and so much more. Come on!&lt;/p&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Sun, 31 Oct 2021 00:00:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2021/10/31/hypercard-hanafuda/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2021/10/31/hypercard-hanafuda/</guid>
        </item>
      
    
      
        <item>
          <title>I’m preserving vintage Macintosh magazine media</title>
          <description>&lt;p&gt;For a while now I’ve been collecting CD-ROMs and Floppy Disks that came with Japanese Macintosh magazines for the sake of preservation of classic Macintosh software and games.&lt;/p&gt;

&lt;p&gt;These magazines were released before widespread adoption of the internet, when it was tricky to discover new software and even more difficult to obtain it. Buying a magazine with a disc containing hundreds or sometimes thousands of files was an easy way of getting the latest software. Of course, more than twenty years have now passed and software that was once common has all but disappeared. These magazine discs provide time capsules inside which live many long forgotten secrets.&lt;/p&gt;

&lt;p&gt;This is such an amazing treasure trove of files, containing many long lost files of both English and Japanese origin. The scatter chart shows the range of date coverage of the collection, full file listings are searchable by file/directory name, file type, creator code at &lt;a href=&quot;https://www.gingerbeardman.com/mmm/&quot;&gt;gingerbeardman.com/mmm/&lt;/a&gt;, by content at &lt;a href=&quot;https://discmaster.textfiles.com&quot;&gt;DiscMaster&lt;/a&gt;, and all files are uploaded to &lt;a href=&quot;https://archive.org/details/@gingerbeardman&quot;&gt;Internet Archive&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;archive-status-report&quot;&gt;Archive status report&lt;/h2&gt;

&lt;p&gt;The archive as it stands (updated March 2025):&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;date range: 1991–2002&lt;/li&gt;
  &lt;li&gt;total media: 500 discs&lt;/li&gt;
  &lt;li&gt;total files: 1,086,536 files&lt;/li&gt;
&lt;/ul&gt;

&lt;!--
The archive as it stands (updated July 2024):

*   date range: 1991–2002
*   total media: 461 discs
*   total files: 998,512 files
--&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/mmm-scatter.png&quot; alt=&quot;PNG&quot; title=&quot;Distribution of discs by month&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;notable-finds-so-far&quot;&gt;Notable finds so far&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/japanease&quot;&gt;JapanEase&lt;/a&gt; rolling demos of two gorgeous language learning &lt;em&gt;HyperCard&lt;/em&gt; stacks from the early 1990s (one previously lost)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2021/10/31/hypercard-hanafuda/&quot;&gt;Hanafuda Stack&lt;/a&gt; from 1992/3 (previously zero google search results)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2021/10/31/mouse-controlled-super-mario-kart-clone-for-classic-macintosh/&quot;&gt;Emora Kart&lt;/a&gt; from 1994 (previously three google search results)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/games/unyo-2&quot;&gt;Unyo! 2&lt;/a&gt; the infamous &lt;em&gt;HyperCard&lt;/em&gt; stack version of the famous UNO card game, from 1995 (previously lost)&lt;/li&gt;
  &lt;li&gt;&lt;em&gt;Tower Xmas Demo&lt;/em&gt;, a demo version of &lt;em&gt;Yoot Saito&lt;/em&gt;’s &lt;em&gt;Tower ~Christmas Disc~&lt;/em&gt; add-on from December 1995 (previously lost)&lt;/li&gt;
  &lt;li&gt;Fans of &lt;em&gt;Macromedia Shockwave&lt;/em&gt; and &lt;em&gt;Osamu Sato&lt;/em&gt; uncovered a 1997/8 &lt;a href=&quot;https://www.youtube.com/watch?v=FlMzJs8Eb8Y&quot;&gt;demo of Roly-Polys World Tour&lt;/a&gt; which is hugely exciting as the complete game remained lost to time (it has since been found, May 2023)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/pickles-pocket&quot;&gt;Pickle’s Pocket&lt;/a&gt; from 1998 is the first desktop toy and suite of tiny apps by &lt;em&gt;Thoru Yamamoto&lt;/em&gt; (previously lost with zero screen grabs online)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/maccalligraphy-sansui&quot;&gt;MacCalligraphy Sansui Demo&lt;/a&gt;, version of Japanese calligraphy tool by &lt;em&gt;Enzan-Hoshigumi&lt;/em&gt; from 1999 (previously lost) I also uncovered a promotional leaflet and demo guide from Wayback Machine&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/asistantpickle&quot;&gt;AsistantPickle&lt;/a&gt; from 2000 is a more advanced desktop toy and suite of tiny apps by &lt;em&gt;Thoru Yamamoto&lt;/em&gt; (previously lost with zero screen grabs online)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My &lt;a href=&quot;https://www.patreon.com/gingerbeardman&quot;&gt;Patreon&lt;/a&gt; enables me to buy more discs to build out the database, finding more lost gems and sharing them once again with the world. I add missing discs to &lt;em&gt;Internet Archive&lt;/em&gt; and the &lt;em&gt;redump&lt;/em&gt; project and upload individual games to various Classic Macintosh archives.&lt;/p&gt;

&lt;p&gt;Thanks for being on this journey with me!&lt;/p&gt;

&lt;h3 id=&quot;further-reading&quot;&gt;Further reading&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/2022/03/31/working-with-classic-macintosh-text-encodings-in-the-age-of-unicode/&quot;&gt;Working with classic Macintosh text encodings in the age of Unicode&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Sat, 30 Oct 2021 12:34:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2021/10/30/macintosh-magazine-media/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2021/10/30/macintosh-magazine-media/</guid>
        </item>
      
    
      
        <item>
          <title>Famicom Mahjong/Hanafuda controller USB keyboard mod</title>
          <description>&lt;ul&gt;
  &lt;li&gt;Difficulty: 7/10&lt;/li&gt;
  &lt;li&gt;Cost: &amp;lt; £20&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I play a lot of Hanafuda games. In the arcade these games share a control panel with Mahjong. It’s basically a keyboard featuring the first half of the alphabet, presented as a long row of keys in alphabetical order. This makes playing Arcade Hanafuda games a bit of a chore without a bunch of keyboard remapping and emulator faff.&lt;/p&gt;

&lt;p&gt;Some people were using arcade control panels connected to their PC. In Japan you can buy a custom electronics kit to make a USB Mahjong/Hanafuda controller, but it’s expensive at about €85 plus shipping and import duty. There had to be a better way!&lt;/p&gt;

&lt;p&gt;I saw that a couple of old Famicom Mahjong games by Capcom were bundled with a custom controller. It was essentially two controllers in one, so won’t work with my controller adapter cables. So I wondered how easy it would be to convert one to USB? Posting on a NES developer forum helped me verify that it should be possible.&lt;/p&gt;

&lt;p&gt;Christmas 2019 I bought a bunch of games from Japan and added a Famicom Mahjong controller to my order. It arrived, I put it on my to-do list, then a global pandemic happened.&lt;/p&gt;

&lt;p&gt;Almost a year later I picked it up and decided to figure it out. I would need a little Arduino, a usb cable with data and power, and I’d have to write some Arduino code to poll the buttons a couple of times every update. Back in 2019 nobody had done this mod so I was in my own.&lt;/p&gt;

&lt;p&gt;Just before I started to write code, I figured I’d do a quick Google search to see if anything had changed. And, unbelievably, somebody else had done this exact mod in February 2020 and open sourced their code. I thanked them and that meant the project was instantly half done.&lt;/p&gt;

&lt;p&gt;I bought an additional Pro Micro (Arduino compatible) and set it up on a breadboard that made it easier for me to wire up a prototype and check everything was working.&lt;/p&gt;

&lt;p&gt;Finally I cut the old controller cord and wired my new setup into the controller. It worked perfectly. I went back in to trim some supports and add some alternative reinforcements to prevent the controller bending and creaking.&lt;/p&gt;

&lt;p&gt;Using this controller makes playing these games so much easier, and I’ve discovered a couple of games that have made this well worth the time and investment.&lt;/p&gt;

&lt;div class=&quot;carousel__holder&quot;&gt;
    &lt;div class=&quot;carousel&quot;&gt;
        
          &lt;input class=&quot;carousel__activator&quot; type=&quot;radio&quot; name=&quot;carousel&quot; id=&quot;a&quot; checked=&quot;checked&quot; /&gt;
        
          &lt;input class=&quot;carousel__activator&quot; type=&quot;radio&quot; name=&quot;carousel&quot; id=&quot;b&quot; /&gt;
        
          &lt;input class=&quot;carousel__activator&quot; type=&quot;radio&quot; name=&quot;carousel&quot; id=&quot;c&quot; /&gt;
        
          &lt;input class=&quot;carousel__activator&quot; type=&quot;radio&quot; name=&quot;carousel&quot; id=&quot;d&quot; /&gt;
        
        
          
          
          
          
          &lt;div class=&quot;carousel__controls&quot;&gt;
              &lt;label class=&quot;carousel__control carousel__control--backward&quot; for=&quot;d&quot;&gt;&lt;/label&gt;
              &lt;label class=&quot;carousel__control carousel__control--forward&quot; for=&quot;b&quot;&gt;&lt;/label&gt;
          &lt;/div&gt;
        
          
          
          
          
          &lt;div class=&quot;carousel__controls&quot;&gt;
              &lt;label class=&quot;carousel__control carousel__control--backward&quot; for=&quot;a&quot;&gt;&lt;/label&gt;
              &lt;label class=&quot;carousel__control carousel__control--forward&quot; for=&quot;c&quot;&gt;&lt;/label&gt;
          &lt;/div&gt;
        
          
          
          
          
          &lt;div class=&quot;carousel__controls&quot;&gt;
              &lt;label class=&quot;carousel__control carousel__control--backward&quot; for=&quot;b&quot;&gt;&lt;/label&gt;
              &lt;label class=&quot;carousel__control carousel__control--forward&quot; for=&quot;d&quot;&gt;&lt;/label&gt;
          &lt;/div&gt;
        
          
          
          
          
          &lt;div class=&quot;carousel__controls&quot;&gt;
              &lt;label class=&quot;carousel__control carousel__control--backward&quot; for=&quot;c&quot;&gt;&lt;/label&gt;
              &lt;label class=&quot;carousel__control carousel__control--forward&quot; for=&quot;a&quot;&gt;&lt;/label&gt;
          &lt;/div&gt;
        
        &lt;div class=&quot;carousel__track&quot;&gt;
          &lt;ul&gt;
            
            &lt;li class=&quot;carousel__slide&quot; style=&quot;background-image: url(&apos;https://cdn.gingerbeardman.com/images/posts/hanafuda-controller-a-1.jpg&apos;);&quot;&gt;&lt;img class=&quot;carousel__staticimage&quot; src=&quot;https://cdn.gingerbeardman.com/images/posts/hanafuda-controller-a-1.jpg&quot; /&gt;&lt;/li&gt;
            
            &lt;li class=&quot;carousel__slide&quot; style=&quot;background-image: url(&apos;https://cdn.gingerbeardman.com/images/posts/hanafuda-controller-a-2.jpg&apos;);&quot;&gt;&lt;img class=&quot;carousel__staticimage&quot; src=&quot;https://cdn.gingerbeardman.com/images/posts/hanafuda-controller-a-2.jpg&quot; /&gt;&lt;/li&gt;
            
            &lt;li class=&quot;carousel__slide&quot; style=&quot;background-image: url(&apos;https://cdn.gingerbeardman.com/images/posts/hanafuda-controller-b-1.jpg&apos;);&quot;&gt;&lt;img class=&quot;carousel__staticimage&quot; src=&quot;https://cdn.gingerbeardman.com/images/posts/hanafuda-controller-b-1.jpg&quot; /&gt;&lt;/li&gt;
            
            &lt;li class=&quot;carousel__slide&quot; style=&quot;background-image: url(&apos;https://cdn.gingerbeardman.com/images/posts/hanafuda-controller-b-2.jpg&apos;);&quot;&gt;&lt;img class=&quot;carousel__staticimage&quot; src=&quot;https://cdn.gingerbeardman.com/images/posts/hanafuda-controller-b-2.jpg&quot; /&gt;&lt;/li&gt;
            
          &lt;/ul&gt;
        &lt;/div&gt;
        &lt;div class=&quot;carousel__indicators&quot;&gt;
            
              &lt;label class=&quot;carousel__indicator&quot; for=&quot;a&quot;&gt;&lt;/label&gt;
            
              &lt;label class=&quot;carousel__indicator&quot; for=&quot;b&quot;&gt;&lt;/label&gt;
            
              &lt;label class=&quot;carousel__indicator&quot; for=&quot;c&quot;&gt;&lt;/label&gt;
            
              &lt;label class=&quot;carousel__indicator&quot; for=&quot;d&quot;&gt;&lt;/label&gt;
            
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;style&gt;
.carousel__holder {width: 100%; position: relative; padding-bottom: 82%; margin: 1rem 0 1rem;}
.carousel {
  height: 100%;
  width: 100%;
  overflow: hidden;
  text-align: center;
  position: absolute;
  padding: 0;
}
.carousel__staticimage,
.carousel__controls,
.carousel__activator {
  display: none;
}

.carousel__activator:nth-of-type(1):checked ~ .carousel__track {
  -webkit-transform: translateX(-000%);
          transform: translateX(-000%);
}
.carousel__activator:nth-of-type(1):checked ~ .carousel__slide:nth-of-type(1) {
  transition: opacity 0.5s, -webkit-transform 0.5s;
  transition: opacity 0.5s, transform 0.5s;
  transition: opacity 0.5s, transform 0.5s, -webkit-transform 0.5s;
  top: 0;
  left: 0;
  right: 0;
  opacity: 1;
  -webkit-transform: scale(1);
          transform: scale(1);
}
.carousel__activator:nth-of-type(1):checked ~ .carousel__controls:nth-of-type(1) {
  display: block;
  opacity: 1;
}
.carousel__activator:nth-of-type(1):checked ~ .carousel__indicators .carousel__indicator:nth-of-type(1) {
  opacity: 1;
}

.carousel__activator:nth-of-type(2):checked ~ .carousel__track {
  -webkit-transform: translateX(-100%);
          transform: translateX(-100%);
}
.carousel__activator:nth-of-type(2):checked ~ .carousel__slide:nth-of-type(2) {
  transition: opacity 0.5s, -webkit-transform 0.5s;
  transition: opacity 0.5s, transform 0.5s;
  transition: opacity 0.5s, transform 0.5s, -webkit-transform 0.5s;
  top: 0;
  left: 0;
  right: 0;
  opacity: 1;
  -webkit-transform: scale(1);
          transform: scale(1);
}
.carousel__activator:nth-of-type(2):checked ~ .carousel__controls:nth-of-type(2) {
  display: block;
  opacity: 1;
}
.carousel__activator:nth-of-type(2):checked ~ .carousel__indicators .carousel__indicator:nth-of-type(2) {
  opacity: 1;
}

.carousel__activator:nth-of-type(3):checked ~ .carousel__track {
  -webkit-transform: translateX(-200%);
          transform: translateX(-200%);
}
.carousel__activator:nth-of-type(3):checked ~ .carousel__slide:nth-of-type(3) {
  transition: opacity 0.5s, -webkit-transform 0.5s;
  transition: opacity 0.5s, transform 0.5s;
  transition: opacity 0.5s, transform 0.5s, -webkit-transform 0.5s;
  top: 0;
  left: 0;
  right: 0;
  opacity: 1;
  -webkit-transform: scale(1);
          transform: scale(1);
}
.carousel__activator:nth-of-type(3):checked ~ .carousel__controls:nth-of-type(3) {
  display: block;
  opacity: 1;
}
.carousel__activator:nth-of-type(3):checked ~ .carousel__indicators .carousel__indicator:nth-of-type(3) {
  opacity: 1;
}

.carousel__activator:nth-of-type(4):checked ~ .carousel__track {
  -webkit-transform: translateX(-300%);
          transform: translateX(-300%);
}
.carousel__activator:nth-of-type(4):checked ~ .carousel__slide:nth-of-type(4) {
  transition: opacity 0.5s, -webkit-transform 0.5s;
  transition: opacity 0.5s, transform 0.5s;
  transition: opacity 0.5s, transform 0.5s, -webkit-transform 0.5s;
  top: 0;
  left: 0;
  right: 0;
  opacity: 1;
  -webkit-transform: scale(1);
          transform: scale(1);
}
.carousel__activator:nth-of-type(4):checked ~ .carousel__controls:nth-of-type(4) {
  display: block;
  opacity: 1;
}
.carousel__activator:nth-of-type(4):checked ~ .carousel__indicators .carousel__indicator:nth-of-type(4) {
  opacity: 1;
}


.carousel__control {
  height: 30px;
  width: 30px;
  margin-top: -15px;
  top: 50%;
  position: absolute;
  display: block;
  cursor: pointer;
  border-width: 5px 5px 0 0;
  border-style: solid;
  opacity: 0.35;
  opacity: 1;
  outline: 0;
  z-index: 3;
  color: #fafafa;
  mix-blend-mode: difference;
}
.carousel__control:hover {
  opacity: 1;
}
.carousel__control--backward {
  left: 20px;
  -webkit-transform: rotate(-135deg);
          transform: rotate(-135deg);
}
.carousel__control--forward {
  right: 20px;
  -webkit-transform: rotate(45deg);
          transform: rotate(45deg);
}
.carousel__indicators {
  position: absolute;
  bottom: 20px;
  width: 100%;
  text-align: center;
}
.carousel__indicator {
  height: 10px;
  width: 10px;
  border-radius: 100%;
  display: inline-block;
  z-index: 2;
  cursor: pointer;
  opacity: 0.35;
  margin: 0 2.5px 0 2.5px;
}
.carousel__indicator:hover {
  opacity: 0.75;
}
.carousel__track {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  padding: 0;
  margin: 0;
  transition: -webkit-transform 0.5s ease 0s;
  transition: transform 0.5s ease 0s;
  transition: transform 0.5s ease 0s, -webkit-transform 0.5s ease 0s;
}
.carousel__track .carousel__slide {
  display: block;
  top: 0;
  left: 0;
  right: 0;
  opacity: 1;
}

.carousel__track .carousel__slide:nth-of-type(1) {
  -webkit-transform: translateX(000%) translateZ(0);
          transform: translateX(000%) translateZ(0);
}

.carousel__track .carousel__slide:nth-of-type(2) {
  -webkit-transform: translateX(100%) translateZ(0);
          transform: translateX(100%) translateZ(0);
}

.carousel__track .carousel__slide:nth-of-type(3) {
  -webkit-transform: translateX(200%) translateZ(0);
          transform: translateX(200%) translateZ(0);
}

.carousel__track .carousel__slide:nth-of-type(4) {
  -webkit-transform: translateX(300%) translateZ(0);
          transform: translateX(300%) translateZ(0);
}


.carousel--scale .carousel__slide {
  -webkit-transform: scale(0);
          transform: scale(0);
}
.carousel__slide {
  height: 100%;
  position: absolute;
  opacity: 0;
  overflow: hidden;
}
.carousel__slide .overlay {height: 100%;}
.carousel--thumb .carousel__indicator {
  height: 30px;
  width: 30px;
}
.carousel__indicator {
  background-color: #fafafa;
}

.carousel__slide:nth-of-type(1),
.carousel--thumb .carousel__indicators .carousel__indicator:nth-of-type(1) {
  background-size: cover;
  background-position: center;
}

.carousel__slide:nth-of-type(2),
.carousel--thumb .carousel__indicators .carousel__indicator:nth-of-type(2) {
  background-size: cover;
  background-position: center;
}

.carousel__slide:nth-of-type(3),
.carousel--thumb .carousel__indicators .carousel__indicator:nth-of-type(3) {
  background-size: cover;
  background-position: center;
}

.carousel__slide:nth-of-type(4),
.carousel--thumb .carousel__indicators .carousel__indicator:nth-of-type(4) {
  background-size: cover;
  background-position: center;
}

&lt;/style&gt;

&lt;script&gt;
  function isVisible(el) {
        while (el) {
            if (el === document) {
                return true;
            }

            var $style = window.getComputedStyle(el, null);

            if (!el) {
                return false;
            } else if (!$style) {
                return false;
            } else if ($style.display === &apos;none&apos;) {
                return false;
            } else if ($style.visibility === &apos;hidden&apos;) {
                return false;
            } else if (+$style.opacity === 0) {
                return false;
            } else if (($style.display === &apos;block&apos; || $style.display === &apos;inline-block&apos;) &amp;&amp;
                $style.height === &apos;0px&apos; &amp;&amp; $style.overflow === &apos;hidden&apos;) {
                return false;
            } else {
                return $style.position === &apos;fixed&apos; || isVisible(el.parentNode);
            }
        }
  }
  
  setInterval(function(){
    var j=0;
    var elements = document.querySelectorAll(&apos;.carousel__control--forward&apos;);
    for(i=(elements.length - 1);i&gt;-1;i--) {
      if(isVisible(elements[i])) j=i;
    }
    elements[j].click();
  },7000);
  
&lt;/script&gt;

</description>
          <author>by Matt Sephton</author>
          <pubDate>Sat, 09 Jan 2021 00:00:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2021/01/09/famicom-mahjong-hanafuda-controller-usb-keyboard-mod/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2021/01/09/famicom-mahjong-hanafuda-controller-usb-keyboard-mod/</guid>
        </item>
      
    
      
        <item>
          <title>Shinji and Good Friends: Second Hanafuda Impact</title>
          <description>&lt;p&gt;Shinji and Good Friends: Second Hanafuda Impact is a hanafuda video game for Windows, released by Gainax in 1999. You can unlock wallpapers though beating each of the characters in the game.&lt;/p&gt;

&lt;p&gt;Just for fun I reverse engineered and edited the save game to unlock all the wallpapers. The save game data is not very big so I decided on a brute force approach: I beat one character to get enough save data and then set about changing and reloading it to figure out the location of everything else.&lt;/p&gt;

&lt;p&gt;I was surprised to find the 10th image, shown large in this post, as it did not have a typical placeholder like the others. Also surprising are the reserved save slots for more (seemingly abandoned) unlockable wallpapers.&lt;/p&gt;

&lt;p&gt;Anyway, these wallpapers are probably new material for most Evangelion fans!&lt;/p&gt;

&lt;p&gt;Whilst doing this hacking, I found a debug mode (dialog/speech tester) which is now documented at &lt;a href=&quot;https://tcrf.net/Shinji_and_Good_Friends:_Second_Hanafuda_Impact&quot;&gt;The Cutting Room Floor&lt;/a&gt;.&lt;/p&gt;

&lt;div class=&quot;carousel__holder&quot;&gt;
    &lt;div class=&quot;carousel&quot;&gt;
        
          &lt;input class=&quot;carousel__activator&quot; type=&quot;radio&quot; name=&quot;carousel&quot; id=&quot;a&quot; checked=&quot;checked&quot; /&gt;
        
          &lt;input class=&quot;carousel__activator&quot; type=&quot;radio&quot; name=&quot;carousel&quot; id=&quot;b&quot; /&gt;
        
          &lt;input class=&quot;carousel__activator&quot; type=&quot;radio&quot; name=&quot;carousel&quot; id=&quot;c&quot; /&gt;
        
          &lt;input class=&quot;carousel__activator&quot; type=&quot;radio&quot; name=&quot;carousel&quot; id=&quot;d&quot; /&gt;
        
          &lt;input class=&quot;carousel__activator&quot; type=&quot;radio&quot; name=&quot;carousel&quot; id=&quot;e&quot; /&gt;
        
          &lt;input class=&quot;carousel__activator&quot; type=&quot;radio&quot; name=&quot;carousel&quot; id=&quot;f&quot; /&gt;
        
          &lt;input class=&quot;carousel__activator&quot; type=&quot;radio&quot; name=&quot;carousel&quot; id=&quot;g&quot; /&gt;
        
          &lt;input class=&quot;carousel__activator&quot; type=&quot;radio&quot; name=&quot;carousel&quot; id=&quot;h&quot; /&gt;
        
          &lt;input class=&quot;carousel__activator&quot; type=&quot;radio&quot; name=&quot;carousel&quot; id=&quot;i&quot; /&gt;
        
          &lt;input class=&quot;carousel__activator&quot; type=&quot;radio&quot; name=&quot;carousel&quot; id=&quot;j&quot; /&gt;
        
        
          
          
          
          
          &lt;div class=&quot;carousel__controls&quot;&gt;
              &lt;label class=&quot;carousel__control carousel__control--backward&quot; for=&quot;j&quot;&gt;&lt;/label&gt;
              &lt;label class=&quot;carousel__control carousel__control--forward&quot; for=&quot;b&quot;&gt;&lt;/label&gt;
          &lt;/div&gt;
        
          
          
          
          
          &lt;div class=&quot;carousel__controls&quot;&gt;
              &lt;label class=&quot;carousel__control carousel__control--backward&quot; for=&quot;a&quot;&gt;&lt;/label&gt;
              &lt;label class=&quot;carousel__control carousel__control--forward&quot; for=&quot;c&quot;&gt;&lt;/label&gt;
          &lt;/div&gt;
        
          
          
          
          
          &lt;div class=&quot;carousel__controls&quot;&gt;
              &lt;label class=&quot;carousel__control carousel__control--backward&quot; for=&quot;b&quot;&gt;&lt;/label&gt;
              &lt;label class=&quot;carousel__control carousel__control--forward&quot; for=&quot;d&quot;&gt;&lt;/label&gt;
          &lt;/div&gt;
        
          
          
          
          
          &lt;div class=&quot;carousel__controls&quot;&gt;
              &lt;label class=&quot;carousel__control carousel__control--backward&quot; for=&quot;c&quot;&gt;&lt;/label&gt;
              &lt;label class=&quot;carousel__control carousel__control--forward&quot; for=&quot;e&quot;&gt;&lt;/label&gt;
          &lt;/div&gt;
        
          
          
          
          
          &lt;div class=&quot;carousel__controls&quot;&gt;
              &lt;label class=&quot;carousel__control carousel__control--backward&quot; for=&quot;d&quot;&gt;&lt;/label&gt;
              &lt;label class=&quot;carousel__control carousel__control--forward&quot; for=&quot;f&quot;&gt;&lt;/label&gt;
          &lt;/div&gt;
        
          
          
          
          
          &lt;div class=&quot;carousel__controls&quot;&gt;
              &lt;label class=&quot;carousel__control carousel__control--backward&quot; for=&quot;e&quot;&gt;&lt;/label&gt;
              &lt;label class=&quot;carousel__control carousel__control--forward&quot; for=&quot;g&quot;&gt;&lt;/label&gt;
          &lt;/div&gt;
        
          
          
          
          
          &lt;div class=&quot;carousel__controls&quot;&gt;
              &lt;label class=&quot;carousel__control carousel__control--backward&quot; for=&quot;f&quot;&gt;&lt;/label&gt;
              &lt;label class=&quot;carousel__control carousel__control--forward&quot; for=&quot;h&quot;&gt;&lt;/label&gt;
          &lt;/div&gt;
        
          
          
          
          
          &lt;div class=&quot;carousel__controls&quot;&gt;
              &lt;label class=&quot;carousel__control carousel__control--backward&quot; for=&quot;g&quot;&gt;&lt;/label&gt;
              &lt;label class=&quot;carousel__control carousel__control--forward&quot; for=&quot;i&quot;&gt;&lt;/label&gt;
          &lt;/div&gt;
        
          
          
          
          
          &lt;div class=&quot;carousel__controls&quot;&gt;
              &lt;label class=&quot;carousel__control carousel__control--backward&quot; for=&quot;h&quot;&gt;&lt;/label&gt;
              &lt;label class=&quot;carousel__control carousel__control--forward&quot; for=&quot;j&quot;&gt;&lt;/label&gt;
          &lt;/div&gt;
        
          
          
          
          
          &lt;div class=&quot;carousel__controls&quot;&gt;
              &lt;label class=&quot;carousel__control carousel__control--backward&quot; for=&quot;i&quot;&gt;&lt;/label&gt;
              &lt;label class=&quot;carousel__control carousel__control--forward&quot; for=&quot;a&quot;&gt;&lt;/label&gt;
          &lt;/div&gt;
        
        &lt;div class=&quot;carousel__track&quot;&gt;
          &lt;ul&gt;
            
            &lt;li class=&quot;carousel__slide&quot; style=&quot;background-image: url(&apos;https://cdn.gingerbeardman.com/images/posts/shinji-1.png&apos;);&quot;&gt;&lt;img class=&quot;carousel__staticimage&quot; src=&quot;https://cdn.gingerbeardman.com/images/posts/shinji-1.png&quot; /&gt;&lt;/li&gt;
            
            &lt;li class=&quot;carousel__slide&quot; style=&quot;background-image: url(&apos;https://cdn.gingerbeardman.com/images/posts/shinji-2.png&apos;);&quot;&gt;&lt;img class=&quot;carousel__staticimage&quot; src=&quot;https://cdn.gingerbeardman.com/images/posts/shinji-2.png&quot; /&gt;&lt;/li&gt;
            
            &lt;li class=&quot;carousel__slide&quot; style=&quot;background-image: url(&apos;https://cdn.gingerbeardman.com/images/posts/shinji-3.png&apos;);&quot;&gt;&lt;img class=&quot;carousel__staticimage&quot; src=&quot;https://cdn.gingerbeardman.com/images/posts/shinji-3.png&quot; /&gt;&lt;/li&gt;
            
            &lt;li class=&quot;carousel__slide&quot; style=&quot;background-image: url(&apos;https://cdn.gingerbeardman.com/images/posts/shinji-4.png&apos;);&quot;&gt;&lt;img class=&quot;carousel__staticimage&quot; src=&quot;https://cdn.gingerbeardman.com/images/posts/shinji-4.png&quot; /&gt;&lt;/li&gt;
            
            &lt;li class=&quot;carousel__slide&quot; style=&quot;background-image: url(&apos;https://cdn.gingerbeardman.com/images/posts/shinji-5.png&apos;);&quot;&gt;&lt;img class=&quot;carousel__staticimage&quot; src=&quot;https://cdn.gingerbeardman.com/images/posts/shinji-5.png&quot; /&gt;&lt;/li&gt;
            
            &lt;li class=&quot;carousel__slide&quot; style=&quot;background-image: url(&apos;https://cdn.gingerbeardman.com/images/posts/shinji-6.png&apos;);&quot;&gt;&lt;img class=&quot;carousel__staticimage&quot; src=&quot;https://cdn.gingerbeardman.com/images/posts/shinji-6.png&quot; /&gt;&lt;/li&gt;
            
            &lt;li class=&quot;carousel__slide&quot; style=&quot;background-image: url(&apos;https://cdn.gingerbeardman.com/images/posts/shinji-7.png&apos;);&quot;&gt;&lt;img class=&quot;carousel__staticimage&quot; src=&quot;https://cdn.gingerbeardman.com/images/posts/shinji-7.png&quot; /&gt;&lt;/li&gt;
            
            &lt;li class=&quot;carousel__slide&quot; style=&quot;background-image: url(&apos;https://cdn.gingerbeardman.com/images/posts/shinji-8.png&apos;);&quot;&gt;&lt;img class=&quot;carousel__staticimage&quot; src=&quot;https://cdn.gingerbeardman.com/images/posts/shinji-8.png&quot; /&gt;&lt;/li&gt;
            
            &lt;li class=&quot;carousel__slide&quot; style=&quot;background-image: url(&apos;https://cdn.gingerbeardman.com/images/posts/shinji-9.png&apos;);&quot;&gt;&lt;img class=&quot;carousel__staticimage&quot; src=&quot;https://cdn.gingerbeardman.com/images/posts/shinji-9.png&quot; /&gt;&lt;/li&gt;
            
            &lt;li class=&quot;carousel__slide&quot; style=&quot;background-image: url(&apos;https://cdn.gingerbeardman.com/images/posts/shinji-10.png&apos;);&quot;&gt;&lt;img class=&quot;carousel__staticimage&quot; src=&quot;https://cdn.gingerbeardman.com/images/posts/shinji-10.png&quot; /&gt;&lt;/li&gt;
            
          &lt;/ul&gt;
        &lt;/div&gt;
        &lt;div class=&quot;carousel__indicators&quot;&gt;
            
              &lt;label class=&quot;carousel__indicator&quot; for=&quot;a&quot;&gt;&lt;/label&gt;
            
              &lt;label class=&quot;carousel__indicator&quot; for=&quot;b&quot;&gt;&lt;/label&gt;
            
              &lt;label class=&quot;carousel__indicator&quot; for=&quot;c&quot;&gt;&lt;/label&gt;
            
              &lt;label class=&quot;carousel__indicator&quot; for=&quot;d&quot;&gt;&lt;/label&gt;
            
              &lt;label class=&quot;carousel__indicator&quot; for=&quot;e&quot;&gt;&lt;/label&gt;
            
              &lt;label class=&quot;carousel__indicator&quot; for=&quot;f&quot;&gt;&lt;/label&gt;
            
              &lt;label class=&quot;carousel__indicator&quot; for=&quot;g&quot;&gt;&lt;/label&gt;
            
              &lt;label class=&quot;carousel__indicator&quot; for=&quot;h&quot;&gt;&lt;/label&gt;
            
              &lt;label class=&quot;carousel__indicator&quot; for=&quot;i&quot;&gt;&lt;/label&gt;
            
              &lt;label class=&quot;carousel__indicator&quot; for=&quot;j&quot;&gt;&lt;/label&gt;
            
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;style&gt;
.carousel__holder {width: 100%; position: relative; padding-bottom: 75%; margin: 1rem 0 1rem;}
.carousel {
  height: 100%;
  width: 100%;
  overflow: hidden;
  text-align: center;
  position: absolute;
  padding: 0;
}
.carousel__staticimage,
.carousel__controls,
.carousel__activator {
  display: none;
}

.carousel__activator:nth-of-type(1):checked ~ .carousel__track {
  -webkit-transform: translateX(-000%);
          transform: translateX(-000%);
}
.carousel__activator:nth-of-type(1):checked ~ .carousel__slide:nth-of-type(1) {
  transition: opacity 0.5s, -webkit-transform 0.5s;
  transition: opacity 0.5s, transform 0.5s;
  transition: opacity 0.5s, transform 0.5s, -webkit-transform 0.5s;
  top: 0;
  left: 0;
  right: 0;
  opacity: 1;
  -webkit-transform: scale(1);
          transform: scale(1);
}
.carousel__activator:nth-of-type(1):checked ~ .carousel__controls:nth-of-type(1) {
  display: block;
  opacity: 1;
}
.carousel__activator:nth-of-type(1):checked ~ .carousel__indicators .carousel__indicator:nth-of-type(1) {
  opacity: 1;
}

.carousel__activator:nth-of-type(2):checked ~ .carousel__track {
  -webkit-transform: translateX(-100%);
          transform: translateX(-100%);
}
.carousel__activator:nth-of-type(2):checked ~ .carousel__slide:nth-of-type(2) {
  transition: opacity 0.5s, -webkit-transform 0.5s;
  transition: opacity 0.5s, transform 0.5s;
  transition: opacity 0.5s, transform 0.5s, -webkit-transform 0.5s;
  top: 0;
  left: 0;
  right: 0;
  opacity: 1;
  -webkit-transform: scale(1);
          transform: scale(1);
}
.carousel__activator:nth-of-type(2):checked ~ .carousel__controls:nth-of-type(2) {
  display: block;
  opacity: 1;
}
.carousel__activator:nth-of-type(2):checked ~ .carousel__indicators .carousel__indicator:nth-of-type(2) {
  opacity: 1;
}

.carousel__activator:nth-of-type(3):checked ~ .carousel__track {
  -webkit-transform: translateX(-200%);
          transform: translateX(-200%);
}
.carousel__activator:nth-of-type(3):checked ~ .carousel__slide:nth-of-type(3) {
  transition: opacity 0.5s, -webkit-transform 0.5s;
  transition: opacity 0.5s, transform 0.5s;
  transition: opacity 0.5s, transform 0.5s, -webkit-transform 0.5s;
  top: 0;
  left: 0;
  right: 0;
  opacity: 1;
  -webkit-transform: scale(1);
          transform: scale(1);
}
.carousel__activator:nth-of-type(3):checked ~ .carousel__controls:nth-of-type(3) {
  display: block;
  opacity: 1;
}
.carousel__activator:nth-of-type(3):checked ~ .carousel__indicators .carousel__indicator:nth-of-type(3) {
  opacity: 1;
}

.carousel__activator:nth-of-type(4):checked ~ .carousel__track {
  -webkit-transform: translateX(-300%);
          transform: translateX(-300%);
}
.carousel__activator:nth-of-type(4):checked ~ .carousel__slide:nth-of-type(4) {
  transition: opacity 0.5s, -webkit-transform 0.5s;
  transition: opacity 0.5s, transform 0.5s;
  transition: opacity 0.5s, transform 0.5s, -webkit-transform 0.5s;
  top: 0;
  left: 0;
  right: 0;
  opacity: 1;
  -webkit-transform: scale(1);
          transform: scale(1);
}
.carousel__activator:nth-of-type(4):checked ~ .carousel__controls:nth-of-type(4) {
  display: block;
  opacity: 1;
}
.carousel__activator:nth-of-type(4):checked ~ .carousel__indicators .carousel__indicator:nth-of-type(4) {
  opacity: 1;
}

.carousel__activator:nth-of-type(5):checked ~ .carousel__track {
  -webkit-transform: translateX(-400%);
          transform: translateX(-400%);
}
.carousel__activator:nth-of-type(5):checked ~ .carousel__slide:nth-of-type(5) {
  transition: opacity 0.5s, -webkit-transform 0.5s;
  transition: opacity 0.5s, transform 0.5s;
  transition: opacity 0.5s, transform 0.5s, -webkit-transform 0.5s;
  top: 0;
  left: 0;
  right: 0;
  opacity: 1;
  -webkit-transform: scale(1);
          transform: scale(1);
}
.carousel__activator:nth-of-type(5):checked ~ .carousel__controls:nth-of-type(5) {
  display: block;
  opacity: 1;
}
.carousel__activator:nth-of-type(5):checked ~ .carousel__indicators .carousel__indicator:nth-of-type(5) {
  opacity: 1;
}

.carousel__activator:nth-of-type(6):checked ~ .carousel__track {
  -webkit-transform: translateX(-500%);
          transform: translateX(-500%);
}
.carousel__activator:nth-of-type(6):checked ~ .carousel__slide:nth-of-type(6) {
  transition: opacity 0.5s, -webkit-transform 0.5s;
  transition: opacity 0.5s, transform 0.5s;
  transition: opacity 0.5s, transform 0.5s, -webkit-transform 0.5s;
  top: 0;
  left: 0;
  right: 0;
  opacity: 1;
  -webkit-transform: scale(1);
          transform: scale(1);
}
.carousel__activator:nth-of-type(6):checked ~ .carousel__controls:nth-of-type(6) {
  display: block;
  opacity: 1;
}
.carousel__activator:nth-of-type(6):checked ~ .carousel__indicators .carousel__indicator:nth-of-type(6) {
  opacity: 1;
}

.carousel__activator:nth-of-type(7):checked ~ .carousel__track {
  -webkit-transform: translateX(-600%);
          transform: translateX(-600%);
}
.carousel__activator:nth-of-type(7):checked ~ .carousel__slide:nth-of-type(7) {
  transition: opacity 0.5s, -webkit-transform 0.5s;
  transition: opacity 0.5s, transform 0.5s;
  transition: opacity 0.5s, transform 0.5s, -webkit-transform 0.5s;
  top: 0;
  left: 0;
  right: 0;
  opacity: 1;
  -webkit-transform: scale(1);
          transform: scale(1);
}
.carousel__activator:nth-of-type(7):checked ~ .carousel__controls:nth-of-type(7) {
  display: block;
  opacity: 1;
}
.carousel__activator:nth-of-type(7):checked ~ .carousel__indicators .carousel__indicator:nth-of-type(7) {
  opacity: 1;
}

.carousel__activator:nth-of-type(8):checked ~ .carousel__track {
  -webkit-transform: translateX(-700%);
          transform: translateX(-700%);
}
.carousel__activator:nth-of-type(8):checked ~ .carousel__slide:nth-of-type(8) {
  transition: opacity 0.5s, -webkit-transform 0.5s;
  transition: opacity 0.5s, transform 0.5s;
  transition: opacity 0.5s, transform 0.5s, -webkit-transform 0.5s;
  top: 0;
  left: 0;
  right: 0;
  opacity: 1;
  -webkit-transform: scale(1);
          transform: scale(1);
}
.carousel__activator:nth-of-type(8):checked ~ .carousel__controls:nth-of-type(8) {
  display: block;
  opacity: 1;
}
.carousel__activator:nth-of-type(8):checked ~ .carousel__indicators .carousel__indicator:nth-of-type(8) {
  opacity: 1;
}

.carousel__activator:nth-of-type(9):checked ~ .carousel__track {
  -webkit-transform: translateX(-800%);
          transform: translateX(-800%);
}
.carousel__activator:nth-of-type(9):checked ~ .carousel__slide:nth-of-type(9) {
  transition: opacity 0.5s, -webkit-transform 0.5s;
  transition: opacity 0.5s, transform 0.5s;
  transition: opacity 0.5s, transform 0.5s, -webkit-transform 0.5s;
  top: 0;
  left: 0;
  right: 0;
  opacity: 1;
  -webkit-transform: scale(1);
          transform: scale(1);
}
.carousel__activator:nth-of-type(9):checked ~ .carousel__controls:nth-of-type(9) {
  display: block;
  opacity: 1;
}
.carousel__activator:nth-of-type(9):checked ~ .carousel__indicators .carousel__indicator:nth-of-type(9) {
  opacity: 1;
}

.carousel__activator:nth-of-type(10):checked ~ .carousel__track {
  -webkit-transform: translateX(-900%);
          transform: translateX(-900%);
}
.carousel__activator:nth-of-type(10):checked ~ .carousel__slide:nth-of-type(10) {
  transition: opacity 0.5s, -webkit-transform 0.5s;
  transition: opacity 0.5s, transform 0.5s;
  transition: opacity 0.5s, transform 0.5s, -webkit-transform 0.5s;
  top: 0;
  left: 0;
  right: 0;
  opacity: 1;
  -webkit-transform: scale(1);
          transform: scale(1);
}
.carousel__activator:nth-of-type(10):checked ~ .carousel__controls:nth-of-type(10) {
  display: block;
  opacity: 1;
}
.carousel__activator:nth-of-type(10):checked ~ .carousel__indicators .carousel__indicator:nth-of-type(10) {
  opacity: 1;
}


.carousel__control {
  height: 30px;
  width: 30px;
  margin-top: -15px;
  top: 50%;
  position: absolute;
  display: block;
  cursor: pointer;
  border-width: 5px 5px 0 0;
  border-style: solid;
  opacity: 0.35;
  opacity: 1;
  outline: 0;
  z-index: 3;
  color: #fafafa;
  mix-blend-mode: difference;
}
.carousel__control:hover {
  opacity: 1;
}
.carousel__control--backward {
  left: 20px;
  -webkit-transform: rotate(-135deg);
          transform: rotate(-135deg);
}
.carousel__control--forward {
  right: 20px;
  -webkit-transform: rotate(45deg);
          transform: rotate(45deg);
}
.carousel__indicators {
  position: absolute;
  bottom: 20px;
  width: 100%;
  text-align: center;
}
.carousel__indicator {
  height: 10px;
  width: 10px;
  border-radius: 100%;
  display: inline-block;
  z-index: 2;
  cursor: pointer;
  opacity: 0.35;
  margin: 0 2.5px 0 2.5px;
}
.carousel__indicator:hover {
  opacity: 0.75;
}
.carousel__track {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  padding: 0;
  margin: 0;
  transition: -webkit-transform 0.5s ease 0s;
  transition: transform 0.5s ease 0s;
  transition: transform 0.5s ease 0s, -webkit-transform 0.5s ease 0s;
}
.carousel__track .carousel__slide {
  display: block;
  top: 0;
  left: 0;
  right: 0;
  opacity: 1;
}

.carousel__track .carousel__slide:nth-of-type(1) {
  -webkit-transform: translateX(000%) translateZ(0);
          transform: translateX(000%) translateZ(0);
}

.carousel__track .carousel__slide:nth-of-type(2) {
  -webkit-transform: translateX(100%) translateZ(0);
          transform: translateX(100%) translateZ(0);
}

.carousel__track .carousel__slide:nth-of-type(3) {
  -webkit-transform: translateX(200%) translateZ(0);
          transform: translateX(200%) translateZ(0);
}

.carousel__track .carousel__slide:nth-of-type(4) {
  -webkit-transform: translateX(300%) translateZ(0);
          transform: translateX(300%) translateZ(0);
}

.carousel__track .carousel__slide:nth-of-type(5) {
  -webkit-transform: translateX(400%) translateZ(0);
          transform: translateX(400%) translateZ(0);
}

.carousel__track .carousel__slide:nth-of-type(6) {
  -webkit-transform: translateX(500%) translateZ(0);
          transform: translateX(500%) translateZ(0);
}

.carousel__track .carousel__slide:nth-of-type(7) {
  -webkit-transform: translateX(600%) translateZ(0);
          transform: translateX(600%) translateZ(0);
}

.carousel__track .carousel__slide:nth-of-type(8) {
  -webkit-transform: translateX(700%) translateZ(0);
          transform: translateX(700%) translateZ(0);
}

.carousel__track .carousel__slide:nth-of-type(9) {
  -webkit-transform: translateX(800%) translateZ(0);
          transform: translateX(800%) translateZ(0);
}

.carousel__track .carousel__slide:nth-of-type(10) {
  -webkit-transform: translateX(900%) translateZ(0);
          transform: translateX(900%) translateZ(0);
}


.carousel--scale .carousel__slide {
  -webkit-transform: scale(0);
          transform: scale(0);
}
.carousel__slide {
  height: 100%;
  position: absolute;
  opacity: 0;
  overflow: hidden;
}
.carousel__slide .overlay {height: 100%;}
.carousel--thumb .carousel__indicator {
  height: 30px;
  width: 30px;
}
.carousel__indicator {
  background-color: #fafafa;
}

.carousel__slide:nth-of-type(1),
.carousel--thumb .carousel__indicators .carousel__indicator:nth-of-type(1) {
  background-size: cover;
  background-position: center;
}

.carousel__slide:nth-of-type(2),
.carousel--thumb .carousel__indicators .carousel__indicator:nth-of-type(2) {
  background-size: cover;
  background-position: center;
}

.carousel__slide:nth-of-type(3),
.carousel--thumb .carousel__indicators .carousel__indicator:nth-of-type(3) {
  background-size: cover;
  background-position: center;
}

.carousel__slide:nth-of-type(4),
.carousel--thumb .carousel__indicators .carousel__indicator:nth-of-type(4) {
  background-size: cover;
  background-position: center;
}

.carousel__slide:nth-of-type(5),
.carousel--thumb .carousel__indicators .carousel__indicator:nth-of-type(5) {
  background-size: cover;
  background-position: center;
}

.carousel__slide:nth-of-type(6),
.carousel--thumb .carousel__indicators .carousel__indicator:nth-of-type(6) {
  background-size: cover;
  background-position: center;
}

.carousel__slide:nth-of-type(7),
.carousel--thumb .carousel__indicators .carousel__indicator:nth-of-type(7) {
  background-size: cover;
  background-position: center;
}

.carousel__slide:nth-of-type(8),
.carousel--thumb .carousel__indicators .carousel__indicator:nth-of-type(8) {
  background-size: cover;
  background-position: center;
}

.carousel__slide:nth-of-type(9),
.carousel--thumb .carousel__indicators .carousel__indicator:nth-of-type(9) {
  background-size: cover;
  background-position: center;
}

.carousel__slide:nth-of-type(10),
.carousel--thumb .carousel__indicators .carousel__indicator:nth-of-type(10) {
  background-size: cover;
  background-position: center;
}

&lt;/style&gt;

&lt;script&gt;
  function isVisible(el) {
        while (el) {
            if (el === document) {
                return true;
            }

            var $style = window.getComputedStyle(el, null);

            if (!el) {
                return false;
            } else if (!$style) {
                return false;
            } else if ($style.display === &apos;none&apos;) {
                return false;
            } else if ($style.visibility === &apos;hidden&apos;) {
                return false;
            } else if (+$style.opacity === 0) {
                return false;
            } else if (($style.display === &apos;block&apos; || $style.display === &apos;inline-block&apos;) &amp;&amp;
                $style.height === &apos;0px&apos; &amp;&amp; $style.overflow === &apos;hidden&apos;) {
                return false;
            } else {
                return $style.position === &apos;fixed&apos; || isVisible(el.parentNode);
            }
        }
  }
  
  setInterval(function(){
    var j=0;
    var elements = document.querySelectorAll(&apos;.carousel__control--forward&apos;);
    for(i=(elements.length - 1);i&gt;-1;i--) {
      if(isVisible(elements[i])) j=i;
    }
    elements[j].click();
  },7000);
  
&lt;/script&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/shinji-new.png&quot; alt=&quot;PNG&quot; title=&quot;New/empty save game file contents&quot; /&gt;&lt;/p&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/shinji-hacked.png&quot; alt=&quot;PNG&quot; title=&quot;Hacked save game file contents&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;download&quot;&gt;Download&lt;/h2&gt;

&lt;p&gt;Grab the ISO at &lt;a href=&quot;https://archive.org/details/shinji-and-good-friends-second-hanafuda-impact&quot;&gt;archive.org/details/shinji-and-good-friends-second-hanafuda-impact&lt;/a&gt;&lt;/p&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Fri, 22 May 2020 00:00:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2020/05/22/shinji-and-good-friends-second-hanafuda-impact/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2020/05/22/shinji-and-good-friends-second-hanafuda-impact/</guid>
        </item>
      
    
      
        <item>
          <title>POPEYE Big 100th issue (1981-04-10)</title>
          <description>&lt;p&gt;This is a special 100th issue of POPEYE a Japanese lifestyle “Magazine for City Boys”: &lt;a href=&quot;https://archive.org/details/popeye-magazine-for-city-boys-1981-04-10/mode/2up&quot;&gt;archive.org/details/popeye-magazine-for-city-boys-1981-04-10/mode/2up&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Only very minor game related things in this, but I thought it worth posting. There’s a Game &amp;amp; Watch as a selectable reward/prize in a competition by Puma. Plus a “how to” for Hanafuda (the reason I bought the issue) and reviews of various physical card games. Plus lots more besides!&lt;/p&gt;

&lt;p&gt;If you don’t have time to flick through 276 pages, then I created a twitter thread that summarises the most interesting stuff: &lt;a href=&quot;https://twitter.com/gingerbeardman/status/1235585813137756161&quot;&gt;twitter.com/gingerbeardman/status/1235585813137756161&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://archive.org/details/popeye-magazine-for-city-boys-1981-04-10/mode/2up&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/popeye-big-100th-issue.jpg&quot; alt=&quot;JPG&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Fri, 06 Mar 2020 00:00:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2020/03/06/popeye-big-100th-issue/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2020/03/06/popeye-big-100th-issue/</guid>
        </item>
      
    
      
        <item>
          <title>Hanafuda by ZAT SOFT</title>
          <description>&lt;p&gt;These beautiful cards were created in 1983 using only characters, without bitmap graphics. This was because the Sharp MZ-700, like many home computers of its era, couldn’t do bitmap graphics.&lt;/p&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/hanafuda-zat-soft.png#pixel&quot; alt=&quot;PNG&quot; title=&quot;Hanafuda on Sharp MZ-700. By ZAT SOFT, 1983.&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Here is a download of the &lt;a href=&quot;http://vectorpoem.com/playscii/&quot;&gt;Playscii&lt;/a&gt; art files for the above cards: &lt;a href=&quot;https://www.dropbox.com/s/7j8lyoi6twdderl/Sharp%20MZ-700%20Hanafuda.zip?dl=0&quot;&gt;Sharp MZ-700 Hanafuda.zip&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also included are a set of blank cards so you can try creating something yourself.&lt;/p&gt;

&lt;p&gt;I encourage you to at least try as you’ll encounter some of the genius design decisions made by the original creator!&lt;/p&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/hanafuda-zat-soft-playscii.png#pixel&quot; alt=&quot;PNG&quot; title=&quot;Hanafuda October month recreated in Playscii using Sharp MZ-700 character set&quot; /&gt;&lt;/p&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Mon, 02 Dec 2019 00:00:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2019/12/02/hanafuda-by-zat-soft/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2019/12/02/hanafuda-by-zat-soft/</guid>
        </item>
      
    
      
        <item>
          <title>Replacing bitmap graphics in a PlayStation game</title>
          <description>&lt;blockquote&gt;
  &lt;p&gt;A version of this article was &lt;a href=&quot;https://www.patreon.com/posts/28136581&quot;&gt;originally posted on my Patreon&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I found an old Hanafuda Koi-Koi game that I can no longer easily play due to… sigh… what they call progress? It’s called Koikoi Komachi and was released around 2005 for Mac OS X (initially for PPC, and later Intel).&lt;/p&gt;

&lt;p&gt;I really like the cards images that it has, and was able to extract them using &lt;a href=&quot;https://echoone.com/filejuicer/&quot;&gt;File Juicer&lt;/a&gt; which is a kind of Swiss Army Knife for easily extracting files that might be embedded in an app, archive or disk image.&lt;/p&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/hanafuda-card-transplant-1.png#pixel&quot; alt=&quot;PNG&quot; title=&quot;The original cards as a sprite sheet extract from Koikoi Komachi&quot; /&gt;&lt;/p&gt;

&lt;p&gt;But just looking at the cards is not enough. I really needed to play a video game with them, you know? So I thought it would be cool to transplant them into the PlayStation game Youkai Hana Asobi.&lt;/p&gt;

&lt;h2 id=&quot;heres-what-i-did&quot;&gt;Here’s what I did&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Split the new card image into individual cards&lt;/li&gt;
  &lt;li&gt;Resize/shrink the individual cards to the dimensions used in the PS1 game&lt;/li&gt;
  &lt;li&gt;Extract the images I want to edit from the PS1 game&lt;/li&gt;
  &lt;li&gt;Edit the extracted images to add the new cards and make any other changes&lt;/li&gt;
  &lt;li&gt;Replace the images in the PS1 game with the new ones&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;image-manipulation&quot;&gt;Image Manipulation&lt;/h2&gt;

&lt;p&gt;To do the image splitting and resizing I used &lt;a href=&quot;https://flyingmeat.com/retrobatch/&quot;&gt;Retrobatch&lt;/a&gt; which makes this kind of stuff really easy. I created a workflow to crop out the individual cards and do the resizing all in one batch. Very cool!&lt;/p&gt;

&lt;h2 id=&quot;image-editing&quot;&gt;Image Editing&lt;/h2&gt;

&lt;p&gt;PlayStation images are palette-based so you need to use an image editor that respects the embedded indexed colour palette. There may be other capable editors, but Adobe Photoshop is very good at this sort of thing so that’s what I used. Any old version will do, you definitely do not need the latest version.&lt;/p&gt;

&lt;p&gt;I pasted each of my small card images into the two images used by the game, replacing the spectre/monster cards that are default. I also took time to change the options screen to modify the thumbnail that signifies which card design you’re using, and I also added a “NEW” label to the title screen.&lt;/p&gt;

&lt;p&gt;I stopped short of changing the “help” card images because that would have been a lot more work and I do not personally look at those whilst playing.&lt;/p&gt;

&lt;h2 id=&quot;rom-hacking&quot;&gt;ROM Hacking&lt;/h2&gt;

&lt;p&gt;There are many ways to get images out of a PS1 game, but I settled on &lt;a href=&quot;https://www.romhacking.net/utilities/799/&quot;&gt;Tim2View&lt;/a&gt; because it offers an all-in-one solution for extraction and insertion. It is as easy as:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Export PNG… (F4)&lt;/li&gt;
  &lt;li&gt;(do your image editing elsewhere)&lt;/li&gt;
  &lt;li&gt;Import PNG… (F5)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; Tim2View writes to your PS1 bin file at each operation—without prompting—so always keep a backup just in case something goes wrong!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gotcha:&lt;/strong&gt; be sure to respect whatever colour is marked as transparent when making your image edits. In my case this was the colour black (0,0,0) so I had to make sure to use an almost-black colour in my new graphics to avoid unwanted transparent pixels. You can quickly check the state of your image by toggling the background transparency type at the bottom of the window. If it’s wrong just tweak and re-import.&lt;/p&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/hanafuda-card-transplant-2.png#pixel&quot; alt=&quot;PNG&quot; title=&quot;A composite image showing the various graphics that were replaced or edited&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;that-was-fun&quot;&gt;That was fun!&lt;/h2&gt;

&lt;p&gt;I then used &lt;a href=&quot;https://projects.sappharad.com/tools/multipatch.html&quot;&gt;MultiPatch&lt;/a&gt; to create an IPS patch file from the changes, so I could make this mod easy for other gamers to enjoy.&lt;/p&gt;

&lt;p&gt;The finished patch is available at: &lt;a href=&quot;https://www.romhacking.net/hacks/4593/&quot;&gt;www.romhacking.net/hacks/4593/&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;screenshot&quot;&gt;Screenshot&lt;/h2&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/hanafuda-card-transplant-3.png#pixel&quot; alt=&quot;PNG&quot; title=&quot;The final graphics being used whilst playing a game of Koi-Koi&quot; /&gt;&lt;/p&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Thu, 04 Jul 2019 00:00:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2019/07/04/replacing-bitmap-graphics-in-a-playstation-game/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2019/07/04/replacing-bitmap-graphics-in-a-playstation-game/</guid>
        </item>
      
    
      
        <item>
          <title>Hanafuda Discord</title>
          <description>&lt;p&gt;I created a Discord server for discussion of traditional Japanese flower cards.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://discord.com/invite/mKbdwy9&quot;&gt;discord.com/invite/mKbdwy9&lt;/a&gt;&lt;/p&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Thu, 28 Feb 2019 00:00:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2019/02/28/hanafuda-discord/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2019/02/28/hanafuda-discord/</guid>
        </item>
      
    
      
        <item>
          <title>Koi-Koi by KIN SOFT for MSX (1994)</title>
          <description>&lt;p&gt;I &lt;a href=&quot;https://msx-fan-wiki.appspot.com/view/1099&quot;&gt;read about an old doujin user-created Koi-Koi game&lt;/a&gt; 花札こいこい made by KIN SOFT in 1994. This is my document of the hunt I went on to be able to find and play it!&lt;/p&gt;

&lt;h2 id=&quot;msxfan&quot;&gt;MSX・FAN&lt;/h2&gt;

&lt;p&gt;Firstly, the game came with &lt;a href=&quot;https://archive.org/details/MSXFAN199406/page/n29/mode/2up&quot;&gt;MSX・FAN Issue 26&lt;/a&gt; (1994/06) and by that I mean in the pages and on one of the two cover disks. So I had to find them in the existing archives. I found them on a Spanish website that I’ve since lost the link to. The game could be installed on a blank .dsk, which of course you have to &lt;a href=&quot;https://www.msx.org/wiki/How_to_make_a_floppy_disk_image&quot;&gt;generate and format&lt;/a&gt;. The resulting .dsk played just fine in OpenMSX but not fMSX. 🤔&lt;/p&gt;

&lt;h2 id=&quot;dsk2rom&quot;&gt;dsk2rom&lt;/h2&gt;

&lt;p&gt;After some thought I figured out that using the Windows tool &lt;a href=&quot;https://github.com/joyrex2001/dsk2rom&quot;&gt;dsk2rom.exe&lt;/a&gt; I could convert the .dsk into a .rom file that would boot straight into the game when using fMSX.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;dsk2rom.exe -6d blank.dsk boot.rom
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Those command-line options:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;6&lt;/code&gt; = use 60Hz video (the Japanese standard)&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;d&lt;/code&gt; = allow booting of other diskroms (was required for compatibility)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But there were still some errors in certain situations:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;without MSXDOS2 or TurboR: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&quot;Syntax error in 40&quot;&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;with fMSX in RetroArch: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&quot;Disk full in 40&quot;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With &lt;a href=&quot;https://www.msx.org/forum/msx-talk/emulation/help-running-converted-dsk-as-rom-in-retroarch-fmsx&quot;&gt;some help from my &lt;em&gt;MSX&lt;/em&gt; friends&lt;/a&gt; it became clear the game required:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RAMDISK&lt;/code&gt; command (part of MSXDOS2)&lt;/li&gt;
  &lt;li&gt;256KB RAM&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note: I think I had to create a .dsk containing both MSXDOS2 and then install the game onto to that. The MSX Turbo R has MSXDOS2 built-in.&lt;/p&gt;

&lt;h2 id=&quot;retroarch&quot;&gt;RetroArch&lt;/h2&gt;

&lt;p&gt;But fMSX in RetroArch doesn’t allow you to set RAM and VRAM and in fact its defaults for those were wrong for some types of &lt;em&gt;MSX&lt;/em&gt;. I &lt;a href=&quot;https://github.com/libretro/fmsx-libretro/pull/14&quot;&gt;made some changes to fmsx-libretro core&lt;/a&gt; and whilst I was in there made &lt;a href=&quot;https://github.com/libretro/fmsx-libretro/pulls?q=is%3Apr+author%3Agingerbeardman+is%3Aclosed+is%3Amerged&quot;&gt;several more improvements&lt;/a&gt;. I even &lt;a href=&quot;https://github.com/libretro/fmsx-libretro/pull/25&quot;&gt;updated the core to fMSX version 4.9&lt;/a&gt; for all RetroArch users. I’m skipping over the huge effort that all these changes took, but it was fun hacking on libretro!&lt;/p&gt;

&lt;p&gt;After all this I had a test build of the fmsx-libretro core for 3DS that I could use to play the game. 🎴&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;the-game&quot;&gt;The Game&lt;/h3&gt;

&lt;p&gt;The game is really interesting because of the yaku (card combos) it contains, and the fact that it has a Special Card Shop where you can use points to buy Special cards for cheating in imaginative ways against the CPU.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Peek at Deck: Check the next card in the deck&lt;/li&gt;
  &lt;li&gt;Peek at Opponent: View the opponent’s hand&lt;/li&gt;
  &lt;li&gt;Card Explosion: Destroy a card on the table + force the opponent to skip a turn&lt;/li&gt;
  &lt;li&gt;Card Swap: Swap cards in your hand&lt;/li&gt;
  &lt;li&gt;Landmine Card: Explodes if the opponent takes it&lt;/li&gt;
  &lt;li&gt;Deck Collapse: Turn over two cards from the deck consecutively&lt;/li&gt;
  &lt;li&gt;Time Reversal: Reset the game&lt;/li&gt;
  &lt;li&gt;Lightning Card: Prioritise acquiring 20-point cards&lt;/li&gt;
  &lt;li&gt;Electric Vortex Card: Makes it easier to take 20-point cards from the board&lt;/li&gt;
  &lt;li&gt;Storm: Swap the cards you are about to take&lt;/li&gt;
  &lt;li&gt;Bamboo Cutter Card: Probability effect allowing you to acquire any card&lt;/li&gt;
  &lt;li&gt;Atomic Bomb Card: Significantly reduces the opponent’s available cards&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;download&quot;&gt;Download&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;A .zip of both the .dsk and .rom file: &lt;a href=&quot;https://cdn.gingerbeardman.com/files/koikoi-kin-soft-1994.zip&quot;&gt;koikoi-kin-soft-1994.zip&lt;/a&gt; (247 KB)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;If you are interested in Hanafuda video games or cards, why not join the &lt;a href=&quot;/2019/02/28/hanafuda-discord/&quot;&gt;Hanafuda Discord server&lt;/a&gt;?&lt;/em&gt;&lt;/p&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/msx-koikoi-by-kin-soft-1994.jpg&quot; alt=&quot;IMG&quot; title=&quot;Koi-Koi by KIN SOFT (1994) running in fmsx-libretro on Nintendo 3DS (2017)&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;a href=&quot;https://archive.org/details/MSXFAN199406/page/n29/mode/2up&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/msx-fan-magazine-1994-06.jpg&quot; alt=&quot;IMG&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;figcaption&gt;Magazine spread feature detailing the game, its controls, hanafuda, and valid yaku (card combos)&lt;/figcaption&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Wed, 28 Jun 2017 11:13:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2017/06/28/koikoi-by-kin-soft-for-msx-1994/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2017/06/28/koikoi-by-kin-soft-for-msx-1994/</guid>
        </item>
      
    

  </channel>
</rss>
