I am no programmer but I like to do it for my own purpose and entertainment. As in earlier posts I said:

Excuse me, I am just liking to use the SkiFree source code for my very own purpose. The purpose is basically adding my own enemies and stuff to it (with it's own functions) rather than replacing the sprites for already existing stuff and characters using software such as decompilers.

I have made concept art for my own game. Here it is below:

enter image description here

enter image description here

[![enter image description here][3]][3]

enter image description here

[enter image description here][5]

enter image description here

enter image description here

I started this project in 2020. It is only after reading this on the official SkiFree site.

In 1993 I started working on Version 2 of SkiFree, which would have slightly more realistic physics, multi-player, network play, robot opponents, and sounds. I got about half of those things done (split screen/keyboard multiplayer, very crude robots, and sound), but managed to get the physics completely screwed up to the point where it was no longer playable. At about the same time I also lost the original source code and got distracted by other projects, so SkiFree sort of went into permanent stasis at version 1.0 - Chris Pirih

As you can see, I felt upset about the developer so I am willing not to remake his project but only to add new additions (including a status bar below and a menu above) as seen in the concept art.

I am happy to thank the creator of skifree_decomp for having my three year wish to come true.

*Note - Now there is a problem... I downloaded Microsoft Visual C++ 6.0 Standard from WinWorld and installed it. I fixed some code errors and when I was building the executable, this happened. Now what can I do? How can I follow those instructions.

  1. Convert functions to C
  2. Convert data to C
  3. Make sure all functions exactly match with the original binary
  4. Make sure data segments match the original exactly

*Update - I tried it again and it works, ok!


1 Answer 1


this is not about reverse engineering, you need to ask on stackoverflow about Windows/C programming

to the "Progess" you talking about

[x] Convert functions to C
[x] Convert data to C
[ ] Make sure all functions exactly match with the original binary
[ ] Make sure data segments match the original exactly

for the first two: the author already done the very hard manual work to convert the disassembly to C code (there is no C src or something readable in the binary - its all reduced down to the very needs of the CPU) - that "seems" to be a perfect match because the game is working and not crashing

the not marked todos are the principle of reversing the assembler to C to make it 100% binary compatible to the original exe to proove that the code is 100% correctly translated - very time consuming process which needs very deep understanding of how the originally used compiler is generating machine-code from the original C code - this is the only way to proove 100% that the C code is function identical - but that is that much out of your ability that you shouldn't even try to help with that (for that you need to know the deep levels of the old compiler, very much about assembler, and you should be hell fluent with C to come up with serveral variants to get the original compiler generate the very same machine-code): read through this blogs: https://neuviemeporte.github.io/ - the "Hunting for the Right Compiler" parts, to get a vague feeling of what you need to do

if you can't fix a simple linker problem then you are years away from doing a full reverse engineering project (like the last two steps) - its even hardcore complex for a multi-years full time developer working in that area

so just depend your project on the ~3k lines of already reversed, and well readable C code, that seems good enough, ask on stackoverflow/reddit, make it compile, extend to your needs

Not the answer you're looking for? Browse other questions tagged or ask your own question.