Make SD for MiST

make sd card for MiST

Script to initialize an SD card for MiST, SiDi and SiDi128 FPGA retro board

This script by gcopoix initializes or updates the SD cards for either a MiST, SiDi or SiDi128 FPGA retro system.
It tries to create a complete as possible collection of cores and their required ROM files to get an out-of-the-box working SD card.
There are seperate scripts for Linux and Windows hosts.
With PowerShell installed on a Linux system the Windows genSD.ps1 script is executable on a Linux system too.

This script only collects the work of many other contributors (FPGA, Hardware, Software, …) to generate a ‘distribution’ for the systems mentioned above.
Thanks to all these contributors for their work (see links to repositories for only some of them).

After executing this script appr.

MiSTSiDiSiDi128
.rbf~255~140~180
.arc~1320~940~1090
.rom~1360~970~1120

files are collected/generated.

Preconditions

The SD card must be

  • at least 32GB
  • formatted (FAT, FAT32 or exFAT)

or use a folder on HDD with the same available disk space

Usage

simply call the script with minor parameters:

genSD [-s <mist|sidi|sidi128>] [-d <destination SD drive or folder>]

with

optiondescriptionexample
-sTarget system (mist or sidi).
If this option isn’t specified, sidi will be used by default.
-s mist
-s sidi
-s sidi128
-dDestination folder the target folders and files are generated.
If this option isn’t specified, SD\sidi will be used by default.
-d /media/SD-Card
-d E:
-hShow some help text.-h

Examples

Initialize SD card for MiST, SD card in drive E: (Windows)

 genSD -s mist -d E:

Initialize SD card for MiST, SD card mounted to /media/SD-Card (Linux):

 genSD.sh -s mist -d /media/SD-Card

Initialize SD card for SiDi, SD card in drive E: (Windows)

 genSD -s sidi -d E:

Initialize SD card for SiDi128, SD card in drive E: (Windows)

 genSD -s sidi128 -d E:

Initialize SD card for MiST, create in subfolder (Windows)

 genSD -s mist

Initialize SD card for MiST, create in subfolder (Linux)

 genSD.sh -s mist

called without parameters: Initialize a subfolder for SiDi (Linux)

 genSD.sh

What is created

This script fills/updates an SD card or folder with

  • the Computer/Console/Arcade Cores (organized in subfolders)
  • the required ROMs and optional sample Game/HDD files
  • ARM Firmware update file
  • default mist.ini

to get an SD card which can be directly plugged into MiST, SiDi or SiDi128.

The generated folder structure:

├── Arcade
│   ├── Gehstock
│   │   ├── ...
│   │   └── ...
│   ├── Jotego
│   │   ├── ...
│   │   └── ...
│   ├── ...
│   └── ...
│
├── Computer
│   ├── Amiga
│   ├── Amstrad CPC
│   ├── Atari ST
│   ├── C64
│   ├── ...
│   └── ...
│
├── Console
│   ├── Atari 2600
│   ├── Astrocade
│   ├── Nintendo NES
│   ├── ...
│   └── ...
│
├── <core subfolders unfortunately required in root folder>
├── ...
│
├── <additional rom files unfortunately required in root folder>
├── ...
│
├── core.rbf      # <- menu core
└── firmware.upg  # latest ARM firmware update file

The Arcade cores are installed with their required ROM files.
The information about the Arcade cores/roms is parsed from the .mra files (e.g. for jotego’s cores) and converted to .arc files together with the converted .rom file.

Cache folders

During installation, several temporary folders are created in the folder of the genSD script:

├── repos
│   ├── jotego           # Jotego repository
│   ├── mame             # cache folder for MAME Arcade ROM files
│   ├── MiST
│   │   ├── binaries     # MiST core repository
│   │   ├── gehstock     # Gehstock MiST core repository
│   │   └── sorgelig     # Sorgelig MiST core repositories
│   └── SiDi
│       ├── ManuFerHi    # ManuFerHi SiDi core repository
│       └── eubrunosilva # eubrunosilva SiDi core repository
└── tools                # required tools for executung this script

It is a good idea to keep these folders as the next run will be much faster (git only needs to update and not clone, the download of the MAME ROMs can be skipped, …).
This saves more than 10GB of data not being fetched again.

Download on Github

Leave a Reply

Your email address will not be published. Required fields are marked *