Live data from Hacker News

Rewriting wipEout

phoboslab.org

21–30 of 64 posts

Re: Rewriting wipEout

#22

> The PSX devkits came with a library called LIBGPU, which handled the rendering. Since the PSX GPU didn't have a z-buffer, all primitives you wanted to draw (triangles, quads and sprites) needed to be submitted into an “ordering table” or OT for short. This table had (typically) 8192 slots allowing for 8192 different z-levels. The GPU would then rasterize the list back to front. The result would not be perfect (in s…

So when you're drawing triangles on the PSX, do you basically get the GTE hardware to figure out your coordinates, before putting those into the appropriately indexed packet?

I'm guessing this explains the PSX-specific artefacts you would see when rotated triangles would "clip" into each other at the seams of models. The ordering would just come from the average Z coord of the plane.

Re: Rewriting wipEout

#23
It's funny there aren't any texture packs for the original WipeOut yet.

It would be good if this code would could would work with whatever the standard format for texture packs on PS1 emulators is.

Re: Rewriting wipEout

#24
post #15

I've lately been playing Redout ( Redout: Enhanced Edition ) on the Steam Deck, and it is a quite fun game in the spirit of the old Wipeout game. Consider giving it a go if you are into that sort of speed-over-everything-else racing games!

I've been also enjoying GRIP racing, which while it's a bit more conventional and has wheels, (follow up to Rollcage) gives me similar pleasure. It's very fast, simple, and the gravity is often just a suggestion.

Re: Rewriting wipEout

#25
Its always so fascinating to see source code from console games of the 5th generation when most started using C vs assembly. The ratio of lines of code to "game" for something like this or Mario 64 just seems so incredibly high.

Re: Rewriting wipEout

#26

> The PSX devkits came with a library called LIBGPU, which handled the rendering. Since the PSX GPU didn't have a z-buffer, all primitives you wanted to draw (triangles, quads and sprites) needed to be submitted into an “ordering table” or OT for short. This table had (typically) 8192 slots allowing for 8192 different z-levels. The GPU would then rasterize the list back to front. The result would not be perfect (in s…

So when you're drawing triangles on the PSX, do you basically get the GTE hardware to figure out your coordinates, before putting those into the appropriately indexed packet? I'm guessing this explains the PSX-specific artefacts you would see when rotated triangles would "clip" into each other at the seams of models. The ordering would just come from the average Z coord of the plane.

You are right: unlike modern platforms with vertex shading capabilities, the geometry pipeline runs entirely on the CPU and GTE. The GPU is a "black box" that operates exclusively in screen space and only gets access to transformed X/Y coordinates, which is also why it cannot calculate the depth of each pixel and use it to apply perspective correction to projected textures [1].

[1] https://en.wikipedia.org/wiki/Texture_mapping#Affine_texture...

Re: Rewriting wipEout

#27

I loved everything about Wipeout, except the racing. The controls where impossible and the difficulty ridiculous. But the music, the art style, the concept and attitude of that game was awesome. I spent many hours playing it on PSX as an early teenager.

I agree

Re: Rewriting wipEout

#28

Earlier quoted context omitted.

So when you're drawing triangles on the PSX, do you basically get the GTE hardware to figure out your coordinates, before putting those into the appropriately indexed packet? I'm guessing this explains the PSX-specific artefacts you would see when rotated triangles would "clip" into each other at the seams of models. The ordering would just come from the average Z coord of the plane.

You are right: unlike modern platforms with vertex shading capabilities, the geometry pipeline runs entirely on the CPU and GTE. The GPU is a "black box" that operates exclusively in screen space and only gets access to transformed X/Y coordinates, which is also why it cannot calculate the depth of each pixel and use it to apply perspective correction to projected textures [1]. [1] https://en.wikipedia.org/wiki/Textu…

I wonder how perspective corrected texture mapping works on emulators.

Maybe the coordinate values passed from GTE to GPU are "shadowed" with extra data about the transformation, that is then retrieved further down the pipeline

I suppose there could be multiple approaches

Re: Rewriting wipEout

#29

WOW! Just a `git clone`, download and unpack the .zip with the assets (end of the blog post), type `make` and it compiles on Linux without warnings into `wipegame`, run it and it works first time! You need a joypad/joystick, I was surprised that I could plug it in after the game had started and it picked it up, insted of having to restart the game as I remember being the case with other games on Linux years ago.

what controller did you use? my dualshock 2 with usb adapter is not being picked up surprisingly.

Re: Rewriting wipEout

#30

WOW! Just a `git clone`, download and unpack the .zip with the assets (end of the blog post), type `make` and it compiles on Linux without warnings into `wipegame`, run it and it works first time! You need a joypad/joystick, I was surprised that I could plug it in after the game had started and it picked it up, insted of having to restart the game as I remember being the case with other games on Linux years ago.

what controller did you use? my dualshock 2 with usb adapter is not being picked up surprisingly.

It is the Apollo Joypad (re-release of the SpeedLink Xeox Pro, http://www.apollo-computer.com/peripherals.php#Joypads) that I bought because it is compatible with the Vampire Amiga V4+ which means it has a very standard protocol, and it is set to DirectInput mode: it has a physical switch between Xinput and DirectInput mode.

I guess any proper DirectInput joypad would work just the same.

Post reply on HN