Extracting ROMs from Sega Mega Drive & Genesis Classics bought on Steam on Linux Mint 18.3
This post is also available in: Franç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.).
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).
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).
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.