QUOTE (Synergy @ Mar 19 2010, 08:00 AM)

Sure. As Special Stages consist of five types (straight, turn left/right, hill up/down - these are mirror images but it simplifies the code somewhat at the cost of a tiny bit of memory), I've defined five Bezier curves that represent them, as well as a tube profile curve that is basically a semi-circle representing the profile of the solid. The semi-circle is then extruded down the Bezier curve to produce a mesh for each piece which is then stored for the five base types. During play, the level representation is read continually at discrete intervals, and the tube generator maintains the mesh by attaching the appropriate base type at the end (either by welding vertices directly for straight-to-straight, or otherwise by stitching - placing the new piece at a slight distance and generating faces between them for a more visually pleasing result) as well as removing old geometry behind the camera. The Bezier curves are also used for the camera movement. When new pieces are generated, the level data also provides object data for rings and mines for that piece (item type, z-depth along the piece with 12 distinct distances, and angle, which can be from 0 to 360 in 32 steps, allowing for 16 objects in a "ring" formation, like the circle of mines in the original).
Movement works pretty nicely but I'm not totally satisfied as it doesn't quite match the original in terms of the slipping or friction at the sides. From the screenshot, the two players are on circular (1D) frames and jumping detaches the player from it, allowing them to move in 2D for that brief time; we detect whether the player has hit the frame again by finding the frame circle Y from the player X, and if the player Y has exceeded this, it re-attaches the player on the frame at the right spot. I'd be interested to know if anyone has tackled the player movement in Special Stages from the disassembly of the original.
That sounds really cool!
You are using the 3D hardware more than I would have, and that might be the winning technique. You get the Z buffer for free by letting the camera follow the Bezier curves.
So all objects right now are in 3D? I suggest using billboards
http://francis.dupont.free.fr/coindev/english/effet3d.htm since most artists can do sprites better than 3D models.
To answer the disassembly. I don't know if anyone has looked into the special stage code. Let's focus on the texturing of the half-tube first.
This post has been edited by LOst: 19 March 2010 - 08:03 AM