Steve Nickolas
2024-01-03 13:16:29 UTC
OK, this is going to get weird. The tl;dr of it is that I'm wondering if
there's a tool to create self-decompressing (like what upx does) binaries
for CP/M-80 (i.e., a CP/M executable cruncher). I'll get into the gories.
I've been working on porting some games to a system (Nabu) that runs CP/M
3.1 - the call at 5 is to $BA06. (There are two other unofficial ports of
CP/M, both of 2.2, and one of them I'll probably need to figure out the
equivalent value; the other I don't care about.)
For one of them, I've been working on trying to expand it from the source
version's (MSX) 76 levels to the full 150. I don't think there's memory
to have all 150 and still enough room to load the program from CP/M. (The
level storage format is kind-of sparse and wasteful, but easy to figure
out. Basically, it's BCD.) I decided to include 120 levels.
But I was wondering about whether, using an executable cruncher, I could
try to include the whole set of 150.
(The other method - to store them in a file and load them on the fly, like
the original game on the Apple ][ - would require a lot more refactoring
of the code to move where scratch RAM is located.)
-uso.
there's a tool to create self-decompressing (like what upx does) binaries
for CP/M-80 (i.e., a CP/M executable cruncher). I'll get into the gories.
I've been working on porting some games to a system (Nabu) that runs CP/M
3.1 - the call at 5 is to $BA06. (There are two other unofficial ports of
CP/M, both of 2.2, and one of them I'll probably need to figure out the
equivalent value; the other I don't care about.)
For one of them, I've been working on trying to expand it from the source
version's (MSX) 76 levels to the full 150. I don't think there's memory
to have all 150 and still enough room to load the program from CP/M. (The
level storage format is kind-of sparse and wasteful, but easy to figure
out. Basically, it's BCD.) I decided to include 120 levels.
But I was wondering about whether, using an executable cruncher, I could
try to include the whole set of 150.
(The other method - to store them in a file and load them on the fly, like
the original game on the Apple ][ - would require a lot more refactoring
of the code to move where scratch RAM is located.)
-uso.