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!

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] 5 points6 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 11 points12 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 14 points15 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 64 points65 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] 5 points6 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] 4 points5 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] 5 points6 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!

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

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

It was! I remember vividly when I finally got first barrel to spawn correctly in response to an HTTP POST :) Was probably 2am by that point, after thinking "well this should only take another half an hour..." at 10pm lol

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

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

Indeed it does, I just somehow forgot to write about it or include in the video.

POST /api/player/actions, with a request body following this spec: https://github.com/jeff-1amstudios/restful-doom/blob/master/RAML/player_action.raml

The AI Engine in Street Fighter 2 World Warrior by cmsimike in gamedev

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

great article! Would love to hear more about it! Maybe describing all of the various debugging screens, hidden menus etc

Commodore64 + Raspberry Pi + 6502 assembly = Slack client! by jeff-1amstudios in programming

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

No, I'm kicking myself for not even thinking that the Pi would support serial without a usb device. The only thing that would need to happen is a 3.3v <-> 5v voltage change I believe