So I set myself a challenge to program a CSSCGC game in a day, based on a useful machine code routine. To keep it as brief as possible and not get too carried away with the fine details, I've limited it to the 16K Spectrum. It's not as if I haven't done this before, but that attempt (Complex Maths... WITH DRAGONS!) was on the ZX80 and that's painfully limited. What better way to spend a Sunday - 9th October 2022 - other than watching the Japanese Grand Prix (which I will, later) where Max Verstappen cruises effortlessly to a second World Championship, and this time nobody will doubt that he deserved it... ================================================================================ 09:40 - Started the job, using Spin all the way for its built-in assembler. 10:24 - The most essential code of the game, i.e. to calculate the display file address and the remainder bit, is working correctly. 11:36 - Second machine code routine to print the positions and score is tested and working. 11:58 - Crude movement routine added, with checks to make sure the PLOTted pixel can't go into negative values or stop with "B Integer out of range". Uses INKEY$ at the moment, but really needs to be changed to IN (or, preferably, a machine code routine that can be POKEd with new IN values) so that diagonal movement is possible. There's a lot of space to cover, after all! 12:22 - Checks successfully for a hit and increases the score. This is still a rather crude routine (and may want even more machine code for a KABOOM effect). Stopped for lunch for about 40 minutes. 13:31 - Checks to see if time is up (currently just over 2 minutes - this may change) and checks for the high score at the end. 13:46 - "Another game?" routine added and checked. ("THEN RUN" might be changed if necessary, later.) This could qualify as a magazine listing at this stage, so I'll say the challenge to do it in a day has been completed. But there is always room (and many more hours in the day) for IMPROVEMENTS, even though this is supposed to be a crap game. It still will be, though maybe not as much. ================================================================================ 14:57 - Moved the code to 32000 (made it easier to add to with plenty of space, apparently), changed the text inthe score bar and spent the best part of an hour wondering why it was now crashing all the time. It was nothing more than a RET instruction at the end of a subroutine going walkabout... I need tea after that! 15:22 - Start with the pixel in a random position, while also ensuring that the next target will always be within a circular range of 50 pixels. 16:03 - More code shunting, to use the end of the UDG area to store any variables for the machine code routines. Added a new routine to briefly invert the TARGET AT address when a new one is generated, because it isn't exactly instant. 16:49 - Changed the keyboard inquirt routine from INKEY$ to a machine code routine. Instead of 42.3 seconds to get the pixel from top to bottom, it's now a minuscule 36.6 seconds. I'd hoped it would be faster. A minor tweak made no lasting effect! 17:12 - Tested a quick BASIC routine to see if it's faster to use variables or POKE/PEEK for increasing X. It's SLOWER! (127 frames to increase PEEK 65535 from 0 to 255, as opposed to 96 frames for x) 17:22 - A quick tweak gets the travel time from top to bottom down to 34.3 seconds. The fastest it could possibly move is just under 20 seconds and that's leaving out the time check and printing the new position (via an MC routine). 17:30 - Maximum time increased from 2:02 to 2:59 (so, effectively 3 minutes). 18:00 - Added K.J. Bezant's explosion effect (from 1994, Nifty Lifty, etc) with the border colours changed, and a short click to moving the pixel (using OUT in the BASIC listing!) Still takes 36 seconds, top to bottom, but it serves to show that it's slow! 18:17 - Moving the initial setup to a subroutine in the 800s (so that the actual game loop is as close to the top of the listing as possible) has made no appreciable difference to the speed the pixel moves. Bah! 18:35 - Dinner calls... the last of the Fenland Firecracker sausages, and a baked potato. All hail March Quality Meats and whoever made those sausages which really do live up to their name. *cough* 20:31 - ...That took an annoyingly long time, including Spin playing up far too much, but the control menu (QAOP, cursors, Sinclair, Kempston) is in place and that, I will say, is that. In other words, I won't push my luck any more! 20:57 - Cleaned up the last few bugs (hopefully there aren't any more), made the tape with Tapir. 21:06 - Took the screenshots (.SCR and two sizes of .PNG). 21:52 - Finished the waffle and bunk, which was far more extensive than this game deserved, but I wasn't going to waste it. 22:06 - Made a few small corrections to the program, corrected the waffle and bunk, and finished this devlog.