ScummVM for N64 - Linux Instructions

Before we can play some adventure games in ScummVM for N64, we first need to construct a usable cartridge image for whatever rom device you have, be it a flash cart or old copier. We'll be using an Everdrive 64 for this article.

First, make sure you have the following things:

  • A PC running Linux, anything Debian derived should work fine, like Ubuntu. This guide is using Linux Mint.
  • ScummVM build package (download here)
  • genromfs (get from your package manager)
  • ucon64 (download here)

We'll also be referencing this wiki.scummvm.org documentation page

Getting Started

wiki.scummvm.org does have an instructions page for the N64 which this guide is derived from, but we found a lot of people have had difficulty understanding how to operate a terminal in Linux. We'll be using one still, but hopefully this guide will be easier to follow.

The first step involves getting genromfs and ucon64. The first one there is very easy, nearly every Linux distro has genromfs available from the package manager. Just find yours in with the built-in applications, use the search function in the package manager and get genromfs.

Ucon64 is a bit harder, you'll need to download the Linux binary for Ucon64 and install it. This can be done with the terminal by hand, but distros like Linux Mint have an option to open the terminal from a specific file explorer location, like in the user downloads folder. From there, you'd have to enter a sudo ./install.sh command, which needs the admin password. An easier option is to right click the install script and select run as administrator. This for sure should properly install ucon64.

Once both genromfs and ucon64 are properly installed, you will be able to just enter those names in a terminal window and they will run.

Using the Linux Terminal and File Explorer

For the rest of this guide, we'll be working in User/Downloads/scummvm/ in Linux Mint.

There's a section of the wiki.scummvm.org instructions with these terminal commands.
Our game of choice will be Beneath a Steel Sky.

NOTE: The original instructions use "bass" as the internal rom name for Beneath a Steel Sky, this was updated to "sky" in newer builds of ScummVM like 1.6.0.

  • mkdir GAMEDATA
  • cp -a ../games/mygamedata ./GAMEDATA
  • genromfs -f ./ROMFS.img -d ./GAMEDATA -V romname
  • cat scummvm-bass.bin ROMFS.img > scummvm-bass.n64
  • ucon64 --n64 --chk scummvm-bass.n64

The first two lines are not really required as they can be completed with just the file explorer windows. The other three we will tackle individually.

The line "mkdir GAMEDATA" means to make a GAMEDATA folder. You can use the one included with ScummVM or make a new one, just make sure vkeybd_default.zip is included. You will also put any games you want to run in the GAMEDATA folder. Think of the GAMEDATA folder as a virtual drive. Any folders or files will appear as is when accessed on the N64, so you'd probably want folders for each game.

The second line "cp -a ../games/mygamedata ./GAMEDATA" terminal line is just for copying your ScummVM compatible games into your GAMEDATA folder. It's easy enough to do that from the file explorer.

Before we continue, we need a terminal window open. It's super easy with modern Linux, just right click an empty space of a file explorer window and pick 'open in terminal'.

The third terminal line is an important one.

  • genromfs -f ./ROMFS.img -d ./GAMEDATA -V romname

This command will generate a ROMFS.img file. The "romname" text can be changed to something else like scumm or sierra if you like.

This next line is also very crucial.

  • cat scummvm-sky.bin ROMFS.img > scummvm-sky.n64

The first command there is short catenate. It means to combine the ROMFS.img file with the scummvm-sky.n64 file. That command is just for Beneath a Steel Sky though. For other engines like scumm, you'd want to change that code like this:

  • cat scummvm-scumm.bin ROMFS.img > scummvm-scumm.n64

Doing the above command will create a rom image, but most copiers and the Everdrive 64 need the rom checksum to be corrected, so you enter this command.

  • ucon64 --n64 --chk scummvm-sky.n64

You'll know it worked correctly because a .bak backup file will be generated. You don't need the .bak file for anything.

Some copiers need the rom file to be padded to an even multiple of 2mb. The wiki.scummvm.org page gives this command to make this correction. It's not required for Everdrive 64.

  • ucon64 --n64 --v64 --padn=16777216 scummvm-sky.n64

Once the rom has been assembled and checksum fixed, you're done. Try loading the file onto your Everdrive 64 SD card and give it ago.

Also remember that there's a hard limit of 64MB for the Everdrive 64 and often less on older copiers. Make sure your finished scummvm-n64 rom is less than 64MB, that includes the contents of GAMEDATA and the scummvm-n64 binary.

Summary

If you got lost along the way, feel free to simply copy what is shown in the pictures. The key takeaways to remember are:

  • Your working folder should contain the folder GAMEDATA and the file scummvm-???.bin (??? being the game engine you need)
  • The GAMEDATA folder should contain vkeybd_default.zip, any dat support files needed and any game folders you wish to play.
  • You need to run terminal from the main working folder, where you can see GAMEDATA as a folder you can go into.
  • As you complete each command, you'll see a ROMFS.img file and a scummvm-???.n64 file appear in your working folder.
  • If ucon64 worked, you'll see a scummvm-???-.bak file in your working folder. This can be deleted.

Click here to go back to the main ScummVM for N64 article.


Written by Aaron Wilcott
April 30th 2020