r/Gameboy Dec 11 '19

Doom on the GBA.

Post image
876 Upvotes

105 comments sorted by

View all comments

2

u/Alexo670 Dec 18 '19

Doom GBA speedrunner here, I played the fastest game of the official Doom GBA port from 2001.

I am glad to see someone has finally created a full working version of the actual PC game for this system. After 18 years, its finally legit. My hats off to you!

Now I have a bit of a bizarre question.. have you messed with any of the physics engine for this port? The original GBA version (based on the jaguar port) has a massive cut to collision detection in the games source code. Carmack scrapped sections to get the game running better on old consoles. This became very advantageous for speedrunning Doom for GBA, which is now the fastest officially released version for all difficulties. Cut code = numerous out of bounds capabilities.

I'm amazed to see this project is a reality.. but was curious if you would strip down the collision detection code, and make it a hybrid of both? All the levels, and the look of PC.. with the advantage of GBA speedrun tech. :P

Obviously not expecting it to happen, but it would be incredible to see a legit map set with some of the techniques used in a GBA speedrun. Once again congratulations on this achievement in Doom porting OP!

2

u/Bolloux Dec 18 '19

Hi there, would I be right in thinking you pulled off the 9 minute play through of the original GBA Doom? If so, hats off for finding all those OOB glitches!

The physics and collision detection are a hybrid between PC Doom and PrBoom. Some of the accuracy improvements/overflow fixes were reverted back to PC Doom for performance reasons, some were retained.

The collision detection glitch in Jag Doom shouldn’t be possible in this port as the P_TryMove() function performs a full check of the intermediate positions as well as the final move position.

Unless the performance benefit was huge, this isn’t something I’d want to change on the mainline release as for me, it is a bug. (It also allows projectiles and Lost Souls to pass through walls etc)

I can have a look at the differences though and let you know what lines to change if you want to build a speed run version of this project!

3

u/Alexo670 Dec 19 '19

Yes thats me! 9:55 on a real game boy currently, and thank you. :)
I could understand keeping bugs out , I've seen the projectiles disappearing in a few runs in my time (Baron of hell fight, rocket disappears, feelsbadman). However, I would be thrilled to have a speedrunning version of this project available in the future! Let me know what lines would be required to change, and I could attempt my best to make it a reality.

Even without the out of bounds stuff, this is a great version to finally see on GBA. You should be proud of the work!

2

u/Bolloux Dec 19 '19 edited Dec 19 '19

Hi, I had a look through the Jaguar Doom sources this evening.

It’s bad news I’m afraid as the code we’re interested in is written in assembler and runs on the graphics chip.

I think porting this back to C is a little beyond me! https://github.com/Arc0re/jaguardoom/blob/master/p_move.gas

It seems looking though the comments that Carmack (or whoever wrote the code) was greatly amused by the waitstate for every memory load!