Extracting ROMs from Sega Mega Drive & Genesis Classics bought on Steam on Linux Mint 18.3

This post is also available in: frFrançais

Hey everyone. Klebs here and today, I’ll show you how you can legally purchase ROMs for the Sega Genesis/Mega Drive via Steam and rename them in a reader-friendly format. That way, you can use them elsewhere (e.g. emulators, Mega Everdrive, project MiSTer, etc.).

les ateliers phv sega genesis mega drive classics steam mister fpga mega everdrive
Source: Tigerfog, iPhone

Before we begin

First, I’d like to thank ETA Prime for inspiring me to write this tutorial. In his video, he explains how to extract ROMs, rename them and use them in Retroarch, a multi-platform tool for emulators. To find out more:

Source: ETA Prime

Why then do I bother writing this if ETA Prime has already covered the subject? Two reasons:

  • he used Windows to explain the process
  • he showed how to rename the files without getting into too much details

If you also use Windows or can get around Sega’s odd ROM-naming conventions, ETA Prime’s video is all you need. However, if you prefer a Linux-oriented tutorial or a script that will rename the files for you, I’ll encourage you to keep reading.

Buying the games and locating them

You can legally buy certain Genesis/Mega Drive games on Steam individually or as part of a special package called Sega Mega Drive & Genesis Classics through this affiliate link on Humble Bundle. From this point on, I’ll use the term Sega Classics when I refer to Sega Mega Drive & Genesis Classics for the sake of simplicity.

Since the Sega Classics game isn’t natively available on Linux, we need to make sure Steam is configured to run all games in SteamPlay mode using Proton. That way, Sega Classics will appear in the list of purchased games making it available to be downloaded and installed.

Once installed, right-clicking on Sega Classics and choosing Properties will make the pop-up window appear (see image below).


Source: personal screenshot

Clicking on the Browse local files under the Local files tab will show the exact location of Sega Classics on the computer (see image below).


Source: personal screenshot

Normally, if the username is klebs and the default location set by Steam hasn’t been changed, the folder should be at /home/klebs/.steam/steam/steamapps/common/Sega\ Classics

In my case as the above screenshot clearly shows, the folder is located at /mnt/DATA/Jeux/Steam/steamapps/common/Sega\ Classics

Renaming the files

Assuming the username is klebs and is using Steam’s default game location, the following commands in the terminal will create a copy of the ROMs in another folder and create a CSV file with nano:

cd /home/klebs/.steam/steam/steamapps/common/Sega\ Classics
cp -R uncompressed\ ROMs/ ~/Documents/SegaROMS
cd ~/Documents/SegaROMS
nano segaclassicslist.csv

Before copying the list below in nano, it’s important to make sure nothing’s missing. Also, the original filenames should match those in the SegaROMS folder.

