Meta tags:
author= Mark Moxon;
description= Annotated code for the sinTable variable in Lander;
Headings (most frequently used words):
maths, geometry, sintable,
Text of the page (most frequently used words):
the (357), equd (257), and (64), lander (50), particle (49), for (46), part (41), object (40), draw (38), code (34), source (30), game (29), buffer (28), graphics (28), that (27), screen (26), from (22), address (20), landscape (20), data (19), this (19), objects (18), table (18), subroutines (17), buffers (16), drawing (16), into (15), blueprint (15), variables (14), particles (14), random (13), routine (13), main (13), unused (13), add (13), start (12), how (12), triangle (12), pixel (11), player (11), with (11), its (11), drawtriangle (11), map (11), coordinates (10), process (10), using (10), calculate (10), line (10), all (9), score (9), number (9), lookup (9), project (9), runimage (9), end (8), archimedes (8), variable (8), memory (8), each (8), mouse (8), two (8), loop (8), mark (7), moxon (7), more (7), bbc (7), micro (7), entry (7), when (7), ship (7), point (6), have (6), colour (6), bar (6), explosion (6), distance (6), command (6), sintable (6), addresses (6), clipped (6), horizontal (6), building (6), bank (6), site (6), details (5), category (5), indexes (5), used (5), specified (5), current (5), moveanddrawplayer (5), starting (5), rocks (5), just (5), rotation (5), coordinate (5), maths (5), drawobject (5), writing (4), sites (4), acorn (4), software (4), archaeology (4), index (4), down (4), new (4), text (4), row (4), top (4), position (4), velocity (4), has (4), rock (4), set (4), over (4), moveanddrawparticles (4), according (4), adds (4), vertex (4), onto (4), vector (4), polar (4), vectors (4), below (4), drawlandscapeandbuffers (4), rows (4), values (4), between (4), triangles (4), smoking (4), remains (4), faces (4), about (4), history (4), list (3), every (3), analysis (3), jump (3), show (3), run (3), check (3), first (3), fuel (3), level (3), four (3), print (3), left (3), bullet (3), exhaust (3), collisions (3), movement (3), moving (3), store (3), altitude (3), white (3), big (3), coloured (3), small (3), correct (3), off (3), element (3), lifespan (3), counter (3), front (3), sine (3), cosine (3), arctantable (3), matrix (3), uses (3), geometry (3), square (3), division (3), numbers (3), life (3), offset (3), tiles (3), these (3), containing (3), shadow (3), relevant (3), 17th (3), words (3), routines (3), file (3), blueprints (3), tree (3), objectrocket (3), found (3), drawobjects (3), files (3), different (3), exploring (3), own (3), braben (3), deep (3), articles (3), homepage (2), contact (2), tubewalker (2), tube (2), foot (2), walking (2), land (2), john (2), groats (2), travel (2), sentinel (2), revs (2), aviator (2), elite (2), 6502 (2), are (2), references (2), usage (2), above (2), stack (2), location (2), ensure (2), associated (2), prints (2), digit (2), hexadecimal (2), second (2), os_word (2), block (2), resetting (2), 511 (2), spawn (2), being (2), plume (2), see (2), launchpad (2), sea (2), spray (2), sky (2), droprocksfromthesky (2), whose (2), fades (2), red (2), time (2), hot (2), them (2), randomly (2), drop (2), spawning (2), very (2), slightly (2), nearer (2), black (2), last (2), place (2), adding (2), spark (2), cloud (2), create (2), one (2), out (2), explosions (2), splashes (2), sparks (2), sintableaddr (2), arctan (2), value (2), getmouseinpolarcoordinates (2), get (2), delta (2), trigonometry (2), matrices (2), root (2), seed (2), generator (2), tables (2), generate (2), newly (2), lose (2), crash (2), animation (2), our (2), core (2), visible (2), landscapeconfig (2), configuration (2), tile (2), drawn (2), behind (2), contents (2), undulating (2), graphicsbufferendaddr (2), graphicsbufferaddr (2), know (2), edge (2), slope (2), jumping (2), world (2), grey (2), hidden (2), switching (2), pixels (2), drawlinesegment (2), lines (2), absolute (2), copy (2), maps (2), types (2), leafy (2), bend (2), gazebo (2), working (2), way (2), vertices (2), workspaces (2), annotated (2), versions (2), version (2), hacking (2), arm1 (2), but (2), contains (2), david (2), miscellaneous (2), sorting (2), make (2), flying (2), flight (2), program (2), structure (2), dive (2), here (2), playing (2), links (2), useful (2), you (2), commentary (2), home (2), page (2), f75dff67 (2), f50497fc (2), e957ecfc (2), d13397e3 (2), c45ae1d8 (2), c0e8b649 (2), bc2f6514 (2), b64beacd (2), b1def9ea (2), af6803a3 (2), ae312b93 (2), a69b9b69 (2), a57d8667 (2), a34bdf21 (2), 9f13c7d2 (2), 9c10cd72 (2), 99a8c347 (2), 99307ee2 (2), 98b93829 (2), 96e61ce2 (2), 96029eb6 (2), 9592675e (2), 9523369d (2), 94b50d88 (2), 9447ed31 (2), 9370cae4 (2), 9235f2ec (2), 91695664 (2), 9104a0ee (2), 8e61d32f (2), 8e05c6b8 (2), 8daad37d (2), 8c4a1430 (2), 8bf4ac06 (2), 8ba06231 (2), 8aaa42b6 (2), 8a5a7a32 (2), 8a0bd3f6 (2), 89be50c5 (2), 8926b678 (2), 8893b126 (2), 884be821 (2), 88054679 (2), 877b7bed (2), 87385460 (2), 86b583ef (2), 85bdef29 (2), 8582faa6 (2), 8549345d (2), 85109cde (2), 84d934b2 (2), 84a2fc63 (2), 846df478 (2), 83d60413 (2), 83a5c2b1 (2), 8376b424 (2), 8348d8dd (2), 82f0bdea (2), 82c67f15 (2), 829d753b (2), 8275a0c2 (2), 8205675a (2), 81e26c18 (2), 81c0a803 (2), 8162aa05 (2), 812a1a3b (2), 80f66e3e (2), 80de6e4d (2), 80c7a80b (2), 80b21bb1 (2), 809dc972 (2), 8078d40e (2), 8058c94d (2), 804a9c4e (2), 803daa6b (2), 8031f3c3 (2), 80277873 (2), 80163441 (2), 800f6b89 (2), 8009de7f (2), 80058d30 (2), 800277a7 (2), 80009deb (2), 00000000 (2), 00c90f87 (2), 025b26d7 (2), 03242abe (2), 04b6195d (2), 057f0034 (2), 07d95b9e (2), 096a9049 (2), 0a3308bc (2), 0bc3ac35 (2), 0ee38765 (2), 120116d4 (2), 15e21444 (2), 16a81304 (2), 183366e8 (2), 18f8b83c (2), 1e56ca1d (2), 1fdcdc1a (2), 2223a4c5 (2), 22e541ae (2), 24677757 (2), 25280c5d (2), 27679df3 (2), 29a3c484 (2), 2b1f34eb (2), 2e110a61 (2), 2ecc681d (2), 2f875262 (2), 3041c760 (2), 30fbc54c (2), 3496824f (2), 354d9056 (2), 36ba2013 (2), 376f9e45 (2), 382493af (2), 3ba51e28 (2), 3c56ba6f (2), 3e680b2c (2), 4073f21c (2), 427a41d0 (2), 43d09aec (2), 452456bc (2), 46756827 (2), 471cece6 (2), 4869e664 (2), 490f57ed (2), 49b41533 (2), 4a581c9d (2), 4afb6c97 (2), 4c3fdff3 (2), 4ce10033 (2), 4ebfe8a4 (2), 4f5e08e2 (2), 5097fc5d (2), 5133cc93 (2), 539b2aef (2), 54ca0a49 (2), 556040e2 (2), 568a34a8 (2), 5842dd53 (2), 59646497 (2), 59f3de11 (2), 5b9d1153 (2), 5c290acb (2), 5cb420df (2), 5d3e5236 (2), 5dc79d7b (2), 5ed77c89 (2), 5f5e0db2 (2), 60ec382e (2), 61f1003e (2), 6271fa68 (2), 637114cb (2), 63ef328e (2), 64e88925 (2), 6563bf91 (2), 66573cba (2), 66cf811e (2), 6746c7d6 (2), 68a69e80 (2), 698c246b (2), 69fd6149 (2), 6a6d98a3 (2), 6adcc963 (2), 6b4af277 (2), 6c24295f (2), 6c8f351a (2), 6cf934fb (2), 6d6227f9 (2), 6dca0d13 (2), 6e96a99c (2), 6efb5f11 (2), 6fc19384 (2), 70231098 (2), 70e2cbc5 (2), 71410803 (2), 719e2cd1 (2), 72552c84 (2), 7307c3cf (2), 735f6625 (2), 73b5ebd0 (2), 745f9dd0 (2), 74b2c882 (2), 7504d344 (2), 7555bd4a (2), 75a585ce (2), 75f42c09 (2), 7641af3b (2), 768e0ea4 (2), 76d94988 (2), 77235f2c (2), 776c4eda (2), 77b417de (2), 77fab987 (2), 78403327 (2), 78848413 (2), 78c7aba0 (2), 7909a92b (2), 794a7c10 (2), 798a23b0 (2), 79c89f6c (2), 7a05eeac (2), 7a4210d7 (2), 7a7d055a (2), 7ab6cba2 (2), 7aef6322 (2), 7b26cb4e (2), 7b5d039c (2), 7b920b88 (2), 7bc5e28e (2), 7bf8882f (2), 7c29fbed (2), 7c5a3d4e (2), 7c894bdc (2), 7cb72723 (2), 7ce3ceb0 (2), 7d0f4217 (2), 7d3980eb (2), 7d628ac5 (2), 7d8a5f3f (2), 7db0fdf6 (2), 7dd6668d (2), 7dfa98a7 (2), 7e1d93e8 (2), 7e3f57fd (2), 7e5fe492 (2), 7e7f3955 (2), 7e9d55fb (2), 7eba3a38 (2), 7ed5e5c5 (2), 7ef0585e (2), 7f0991c2 (2), 7f2191b3 (2), 7f3857f5 (2), 7f4de44f (2), 7f62368e (2), 7f754e7e (2), 7f872bf2 (2), 7f97cebc (2), 7fa736b3 (2), 7fb563b2 (2), 7fc25595 (2), 7fce0c3d (2), 7fd8878d (2), 7fe1c76a (2), 7fe9cbbf (2), 7ff09477 (2), 7ff62181 (2), 7ffa72d0 (2), 7ffd8859 (2), 7fff6216 (2), sin (2), 1024 (2), 1023 (2), original (2), context (2), instruction, counts, other, stats, statistics, label, where, they, cross, subroutine, analyses, click, workspace, workspaceaddr, stores, pointer, was, stackpointeronentry, stackaddr, enough, memorytestaddr, return, desktop, returntodesktop, initialise, initialiseparticledata, error, abort, abortwithmemoryerror, initialising, shutting, initialscore, high, load, initialhighscore, initialfuellevel, word, fuelbarcolour, column, printscoreinbothbanks, character, printhexnumber, single, printhexdigit, printcurrentscore, showing, drawfuellevel, updating, mouseparametersaddr, parameters, mouseparameters, reset, ready, resetmouseposition, placeplayeronlaunchpad, fire, button, pressed, engine, engaged, update, reading, landed, landonlaunchpad, unique, based, controls, storeparticledata, splash, creating, splashparticleintosea, spawns, half, spawnrock, flags, give, cools, setparticlecolourtofade, hit, destroy, scoring, points, processobjectdestruction, checking, including, 800, then, albeit, droparockfromthesky, large, drawparticletobuffer, drawparticleshadowtobuffer, 3x2, draw3x2particlefrombuffer, 3x1, draw3x1particlefrombuffer, 2x2, draw2x2particlefrombuffer, 2x1, draw2x1particlefrombuffer, 1x1, draw1x1particlefrombuffer, delete, move, take, deleteparticledata, bounce, ground, bounceparticle, starts, static, addstaticparticletobuffer, addsprayparticletobuffer, addsparkparticletobuffer, 150, addsparkcloudtobuffer, smoke, addsmokeparticletobuffer, addsmallexplosiontobuffer, cluster, addshipexplosiontobuffer, initially, drifts, addrisingparticletobuffer, addmovingparticletobuffer, addexplosiontobuffer, addexhaustparticletobuffer, debris, which, purple, brownish, green, bounces, adddebrisparticletobuffer, addbulletparticletobuffer, falling, arctantableaddr, transposes, transposerotationmatrix, projectvertexontoscreen, projectparticleontoscreen, multiply, rotationmatrix, rotating, multiplyvectorbymatrix, multiplies, constant, multiplyvectorbyconstant, convert, calculating, angle, dot, product, getdotproduct, calculaterotationmatrix, rotated, space, addvectortovertices, updates, feedback, addvectorswithfeedback, self, modifying, results, addvectors, squareroottableaddr, squareroottable, randomseed2, randomseed1, divisiontableaddr, divisiontable, pseudo, seeds, getrandomnumbers, roots, arithmetic, brand, full, lives, generated, startnewgame, mainloop, detected, processing, loselifefromparticleloop, display, loselife, message, gameover, finish, endgame, runs, landscapeoffsetaddr, apply, push, away, fit, nicely, landscapeoffset, landscapeconfigaddr, currently, getlandscapetilecolour, directly, getlandscapebelowvertex, given, getlandscapealtitude, remaining, corner, back, secrets, updated, graphicsbuffersend, not, change, graphicsbuffers, same, graphicsbuffendaddr2, commands, bufferjump, drawgraphicsbuffer, terminators, ends, stop, addterminatorstobuffers, draws, order, drawtriangletobuffer, drawtriangleshadowtobuffer, drawtrianglefrombuffer, clipping, bottom, slopes, partly, isn, sloping, side, ordering, quadrilateral, drawquadrilateral, screenbanknumber, screenbank2addr, screenbank1addr, screenaddr, greycolourwordsaddr, greycolourwords, switch, banks, clear, switchscreenbank, smooth, linejump, drawhorizontalline, gamecodeendaddr, gamecodeaddr, unencrypted, gamecode, absoluteaddr, runimageentry, placeholder, decrypt, 8000, can, decryptgamebinary, hiding, prying, eyes, protection, objecttypes, tall, objecttallleafytree, right, objectsmokingremainsright, objectsmokingremainsleft, objectsmokinggazebo, objectsmokingbuilding, objectsmallleafytree, rocket, objectrockaddr, objectrock, pyramid, objectpyramid, objectplayeraddr, objectplayer, objectgazebo, fir, objectfirtree, objectbuilding, avoiding, placeobjectsonmap, destroyed, portion, through, looking, visibility, such, trees, buildings, ships, risc, fully, commented, overview, structured, information, huge, landscapes, faster, machines, creation, influenced, origins, might, tight, even, some, brother, compares, predecessor, comparing, zarch, author, article, user, algorithm, arm, evaluation, system, important, piece, coding, understanding, vidc, colours, converts, projecting, nothing, clever, bin, hack, correctly, displays, another, depth, detecting, crashed, shot, bullets, thrust, challenges, travelling, plumes, clouds, placing, storing, definitions, normals, simulating, physics, converting, altitudes, fourier, synthesis, simple, generating, explanation, fundamental, aspects, camera, luscious, created, tasks, performs, iteration, around, squeezing, unexpanded, 305, dives, discover, works, under, hood, weaves, magic, play, analysed, 21st, century, could, benefit, bit, website, short, development, giants, shoulders, stands, acknowledgements, collection, pages, during, build, your, read, before, explore, terminology, story, came, need, quick, guide, beginning, written, 1987, rights, reserved, 2021, ff36f077, fe6de2e1, fda4d928, fcdbd540, fc12d91b, fb49e6a2, fa80ffca, f9b82685, f8ef5cbb, f826a460, f6956fb6, f5ccf742, f43c53ca, f3742ca0, f2ac246f, f1e43d1c, f11c7898, f054d8d5, ef8d5fb8, eec60f33, edfee92c, ed37ef91, ec712451, ebaa894f, eae4207a, ea1debbd, e8922621, e7cc9919, e70747c4, e642340c, e57d5fdc, e4b8cd11, e3f47d95, e330734f, e26cb01b, e1a935e1, e0e60686, e02323e5, df608fe2, de9e4c62, dddc5b3b, dd1abe50, dc597783, db9888a8, dad7f3a1, da17ba4b, d957de7a, d898620b, d7d946d9, d71a8eb5, d65c3b7a, d59e4f00, d4e0cb14, d423b18f, d3670446, d2aac504, d1eef5a0, d078ad9d, cfbe38a2, cf043ab4, ce4ab5a2, cd91ab3b, ccd91d3e, cc210d78, cb697db2, cab26faa, c9fbe527, c945dfee, c89061bb, c7db6c4f, c727016f, c67322ce, c5bfd22e, c50d114b, c3a9458f, c2f83e2c, c247cd5a, c197f4d3, c03a1368, bf8c0de2, bedea767, be31e19c, bd85be2f, bcda3ecc, bb8532af, badba944, ba32ca71, b98a97d7, b8e3131a, b83c3dd1, b796199a, b6f0a813, b5a7e365, b5049369, b461fc70, b3c0200f, b31effcd, b27e9d3c, b140175c, b0a1f71d, b0049ab5, aecc336c, ad96ed92, acfd7ae8, ac64d512, abccfd83, ab35f5b5, aa9fbf1f, aa0a5b2e, a975cb56, a8e21108, a84f2daa, a7bd22ab, a72bf175, a60c21ed, a4efca31, a462eeac, a3d6f535, a2c1adc9, a2386285, a1affea3, a1288376, a0a1f24e, a01c4c73, 9f979334, 9e90eb95, 9e0effc3, 9d8e0598, 9d0dfe54, 9c8eeb36, 9b93a641, 9b1776dc, 9a9c406f, 9a22042d, 9842f045, 97cda856, 9759617f, 9673db95, 93dbd6a0, 9306cb05, 929dd806, 91cf1cb7, 90a0fd4f, 903e6c7b, 8fdcef66, 8f7c8702, 8f1d343a, 8ebef7fb, 8d50fa5a, 8cf83c30, 8ca099db, 8b4d377d, 8afb2cbb, 8971f15b, 88dca0d4, 87bfccd8, 86f656d4, 8675dc50, 86376093, 85fa1153, 843a1d71, 840777d0, 831c314f, 824f0209, 82299972, 81a01b6e, 8180c6aa, 8145c5c8, 810fa7a1, 808ab182, 80683145, 801e3895, 80000001, 801e3896, 80683144, 808ab181, 810fa7a2, 8145c5c9, 8180c6ab, 81a01b6f, 82299973, 824f020a, 831c3150, 840777d1, 843a1d72, 85fa1154, 86376094, 8675dc51, 86f656d5, 87bfccd9, 88dca0d5, 8971f15c, 8afb2cbc, 8b4d377e, 8ca099dc, 8cf83c31, 8d50fa5b, 8ebef7fc, 8f1d343b, 8f7c8703, 8fdcef67, 903e6c7c, 90a0fd50, 91cf1cb8, 929dd807, 9306cb06, 93dbd6a1, 9673db96, 97596180, 97cda857, 9842f046, 9a22042e, 9a9c4070, 9b1776dd, 9b93a642, 9c8eeb37, 9d0dfe55, 9d8e0599, 9e0effc4, 9e90eb96, 9f979333, a01c4c74, a0a1f24f, a1288378, a1affea4, a2386286, a2c1adcb, a3d6f536, a462eeae, a4efca32, a60c21ef, a72bf174, a7bd22ad, a84f2dab, a8e21107, a975cb58, aa0a5b2f, aa9fbf1e, ab35f5b7, abccfd84, ac64d511, acfd7aea, ad96ed93, aecc336e, b0049ab4, b0a1f71f, b140175d, b27e9d3d, b31effce, b3c0200e, b461fc71, b504936a, b5a7e364, b6f0a814, b796199d, b83c3dd2, b8e3131b, b98a97da, ba32ca72, badba945, bb8532b1, bcda3ecd, bd85be31, be31e19d, bedea766, bf8c0de5, c03a1369, c197f4d5, c247cd5b, c2f83e2b, c3a94592, c50d114a, c5bfd230, c67322cf, c727016e, c7db6c52, c89061bc, c945dfed, c9fbe529, cab26fab, cb697db1, cc210d79, ccd91d3f, cd91ab3a, ce4ab5a3, cf043ab5, cfbe38a1, d078ad9e, d1eef59f, d2aac505, d3670447, d423b192, d4e0cb15, d59e4f01, d65c3b7c, d71a8eb6, d7d946da, d898620d, d957de7b, da17ba4a, dad7f3a4, db9888a9, dc597782, dd1abe53, dddc5b3c, de9e4c61, df608fe5, e02323e6, e0e60685, e1a935e4, e26cb01c, e330734d, e3f47d97, e4b8cd12, e57d5fdb, e642340f, e70747c5, e7cc9918, e8922624, ea1debbc, eae4207b, ebaa8950, ec712450, ed37ef92, edfee92d, eec60f32, ef8d5fb9, f054d8d6, f11c789b, f1e43d1d, f2ac2470, f3742ca3, f43c53cb, f5ccf745, f6956fb7, f826a463, f8ef5cbc, f9b82684, fa80ffcd, fb49e6a3, fc12d91a, fcdbd542, fda4d929, fe6de2e0, ff36f079, 01921d20, 03ed26e7, 0647d97d, 0710a345, 08a20099, 0afb6804, 0c8bd35e, 0d53db91, 0e1bc2e4, 0fab272a, 1072a048, 1139f0cf, 12c8106f, 138edbb1, 145576b0, 151bdf86, 176dd9dd, 19bdcbf1, 1a82a026, 1b4732ef, 1c0b8269, 1ccf8cb3, 1d934fe5, 1f19f97b, 209f701b, 2161b3a0, 23a6887f, 25e845b6, 26a82186, 2826b927, 28e5714b, 2a61b100, 2bdc4e6f, 2c98fbb9, 2d553afc, 31b54a5e, 326e54c7, 3326e2c1, 33def287, 36041ad7, 38d8fe93, 398cdd32, 3a402dd0, 3af2eeb7, 3d07c1d6, 3db832a6, 3f1749b8, 3fc5ec98, 4121589b, 41ce1e64, 4325c134, 447acd50, 45cd358f, 47c3c22f, 4b9e0390, 4d8162c4, 4e210617, 4ffb654d, 51ced46e, 5269126e, 53028516, 5433027d, 55f5a4d2, 571deefa, 57b0d256, 58d40e8c, 5a82799a, 5b1035cf, 5e50015d, 5fe3b38d, 60686cce, 616f146b, 62f201ac, 646c59bf, 65ddfbd1, 67bd0fbc, 683257aa, 6919e320, 6bb812d0, 6e30e348, 6f5f02b0, 708378fd, 71fa3948, 72af05a5, 740b53fa, 7ffffffe, 740b53f9, 72af05a6, 71fa3947, 708378fe, 6f5f02b1, 6e30e349, 6bb812cf, 6919e31f, 683257a9, 67bd0fbb, 65ddfbd2, 646c59be, 62f201ab, 616f146a, 60686ccd, 5fe3b38c, 5e50015c, 5b1035ce, 5a827999, 58d40e8b, 57b0d255, 571deef8, 55f5a4d1, 5433027c, 53028517, 5269126d, 51ced46d, 4ffb654c, 4e210616, 4d8162c3, 4b9e038e, 47c3c22e, 45cd358e, 447acd4f, 4325c135, 41ce1e63, 4121589a, 3fc5ec97, 3f1749b7, 3db832a5, 3d07c1d5, 3af2eeb6, 3a402dd1, 398cdd31, 38d8fe92, 36041ad8, 33def286, 3326e2c2, 326e54c6, 31b54a5d, 2d553afb, 2c98fbba, 2bdc4e6e, 2a61b101, 28e5714a, 2826b928, 26a82185, 25e845b5, 23a6887e, 2161b39f, 209f701c, 1f19f97a, 1d934fe4, 1ccf8cb2, 1c0b826a, 1b4732ee, 1a82a025, 19bdcbf2, 176dd9de, 151bdf85, 145576b1, 138edbb0, 12c8106e, 1139f0ce, 1072a047, 0fab272b, 0e1bc2e3, 0d53db92, 0c8bd35d, 0afb6805, 08a2009a, 0710a344, 0647d97c, 03ed26e6, 01921d1f, byte, basic, would, been, populated, something, along, opt, pass, next, equds, because, computers, algorithms, accuracies, their, only, complete, match, binaries, hard, produces, follows, summary, type, name, skip, navigation,
Text of the page (random words):
cda857 equd 97596180 96e61ce2 9673db96 96029eb6 equd 9592675e 9523369d 94b50d88 9447ed31 equd 93dbd6a1 9370cae4 9306cb06 929dd807 equd 9235f2ec 91cf1cb8 91695664 9104a0ee equd 90a0fd50 903e6c7c 8fdcef67 8f7c8703 equd 8f1d343b 8ebef7fc 8e61d32f 8e05c6b8 equd 8daad37d 8d50fa5b 8cf83c31 8ca099dc equd 8c4a1430 8bf4ac06 8ba06231 8b4d377e equd 8afb2cbc 8aaa42b6 8a5a7a32 8a0bd3f6 equd 89be50c5 8971f15c 8926b678 88dca0d5 equd 8893b126 884be821 88054679 87bfccd9 equd 877b7bed 87385460 86f656d5 86b583ef equd 8675dc51 86376094 85fa1154 85bdef29 equd 8582faa6 8549345d 85109cde 84d934b2 equd 84a2fc63 846df478 843a1d72 840777d1 equd 83d60413 83a5c2b1 8376b424 8348d8dd equd 831c3150 82f0bdea 82c67f15 829d753b equd 8275a0c2 824f020a 82299973 8205675a equd 81e26c18 81c0a803 81a01b6f 8180c6ab equd 8162aa05 8145c5c9 812a1a3b 810fa7a2 equd 80f66e3e 80de6e4d 80c7a80b 80b21bb1 equd 809dc972 808ab181 8078d40e 80683144 equd 8058c94d 804a9c4e 803daa6b 8031f3c3 equd 80277873 801e3896 80163441 800f6b89 equd 8009de7f 80058d30 800277a7 80009deb equd 80000001 80009deb 800277a7 80058d30 equd 8009de7f 800f6b89 80163441 801e3895 equd 80277873 8031f3c3 803daa6b 804a9c4e equd 8058c94d 80683145 8078d40e 808ab182 equd 809dc972 80b21bb1 80c7a80b 80de6e4d equd 80f66e3e 810fa7a1 812a1a3b 8145c5c8 equd 8162aa05 8180c6aa 81a01b6e 81c0a803 equd 81e26c18 8205675a 82299972 824f0209 equd 8275a0c2 829d753b 82c67f15 82f0bdea equd 831c314f 8348d8dd 8376b424 83a5c2b1 equd 83d60413 840777d0 843a1d71 846df478 equd 84a2fc63 84d934b2 85109cde 8549345d equd 8582faa6 85bdef29 85fa1153 86376093 equd 8675dc50 86b583ef 86f656d4 87385460 equd 877b7bed 87bfccd8 88054679 884be821 equd 8893b126 88dca0d4 8926b678 8971f15b equd 89be50c5 8a0bd3f6 8a5a7a32 8aaa42b6 equd 8afb2cbb 8b4d377d 8ba06231 8bf4ac06 equd 8c4a1430 8ca099db 8cf83c30 8d50fa5a equd 8daad37d 8e05c6b8 8e61d32f 8ebef7fb equd 8f1d343a 8f7c8702 8fdcef66 903e6c7b equd 90a0fd4f 9104a0ee 91695664 91cf1cb7 equd 9235f2ec 929dd806 9306cb05 9370cae4 equd 93dbd6a0 9447ed31 94b50d88 9523369d equd 9592675e 96029eb6 9673db95 96e61ce2 equd 9759617f 97cda856 9842f045 98b93829 equd 99307ee2 99a8c347 9a22042d 9a9c406f equd 9b1776dc 9b93a641 9c10cd72 9c8eeb36 equd 9d0dfe54 9d8e0598 9e0effc3 9e90eb95 equd 9f13c7d2 9f979334 a01c4c73 a0a1f24e equd a1288376 a1affea3 a2386285 a2c1adc9 equd a34bdf21 a3d6f535 a462eeac a4efca31 equd a57d8667 a60c21ed a69b9b69 a72bf175 equd a7bd22ab a84f2daa a8e21108 a975cb56 equd aa0a5b2e aa9fbf1f ab35f5b5 abccfd83 equd ac64d512 acfd7ae8 ad96ed92 ae312b93 equd aecc336c af6803a3 b0049ab5 b0a1f71d equd b140175c b1def9ea b27e9d3c b31effcd equd b3c0200f b461fc70 b5049369 b5a7e365 equd b64beacd b6f0a813 b796199a b83c3dd1 equd b8e3131a b98a97d7 ba32ca71 badba944 equd bb8532af bc2f6514 bcda3ecc bd85be2f equd be31e19c bedea767 bf8c0de2 c03a1368 equd c0e8b649 c197f4d3 c247cd5a c2f83e2c equd c3a9458f c45ae1d8 c50d114b c5bfd22e equd c67322ce c727016f c7db6c4f c89061bb equd c945dfee c9fbe527 cab26faa cb697db2 equd cc210d78 ccd91d3e cd91ab3b ce4ab5a2 equd cf043ab4 cfbe38a2 d078ad9d d13397e3 equd d1eef5a0 d2aac504 d3670446 d423b18f equd d4e0cb14 d59e4f00 d65c3b7a d71a8eb5 equd d7d946d9 d898620b d957de7a da17ba4b equd dad7f3a1 db9888a8 dc597783 dd1abe50 equd dddc5b3b de9e4c62 df608fe2 e02323e5 equd e0e60686 e1a935e1 e26cb01b e330734f equd e3f47d95 e4b8cd11 e57d5fdc e642340c equd e70747c4 e7cc9919 e8922621 e957ecfc equd ea1debbd eae4207a ebaa894f ec712451 equd ed37ef91 edfee92c eec60f33 ef8d5fb8 equd f054d8d5 f11c7898 f1e43d1c f2ac246f equd f3742ca0 f43c53ca f50497fc f5ccf742 equd f6956fb6 f75dff67 f826a460 f8ef5cbb equd f9b82685 fa80ffca fb49e6a2 fc12d91b equd fcdbd540 fda4d928 fe6de2e1 ff36f077 objectrocket arctantable lander written by david braben d j braben 1987 commentary mark moxon 2021 all rights reserved home page using this site home page start at the very beginning quick start guide all you need to know to start exploring this site all about this project project history building the source and more all about this project about this project the story of how this project came to be terminology used in this commentary read this before you explore the source code building lander from the source how to build your own working copy of lander useful links a collection of links to pages i ve found useful during this project acknowledgements the giants on whose shoulders this project stands site history a short history of this site s development site map a top level map of this website to do list code that could benefit from a bit more analysis playing with the lander source code playing lander in the 21st century how to play all the versions of lander analysed here deep dive articles over 20 articles on how lander weaves its magic index index of all deep dive articles discover how lander works under the hood deep dives program structure memory maps and the main game loop program structure the lander memory map memory usage and squeezing lander into the unexpanded archimedes 305 the main game loop details of the tasks that lander performs every iteration around the main loop landscape how the luscious 3d landscape is created landscape the camera and the landscape offset an explanation of two fundamental aspects of the lander drawing routines generating the landscape using fourier synthesis to generate a 3d landscape using simple trigonometry drawing the landscape converting a set of altitudes into an undulating landscape of coloured tiles 3d objects and particles drawing 3d objects and simulating particle physics 3d objects and particles object blueprints storing 3d object definitions using vertices faces and normals drawing 3d objects drawing 3d objects using object blueprints and rotation matrices placing objects on the map details of lander s object types and the object map particles and particle clouds the particles that make up sparks splashes explosions and exhaust plumes flight the challenges of travelling by mouse flight flying by mouse flying the ship in lander using polar coordinates and thrust vectors collisions and bullets detecting when the player has crashed or shot down an object drawing on the screen how lander s graphics make it onto the screen drawing on the screen depth sorting with the graphics buffers the clever bin sorting hack that correctly displays objects behind one another drawing triangles building a landscape and 3d objects out of nothing but triangles projecting onto the screen how lander converts 3d world coordinates into 2d screen coordinates screen memory in the archimedes understanding vidc colours and bank switching on the archimedes miscellaneous exploring this important piece of coding history miscellaneous random numbers lander uses a random number algorithm from the arm evaluation system in david braben s own words a code analysis of the lander author s own article from the micro user comparing lander to zarch how lander s big brother compares to its predecessor unused code in lander memory might be tight but even lander contains some hidden subroutines lander s origins on the arm1 how the creation of lander on the arm1 influenced the code hacking the landscape hacking the lander source to create huge landscapes on faster machines exploring the lander source code lander source code annotated source of lander version information about the version of lander on this site details of the different versions of lander lander source code by file map of the source code an overview of how the source code for lander is structured annotated source files the fully commented source files lander source files workspaces and configuration the main variable workspaces used in lander lander a source part 1 of the main game code lander b source part 2 of the main game code lander c source part 3 of the main game code lander d source part 4 of the main game code runimage source the runimage source for risc os lander source code by category 3d objects 3d objects such as trees buildings and ships subroutines drawobject part 1 of 5 draw a 3d object and its shadow drawobject part 2 of 5 process the object s vertices drawobject part 3 of 5 calculate the visibility of each of the object s faces drawobject part 4 of 5 draw the shadow for each of the object s faces drawobject part 5 of 5 draw each of the object s faces drawobjects part 1 of 3 draw all the objects in the visible portion of the object map starting by working our way through the map looking for objects drawobjects part 2 of 3 draw the object that we have found on the object map drawobjects part 3 of 3 draw a destroyed object that we have found on the object map placeobjectsonmap randomly place a number of objects on the map avoiding the sea and the launchpad variables objectbuilding object blueprint for the building objectfirtree object blueprint for the fir tree objectgazebo object blueprint for the gazebo objectplayer object blueprint for the player s ship objectplayeraddr the address of the object blueprint for the player s ship objectpyramid object blueprint for a pyramid objectrock object blueprint for a rock objectrockaddr the address of the object blueprint for a rock objectrocket object blueprint for the rocket objectsmallleafytree object blueprint for the small leafy tree objectsmokingbuilding object blueprint for the smoking remains of a building objectsmokinggazebo object blueprint for the smoking remains of a gazebo objectsmokingremainsleft object blueprint for the smoking remains that bend to the left objectsmokingremainsright object blueprint for the smoking remains that bend to the right objecttallleafytree object blueprint for the tall leafy tree objecttypes a table that maps object types to object blueprints copy protection hiding the lander code from prying eyes subroutines decryptgamebinary runimage placeholder routine to decrypt game code to 8000 so it can be run runimageentry runimage entry point for the runimage absolute file variables absoluteaddr runimage the address of the start of the absolute file gamecode runimage the unencrypted game code gamecodeaddr runimage the address of the game code gamecodeendaddr runimage the address of the end of the game code drawing lines the core horizontal line drawing routines subroutines drawhorizontalline draw a horizontal line drawlinesegment draw a horizontal line of between 0 and 17 pixels by jumping to the relevant entry point variables linejump jump table for drawing a horizontal line of between 0 and 17 pixels using the relevant entry point in drawlinesegment drawing the screen smooth animation using screen switching subroutines switchscreenbank switch screen banks and clear the newly hidden screen bank to black variables greycolourwords an unused table of grey four pixel colour words greycolourwordsaddr the unused address of the unused table of grey four pixel colour words screenaddr the screen address for the start of the 17th pixel line in the current bank i e the line just below the two rows of text screenbank1addr the screen address for the start of the 17th pixel line in screen bank 1 i e the line just below the two rows of text screenbank2addr the screen address for the start of the 17th pixel line in screen bank 0 i e the line just below the two rows of text screenbanknumber the number of the current screen bank 0 or 1 drawing triangles the main building block of the 3d world subroutines drawquadrilateral draw a quadrilateral i e two triangles drawtriangle part 1 of 11 draw a triangle starting by ordering the coordinates and jumping to the relevant part of the routine drawtriangle part 2 of 11 calculate the slope of x1 y1 to x2 y2 drawtriangle part 3 of 11 calculate the slope of x1 y1 to x3 y3 drawtriangle part 4 of 11 draw a triangle that isn t clipped and has a sloping first side drawtriangle part 5 of 11 draw a triangle with a horizontal edge between x1 y1 and x2 y2 drawtriangle part 6 of 11 draw a clipped triangle that s partly off screen drawtriangle part 7 of 11 calculate the slopes of x1 y1 to x2 y2 and x1 y1 to x3 y3 for a clipped triangle drawtriangle part 8 of 11 draw the bottom part of a clipped triangle drawtriangle part 9 of 11 draw the top part of a clipped triangle drawtriangle part 10 of 11 draw a clipped triangle with a horizontal edge between x1 y1 and x2 y2 drawtriangle part 11 of 11 draw a triangle clipping it to the screen as we go drawtrianglefrombuffer process the draw triangle command from the graphics buffer drawtriangleshadowtobuffer draw a triangle shadow into the correct graphics buffer according to its distance drawtriangletobuffer draw a coloured triangle into a slightly nearer graphics buffer according to its distance graphics buffers how lander draws objects in distance order subroutines addterminatorstobuffers add terminators to the ends of the graphics buffers so we know when to stop drawing drawgraphicsbuffer draw the contents of the specified graphics buffer variables bufferjump the jump table for drawing commands that we store in the graphics buffers graphicsbuffendaddr2 the addresses of the tables containing the graphics buffer addresses same as graphicsbufferendaddr and graphicsbufferaddr graphicsbufferaddr the address of the table containing the addresses of the graphics buffers graphicsbufferendaddr the address of the table containing the end addresses of the graphics buffers graphicsbuffers the addresses of each of the graphics buffers these values do not change graphicsbuffersend the end addresses of each of the graphics buffers these values get updated as objects are drawn into the buffers landscape the secrets of lander s undulating landscape subroutines drawlandscapeandbuffers part 1 of 4 draw the landscape and the contents of the graphics buffers from the back of the screen to the front drawlandscapeandbuffers part 2 of 4 draw a row of landscape tiles drawlandscapeandbuffers part 3 of 4 draw the objects in the graphics buffers for two rows behind the current corner row drawlandscapeandbuffers part 4 of 4 draw the remaining graphics buffers getlandscapealtitude calculate the altitude of the landscape for a given coordinate getlandscapebelowvertex calculate the landscape altitude directly below an object s vertex getlandscapetilecolour calculate the colour of the landscape tile currently being drawn variables landscapeconfig the configuration data for each tile row in the landscape landscapeconfigaddr the address of the landscapeconfig table landscapeoffset the offset we apply to the on screen landscape to push it away from us and to the left so the visible tiles fit nicely on screen landscapeoffsetaddr the address of the landscape offset main loop the core game loop that runs lander subroutines endgame finish the game gameover print a game over message and start a new game loselife display a crash animation when we lose a life and end the game if this is our last life loselifefromparticleloop lose a life when a crash is detected in the particle processing loop mainloop the main game loop startnewgame start a brand new game w...
|