tandy put their sound chip on the 1A interrupt?
-
I guess I could test it anyway. Move it to 9000:8000 and see what breaks. (like everything)
9000:8006 9a d7 05 b7 1f CALLF SUB_2000_0147
Hey ghidra I can read the machine code. That's CALL FAR 1fb7:05d7, not CALL FAR 2000:0147! WHY ARE YOU CONFUSED BY THIS?
-
9000:8006 9a d7 05 b7 1f CALLF SUB_2000_0147
Hey ghidra I can read the machine code. That's CALL FAR 1fb7:05d7, not CALL FAR 2000:0147! WHY ARE YOU CONFUSED BY THIS?
well, if nothing else, I think this has caused it to stop thinking there's jumps into the middle of functions.
so now I can just manually thunk every cross-segment call, by creating the 2000:0000 segment that ghidra is imagining exists -
well, if nothing else, I think this has caused it to stop thinking there's jumps into the middle of functions.
so now I can just manually thunk every cross-segment call, by creating the 2000:0000 segment that ghidra is imagining existsI'll have to write some code to find all the CALL 2000:xxxxs and set up matching thunks
-
I'll have to write some code to find all the CALL 2000:xxxxs and set up matching thunks
I have discovered the bellhop island of stability
-
I have discovered the bellhop island of stability
I was extracting the portraits of the people you talk to, and it turns out they're number 1-36. naturally I checked all 256 possible options.
but it turns out every thing above 37 either:
1. crashes
2. shows nothing
3. shows pixel gibberish.EXCEPT 238. 238 renders a bellhop perfectly, just like 5 does
-
I was extracting the portraits of the people you talk to, and it turns out they're number 1-36. naturally I checked all 256 possible options.
but it turns out every thing above 37 either:
1. crashes
2. shows nothing
3. shows pixel gibberish.EXCEPT 238. 238 renders a bellhop perfectly, just like 5 does
All 36 people you can talk to in Where in the World is Carmen Sandiego? (enhanced, DOS, 1990)
-
All 36 people you can talk to in Where in the World is Carmen Sandiego? (enhanced, DOS, 1990)
I'm kinda surprised they're so dithered. with the support for EGA/MCGA/VGA monitors, they could have pulled something like sierra did and encoded the dithering into their compression. Then when they're displaying on higher-colordepth displays they could swap it out for an intermediate color.
-
I'm kinda surprised they're so dithered. with the support for EGA/MCGA/VGA monitors, they could have pulled something like sierra did and encoded the dithering into their compression. Then when they're displaying on higher-colordepth displays they could swap it out for an intermediate color.
that'd also help because then they wouldn't be compressing dithering
-
that'd also help because then they wouldn't be compressing dithering
maybe they just mastered these at 16colors so they couldn't easily see what it'd look like
-
maybe they just mastered these at 16colors so they couldn't easily see what it'd look like
Would you like to visit the Sport Club, Marketplace, or THE ASCENDING TONE OF INFINITY?
-
Would you like to visit the Sport Club, Marketplace, or THE ASCENDING TONE OF INFINITY?
it has been zero days since Ghidra has done something I can't understand and seems to be obviously wrong.
I've got B8 B0 26: this decodes to mov ax, 0x26b0. a 16bit immediate, moving into a 16bit register.
-
it has been zero days since Ghidra has done something I can't understand and seems to be obviously wrong.
I've got B8 B0 26: this decodes to mov ax, 0x26b0. a 16bit immediate, moving into a 16bit register.
ghidra disassembles this as:
b8 b0 26 MOV uVar1 ,0x26b0uVar is defined as a ushort: a 16bit type.
-
ghidra disassembles this as:
b8 b0 26 MOV uVar1 ,0x26b0uVar is defined as a ushort: a 16bit type.
all makes sense, right? 16bit to 16bit!
so ghidra decompiles it as uVar1._0_1_ = 0xb0;
-
all makes sense, right? 16bit to 16bit!
so ghidra decompiles it as uVar1._0_1_ = 0xb0;
that's 8-bit to 8-bit! where did you get the idea this is 8bit, ghidra?
-
that's 8-bit to 8-bit! where did you get the idea this is 8bit, ghidra?
the most annoying thing?
this is picking between two strings to display, and those strings are "he" and "she".
EVEN IN 35 YEAR OLD COMPUTER GAMES I CANNOT ESCAPE GENDER PROBLEMS!
-
the most annoying thing?
this is picking between two strings to display, and those strings are "he" and "she".
EVEN IN 35 YEAR OLD COMPUTER GAMES I CANNOT ESCAPE GENDER PROBLEMS!
Since they devoted an entire word to gender, we can truthfully state that Where in the World is Carmen Sandiego? (enhanced, DOS, 1990) believes there are 65536 genders.
-
Since they devoted an entire word to gender, we can truthfully state that Where in the World is Carmen Sandiego? (enhanced, DOS, 1990) believes there are 65536 genders.
unfortunately due to an oversight it believes those 65536 genders are allocated as:
0: He/he/Him/him
1-65535: She/she/Her/her -
unfortunately due to an oversight it believes those 65536 genders are allocated as:
0: He/he/Him/him
1-65535: She/she/Her/herI've made a note to fix this, of course.
-
I've made a note to fix this, of course.
BTW, my plan for expanding the program is simple: I'm gonna bypass a lot of code/data, by stuffing my own allocation into the memory space of carmen, which'll load extra data off the disk, in a CUSTOM.DAT file
-
BTW, my plan for expanding the program is simple: I'm gonna bypass a lot of code/data, by stuffing my own allocation into the memory space of carmen, which'll load extra data off the disk, in a CUSTOM.DAT file
this'll be (relatively) easy to do, since it turns out this program only needs 432 KB, since it targets a 512 KB RAM machine.
Since it's no longer 1990, I think I can safely bump that up a bit? I won't need more than another 64 KB, which means I'll just bump the game up to 496 KB memory required. Completely doable in any 640 KB or more machine!