tandy put their sound chip on the 1A interrupt?
-
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
-
replied to Foone🏳️⚧️ last edited by
You see this little About dialog box? Guess how many times the DrawText function is called?
Once! and just to draw "Where in the World is Carmen Sandiego?".
The rest of the text is draw elsewhere, and I have no idea why. -
replied to Foone🏳️⚧️ last edited by
correction: it calls it once to draw "Where in the World is Carmen Sandiego?" but that's unrelated to the one on screen WHAT?
-
replied to Foone🏳️⚧️ last edited by
Ahh, it's using a different version of the DrawFont call: DrawFontN
-
replied to Foone🏳️⚧️ last edited by
the only problem with using Ghidra to hack children's games instead of, like, Serious Things like firmwares or malware or whatever, is sometimes you have to make a label named NUM_MOUNTAIN_CLIMBING_HINTS
-
replied to Foone🏳️⚧️ last edited by
(the number of mountain climbing hints is 3, by the way)
-
replied to Foone🏳️⚧️ last edited by
I think I accidentally hacked my debugger
-
replied to Foone🏳️⚧️ last edited by
It has a surprisingly robust UI engine. I swapped from BoldFont to SmalFont and the menu adapted perfectly.
-
replied to Foone🏳️⚧️ last edited by
The game loads the BoldFont first, then the SmallFont, then the NormalFont.
Annoyingly this isn't how they're laid out in memory:
It's SmallFont, then BoldFont, then NormalFont -
replied to Foone🏳️⚧️ last edited by
Weirdly, swapping the NormalFont for the SmallFont causes the printer text to be VERTICAL, for reasons I do not remotely understand!
-
replied to Foone🏳️⚧️ last edited by
@foone I dunno why but that gives me a "subtle thing that's wrong which leads into things turning to horror" vibe.
"Where in the world is Carmen Sandiego?"
she's right behind you
run. -
replied to Foone🏳️⚧️ last edited by [email protected]
font_alloc = malloc(local_a);
if (font_alloc == (void *)0x0) {
font_alloc = (void *)0x0;
}
Ahh yes. remember, if you get a null pointer back from malloc(), make sure to set that variable to NULL so it won't be left as... NULL?
-
replied to Plan A to Y last edited by
@Plan_A_to_Y the last thing a young ACME sleuth hears is a chuckle and "nothing personal, kid"
-
replied to Foone🏳️⚧️ last edited by
The three fonts
-
replied to Foone🏳️⚧️ last edited by
@foone inlined helper that optimises out to a null?