@lewismoten/gamemaker-sandbox-engine 3.1.0 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/NOTICE.md +58 -753
  3. package/README.md +94 -10
  4. package/dist/assets/{music.worklet-NqOeNo6T.js → music.worklet-aD2x7RRM.js} +23 -21
  5. package/dist/audio/cmfLoad.js +10 -0
  6. package/dist/audio/cmfPlayer.js +201 -0
  7. package/dist/audio/context.js +75 -0
  8. package/dist/audio/engine.js +173 -0
  9. package/dist/audio/mix.js +40 -0
  10. package/dist/audio/opl.js +245 -0
  11. package/dist/audio/output.js +40 -0
  12. package/dist/core/gameFiles.js +89 -0
  13. package/dist/engine/character.js +187 -0
  14. package/dist/engine/funcKeys.js +164 -0
  15. package/dist/engine/game.js +133 -0
  16. package/dist/engine/keys.js +68 -0
  17. package/dist/engine/machine.js +192 -0
  18. package/dist/engine/menus.js +135 -0
  19. package/dist/engine/monsters.js +259 -0
  20. package/dist/engine/playGain.js +10 -0
  21. package/dist/engine/playerLook.js +48 -0
  22. package/dist/engine/recorder.js +127 -0
  23. package/dist/engine/render.js +45 -0
  24. package/dist/engine/scene.js +324 -0
  25. package/dist/engine/scroll.js +79 -0
  26. package/dist/engine/showGraphic.js +107 -0
  27. package/dist/engine/slowPc.js +98 -0
  28. package/dist/engine/slowPcMusic.js +46 -0
  29. package/dist/engine/touch.js +61 -0
  30. package/dist/engine/world.js +205 -0
  31. package/dist/formats/binary.js +120 -0
  32. package/dist/formats/blocks.js +103 -0
  33. package/dist/formats/character.js +83 -0
  34. package/dist/formats/cmf.js +37 -0
  35. package/dist/formats/cmfEdit.js +154 -0
  36. package/dist/formats/cmfPreview.js +89 -0
  37. package/dist/formats/cmfSong.js +190 -0
  38. package/dist/formats/fli.js +340 -0
  39. package/dist/formats/fliFrames.js +34 -0
  40. package/dist/formats/fliLimits.js +54 -0
  41. package/dist/formats/game.js +198 -0
  42. package/dist/formats/gif.js +125 -0
  43. package/dist/formats/gifProgressive.js +99 -0
  44. package/dist/formats/graphicScripts.js +44 -0
  45. package/dist/formats/highscore.js +30 -0
  46. package/dist/formats/jpeg.js +359 -0
  47. package/dist/formats/map.js +38 -0
  48. package/dist/formats/monster.js +69 -0
  49. package/dist/formats/palette.js +58 -0
  50. package/dist/formats/recording.js +17 -0
  51. package/dist/formats/sound.js +44 -0
  52. package/dist/formats/voc.js +303 -0
  53. package/dist/gfx/colorVision.js +45 -0
  54. package/dist/gfx/cp437Glyphs.js +337 -0
  55. package/dist/gfx/font8x8.js +10 -0
  56. package/dist/gfx/screen.js +151 -0
  57. package/dist/index.js +15 -0
  58. package/dist/input/chords.js +46 -0
  59. package/dist/input/deskMouse.js +24 -0
  60. package/dist/input/keyboard.js +82 -0
  61. package/dist/input/scancodes.js +143 -0
  62. package/dist/player/fileExtensions.js +118 -0
  63. package/dist/player/patchRules.js +129 -0
  64. package/dist/player/patchTable.js +1753 -0
  65. package/dist/text/cp437.js +44 -0
  66. package/dist/types/audio/cmfPlayer.d.ts +1 -1
  67. package/dist/types/audio/engine.d.ts +21 -0
  68. package/dist/types/audio/mix.d.ts +14 -0
  69. package/dist/types/audio/music.worklet.d.ts +8 -0
  70. package/dist/types/engine/character.d.ts +3 -3
  71. package/dist/types/engine/funcKeys.d.ts +8 -6
  72. package/dist/types/engine/game.d.ts +9 -4
  73. package/dist/types/engine/keys.d.ts +2 -2
  74. package/dist/types/engine/machine.d.ts +8 -4
  75. package/dist/types/engine/menus.d.ts +4 -4
  76. package/dist/types/engine/monsters.d.ts +1 -1
  77. package/dist/types/engine/playerLook.d.ts +20 -2
  78. package/dist/types/engine/recorder.d.ts +8 -1
  79. package/dist/types/engine/render.d.ts +2 -2
  80. package/dist/types/engine/scene.d.ts +41 -9
  81. package/dist/types/engine/scroll.d.ts +9 -1
  82. package/dist/types/engine/showGraphic.d.ts +2 -2
  83. package/dist/types/engine/slowPc.d.ts +64 -2
  84. package/dist/types/engine/slowPcMusic.d.ts +18 -0
  85. package/dist/types/engine/touch.d.ts +2 -2
  86. package/dist/types/engine/world.d.ts +28 -6
  87. package/dist/types/formats/cmfEdit.d.ts +53 -0
  88. package/dist/types/formats/cmfPreview.d.ts +19 -0
  89. package/dist/types/formats/cmfSong.d.ts +74 -0
  90. package/dist/types/formats/fli.d.ts +11 -0
  91. package/dist/types/formats/fliFrames.d.ts +18 -0
  92. package/dist/types/formats/fliLimits.d.ts +13 -0
  93. package/dist/types/formats/game.d.ts +7 -0
  94. package/dist/types/formats/gif.d.ts +1 -1
  95. package/dist/types/formats/gifProgressive.d.ts +46 -0
  96. package/dist/types/formats/jpeg.d.ts +20 -0
  97. package/dist/types/gfx/colorVision.d.ts +26 -0
  98. package/dist/types/gfx/screen.d.ts +4 -0
  99. package/dist/types/index.d.ts +4 -0
  100. package/dist/types/input/keyboard.d.ts +1 -1
  101. package/dist/types/{dosPlayer → player}/patchRules.d.ts +1 -1
  102. package/dist/types/{dosPlayer → player}/patchTable.d.ts +8 -5
  103. package/dist/types/text/cp437.d.ts +6 -0
  104. package/package.json +322 -9
  105. package/dist/engine.js +0 -5436
  106. package/dist/types/engine/package.d.ts +0 -4
  107. /package/dist/types/{project → core}/gameFiles.d.ts +0 -0
  108. /package/dist/types/{dosPlayer → player}/fileExtensions.d.ts +0 -0
