MEGAROMSERVER

Want to cut to the chase? Skip to the install instructions if you don’t care about the prologue.


First off, whats the big deal with saving old software?

It is the common life cycle of software to get lost to time or forgotten about, and keeping the works of talented individuals alive can be beneficial for all kinds of people down the road, unbeknownst to its original creator who probably commissioned it for a large corporation. Efforts of large corporations hiding old software or requiring licenses, then to adapting to full fledged copy protection and combative legal measures towards individuals and companies who contribute to cracking it, just makes the problem worse because it makes software rare and obscure. Archiving content you own a physical copy of should be encouraged in our online world because more and more, the cost of physical software and games copies get jacked up by collectors. Archiving content is really an art; to track down, organize and share what you found with others is so important for the longevity of computer software, even if the original creator may of placed restrictions on it, or straight up no longer support its development. Sometimes companies hold heavy restrictions on their software for way longer than it would be relevant to do so, sometimes decades pass and companies still accept orders for unsupported software which they haven’t even actively supported for years upon years. This brings the question: should it even be allowed for companies to hold such tight restrictions on the redistribution of their source code when they’re rolling in dough from cooperate licensing? You can read some more about the Ethics of digital rights management. Poking around through old computer operating systems and programs can be a fun computer exercise, and making this hobby criminal goes against the UNIX philosophy and is the wrong route to curbing illegal software redistribution. If you are interested in obtaining old software, games and bios files, keep reading to see how to access my personal collection.

My own personal archive

I have created an archive, it has been around for about 2 years, but never has it been semi available for the outside world to access until now. I call it MEGAROMSERVER. The archive is a FTP based server with a hand picked selection of Old computer software, games, apps, office, and of course video game ROMS, and emulator BIOS files. Here is some info about what is do be expected inside this very special collection:

A full archive/set of (nearly) every retro system supported by retropie. There is a lot of systems supported by retropie (53 at the time of this post), so as you can imagine some compromises were made in the name of storage space. The entire archive comes in at less than 0.5 terabytes, about 320 Gigabytes, some sections can be downloaded independently depending on what you need. Some game collections are incomplete and are still being added to. These include the disk reading game consoles. (Sega Cd, Wii, playstation 1-2-3, Dreamcast) The emphasis of this collection is on retro computing and gaming software for retropie: a front end for emulation, so I tried to leave no compromises in compatibility but left out tons of ISO’s on the newer consoles. the total size of this collection can theoretically support up to 2 TB but will most likely never exceed 1 TB. This is a best of the best over the years collection, not a data hoarders dump, or a huge piracy database, so expect organization, and completeness, just like any other software+game collection of this type.

How is it different? How does it work?

My collection has been hand picked to be ran on various emulators. I tried almost all the games and software on my own hardware to make sure it works, it can be a rock solid starter collection with lots of rarities and hidden gems for those into retro emulation. One major problem of collections similar to mine is that they have some custom data structure format. Not this one though, I followed the retropie directory layout so a single drag and drop would be all that is necessary to get these files up and going into a emulator. You can’t access it through a sketchy website like many like it, but rather an intuitive advanced bash script for true privacy and anonymization. It uses a system devised of a main wireguard server and a process that creates and extracts a wireguard server config but uses prebuilt wireguard tools to generate a client side key pair for use on the server, then establishes a connection to my database over this unique and encrypted tunnel in which it does very basic ftp file transfers with a virtual ip address, of which my database shares the subnet. In short I created a way to download my archive and its contents without many restrictions that are normally put in place on ROM websites, mainly file transfer speeds. DNS lookups are set by an external resolver using DNS crypt and known not to log internet traffic, this is only used when the tunnel is active, the tunnel will be deactivated automatically when it is no longed needed. The tunnel uses the wireguard protocol so you can expect full encryption and protection against your internet provider. For a person who needs content for retropie emulation, or a person not interested in directly ripping or pirating, this could be a easy way to get into the craft, or just to play some old games.


Technical details

MEGAROMSERVER.sh is an all in one encrypted download manager written in bash shell for Linux systems. It can encrypt client traffic and DNS lookups to download files anonymously from my centralized server directly to a local Linux system. The script will start by looking for USB block devices on the client system. If found, these block devices are used later in the download process to download directly to a SCSI disk if you choose to do so. Keep in mind if you want to use this feature, the script assumes the address definition is an sda type device under the Linux file system structure, therefore, sdb, sdc, etc, would be unrecognized. After some prerequisites are done installing, the script connects over a wireguard tunnel and the user is met with a linux dialog menu that can be used to browse and set a local download location, the user is then greeted with a selection menu that can be used initate the download to the selected destination. The script will disconnect the tunnel when it is done installing or when the user sends an interrupt signal. The purpose of this script was originally to download certian files over an encrpted tunnel from my server anonymously, but since then the project as become more advanced and has gotten improvements and features to better fit the scope of the project.

