after some work, I am updatig the port to version 0.33, The zip contains the source code and the D77 virtual file.
Now the game has some basic blocks to work with:
- a subroutine to manage the changes from one location to another
- Showing conversations and erasing those four text lines
- event control routine to enable conversations or locations changes ...
By now only events in 1st screen (House) and changing to the 2nd one (Car)
To erase 'old' Brody (the one that was at the end of previous screen) I have created a subsystem function that sets to $ff all bytes inside the
rectangular area used by Brody in both planes (green, red)
Text - conversations has been a real pain (to me)
First try - I sent four commands to the subsystem in order to write four lines with 42 spaces.
This worked, but I felt it was a bit too slow. Then I wanted to create a function to erase everything with only one command
but, where the heck are the text bytes in memory???
I found that the ASCII codes were saved at these positions:
Line 16 from $C500, line 17 from $C550, line 18 from $C5a0, line 19 from $C5f0
But writting $00, $ff or whatever value here does NOT affect the screen #$%&#
Analyzing the graphic memory (VRAM), I found out that the character's bitmaps are in the three planes like that:
Line 16 from $B200 using 10 rows until $B51F. Line 17 from $B520 until $B83F
Line 18 from $B840 until $BB5F. Line 19 from $BB60 until $BE7F
So, the command sets to $ff (white color) the rectangle occupied by the four lines with 42 chars each one, in the three planes.
This is fast enough, and will be used as is. This seems to tell us that we could only use for code this range: $c000-$c4ff
because from $c500 on, the system uses that RAM to save ASCII data (console workspace)