tandy put their sound chip on the 1A interrupt? THE TIME SERVICES?
Conversation
Notices
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 15:26:45 JST Foone🏳️⚧️ -
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 15:27:58 JST Foone🏳️⚧️ I started reverse engineering Where in the World is Carmen Sandiego (Enhanced DOS edition) and I'm trying to find how it generates its random seeds so I search on int 1a and the first thing I find is it's doing TANDY SOUNDS?
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 15:38:15 JST Foone🏳️⚧️ Funny fact: I was trying to get an online assembler to spit out the machine code for "int 1a" but couldn't get it to, so I just went "fuck it, I can probably just do that in my head!"
Turns out I can. My brain is weird.
-
Andrew Zonenberg (azonenberg@ioc.exchange)'s status on Thursday, 02-Jan-2025 15:43:33 JST Andrew Zonenberg @foone For what, i386?
CD 1A
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 15:43:33 JST Foone🏳️⚧️ @azonenberg exactly yeah
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 15:56:51 JST Foone🏳️⚧️ Here's something I didn't know existed until just now: Where in the World is Carmen Sandiego checks your name against the list dossier list and rejects you if you use any of those names.
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 16:01:34 JST Foone🏳️⚧️ PRONOUNS DETECTED: THIS GAME IS WOKE
sadly they don't have they/them on here. What about the non-binary criminals, huh?
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 16:03:57 JST Foone🏳️⚧️ stretch goal: hack in at least on enby criminal with appropriate pronouns. maybe I'll just put myself in the game as one of the criminals you can apprehend
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 16:22:57 JST Foone🏳️⚧️ I faked this screenshot but this is what I mean
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 16:30:16 JST Foone🏳️⚧️ I think I might be able to do the hack I want by changing one byte.
I'm trying to change it so it has "daily challenges", and I think I can fix that by just switching a INT 1A from subfunction 00 to 04, making it seed the random function with the date instead of the ticks-since-midnight
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 16:43:40 JST Foone🏳️⚧️ @shtrom that's the price you pay for representation
-
Olivier Mehani (shtrom@piaille.fr)'s status on Thursday, 02-Jan-2025 16:43:41 JST Olivier Mehani @foone but... if you put yourself in as a criminal, you will no longer be allowed to play!
-
Andrew Zonenberg (azonenberg@ioc.exchange)'s status on Thursday, 02-Jan-2025 16:57:43 JST Andrew Zonenberg @foone guess my brain is weird too.
At one point I was thinking of getting car license plate 55 8B EC.
But decide not to because I'd want 8B E5 5D C3 on the rear plate if I did that.
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 16:57:43 JST Foone🏳️⚧️ @azonenberg cute
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 17:06:48 JST Foone🏳️⚧️ eh, I used 5 bytes. I don't need to impress anyone
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 18:52:51 JST Foone🏳️⚧️ NORMAL CODE
random(*(byte *)*(undefined2 *)
(*(int *)(*(int *)0x39a6 * 0xe + local_c * 2 + 0x1d02) * 2 +
*(int *)(local_c * 2 + 0x24b)) - 1); -
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 18:55:40 JST Foone🏳️⚧️ I found another set of pronouns!
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 18:57:02 JST Foone🏳️⚧️ I haven't figured out how this game stores gender, but I'm gonna go out on a limb and say it's like this:
male: 0
female: 4 -
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 18:59:17 JST Foone🏳️⚧️ why? because they have strings like:
"He\0\0She\0"
"His\0Hers\0"
"Him\0Her\0"so they can do like:
printf("Follow %s to %s lair, and capture %s alive!", badguy->name, HIS+badguy->gender, HIM+badguy->gender);
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 18:59:44 JST Foone🏳️⚧️ @DotMaetrix You mean the Strategic National Pronoun Reserve?
-
Dot Maetrix (dotmaetrix@chitter.xyz)'s status on Thursday, 02-Jan-2025 18:59:45 JST Dot Maetrix @foone fae suspect who's stolen all the other genders from the National Pronoun Repository
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 19:01:12 JST Foone🏳️⚧️ I like how the game only asks your name, not your gender.
Player's don't have genders. Only thieves have genders. -
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 19:01:46 JST Foone🏳️⚧️ It's a prequel to Disco Elysium, and your gender is set to COP
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 19:09:50 JST Foone🏳️⚧️ @Larymir When no one was looking, Foone took forty genders. She took 40 genders.
And that's terrible.
-
spooky Ske-lil-ton 🦇 (larymir@chaos.social)'s status on Thursday, 02-Jan-2025 19:09:51 JST spooky Ske-lil-ton 🦇 @foone those thieves are pretty good if they stole *all* the genders!
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 19:13:07 JST Foone🏳️⚧️ @jollysea I am definitely a member of the gender army
-
joël (jollysea@chaos.social)'s status on Thursday, 02-Jan-2025 19:13:08 JST joël @foone you're french and you're a member of the Gendermarie
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 19:14:18 JST Foone🏳️⚧️ @mkoek
yeah, it's only a game about world geography, why would anyone in nations that don't speak english want to play this? -
Mark Koek (mkoek@mastodon.nl)'s status on Thursday, 02-Jan-2025 19:14:19 JST Mark Koek @foone hope they’ll never have to translate (and that they do bounds checking on that gender value…)
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 19:19:27 JST Foone🏳️⚧️ @lydiafacts technically yes! as well as large number of neopronouns used by indexing into other strings, possible?
-
Lydia Trivia (lydiafacts@chaos.social)'s status on Thursday, 02-Jan-2025 19:19:28 JST Lydia Trivia @foone so it also supports e/im/is, he/er/er, e/e/e and no pronouns as genders 1, 5 and 3/6?
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 19:33:40 JST Foone🏳️⚧️ why does ghidra's "search by instruction pattern" default to BINARY?
what kind of a freak remembers the machine code for INT 21 on x86 in BINARY?
it's CD21h, not 1100110100100001!what are you, some kind of nerd?
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 20:10:58 JST Foone🏳️⚧️ I love reversing a string and it's:
void printString(char* str, int length);
and I go look what calls it, reverse that function, and it's:
void printStringSimple(char *str){
printString(str, strlen(str));
} -
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 20:11:30 JST Foone🏳️⚧️ it's like "aww, did someone have second thoughts about making PRINT always take a length, and got tired of having to manually calculate lengths so you just wrapped it?
and your compiler didn't inline SHIT?
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 21:21:11 JST Foone🏳️⚧️ oh those poor people of Bamako! Someone stole their.
-
Tim 🎮 (timixretroplays@digipres.club)'s status on Thursday, 02-Jan-2025 21:30:11 JST Tim 🎮 @foone stealing their can only be the diabolical work of one Carmen Sandiego
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 21:47:52 JST Foone🏳️⚧️ okay so when you start a game (well, technically when you restart), the game rolls 3 dice:
0-31: where the shit was stolen from
0-2: which item it is from that location
0-8: whodunnit -
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 21:53:23 JST Foone🏳️⚧️ like if you roll 0 on the first, you get Athens.
For the second one, it's:
0: mask of Priam
1: Achilles's heel
2: sibyl's secret. -
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 21:55:57 JST Foone🏳️⚧️ The last die is used as a lookup table into the dossier's list.
It's got 1 added to it so you won't get Carmen Sandiego, as a rookie at least. -
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 22:23:34 JST Foone🏳️⚧️ so the game uses a pattern like this:
char * RANKS="Rookie\0Sleuth\0Private Eye\0Investigator\0Ace Detective\0"and then latter they do:
char* your_rank = select_string(RANKS, player->rank);
and select_string is a confusing function to reverse engineer, but knowing the name I gave it gives it away: it advances through the list until it's on the nth string and returns it
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 22:24:02 JST Foone🏳️⚧️ there is no check for going past the end.
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 22:24:56 JST Foone🏳️⚧️ so probably it uses the same trick for pronouns. The string I'm seeing is probably like: "He\0Him\She\0Her\0"
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 22:32:28 JST Foone🏳️⚧️ Ghidra is officially sexist. It'll automatically detect the word "Female" and mark it as a string, but not the word "Male"!
Why? SEXISM!
or the fact the default minimum length for strings is 5 characters, so "female" is long enough but "male" isn't.
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 22:54:07 JST Foone🏳️⚧️ correction: there IS a check for going over the end, it's just not used in every place select_string is called. so it's sometimes-safe
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 22:55:13 JST Foone🏳️⚧️ @gwenthekween hah, whoops
-
Gwen, the kween :neofox_flag_transbian: :sheher: (gwenthekween@kitsunes.club)'s status on Thursday, 02-Jan-2025 22:55:14 JST Gwen, the kween :neofox_flag_transbian: :sheher: @foone@digipres.club You just made the funniest typo this year (so far at least). It doesn't detract in any way from the quality of your posting, but my brain is amused to think of the logical conclusion to a world where that wasn't a typo:
Because of a missing 0, makes it sound like the game has the pronouns: "he", "him/she", "her". meaning either you're bigender, or you have an incomplete set of pronouns -
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 23:09:13 JST Foone🏳️⚧️ they have invented a Pronoun Markup Language.
It's \x80 for He/She
It's \x81 for he/she
It's \x82 for his/herso a string will be "\x80 mentioned \x81 liked seafood and offered me a ride in \x82 motorcycle"
and it'll fill it out based on the pronouns of the suspect -
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 23:11:37 JST Foone🏳️⚧️ BOOOOOOOOOOOOO
-
lily 🏳️⚧️ (tauon@possum.city)'s status on Thursday, 02-Jan-2025 23:16:51 JST lily 🏳️⚧️ @foone@digipres.club you should make a mod where you change it to 0x03 and add they/them
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 23:17:04 JST Foone🏳️⚧️ in trying to hack myself into the game, it glitched and said I had "Hobby: Male"
no... I haven't done that in ages!
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Thursday, 02-Jan-2025 23:39:16 JST Foone🏳️⚧️ I'm in the game now
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Friday, 03-Jan-2025 00:32:19 JST Foone🏳️⚧️ I modified the game's NUM_GENDERS and found where it stores the database of criminals, so now you can find me if you search SEX=NB.
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Friday, 03-Jan-2025 00:54:07 JST Foone🏳️⚧️ so in addition to the 5 listed attributes (and their name), the game tracks one hidden attribute:
food preference.
There are only two options:
00=Mexican
01=Seafoodwhat an odd binary
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Friday, 03-Jan-2025 01:13:23 JST Foone🏳️⚧️ @ClarusPlusPlus "makes more sense than the gender binary" is a pretty low bar to clear
-
Clarissa | making Enigma Heart (clarusplusplus@peoplemaking.games)'s status on Friday, 03-Jan-2025 01:13:24 JST Clarissa | making Enigma Heart @foone still less weird than the gender binary
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Friday, 03-Jan-2025 09:50:56 JST Foone🏳️⚧️ @AMS only if I give my full name. I can just go by "foone" and it won't notice
-
AMS (ams@infosec.exchange)'s status on Friday, 03-Jan-2025 09:50:57 JST AMS @foone But now you can't play the game anymore.
-
vxo (vxo@digipres.club)'s status on Friday, 03-Jan-2025 23:22:46 JST vxo @foone i wonder if this is why the tandy sound stuff wasn't well supported by other software... I remember having a Sound Blaster in my Tandy 1000TL because not that much would use the onboard
-
Chartreuse (chartreusek@social.restless.systems)'s status on Friday, 03-Jan-2025 23:26:14 JST Chartreuse @foone clearly we need the compromise of octal. 315 061
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Friday, 03-Jan-2025 23:26:14 JST Foone🏳️⚧️ @ChartreuseK not even supported by this ghidra dialog. Binary or hex are the only options.
And note the weird part where it's "search by instruction pattern" but typing in instructions isn't possible.
You need the machine code for int 21h, not just "int 21h" -
Foone🏳️⚧️ (foone@digipres.club)'s status on Sunday, 05-Jan-2025 12:22:40 JST Foone🏳️⚧️ I'm thinking I might do a "full"(ish) disassembly of this game. I've thought for a long while (basically ever since I knew Where In North Dakota is Carmen Sandiego? existed) that there should be an SDK for making your own version of this game, for whatever arbitrary geographical area you want.
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Sunday, 05-Jan-2025 12:23:23 JST Foone🏳️⚧️ and of course there's no reason you would have to limit yourself to reality.
You could always do, like, "Where in Middle Earth is Carmen Sandiego?" -
Foone🏳️⚧️ (foone@digipres.club)'s status on Sunday, 05-Jan-2025 12:23:55 JST Foone🏳️⚧️ you go to Rivendell and talk to an Elf who says the perp was talking about how he wanted to collect "his precious"
-
deater (deater78@mastodon.social)'s status on Sunday, 05-Jan-2025 12:38:59 JST deater -
Foone🏳️⚧️ (foone@digipres.club)'s status on Sunday, 05-Jan-2025 12:38:59 JST Foone🏳️⚧️ @deater78 nice!
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Sunday, 05-Jan-2025 12:39:54 JST Foone🏳️⚧️ I say "full" in quotes because I don't think I need to reverse the whole game to make it customizable, just enough to let you customize the locations, bad guys, hints, search types, etc.
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Sunday, 05-Jan-2025 12:40:24 JST Foone🏳️⚧️ sadly they didn't design the game as a completely empty husk that just loads datafiles. That would have been the smart thing to do, since they could then trivially make new versions.
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Sunday, 05-Jan-2025 12:40:57 JST Foone🏳️⚧️ maybe instead of fully decompiling it, I just hack it to grab data from external files, then make a tool for making those files
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Sunday, 05-Jan-2025 20:12:37 JST Foone🏳️⚧️ ahh, the PC. No one else ever thought XORing your VRAM was a good idea
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Sunday, 05-Jan-2025 21:12:56 JST Foone🏳️⚧️ turns out this version of the game has impressive support for older video cards. Here's Hercules support, which looks horrible without aspect ratio correction!
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Sunday, 05-Jan-2025 21:20:04 JST Foone🏳️⚧️ wow, this is actually the first game I've seen actually use the VGA bios call to set the VGA palette. (int 10h, AX=1012h)
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Sunday, 05-Jan-2025 21:20:30 JST Foone🏳️⚧️ everyone else just programs the VGA card directly.
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Sunday, 05-Jan-2025 21:25:20 JST Foone🏳️⚧️ @whvholst Did it look like this?
-
Walter van Holst (whvholst@eupolicy.social)'s status on Sunday, 05-Jan-2025 21:25:21 JST Walter van Holst @foone Now I remember playing it on CGA...
-
Jernej Simončič � (jernej__s@infosec.exchange)'s status on Sunday, 05-Jan-2025 21:27:35 JST Jernej Simončič � @foone IIRC QuickBasic's PALETTE call also went through BIOS.
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Sunday, 05-Jan-2025 21:27:35 JST Foone🏳️⚧️ @jernej__s That'd make sense. it was never terribly fast, and it needed to run on absolutely everything DOS did, so why not use the slow BIOS calls?
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Sunday, 05-Jan-2025 21:53:08 JST Foone🏳️⚧️ so when the game starts, it loads:
ACME.DAT
CARMEN.DAT
MIDISND.DAT
DIGISND.DAT
CITIES.DATInterestingly, it uses the same code to load the last three, suggesting they're some kind of basic container format
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Sunday, 05-Jan-2025 23:12:55 JST Foone🏳️⚧️ @whvholst probably this version then:
https://archive.org/details/msdos_Where_in_the_World_is_Carmen_Sandiego_1985 -
Walter van Holst (whvholst@eupolicy.social)'s status on Sunday, 05-Jan-2025 23:12:56 JST Walter van Holst @foone It was around 1987, almost forty years ago, the telex looks familiar, the cartoon dialogs less so.
In conversation permalink -
Foone🏳️⚧️ (foone@digipres.club)'s status on Sunday, 05-Jan-2025 23:55:35 JST Foone🏳️⚧️ starting writing code to generate a JSON file of all the various switchable info in the EXE. Things like hobbies, hair colors, locations, etc.
In conversation permalink -
Foone🏳️⚧️ (foone@digipres.club)'s status on Monday, 06-Jan-2025 11:15:34 JST Foone🏳️⚧️ this blit function seems to take a useless first argument, a second argument that's the height, a third argument that's the width, and a fourth argument that doesn't seem to do anything.
notice anything missing? like... a lot of things?
In conversation permalink -
Foone🏳️⚧️ (foone@digipres.club)'s status on Monday, 06-Jan-2025 11:30:56 JST Foone🏳️⚧️ I think this game might be doing something weird where blit-source positions and destination positions are all globals, for some fucking reason
In conversation permalink -
Foone🏳️⚧️ (foone@digipres.club)'s status on Monday, 06-Jan-2025 11:41:09 JST Foone🏳️⚧️ I think it stores them inside the VGA driver? huh
In conversation permalink -
Foone🏳️⚧️ (foone@digipres.club)'s status on Monday, 06-Jan-2025 11:42:31 JST Foone🏳️⚧️ the game internally has 5 drivers (as of 2.2, I have other versions here and they're different): CGA, Hercules, EGA, Tandy, VGA.
In conversation permalink -
Foone🏳️⚧️ (foone@digipres.club)'s status on Monday, 06-Jan-2025 11:54:00 JST Foone🏳️⚧️ WHY ARE THERE TWO STRCATS
In conversation permalink -
Foone🏳️⚧️ (foone@digipres.club)'s status on Monday, 06-Jan-2025 11:59:35 JST Foone🏳️⚧️ @cadey redundant strcats
In conversation permalink -
Xe :verified: (cadey@pony.social)'s status on Monday, 06-Jan-2025 11:59:36 JST Xe :verified: In conversation permalink Attachments
-