Game engine recreations and source ports: Difference between revisions
Ilyagredasov (talk | contribs) Tags: Mobile edit Mobile web edit Advanced mobile edit |
Clean up |
||
| Line 20: | Line 20: | ||
=== Original game === | === Original game === | ||
While the game was originally developed, while preparing the game logic and general behavior, the developers wrote the game code (the so called '''source code''') in '''a high-level programming language''' (like C) that was then converted via '''an assembler''' to machine code (sequences of zeroes and ones, also called '''assembly'''), which varies depending on the target CPU architecture (x86 for PC Windows games, ARM for mobile phones or the Nintendo GBA / DS / 3DS, PowerPC for MacOs or the Nintendo Wii, MIPS for the N64 or the PS1, and so on...) and the result is '''the executable file of the game'''. If everything goes right, the published game will only have that '''executable'''. | While the game was originally developed, while preparing the game logic and general behavior, the developers wrote the game code (the so called '''source code''') in '''a high-level programming language''' (like C) that was then converted via '''an assembler''' to machine code (sequences of zeroes and ones, also called '''assembly'''), which varies depending on the target CPU architecture (x86 for PC Windows games, ARM for mobile phones or the Nintendo GBA / DS / 3DS, PowerPC for MacOs or the Nintendo Wii, MIPS for the N64 or the PS1, and so on...) and the result is '''the executable file of the game'''. If everything goes right, the published game will only have that '''executable'''. | ||
Some details may vary in practice. Developers of older systems were desperate for ROM space and system performance, and the assemblers just weren't high quality, so they just '''wrote directly in assembly.''' In those cases, the official source codes that were eventually released or leaked just contain opcode names for the CPU instructions with label names and developer comments. | Some details may vary in practice. Developers of older systems were desperate for ROM space and system performance, and the assemblers just weren't high quality, so they just '''wrote directly in assembly.''' In those cases, the official source codes that were eventually released or leaked just contain opcode names for the CPU instructions with label names and developer comments. | ||
In other cases, especially visual novels but also many modern game engines (middleware game engines), the developer didn't use a '''programming language''', but rather a '''scripting language''', alongside a '''game engine''' developed by someone else. That scripting language was human-readable just like a source code, but was included with the published game. In that case, the '''executable''' was just there to '''parse''' that scripting and call the appropriate behavior. | In other cases, especially visual novels but also many modern game engines (middleware game engines), the developer didn't use a '''programming language''', but rather a '''scripting language''', alongside a '''game engine''' developed by someone else. That scripting language was human-readable just like a source code, but was included with the published game. In that case, the '''executable''' was just there to '''parse''' that scripting and call the appropriate behavior. | ||
| Line 64: | Line 64: | ||
=== Disassemblies (Source Code Only) === | === Disassemblies (Source Code Only) === | ||
For games that don't have an official source code released, fans will only have the released game files (the '''binary''') to work with. However, it's still possible to figure out its source code through a reverse-engineering process known as '''disassembly'''. This takes the '''game executable''', which is a '''binary file''' (a sequence of ones and zeroes), and tries to generate a '''disassembly''', which is the human-readable '''"source code"''', sort of. It will have recognizable functions, variables, instructions, calls to known input/output hardware specific to that console (graphic calls, gamepad poll reads, updating the color memory, etc). | For games that don't have an official source code released, fans will only have the released game files (the '''binary''') to work with. However, it's still possible to figure out its source code through a reverse-engineering process known as '''disassembly'''. This takes the '''game executable''', which is a '''binary file''' (a sequence of ones and zeroes), and tries to generate a '''disassembly''', which is the human-readable '''"source code"''', sort of. It will have recognizable functions, variables, instructions, calls to known input/output hardware specific to that console (graphic calls, gamepad poll reads, updating the color memory, etc). | ||
However, that "source code" will be of little use in that state. It's written in '''assembly''' rather than a high-level language (like C), which is hardly reader-friendly when it comes to complex programs. Unlike with source codes, there won't be any variable or function names; temporary labels that use their hexadecimal position in the binary or memory will be used instead, and the fan researching the game will have to come up with names for them as he figures their purpose after painstaking guesstimates and trials-by-fire. There won't be any developer comments either. It's also possible that the "source code" output is complete garbage if it was generated with false assumptions: the tool will try to disassemble parts of the executable that aren't '''actual code''', or will work in the wrong memory mode causing garbage writes/reads, or work with the wrong assembly language... | However, that "source code" will be of little use in that state. It's written in '''assembly''' rather than a high-level language (like C), which is hardly reader-friendly when it comes to complex programs. Unlike with source codes, there won't be any variable or function names; temporary labels that use their hexadecimal position in the binary or memory will be used instead, and the fan researching the game will have to come up with names for them as he figures their purpose after painstaking guesstimates and trials-by-fire. There won't be any developer comments either. It's also possible that the "source code" output is complete garbage if it was generated with false assumptions: the tool will try to disassemble parts of the executable that aren't '''actual code''', or will work in the wrong memory mode causing garbage writes/reads, or work with the wrong assembly language... | ||
| Line 98: | Line 98: | ||
When multiple games rely on the '''same game engine''', it might be worthwhile to recreate the '''game engine''' on the new target platform, and then have it '''load the game assets''' from the original game files. | When multiple games rely on the '''same game engine''', it might be worthwhile to recreate the '''game engine''' on the new target platform, and then have it '''load the game assets''' from the original game files. | ||
How the developers go about this process depends on their philosophy. | How the developers go about this process depends on their philosophy. | ||
They may think it's enough to develop the new '''game engine''' as a '''fan game''' that's compatible with the original files. The abstract features of the projects are implemented going by how components are expected to be used rather than how the game actually uses them. This forgoes game assembly, and in the case some official source code was released, avoids any discussions about clean-room design, albeit obsessing over propriety or property in fan projects is an exercise in futility and wasted goodwill. This isn't always bad, however, as it might be more desirable to redevelop a more optimized version of the engine than a more authentic one. | They may think it's enough to develop the new '''game engine''' as a '''fan game''' that's compatible with the original files. The abstract features of the projects are implemented going by how components are expected to be used rather than how the game actually uses them. This forgoes game assembly, and in the case some official source code was released, avoids any discussions about clean-room design, albeit obsessing over propriety or property in fan projects is an exercise in futility and wasted goodwill. This isn't always bad, however, as it might be more desirable to redevelop a more optimized version of the engine than a more authentic one. | ||
| Line 107: | Line 107: | ||
=== Source port (Port) === | === Source port (Port) === | ||
A port based on an official source code release. | A port based on an official source code release. | ||
Typically, it will be a hassle-free '''game executable''' and its assets''',''' or as a '''romhack that modifies the original game executable to the new game executable.''' That's because anyone using official source codes operates with a different philosophy than fan reverse engineering projects. | Typically, it will be a hassle-free '''game executable''' and its assets''',''' or as a '''romhack that modifies the original game executable to the new game executable.''' That's because anyone using official source codes operates with a different philosophy than fan reverse engineering projects. | ||
| Line 119: | Line 119: | ||
=== Recomp port (Port) === | === Recomp port (Port) === | ||
A different hybrid approach to make ports fast, based on a '''disassembly''' project, and on existing '''emulation research'''. | A different hybrid approach to make ports fast, based on a '''disassembly''' project, and on existing '''emulation research'''. | ||
This approach is sold as '''an alternative to emulation''' for underpowered target systems, that would '''run the game at full speed.''' Instead of a full emulator, '''a native program''' is generated instead. The game's code is converted to assembly code for the target platform's CPU architecture, while all hardware calls to the original hardware (graphics, sound, etc) is redirected to the equivalent APIs in the target hardware just like with emulators... or rather that part is taken exactly from existing emulators. The goal isn't some deep dive in the game secrets or advanced mod support: they '''just want a port that works, and one that works better than an existing emulator.''' | This approach is sold as '''an alternative to emulation''' for underpowered target systems, that would '''run the game at full speed.''' Instead of a full emulator, '''a native program''' is generated instead. The game's code is converted to assembly code for the target platform's CPU architecture, while all hardware calls to the original hardware (graphics, sound, etc) is redirected to the equivalent APIs in the target hardware just like with emulators... or rather that part is taken exactly from existing emulators. The goal isn't some deep dive in the game secrets or advanced mod support: they '''just want a port that works, and one that works better than an existing emulator.''' | ||
This isn't unheard of in official ports: Super Mario 3D All-Stars (Switch) relied on this for Super Mario Galaxy. Many older PC ports of PS1 games emulated the PS1 graphics and sound engine while the game code was reimplemented as native PC code. | This isn't unheard of in official ports: Super Mario 3D All-Stars (Switch) relied on this for Super Mario Galaxy. Many older PC ports of PS1 games emulated the PS1 graphics and sound engine while the game code was reimplemented as native PC code. | ||
To make these recomp projects, a so-called recompiler tool is used to generate the new source code of the native game executable. When games have ongoing concurrent decomp and recomp projects, the recomp project will be less time consuming, and can make use of the decomp project's progress. However, the port won't be perfect without even more modifications. Recomp ports that halfass this aspect will typically exhibit graphical bugs similar to very early emulators for that console, and will have crashes and softlocks for untested functions. So even though it takes way less time to get a working executable, the work to make it as playable as the original (or even better) will be as hard as a decomp port. | To make these recomp projects, a so-called recompiler tool is used to generate the new source code of the native game executable. When games have ongoing concurrent decomp and recomp projects, the recomp project will be less time consuming, and can make use of the decomp project's progress. However, the port won't be perfect without even more modifications. Recomp ports that halfass this aspect will typically exhibit graphical bugs similar to very early emulators for that console, and will have crashes and softlocks for untested functions. So even though it takes way less time to get a working executable, the work to make it as playable as the original (or even better) will be as hard as a decomp port. | ||
| Line 132: | Line 132: | ||
It has certainly its legitimate uses for unofficial port projects. A main obstacle is telling apart valid code and simulate its execution without having to emulate it. Some code can be quickly labeled with inferences based on a known hardware call. In that sense, it can make "quick work" of a recomp port and achieve 100% recomp progress faster. The texture upscale algorithms for HD texture packs are also another form of A.I. as well. We can say it achieved it benefited that project in that situation. Opposition to A.I. usage in that case would not be from a place of concern for the player, but over ethical concerns: corporate A.I. politics and their impact on humanity, plagiarism, and more specifically whether the resulting project is still legal or clean-room or respecting its license. The player may or may not care about these concerns, but they're not the main topic of this article. | It has certainly its legitimate uses for unofficial port projects. A main obstacle is telling apart valid code and simulate its execution without having to emulate it. Some code can be quickly labeled with inferences based on a known hardware call. In that sense, it can make "quick work" of a recomp port and achieve 100% recomp progress faster. The texture upscale algorithms for HD texture packs are also another form of A.I. as well. We can say it achieved it benefited that project in that situation. Opposition to A.I. usage in that case would not be from a place of concern for the player, but over ethical concerns: corporate A.I. politics and their impact on humanity, plagiarism, and more specifically whether the resulting project is still legal or clean-room or respecting its license. The player may or may not care about these concerns, but they're not the main topic of this article. | ||
The other face of A.I.-assisted projects are the so-called AI slop ports, pumped en masse as engagement farming, and aggressively promoted with various ulterior motives. Which brings us to the question: '''"Why would I use a decomp / recomp instead of emulation?"''' or '''"Why would I play this game using this port instead of that version?"''' | The other face of A.I.-assisted projects are the so-called AI slop ports, pumped en masse as engagement farming, and aggressively promoted with various ulterior motives. Which brings us to the question: '''"Why would I use a decomp / recomp instead of emulation?"''' or '''"Why would I play this game using this port instead of that version?"''' | ||
AI-slop ports often fundamentally fail this simple test. But it's not necessarily an issue with the game, the target platform, the decomp/recomp approaches, emulation, or even automation of repetitive programming tasks (the so-called A.I.). It's more often than not an issue with that specific port, and that specific author, and a certain snake oil seller mentality that doesn't put the player's best interests in mind, or care whether this new project is better or useful. | AI-slop ports often fundamentally fail this simple test. But it's not necessarily an issue with the game, the target platform, the decomp/recomp approaches, emulation, or even automation of repetitive programming tasks (the so-called A.I.). It's more often than not an issue with that specific port, and that specific author, and a certain snake oil seller mentality that doesn't put the player's best interests in mind, or care whether this new project is better or useful. | ||
Ports of 16-bit games targeting the 3DS that struggle to hit full framerate, while an option to experience these same games in full speed with no bugs exist on that same hardware, officially provided no less. A recomp alpha of a N64 game released as a "full release" with graphical bugs unseen in N64 emulation since UltraHLE in 1999, even Nintendo's own crappy official emulators, while a fullspeed widescreen 60 FPS way to play that game exist on the same platform. Decomp ports that no longer clean up glitches in the decomp source or its chaotic code but will still advertise "mod support". And so on, and so forth. A lot of noise, misinformation and bad advice that tries to attack the credibility of emulation or game mods or fan ports just to humor the whims of a few loud voices. | Ports of 16-bit games targeting the 3DS that struggle to hit full framerate, while an option to experience these same games in full speed with no bugs exist on that same hardware, officially provided no less. A recomp alpha of a N64 game released as a "full release" with graphical bugs unseen in N64 emulation since UltraHLE in 1999, even Nintendo's own crappy official emulators, while a fullspeed widescreen 60 FPS way to play that game exist on the same platform. Decomp ports that no longer clean up glitches in the decomp source or its chaotic code but will still advertise "mod support". And so on, and so forth. A lot of noise, misinformation and bad advice that tries to attack the credibility of emulation or game mods or fan ports just to humor the whims of a few loud voices. | ||
It can be useful to ask, then: "'''Did I try emulation before for this platform? Is what I actually want an emulator with launcher support and widescreen / 60 FPS patches?"''' and '''"Which features does this recomp / decomp port build ''currently'' offer, that aren't offered by existing emulators?"''' and, if the AI use is a red flag for you, "'''Did the author of the project show any original programming skill before, or is it just 100% vibe-coding?"''' These questions will be enough to answer whether a specific project is worth your time and the missed advantages from emulation (save state support, convenient cheat codes, etc) | It can be useful to ask, then: "'''Did I try emulation before for this platform? Is what I actually want an emulator with launcher support and widescreen / 60 FPS patches?"''' and '''"Which features does this recomp / decomp port build ''currently'' offer, that aren't offered by existing emulators?"''' and, if the AI use is a red flag for you, "'''Did the author of the project show any original programming skill before, or is it just 100% vibe-coding?"''' These questions will be enough to answer whether a specific project is worth your time and the missed advantages from emulation (save state support, convenient cheat codes, etc) | ||
== Multi-game engine == | == Multi-game engine == | ||
| Line 246: | Line 245: | ||
|Blood, Duke Nukem 3D, Powerslave/Exhumed, Redneck Rampage, Redneck Rampage Rides Again, Rock 'n' Shaolin/Legend of the Seven Paladins 3D, Shadow Warrior, TekWar, Witchaven, Witchaven II | |Blood, Duke Nukem 3D, Powerslave/Exhumed, Redneck Rampage, Redneck Rampage Rides Again, Rock 'n' Shaolin/Legend of the Seven Paladins 3D, Shadow Warrior, TekWar, Witchaven, Witchaven II | ||
|- | |- | ||
|[https://www.eduke32.com EDuke32] | |[https://www.eduke32.com EDuke32] | ||
VoidSW <ref>VoidSW is included with EDuke32</ref> | VoidSW <ref>VoidSW is included with EDuke32</ref> | ||
| align="left" |{{Icon|Windows|Linux|macOS|FreeBSD}} | | align="left" |{{Icon|Windows|Linux|macOS|FreeBSD}} | ||
| Line 252: | Line 251: | ||
|{{Ya}} | |{{Ya}} | ||
|{{Ya}} | |{{Ya}} | ||
|''EDuke32:'' Duke Nukem 3D, Ion Fury, NAM, World War II GI | |''EDuke32:'' Duke Nukem 3D, Ion Fury, NAM, World War II GI | ||
''VoidSW:'' Shadow Warrior | ''VoidSW:'' Shadow Warrior | ||
|- | |- | ||
| Line 262: | Line 261: | ||
|{{Ya}} | |{{Ya}} | ||
|{{Na}} <small>(WIP)</small> | |{{Na}} <small>(WIP)</small> | ||
|Retro Games | |Retro Games | ||
(Metroid Prime 1–3 & Donkey Kong Country Returns) | (Metroid Prime 1–3 & Donkey Kong Country Returns) | ||
|- | |- | ||
| Line 272: | Line 271: | ||
|{{Ya}} | |{{Ya}} | ||
|{{Na}} <small>(WIP)</small> | |{{Na}} <small>(WIP)</small> | ||
|GoldSrc Games | |GoldSrc Games | ||
(Half-Life, Counter-Strike 1.5, Team Fortress etc..) | (Half-Life, Counter-Strike 1.5, Team Fortress etc..) | ||
|- | |- | ||
| Line 291: | Line 290: | ||
|[https://nukeykt.retrohost.net RedNukem] | |[https://nukeykt.retrohost.net RedNukem] | ||
| align="left" |{{Icon|Windows|Linux}} | | align="left" |{{Icon|Windows|Linux}} | ||
|[https://github.com/NBlood/NBlood/releases git] | |[https://github.com/NBlood/NBlood/releases git]||{{Na}} | ||
|{{Na}} | |||
|{{Ya}} | |{{Ya}} | ||
|{{Ya}} | |{{Ya}} | ||
| Line 379: | Line 377: | ||
|- | |- | ||
|[https://marbleblast.online MBHaxe] | |[https://marbleblast.online MBHaxe] | ||
| align="left" |{{Icon|Windows | | align="left" |{{Icon|Windows|Linux|macOS|Android|iOS|Web}} | ||
|[https://github.com/RandomityGuy/MBHaxe git]||{{Na}} | |[https://github.com/RandomityGuy/MBHaxe git]||{{Na}} | ||
|{{Ya}} | |{{Ya}} | ||
| Line 502: | Line 500: | ||
|{{Ya}} | |{{Ya}} | ||
|{{Ya}} | |{{Ya}} | ||
|Infinity Engine | |Infinity Engine | ||
(Baldur's Gate series (1998–2001), Planescape: Torment, Icewind Dale series (2000–2002)) | (Baldur's Gate series (1998–2001), Planescape: Torment, Icewind Dale series (2000–2002)) | ||
|- | |- | ||
| Line 558: | Line 556: | ||
|{{~}} | |{{~}} | ||
|{{Na}} <small>(WIP)</small> | |{{Na}} <small>(WIP)</small> | ||
|BioWare's Aurora engine & derivatives | |BioWare's Aurora engine & derivatives | ||
(BioWare's 7 PC/console RPGs, Sonic Chronicles: The Dark Brotherhood, The Witcher) | (BioWare's 7 PC/console RPGs, Sonic Chronicles: The Dark Brotherhood, The Witcher) | ||
|} | |} | ||
| Line 577: | Line 575: | ||
|{{Ya}} | |{{Ya}} | ||
|{{~}} | |{{~}} | ||
|Genie Engine | |Genie Engine | ||
(Age of Empires, AoE II (HD), Star Wars: Galactic Battlegrounds) | (Age of Empires, AoE II (HD), Star Wars: Galactic Battlegrounds) | ||
|- | |- | ||
| Line 585: | Line 583: | ||
|{{Ya}} | |{{Ya}} | ||
|{{Ya}} | |{{Ya}} | ||
|Early Westwood games (Command & Conquer Tiberian Dawn, C&C: Red Alert, Dune 2000). | |Early Westwood games (Command & Conquer Tiberian Dawn, C&C: Red Alert, Dune 2000). | ||
''Soon:'' 2nd-gen C&C (C&C: Tiberian Sun). | ''Soon:'' 2nd-gen C&C (C&C: Tiberian Sun). | ||
|- | |- | ||
| Line 593: | Line 591: | ||
|{{~}} | |{{~}} | ||
|{{Na}} <small>(WIP)</small> | |{{Na}} <small>(WIP)</small> | ||
|EA's Command & Conquer games | |EA's Command & Conquer games | ||
(C&C: Generals, C&C: Generals - Zero Hour) | (C&C: Generals, C&C: Generals - Zero Hour) | ||
''Soon:'' The Battle for Middle-earth series (2004–2006), C&C 3 + expansion. | ''Soon:'' The Battle for Middle-earth series (2004–2006), C&C 3 + expansion. | ||
|- | |- | ||
| Line 604: | Line 603: | ||
|''[https://github.com/Wargus/wargus Wargus] (v3.3.2):'' Warcraft II: Tides of Darkness + Beyond the Dark Portal, [https://stratagus.com/aleona.html Aleona's Tale] | |''[https://github.com/Wargus/wargus Wargus] (v3.3.2):'' Warcraft II: Tides of Darkness + Beyond the Dark Portal, [https://stratagus.com/aleona.html Aleona's Tale] | ||
''[https://github.com/Wargus/war1gus War1gus] (v3.3.2):'' Warcraft: Orcs & Humans | ''[https://github.com/Wargus/war1gus War1gus] (v3.3.2):'' Warcraft: Orcs & Humans | ||
''[https://github.com/Wargus/stargus Stargus] (v3.3.0):'' StarCraft (partially playable as of v2.4.1) | ''[https://github.com/Wargus/stargus Stargus] (v3.3.0):'' StarCraft (partially playable as of v2.4.1) | ||
Games natively made on the Stratagus engine: [https://stratagus.com/aleona.html Aleona's Tale] (Wargus), [https://github.com/SenhorFlibble/Astroseries Astroseries], [https://www.boswars.org Bos Wars], [https://github.com/Andrettin/Wyrmsun Wyrmsun] | Games natively made on the Stratagus engine: [https://stratagus.com/aleona.html Aleona's Tale] (Wargus), [https://github.com/SenhorFlibble/Astroseries Astroseries], [https://www.boswars.org Bos Wars], [https://github.com/Andrettin/Wyrmsun Wyrmsun] | ||
|- | |- | ||
| Line 612: | Line 613: | ||
|{{Ya}} | |{{Ya}} | ||
|{{Ya}} | |{{Ya}} | ||
|Early Westwood games (Command & Conquer, C&C: Red Alert, Dune 2000). | |Early Westwood games (Command & Conquer, C&C: Red Alert, Dune 2000). | ||
Based on the official source code release by EA, with the goal of serving as a portable drop-in replacement for the original executables as well as a platform for mod developers. | Based on the official source code release by EA, with the goal of serving as a portable drop-in replacement for the original executables as well as a platform for mod developers. | ||
|} | |} | ||
| Line 656: | Line 657: | ||
|{{Ya}} | |{{Ya}} | ||
|{{Ya}} | |{{Ya}} | ||
|LucasArts: Maniac Mansion, Zak McKracken, Indiana Jones (Last Crusade & Fate of Atlantis & Infernal Machine & Desktop Adventures), Loom, Monkey Island (1 & 2 & Curse & Escape), Day of the Tentacle, Sam & Max, Full Throttle, The Dig, Grim Fandango, Rebel Assault (1 & 2), X-Wing, Tie-Fighter, Dark Forces, Dark Forces 2 Jedi Knight, Mysteries of the Sith, Shadows of the Empire, Yoda Stories, | |LucasArts: Maniac Mansion, Zak McKracken, Indiana Jones (Last Crusade & Fate of Atlantis & Infernal Machine & Desktop Adventures), Loom, Monkey Island (1 & 2 & Curse & Escape), Day of the Tentacle, Sam & Max, Full Throttle, The Dig, Grim Fandango, Rebel Assault (1 & 2), X-Wing, Tie-Fighter, Dark Forces, Dark Forces 2 Jedi Knight, Mysteries of the Sith, Shadows of the Empire, Yoda Stories, Mortimer and the Riddles of the Medallion, Outlaws (+13 more in the 3.0 beta) | ||
|- | |- | ||
|[https://github.com/jorio Jorio's ports of Pangea Software games] | |[https://github.com/jorio Jorio's ports of Pangea Software games] | ||
| Line 886: | Line 887: | ||
[https://www.dxx-rebirth.com DXX-Rebirth] | [https://www.dxx-rebirth.com DXX-Rebirth] | ||
| align="left" |{{Icon|Windows|Linux|macOS}} | | align="left" |{{Icon|Windows|Linux|macOS}} | ||
|[[sourceforge:projects/d2x-xl|1.18.77]] | |[[sourceforge:projects/d2x-xl|1.18.77]] | ||
[https://github.com/dxx-rebirth/dxx-rebirth/releases git] | [https://github.com/dxx-rebirth/dxx-rebirth/releases git] | ||
|{{Na}} | |{{Na}} | ||
| Line 1,264: | Line 1,265: | ||
|[https://gbatemp.net/threads/release-wii-doom-wii-heretic-wii-hexen-wii-strife-all-in-one-proper.374400/ Wii-DOOM] | |[https://gbatemp.net/threads/release-wii-doom-wii-heretic-wii-hexen-wii-strife-all-in-one-proper.374400/ Wii-DOOM] | ||
[https://gbatemp.net/threads/release-wii-doom-wii-heretic-wii-hexen-wii-strife-all-in-one-proper.374400/ Wii-HERETIC] | [https://gbatemp.net/threads/release-wii-doom-wii-heretic-wii-hexen-wii-strife-all-in-one-proper.374400/ Wii-HERETIC] | ||
[https://gbatemp.net/threads/release-wii-doom-wii-heretic-wii-hexen-wii-strife-all-in-one-proper.374400/ Wii-HEXEN] | [https://gbatemp.net/threads/release-wii-doom-wii-heretic-wii-hexen-wii-strife-all-in-one-proper.374400/ Wii-HEXEN] | ||
[https://gbatemp.net/threads/release-wii-doom-wii-heretic-wii-hexen-wii-strife-all-in-one-proper.374400/ Wii-STRIFE] | [https://gbatemp.net/threads/release-wii-doom-wii-heretic-wii-hexen-wii-strife-all-in-one-proper.374400/ Wii-STRIFE] | ||
| align="left" |{{Icon|Wii}} | | align="left" |{{Icon|Wii}} | ||
| Line 1,272: | Line 1,275: | ||
|''Wii-DOOM:'' Doom I–II, Final Doom | |''Wii-DOOM:'' Doom I–II, Final Doom | ||
''Wii-HERETIC:'' Heretic | ''Wii-HERETIC:'' Heretic | ||
''Wii-HEXEN:'' Hexen | ''Wii-HEXEN:'' Hexen | ||
''Wii-STRIFE:'' Strife: Quest for the Sigil | ''Wii-STRIFE:'' Strife: Quest for the Sigil | ||
|- | |- | ||
| Line 1,573: | Line 1,578: | ||
|[https://mog.jorito.net The Maze of Galious remake] | |[https://mog.jorito.net The Maze of Galious remake] | ||
|- | |- | ||
|[https://nxengine.sourceforge.io/ NXEngine] | |[https://nxengine.sourceforge.io/ NXEngine] | ||
[https://github.com/nxengine/nxengine-evo nxengine-evo] | [https://github.com/nxengine/nxengine-evo nxengine-evo] | ||
| align="left" |{{Icon|Windows|Linux|macOS}} | | align="left" |{{Icon|Windows|Linux|macOS}} | ||
|[http://nxengine.sourceforge.net 1.0.0.6] | |[http://nxengine.sourceforge.net 1.0.0.6] | ||
[https://github.com/nxengine/nxengine-evo/releases git] | [https://github.com/nxengine/nxengine-evo/releases git] | ||
|{{Ya}} | |{{Ya}} | ||
| Line 1,704: | Line 1,709: | ||
|smw | |smw | ||
| align="left" |{{Icon|Windows|Linux|macOS|LinuxARM|Switch}} | | align="left" |{{Icon|Windows|Linux|macOS|LinuxARM|Switch}} | ||
|[https://github.com/stephini/SMAS_Launcher git] | |[https://github.com/stephini/SMAS_Launcher git] | ||
[https://www.gamebrew.org/wiki/Super_Mario_World_Switch Switch] | [https://www.gamebrew.org/wiki/Super_Mario_World_Switch Switch] | ||
|{{Na}} | |{{Na}} | ||
| Line 1,779: | Line 1,784: | ||
|- | |- | ||
|CTRPC<ref>Executable title in video is "CTRPC" the video titles however are titled "Crash Team Racing - PC Port"</ref> | |CTRPC<ref>Executable title in video is "CTRPC" the video titles however are titled "Crash Team Racing - PC Port"</ref> | ||
| align="left" |{{Icon|Windows}}|| | | align="left" |{{Icon|Windows}} | ||
|{{Na}} | |WIP||{{Na}} | ||
|{{Ya}} | |{{Ya}} | ||
|{{~}}<ref group="note">According to the description of the {{YouTubeVideo|hCwSkmAp7f8|Progress Update #3}} video, the PC Port is now 70% finished</ref> | |{{~}}<ref group="note">According to the description of the {{YouTubeVideo|hCwSkmAp7f8|Progress Update #3}} video, the PC Port is now 70% finished</ref> | ||
| Line 2,112: | Line 2,117: | ||
|[https://devilutionx.com/ DevilutionX] | |[https://devilutionx.com/ DevilutionX] | ||
| align="left" |{{Icon|Windows|Linux|macOS|FreeBSD|Haiku|AmigaOS}} | | align="left" |{{Icon|Windows|Linux|macOS|FreeBSD|Haiku|AmigaOS}} | ||
{{Icon|Xbox|Android|iOS|3DS|Vita | {{Icon|Xbox|Android|iOS|3DS|Vita|XB1|XboxSXS|Switch}} | ||
|[https://github.com/diasurgical/devilutionX/releases git]||{{Na}} | |[https://github.com/diasurgical/devilutionX/releases git]||{{Na}} | ||
|{{Ya}} | |{{Ya}} | ||
| Line 2,324: | Line 2,328: | ||
|- | |- | ||
|[https://www.classicube.net/ ClassiCube] | |[https://www.classicube.net/ ClassiCube] | ||
| align="left" |{{Icon|Windows|Mac|Linux|FreeBSD|NetBSD | | align="left" |{{Icon|Windows|Mac|Linux|FreeBSD|NetBSD|Android|iOS|RPi|360|Xbox|Web|Classic Mac OS|Haiku|DOS|Switch|Dreamcast|Wii|GameCube|3DS|PS3|PS2|Vita|PSP|Wii U|NDS|N64|PS1|Symbian|Saturn}} | ||
|[https://www.classicube.net/download/ 1.3.7]||{{Na}} | |[https://www.classicube.net/download/ 1.3.7]||{{Na}} | ||
|{{Ya}} | |{{Ya}} | ||
| Line 2,379: | Line 2,383: | ||
[https://gbatemp.net/threads/revc-wiiu-gta-vice-city-wii-u-port.592998/ reVC] (Wii U) | [https://gbatemp.net/threads/revc-wiiu-gta-vice-city-wii-u-port.592998/ reVC] (Wii U) | ||
|{{Na}} | |{{Na}} | ||
|{{Na}} | |{{Na}} | ||
| Line 2,548: | Line 2,551: | ||
|terminal-recall | |terminal-recall | ||
| align="left" |{{Icon|Windows|Linux|macOS}} | | align="left" |{{Icon|Windows|Linux|macOS}} | ||
|[https://github.com/jtrfp/terminal-recall git] | |[https://github.com/jtrfp/terminal-recall git] | ||
[[sourceforge:projects/terminal-recall/files/nightly-builds/|Nightly Builds]] | [[sourceforge:projects/terminal-recall/files/nightly-builds/|Nightly Builds]] | ||
|{{Na}} | |{{Na}} | ||
| Line 2,962: | Line 2,965: | ||
|[[PlayStation emulators|PlayStation]] (whole library) | |[[PlayStation emulators|PlayStation]] (whole library) | ||
|[https://github.com/mstan/psxrecomp git]||{{Ya}} | |[https://github.com/mstan/psxrecomp git]||{{Ya}} | ||
|[https://github.com/mstan/psxrecomp#setup PC] | |[https://github.com/mstan/psxrecomp#setup PC] | ||
|[https://github.com/mstan/TombaRecomp Tomba: Recompiled] | |[https://github.com/mstan/TombaRecomp Tomba: Recompiled] | ||
[https://github.com/mstan/MegaManX6Recomp Mega Man X6: Recompiled] | [https://github.com/mstan/MegaManX6Recomp Mega Man X6: Recompiled] | ||
| Line 3,018: | Line 3,021: | ||
: <u>Curated Lists:</u> | : <u>Curated Lists:</u> | ||
:* [https://thingsiplay.game.blog/2020/03/13/open-source-drm-free-games/ Tuncay | :* [https://thingsiplay.game.blog/2020/03/13/open-source-drm-free-games/ Tuncay D.'s recommendations for OS, DRM-free games] (thingsiplay.game.blog. Mar 13, 2020. Not for game recreations. Some selections have similarities to old commercial games.) | ||
:* [https://thingsiplay.game.blog/2020/05/19/open-source-and-alike-games/ Tuncay | :* [https://thingsiplay.game.blog/2020/05/19/open-source-and-alike-games/ Tuncay D.'s recommendations for OS & alike games] (thingsiplay.game.blog. May 19, 2020. Focused on game recreations and engines similar to other games.) | ||
'''Specific gaming systems''' | '''Specific gaming systems''' | ||