# Third-Party Licenses This file inventories every third-party component JoeyLib depends on, either at runtime (linked into the produced binaries) or at build / test time. Components are grouped by role; within each group entries list the platforms that consume the component, the upstream URL, and the license. When upstream license terms change, update the corresponding row here. --- ## Runtime libraries (linked into joeylib output binaries) These ship as part of, or are linked into, an executable built by JoeyLib. License compatibility for these matters most. ### libxmp-lite - **Used on:** DOS, Atari ST - **URL:** - **License:** MIT - **Role:** ProTracker / Amiga MOD replayer + SMIX SFX overlay. Linked into AUDIO binaries on the chunky-display platforms. - **Installed at:** `toolchains/opt/libxmp/` (installer component `libxmp`) ### NinjaTrackerPlus (NTP) - **Used on:** Apple IIgs - **URL:** (downloads from ) - **License:** No explicit license in the source distribution; written by Jesse Blue (NinjaForce). Treated here as free for use; consult upstream before commercial redistribution. - **Role:** Apple IIgs Ensoniq DOC `.NTP` module replayer + SFX streamer. Merlin32-assembled into `ntpplayer`, which ships on the disk next to each IIgs program and is loaded at run time. - **Installed at:** `toolchains/opt/ntp/` (source; installer component `ntp`). ### PTPlayer - **Used on:** Amiga - **URL:** (author Frank Wille, ) - **License:** Public Domain - **Role:** ProTracker MOD replayer + `mt_playfx` SFX channel for the Paula audio HAL. - **Installed at:** `toolchains/opt/ptplayer/` (installer component `ptplayer`) --- ## Build-time toolchains (NOT linked, used to produce binaries) These run on the developer's machine to compile / assemble / link JoeyLib for each target. They are not redistributed inside the produced game binaries. ### llvm-mos (clang / llvm-mc / link816 w65816 toolchain) - **Used on:** Apple IIgs - **URL:** - **License:** Apache License 2.0 with LLVM Exceptions (the upstream LLVM license). - **Role:** clang C compiler targeting the 65816, plus llvm-mc for assembling hand-written `.s` files and link816 for producing OMF S16 executables. Driven by `make/support/iigs/clang-build.sh`; the toolchain root is located via the `LLVM816_ROOT` environment variable. - **Installed at:** `toolchains/opt/llvm816/` (installer component `llvm816`) ### Merlin32 - **Used on:** Apple IIgs - **URL:** - **License:** Freely distributed by Brutal Deluxe Software (Olivier Zardini, Antoine Vignau). Source published with no formal open-source license header -- Brutal Deluxe's "open source philosophy" but copyright is retained. Treat as "free to use, redistribute as part of a build chain; ask before forking commercially." - **Role:** 65816 cross-assembler. Builds NinjaTrackerPlus. - **Installed at:** `toolchains/opt/merlin32/` (installer component `merlin32`) ### Bebbo m68k-amigaos GCC toolchain - **Used on:** Amiga - **URL:** - **License:** GNU GPL v2 (gcc, binutils, libnix); per-component copyrights listed in upstream `README.md`. Includes assets covered by individual permissive notices (Roadshow, fd2pragma public domain, ira freeware, etc.). - **Role:** AmigaOS HUNK-format gcc + binutils + libnix used to compile the Amiga port and link against PTPlayer. - **Installed at:** `toolchains/opt/amigaGcc/` (installer component `amigaGcc`) ### vasm - **Used on:** Amiga (PTPlayer only) - **URL:** - **License:** vasm custom license -- (c) Volker Barthelmann; free for non-commercial use, plus an explicit **commercial-use exception for M68k + AmigaOS targets** (see vasm distribution README). Other commercial use requires written permission. JoeyLib's only remaining vasm invocation is `ptplayer.asm` on the Amiga path, which falls under the M68k+AmigaOS exception. - **Role:** Assemble third-party `ptplayer.asm` (Frank Wille's Devpac/vasm-syntax source). Our own `.s` files are GAS syntax and go through `m68k-amigaos-as` (binutils, GPL) instead. - **Installed at:** built with the Amiga GCC toolchain (AmigaPorts `vasm` sub-project), `toolchains/opt/amigaGcc/bin/vasmm68k_mot` ### m68k-atari-mint GCC toolchain (Thorsten Otto builds) - **Used on:** Atari ST - **URL:** (gcc upstream: GNU; mintlib: ) - **License:** GNU GPL v2 (gcc, binutils); mintlib is a mix of GPL and permissive (per-file headers). - **Role:** GEMDOS-native gcc + binutils + mintlib used to compile the Atari ST port. - **Installed at:** `toolchains/opt/mintGcc/` (installer component `mintGcc`) ### DJGPP (build-djgpp packaging) - **Used on:** DOS - **URL:** (DJGPP upstream: ) - **License:** Build script GNU GPL v3; bundled gcc/binutils GNU GPL v2; DJGPP runtime libraries (libc) are mostly public-domain or permissive -- see DJGPP `readme.1st`. - **Role:** 32-bit protected-mode gcc cross-compiler producing COFF binaries that run on 386+ DOS via DPMI. - **Installed at:** `toolchains/opt/djgpp/` (installer component `djgpp`) ### CWSDPMI - **Used on:** DOS - **URL:** - **License:** Custom redistribution terms (Charles W. Sandmann, (c) 1995-2010). Binary may be redistributed without source provided the executables are unmodified and end users are notified of source availability -- full terms in `cwsdpmi.doc`. Source is GPL-licensed if distributed. - **Role:** Stubbed-into-binary DPMI server for DJGPP-compiled DOS executables (via `embed-dpmi.sh`). - **Installed at:** `toolchains/opt/cwsdpmi/` (installer component `cwsdpmi`) ### NASM - **Used on:** DOS - **URL:** - **License:** 2-clause BSD - **Role:** Assembler for x86 inline-asm support files in the DOS port. - **Installed from:** the Linux distribution's `nasm` package --- ## Test-time emulators (not shipped, not linked) Used by `joey-run` and the test gates to run the produced binaries on the developer's machine. Not part of any redistributed artifact. Installed by `./install.sh install emulators`. ### MAME - **Used on:** Apple IIgs (apple2gs driver) and Sharp X68000 (x68k driver) - **URL:** - **License:** GNU GPL v2+ (GPL-2.0-or-later) plus a 3-clause BSD alternative for some components. - **Installed at:** `toolchains/opt/mame/`, built from the 0.264 release with the patches in `installer/patches/mame/` (installer component `mame`). ### Hatari - **Used on:** Atari ST - **URL:** - **License:** GNU GPL v2 - **Installed at:** the distribution package on Debian and Ubuntu; on Fedora, `toolchains/opt/hatari/`, built from the 2.4.1 source (installer component `hatari`) ### DOSBox Staging - **Used on:** DOS - **URL:** - **License:** GNU GPL v2+ - **Installed at:** `toolchains/opt/dosbox/` (the project's Linux release; installer component `dosbox`) ### FS-UAE - **Used on:** Amiga - **URL:** - **License:** GNU GPL v2 (UAE codebase) - **Installed at:** the distribution package on Debian and Ubuntu; on Fedora, `toolchains/opt/fsuae/`, built from the 3.1.66 release (installer component `fsuae`) ### EmuTOS - **Used on:** Atari ST (TOS replacement for Hatari) - **URL:** - **License:** GNU GPL v2 - **Installed at:** `toolchains/firmware/atarist/emutos-512k.img` (installer component `emutos`) --- ## System ROMs and disk images (used for testing only) These are **not** part of JoeyLib distribution. `./install.sh` places them in `toolchains/firmware/` for emulator-side testing only; see the source of each before shipping anything that depends on them. ### Downloaded by the installer - **Apple IIgs MAME ROM sets** (`apple2gs`, ROM 03, `apple2gsr1`, ROM 01, and `a2ssc`, the Super Serial Card): Apple Inc. proprietary firmware, from the archive.org MAME 0.240 split set. Component `iigsFirmware`. - **Apple IIgs System 6.0.4** (`System.Disk`): Apple Inc. proprietary OS, from the Apple II archive (). Component `iigsFirmware`. - **CFFA2 card firmware** (`cffa20eec02.bin`): freely redistributed by dreher.net (). Component `iigsFirmware`. - **X68000 IPL-ROM and Human68k 3.02 system disk**: from Sharp's own free release (2000), published by the X68000 LIBRARY (). Component `x68kFirmware`. ### Never downloaded (supplied by the user or the project's own bundle) Installed with `./install.sh import PATH`, or from the bundle a project hosts (`JOEY_BUNDLE_URL`); matched by the checksums in `installer/files.sha1`. - **Amiga Kickstart 3.1 ROM**: Cloanto / Amiga Corp. proprietary, sold today (Amiga Forever). Required by the Amiga test gates; `joey-run` falls back to FS-UAE's AROS without it. Component `kickstart`. - **Amiga serial.device 37.4** (Workbench 3.1's `Devs/serial.device`): Cloanto / Amiga Corp. proprietary, part of Workbench 3.1 (Amiga Forever). Kickstart 3.1 has no serial.device in ROM, so `joey-run` and the Amiga serial gate put this copy on the boot drive; `import` also finds it inside a Workbench `.adf`. Component `amigaSerial`. - **X68000 CG (font) ROM**: not part of Sharp's free release. MAME's x68000 driver needs it. Component `x68kCgrom`. --- ## Maintenance When adding a new third-party dependency: 1. Append a row in the appropriate section above. 2. Record platform(s), upstream URL, license name, and a one-line role description. 3. List where the installer puts it (`toolchains/opt//` or `toolchains/firmware/`). 4. If license terms restrict redistribution, call that out explicitly (as we do for Apple ROMs).