415 karma · joined December 9, 2021
read from bottom up
https://www.youtube.com/watch?v=gqXTzlDZmhU
see comments on youtube
https://github.com/benstone/Microsoft-3D-Movie-Maker
there are a few that started to port: https://github.com/microsoft/Microsoft-3D-Movie-Maker/networ...
there are subtile changes between the very early studio versions but when reaching VS2005/2008 everything is fine for upgrade
hope they will every release the good old Basic Compiler bascom/basrun stuff
a executable extractor and starter for the DOS game Alpha Waves
about the game:
Moby: https://www.mobygames.com/game/dos/continuum
Youtube: https://www.youtube.com/watch?v=u9qAtVwSIV8
my project:
github: https://github.com/LowLevelMahn/alpha_waves_loader
release of the tools: https://github.com/LowLevelMahn/alpha_waves_l … g/Release-0.0.3 (the zip file)
benefits:
-for gamers: near to null (the game runs flawless in dosbox)
-for developers: a nice technical journey (see github history) for developers about reversing a dos game loader (disassembling, analysis, porting, etc.)
-for reversers: the game executables now getting uncompressed and the starting of the game is well documented
- its the perfect start if one ever wanted to reverse engineer the game code itself
if you want to try:
1. download: https://github.com/LowLevelMahn/alpha_waves_l … lease-0.0.3.zip
2. extract the (32bit windows) extractor.exe and (16bit dos) starter.exe into the Alpha Waves gaming folder
3. run extract.exe with the path to progs.cc1 as first parameter "extractor.exe c:\games\alpha"
4. run starter.exe under real DOS/32bit Windows or Dosbox with "starter.exe vga adlib"
refresh your childhood memories
there is a string struct with this inner char s is super-evil
in kernel.h
/\* all strings on the stack will have this format. */
typedef struct {
unsigned int l; /* length of string */
char s; /* string itself \*/
// the rest of the string data
} string;
string get allocated by malloc(sizeof(string)+stringlen+1)
and member char s is then used as the first char + the rest chars from the attached memorythe memory managment is overall a little dirty and i think it will take some time for a experienced C developer to get that clean and running with todays compiler/checks etc.
Debian 3, 3.1, 4, 5?
In general, long compilation times are mostly attributed by
the complexity of things (algorithms) that compilers are
trying to do for you in order to produce machine code and
not because there's a lack of standardized build system (a
bad idea) nor because of existence of headers.
that is not true - most of the project i worked for suffered from header parsing a lot - sometimes more then 50%, in 100k-1MioK lines of code projects
many C++ developer tend to think that the code generation is the time consuming part but that is less true - you will see if you start benchmarking the compilation with todays tools available in Clang and VS2019+Why:
Stunts 1.0 MT15.DRV seems to sound better than the 1.1 version (some strange slowdowns happens with 1.1) i want to understand what the differences are and how to port that stuff to C
Features:
Assembler source can be rebuild to 100% binary exact version of the original game drivers
Assembler can be partially mixed with C ported functions or all functions can be replaced by C code
It was a fun project with near to non relevance for anyone :)