One fun thing about writing an emulator is you go through a phase where unimplemented functions expose rarely-seen error messages, like this one from SkiFree:
this is definitely a #glitchforandi for which I am always proud to contribute
SkiFree running entirely in a browser using only JavaScript. The CPU is emulated. No Windows code exists; it hijacks API calls and runs hand-crafted JavaScript implementations instead. The windowing UI is HTML/CSS. It is not very efficient :) but it works. https://gitlab.com/wilkie/winbox.js
This is fun. The call to CreateCompatibleDC returns a pointer to a graphics context in AX. It then writes 1 to AL (lower half of AX) and passes AX to the next function. Which means AX is, like my life, HOT TRASH. But it works since that function magically masks away high bits.
THAT'S UNDOCUMENTED AND RUDE.
@wilkie Is that how skiers talk?
@thomasfuchs I don't know. I've never been skiing since I'm terrified of the yeti.
@wilkie is this a color space issue? I.e., are you on macOS?
@antifuchs first, these screenshots come from the same display device, so not a color correction issue. here, the palette colors that are loaded on the (emulated) device are dramatically different than what the internet had told me, for which I am using in my emulated device.
@wilkie hm, what I mean is: the program that’s running can choose what color space to use when rendering the palette. If your emulator is running on macOS, it has a choice which space to use (ran into this with color themes on emacs a while back).
I’m probably misunderstanding what is happening though /:
@antifuchs that's definitely an overall emulator concern, yes. CRT vs LCD color space issues are a thing in general. very troublesome! here, though, the palettes are just so very different. that can only be explained as 'one of us is very wrong' :)
@wilkie hah! Computers sure love to go, “one _or more of us_ are very wrong” in response (and walk backwards off a cliff)
@wilkie it says failed 🤔
@wilkie time to get it to run smartdrive
I dunno, that seems to conform to my memory of running Windows 3.11 on a 286.
Don't listen to that error message... it lies... here I am displaying every bitmap the program has loaded into memory as it loads them.