Merge branch 'accurate' into portable

This commit is contained in:
Clownacy 2020-10-25 20:54:02 +00:00
commit 5981034354

View file

@ -31,28 +31,28 @@ Supported platforms include...
When Pixel made Cave Story, he compiled the original Windows EXE with no When Pixel made Cave Story, he compiled the original Windows EXE with no
optimisations. This left the generated assembly code extremely verbose and easy optimisations. This left the generated assembly code extremely verbose and easy
to read. It also made the code very decompiler-friendly, since the assembly to read. It also made the code very decompiler-friendly, since the assembly
could be mapped directly back to the original C(++) code. could be mapped directly back to the original C++ code.
Technically, this alone made a decompilation feasible, as was the case for [the Technically, this alone made a decompilation feasible, as was the case for [the
Super Mario 64 decompilation project](https://github.com/n64decomp/sm64) - Super Mario 64 decompilation project](https://github.com/n64decomp/sm64) -
however, there was more to be found... however, there was more to be found...
In 2007, a Linux port of Cave Story was made by Peter Mackay and Simon Parzer. In 2007, a Linux port of Cave Story was made by Simon Parzer and Peter Mackay.
Details about it can be found on [Peter's old blog](https://web.archive.org/web/20070911202919/http://aaiiee.wordpress.com:80/). Details about it can be found on [Peter's old blog](https://web.archive.org/web/20070911202919/http://aaiiee.wordpress.com:80/).
This port received an update in 2011, including two shiny new executables. What This port received an update in 2011, including two shiny new executables. What
Peter and Simon didn't realise was that they left huge amounts of debugging they didn't realise was that they left huge amounts of debugging information in
information in these executables, including the names of every C++ source file, these executables, including the names of every C++ source file, as well as the
as well as the variables, functions, and structs they contained. variables, functions, and structs they contained.
This was a goldmine of information about not just the game's inner-workings, but This was a goldmine of information about not just the game's inner-workings, but
its _source code._ This is the same lucky-break [the Diablo decompilation project](https://github.com/diasurgical/devilution) its _source code._ This is the same lucky-break [the Diablo decompilation project](https://github.com/diasurgical/devilution)
had. With it, much of the game's code was pre-documented and explained _for_ us, had. With it, much of the game's code was pre-documented and explained, saving
saving us the effort of doing it ourselves. In fact, the combination of us the effort of doing it ourselves. In fact, the combination of
easy-to-decompile code, and a near-full set of function/variable names, reduced easy-to-decompile code, and a near-full set of function/variable names, reduced
much of the decompilation process to mere copy-paste. much of the decompilation process to mere copy-paste.
To top it all off, some of Cave Story's original source code would eventually To top it all off, some of Cave Story's original source code would eventually
see the light of day... see the light of day:
In early 2018, the Organya music engine was [released on GitHub](https://github.com/shbow/organya) In early 2018, the Organya music engine was [released on GitHub](https://github.com/shbow/organya)
by an old friend of Pixel's. On top of providing an insight into Pixel's coding by an old friend of Pixel's. On top of providing an insight into Pixel's coding
@ -60,7 +60,7 @@ style, this helped with figuring out one of the most complex parts of Cave
Story's codebase. Story's codebase.
And... that's it! It's not often that a game this decompilable comes along, so And... that's it! It's not often that a game this decompilable comes along, so
I'm glad that Cave Story was one of them. [Patching a dusty old executable from 2004 has its downsides](https://github.com/Clownacy/Cave-Story-Mod-Loader/blob/master/src/mods/graphics_enhancement/widescreen/patch_camera.c). I'm glad that Cave Story was one of them. [Patching a dusty old executable from 2005 sucks](https://github.com/Clownacy/Cave-Story-Mod-Loader/blob/master/src/mods/graphics_enhancement/widescreen/patch_camera.c).
## Dependencies ## Dependencies