SR (Static Recompile) - Le Bottin des Jeux Linux

SR (Static Recompile)

🗃️ Specifications

📰 Title: SR (Static Recompile) 🕹️ / 🛠️ Type: Tool
🗃️ Genre: Emulation 🚦 Status: 05. Tested & Working (status)
🏷️ Category: Emulation ➤ Engine ➤ MICROSOFT 🌍️ Browser version:
🔖 Tags: Emulation; Binary translation; MICROSOFT; Multi-platform 📦️ Package Name:
🐣️ Approx. start: 2016-10-09 📦️ Arch package:
🐓️ Latest: 2023-08-13 📦️ RPM package:
📍️ Version: Latest: Warcraft v1.3.0 / Dev: c3589b6 📦️ Deb package:
🏛️ License type: 🕊️ Libre 📦️ Flatpak package:
🏛️ License: MIT | GPL-2+ | LGPL-2.1+ 📦️ AppImage package:
🏝️ Perspective: Third & First person 📦️ Snap package:
👁️ Visual: 2D & 3D ⚙️ Generic binary: ✓
⏱️ Pacing: Real Time 📄️ Source: ✓
👫️ Played: Single 📱️ PDA support:
🎖️ This record: 5 stars 🕳️ Not used:
🎀️ Game design: 5 stars 👫️ Contrib.: goupildb
🎰️ ID: 16311 🐛️ Created: 2023-04-02
🐜️ Updated: 2023-08-15

📖️ Summary

[en]: A libre and multi-platform tool for binary translation of DOS and Windows executables to various platforms (Windows, Linux x86, Linux x64, arm64). For the supported platforms and games, it produces native code and eventually allows to improve the MIDI music soundtrack (MIDI plugin). The tool is composed of several modules starting from the initial executable to produce the assembler code (or llasm) used to build the final executable for the target platform. For the moment (April-2023) 4 DOS games and 2 Windows games are supported including 1 (Septerra Core) on Linux x64. [fr]: Un outil libre et multi-plateforme de recompilation statique d'exécutables DOS et Windows vers divers plateformes (Windows, Linux x86, Linux x64, arm64). Pour les plateformes et jeux supportés, il produit du code natif et permet éventuellement d'améliorer la bande son musicale MIDI (plugin MIDI). L'outil est composé de plusieurs modules partant de l'exécutable initial pour produire du code assembleur (ou llasm) utilisé pour construire l'exécutable final pour la plateforme cible. Pour l'instant (Avril-2023) 4 jeux DOS et 2 jeux Windows sont supportés dont 1 (Septerra Core) sur Linux x64.

🎥️ Videos


🕸️ Links

🏡️ Website & videos
[Homepage] [Dev site] [Features/About] [Screenshots] [Videos t(202xxx) gd(202xxx) gu(202xxx) r(202xxx) lp(202xxx) ht(202xxx) g(202xxx) g[fr](202xxx) g[de](202xxx) g[ru](202xxx) g[pl](202xxx) g[cz](202xxx) g[sp](202xxx) g[pt](202xxx) g[it](202xxx) g[tr](202xxx)] [WIKI] [FAQ] [RSS] [Changelog 1 2 3]

💰 Commercial: [Support their work (Donate)]
💰 Commercial: (Windows, for contents extraction)
• 💥️ Albion (a party-based RPG and a spiritual successor to Amber games, by Blue Byte, 1995): [GOG] [Steam] [Wikipedia [fr] [en] [de]] t(202304) r(201801) g(201508)
• 💥️ X-COM: UFO Defense (the first of many X-Com games, by MicroProse, 1994): [GOG] [Steam] [Wikipedia [fr] [en] [de]] t(200610) g(201408)
• 💥️ X-COM: Terror from the Deep (a sequel to X-COM: UFO Defense & the 2nd game of the series, by MicroProse, 1995): [GOG] [Steam] [Wikipedia [fr] [en] [de]] t(202005) g(201702)
• 💥️ Warcraft: Orcs & Humans (a fantasy RTS, the beginning of this gaming franchise, by Blizzard Entertainment, 1994): [GOG] [Steam] [Wikipedia [fr] [en] [de]] t(201903) g(201406)
• 💥️ Septerra Core: Legacy of the Creator (an anime / manga, fantasy, sci-fi / futuristic, turn-based & jrpg theme, by Valkyrie Studios, 1999): [GOG] [Steam] [Wikipedia [fr] [en] [de]] t(201711) g(201812)
• 💥️ Battle Isle 3: Shadow of the Emperor (Battle Isle 2220: Shadow of the Emperor) (an RTS, by Blue Byte, 1995): [GOG] [Steam] [Wikipedia [fr] [en] [de]] t(201407) t(202203) g(201404)

