Go to file
Elliot Nunn caf4716632 Use tempfiles for disk image preparation
Previously these intermediates were placed in the build directory but
immediately deleted. Unless we are going to make them easily available
for inspection (hopefully not often required), they should just go in
/tmp.
2019-07-17 11:21:34 +08:00
base/SuperMarioProj.1994-02-09 Bring in sources, and document 2019-06-29 23:17:50 +08:00
bin Use tempfiles for disk image preparation 2019-07-17 11:21:34 +08:00
patchset Preserve original include-file case names 2019-07-12 20:27:53 +08:00
.gitignore Add gitignore 2019-06-30 01:26:03 +08:00
readme.md Bring in sources, and document 2019-06-29 23:17:50 +08:00

Introduction

The SuperMario sources (passed around as "System 7.1") are interesting reading, but they cannot be built as-is. This project aims to produce several modifications to SuperMarioProj ("patchsets") that can be applied to the code and compiled into something useful.

Requirements

  • Python 3 (use pip to install the macresources and machfs packages)
  • Mini vMac

Hacking

To work with a patchset, it must be "deepened" into a worktree:

bin/deepen Custer custer-hacking

When the worktree destination contains no path separators, it will be placed in worktree/ (Git-ignored). I suggest naming worktrees in lowercase to help avoid confusion with patchset names, which are capitalised.

Hack on worktree/custer-hacking to your heart's content. When you are ready to build, put the (escaped) path to your Mini vMac binary in bin/vmac_path.conf, and run ./.build RISC inside the worktree. This helpful little wrapper passes your arguments to bin/build, which in turn passes them to the MPW instance inside Mini vMac.

The commit history of a worktree matches the sequence of patch files in a patchset. This system is intended to impose some structure on the bewildering array of changes that have been made to the original sources. These changes have been figured out by reversing released binaries either newer or older than the source dump. They are grouped according to function (e.g. "Sources", "Build system") rathen than chronological order.

To preserve your changes to the commit structure, flatten them back into the original patchset:

./.flatten

Bugs

  • Each patchset should have its own clear build instructions.
  • There is no way to chain patchsets.

Questions and Contributions

...Are very welcome! Open a GitHub PR/issue, or join us on our retro Mac-hacking mailing list:

https://lists.ucc.gu.uwa.edu.au/mailman/listinfo/cdg5