This page is a wiki. Please login or create an account to begin editing.
This is SDL2, an extremely popular library used for building multimedia apps and games.
For classic MacOS 7/8/9 m68k and ppc, using Retro68. CodeWarrior support is broken but could be fixed "relatively" easily. Also includes AmigaOS 3 for m68k support, and should work on related systems.
https://github.com/laulandn/sdl2macos9
(Obviously Mac Finder file creators and types and resource forks are lost there.)
I discussed what I worked on and kept a running commentary over at System7Today for a while:
SDL2 for PPC MacOS 9 efforts...
Works well enough to port 2d games (several attempts at various stages are included as separate downloads), and speed is comparable to SDL 1.2.
I'm pausing active development, and consider it about 2/3 done. If anyone is interested in finishing, or using this to port a game, leave a note or contact me, and we'll talk.
What remains to be done:
OpenGL: Hooks in video driver are present and called, but no driver exists for either MacOS or Amiga.
Audio: Non-functional skeleton driver for MacOS (disabled SDL 1.2 driver source is in tree ready to be ported). Seems fully functional on Amiga.
Joystick: Non-functional skeleton driver for MacOS (disabled SDL 1.2 driver source is in tree ready to be ported). No support on Amiga.
Threads: Some "wait" functions are not implemented correctly on MacOS, works as well as cooperative can be expected. There seem to be a few bugs on Amiga.
Keymap decoding: On both Mac and Amiga I never finished this properly, and just hard coded the barest minimum to get games working.
Misc: Timers not fully tested. Loadso never tested. Some file funcs could be better.
For SDL2_image, SDL2_mixer, SDL2_gfx, and SDL2_ttf:
Only provided as source, no binaries, because they are dependent on external libraries (such as libpng, flac, etc etc), which will differ on my system vs yours, sorry. For Retro68 only, assumes you have the toolchain installed in ~/Retro68-build/toolchain. Use "configurer68", "configurer68ppc" or "configureamigaos3", then "make". Can use "installr68" and "installr68ppc" to install in the correct places, or copy yourself. Support for file formats varies, but should work, minimum configured by default.
Dev notes: Getting just SDL2 itself building, did take a lot of effort, but it was mostly "mechanical", dealing with the foibles of CodeWarrior, creating project files from scratch, things it couldn't handle, "simple" things like headers missing that are standard on more modern systems, etc. The first step was doing that with all "dummy" drivers. Was a bit shocked I got even that far. The results did absolutely NOTHING in the test programs. With a dummy video driver, they don't even try to set up textures, etc.
The key missing part was a Classic Mac OS "video" driver, which also includes event handling. I determined it was not possible to "port" the SDL1 driver due to too many changes in paradigms of SDL itself. Once I'd sketched a new one out, and got it hooked into the proper places, the debug output showed the test programs actually working. I then started adding basic Mac OS implementations. This effort is in src/video/macosclassic. (I used the QNX driver as a skeleton as it was the smallest and easier to understand.)
See Simple DirectMedia Layer (SDL) 1.2 and SDL 1.2 Add-On Libraries for the older, "supported" version.
Compatibility
Architecture: 68k PPC PPC (Carbonized)
MacOS 9 PPC (older also works, depends on your compiler).
MacOS 7.5+ M68k (but should work on 7.0 and probably even 6).
AmigaOS 3 M68k (probably others). Use "make -fMakefile.amigaos3".
(Should also build on modern MacOS X and Linux using standard configure).
CodeWarrior Pro 6/7/8. Carbon in CW8 only.
Retro68, using included "Makefile.r68" and "Makefile.r68ppc" files (for each arch).
("make -fMakefile.r68 install" "make -fMakefile.r68ppc install" will install in Retro68 toolchain)
"Makefile.r68carb" for CFM and "Makefile.carbon" for Mach-O do Retro68 Carbon builds.
(Mach-O video driver not fully working yet).