Gamebase64 – instant C64 collection

If you had a Commodore 64 in your youth, or you’re simply curious about the games produced for the system then Gamebase64 is for you.

Gamebase64 is an effort to catalogue every single Commodore 64 game, along with associated media like music, tape or disk covers, adverts and magazine reviews

It’s huge! The latest version is V15 and was released in 2016 holding 25,700 games. The games themselves don’t take up too much data but the artwork, music, and associated material really take up a lot of room. The whole collection is available as 3 ISO files and an artwork zip file. You can find download links to all of those in this thread, but if you don’t want to download them you can browse the collection here (or here) too. You’ll need to download the GameBase frontend to view everything as well as the V15 database files. I use Vice to emulate the Commodore 64.

GameBase itself is a database frontend for Windows that supports multiple databases. Many systems from the Commodore Vic20 to the Amiga or the Speccy and Amstrad CPC range are covered. You can find links to them on the GameBase website as well as many other databases.

I mainly use a Mac so I use Gamebase64 Browser. It’s a very slick frontend but if you search around you’ll find frontends written in a variety of languages for various modern platforms.

Installation was as simple as copying everything out of the ISO files into a directory, installing GameBase64 Browser in the usual way and when first run, pointing it at the directory where I had copied everything else.

Single disk and tape games work perfectly fine but I’ve had trouble with multi-disk games. To play Retrograde I had to manually unzip both disks into a temporary directory and load them in Vice outside of GameBase64 Browser. Not difficult at all but worth remembering when your favourite game asks you to insert disk 2. ๐Ÿ™‚

If you’re at all interested in retro computers then GameBase is definitely worth checking out!

Retrograde

Ah Retrograde, a Commodore 64 game released by Thalamus in 1989. The Rowland Brothers, of Creatures, Creatures 2 and Mayhem in Monsterland fame created this game and it shows. Presentation is top notch. Some would say that this is a repetitive shoot ’em up but I love it. Nice mix of flying around shooting aliens and then a bit of a break with the underground bits. I love the graphics and the sound is a delight.

The gameplay is very simplistic, especially underground but the flying weapons are super! Just make sure you have an autofire on your controller. My thumb was sore from two levels when I remember Vice can do the hard work for me. I’m also glad Vice can save a snapshot of the computer state to save my progress as this game takes some time to complete.

Here’s a video someone else made of it:

The Glorious Twelfth

Tim and Naomi of the Irish Passport Podcast visited Northern Ireland in July to experience the marching season in all it’s “glory” for their latest episode.

It’s a great episode, showing the stark contrast between the neighbourly and friendly people they met during the day on the 11th, and the hate fuelled crowd who descended on the area that night for the bonfire.

You’ll find lots of images of the bonfires that night on Google Images but this Dailymail article (yes, yes, I know) has lots of images and reporting.

I visited Northern Ireland in the summer and really enjoyed myself there. The people we met were friendly and welcoming but it was well past the marching season. Hopefully I’ll write a post about that sometime.

Jedininja

Sometimes you accidentally dive down a rabbit hole of your own making.
I came across the Retro Computer Scene search engine a few days ago andย  accidentally clicked on a link to a Commodore 64 disk image. Those files are small at 175KB so I decided to keep it and look at it later.

This morning I did and found Noice Driver v3.0a, a music disk for the Commodore 64 released in 1993. There are some great tunes on there but the name JEDININJA leapt out at me. It’s a good tune too!

The filename of the disk image is sb130978-1fbef9.d64 so I guessed it might have something to do with Scene Base. I downloaded their metadata list and found it there in the c64disk set!

You can find JEDININJA on csdb and a later version of the music disk there too: Noice Driver V3.8c.

It’s quite amazing the amount of digital history that’s out there. I’m only scratching the surface.

High Sierra and coreutils

Since MacOS High Sierra has been out for a long time this is probably old news to the tiny minority using coreutils. When you upgrade you might find that “df” and other commands don’t work properly.

Every time I opened a terminal after upgrading I saw errors saying commands had been aborted. When I ran “df” it would abort immediately.

I thought the upgrade had damaged my filesystem, especially since it introduced APFS. I ran “First Aid” in Disk Utility several times, both live and in recovery.

It then occurred to me to try the MacOS df in /bin/. It worked!

Coreutils is the package that includes lots of command line tools like “df”. I installed it using brew so the following fixed the problem:

brew reinstall coreutils

I noticed it put everything in /usr/local where my original commands were in /opt/ so changing the PATH in my .zshrc was necessary too. Everything was back to normal again! ๐Ÿ™‚

