I have documented every byte of the Aviator game code, but that doesn't mean that I've fully understood every byte (though it's close). Almost every single aspect of the code is explained, but there are a few issues that could benefit from another look.
This page lists all of the outstanding issues of which I am aware. These are the notes I made as I analysed the source, so they are fairly terse and might not be terribly clear.
Miscellaneous
-------------
- alienObjectId: Clarify what's in alienObjectId - the location is the field object, but aliens are drawn using their own blueprint, see SpawnAlien etc.
- SetObjectCoords (Part 4 of 11), (Part 6 of 11), (Part 7 of 11), (Part 10 of 11): How do object groups 6-9 and 30 work?
- MakeEngineSound: Sounds+60 jumps up/down by 1 all the time, giving a 'throb' to the sound. This is done in MakeEngineSound, regularly, but not sure how it happens. It's because zVelocityHi/Lo in &0C8B/&0C8E "bounces", which changes sound. So why the bounce?
Dashboard
---------
- GetRadarVector: The direction bits in GetRadarVector are flipped in an EOR, but why?
- ArtificialHorizon: Explain ArtificialHorizon algorithm and indicatorLineJ
Flight model
------------
- AdjustRotation: when plane flips, why negate yRot/zRot and flip xRot? Are the angle ranges for pointing backwards different to my assumption?
- AdjustVelocity, AdjustRotation: when adding Bot to Lo and Lo to Hi, etc. We probably need to add in various / 256 factors to the result
- landingStatus: What does landingStatus do? Particularly in ProcessLanding 1, 4
- DrawIndicatorHand: What's the range of slipRate values? DrawIndicatorHand, ApplyFlightModel 4
- UpdateFlightModel (Part 1 of 4): Does axisKeyUsage affect the following ADC in UpdateFlightModel 1 - how?
- Flight model deep dive: Which part of the equation applies induced drag?
- Flight model deep dive: Pitch forward during take-off is not obvious from the xMoment equations
Drawing lines
-------------
- DrawCanopyLine (Part 8 of 9): The slope error calculation SS = A + RR + C is unclear
- DrawClippedLine: Explain line-clipping algorithm and how that relates to DrawCanopyLine
Maths
-----
- Multiply16x16: Ignores the low bytes in the multiplication - is this correct?
- DivideScaled: Explain division algorithm
- ScaleUp: Explain division algorithm
- ScaleDown: Explain division algorithm
- ProjectPoint (Part 2 of 3): Explain division algorithm