Programming log: 29th March: Started programming, with the character sets for the map of China, and the arrays, both of which needed tweaking later. I should probably have written more than this but it was two days later before I decided to keep the programming log... 30th March: Programmed the map stage - all day. Finished just after midnight (i.e. in the small hours of 31st March). We are underway! 31st March: Officially named "Corona Capers" - worked on the SCREEN$ all day, learning to use ZX Paintbrush along the way (which has now replaced a combination of GIMP and BMP2SCR as it gives far more predictable results when converted to the Spectrum LOAD "" SCREEN$ format). 1st April: Completed the intro, afternoon of 1st April. (3,753 bytes - might fit into the main program when it's all done... or maybe there'll be no such luck! This program will be massive...) Then completed the main loop in the evening and small hours (up to about 1 am) so that the other bits of the program can be written separately and MERGEd in at the line numbers required. 24,208K left - with the character sets, variables and arrays in memory. HALF THE MEMORY IS USED ALREADY! (Though it starts with 41,528 bytes free, not the full 48K.) 17,320 bytes used. Even at this stage it won't run on a 16K Spectrum! 2nd April: tested the grid drawing routine in the RNA stage to see if the 1K ZX81 techniques (VAL, NOT PI, SGN PI etc) would save much memory... 332 bytes were compressed to 204. May have to keep this in mind. Probably don't need to worry - the bat soup stage was completed (5,550 bytes in MERGEable state - needs the last few GOTOs and GOSUBs putting in once it's merged) - leaving approx. 19,200 bytes left. And the RNA stage shouldn't take too much. Examined the listings of Bulls and Cows (Sinclair User, July 1982) and Mega-Mastermind (Sinclair Programs, March/April 1983) to see how they work - in the case of the latter, if a decent Mastermind can be programmed on a ZX80 (even if it didn't work in 1K), how complicated can it be? Wrote most of the instructions as well. 3rd April: Wrote a working Mastermind routine in under an hour (using string arrays, because I can, and the ZX80 programmers couldn't). Soon transformed this into the desired sub-game, complete with more UDGs for viruses and skulls that'll also be useful in the final part. Evening - started the "clean up the mess" square puzzle. Got as far as making a 5 x 5 sliding jigsaw, and made the routine work, thinking that with so many similar characters it'd be easier than the standard "15 puzzle". Bloody hell was I wrong! (Was 6,463 bytes at this point). Decided to scrap it and replace it with a 6 x 4 grid, similar to Encyclopaedia Galactica, but now using QAOP to move a highlighter of four bases, CAPS SHIFT + O to rotate anticlockwise, CAPS SHIFT + P to rotate clockwise. Call the files mastermindreloaded*.szx. 4th April: Stripped out the 5 x 5 square puzzle code, cleaned it up, replaced PLAY with BEEP and turned it into a separate CSSCGC game, "D.N.A. Dilemma" (so it didn't go to waste). Rebuilt the arrays and grids for the Cauldwell Tribute Stage, as I'm calling it. Much easier - can usually finish in under 30 moves (tweaked so that moving the cursor = 0.1 moves, rotation = 0.9). Finished around 3:30 and 8,088 bytes were saved on tape... should leave around 11K for the final stage (must not use that much, though, 8K max.) Too many lines to Renumber it in stages of 10, so I didn't! Merged all three parts together (maingame5-parts123.szx) and got that working - 10,571 bytes remaining. Erk! Might be time to get the "VAL" and "NOT PI" tricks out! 12,675 bytes if the variables are cleared. Built the array j$ to hold the INVISIBLE MAZE OF DOOM and saved some vital bytes (and PRINT AT satements) by printing the Phase 3 intro text on Corona-chan's loading screen and used a 42-character routine to cram 19-21 characters into the space usually available for 14-16. Auwesoum mouwntaijn cluuejb. 5th April: Cracked on with the Corona-chan showdown. Watched a video about Pac-Man's ghost AI (https://www.youtube.com/watch?v=ataGotQ7ir8) to see if I could get any tips. Hint: I couldn't, even Pac-Man is a bit too sophisiticated (and any more than one virus would have slowed it down far, far too much anyway). Finished the Corona-chan section by mid-afternoon, it was easier than I'[d thought. MERGED everything together, variables intact, and found that it would all fit (with about 3.5K left to spare). Made the last few tweaks, altered the two intro sections slighty, then bolted everything together into one tape, with even more tweaks, that will start at "Tape Loader" and finish with the "SLAM!" section where it's ready to load the Victory Sequence. All done at 11:47 PM. Now to get that Victory Sequence together... 6th April: Made most of the end sequence. I may have gone a bit overboard. Started with the access code, failure of which will result in being thrown to a crowd of NPCs (and a fate worse than death) along with more borrowed soundbites from US TV shows and Gargoyle's Quest. Made the "Bryce eats dinner at Trump Tower" and "Rusty Hag play live in Washington D.C." screens - with a combination of GIMP, Paint Shop Pro (Gimp, annoyingly, can't make a 2 x 2 square brush - grrrrrrr), ZX Paintbrush and BMP2SCR (handy for producing compressed screens that can be activated with RANDOMIZE USR). One to go, then it can all be bolted together properly! 7th April: Investigated loading attributes from one screen on top of another monochrome version. It worked, but didn't have the effect I'd hoped. Oh well. Made the "Washington in the evening" screen the traditional way (i.e. as above, not PLOT and DRAW etc). Took the three compressed screens (TZX), changed the start address in Taper, loaded all three at once, saved the lot as one block, and it works - three screens can be recalled in BASIC near-instantly. There wouldn't have been enough memory to do this in the main game without the RAM disc! Wrote the end sequence, in its entirety, most of which is text on a screen or a RANDOMIZE USR picture (as above) with accompanying PLAY music. Finished the music around midnight - annoyingly, the big Iron Maiden... I mean, Rusty Hag finale wouldn't fit in memory if all the music code was defined as separate variables, so it had to be split into lots of subroutines, all redefining the variables x$, y$ and z$ so there are noticeable gaps in the tune. Bah! Other than that, everything went as planned. 8th April: Bolted everything together into one tape - then had to make a slight edit (ONE lousy statement) as the emulated +2 kept turning up the same city for Phase 1 every time. (A RANDOMIZE in the right place goes a long way, see.) Checked that it all worked right through to the bitter end, then tweaked the tape version so that it would work on a +2A and +3 (i.e. LOAD/SAVE ! need to be replaced with LOAD/SAVE "M:"), then prepared a +3 disc which needed a bit more spannering - the "don't load this in 48K" intro could be junked outright, any "Stop the tape" messages were replaced with "Press Enter to continue", and all the filenames had to be changed as well as making sure they're all loaded from "A:" rather than "T:". Declared finished at 3:15 PM on 8th April. The intro phase takes 4,547 bytes, the loading screen takes the standard 6,912 bytes, the main game requires 37,809 bytes (BASIC, two character sets with intrinsic UDGs and three arrays) plus another 6,912 bytes for the final phase's screen, then the victory sequence requires a complete flush of the memory and 30,312 more bytes, over half of which are the three compressed screens. Sometimes, I even surprise myself. Yes, it's intended to be a Crap Game, I know, and it is very slow in places, but it represents the absolute maximum extent of my programming ability, especially when we're all nailed down in our own houses. I haven't been further than the end of my front drive at this stage since the evening of 23rd March...