EDIT: Some other commands were messed up. “find” had changed, but then I realised it probably isn’t in coreutils and I was using the MacOS version. This page led me to the right package names and the following command line:

brew reinstall coreutils findutils gnu-tar gnu-sed gawk gnutls gnu-indent gnu-getopt --with-default-names

The “–with-default-names” parameter restores the original filenames, removing the “g” prefix. Everything outside of the coreutils went in /usr/local/bin/ which I made sure was added to the path too.

My Favourite C64 Intro Music

The version of Super Snake Simulator I used to play on the C64 was a cracked version by The Wanderer Group. I loved the game but the music in the intro was an infectious tune.

Listening to it in a Youtube video doesn’t have quite the same impact. It cuts off a bit too early as well. Perhaps rose tinted glasses and all that? It doesย  bring back memories of typing “left arrow” L to load games from a tape and “Turbo Tape by Jeff”, the tape loader used to pack more games on to one cassette. Piracy was rife on the C64, but I still have a box of (original) game cassettes and disks in the attic.

Want to hear the original “Wanderer”? It was originally recorded in 1961 and reached no 2 in the US charts!

Super Snake Simulator itself was a lot of fun too. It’s still worth checking out!

Lots of C64 Intros

Vice – autostart with a directory

Vice, the Commodore 64 emulator is a cross platform emulator that works on Windows, Linux, MacOS and other operating systems. It also allows you to emulate the Vic 20, C128 and other early Commodore machines.

Double clicking on a Commodore d64 disk image file will load x64, the Commodore 64 emulator and load the first programme on the disk image.

LOAD”*”,8,1

Quite often I want to look at a D64 image directory listing instead of running the first programme on the disk.

You can do this by unchecking the “autostart” box on the file open box of course but it’s not as convenient.

So, last Friday I asked on Twitter if it was possible to drag and drop a D64 image onto Vice to display the disk contents. Logiker replied and helped me by DM to handle double clicking on a C64 disk image.

What I needed to do was load the disk image and then feed the directory listing command to the C64.

LOAD"$",8
LIST
LOAD”$”,8

Getting MacOS to accept the command line was harder to achieve. In Windows you can change the start up parameters for a programme. In MacOS it should be possible to modify the emulator “package” with a script that calls the real executable but I couldn’t get that working.
In Linux I would have just created a shell script that called the emulator. ๐Ÿ™‚

What did work in MacOS was using Automator. I created a “Run Shell Script” action and filled it in with the following. If you want to follow along at home you’ll have to change the path to x64.


/Applications/Vice64/x64.app/Contents/MacOS/x64 -8 "$@" -keybuf load\\"$\\",8\\nlist\\n

I saved that as a new app in ~/bin/ called “Vice64”, and associated all D64 images with that application. Now double clicking on a disk image shows me a directory listing!

It doesn’t work unfortunately when I have an Action Replay cartridge loaded. Maybe I need to add F3 or F7 to the keyboard buffer?

One of the advantages of looking at the directory structure is the directory art some demos have. Here’s one from Pearls for Pigs, a D64 I happened to use while testing this but there are loads of them. I saw that Logiker has a page dedicated to directory art!

Happy times! ๐Ÿ™‚

WP Super Cache 1.6.3

WP Super Cache is a full page caching plugin for WordPress. When a page is cached almost all of WordPress is skipped and the page is sent to the browser with the minimum amount of code executed. This makes the page load much faster.

