open-sosaria is a PC engine reimplementation project focused on the original Ultima (1981) Apple II release, first published by California Pacific Computer Company.
Recreate the original game behavior on modern PCs while preserving historical mechanics and data compatibility.
- This project is released under the MIT License.
- This is an independent, non-commercial fan reimplementation.
- The repository does not include original game assets, ROMs, manuals, or disk images.
- You must provide your own legally obtained Apple II disk images.
To run the future engine implementation, you must supply:
disk1.dskdisk2.dsk
Expected location (planned convention):
bin/disk1.dsk
bin/disk2.dsk
If files are missing, the runtime should fail with a clear error message.
- Game: Ultima (later known as Ultima I: The First Age of Darkness)
- Original release: 1981
- Original platform: Apple II
- Original U.S. publisher: California Pacific Computer Company
- Creator: Richard Garriott
- C99
- GLFW3 + OpenGL bootstrap window
- Cross-platform Makefile
Linux:
sudo apt install build-essential pkg-config libglfw3-dev libgl1-mesa-devmacOS:
brew install pkg-config glfwWindows:
- Use an MSYS2 MinGW-w64 shell (
UCRT64recommended) - Install
gcc,make,pkgconf, andglfwfrom MSYS2 - Manual fallback: install GLFW to
C:/CLibs/includeandC:/CLibs/libs
See BUILDING.md for detailed build instructions.
make # Release build
make debug # Debug build with symbols
make clean # Clean build artifactsOn some MSYS2 setups, use mingw32-make if make is not available in PATH.
./bin/open-sosariaThe engine now includes:
- Full Towns and Castles: All towns and castles are fully implemented with feature parity to the original Apple II release.
- Overworld (Nearly Complete): Overworld map, player movement, and collision are implemented. The only major features missing are the Time Machine and Space Shuttle.
- Disk Verification: Validates that
program.dskandplayer.dskexist and contain the required Apple II Ultima files with correct sizes. - Disk Loader Scene: Core disk loading flow is working and displays status messages during boot (file verification and error messages).
- Asset Extraction: Reads and parses DOS 3.3 disk catalogs and file structures from the Apple II disks.
- Title Splash Screen: Extracts and renders the title screen picture (
PIC.ULTIMATUM) from the disk images. - Character Generator: Character creation and saving is working.
- Rendering Pipeline: OpenGL-based 2D graphics rendering via GLFW.
- Complete the overworld by implementing the Time Machine and Space Shuttle mechanics.
- Implement the Dungeons.
- Develop the Space Minigame.
- Create the Mondain Encounter (final boss battle).
- Continue refining game logic, sprite rendering, and Apple II game mechanics.
Engine behavior findings and reinterpretation decisions are documented in docs/engine-reinterpretation-notes.md.