Well, some success. I think I figured out some kind of address for these types:
#ghidra #reverseengineering #win16

Back to my antics.. I think I seem to have figured out the RTTI stuff somewhat thanks to this resource:
http://hwreblog.com/projects/ghidra.html

#ghidra #reverseengineering #win16

Well, live and learn. There is actually a better search option which supports wildcards under: Search -> "Memory..." .

#ghidra #win16 #reverseengineering

If we look closely and chew through some endianness magic, we can now start searching for the "magic bytes" using the knowledge that `CALLF` instruction starts with 0x9a and the next four bytes is the address of the thunk.

One way so far is via Search -> "For Instruction Patterns" and looking up all the possible locations for these calls.
All this is manual work though, until I figure out a way to script this...

#ghidra #reverseengineering #win16

Some minor progress with Ghidra:

Firstly, it recognizes imports from various libraries (GDI, KERNEL and MMSYSTEM), but as it hasn't fully decompiled the game, most of the imports are marked as unused. On the image below `GDI::CREATECOMPATIBLEDC` is referenced from the code, but `GDI::CREATEDC` isn't.

So if we dig further, we can see that the library calls use `CALLF address_of_thunk` which in hex is `9a4000b811`...
#ghidra #reverseengineering #win16

Due to lack of funds and a need to edit #video (#Kdenlive), I #hacked my old non-#TPM #PC to run #Win11 (boo, hiss!)

For #retro #Win16 apps, I use #OTVDM.

And (#DOScember) to run even more ancient #MSDOS progs like they are #Win64 native (and because #NTVDMx86 is sterling, but can be a faff), I use #DosBox with this #commandline:

start /min DOSBox.exe z:\EXAMPLE.EXE -exit

More #wizardry (actually mostly #DoctorWho/#SFFH) at #CRRRRS: https://roymathur.com/podcast.html

#RemembranceoftheDaleks next.

Captain Roy's Rusty Rocket Radio Show: THE UK Geek Science Fiction, Fantasy, Horror, and Doctor Who Podcast

The podcast of Roy Mathur, author, podcaster, journalist, and banjoleleist, wherein the terribly geeky chap discusses science fiction, fantasy, and horror books, comics, movies, TV, games, and toys.

Cooperative multitasking, like in #Windows 3, is messy. If your #Win16 app needed to do anything that takes a long time, it would need to divide the long-running task into chunks small enough that each one takes only a few tens of milliseconds. Between each chunk, it would need to save the state of the long-running task, return to Windows, and wait its turn to run the next chunk. I never wrote Win16 code myself, but that couldn't have been easy.

#retrocomputing

Does anyone out there know of a gaming podcast like @dosgameclub but for #win9x and even late #win16 games? Like every month take a look at forgotten games from the pre-always-online era/ pre-Steam era of Windows gaming?

Talking about stuff like Heretic II and Dark Colony or whatever?

Does anyone have any good resources / documentation for writing winsock/tcpip code in VB3?
#winsock #visualbasic #vb3 #win16 #win16programming

i've been building a little Windows 3 VM with #DOSBox-X recently. originally to play with #LotusImprov but i ended up installing all ✨productivity✨ software i could think of. this website proved pretty useful: https://winworldpc.com/ it's got tons of old software, including some things missing from archive.org.

got any recommendations of what i can try? perhaps some open-source programs still have #win16 builds?

WinWorld: Welcome

WinWorld is an online museum dedicated to providing free and open access to one of the largest archives of abandonware software and information on the web.