package/NOTICE.md CHANGED
@@ -1,753 +1,58 @@
1
- # Notice and credits
2
-
3
- ## A derivative work of RSD Game-Maker
4
-
5
- This repository is a **modified fork** of the source code of _Game-Maker_, the game
6
- construction kit produced from 1991 to 1995 by Recreational Software Designs (RSD) of
7
- Amherst, New Hampshire. It was sold by direct mail in the US by KD Software (RSD also made a
8
- distribution deal with GameLynk), in the UK as _Captain GameMaker_ by Screen Entertainment,
9
- and worldwide on CD-ROM by Microforum, as [Wikipedia](https://en.wikipedia.org/wiki/Game-Maker)
10
- records. Game-Maker was created by
11
- G. Andrew (Andy) Stone with G. Oliver Stone, Oliver Stone Jr. and Joan Stone. Today it is
12
- usually called **RSD Game-Maker**, to tell it apart from later, unrelated products with
13
- similar names; this repository does the same.
14
-
15
- On 12 July 2014 Andy Stone, Game-Maker's original programmer, published the source code,
16
- the CD image and an installed copy on GitHub under the **MIT License**
17
- ([gandrewstone/GameMaker](https://github.com/gandrewstone/GameMaker)). This fork keeps
18
- that history and that license. Everything added here (the browser version in `web/`, the
19
- "1994 desk", the Sandbox Software and Bard of Bizarre games in `games/`, and the Mac,
20
- Windows and Linux players in `mac/`, `win/` and `linux/`) is released under the same MIT
21
- License; see [LICENSE](LICENSE), whose original copyright notice is kept unchanged as the
22
- license requires.
23
-
24
- ## The name: Game-Maker: Sandbox Edition
25
-
26
- To keep this fork from being mistaken for RSD's own release, it goes by **Game-Maker:
27
- Sandbox Edition** (short: _Game-Maker SE_), after the Sandbox BBS Lewis ran in Pittsburgh in
28
- the 1990s. It is based on RSD Game-Maker 3.0 and keeps its file formats, but it is not the same
29
- program, and the pieces it draws are its own:
30
-
31
- - the **Owner's Guide** on the desk is a new guide written for this edition, not the manual
32
- RSD shipped;
33
- - the **Game-Maker box** and **CD** on the desk are this edition's own designs, marked
34
- "Sandbox Edition", not photographs or copies of the original box and disc;
35
- - the DOS **Game-Maker** you run on the desk is a recreation drawn to look like the original,
36
- rebuilt in TypeScript from its source on a simulated PC; no DOS or x86 code runs.
37
-
38
- Refer to this project as _Game-Maker: Sandbox Edition_ (https://github.com/lewismoten/GameMaker-SandboxEdition)
39
- and to the original as _RSD Game-Maker 3.0_ (Game-Maker 3.0 by Recreational Software Designs)
40
- (https://github.com/gandrewstone/GameMaker).
41
-
42
- ## Why a web version
43
-
44
- When he released the code, Andy Stone said that people were free to use it as they liked,
45
- but that "if there is interest in preserving the old games you guys made then porting
46
- Game-Maker to modern OSes is the first step"
47
- ([Wikipedia: Game-Maker](https://en.wikipedia.org/wiki/Game-Maker)). Running it in a web
48
- browser seemed the simplest way to reach every modern operating system at once: Windows,
49
- macOS, Linux, Chromebooks, tablets and phones, with nothing to install.
50
-
51
- The port's focus is **the original file formats**. Game-Maker: Sandbox Edition reads and writes
52
- `.GAM`, `.MAP`, `.BBL`/`.MBL`/`.CBL`, `.MON`, `.CHR`, `.PAL`, `.SND`, `.REC` and the rest
53
- byte for byte, so a game made in the browser today still loads in the original DOS
54
- RSD Game-Maker and plays on original hardware or in a DOS emulator such as DOSBox, and an old
55
- game folder opens in the browser unchanged.
56
-
57
- ## Credits
58
-
59
- - **RSD Game-Maker 1.0–3.0** (1991–1995): Recreational Software Designs: G. Andrew Stone,
60
- G. Oliver Stone, Oliver Stone Jr. and Joan Stone. Source released under the MIT License
61
- by Andy Stone in 2014.
62
- - **Peter (Pete) Savage** wrote Game-Maker's Sound Blaster voice-file routines
63
- (`code/GM/SOUNDC.C`) and joystick routines (`code/GM/JSTICKC.C`, `code/GM/JSTICKA.ASM`),
64
- and the Sound Designer's digitized speech with Andy Stone (`code/GM/SNDEDIT.C`).
65
- - **This fork**: Lewis Moten.
66
- - **The web port**: written with **Claude Opus 5.5** (Anthropic), covering both the
67
- _1994 desk_ (the recreated PC, DOS prompt, Game-Maker's VGA designers, the BBS) and the
68
- _modern web_ editor and player. AI assistance did most of the porting and code
69
- generation: reading the original C source, writing the TypeScript, building the Sandbox
70
- Software games in code, and testing them, directed and reviewed by Lewis.
71
- - **Reviews and a sounding board**: Lewis has also had **ChatGPT-6.1 Sol** (OpenAI) review
72
- the fork, TURBO BUTTON and the games' content, and talked ideas through with **Google
73
- Gemini 3** (Google): 1990s nostalgia and his own memories, the home-office supplies of the
74
- time, how the CMF music format worked, what came in a 1990s software box, how a save editor
75
- might look, and ways to get more out of a game. Gemini 3 drew the ASCII-art can in
76
- LUNCHMEAT's flood on The Sofa (`web/src/retro/bbs/sofaSpam.ts`). What they suggested came
77
- to the project as notes and ideas, through Lewis.
78
- - **The npm engine package** (`web/packages/engine/`): extracted and documented with
79
- **OpenAI Codex (GPT-6)** through Visual Studio Code, directed by Lewis, from this fork's
80
- existing TypeScript web engine.
81
- - **Added to the site in October 2026**, also written by **Claude Opus 5.5** as Lewis
82
- directed, from no one else's code, art, data or recordings: the desk modem's line speeds
83
- and the handshake sounds you hear for each (see "Modem sounds" below); TERMINAL's TTY calls
84
- with Mrs. Novak (see "TTYs" below); the Sandbox BBS's door game, TIC-TAC-TOE BY MODEM, and
85
- its make-believe opponent SCROLLMASTER; the printable World Map and Level Maps, drawn from
86
- each game's own files; the editor's level check, its generators (the maze, the one-click
87
- fixes, the block-art helpers) and its walkthrough bot (see "The level check" below); opening
88
- games that other sites link to or send (`web/src/linkIn`, `docs/embed.md`); the new
89
- opening of Teddy's Theme (`games/kit/teddyTheme.ts`), an original tune for the Teddy games;
90
- and the "Made with Game-Maker: Sandbox Edition" opening stings the editor offers new games
91
- (`games/kit/madewith.ts`, shipped as `web/public/opening/madewith.fli` and `.gif`, ray
92
- traced like the Sandbox Software sting, and the three flat ones `games/kit/madewithMore.ts`
93
- draws: block by block, wipe and typewriter, `web/public/opening/mw*.fli`; the editor's
94
- "Classic RSD" choice copies RSD's own `RSDTBOX.FLI` from the CD instead), the "PRESENTS" card the editor draws for a
95
- game's maker (`web/src/editor/tools/opening`), and _TURBO BUTTON_, the site's 1990s-style
96
- game magazine (`web/src/manual/magazine`): its words, layout and drawings, with screenshots
97
- of the games, the desk and the site themselves and its interview with Lewis drawn from his own account in
98
- `docs/history.md`; The Ultimate Owner's Guide (`web/src/manual/ultimate`); and the desk's
99
- props, drawn in code: the GRAVITAS game pad, the ILLOGITECH speakers and their SOUND BOASTER
100
- switch, the mugs (each badge made from a game's own files or the BBS's ANSI art) and the mouse
101
- pad prints. Like everything else added here they are under
102
- the MIT License, so the games they open can carry them anywhere.
103
- - **Lewis's DOSBox screenshot** of A Fly Named Carl's garbled title (his own capture, taken while
104
- testing the games in real DOS) illustrates "Where Game-Maker Runs Out" in The Ultimate Owner's
105
- Guide (`web/public/ultimate/carl-dos.webp`, cropped to the game screen and scaled to 320 × 200),
106
- and _TURBO BUTTON_'s feature "Bugs Only DOS Could Find" (`web/public/magazine/dos-carl.webp`,
107
- cropped to the game screen at the size DOSBox drew it). It is source material from Lewis,
108
- shared under the same terms as the rest of this fork.
109
- - **Tricks From the Shareware Authors** (chapter 17 of The Ultimate Owner's Guide,
110
- `web/src/manual/ultimate/chaptersShareware.ts`) and the archive counts in its "Where Game-Maker
111
- Runs Out" describe techniques found by surveying community Game-Maker games in the
112
- [Internet Archive's Game-Maker Archive collection](https://archive.org/search?query=subject%3A%22Game-Maker+Archive+featured+games%22):
113
- _Blinky 2_, _Blinky 3_, _Ninja Tuck_ and _A-J's Quest_ (A-J Games), _Crystal Mania 4_,
114
- _Parsec Man 3D_ (Mark Hadley), _Thal's Quest for the Crystals_,
115
- _Orb: the Derelict Planet_, _Shanna_ (Angelo Felix), _Andy in Asunderland_, _Builder_
116
- (A-J Games), _Hurdles_ (Roland Ludlam), _Seal Boarders_, and RSD's _Penguin Pete_. The games
117
- belong to their authors; the guide names them and describes their ideas in its own words, and
118
- copies none of their art, music, sounds or text.
119
- Its section "Customizing the player's own words" describes the hex edit found by comparing
120
- _Builder_'s player byte for byte with the CD's `XFERPLAY.EXE` (its menu words overwritten with
121
- spaces) and that of A-J Games' unfinished _Rōdïp: Rover of the Deep_ (its status words renamed
122
- Energy and Failsafes, the high-score words cleared): these two games led this project to map
123
- every word the player shows, and the earlier players' `GMTITLE.GIF` title card, from the same survey; its table of
124
- the player's words (`playerWords.ts`) is read from the CD's own `cd/gm/xferplay.exe`. No
125
- author's player or registration details are copied or named.
126
- The same two A-J Games players led to the **DOS player customizer**: the integrator's DOS player
127
- panel (`web/src/editor/editors/integrator/dosPlayer/`) and the desk's `PLAYHACK.EXE`
128
- (`web/src/retro/hacks/playHack.ts`), which patch a copy of the CD's `XFERPLAY.EXE` within the
129
- rules their hand edits kept (`web/src/dosPlayer/`), with presets after Builder's blanked menu
130
- and Rōdïp's renamed status words. Importing a game folder reads such a hand-edited player back
131
- into the panel; Acord Games' shared player, whose renamed file extensions it recognizes and maps
132
- back, is only read, never copied. The patch offsets were found in this project's own reading of
133
- `cd/gm/xferplay.exe` against `code/GM/PLAYGAME.C` and `HISCOREL.C`.
134
- - **MD5** (`web/src/dosPlayer/md5.ts`) is written from the algorithm's description in RFC 1321
135
- (R. Rivest, MIT Laboratory for Computer Science and RSA Data Security, Inc., 1992), only to tell
136
- the CD's `XFERPLAY.EXE` from other files before patching it; no RSA reference code is used.
137
- - **Research: the whole Game-Maker Archive, ideas only.** A second survey read every Game-Maker
138
- game in the Internet Archive's Game-Maker Archive collection, 271 games in all, with this
139
- project's own file readers (no program from them was run). Its techniques are described,
140
- without naming the games, in The Ultimate Owner's Guide's "More from the archive" (chapter 17,
141
- `web/src/manual/ultimate/archiveTricks.ts`), chapter 4's "The gate is the exit" and "An AND
142
- gate from monster power", and chapter 5's "Links that misfire", "Many rooms on one map" and
143
- "Laps round the wrap" (`chaptersPlay.ts`), and in _TURBO BUTTON_'s "Masters, the next disk
144
- box" (the third page of `sections/masters.ts`). The faults it found in those games shaped the
145
- Level check's link, missing-part and speed-limit checks (`web/src/editor/check/checks/linkChecks.ts`,
146
- `missingParts.ts`, `gameChecks.ts`). Ideas only: none of the games' art, music, sounds, text
147
- or players is copied, and no author, owner or registration detail is named.
148
- - **Ideas from the same archive in this project's games.** A second survey of the community games in
149
- the Internet Archive's Game-Maker Archive collection suggested touches to this project's own
150
- games: _Quest for the Round Tuit_'s tide poles on the Dawdle Flats and _In The Year 2000!_'s
151
- boarding-ramp countdown, both clocks read from a chain of timed blocks, as the archive's games
152
- did with block rings and staged lights; and _A Fly Named Carl_'s sugar, a flight meter made of
153
- the air itself (fresh air costs a counter, and with none left it no longer holds him up), as an
154
- archive game's sky costs its flight counter; and _Mustard Seed Hustle_'s red laces, an upgrade
155
- made by sequence order (faster walks placed before the plain ones on the same keys, on only
156
- while the laces are carried), as an archive game's speed boots work. Ideas only: the blocks,
157
- art and words are this project's own, and nothing from those games is copied.
158
- - **Research: watching people play Game-Maker games.** Observations from two videos informed
159
- The Ultimate Owner's Guide (chapters 2–4, 9–12, 15 and 17, `web/src/manual/ultimate/`) and
160
- _TURBO BUTTON_'s Design Desk letters (`sections/mailBag.ts`), "What Players Hate (and How to
161
- Fix It)" (`sections/gripes.ts`) and "Readers' Picks: Polish Over Size" (`sections/readersPicks.ts`,
162
- whose three games are made up): **levelengine**'s livestream
163
- "[RSD Game Maker Binge](https://www.youtube.com/playlist?list=PLmyqeI1gB83ufUYjoFYJ2WeAMjlJQoq76)" (YouTube, 2020, 34 parts, with
164
- its viewers' chat), and **Pixelmusement**'s
165
- "[ADG Episode 250 - Game-Maker](https://www.youtube.com/watch?v=8oy5pXPXxbk)" (Ancient DOS
166
- Games, YouTube, 2018). What made players stuck, quit or grin is retold in this project's own
167
- words, and every engine claim was checked against `code/GM/PLAYGAME.C` and its port (where a
168
- video and PLAYGAME disagree, PLAYGAME wins). No material is copied: the videos and the chat
169
- aren't quoted, no viewer is named, and none of the games' art, music or text is used.
170
- - **The Shareware Shelf** in _TURBO BUTTON_ (`web/src/manual/magazine/sections/shelf.ts`) lists
171
- the titles, years and makers of the Game-Maker games in the
172
- [Internet Archive's Game-Maker Archive collection](https://archive.org/search?query=subject%3A%22Game-Maker+games%22),
173
- fetched from archive.org's public search API by `web/scripts/gameMakerArchive.ts` into
174
- `web/src/manual/magazine/data/gameMakerArchive.json` (the query and date are in the file).
175
- Titles only: no files from the collection are copied, and the page doesn't link to them. Its
176
- companion feature, "Tricks of the Shareware Masters" (`sections/masters.ts`), describes in its
177
- own words techniques found in the collection's featured games (_Blinky 2_, _Blinky 3_,
178
- _Parsec Man 3D_, _Ninja Tuck_, _Hurdles_, _Seal Boarders_, _A-J's Quest_, _Shanna_, RSD's
179
- _Penguin Pete_, and the limits reached by _A-J 3_, _Taken by a Vampire One Night_, _Badman III_
180
- and _Crystal Quest_), showing none of their art, music, sounds or text.
181
- - **Sandbox Software games** (`games/`): new games made for this fork, built in code into
182
- real Game-Maker files. "Sandbox Software", its address and its BBS number are fictional.
183
- The games were written and built by **Claude Opus 5.5**: the code, art, music, sounds and
184
- text. Many are drawn from Lewis "Lewie" Moten III: his blog writing, photos he provided,
185
- and conversations about his interests, experiences and hobbies. Lewis directed each game
186
- and played it as it came together, and his feedback shaped every one. Teddy, Gwinn,
187
- Doc Leo and THE CHEZ (Lewis's CitiCar) appear as themselves.
188
- - **KEEP IT BRIEF!'s stories** are Lewis's 100 Word Stories, written for **Laurence Simon**'s
189
- weekly 100 Word Stories challenge on the
190
- [100 Word Stories Podcast](https://oneadayuntilthedayidie.com/). Each week's topic, shown on
191
- the game's story cards, was set by Laurence or chosen by the week before's winner, voted for
192
- by the podcast's writers and listeners; thanks to all of them.
193
- - **The Bard of Bizarre games** (`games/`: Third Goat from the Left, Mustard Seed Hustle,
194
- Thread the Needle, Brother Camel, Loaf #13, Certified Rat Tickler, Where's the Remote?!,
195
- A Fly Named Carl, The Great Dairy Reckoning of 3:17 A.M., Cleanse Me, O Loofah, But Leave
196
- My Soul, I Screamed, She Smirked, Shakespeare in Sweatpants, and Veni, Vidi, Risi! by
197
- Lewis's group of that name): games made from Lewis's songs and monologues, presented as
198
- 1995 shareware from The Sofa BBS; their shareware fee and address are part of the story,
199
- and they are free under the MIT License, except the voice clips cut from their recordings
200
- (see "The Bard of Bizarre recordings" below). The songs' lyrics and monologues were shaped with
201
- ChatGPT from Lewis's prompts, and their music and vocals were made with Riffusion (one
202
- service under three names: Riffusion renamed itself Producer.ai, and Google bought it and
203
- made it Google Flow Music); the games' FM scores are arranged from those recordings, and their
204
- voice clips are cut from them. The exceptions: Certified Rat Tickler came with no
205
- recording, so its music was composed for the game by Claude Opus 5.5, as was the music
206
- under The Great Dairy Reckoning's spoken recording and Shakespeare in Sweatpants' FM score
207
- (composed from the tempo, key and chords of its recordings' music beds); Mustard Seed
208
- Hustle's animated cover was made with Producer.ai (Riffusion's later name); the covers of Third Goat from the Left
209
- and Thread the Needle, Brother Camel were made with Riffusion; the other games' title and
210
- cover art was drawn for them by Claude Opus 5.5. The Bard's logo (the rooster in
211
- spectacles) was made with DeepAI, and the Doc Leo photos are Lewis's own. Claude Opus 5.5
212
- wrote and built the games themselves (code, levels, art and arrangements), directed by
213
- Lewis.
214
- - **The BBS pictures** (`web/public/bbs`, downloadable from the Sandbox BBS's GIF Gallery and
215
- The Sofa's GIF area): the photos are Lewis's own (Teddy, Gwinn, the gazebo, the hobo clown
216
- and Doc Leo, the Dog House library and THE CHEZ), except **CHEZTED.GIF** and
217
- **THECHEZ2.GIF**, one shot of Lewis holding Teddy in front of THE CHEZ, which was taken by
218
- **Nicky Foster** of the Front Royal-Warren County Chamber of Commerce as a promotional photo
219
- of Lewis as one of the sponsors of its upcoming Revitalize or Die Civic Pride Workshop, and
220
- **COLONIAL.GIF**, Lewis in colonial dress beside George Washington, which was taken by
221
- **Todd Jones**, Director of Technology, County of Warren, at a Warren County VA250 event, a
222
- flag retirement ceremony. The Bard logo (BARDLOGO.GIF) was made with DeepAI; the Library's
223
- printed disk labels for the Bard's games carry it too, its white ground taken out.
224
- - **The desk's posters** (`web/public/desk`): the "Moten Snow-to-Software Operations" poster
225
- (`moten-snow-to-software.*`) was made with **DeepAI**, on Lewis's paid commercial plan. The
226
- Doc Leo black-light poster (`docleo-blacklight-*.webp`) was made by **Claude Opus 5.5** from
227
- two of Lewis's photos of himself, over many rounds of his corrections, with
228
- `games/kit/scans/blacklight.py` (Python with Pillow and NumPy). Its glance frames, in which
229
- Doc Leo now and then looks to one side and smiles, were drawn the same way from the same
230
- photo. The poster's DOC LEO lettering is set in **Phosphate** (Steve Jackaman and Ashley
231
- Muir; © International TypeFounders, Inc.), a typeface that comes with macOS: only the
232
- lettering's pixels are in the poster pictures, and no font file is in the repository.
233
- - **The guided tour's voices** (`web/public/tour/voice`): Doc Leo's lines (and Teddy's, when he
234
- talks) are spoken in voices cloned from **Lewis Moten's own recordings**, made by him, with his
235
- consent, by
236
- **Pocket TTS** (Kyutai, [huggingface.co/kyutai/pocket-tts](https://huggingface.co/kyutai/pocket-tts),
237
- model weights under the Creative Commons Attribution 4.0 International License, CC BY 4.0),
238
- in **vlapky**'s ONNX conversion,
239
- [pocket-tts-onnx](https://huggingface.co/vlapky/pocket-tts-onnx) (its weights CC BY 4.0, its
240
- conversion code Apache-2.0). The clips are made on the developer's computer by
241
- `web/scripts/narrate.ts`, whose engine (`web/scripts/narrate/pocketTts.ts`) is ported from
242
- vlapky's **pocket-tts-js** (MIT License, Copyright (c) 2026 vlapky; the notice is kept in that
243
- file) and runs Microsoft's **ONNX Runtime** (onnxruntime-web's WASM build, MIT License,
244
- Copyright (c) Microsoft Corporation), with ffmpeg for the sound files. The model, the engine
245
- and Lewis's recording stay on his computer and are not in the repository or any download;
246
- Pocket TTS's built-in voices are never used. Only the generated clips are committed, and they
247
- play on the site only (exported games don't carry them).
248
- The cloned voices speak for Doc Leo (Lewis's own), Joe the night librarian, teenage Lewie,
249
- Watt and Professor Fiddlesticks, each shifted in pitch and speed. Gwinn's lines are spoken in **Kokoro**'s stock
250
- "Sky" voice (`af_sky`), pitched up, Dex Dynamo's in its "Puck" voice (`am_puck`), Inspector
251
- Ada Penn's in its "Emma" voice (`bf_emma`) and Courier Max's in its "Michael" voice
252
- (`am_michael`), a little faster: **Kokoro-82M**
253
- by hexgrad ([huggingface.co/hexgrad/Kokoro-82M](https://huggingface.co/hexgrad/Kokoro-82M),
254
- Apache-2.0) in the ONNX Community's conversion, run by **kokoro-js** (Apache-2.0) with Hugging
255
- Face's **Transformers.js** (Apache-2.0), the **phonemizer** package (Apache-2.0) and ONNX
256
- Runtime (MIT). These are installed by `npm run voice:setup` into a git-ignored folder outside
257
- the app's own packages, and the model stays on Lewis's computer.
258
- - **Teddy's and Gwinn's barks** (`web/public/tour/sfx`): Lewis Moten's own recordings of his
259
- dogs, cut into short clips for the guided tour. The whole recordings stay on his computer.
260
- - **Public-domain melodies.** The games' and the site's music is arranged and synthesized for
261
- this project (there is no recording to credit), but a few pieces quote older tunes whose
262
- compositions are in the public domain in the US:
263
- - _Teddy's Little Bigger Adventure_: `games/teddy2/disk/main.cmf` (Main Street) quotes
264
- **Yankee Doodle**, a traditional American tune (18th century), public domain; arrangement
265
- by the game.
266
- - _I Screamed, She Smirked_: `games/smirked/disk/title.cmf`, `story.cmf` and `foyer.cmf`
267
- open with the mordent of the **Toccata and Fugue in D minor**, BWV 565, credited to
268
- J. S. Bach (about 1704), public domain; arrangement by the game.
269
- - _The desk's wall phone_: its hold music (`web/src/desk/room/phone/sounds.ts`) is the
270
- opening of **Für Elise** by Ludwig van Beethoven (about 1810, published 1867), public
271
- domain.
272
- - _Teddy's Little Biggest Adventure_: its ending song (`games/teddy3/src/sound/music.ts`)
273
- plays **Happy Birthday to You**, the tune of "Good Morning to All" by Mildred J. Hill
274
- (1893), public domain in the US; arrangement by the game, which credits it on its
275
- credits screen.
276
- - _A hidden bonus on the site_: a music box (`web/src/eggs/musicBox.ts`) plays **Yankee
277
- Doodle**, the same traditional tune, public domain.
278
- - _RSD's sample music on the CD_ quotes public-domain works: `GMMOONLT.CMF` is the first
279
- movement of Beethoven's Piano Sonata No. 14, the **Moonlight** (1801); `GMRANGE.CMF` is
280
- **Home on the Range** (Daniel E. Kelley, music, and Brewster M. Higley, words, 1872).
281
- - _The shareware games A-J's Quest (`cd/sharware/ajquest`) and Ralph's game
282
- (`cd/sharware/fluffyr`)_ use `GMFAIRY.CMF`, the **Dance of the Sugar Plum Fairy** from
283
- Tchaikovsky's _The Nutcracker_ (1892), public domain.
284
- - **Third-party music under copyright.** Three shareware games on the CD by A-J Games,
285
- _Bounerim_ (`cd/sharware/bounerm`), Ralph's game (`cd/sharware/fluffyr`) and _Sign of the
286
- Hedgehog_ (`cd/sharware/signhdg`), include `SND7.CMF`, an arrangement of John Williams's
287
- **The Imperial March** (1980), which is under copyright and not licensed by this project.
288
- It is kept as those games were distributed in the 1990s, unaltered, as part of their
289
- authors' original files.
290
- - **Pictures in the CD's games.** Most of the CD games' pictures are drawn or rendered, but
291
- some are scanned photographs, paintings or frames of film. None of them name a source, so
292
- these were traced in October 2026 by looking at them and searching by text; where a source
293
- is not certain it says "likely" or "appears to be". They are kept unaltered, as their
294
- authors distributed them, and are not licensed by this project:
295
- - _Nebula_ (`cd/gameware/nebula`, RSD): `BLUE.GIF` is the **Blue Marble**, the photograph
296
- of the Earth taken by the crew of Apollo 17 in 1972
297
- ([NASA](https://en.wikipedia.org/wiki/The_Blue_Marble)), also small in `MENU.GIF` and
298
- `NOVA.FLI`. `SATRING.GIF` is a **Voyager 1** picture of Saturn's crescent and rings
299
- (1980, frame C3501159, the same picture as `cd/picture/space/planets/C3501159.GIF`),
300
- tinted blue. `YELOSUN.GIF`, `YELOLOW.GIF`, `YELOBYE.FLI`, `NOVA.FLI` and `MENU.GIF` appear
301
- to be a **Voyager 1** color picture of Jupiter's moon **Io** (1979) with a volcanic plume
302
- on its edge ([NASA/JPL](https://photojournal.jpl.nasa.gov/target/io)). These NASA pictures
303
- are in the **public domain** in the US. The green planet in `GREENHI.FLI`, `GREENBYE.FLI`
304
- and `HISCORE.GIF` is a planet photograph tinted green, likely also from NASA (possibly
305
- Mars); its source was not identified.
306
- - _Woman Warrior and the Outer Limits_ (`cd/gameware/outerlim`) and _Woman Warrior and the
307
- Attack From Below_ (`cd/gameware/warrior`), by Sheldon Chase for KD Software: their title
308
- pictures (`OLSTART.GIF`, `WARRIOR.GIF`, and the same collage in their `MENU.FLI`,
309
- `MENUBOX.FLI` and `TEXTBOX.FLI`) and the ending picture `OLENDING.GIF` are frames
310
- captured from the television series
311
- [**The Outer Limits**](<https://en.wikipedia.org/wiki/The_Outer_Limits_(1963_TV_series)>)
312
- (1963–1965). The game's own story screen says it "uses parts from two episodes",
313
- ["The Cry of Silence"](https://en.wikipedia.org/wiki/Cry_of_Silence) (1964), whose star
314
- June Havoc the woman appears to be, and
315
- ["The Zanti Misfits"](https://en.wikipedia.org/wiki/The_Zanti_Misfits) (1963). The series
316
- is **under copyright** (today MGM's), not licensed by this project.
317
- - _Paper Airplane_ (`cd/sharware/paperair`), by Matt Bell: its title picture `GMTITLE.GIF`
318
- is **The Nazgûl** by **Ted Nasmith** (gouache, first published in the 1990 Tolkien
319
- Calendar; [tednasmith.com](https://www.tednasmith.com/?p=214)), scanned with the title
320
- lettered over it. `OPENPAP.GIF`, a falcon turning into an F-16, may be **Jody Sjogren**'s
321
- _Metamorphosis II: Falconfyre_ (1986;
322
- [Wright State University](https://wright.libraryhost.com/repositories/2/top_containers/6194)),
323
- which was not confirmed. The figure of cloud over a runway in `ENDPAP.GIF` is a painting or
324
- photo collage whose source was not identified. All are **under copyright**, not licensed by
325
- this project.
326
- - _Sample_ (`cd/gameware/sample`, RSD): `SAMPLE.GIF`, also in `MENUBKG.FLI` and
327
- `TEXTBKG.FLI`, is a **painting** of tropical birds (a long-billed orange bird, a
328
- blue-and-yellow macaw, a hummingbird and egrets) whose artist was not identified;
329
- presumably under copyright.
330
- - _Houses_ (`cd/gameware/houses`, RSD): `HOUSES.GIF` and `BKG.GIF` are a **photograph** of a
331
- boathouse with a canoe on a pond; its source was not identified.
332
- - _Glubada Pond_ (`cd/gameware/glub`): `OCEAN.GIF` (also in `END.FLI`) is the CD's own
333
- picture library's `cd/picture/nature/OCEAN1.GIF`, a beach photograph; `POND.GIF` is its
334
- `cd/picture/nature/AMER01_I.GIF`, a mountain lake; and `WATER.GIF` is another photograph.
335
- Their sources were not identified.
336
- - _RSD's title picture_ (`GMTITLE.GIF`, "Recreational Software Designs' Game-Maker
337
- Presents:", in many of the CD's games) is lettered over a **photograph of clouds** whose
338
- source was not identified.
339
- - **The CD's picture and animation libraries** (`cd/picture`, `cd/animate`) are a collection
340
- of 1990s GIF pictures and FLI animations of mixed and mostly unrecorded origin: NASA
341
- pictures (Voyager, Magellan, Viking, the Space Shuttle) alongside photographs of cars,
342
- places and animals whose photographers are not named and which are likely under copyright.
343
- They are kept as Andy Stone released them and are not on the website.
344
- - **The sample and shareware games on the CD** (`cd/`) remain the work and copyright of
345
- their authors (RSD, A-J Games, KD Software, GameLynk, Sheldon Chase, Mark Hadley, Matt
346
- Bell and others). Shareware games are shown play-only, with their authors' original
347
- notices; they have no download, can't be edited, and the desk's make-believe GMCRACK
348
- leaves them alone. The CD's tools are kept as it held them, each its author's: LHarc 1.13
349
- (`cd/backup/LHARC.EXE`, "(c)Yoshi, 1988-89") and LHA 2.13 with its
350
- documentation (`cd/sharware/tools`, Haruyasu Yoshizaki), and Alchemy Mindworks' Graphic
351
- Workshop shareware for DOS and Windows (`cd/sharware/tools/GWSDOS.ZIP`, `GWSWIN.ZIP`).
352
- None of them are on the website.
353
-
354
- ## The Bard of Bizarre recordings: personal, non-commercial only
355
-
356
- The Bard of Bizarre's song and monologue recordings were made with Riffusion (one service,
357
- later called Producer.ai and now Google Flow Music) during Lewis's **free plan**. Lewis pays
358
- for the service now, and the animated covers (Mustard Seed Hustle's and Thread the Needle,
359
- Brother Camel's) were made on the paid plan, but every recording was made on the free plan. The service's terms for free-plan output allow
360
- "personal, non-commercial uses only". So the recordings, and every voice clip cut from them,
361
- are **not covered by the MIT License**: don't sell them or use them commercially. The
362
- recordings themselves aren't in this repository.
363
-
364
- These files are cut from those recordings (each game's `tools/cutClips.py` cuts them):
365
-
366
- - `games/<id>/src/sound/clips/*.pcm` in goat, mustard, needle, loaf, remote, carl,
367
- reckoning, loofah, smirked, sweats and risi: the raw clips.
368
- - The voice clips on each game's disk (`games/<id>/disk/*.voc`), and so in every download
369
- and on The Sofa BBS:
370
- - **Third Goat from the Left** (goat): HEY, HOOK, NIGHTLNG, SEESYOU, YAY.
371
- - **Mustard Seed Hustle** (mustard): ALIVE, FEET, HALLELU, HUSTLE, KEEPON, MOUNTAIN.
372
- - **Thread the Needle, Brother Camel** (needle): DREAM, GOLD, HUMPDOWN, SQUEEZE, THREAD.
373
- - **Loaf #13 (Left in the Basket)** (loaf): BREAD, COUNTME, MAMA, STILL, TWELVE, WASTED.
374
- - **Where's the Remote?!** (remote): DOGCAT, FRIDGE, HAND, MOM, RACCOON, REMOTE, SNEAKY.
375
- - **A Fly Named Carl** (carl): AUX, HOOK, LAMP, MISS, NAMED, SEEN, SMILE, TIME, WINDOW.
376
- - **The Great Dairy Reckoning of 3:17 A.M.** (reckoning): ALMOND, BEGONE, BETRAY, BETTER,
377
- CANT, COLON, COWARD, DEMON, ENEMY, INTOL, LACTAID, OHNO, SHINS, SUFFER, and FLUSHLAC and
378
- SLAMWRTH (a made sound followed by a clip).
379
- - **Cleanse Me, O Loofah, But Leave My Soul** (loofah): BRINE, LINE, LUCIFER, MANGO, NEVER,
380
- PINK, ROUGH, SCRUBBUS, WORSE, WRONG, and DRAINNEV and TOWEL (a made sound followed by a
381
- clip).
382
- - **I Screamed, She Smirked** (smirked): AFRAID, ASHAMED, CARDBRD, DONTRUN, EXIT, FOG,
383
- GETDOWN, JUICE, MILD, NOTREAL, OKAY, PATS, SNEEZING, SWORD, TARGET, WEREWOLF.
384
- - **Shakespeare in Sweatpants** (sweats): the 68 monologue clips, `<line>_L`, `_O`, `_P` and
385
- `_W` for each of ANTS, BIRD, BLNKT, CART, CHAIR, FICUS, GOAT, ITCH, KALE, LIKE, LILY, OUT,
386
- PEN, PIZZA, PLATE, SOCKS and UMBR.
387
- - **Veni, Vidi, Risi!** (risi): CANIS, CANTEMUS, CHEDDAR, CORONA, CURRIMUS, DII, FELIS,
388
- FLATUS, NEMO, PISCIS, QUIS, RIDETIS, SUMMA, TECTA, TER, TITUS, VICTORIA.
389
-
390
- Each of those games' LICENSE.TXT names its clips under "VOICE CLIPS: NOT MIT", its readme and
391
- credits say so, and the Windows, Mac, Linux, DOS and web-app downloads' notices repeat it, as
392
- does the one-page download's text (`web/src/export/recordedAudio.ts`). **Everything else in each game is MIT licensed**: the
393
- code, levels, art, text, the other sound effects (made in code) and the FM (CMF) music
394
- arranged or composed by Claude. Certified Rat Tickler has no recording, so none of it is
395
- affected.
396
-
397
- ## About this fork
398
-
399
- Lewis bought Game-Maker in 1992 with money earned shoveling snow that winter
400
- ([Moten Snow-to-Software Operations](https://lewismoten.com/1992/12/11/moten-snow-to-software-operations-founder-operator/)).
401
- He made a few games with it, among them a Christmas game full of candy canes and Santa
402
- Claus, but never sold or gave them out, and none survive: they were lost with much else in
403
- an apartment fire during college. He never received a newsletter, never knew there were
404
- BBSes trading Game-Maker games, and never heard there was a later version; he left for
405
- college in 1994, and his parents may well have taken any mail for junk. The original
406
- license and payment terms confused him and felt restrictive, which was the main reason he
407
- never shared his games. He was a kid without a bank account who bought things with money
408
- orders paid for out of his allowance. The Sandbox BBS, the Owner's Guide's plain wording
409
- and the free, open license here are the version of Game-Maker he wishes he'd had.
410
-
411
- ## Third-party formats, trademarks and code
412
-
413
- Game-Maker: Sandbox Edition contains no third-party code except as listed. It reimplements file
414
- formats from their published descriptions and from Game-Maker's own source.
415
-
416
- - **GIF**: "The Graphics Interchange Format© is the Copyright property of CompuServe
417
- Incorporated. GIF℠ is a Service Mark property of CompuServe Incorporated." GIF images
418
- are encoded and decoded with LZW compression, which was patented by Unisys; those
419
- patents expired in 2003–2004.
420
- - **FLI** animations: the Autodesk Animator format of Autodesk, Inc., implemented from its
421
- public documentation.
422
- - **Sound Blaster**, **CMF** (Creative Music File), **VOC** and **SBI**: trademarks and
423
- formats of Creative Technology Ltd. The CMF player is a port of Game-Maker's own
424
- `SBMUSIC.C` and of the behavior of Creative's SBFMDRV driver; no Creative code is used.
425
- - **YouTube**: the Library lists Lewis Moten's own videos about this project, from his
426
- YouTube channel. Their card pictures are copies of YouTube's thumbnails kept on the site, so
427
- showing the Library asks YouTube for nothing; a video's player is embedded from
428
- youtube-nocookie.com only when the visitor presses Play.
429
- - **The Game Crafter's Large Retail Box template** (thegamecrafter.com,
430
- `templates/large-retail-box.png`): the Library's retail boxes to print follow its
431
- measurements (a 13.25 × 15.75 in sheet at 300 dpi, a 9.375 × 11.875 in face, 1.125 in walls,
432
- 0.6875 in turn-ins, 1/2 in glue tabs, a 1/8 in bleed and safe line;
433
- `web/src/manual/printables/retailBoxTemplate.ts`). None of its art is copied; the box art and
434
- die lines are drawn by this project. The disk and CD label sizes are the common sticker-paper
435
- sizes (a 2.75 in wrap-around 3.5" diskette label; a 117 mm CD label with a 41 mm hole).
436
- - **OPL2 / YM3812** FM synthesis: a chip by Yamaha Corporation. The emulation in
437
- `web/src/audio/opl.ts` was written for this project.
438
- - **PNG** (RFC 2083): the Assistant's pictures for AI tools (`web/src/assistant/png.ts`) are
439
- written from the specification; compression is the browser's or Node's own.
440
- - **Model Context Protocol** and **WebMCP**: the local server for AI tools (`web/scripts/mcp`)
441
- speaks the Model Context Protocol with its MIT-licensed TypeScript SDK (see Tools used to
442
- build and test). The editor's Assistant can also offer its tools through WebMCP, a draft of
443
- the W3C Web Machine Learning Community Group, implemented from the draft with no code used.
444
- - **The Assistant chat** (`web/src/assistant/chat`) talks to the person's own AI with plain
445
- `fetch`: OpenAI's Chat Completions API shape (which OpenAI, LM Studio and Ollama's `/v1`
446
- take) and Ollama's `/api/chat`, both written from their public API documentation with no
447
- code used. No model ships with the site; each person sets up their own (Ollama or an
448
- OpenAI-compatible server). A game changed with it keeps an "Assistant: <model> via
449
- <provider>" line in its companion data, and its Windows, Mac, Linux and web downloads show
450
- that line in their About text. The chat was written by **Claude Opus 5.5** as Lewis
451
- directed.
452
- - **The music editor and its FM instruments** were made for this project. The editor is an
453
- original design, not based on AdLib's Visual Composer, and no AdLib or Creative instrument
454
- bank is included. The classic piano and brass, and one kick drum used in two games, matched
455
- AdLib's `STANDARD.BNK` settings (PIANO1, BRASS1, BDRUM1). They were replaced with original
456
- patches in October 2026. Some of the original RSD songs in `cd/` and `runtime/` use
457
- AdLib's BRASS1 settings; they are kept as RSD released them.
458
- - **8×8 text font**: Daniel Hepper's `font8x8_basic`, plus accented letters and symbols
459
- from his `font8x8_ext_latin` and `font8x8_misc` and Greek letters from his `font8x8_greek`
460
- (`web/src/gfx/cp437Glyphs.ts`), all in the public domain, derived from the IBM PC BIOS
461
- font. The other code page 437 glyphs (card suits, notes, arrows, math signs) were drawn for
462
- this project.
463
- - **Caveat** (the handwriting in the Owner's Guide's registration record,
464
- `web/src/manual/regRecord.ts`), a font by Impallari Type ("Copyright 2014 The Caveat
465
- Project Authors"), under the SIL Open Font License 1.1. Its 600 weight, cut to Latin-1
466
- with fontTools (its name and license kept inside it), is kept with the site as
467
- `web/src/manual/fonts/caveat-600.woff2`, with the license beside it (`Caveat-OFL.txt`), so
468
- the page asks no font server for it. It isn't in exported games.
469
- - **ChatGPT**, **Riffusion** (later **Producer.ai**, now Google's **Google Flow Music**:
470
- one service under its successive names) and **DeepAI** are their owners' names for the
471
- tools used to make the Bard of Bizarre songs and art, and **ChatGPT** and **Gemini** for
472
- the tools Lewis reviews and brainstorms with (see Credits); none of their code is used.
473
- - **MS-DOS** is a trademark of Microsoft Corporation; **IBM PC** of IBM; **DOSBox** is a
474
- separate GPL program and is not included. `npm run dosbox` (`web/scripts/dosbox.ts`) only lays
475
- out a folder of this repository's files for a DOSBox the developer installs, and opens it.
476
- - **Modem sounds** on the desk (`web/src/retro/bbs/modem.ts`, `lineSpeed.ts`): the dial tone,
477
- touch-tones (the standard DTMF pairs), rings and each line speed's handshake are
478
- synthesized in code from the published standards: **Bell 103** (300 baud) and **Bell 212A**
479
- (1200), the Bell System's, and the ITU-T's **V.22bis** (2400), **V.32** and **V.32bis**
480
- (4800 to 14,400), **V.8** and **V.34** (28,800 and 33,600) and **V.90** (56K). No recording of
481
- a modem is used. The names are their owners'; nothing else of theirs is used.
482
- - **TTYs (text telephones)** on the desk (`web/src/retro/bbs/baudot.ts`, `tdd.ts`,
483
- `ttyInfo.ts`): the 5-bit Baudot code at 45.45 baud, its 1400/1800 Hz tones and its US
484
- figures table follow ITU-T Recommendation V.18 (1994) and ANSI/TIA-825. The code table was
485
- cross-checked against Asterisk's `main/tdd.c` (GPL v2, Digium); none of its code is used.
486
- The period facts are from Gallaudet University's Technology Access Program (TTY Basics,
487
- V.18 notes), the FCC (relay service nationwide from July 26, 1993), and Ultratec.
488
- **Ultratec** and **Turbo Code** are Ultratec, Inc.'s names; Turbo Code (U.S. Patent
489
- 5,432,837) is named only as the historical protocol, and nothing of it is implemented.
490
- Mrs. Novak and her number (555-0156) are made up.
491
- - **Real names in the games.** The games name some real hardware, software and products of
492
- their time as part of the setting: AdLib, VGA, the RCA 1802, MOS 6502 and Atari 400, Yamaha's
493
- OPL3, AMI BIOS, PKZIP and PKUNZIP, Xmodem, Ymodem and ZMODEM, Renegade BBS and The Major BBS (Galacticomm's; The Sofa runs a look-alike), VPIC (Bob Montgomery's picture viewer; the desk's is a look-alike), QEMM, the 286 to Pentium, Windows 3.1 and NT, OS/2, the ATI, Trident, Tseng and
494
- Paradise Super VGA cards (from RSD's own system requirements), the Remington Noiseless
495
- typewriter, Autodesk Animator and the CitiCar, an electric car Sebring-Vanguard built in the 1970s (Lewis's own car, THE CHEZ). The 1994 desk, where nearly everything does something when clicked and some things are hidden to find, was inspired by The Brothers Chaps' (Mike and Matt Chapman's) Homestar Runner and Strong Bad's emails, Flash cartoons whose last scenes hid extras to click; nothing of theirs is copied, and the names are their owners'. The TURBO BUTTON magazine's history of Easter eggs names the Atari 2600 and its games Adventure (Warren Robinett, 1980) and Moonlander (1973), and Atari's Steve Wright, who named Easter eggs. Brand names also appear where Lewis's
496
- song lyrics and his 100 Word Stories (in _KEEP IT BRIEF!_) are quoted word for word. These
497
- are trademarks of their respective owners; no endorsement is implied. Every other store,
498
- arcade, brand, product and publication in the games is made up.
499
- - **Illogitech**, the brand on the desk's speakers and in their _TURBO BUTTON_ ad, is a made-up
500
- parody name. It is not a real company or product, and no connection with or endorsement by
501
- any company is implied.
502
- - **Sound Boaster** and its maker **Overcreative Labs**, the sound card brand on the desk speakers'
503
- switch and in its _TURBO BUTTON_ ad, are made-up parody names. They are not a real company or
504
- product, and no connection with or endorsement by any company is implied. The desk PC's card
505
- is "Sound Blaster compatible", as the clone cards of the time said; Sound Blaster is Creative
506
- Technology's trademark (below). The makers' names printed on its chips in _Virus Blaster_
507
- (**YO MAMA!** on the FM music chip, **ANALOG DEVIOUS** on the DSP, **TEXAS INSTRUMENTALS** on
508
- the amplifier) are made-up parody names too, not real companies.
509
- - **Gravitas** and its **GRAVITAS PC GamePad**, the game pad on the desk's keyboard tray and in
510
- its _TURBO BUTTON_ ad, are a made-up parody name. It is not a real company or product, and no
511
- connection with or endorsement by any company is implied. The ad's prices ($24.95 for the pad,
512
- $33.95 for the joystick) are part of the story, after what Lewis remembers paying in 1994.
513
- - **HOLE-Y MOLEY**, the Disk Doubler, and its maker **Punchline Products**, the disk notcher in its
514
- _TURBO BUTTON_ ad, are made-up parody names. They are not a real company or product, and no
515
- connection with or endorsement by any company is implied; the ad's drawing of the press is this
516
- project's own. Its price ($14.95) is part of the story, after what Lewis remembers paying.
517
- - **Borland C++** was included in the original 2014 repository (in `tools/`) to build the
518
- DOS source; it is Borland's (now Embarcadero's) software and is not covered by the MIT
519
- License, so this fork leaves it out. The README says where to get it.
520
- - **The git history** still holds them: the early commits contain Borland C++ (`tools/BORLANDC`)
521
- and the Borland and Creative library files listed below, which later commits removed. Those
522
- files in the history are their owners' and aren't covered by the MIT License.
523
- - **Borland's runtime library** files that Game-Maker's source was built with (`CL.LIB`,
524
- `EMU.LIB`, `MATHL.LIB`, the startup code `STARTUP.ASM`, `SETARGV.ASM`, `SETENVP.ASM`,
525
- `FULLPATH.C`, `RULES.ASI`, and the `EGAVGA.BGI` graphics driver) and **Creative's Sound
526
- Blaster library** `SBCL.LIB` were in `code/` in the original repository. They belong to
527
- Borland and Creative Technology, not the MIT License, so this fork leaves them out (also
528
- from `code/GM/GM.ZIP`). The web port uses none of them: its sound and graphics are
529
- written from the formats and from how the DOS programs behaved.
530
- - **`SNDBLAST.DRV`**, the Sound Blaster voice driver in `cd/gm` and `runtime/run/GM`, is
531
- Creative Technology's software ("Copyright (c) Creative Technology Pte Ltd., 1989-1990.
532
- All rights reserved") and is not covered by the MIT License. It is included as it came
533
- on the original Game-Maker CD, and "Export for DOS" adds it to exported games the way
534
- Game-Maker's own Transfer utility did. It will be removed if Creative asks.
535
- - **`XFERPLAY.EXE`** and Game-Maker's other DOS programs (`cd/gm`, `runtime/run/GM`) were
536
- built by RSD with Borland C++ and Creative's library, so they hold Borland's run-time
537
- code ("Borland C++ - Copyright 1991 Borland Intl.") and Creative's FM music functions
538
- ("Copyright (c) Creative Technology Pte Ltd, 1990"), as every program built with them did.
539
- "Export for DOS" ships `XFERPLAY.EXE` (renamed after the game) and `SNDBLAST.DRV` with
540
- a README that gives Game-Maker's MIT License and names these parts.
541
- - The desk's hardware brands (ILLOGITECH, SOUND BOASTER and Overcreative Labs, GRAVITAS, PIXELMAX, SQUEAK, AwkWard BIOS, Square Deal Pad Co.'s mouse pads), the magazine's other advertisers (HOLE-Y MOLEY and Punchline Products, Kiln & Kilobyte's mugs, Tin Can Telecom's modem, Shoebox Media Co.'s disk box), and its phone
542
- numbers are made up, as are the magazines and awards on the game boxes and the magazine
543
- _TURBO BUTTON_, its prices and its coupons. Its two BBSes
544
- are named after real Pittsburgh boards, The Sofa and the Sandbox (Lewis's own); how they
545
- look, what's on them and their numbers are made up.
546
- - **TURBO BUTTON's Game-Maker ad** (its send-away ad, `web/src/manual/magazine/sections/ads.ts`)
547
- takes its look from the full-page Game-Maker ad by RSD and KD Software in _Computer Gaming
548
- World_ #99 (October 1992), page 55
549
- ([Internet Archive](https://archive.org/details/Computer_Gaming_World_Issue_99/page/n53/mode/2up)):
550
- a hot pink page, big condensed serif headlines, a grid of screenshots and an order coupon.
551
- Its words, pictures and coupon are new; nothing of the original ad is reproduced, and the
552
- page links to the original.
553
- - **The level check** (`web/src/editor/check`): its heat map's six colors are taken from
554
- **viridis**, the color map by Stéfan van der Walt and Nathaniel Smith (CC0, public domain
555
- dedication), chosen because it reads with every kind of color vision; its monster and
556
- text-screen contrast is the **relative luminance and contrast ratio** of the W3C's Web Content
557
- Accessibility Guidelines (WCAG) 2, and its flashing check follows WCAG 2's **three flashes a
558
- second** threshold (success criterion 2.3.1). All are used as published; no code of theirs is
559
- included.
560
- - **The palette editor's Color vision check** (`web/src/editor/editors/palette/colorVision.ts`)
561
- simulates protanopia, deuteranopia and tritanopia with the severity-1.0 matrices published
562
- by **Gustavo M. Machado, Manuel M. Oliveira and Leandro A. F. Fernandes**, "A
563
- Physiologically-based Model for Simulation of Color Vision Deficiency" (IEEE Transactions
564
- on Visualization and Computer Graphics 15(6), 2009), applied in linear RGB. Its grayscale is
565
- the WCAG 2 relative luminance above, and it measures how alike two colors look with the
566
- CIE's **CIELAB** color space and 1976 color difference (ΔE), using the sRGB standard's
567
- (IEC 61966-2-1) transfer curve. All are published formulas and numbers; no code of theirs
568
- is included.
569
- - **The sound effect makers** (`web/src/audio/sfxSynth.ts`, `sfxPresets.ts` and
570
- `web/src/editor/tools/speakerFx.ts`) follow the idea of **sfxr**, Tomas Pettersson's
571
- ("DrPetter") 2007 sound effect generator: a few sliders for pitch, slide, vibrato and an
572
- envelope, with presets (jump, coin, hurt, explosion…) that give a new take each time. The
573
- synthesizers were written fresh for this project; no sfxr code is included.
574
- - **The sound set editor's "Preview as PC speaker"** (`web/src/audio/vocToSpeaker.ts`) finds
575
- each step's pitch with the normalized square difference function and its "first peak near the
576
- highest" rule from **Philip McLeod and Geoff Wyvill**, "A Smarter Way to Find Pitch"
577
- (Proceedings of the International Computer Music Conference, 2005), with parabolic
578
- interpolation of the peaks, and falls back on the zero-crossing rate for noise. Written fresh
579
- from the paper; no code of theirs is included.
580
- - **The music editor's accompaniment generator** (`web/src/editor/editors/music/arrange/`)
581
- finds a tune's key with the **Krumhansl-Schmuckler** method, using the major and minor key
582
- profiles published by **Carol L. Krumhansl and Edward J. Kessler** (Psychological Review 89,
583
- 1982), and picks its chords with a Viterbi pass; its takes are seeded with **Mulberry32**, the
584
- public-domain generator by Tommy Ettinger. Its band's patterns follow the project's own
585
- `games/kit/song.ts`. The profile numbers are published data; no one else's code is included.
586
- - **Seeded random numbers and string hashes** (`web/src/seededRandom.ts`, shared by the
587
- walkthroughs, printables, magazine art, felt eggs and editors) use three public-domain
588
- algorithms: **Mulberry32** by Tommy Ettinger, **xorshift32** from George Marsaglia's
589
- "Xorshift RNGs" (Journal of Statistical Software 8, 2003) and the **FNV-1a** hash by Glenn
590
- Fowler, Landon Curt Noll and Kiem-Phong Vo. Each is a few lines written from its description.
591
- - **Mr. Yuck** is a trademark of UPMC Children's Hospital of Pittsburgh. The green
592
- poison-warning sticker on the desk's phone is a simple drawing in tribute to it, not the
593
- original artwork.
594
-
595
- ## The Mac, Windows and Linux players
596
-
597
- Download → Mac, Windows and Linux wrap a game's one web page in a small player program
598
- written for this project (`mac/`, `win/`, `linux/`; the prebuilt players are in
599
- `web/public/mac`, `web/public/win` and `web/public/linux`). Every such download carries the
600
- notices below that apply to it as `THIRD-PARTY-NOTICES.txt` (and the Windows `.exe` inside
601
- itself, under its window menu's "Third-party notices…"); the text is in
602
- `web/src/export/notices.ts`. What the players contain or use from others:
603
-
604
- - **Windows: the WebView2 interface header.** `win/Player/webview2.h` lists the vtable slots
605
- and interface IDs the player calls, generated from `WebView2.h` of Microsoft's WebView2 SDK
606
- (NuGet `Microsoft.Web.WebView2` 1.0.3485.44), which is under a BSD-style license:
607
- "Copyright (C) Microsoft Corporation. All rights reserved." The license's full text is
608
- kept at the top of that file. No other SDK file is included, nor Microsoft's
609
- `WebView2Loader.dll`.
610
- - **Windows: finding the WebView2 runtime.** The player loads the runtime's own
611
- `EmbeddedBrowserWebView.dll` from the folder Edge's updater records in the registry, the
612
- approach of the open source [webview](https://github.com/webview/webview) library (MIT
613
- License, Copyright (c) 2017 Serge Zaitsev, Copyright (c) 2022 Steffen André Langnes). The
614
- approach is credited in `win/Player/main.c`; the player's code is written in C for this
615
- project.
616
- - **Windows: the Microsoft Edge WebView2 Runtime** is Microsoft's software, part of Windows
617
- 10 and 11; it is not included. Microsoft Edge and WebView2 are trademarks of Microsoft.
618
- - **Windows: the C runtime startup code.** The `.exe` players are built by `win/build.sh`
619
- with [Zig](https://ziglang.org/) (MIT License), whose MinGW-w64 libraries link a little of
620
- the MinGW-w64 runtime's startup code into each program; the program otherwise calls only
621
- Windows' own DLLs. In the runtime's words, such a program "was built using MinGW-w64 and
622
- statically linked against the MinGW-w64 runtime. Some parts of the runtime are under
623
- licenses which require that the copyright and license notices are included when
624
- distributing the code in binary form." Those permissive notices (the mingw-w64 project's
625
- own, copyright 2009–2013, and its contributors') are listed in
626
- [COPYING.MinGW-w64-runtime.txt](https://github.com/mingw-w64/mingw-w64/blob/master/COPYING.MinGW-w64-runtime/COPYING.MinGW-w64-runtime.txt).
627
- - **Linux: GTK 3 and WebKitGTK** (`libwebkit2gtk-4.1` or `-4.0`, with GLib and GTK; GNU
628
- LGPL 2.1 or later) are loaded with `dlopen` when the player starts, from the computer's own
629
- packages. None of their code or headers is included: the few functions the player uses are
630
- declared by hand in `linux/Player/main.c`. The program is built by `linux/build.sh` with
631
- Zig against glibc 2.28, so it carries only glibc's small start files (GNU LGPL 2.1 or
632
- later, with the exception that lets them be linked into any program).
633
- - **Mac: AppKit and WebKit**, Apple's frameworks that are part of macOS. The player
634
- (`mac/Player/main.swift`) links only to the system's own libraries.
635
- - Zig itself is a build tool; beyond the runtime pieces above, the Windows and Linux
636
- players may contain a few of its compiler support routines (compiler_rt, MIT License,
637
- Copyright (c) Zig contributors). The `.dmg`, `.tar.gz` and `.zip` containers, the Mac code signature and the Windows
638
- resources are written by this project's own code in `web/src/export/`.
639
-
640
- ## Third-party code and acknowledgments in the original source
641
-
642
- The original source in `code/` is the Stones' work, but it also holds other people's code
643
- and documents, kept as Andy Stone published them. Each keeps its own terms, not the MIT
644
- License, and its notices stay in the files. Most of it is reference material that
645
- Game-Maker's makefiles don't build.
646
-
647
- **Documents and citations**
648
-
649
- - **CRC-32**: PKWARE's ZIP format description `code/GM/APPNOTE.TXT` (described in
650
- `code/Image/PNG/INDEX` as from PKZIP 1.93a) says "The CRC-32 algorithm was generously
651
- contributed by David Schwaderer and can be found in his excellent book 'C Programmers
652
- Guide to NetBIOS' published by Howard W. Sams & Co. Inc." The same file credits Roger
653
- Schlafly for PKZIP's encryption and Robert Mahoney for the `.ZIP` name, and cites
654
- Storer, _Data Compression, Methods and Theory_ (Computer Science Press, 1988) and Held,
655
- _Data Compression, Techniques and Applications_ (John Wiley & Sons, 1987). Game-Maker's
656
- own C and assembly code computes no CRC.
657
- - **FLI format**: `code/Image/FLI/FLIDOC.TXT`, the _Turbo C FLI Library_ document for
658
- Autodesk Animator files, "Copyright 1989-1990 Dancing Flame, San Francisco. Program Code
659
- and Library by Jim Kent. Documentation by Jim Kent and Heidi Brumbaugh." Andy Stone's
660
- `FLI.CPP` quotes it in a comment.
661
- - **PNG specification**, tenth draft (`code/Image/PNG/PNG10.TXT`, `PNG.TXT`): copyright
662
- 1995 Thomas Boutell, which may be reproduced only "in complete and unaltered form".
663
- - **References in comments**: `code/GM/SVGAA.ASM` marks a commented-out ATI bank switch
664
- "From svgakt30.zip", and `code/DRV/STLTH64.ASM` cites "vgadoc3" for an S3 register.
665
- - Also kept as found: the Association of Shareware Professionals' ombudsman statement
666
- (`code/GM/OMBUDSMN.ASP`); a captured SunOS 5.4 `make` manual page
667
- (`code/Image/PNG/MAKEINFO.TXT`); and the installer's credit line for Haruyasu
668
- Yoshizaki's LHarc (`code/GM/FLOPINST.CPP`), the archiver it ran (`LHARC.EXE` itself
669
- is on the CD, in `cd/backup`; see above).
670
-
671
- **Bundled code by other authors** (all under `code/Image/`)
672
-
673
- - **Info-ZIP Zip 2.0.1 and UnZip 5.12** (`PNG/ZIP`, `PNG/UNZIP`, `PNG/ZIP201.ZIP`,
674
- `PNG/UNZIP512.ZIP`). Zip: "Copyright (C) 1990-1993 Mark Adler, Richard B. Wales,
675
- Jean-loup Gailly, Kai Uwe Rommel, Igor Mandrichenko and John Bush. Permission is granted
676
- to any individual or institution to use, copy, or redistribute this software so long as
677
- all of the original files are included, that it is not sold for profit, and that this
678
- copyright notice is retained." UnZip's terms are in `PNG/UNZIP/COPYING`. They include
679
- Samuel H. Smith's 1989 copyright on the code in `UNREDUCE.C` and the old unshrink, which
680
- says "Do not use any of this in a commercial product"; Igor Mandrichenko's VMS code (not
681
- for profit); and Greg Roelofs's `UNSHRINK.C`, which requires his name to stay with it.
682
- Mark Adler put `inflate`, `explode`, `funzip` and `ship` 1.7 (`PNG/SHIP17.ZIP`) in the
683
- public domain or left them uncopyrighted. `PNG/ZIP/MKTIME.C` is copyright 1988, 1989
684
- David MacKenzie. Info-ZIP's comments also thank Haruhiko Okumura (`ar`/`ar002`).
685
- `PNG/UNZIP/CONTRIBS` lists the other contributors.
686
- - **pnglib 0.6** (`PNG/T`, `PNG/PNGLIB06.ZIP`, 1 May 1995), the draft PNG reference
687
- library: "Copyright (c) 1995 Guy Eric Schalnat, Group 42, Inc." It may be used, copied,
688
- modified and distributed provided its origin isn't misrepresented, altered versions are
689
- marked, and the notice in `png.h` stays. The zlib library it needs isn't included.
690
- - **GIFSAVE** 1.0 (`GIF`), by Sverre H. Huseby (1992): "dedicated to the Public Domain".
691
- It isn't part of Game-Maker's build.
692
- - **BMP2BGI** 1.0 (`BMP2BGI1.ZIP`, 1991) by Richard G. Rasulis, Jr. ("(c) R.G.Rasulis
693
- Consulting Services"). Its `BMP.H` is "(c) Ziff-Davis Publishing", from Charles
694
- Petzold's article in _PC Magazine_ (vol. 10, no. 10, pp. 365–370). No license is
695
- given.
696
-
697
- **Unattributed, so flagged rather than credited**
698
-
699
- - `code/GM/SBC.H`, `SBCVOICE.H`, `SBCMUSIC.H`, `SBCTS.H` and `SBMIDI.H` declare the
700
- functions of Creative's Sound Blaster library (`SBCL.LIB`, left out, above). They
701
- carry no notice but appear to come from Creative's developer kit.
702
- - `code/Image/LZTIMER.H` declares `ZTimerOn`/`ZTimerOff`/`ZGetTime`, the names used by
703
- Michael Abrash's "Zen timer". The timer itself isn't included, and its use in
704
- `IMAGE1.CPP` is commented out.
705
- - `code/DRV/S3_BIOS.ASM` (not built) looks like code taken from a disassembled S3 video
706
- BIOS.
707
- - `code/GM/APTE.TXT` appears to be a Borland technical note.
708
- - The sample pictures in `code/Image/PNG/PICS` are of unknown origin. One of them says so
709
- itself ("Peppers").
710
-
711
- **What the web port uses**: none of this code. `web/src/project/zip.ts` writes its own
712
- table-driven CRC-32 (the standard ZIP polynomial that APPNOTE credits to Schwaderer) and
713
- follows APPNOTE's layout. The FLI reader `web/src/formats/fli.ts` follows Andy Stone's
714
- `FLI.CPP` and the format in Kent's `FLIDOC.TXT`. The GIF LZW coder in
715
- `web/src/formats/gif.ts` is new, not GIFSAVE. `web/src/formats/voc.ts` reproduces Peter
716
- Savage's `SOUNDC.C`, and `web/src/vga/sndedit.ts` ports `SNDEDIT.C`.
717
-
718
- ## Tools used to build and test
719
-
720
- Built with [TypeScript](https://www.typescriptlang.org/) (Apache-2.0),
721
- [Vite](https://vitejs.dev/), [Vitest](https://vitest.dev/) and vite-node (MIT, both from the
722
- Vitest project), and
723
- `@types/node` (MIT), and checked with [Prettier](https://prettier.io/) and
724
- [ESLint](https://eslint.org/) with `@eslint/js`, `typescript-eslint`, `eslint-config-prettier`
725
- and `globals` (MIT). The local MCP server for AI tools (`web/scripts/mcp`, `npm run mcp`) uses
726
- the [Model Context Protocol TypeScript SDK](https://github.com/modelcontextprotocol/typescript-sdk)
727
- (`@modelcontextprotocol/sdk`, MIT, Anthropic, PBC) and [ws](https://github.com/websockets/ws)
728
- (MIT, Einar Otto Stangvik, Arnout Kazemier, Luigi Pinca and contributors) with `@types/ws`
729
- (MIT, DefinitelyTyped); they run only on the developer's own computer, in Node. These are the
730
- only packages in `web/package.json`, all used only to build, test and run local tools; none of
731
- their code ships in the app except Vite's small module runtime and preload helper (MIT). The site's Credits page (`#/credits`) lists every one of them and the packages
732
- they use, with versions and licenses, from `web/package-lock.json`. The native players are built with Zig (MIT) and, on a Mac, Apple's Swift compiler;
733
- see above for what ends up in them.
734
-
735
- The desk's black-light poster (`games/kit/scans/blacklight.py`) is drawn on the developer's
736
- computer with Pillow (MIT-CMU License) and NumPy (BSD); the Caveat font was cut down with
737
- fontTools (MIT). Only their output is committed.
738
-
739
- The tour's narration script (`web/scripts/narrate.ts`, `npm run voice`) runs on the
740
- developer's computer with ffmpeg, Pocket TTS's ONNX model and ONNX Runtime's WASM build (see
741
- "The guided tour's voice" in Credits), read from folders outside the repository; only the clips
742
- it makes are committed. Its check (`web/scripts/narrate/verify.ts`, `npm run voice:check`)
743
- hears each clip with OpenAI's Whisper (MIT; the large-v3 model, run by whisper.cpp, MIT, or
744
- openai-whisper's own command), on the developer's computer, to find words the voices said
745
- wrong; nothing of it ships.
746
-
747
- The Bard of Bizarre games' song tools (`games/kit/song/*.py` and each game's
748
- `tools/analyze.py` and `tools/cutClips.py`) run on the developer's computer with ffmpeg,
749
- NumPy and SciPy (BSD), and OpenAI's Whisper (MIT) for word timings when it is installed.
750
- They read recordings that are not in the repository, and nothing of theirs is
751
- committed except the note data and clips they produce. Browser checks during development
752
- (Playwright, Apache-2.0, and any accessibility checker run with it) are run from outside the
753
- repository and are not dependencies of it.
1
+ # Notices for @lewismoten/gamemaker-sandbox-engine
2
+
3
+ This package contains the browser game engine and audio worklet from
4
+ [Game-Maker: Sandbox Edition](https://github.com/lewismoten/GameMaker-SandboxEdition).
5
+ It is licensed under the MIT License; see [LICENSE](LICENSE). It contains no games,
6
+ site editor, DOS executables, or native player shells.
7
+
8
+ ## Source and contributors
9
+
10
+ - **RSD Game-Maker** was created by G. Andrew (Andy) Stone, G. Oliver Stone,
11
+ Oliver Stone Jr., and Joan Stone for Recreational Software Designs. Andy Stone
12
+ released its source under the MIT License in 2014. The browser engine follows
13
+ that source and its game file formats, including the behavior of its CMF music
14
+ player. The original project is at
15
+ [gandrewstone/GameMaker](https://github.com/gandrewstone/GameMaker).
16
+ - **Game-Maker: Sandbox Edition** is Lewis Moten's fork. Its TypeScript web port
17
+ was written with Claude Opus 5.5 (Anthropic), directed and reviewed by Lewis.
18
+ This npm package was extracted and documented with OpenAI Codex (GPT-6) in
19
+ Visual Studio Code, directed by Lewis.
20
+
21
+ ## Data, formats, and hardware
22
+
23
+ - **8×8 text font:** `font8x8_basic`, `font8x8_ext_latin`, `font8x8_misc`, and
24
+ `font8x8_greek` by Daniel Hepper are public domain. They supply the ASCII and
25
+ selected code page 437 glyphs in `src/gfx/font8x8.ts` and `src/gfx/cp437Glyphs.ts`.
26
+ The upstream headers also credit Marcel Sondaar and International Business Machines
27
+ (public domain VGA fonts) as their basis. [Source](https://github.com/dhepper/font8x8).
28
+ The remaining CP437 symbols and box-drawing glyphs were drawn for this project with
29
+ Anthropic Claude Opus 5.5 under Lewis Moten's direction and are distributed under the
30
+ project's MIT License; they were not copied from IBM's ROM.
31
+ - **GIF:** Graphics Interchange Format is a format and trademark of CompuServe
32
+ Incorporated. The engine implements GIF decoding from the format description.
33
+ - **FLI:** Autodesk Animator's animation format, implemented from its public
34
+ documentation. Autodesk Animator is a product of Autodesk, Inc.
35
+ - **Sound Blaster formats:** CMF, VOC, and SBI are Creative Technology Ltd.
36
+ formats. The CMF player follows RSD Game-Maker's `SBMUSIC.C` and the behavior
37
+ of Creative's SBFMDRV driver. The VOC decoder's Creative ADPCM tables refer
38
+ to the Sound Blaster DSP behavior documented in
39
+ [DOSBox's `sblaster.cpp`](https://github.com/joncampbell123/dosbox-x/blob/master/src/hardware/sblaster.cpp)
40
+ (GPL-2.0-or-later).
41
+ - **OPL2 / YM3812:** Yamaha Corporation's FM synthesis chip. The engine's
42
+ emulation was written for this project from the chip's published register
43
+ documentation.
44
+
45
+ The package does not bundle DOSBox, Creative software, or Autodesk software.
46
+
47
+ ## Incremental JPEG decoding
48
+
49
+ The JPEG decoder follows ITU-T Recommendation T.81 (1992), by CCITT/ITU and the
50
+ Joint Photographic Experts Group: [specification](https://www.w3.org/Graphics/JPEG/itu-t81.pdf).
51
+ This is a format reference; the recommendation's text and diagrams are not bundled.
52
+ The existing AC-refinement procedure identifies libjpeg's `decode_mcu_AC_refine` as its
53
+ algorithm reference (Independent JPEG Group, Thomas G. Lane and contributors;
54
+ [IJG License](https://github.com/libjpeg-turbo/libjpeg-turbo/blob/main/README.ijg)).
55
+ This software is based in part on the work of the Independent JPEG Group.
56
+ No libjpeg C source or binaries are bundled. Incremental block visibility and atomic
57
+ MCU updates were corrected with OpenAI Codex (GPT-6), directed by Lewis Moten, under
58
+ this project's MIT License.