tandy put their sound chip on the 1A interrupt?
-
replied to Riley S. Faelan last edited by
@foone I can't quite remember which way MCGA would have fallen, either. It was kind of a halfway between CGA and (a subset of) VGA.
-
replied to Foone🏳️⚧️ last edited by
The Answer to the DRM questions for Where in the world is Carmen Sandiego? Enhanced (DOS, 1990) are, in no particular order:
23
Kent
dragon
calcium
1796
Warren
revenue
1792
Willard
1937
Crater
Tanzania
Hartford
Duluth
London
Gem
Silent
squeaker -
replied to Foone🏳️⚧️ last edited by
if ((0x80 >> ((byte)local_4 & 7) &
(int)(char)*(byte *)((int)((int *)param_1 + 1) + (local_4 >> 3))) != 0) {COULD YOU USE SOME MORE CASTS MAYBE?
-
replied to Foone🏳️⚧️ last edited by
oh it's because ghidra's near/far pointer support is shit.
I had param2 defined as a byte*32 and it was casting it to a byte* before using it
-
replied to Foone🏳️⚧️ last edited by
if I define it as byte* and let the calling convention implicitly define it as 32bit, it doesn't do the cast
-
replied to Foone🏳️⚧️ last edited by
well I found the decompression method.
as always, I hate it. decompression routines are probably my least favorite thing to reverse engineer
-
replied to Foone🏳️⚧️ last edited by
I think this compression is specifically designed for ASCII text, which is annoying because they've also got compressed images... which probably use a DIFFERENT COMPRESSION!
-
replied to Foone🏳️⚧️ last edited by
it looks like this chunk has length 256, which means 253 usable bytes, and it expands to 374 bytes.
Not the greatest compression. a little better than just doing 6-bit ASCII.
-
replied to Foone🏳️⚧️ last edited by
it's some kind of shifting bit mask but it starts at encoding values in 4 bits, then it can increase (or decrease, I guess) based on the input stream.
then it has an output filter, where if the number specified wasn't 8 bits, it's actually an index into a predefined text table
-
replied to Foone🏳️⚧️ last edited by [email protected]
the predefined table starts with NUL, space, then:
aetonisrdlhugfcwypbmk,vSA.T'PMxBCIRGDWHqE-zNFKL0j:51YJ8\U?73Q;2!469
\r\nOVXZ()*+"#$%&<=>/@[]^_` -
replied to Foone🏳️⚧️ last edited by
given that the most comment symbols are near the beginning, this is presumably a sort of lazy huffman coding
-
replied to Foone🏳️⚧️ last edited by
but I've got the predefined table, an input file, an output file, and now I need to write some python code to replicate this, hopefully without crying
-
replied to Foone🏳️⚧️ last edited by
"vs ses oa is isgit's tc eital and largest t u anhtA ttggh os nnotosnhrdsmarosogdn ss drte tishoth's isdhsceohtsnthminder of isgit's t nuorhdhtpast\x00 geru is slightltsn oaller than ndhd na and is o nnsgtgstbtst oa dotlalssaaolootbiaoht Sal gh, sonuhvia and sl ghh\x00isgit, ontvdn ss nhsiaalgarsnadlfnaatawlarst oadrlhrs i is a rugged land dooousr'casrbhe nrdsgs fountainsnht iah"
-
replied to Foone🏳️⚧️ last edited by
I mean, it's not 100% wrong, but it's not right either
-
replied to Foone🏳️⚧️ last edited by
that's supposed to read:
"\x03Lima is Peru's capital and largest city. A well-known landmark is the Archbishop's Palace, a reminder of Peru's colonial past\x00Peru is slightly smaller than Alaska and is bordered by Ecuador, Colombia, Brazil, Bolivia and Chile\x00Peru, once the center of the mighty Incan Empire, is a rugged land dominated by the Andes Mountains. Forests and jungles cover half its land area\x00" -
replied to Foone🏳️⚧️ last edited by
I somehow confused the dosbox-x debugger into not accepting letters anymore
-
replied to Foone🏳️⚧️ last edited by
it was a trivial off-by-one error.
I was doing saved_byte=input[3]but while I needed the 3rd byte, that's at input[2]
-
replied to Foone🏳️⚧️ last edited by
yess!
C:\DOSBox-X\drive_c\carmen\py>python datfile.py cities.dat --dump=12803 --decompress
"\x03Sydney, with a population of more than 3.3 million people, is Australia's largest city. A well-known sight is Sydney's distinctively designed Opera House\x00An island continent, Australia is nearly as large as the United States but has only one-fifteenth the population\x00The capital of Australia is Canberra, located in the southeast corner of the country between Sydney and Melbourne\x00" -
replied to Foone🏳️⚧️ last edited by
It starts with \x03 to indicate there's three strings: then it describes the city three times. at runtime it uses select_string function with a random input to select one of the three strings
-
replied to Foone🏳️⚧️ last edited by
okay now that I can decode the chunks (well, most of them) I can identify a lot more of them:
00 Name and (some other info)
01 ???
02 Image
03 City descriptions
04 Items to steal
10 ???
11&up: Hints leading here