🍩️ Resources
● Extra content
• Abandonware sites (Demo / Abandonware, Windows, for contents extraction or info):
▸ 💥️ Warcraft Orcs And Humans (a fantasy RTS, the beginning of Blizzard Entertainment’s gaming franchise, Commercial): [LTF Abandonware France [fr]] [My Abandonware] [Internet Archive]
▸ 💥️ UFO - Enemy Unknown (the first of many X-Com games, released in 1994, Commercial): [DOS Gamers] [LTF Abandonware France [fr]] [My Abandonware] [Internet Archive]
▸ 💥️ Septerra Core (an anime / manga, fantasy, sci-fi / futuristic, turn-based & jrpg theme, Commercial): [LTF Abandonware France [fr]] [My Abandonware] [Internet Archive]
▸ 💥️ Albion (a party-based RPG and a spiritual successor to Amber games, Commercial): [LTF Abandonware France [fr]] [My Abandonware] [Internet Archive 1 2]

🛠️ Technical informations
[PCGamingWiki] [MobyGames]

🐘 Social
Devs (Static Recompile Team 1 2 [fr] [en]): [Site 1 2] [Chat] [mastodon] [PeerTube] [YouTube] [PressKit] [Interview 1(202xxx) 2(202xxx)]
Devs (M-HT 1 2 [fr] [en]): [Site 1 2] [Chat] [mastodon] [PeerTube] [YouTube] [PressKit] [Interview 1(202xxx) 2(202xxx)]
The Project: [Blog] [Chat] [Forums] [mastodon] [PeerTube] [YouTube] [PressKit] [reddit] [Discord]

🐝️ Related
[Wikipedia (Binary translation) [fr] [en] [de]]
[HOLaRSE [de]]