MEGAROMSERVER.sh is open source, but the main package is a private github repository, however a cloned repository is available here. Or below:


Use Cases

  • Avoiding sketchy piracy websites.
  • To quickly and securely download Rom files, Iso files, and Bios files for unsupported video game and computer systems.
  • To download emulation files directly to your emulation box, rather than shuffling files around.
  • For complete control of what files you want, and also where you want it to go, either locally, or across the network.
  • To save time creating, deploying, or adding to a emulation systems rom collection, or even a jailbroken ps3, mobile device or xbox 360’s rom collection! Sky is the limit as to how files can arrive in a desired destination, such as where you keep your rom and bios files. MEGAROMSERVER.sh simply acts as a gateway and a download manager for this purpose.

How do I access this!?

Read the readme file for a shortened version of the next two sections.

Pretty much, you need a bare metal Linux machine, or a virtual machine or even an isolated container, like docker. This script will not run natively on windows, Mac, or BSD, for that you would need a full isolated container or virtual machine. (The script is too advanced for say: git bash on windows and other bash emulators.) You simply would run a single command in a terminal and MEGAROMSERVER.sh script will start. (open source, and not specifically intrusive). There is a ton of advantages doing it this way such as speed, and reliability, Above all it is a better solution than opening my archive to a potentially malicious party with anonymous ftp.


Access instructions for MEGAROMSERVER

Reference the readme if you get stuck or want a quicker summary.

Download the index for a complete list of files and directories with sizes.

Prerequisites:

  1. Either a bare metal machine, or a virtualized Linux system. (Ubuntu, or debain based work out of the box)
  2. Network connection.
  3. Account with Sudo privledges
  4. Systemd, Bash, and a terminal emulator.

Systemd is likely preinstalled on your Linux distribution and if not can be swapped in for your current initialization system. If you are unsure, run the following command and it will output an error if you do not have systemd installed:

pgrep systemd >/dev/null && echo init system: systemd

If you use a bare metal, or virtual machine you just must use systemd as your initialization system for this script to work. If you use windows, by default, docker does not use systemd. A workaround exists for getting systemd initialization system onto a docker container, use the following docker image: “ubuntu-systemd”. This script will not run under a bash emulator like git-bash.

For an advanced setup, one could mount a network share prior, and select its mount location on this screen to download to a network attached rom collection, or to any network shared folder. Note this if you want to download directly to a rom folder on a emulation box on another pc. For a basic setup, its best to choose a local location, such as a Downloads/ or Home/ folder or even an external storage media. It really depends where you want your files to live, as to allow an emulation program to read them.

At this point you should have a Linux system setup with a basic set of tools, systemd, and a command line interface. Now, copy and paste the command below to run MEGAROMSERVER.sh:

sudo apt-get install git -y && git clone https://JakeTurner616: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@github.com/JakeTurner616/MEGAROMSERVER.sh && chmod +x MEGAROMSERVER.sh/autowireguard.sh && sudo bash MEGAROMSERVER.sh/autowireguard.sh

Use the arrow keys to move the cursor and space to select a download location, then arrow over to accept and press enter.

Next you can either mount the remote share to your system, or skip this with a yes/no prompt. If you choose yes the server will temporarily be mounted, and a second file selection menu will open pointed at the local mountpoint. The user can then browse the server and select a specific file or directory to download. If you choose no this section will be skipped.

Browsing the remote filesystem with MEGAROMSERVER.sh

The next screen is a selection menu, either select a directory(1-4), or use a custom one (5) if you mounted the server locally. Press enter and the downloads will start.

We’re all done now. After the downloads complete, the script will clean up after itself. The files can now be easily moved around to be accessed by your emulators.

Works cited

“Unix Philosophy.” Wikipedia, Wikimedia Foundation, 26 Aug. 2021, en.wikipedia.org/wiki/Unix_philosophy.

“Anonymous File Transfer Protocol.” The IT Law Wiki, itlaw.wikia.org/wiki/Anonymous_file_transfer_protocol.

https://retropie.org.uk/about/systems/

Leave a Reply

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