How do Win 3.1 applications work in Wine?
wine-staging.com
wine-staging.com
http://news.softpedia.com/news/Linux-Kernel-3-14-Breaks-Wine...
https://bugs.winehq.org/show_bug.cgi?id=36664
Not that it matters much anyway, since The Neverhood works in ScummVM now. But in practice Wine now better supports such application than any recent Windows itself.
static LRESULT WINAPI MCIWndProc16(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
switch (msg)
{
case MCIWNDM_SENDSTRINGA:
lparam = (ULONG_PTR)MapSL(lparam);
break;
case MCIWNDM_SETTIMEFORMATA:
lparam = (ULONG_PTR)MapSL(lparam);
...
All caps for typedefs in C is just evil. And this example doesn't even have Hungarian notation. static LRESULT WINAPI MCIWndProc16(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
And even then MS couldn't decide whether to use message (MSG struct), Msg (SendMessage), uMsg (WindowProc) for the second variable name. Sometimes they would use hwnd as well. I remember it all being very, very confusing when I was learning to program because it was inconsistent in so many ways.In a semi-related note, Raymond Chen's blog (1) is great for diving into the history of the Windows API and its many quirks and gotchas.
Everybody else uses either camelcase or snakecase for C types, so a type used to transmit information about zombie bites would be something like ZombieBiteDescriptorRef or zombie_bite_desc_t ...
But on Windows, the type would be ZOMBIEBITEDESCRIPTOR. And typically a variable's name would be prefixed with the type, Hungarian notation style:
ZOMBIEBITEDESCRIPTOR *pzbdFreshBite = WDGetLatestBiteEx(0, 0, NULL, NULL, 0);
...
It just looks so bad when you're used to the other C styles.It's excruciating on my eyes.
http://www.deltasoft.com/downloads-gemworld.htm
The actively developed fork of it for the Atari ST and emulators is here: http://emutos.sourceforge.net/en/
http://piumarta.com/software/maru/
it makes C much more loveable.
ps: I'd love to see other beautiful C codebases. (ZFS ain't bad)
See also: https://news.ycombinator.com/item?id=11005003 -- It's not only C, but there are some C codebases on there.
This is not my area of expertise, but Lua, LuaJIT, and Redis are quite nice imo.
This is, like, #99 on the list of problems. #99... out of 50!