Quantcast
Channel: stardot.org.uk
Viewing all articles
Browse latest Browse all 2379

new projects and releases: text and graphic adventures • Re: Exploring (fiddling about with) The Quill

$
0
0
Latest updates:
  • Spent a couple of evenings integrating the DM compression into the interpreter and C# library.
  • Then realised it has some limitations or incompatibilities with what I'm now doing.
  • Spent 10 minutes backing it out again.
  • Roughed out splitting game specific 6502 code from the interpreter, broke down 6502 source code generated by the C# library into smaller blocks, partly for clarity and partly to help with memory management.
  • Compared the BBC and Spectrum manuals (rev A, can't find a rev C manual) and adjusted logic to match the Spectrum more closely. I had done some of this earlier. This is to support migrating logic from Spectrum games to the BBC.
    • Flipped the light/dark sense over (BBC is inverted).
    • Flag usage, but retaining the additional flags the BBC version supports.
    • Logic changes in GET, DROP, WEAR & REMOVE. Essentially the BBC version simplifies these, perhaps to save memory.
    • Changed locations numbers for WORN, CARRIED and NOTCREATED to match Spectrum.
  • Allow text fragments to be assigned a flag which determines which modes they apply to. For example, the Dunshalt Donut prints a line of what I guess are meant to be bricks using a UDG and a red background. That's fine in mode 1, but needs a fallback for mode 7.
  • Spent a couple of hours fiddling about with this trying to figure out how VDU 17,128 behaves when used at the very end of a line. Not quite what I expected but I managed to code round it using some shenanigans.

    Code:

        AGMessage M107 = game.AddMessage(107, "\n");    M107.AppendControlCodes(AGModeType.Bitmap, 23, 35, 0x10, 0x10, 0x10, 0xff, 0x01, 0x01, 0x01, 0xff);    M107.AppendControlCodes(AGModeType.Bitmap4Colour, 17, 129);    M107.AppendRepeatCharacter('#', 0);    M107.AppendControlCodes(AGModeType.Bitmap4Colour, 17, 128);    M107.AppendRepeatCharacter(AGModeType.Bitmap, ' ', 0);    M107.AppendControlCodes(AGModeType.All, 11);
  • Dropped code that gets the YN responses from the first characters of system messages 30 & 31 (or the first two characters of message 19 in the BBC version) and replaced with constants that can be changed per game. Not that you'd ever change them.
  • Dropped the code for the STAR opcode (BBC specific) as this is now inconsistent with the message storage. Easy enough to fix later, not that it's likely to be used.
  • Cleaned up the LD65 .CFG file so that it's easier to specify where things go in memory. Mostly just allowing for more segments.
  • Gave up worrying about trying to retain Model B compatibility, so it's Master 128 only from here on in. So nice to be able to use zero-page indirect addressing and use Y for something else.
  • Moving things around and allocating them to main memory or SWRAM is now relatively easy, so I guess one could write a game up to about 80Kb without too much difficulty.
At time of writing the Dunshalt Donut does just fit in main memory, running from $E00 to $78D5.

Lots of tidying up and testing still to do.

Jeremy

Statistics: Posted by EdwardianDuck — Mon Sep 09, 2024 8:46 pm



Viewing all articles
Browse latest Browse all 2379

Trending Articles