Ancestors

Written by Foone🏳️‍⚧️ on 2025-01-02 at 06:26

tandy put their sound chip on the 1A interrupt? THE TIME SERVICES?

=> More informations about this toot | More toots from foone@digipres.club

Written by Foone🏳️‍⚧️ on 2025-01-02 at 06:27

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?

=> More informations about this toot | More toots from foone@digipres.club

Written by Foone🏳️‍⚧️ on 2025-01-02 at 06:38

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.

=> More informations about this toot | More toots from foone@digipres.club

Written by Foone🏳️‍⚧️ on 2025-01-02 at 06:56

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.

=> View attached media

=> More informations about this toot | More toots from foone@digipres.club

Written by Foone🏳️‍⚧️ on 2025-01-02 at 07:01

PRONOUNS DETECTED: THIS GAME IS WOKE

sadly they don't have they/them on here. What about the non-binary criminals, huh?

=> View attached media

=> More informations about this toot | More toots from foone@digipres.club

Written by Foone🏳️‍⚧️ on 2025-01-02 at 07:03

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

=> More informations about this toot | More toots from foone@digipres.club

Written by Foone🏳️‍⚧️ on 2025-01-02 at 07:22

I faked this screenshot but this is what I mean

=> View attached media

=> More informations about this toot | More toots from foone@digipres.club

Written by Foone🏳️‍⚧️ on 2025-01-02 at 07:30

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

=> More informations about this toot | More toots from foone@digipres.club

Written by Foone🏳️‍⚧️ on 2025-01-02 at 08:06

eh, I used 5 bytes. I don't need to impress anyone

=> More informations about this toot | More toots from foone@digipres.club

Written by Foone🏳️‍⚧️ on 2025-01-02 at 09:52

NORMAL CODE

random(*(byte )(undefined2 *)

                   (*(int *)(*(int *)0x39a6 * 0xe + local_c * 2 + 0x1d02) * 2 +

                   *(int *)(local_c * 2 + 0x24b)) - 1);

=> More informations about this toot | More toots from foone@digipres.club

Written by Foone🏳️‍⚧️ on 2025-01-02 at 09:55

I found another set of pronouns!

=> More informations about this toot | More toots from foone@digipres.club

Written by Foone🏳️‍⚧️ on 2025-01-02 at 09:56

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

=> More informations about this toot | More toots from foone@digipres.club

Written by Foone🏳️‍⚧️ on 2025-01-02 at 09:59

why? because they have strings like:

char* HE="He\0\0She\0"

char* HIS="His\0Hers\0";

char* HIM="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);

=> More informations about this toot | More toots from foone@digipres.club

Written by Foone🏳️‍⚧️ on 2025-01-02 at 10:00

I like how the game only asks your name, not your gender.

Player's don't have genders. Only thieves have genders.

=> More informations about this toot | More toots from foone@digipres.club

Written by Foone🏳️‍⚧️ on 2025-01-02 at 10:01

It's a prequel to Disco Elysium, and your gender is set to COP

=> More informations about this toot | More toots from foone@digipres.club

Written by Foone🏳️‍⚧️ on 2025-01-02 at 10:33

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?

=> More informations about this toot | More toots from foone@digipres.club

Written by Foone🏳️‍⚧️ on 2025-01-02 at 11:10

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));

}

=> More informations about this toot | More toots from foone@digipres.club

Written by Foone🏳️‍⚧️ on 2025-01-02 at 11:11

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?

=> More informations about this toot | More toots from foone@digipres.club

Written by Foone🏳️‍⚧️ on 2025-01-02 at 12:20

oh those poor people of Bamako! Someone stole their.

=> View attached media

=> More informations about this toot | More toots from foone@digipres.club

Written by Foone🏳️‍⚧️ on 2025-01-02 at 12:47

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

=> More informations about this toot | More toots from foone@digipres.club

Written by Foone🏳️‍⚧️ on 2025-01-02 at 12:53

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.

=> More informations about this toot | More toots from foone@digipres.club

Written by Foone🏳️‍⚧️ on 2025-01-02 at 12:55

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.

=> View attached media

=> More informations about this toot | More toots from foone@digipres.club

Written by Foone🏳️‍⚧️ on 2025-01-02 at 13:23

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

=> More informations about this toot | More toots from foone@digipres.club

Written by Foone🏳️‍⚧️ on 2025-01-02 at 13:23

there is no check for going past the end.

=> More informations about this toot | More toots from foone@digipres.club

Written by Foone🏳️‍⚧️ on 2025-01-02 at 13:24

so probably it uses the same trick for pronouns. The string I'm seeing is probably like: "He\0Him\0She\0Her\0"

=> More informations about this toot | More toots from foone@digipres.club

Written by Foone🏳️‍⚧️ on 2025-01-02 at 13:32

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.

=> More informations about this toot | More toots from foone@digipres.club

Written by Foone🏳️‍⚧️ on 2025-01-02 at 13:53

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

=> More informations about this toot | More toots from foone@digipres.club

Written by Foone🏳️‍⚧️ on 2025-01-02 at 14:08

they have invented a Pronoun Markup Language.

It's \x80 for He/She

It's \x81 for he/she

It's \x82 for his/her

so 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

=> More informations about this toot | More toots from foone@digipres.club

Written by Foone🏳️‍⚧️ on 2025-01-02 at 14:11

BOOOOOOOOOOOOO

=> View attached media

=> More informations about this toot | More toots from foone@digipres.club

Written by Foone🏳️‍⚧️ on 2025-01-02 at 14:16

in trying to hack myself into the game, it glitched and said I had "Hobby: Male"

no... I haven't done that in ages!

=> More informations about this toot | More toots from foone@digipres.club

Written by Foone🏳️‍⚧️ on 2025-01-02 at 14:39

I'm in the game now

=> View attached media

=> More informations about this toot | More toots from foone@digipres.club

Written by Foone🏳️‍⚧️ on 2025-01-02 at 15:32

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.

=> View attached media

=> More informations about this toot | More toots from foone@digipres.club

Written by Foone🏳️‍⚧️ on 2025-01-02 at 15:53

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=Seafood

what an odd binary

=> More informations about this toot | More toots from foone@digipres.club

Toot

Written by aburka 🫣 on 2025-01-02 at 17:08

@foone but they have two bits to store it?

=> More informations about this toot | More toots from aburka@hachyderm.io

Descendants

Written by Σ(i³) = (Σi)² on 2025-01-02 at 18:23

@aburka @foone

Every good binary needs two bits: A, B, both, neither

=> More informations about this toot | More toots from SvenGeier@mathstodon.xyz

Written by Foone🏳️‍⚧️ on 2025-01-02 at 22:44

@aburka 16, in fact.

=> More informations about this toot | More toots from foone@digipres.club

Proxy Information
Original URL
gemini://mastogem.picasoft.net/thread/113759859727844966
Status Code
Success (20)
Meta
text/gemini
Capsule Response Time
420.773721 milliseconds
Gemini-to-HTML Time
14.496289 milliseconds

This content has been proxied by September (3851b).