Here is my holiday hack on the great KEGS Apple IIGS emulator, which consists of implementing an SDL driver for video, sound, keyboard, and joystick. This should make the emulator portable to many more OSes (incl. BeOS, MacOS, Linux, Win32).
The code is based on the original KEGS, with modifications from the KEGS32 port (current version includes modifications up to kegs32r2)
I also tried to keep other display/sound/joystick drivers, and modified the code to get better driver abstraction. The resulting code can now switch _at_run-time_ between different drivers (there just had to be proper init/ shutdown for each of these).
Of course, I tried to integrate the Win32 code from KEGS32, though I didn't manage to make a compiled version that supports both SDL and Win32 (but SDL and X11 work, both on linux and cygwin for win32). Maybe because I don't know how the Win32 resources have to be compiled in the program.
The problem with SDL is that it has no graphic tookit, so I had to implement menus myself, and I did it in a "control-openapple-escape" way (just type control-openapple-tab to get to the menu). The implementation is SDL-specific right now, but it should be able to work with any video driver (I'm using the Apple II font!).
I also cleaned up the code a lot (prototypes declaration, static variables and functions), and hem... I decided to call it 0.61 (since so many things have changed).
The only visible difference with the original KEGS is the KEGS control panel, which can be reached by typing control-openapple-tab, as seen on these screenshots: 1, 2, 3.
You can also notice that the status lines are now using the Apple II font (the basic SDL library has no font support). Using SDL, KEGS can now also run in fullscreen mode (either 640x480 or 640x400).
I would like to add the following:
Here is the resulting code, which I tried on linux, and on MSWindows with the Cygwin compiler (I don't have VC++).
There is a patch for KEGS 0.63 that optimizes palette changes (which happen frequently in demos or games), but require a change in the SDL library. Please read carefully the instructions inside.
If anyone manages to compile and run it on anything other than Linux, Unix or Cygwin, please contact me.