ALEXKIDD_U.68K,Alex Kidd in the Enchanted Castle (USA).gen
AlienSoldier_Europe.SGD,Alien Soldier (Europe).md
AlienStorm_USA.SGD,Alien Storm (USA).gen
ALTEREDB_UE.68K,Altered Beast (USA).gen
BEYONDOA_E.68K,The Story of Thor (Europe).md
BEYONDOA_F.68K,The Story of Thor (France).md
BEYONDOA_G.68K,The Story of Thor (Germany).md
BEYONDOA_J.68K,The Story of Thor - Hikari o Tsugumono (Japan).bin
BEYONDOA_S.68K,The Story of Thor (Spain).md
BEYONDOA_U.68K,Beyond Oasis (USA).gen
BONANZAB_JE.68K,Bonanza Bros. (Europe).md
Columns3_USA.SGD,Columns III (USA).gen
COLUMNS_W.68K,Columns (World).gen
COMIXZON_U.68K,Comix Zone (USA).gen
CrackDown_USA.SGD,Crack Down (USA).gen
Crying_USA.SGD,Bio Hazard Battle (USA).gen
DECAP_UE.68K,DEcapAttack (USA).gen
DYNAHEAD_J.68K,Dynamite Headdy (Japan).bin
DYNAHEAD_UE.68K,Dynamite Headdy (USA).gen
ECCO2_U.68K,Ecco - The Tides of Time (USA).gen
eccojr.smd,Ecco Jr. (USA).gen
ECCO_UE.68K,Ecco the Dolphin (USA).gen
ESWAT_U.68K,ESWAT - City Under Siege (USA).gen
EternalChampions_USA.SGD,Eternal Champions (USA).gen
FATALLAB_JU.68K,Fatal Labyrinth (USA).gen
FLICKY_UE.68K,Flicky (USA).gen
GAING_UE.68K,Gain Ground (USA).gen
GalaxyForceII_UE.SGD,Galaxy Force II (USA).gen
GAXE2_W.68K,Golden Axe II (World).gen
GAXE3_J.68K,Golden Axe III (Japan).bin
GAXE_W.68K,Golden Axe (World).gen
Gunstar Heroes U.bin,Gunstar Heroes (USA).gen
KIDCHAM_UE.68K,Kid Chameleon (USA).gen
LandStalker_USA.SGD,Landstalker (USA).gen
LightCrusader_USA.SGD,Light Crusader (USA).gen
MonsterLair_JUE.SGD,Wonder Boy III - Monster Lair (Europe).md
MonsterWorld3.SGD,Wonder Boy V - Monster World III (Japan).bin
MonsterWorld3_USA.SGD,Wonder Boy in Monster World (USA).gen
PhantasyStar2_UE_GreenCrossFix.SGD,Phantasy Star II (USA).gen
PhantasyStar3_USA.SGD,Phantasy Star III - Generations of Doom (USA).gen
PhantasyStar4.SGD,Phantasy Star IV (USA).gen
RISTAR_UE.68K,Ristar (USA).gen
ROBOTNIK_U.68K,Dr. Robotnik's Mean Bean Machine (USA).gen
ShadowDancer.SGD,Shadow Dancer - The Secret of Shinobi (World).gen
SHINING2_U.68K,Shining Force II (USA).gen
SHININGD_UE.68K,Shining in the Darkness (USA).gen
SHININGF_U.68K,Shining Force (USA).gen
SHINOBI3_U.68K,Shinobi III - Return of the Ninja Master (USA).gen
SONIC2_W.68K,Sonic The Hedgehog 2 (World).gen
SONIC3D_UE.68K,Sonic 3D Blast ~ Sonic 3D Flickies' Island (USA).gen
Sonic_Knuckles_wSonic3.bin,Sonic & Knuckles + Sonic The Hedgehog 3 (World).gen
SONICSPI_U.68K,Sonic The Hedgehog Spinball (USA).gen
SONIC_W.68K,Sonic The Hedgehog (World).gen
sov.smd,Sword of Vermilion (USA).gen
SPACEHARRIERII.bin,Space Harrier II (World).gen
STHUNDER_W.68K,Super Thunder Blade (World).gen
STREETS2_U.68K,Streets of Rage 2 (USA).gen
STREETS3_E.68K,Streets of Rage 3 (Europe).md
STREETS3_J.68K,Bare Knuckle III (Japan).bin
STREETS3_U.68K,Streets of Rage 3 (USA).gen
STREETS_W.68K,Streets of Rage - Bare Knuckle - Ikari no Tetsuken (World).gen
TheSuperShinobi_JUE.SGD,The Revenge of Shinobi (USA).gen
ToeJamEarl.SGD,ToeJam & Earl (World).gen
ToeJamEarl2_USA.SGD,ToeJam & Earl in Panic on Funkotron (USA).gen
VECTMAN2_U.68K,Vectorman 2 (USA).gen
VECTMAN_UE.68K,Vectorman (USA).gen
VIRTUAFIGHTER2.bin,Virtua Fighter 2 (USA).gen

After saving and closing the CSV file, next up, it’s time to write a script that will rename the files:

nano segaclassicsrename.sh

#!/bin/bash
IFS=","
while read f1 f2
do
echo "rename from : $f1"
echo "to : $f2"
mv $f1 "$f2"
echo "done"
done < segaclassicslist.csv

After saving and closing the script, all that remains is to make it executable and run it:

chmod +x ./segaclassicsrename.sh
./segaclassicsrename.sh

If everything goes according to plan, the new filenames should be more straightforward.

Conclusion

Questions? Comments? Let me know, thanks for reading and laters.

Partagez / Share