tandy put their sound chip on the 1A interrupt?
-
replied to Foone🏳️⚧️ last edited by
@foone not sure if you could use it for older programs, but have you ever used Time Travel Debugging?
-
replied to Foone🏳️⚧️ last edited by
GOT YOU, YOU SON OF A BITCH! I FOUND YOU.
-
replied to Foone🏳️⚧️ last edited by
it's in a function I already found, temporarily named "blit_related".
I guess they don't decode the image until RIGHT before it needs to go up on the screen!
-
replied to Foone🏳️⚧️ last edited by
if definitely decompresses and then blits the image as two parts, which aren't evenly sized, and it starts from the bottom
-
replied to Foone🏳️⚧️ last edited by
I think they're just trying to keep their RAM usage down by not having both halves in memory at once
-
replied to Foone🏳️⚧️ last edited by
@foone this sounds like a job for whatever scripting the debugger supports?
-
replied to a kilo of saucepans (rakslice) last edited by
@rakslice
new side project: add scripting to this debugger -
replied to Foone🏳️⚧️ last edited by
wait is this image format vertically interlaced!?
-
replied to Foone🏳️⚧️ last edited by
It loads the half-width version, then a few functions later, it's been replaced with a full-width version.
Strange! -
replied to Foone🏳️⚧️ last edited by
wait no, the colors are wrong... I bet I'm seeing it decompress the binary, but that's using the full width of the bytes. it then gets expanded out to a 16-color image.
-
replied to Foone🏳️⚧️ last edited by
well the good news is that I think I've found the decompress_image function. the bad news is that now I have to reverse engineer it
-
replied to Foone🏳️⚧️ last edited by
it's currently doing the obvious thing for a decompressor to do:
write the byte 04 every 69 bytes -
replied to Foone🏳️⚧️ last edited by
oh sweet jesus, that's the left two pixels of the image.
it's loading the image vertically!at least it's top to bottom.
-
replied to Foone🏳️⚧️ last edited by
yeah, doom did that too, but Doom was a 2.5D image that had to do pseudo-raycasting.
THIS GAME DOES NOT
-
replied to Foone🏳️⚧️ last edited by
@foone it's the most efficient way to render images in planar EGA/VGA video modes. So clearly that's what you need to use for a game that's mostly static screens
-
replied to Niko (lethal_guitar) last edited by
@lethal_guitar yeah. I guess it's faster to draw, but given that it's static scenes... The disk access is gonna take longer!
-
replied to Foone🏳️⚧️ last edited by
it allocates a 1024 byte buffer, then makes a pointer to the end of it, minus -0x42?
why would you need a link to the end of a new, freshly cleared buffer, minus 62?
-
replied to Foone🏳️⚧️ last edited by
I think the memory allocation system here is that every malloc returns 2 extra bytes, which is a pointer to the previous block.
unless it's an odd number, in which case it's a free block. and pointer to the previous block, once you make it even again -
replied to Foone🏳️⚧️ last edited by
I hate dealing with the internals of memory allocation systems. I prefer to leave that to smarter people than me