1.6.3 is the latest release and is mostly a bugfix release but it also adds some new features.

  • Added cookie helper functions (#580)
  • Added plugin helper functions (#574)
  • Added actions to modify cookie and plugin lists. (#582)
  • Really disable garbage collection when timeout = 0 (#571)
  • Added warnings about DISABLE_WP_CRON (#575)
  • Don’t clean expired cache files after preload if garbage collection is disabled (#572)
  • On preload, if deleting a post don’t delete the sub directories if it’s the homepage. (#573)
  • Fix generation of semaphores when using WP CLI (#576)
  • Fix deleting from the admin bar (#578)
  • Avoid a strpos() warning. (#579)
  • Improve deleting of cache in edit/delete/publish actions (#577)
  • Fixes to headers code (#496)

This release makes it much easier for plugin developers to interact with WP Super Cache. In the past a file had to be placed in the “WP Super Cache plugins directory” so that it would be loaded correctly but in this release I’ve added new actions that will allow you to load code from other directories too.

Use the wpsc_add_plugin action to add your plugin to a list loaded by WP Super Cache. Use it like this:

do_action( 'wpsc_add_plugin', WP_PLUGIN_DIR . '/wpsc.php' )

You can give it the full path, with or without ABSPATH. Use it after “init”. It only needs to be called once, but duplicates will not be stored.

In a similar fashion, use wpsc_delete_plugin to remove a plugin.

The release also makes it much simpler to modify the cookies used by WP Super Cache to identify “known users”. This is useful to identify particular types of pages such as translated pages that should only be shown to certain users. For example, visitors who have the English cookie will be shown cached pages in English. The German cookie will fetch German cached pages. The action wpsc_add_cookie makes this possible.

do_action( 'wpsc_add_cookie', 'language' );

Execute that in your plugin and WP Super Cache will watch out for the language cookie. The plugin will use the cookie name and value in determining what cached page to display. So “language = irish” will show a different page to “language = french”.

Use wpsc_delete_cookieย to remove a cookie. Cache files won’t be deleted. It’s doubtful they’d be served however because of the hashed key used to name the filenames.

do_action( 'wpsc_delete_cookie', 'language' );

If you’re going to use either of the plugin or cookie actions here I recommend using Simple Caching. While the plugin will attempt to update mod_rewrite rules, it is much simpler to have PHP serve the files. Apart from that, any plugins loaded by WP Super Cache will be completely skipped if Expert mode is enabled.

WP Super Cache and Cookie Banners

More sites use cookie banners now that the GDPR is active but some are finding that their banners are misbehaving once they enable caching.

This is a similar issue to the one that happened to some page counter plugins in the past. The page counter wouldn’t increment.

When a cookie banner is clicked a cookie is set in the browser so the website knows this visitor has agreed to accept cookies. If the cookie is set then the cookie banner html is not sent to the browser.

I suspect the main issue is that the code that sets and checks if the cookie is set is PHP. Unfortunately because the page is cached then no PHP code is executed, and the cookie banner is displayed because it was originally cached that way.

Since WP Super Cache only knows about certain WordPress cookies it assumes everyone who doesn’t have those cookies is a first time “anonymous” visitor. It doesn’t know about your cookie banner cookie.

You have two options:

  1. Rewrite your cookie banner so it’s completely in Javascript. Do the cookie detection in Javascript and also set the cookie in Javascript. If the cookie banner has been clicked then you need to trigger an action, and other Javascript that is hooked on to that trigger will run and load the tracking cookies.
  2. Modify WP Super Cache so it knows about the cookie your cookie banner uses. Caching won’t work quite as well as before as it’ll be split between visitors who have clicked the cookie banner and those that haven’t. One cached file will display the cookie banner, and the other will not but it will have ad tracking Javascript.

Using Javascript completely is a better solution because it runs in the browser on every page load but that might not be possible every time.

Otherwise, use PHP to get WP Super Cache to play nicely with your existing code:

  1. You’ll need to write a WP Super Cache plugin.
  2. You need to hook into the wp_cache_get_cookies_values cacheaction and add the value of the cookie banner cookie to the end of that string.
  3. Caching can only be performed by simple caching now, unless you’re willing to edit mod_rewrite rules in your .htaccess file.

Something like this will do. Make sure you note the warning about $wp_cache_plugins_dir in the link above about writing these plugins.

function add_cookie_banner_to_cache_cookie( $string ) {
    if ( isset( $_COOKIE['cookie_banner'] ) ) {
        $string .= 'cb,';
    }
    return $string
}
add_cacheaction( 'wp_cache_get_cookies_values', 'add_cookie_banner_to_cache_cookie' );

Substitute the name of the cookie for your cookie name, change the name of the function, and the text it adds to the string. There is an intentional PHP fatal error in the code above to discourage copy/pasting.

Your cookie banner plugin could automate setting this up, but it may have unforeseen consequences if not done correctly. It should check if $wp_cache_plugins_dir is set already, and use that location, otherwise it will have to make a directory and update the WP Super Cache configuration, where ABC is the new location for the plugins.

wp_cache_setting( 'wp_cache_plugins_dir', ABSPATH . 'wp-content/ABC' );๏ปฟ

The new code can be copied into a file in that directory. The files in the original WP Super Cache plugins directory (found at WPCACHEHOME . 'plugins') should be copied into that directory too and a warning shown to the user. They may need to set up one of those plugins again.

The reason it is this convoluted is because this code will run before all of WordPress loads. You can’t rely on blog options or most of the nice configuration tools WordPress provides.

When your plugin is uninstalled it should of course restore the plugins directory to the way it was before.

For future reference, since cookie banners will hopefully not be around forever, here’s what they looked like in the deep, distant past of 2018. ๐Ÿ™‚

The LA Times just gave up and don’t show anything to EU visitors.