A partial, cross-platform implementation of the Macintosh Toolbox C API
Go to file
Iliyas Jorio ef94150e2d QD3D: Support 32-bit triangle point indices 2023-10-19 19:21:59 +02:00
.github README.md: Mention CMR 2022-06-27 21:05:53 +02:00
src QD3D: Support 32-bit triangle point indices 2023-10-19 19:21:59 +02:00
.editorconfig .editorconfig 2021-02-21 17:56:37 +01:00
.gitignore CMakeLists.txt: fixes for Visual Studio's built-in CMake 2021-03-21 11:54:09 +01:00
CMakeLists.txt MP3 playback support 2022-07-22 08:33:17 +02:00
LICENSE.md MP3 playback support 2022-07-22 08:33:17 +02:00
README.md README: Mention Bugdom 2 2023-10-08 23:51:52 +02:00

README.md

Pomme

A cross-platform implementation of the Macintosh Toolbox C API

Pomme is a partial, cross-platform implementation of the Macintosh Toolbox C API. It is designed to ease the porting of 90's/early 00's games written for MacOS 7-9 to modern operating systems. You can think of it as a cross-platform reimagining of Apple's own Carbon, albeit at a much reduced scope.

The goal isn't to achieve 100% source compatibility with old Mac C programs, but rather, to make it a bit easier to port them. I only intend to implement the bare minimum functionality required to keep a reasonable level of source code compatibility with the games I'm interested in porting.

Games ported with Pomme

License

Please see LICENSE.md

Features

Files and resources:

  • Access files on the host's filesystem with FSSpec structures.
  • Read/write data forks.
  • Access resources inside AppleDouble files (transparently presented as resource forks to application code).

QuickDraw 2D:

  • Load images from QuickDraw 2D PICT resources and files.
  • Manipulate ports.
  • Basic draw calls: lines, rects, bitmap text, CopyBits.

Sound Manager:

  • Load audio from AIFF & AIFF-C files and snd resources.
  • Supported audio codecs: raw PCM, ima4, MAC3, ulaw, alaw.
  • Use SndChannels to output audio thanks to the built-in software mixer (requires SDL).

QuickDraw 3D-ish:

  • Basic QD3D geometry structures and math routines.
  • Load 3D model data from 3DMF files.
  • Please note: Accurate source compatibility with QD3D is out of scope for Pomme. For a faithful implementation of QD3D, look at Quesa.

Misc:

  • Memory management routines.
  • Limited playback of QuickTime moov files (only Cinepak is supported).
  • Byte-swapping routines inspired from Python's struct format strings to convert big-endian structs to little-endian.
  • Basic keyboard/mouse input via SDL.