2 January to 12 April 2026
Here's my disassembly diary for this part of my project to document The Sentinel on the BBC Micro. You can click on the following links to jump to a specific day in the diary:
- 2 January 2026 - Update analysis scripts for the new repository
- 7 January 2026 - Convert the Sentinel repository into a website by adding it to my automation scripts
- 14 April 2026 - Write and publish 51 deep dives
Please note that this diary is a dump of my thoughts as I disassembled and documented The Sentinel, and as such it contains lots of mistakes and dead ends and misinterpretations. This diary is all about the journey, rather than the destination; for the latter, see the finished product.
2 January 2026
==============
See all the bbcelite-scripts commits and diffs for 2 January 2025.
First up, let's update the analysis scripts for the new repository, so we get final word counts, code images and so on.
That's a simple case of editing the scripts in the bbcelite-scripts repo.
7 January 2026
==============
See all the bbcelite-scripts commits and diffs for 7 January 2026.
See all the bbcelite-websites commits and diffs for 7 January 2026.
The last five days have been about converting the Sentinel repository into a website by adding it to the create-disassembly-websites.py script I use to generate all my disassembly sites.
Also write all the hand-crafted pages (home page, about section etc.) and add the site skeleton to the bbcelite-websites repository.
I haven't keep a detailed diary this week because this is already described on my website (see the section on creating my disassembly websites for all the gory details - there's no point in duplicating any of that here!).
When finished, post the link to social media.
Just in time to go on holiday for a couple of weeks in the sun.
Time for a rest!
14 April 2026
==============
See all the bbcelite-websites commits for 31 January to 14 April 2026.
I haven't written any diary entries recently, as I've been writing. A lot.
I got back from holiday and started on the deep dives. Specifically, between 31 January and 14 April 2026, I wrote 51 deep dives into The Sentinel. That's a lot of content, so I kept track of progress in a text file rather than a diary.
When I write, each article goes through a few stages: I write the initial draft, then add images and run an initial spellcheck. I then add deep dive headers into the source code, proofread the article once again, run a second spellcheck and publish the results on the project website.
I capture all this in a dedicated progress sheet.
Here's the completed progress sheet for all 51 dives, from 31 January to 14 April.
As I write, I fill in an "x" for each stage, working through each article in order. The asterisks show article complexity, while the plus signs indicate articles with more challenging graphical needs.
I've been releasing the articles in batches, and the dates and article counts on the right show the release dates for each batch.
+--------- Write
|+-------- Images
||+------- Spellcheck 1
|||+------ Add headers
||||+----- Proofread
|||||+---- Spellcheck 2
||||||+--- Publish
|||||||
|||||||
vvvvvvv
Memory map | xxxxxxx | ** 1
Entry and setup code | xxxxxxx | * 19/2
Program flow of the main title loop | xxxxxxx | **
Program flow of the main game loop | xxxxxxx | **
Program flow of the gameplay loop | xxxxxxx | **
The interrupt handler | xxxxxxx | **
Pitch and yaw angles | xxxxxxx | ** 7
Cartesian coordinates | xxxxxxx | ** 25/2
Converting angles to coordinates | xxxxxxx | **
Converting coordinates to angles | xxxxxxx | **
Calculating the hypotenuse | xxxxxxx | ***
Trigonometry in 8-bit assembly | xxxxxxx | *
Reusing the geometry routines from Revs | xxxxxxx | **
Tile data | xxxxxxx | ** 14
Tile shapes | xxxxxxx | *** + 5/3
Seed number generation | xxxxxxx | **
Generating the landscape | xxxxxxx | *** +
Adding enemies and trees to the landscape | xxxxxxx | ***
The landscape secret code | xxxxxxx | **
Object management | xxxxxxx | ** 20
Stacking objects | xxxxxxx | ** 11/3
3D object definitions | xxxxxxx | *** +
Calculating angles for drawing 3D objects | xxxxxxx | **
Drawing 3D objects | xxxxxxx | ** +
The custom screen mode | xxxxxxx | * 25
The projection system | xxxxxxx | ** 13/3
The drawing tables | xxxxxxx | **
Drawing filled polygons | xxxxxxx | ***
Colours and palettes | xxxxxxx | *
Screen buffers | xxxxxxx | ** + 30
Panning and hardware scrolling | xxxxxxx | *** + 18/3
Dithering to the screen | xxxxxxx | **
Ray-casting for the tile visibility table | xxxxxxx | *** 33
Calculating quadrants for the landscape view | xxxxxxx | *** 26/3
Drawing the landscape view | xxxxxxx | *** +
Drawing the landscape preview | xxxxxxx | **
Drawing the title screens | xxxxxxx | ** 37
Drawing 3D text using blocks | xxxxxxx | ** 2/4
The energy icons | xxxxxxx | *
The scanner | xxxxxxx | **
The crosshair sights | xxxxxxx | ** 41
Following the gaze vector | xxxxxxx | *** + 8/4
Enemy timers and state variables | xxxxxxx | **
Enemy tactics | xxxxxxx | ***
Sound effects | xxxxxxx | * 45
Music | xxxxxxx | ** 10/4
Random number generation | xxxxxxx | * 47
Anti-cracker checks | xxxxxxx | ** 11/4
The key logger | xxxxxxx | **
Text tokens | xxxxxxx | *
Source code clues hidden in the game binary | xxxxxxx | * 51
And that, ladies and gentlemen, is the end of this project and the end of this diary. I'll post this summary to social media and call it a day:
- 41,902 lines of lovingly annotated source code
- 51 deep dives (116,240 words)
- Fully buildable repository
- 100% handcrafted AI-free content
- 7 months' work
Time for something new, I think...