I've done some more testing. Spaze Invaders now has a functioning DCSE8 header
Also, the [ON]+[PRGM] infinite ERR:MEMORY loop appears to be fixed.
There appears to still be some memory loss problems, unless I'm missing something. Here are the detailed actions & results:
- 3466 bytes free RAM
- Ran DCSE8 fine both with [APPS] and [ON]+[PRGM]
- Ran Calcuzap from DCSE desktop, no problem
- 3425 bytes free RAM, but no new variables? Lost 41 bytes?
- Ran Calcuzap with home run, no problem
- 3416 bytes free RAM (makes sense, 9 bytes for "prgmCALCUZAP" last entry)
- Ran PCSEBALL from DCSE desktop
- 3375 bytes free RAM - lost 41 bytes again?
- Ran Calcuzap from DCSE, no RAM lost this time (still 3375 free)
- Created a dummy matrix to consume RAM, left with 646 bytes free
- Ran DCSE with [ON]+[PRGM], quit, lost 23 bytes? (623 bytes free)
- Ran Calcuzap with home run, no problem (still 623 bytes free)
- Ran Merth's Snake from DCSE desktop, got memory error after welcome screen, pressed goto and went to the line :Text(0,0,"Score: ",0
- Quit back to DCSE, back to TI-OS
- 130 bytes free RAM (463 bytes of variables were created, so 30 bytes lost?)
- Edited matrix to get down to 76 bytes free RAM
- DCSE loads fine from [APPS]
- ERR:MEMORY when using [ON]+[PRGM], but successfully returned to TI-OS
- 35 bytes free RAM (lost 41 bytes again, is this something to do with the [ON]+[PRGM] interrupt hook?)
EDIT (possible DCSE8 half-res mode bug): With the half-res mode setting in the header, this appears to also affect LCD register $03, specifically I think bit 3 of this register (refer
here on WikiTI). When I use the DCSE8 half-res setting, my sprites are all drawing sideways, but I can rectify this by setting the default value of $1038 to LCD register $03 at the start of my program. Is this a mistake or working as intended?