Latest updates:
Lots of tidying up and testing still to do.
Jeremy
- 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.
Lots of tidying up and testing still to do.
Jeremy
Statistics: Posted by EdwardianDuck — Mon Sep 09, 2024 8:46 pm