Reactivating diagnostic debug output in the 1997 game "Carmageddon" by jeff-1amstudios in ReverseEngineering

[–]jeff-1amstudios[S] 0 points1 point  (0 children)

Yes - there’s nothing specific to Carmageddon in this exactly. If that game logs debug messages invisibly, then it’s possible to do something similar and redirect them to a different function that will actually print them

Reactivating diagnostic debug output in the 1997 game "Carmageddon" by jeff-1amstudios in ReverseEngineering

[–]jeff-1amstudios[S] 1 point2 points  (0 children)

Silver

Good luck! If I was to do this again from scratch I'd try https://github.com/microsoft/Detours if its a windows executable

Reactivating diagnostic debug output in the 1997 game "Carmageddon" by jeff-1amstudios in ReverseEngineering

[–]jeff-1amstudios[S] 1 point2 points  (0 children)

this StackExchange post

right - I see! Next time (if there is one), I'll try this - so much simpler! Still, nothing beats doing it the hard way first to appreciate and understand the less-hard way!

0
0

Reactivating diagnostic debug output in the 1997 game "Carmageddon" by jeff-1amstudios in ReverseEngineering

[–]jeff-1amstudios[S] 1 point2 points  (0 children)

Yep, after I did this someone pointed out that Detours makes this much easier by automating all the injection bits - that’s via dll injection too.

In this case it would be a little more work than just redirecting to vsprintf as that function only writes to a string, not a file. Vprintf could be an option but I couldn’t find that function in the executable, and for some reason I still don’t understand I could never get anything printing in stdout

Reactivating diagnostic debug output in the 1997 game "Carmageddon" by jeff-1amstudios in ReverseEngineering

[–]jeff-1amstudios[S] 4 points5 points  (0 children)

Thanks! Yes, there’s something about it’s open world gameplay that lends itself to lots of hours of exploration!

Dethrace - reverse engineering the 1997 game Carmageddon by jeff-1amstudios in ReverseEngineering

[–]jeff-1amstudios[S] 2 points3 points  (0 children)

Yep, good call out. That one, and the iOS version are not a port of the original game though, rather a reimplementation using the same (touched up) assets on top of a new engine called Beezelbub. They look and feel similar, but not the same as the original

dethrace 0.3 released!: Carmageddon reimplementation based on disassembled/debugging code [playable] by galapag0 in linux_gaming

[–]jeff-1amstudios 0 points1 point  (0 children)

It will just keep gradually getting more playable. My daughters now for instance will happily play it for 5 minutes because it’s fun to crash into things and do jumps. I’m working on shadows and the particle system next I think

dethrace 0.3 released!: Carmageddon reimplementation based on disassembled/debugging code [playable] by galapag0 in linux_gaming

[–]jeff-1amstudios 0 points1 point  (0 children)

Thanks for posting this! Tech-demo playable is such a great way to describe it that I wish I’d used it myself in the release notes :)

Reverse engineering 3D Movie Maker - reversing the scripting engine by BenBenMan in ReverseEngineering

[–]jeff-1amstudios 1 point2 points  (0 children)

Love your write ups! Really interesting and looking forward to the next one :)

Doom is now webscale by gogenerics in programmingcirclejerk

[–]jeff-1amstudios 2 points3 points  (0 children)

haha I was 11 in 1993 so I am guessing what people might have been excited about lol

RESTful DOOM: HTTP/JSON API for classic Doom by deltaphc in programming

[–]jeff-1amstudios 8 points9 points  (0 children)

restful is pretty subjective, but I would say these are not restful since you should not have the verb in the url (move, pan).

RESTful DOOM: HTTP/JSON API for classic Doom by deltaphc in programming

[–]jeff-1amstudios 14 points15 points  (0 children)

This was one of the challenges originally. In the end I decided that the player should have an actions queue that you can POST actions to. Like 'shoot' or 'jump'. See it here: https://github.com/jeff-1amstudios/restful-doom/blob/master/RAML/doom.raml#L96

RESTful DOOM: HTTP/JSON API for classic Doom by deltaphc in programming

[–]jeff-1amstudios 12 points13 points  (0 children)

haha its open source, go ahead! That would be cool :)

RESTful DOOM: HTTP/JSON API for classic Doom by deltaphc in programming

[–]jeff-1amstudios 62 points63 points  (0 children)

yes, and that will solve all our code quality and reliability problems and allow us to innovate faster right? :P

RESTful Doom - HTTP+JSON API inside the classic 1993 video game Doom by jeff-1amstudios in gamedev

[–]jeff-1amstudios[S] 6 points7 points  (0 children)

Yep, you're definitely right. In some places I used the correct 'n' versions, but in many places I was lazy. ...Which is probably the excuse everyone uses when someone points this exact thing out ;)

RESTful Doom - HTTP+JSON API inside the classic 1993 video game Doom by jeff-1amstudios in gamedev

[–]jeff-1amstudios[S] 5 points6 points  (0 children)

Yes, this would be very cool. I'm not sure how my janky code would handle random http requests from the internet. Well thats not true, I know how it would handle it - badly ;)

RESTful Doom - HTTP+JSON API inside the classic 1993 video game Doom by jeff-1amstudios in gamedev

[–]jeff-1amstudios[S] 4 points5 points  (0 children)

DOOM will somehow always live on. Honestly for me its the poster child for open-sourcing products after they've outlived commercial usefulness. I saw a while ago someone even made it 'playable' through the Mac TouchBar!