Game Objects and Level Format
I've made a lot of progress. After a lot of hard work I've figured out the internal object format used by OutRun for most sprites and game objects which is a big breakthrough. I understand the complete format, with the exception of a single bit that eludes me right now. The internal format is a lot more complex than the values finally written directly to the sprite hardware, as it includes aspects like:
- Both Screen Co-ordinates & World co-ordinates
- Sprite Z Values
- Independent priority settings in relation to the road layer and other sprites
- Specific Sprite routines to use
- X/Y Draw anchors
- Sprite Type
- Frame Number
- The way in which the sprites utilise a series of lookup tables to extract more properties
- All the usual things you'd expect: h-flip values, palette settings and so forth.
- Bits to denote the traffic's position in relation to other traffic. This is used to control its speed and lane changing behaviour.
- Information regarding the side of the road the traffic has spawned on
I also understand the internal format used to store the scenery data for the entire set of levels. Writing a quick utility to spit this out in some kind of visual form would be an interesting exercise and a way of verifying this. Whilst all the code is documented and commented, looking at it actually hurts by brain. I'll follow up on this later.