25 September 2021: Tested the Currah Microspeech strings. Nothing really happened until... 9 April 2023: alpha1: Drew the intro screen and the accompanying beeps (which, if anyone is wondering, is a mashup of "If I Were A Rich Man" and "Salil Al-Sawarim"...) alpha2: Added the Arabic character set from Dr. Nabil Nazmi's Egyptian version of the 48K Spectrum, plus the "Al-Qa'ramco" logo, UDGs and the bold text machine code. alpha3: Set up the game screen. It still needs some tweaks... 10 April 2023: alpha4: Used the code from "Golfer" (Sinclair Programs, July 1983) to understand how the position of the ball is calculated. This uses a loop and calculates both x and y positions from that. alpha5: Rearranged the algebra, using the values from Golfer, so that x increases by 1 each time and y is calculated from x according to the equation for trajectory as found at: https://www.andlearning.org/trajectory-formula/ Tested that the ball always landed at y=64. Tested (at great length) which angle and strength values would correspond to the intended face angle for each club as given here: https://www.thegolfmentor.com/clubs/angles?utm_content=cmp-true Using the midpoint of the angle range, the clubs are supposed to give a result (in yards - 3 yards per pixel) of around 1.5 times those that were quoted in the manual for Game Boy Golf (1989). alpha6: Put the values for maximum & minimum angle, and shot strength, in the array C(13,3). Shots are now taken according to which club is used and which are available for the terrain below the ball. 11 April 2023: At this stage each version is a small but essential addition to the game code to make sure everything is working OK - there are a lot of rules to be followed to make a successful (if still very crude) golf simulation! alpha7: Tidied up the screen, added the current strokes for the hole and centralised the bottom row of text with some extra MC. Also small optimisations. alpha8: Adding the putter required another rehash of the screen some extra UDGs and machine code. Putting on the green has a maximum range of 45 yards; 30 on the fairway, 15 in the rough, 3 in the deep rough. (Just don't use a putter there.) 12 April 2023: alpha9: Added water hazard, and the calculations needed to put the ball at the edge of the water. Also a "splash" sound effect, drived from the explosion I've used from Kevin Bezant's games circa 1983, changing instructions and parameters here and there until it sounded something like a splash. Cheers again, Kev... alpha10: Added out of bounds, which will also prevent the ball from being hit off the screen either right or left. Both hitting the water or going out of bounds incur a penalty stroke. alpha11: Added detection of all other surfaces (tee, fairway, light rough, deep rough, green, bunker) which each have individual messages and a BEEP sound effect. alpha12: Added the ability to hit the ball to the left, when beyond the flag. Also ensures that the ball is moved to the right if a leftward drive or putt lands in the water. alpha13: A full hole can now be played, although there's only a text message for holing a putt. Also added the "SMAAAASH!!" (from Earthbound) when hitting a drive (even with a sand wedge) and the S$ strings for the Currah Microspeech (can't test that on BASin, though). 13 April 2023: Houston, we have a problem. Apparently BASin is capable of outputting Z80 snapshots with the Currah Microspeech switched on if it detects S$ containing valid speech patterns for the device. LET u=USR u1 (bold text) now stops the game with O Invalid stream. That's odd. Need to find out why... ...it was the Currah Microspeech needing to use some buffer space above RAMTOP, which it sets automatically to 65111, giving it 256 bytes to work with. alpha14: Relocated all the machine code underneath the custom character set, itself relocated to 64256-65023, allowing the CM 344 bytes of leeway (it should be more than enough). Added a second set of UDGs to make the club display neater and two LDIR routines to switch between the two. Tested this on Spectaculator with a CM attached, and it's all working fine now. alpha15: FINALLY allowed the completion of a round! Also, moved the message displays to an array M$ that can be loaded in remotely later. Added special messages for a hole in one on a par 4 (which is possible) and par 5 (which definitely isn't, and the game will say so). NOTE: These might be best hidden in the machine code, when everything is finished. alpha16: Added the (detailed!) scorecard at the end of the round. 13K left, and 2K will be used by the arrays P$ and L$ when implemented (and another 1K for all the LETs that define P$ in the first place...) 14 April 2023: alpha17: Clubs rebalanced, to fill the gaping hole whereby it was impossible to hit any shot between 48 and 96 yards. This involved a few calculations... alpha18: Added the real holes - most of which was taken from aerial photographs of the holes in question and measuring pixel distances to recreate a 2D version of something vaguely like the real thing. At least the 17th at Sawgrass is obvious! 15 April 2023: Mostly testing better-than-bubble-sort routines from the pages of INPUT, and gathering statistics from the 2023 Masters to see how frequently each hole is birdied, eagled, bogeyed, etc. (No holes in one or eagles on par 4s over the whole tournament this year - it does happen but the weather conditions weren't exactly conducive to really low scores. Nobody told Jon Rahm, mind...) 16 April 2023: alpha19: Added the leaderboard. All 47 other players are awarded their shots according to the 2023 Masters statistics, and the leaderboard is sorted with the insertion sort from INPUT issue 23. alpha20: Various code optimisations. Moving the leaderboard subroutine to the start of the listing increased the sorting speed by 30%. Moving the club routine just behind that may have increased the speed a bit; making the ball move a variable distance (approx. 1 pixel for SW, approx. 3 pixels for 1W) is far better. Added a countdown timer while the leaderboard is generated (because it takes a long time!). Some graphical corrections with placing the ball on the ground with the new variable-distance code. 17 April 2023: alpha21: Added victory screen, "play again" option and "doctored" the leaderboard so that there is always an outright winner. The victory trophy is adapted from the Wanamaker Trophy presented to the PGA champion... alpha22: Reverted to a final leaderboard where victory can be shared, the amount on the cheque will change accordingly, with extra text for a shared victory. alpha23: Added failure sequence. Another tweak had to be made to the Arabic character set (some characters are slightly non-standard in Egypt, apparently, and Dr. Nazmi's Egyptian medial "ha" didn't look like the figure-of-8 character in references to the Arabic alphabet). 18 April 2023: Built the loading screen, cynically nicked from Nick Faldo Plays The Open... the Amstrad CPC version. Made the musical cues that will need to be loaded in from outside (there isn't room to write it out as DATA statements on BASin!) - needed to update the HL/DE Sequencer to include pauses (the first time I've ever needed to do calculations with T-states - who said making crap games wasn't a learning process?) 19 April 2023: alpha24: Final code optimisations, and corrected mistakes, now that everything is in place. The hit-the-ball routine is entirely composed of single-letter variables and some are now recycled dummy variables. The original dummy variable Q has been eliminated (hence, always using X, Y and Z). 2,521 bytes remain after running through a round. alpha25: All the data lines in the 9000s deleted to make way for loading them externally, initially on a 128K so that this can be done from the RAM disc. Development continues as .szx snapshots - BASin is done for now. beta1: Transferred to 128K Spectrum, using RAM disc to load all the external files. beta2: Corrected some graphical problems when hitting out of bounds. beta3: Changed the surprise text for the hole in one on par 4 or 5 to machine code, thus hiding the surprise. RAMTOP is now moved down to 62588. 16,540 bytes are free with all those DATA lines deleted! beta4: added an extra intro screen, with a brief description of the game, as if golf wasn't straightforward enough. beta5: added a line of Microspeech into the endings. beta6: prepared the remaining listing to make a real tape. Then made the real tape, and corrected it. 20 April 2023: Made a microdrive version... scrapped it, as the Interface 1 clashes with the Currah Microspeech, which was the original point of the game! An interesting note, given the Geed Ending: apparently, God-Emperor Trump did play golf with Bryson DeChambeau once... and he had a bit of a meltdown. SAD! https://metro.co.uk/2021/03/22/raging-donald-trump-smashes-golf-club-into-the-ground-after-bad-swing-14285178/ MASHED POTATO!