📦️ Misc. repositories
[Repology] [pkgs.org] [Arch Linux / AUR] [openSUSE] [Debian/Ubuntu] [Flatpak] [AppImage (author's repo)] [Snap] [PortableLinuxGames]

🕵️ Reviews
[HowLongToBeat] [metacritic] [OpenCritic] [iGDB]

🕊️ Source of this Entry: [HOLaRSE [de](202304)]

🐘 Social Networking Update (on mastodon)

🛠️ Title: SR (Static Recompile)
🦊️ What's: A libre tool for binary translation of DOS and Windows executables to various platforms
🏡️ -
🐣️ https://github.com/M-HT/SR
🔖 #LinuxEmulation #BinaryTranslation
📦️ #Libre #Bin
📖 Our entry: http://www.lebottindesjeuxlinux.tuxfamily.org/en/online/lights-on/

🥁️ Update: Warcraft 1.3.0 & X-COM 1.5.0
⚗️ New features 💎
📌️ Changes: https://github.com/M-HT/SR/releases
🐘 From: https://mastodon.social/@holarse/110876898792821414
🐘 From: 📶️ https://github.com/M-HT/SR/releases.atom

🕶️ No engine logo for now, I just took a screenshot of the title to display something :)

SR is a libre and multi-platform tool for binary translation of DOS and Windows executables to various platforms (Windows, Linux x86, Linux x64, arm64). For the supported platforms and games, it produces native code and eventually allows to improve the MIDI music soundtrack (MIDI plugin). The tool is composed of several modules starting from the initial executable to produce the assembler code (or llasm) used to build the final executable for the target platform. For the moment (April-2023) 4 DOS games and 2 Windows games are supported including 1 (Septerra Core) on Linux x64.

📕 Description [en]

📕🐧"A libre tool for binary translation of DOS and Windows executables to various platforms"🐧📕

A project to statically recompile DOS and Windows game executables to create Windows or Linux (x86 or arm) versions of the games.

Following DOS games are supported:

☑ Albion
☑ X-Com: UFO Defense (UFO: Enemy Unknown)
☑ X-Com: Terror from the Deep
☑ Warcraft: Orcs & Humans

Following Windows games are supported:

☑ Septerra Core: Legacy of the Creator
☑ Battle Isle 3: Shadow of the Emperor (Battle Isle 2220: Shadow of the Emperor)

The source code is released with MIT license (except libraries, etc. by other people, which have their own license). For the purpose of using the code in GPL projects, the source code is also released with GPLv2 or later and LGPLv2.1 or later.

The projects consists of following subprojects (read the readmes in subproject directories for more information):

● SR
• The static recompiler (for DOS executables) itself.
• It takes the original executable as an input together with information about the original executable and produces x86 / arm / llasm assembler version of the executable.
• The generated x86/arm/llasm assembler version of the executable is not part of the project.

● SRW
• The static recompiler (for Windows executables) itself.
• It takes the original executable as an input together with information about the original executable and produces x86 / llasm assembler version of the executable.
• The generated x86/llasm assembler version of the executable is not part of the project.

● llasm
• Program which converts .llasm file to LLVM language-independent intermediate representation, which can be compiled to x86 / arm code.

● SR-games
• The information about the original DOS executables.

● SRW-games
• The information about the original Windows executables.

● games
• Game specific source code.
• Together with the generated assembler versions of the executables, these files can be used to build Windows or Linux (x86 or arm) versions of the games.
• Uses plugins to play (or play better) music.

● midi-libs
• Libraries that are used by plugins in midi-plugins subproject to play MIDI music.

● midi-plugins
• Plugins used by the games to play MIDI (and other types) music.

● scaler-plugins
• Plugins used by the DOS games to enlarge/enhance the displayed image.

● pycfg
• A configuration utility that can be used on Linux (sorry Windows users) to change settings in the configuration files (without editing the files).

● SR64-loader
• Loader for 64-bit versions.


Some notes:

• The project supports creating 32-bit, Windows or Linux versions of the games.
• The generated arm version is little-endian, not big-endian.
• The generated arm version supports softfp and hardfp calling conventions.
• Creating 64-bit versions is experimental.
⚬ Only Linux (x64, arm64) version of Septerra Core is working at the moment.
⚬ 64-bit versions require a loader.

📕 Description [fr]

Un outil libre de recompilation statique d'exécutables DOS et Windows vers divers plateformes, par la Static Recompile Team, initié par M-HT.
En C/Assembleur/C++.

SR est un outil libre et multi-plateforme de recompilation statique d'exécutables DOS et Windows vers divers plateformes (Windows, Linux x86, Linux x64, arm64). Pour les plateformes et jeux supportés, il produit du code natif et permet éventuellement d'améliorer la bande son musicale MIDI (plugin MIDI). L'outil est composé de plusieurs modules partant de l'exécutable initial pour produire du code assembleur (ou llasm) utilisé pour construire l'exécutable final pour la plateforme cible. Pour l'instant (Avril-2023) 4 jeux DOS et 2 jeux Windows sont supportés dont 1 (Septerra Core) sur Linux x64.


Un projet de recompilation statique des exécutables de jeux DOS et Windows pour créer des versions Windows ou Linux (x86 ou arm) des jeux.

Les jeux DOS suivants sont supportés :

☑ Albion
☑ X-Com : UFO Defense (UFO : Enemy Unknown)
☑ X-Com : Terror from the Deep (Terreur des profondeurs)
☑ Warcraft : Orcs & Humans

Les jeux Windows suivants sont pris en charge :

☑ Septerra Core : Legacy of the Creator
☑ Battle Isle 3 : Shadow of the Emperor (Battle Isle 2220 : Shadow of the Emperor)

Le code source est publié sous licence MIT (à l'exception des bibliothèques, etc. créées par d'autres personnes, qui ont leur propre licence). Dans le but d'utiliser le code dans des projets GPL, le code source est également publié sous GPLv2 ou plus récent et LGPLv2.1 ou plus récent.

Le projet se compose des sous-projets suivants (lire les readmes dans les répertoires des sous-projets pour plus d'informations) :

● SR
• Le recompilateur statique (pour les exécutables DOS) lui-même.
• Il prend l'exécutable original en entrée ainsi que des informations sur l'exécutable original et produit une version assembleur x86 / arm / llasm de l'exécutable.
• La version assembleur x86 / arm / llasm générée de l'exécutable ne fait pas partie du projet.

● SRW
• Le recompilateur statique (pour les exécutables Windows) lui-même.
• Il prend l'exécutable original comme entrée ainsi que des informations sur l'exécutable original et produit la version assembleur x86 / llasm de l'exécutable.
• La version assembleur x86/llasm générée de l'exécutable ne fait pas partie du projet.

● llasm
• Programme qui convertit le fichier .llasm en représentation intermédiaire indépendante du langage LLVM, qui peut être compilée en code x86 / arm.

● SR-games
• Les informations sur les exécutables DOS originaux.

● SRW-games
• Les informations sur les exécutables Windows originaux.

● jeux
• Code source spécifique au jeu.
• Avec les versions assembleur générées des exécutables, ces fichiers peuvent être utilisés pour construire des versions Windows ou Linux (x86 ou arm) des jeux.
• Utilise des plugins pour jouer (ou mieux jouer) de la musique.

● midi-libs
• Bibliothèques utilisées par les plugins du sous-projet midi-plugins pour jouer de la musique MIDI.

● midi-plugins
• Plugins utilisés par les jeux pour jouer de la musique MIDI (et d'autres types).

● scaler-plugins
• Plugins utilisés par les jeux DOS pour agrandir/améliorer l'image affichée.

● pycfg
• Utilitaire de configuration utilisable sous Linux (désolé pour les utilisateurs de Windows) pour modifier les paramètres des fichiers de configuration (sans éditer les fichiers).

● SR64-loader
• Chargeur pour les versions 64 bits.

Quelques remarques :

• Le projet permet de créer des versions 32 bits, Windows ou Linux des jeux.
• La version arm générée est little-endian, et non big-endian (NdT: ordre de lecture des octets).
• La version générée supporte les conventions d'appel softfp et hardfp.
• La création de versions 64 bits est expérimentale.
⚬ Seule la version Linux (x64, arm64) de Septerra Core fonctionne pour le moment.
⚬ Les versions 64 bits nécessitent un chargeur.

🚧️ Installation [fr]

🔧️ INSTALLATION :

Contraintes : Pour jouer à ce jeu vous devez disposer d'un jeu de données compatibles (voir plus bas).

▸ Installation des dépendances (en dépôt) :
• Installez les bibliothèques SDL (voir la fiche "006 - Glossaire & licences courantes" du Bottin).


⚙️ Installation à partir du binaire du jeu :

Installation à partir du binaire classique :
• (✔ v. Linux-x86-sdl2) Un binaire statique (64-bits) est disponible, il suffit de décompresser le livrable et (s'il ne l'est pas) de rendre son binaire exécutable (clic droit sous votre gestionnaire de fichier).


📄️ Installation à partir du source du jeu :
• (🧪️not_tested) Source non testé.


🏕️ Installation du contenu / des données :

• Données : Ce jeu requiert l'installation de données non livrées avec le moteur du fait d'une licence incompatible ou tout simplement pour lui permettre d'utiliser différents sets de données.

▸ Téléchargement des données :
• Téléchargez ses données sur son site (voir les sections “Commercial” ou “Resources” ci-dessus).

▸ Préparation des données (si données au format .img ou .iso) :
• Condition : vos livrables sont dans un container : fichier.img ou fichier.iso
• 1ere méthode (testé sous Nemo) : renommez votre fichier .img en .iso et sous votre gestionnaire de fichier, décompressez ce fichier via un clic droit puis “Extraire ici”.
• 2nde méthode (plus conventionnelle) :
• Dans le répertoire contenant les fichiers ci-dessus, créez un répertoire de traitement provisoire (par exemple : test/) : $ mkdir test
• Montez votre fichier .img ou .iso sur votre répertoire test/ avec la commande (à adapter si .img ou .iso) : $ sudo mount -o loop fichier.img test
↪ vous obtenez le répertoire test/contenant les fichiers de votre container.
• Créez un autre répertoire externe (en dehors du répertoire test/, exemple : test2/) : $ mkdir test2
• Copiez le contenu de votre répertoire test/ dans votre répertoire test2/
• Démontez votre répertoire test/ (à adapter si .img ou .iso) : $ sudo umount fichier.img

▸ Assemblage du moteur et des données :
• Copiez dans le répertoire racine du jeu, le(s) fichier(s) livrés avec le binaire du jeu (voir la section “Installation à partir du binaire du jeu”).


🚀️ LANCEMENT DU JEU :

▸ Classique :
• En console dans son répertoire racine lancez le script (fichier ".sh") fournit avec le binaire, avec une commande du type (à adapter) : $ ./game.sh

💡 Astuces :
• Si le script game-setup.sh ("game" est un exemple) est fourni avec le binaire, lancez-le en console : il fournit une interface permettant de paramétrer le binaire (l'équivalent de la modification du fichier ci-après, mais en plus convivial).
• OU Configurez le fichier game.cfg ("game" est un exemple) fourni avec le binaire, afin de l'adapter (paramétrages du son et du graphisme) à vous souhaits.
Exemple :
Display_ScaledWidth=1280
Display_ScaledHeight=1024
(vs 640x480)

(si disponible) Display_AdvancedScaler=xbrz
(vs normal)

🔍️ Test [fr]

🕵️ Test par goupildb (config. : Manjaro 64-bit) :
Le : 14 août 2023
⏱️ Durée du test : 60 minutes.

🎯️ Objectif de ce test : rédiger/(re)mettre à jour/valider sa notice d'installation, tester son fonctionnement et partager mes premières impressions.

📜️ Préambule :

J'étais un peu sceptique sur le fonctionnement de ces binaires/scripts. Après plusieurs mises à jour de cette fiche, j'ai eut envie d'en tester quelques-uns.

🫕️ Installation :

▸ (Albion v1.7.3) Binaire : N'A PAS TROUVE LES DONNÉES DE MON LIVRABLE. Néanmoins il est possible que ce dernier ne soit pas dans le bon format (il faudrait creuser, mais pas le temps).
▸ (X-COM v1.5.0) Binaire : FONCTIONNE.
▸ (Warcraft v1.3.0) Binaire : FONCTIONNE.
▸ (Septerra Core v1.04.0.10) Binaire : NE FONCTIONNE PAS. (libquicktime.so.2: cannot open shared object file: No such file or directory) malgré l'installation de libquicktime 1.2.4 (j'ai tenté aussi : # ln -s /usr/lib/libquicktime.so /usr/lib/libquicktime.so.2)
▸ (Battle Isle 3 v1.0.2) Binaire : NON TESTE.

👍️ Très facile à installer (on copie le livrable SR spécifique dans le répertoire du jeu), et son lancement ne pose pas de problème particulier.

🌻️ Premières impressions :

Mais (globalement) çà marche ! 🤗️ Incroyable !
Le comportement est identique au jeu d'origine, tant au niveau du son, que du comportement et graphisme (souvent tout petit par défaut, car correspond à la résolution des moniteurs de l'époque).
Mais cerise sur le gâteau, ça se change avec le script de setup fourni (avec une belle interface) ou dans le fichier de configuration avec quelques paramètres (testé ok) : génial !


🕹️ Conclusion :
Impression globale : 👍️
Encore une étonnante et fantastique collection d'outils permettant de faire revivre / redécouvrir des petites perles d'autrefois, et cela de manière native ! ❤️
👏️ ❤️ Un grand bravo et merci (notamment pour la version Linux !) à ses auteurs !