@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.
- package/CHANGELOG.md +42 -0
- package/NOTICE.md +58 -753
- package/README.md +94 -10
- package/dist/assets/{music.worklet-NqOeNo6T.js → music.worklet-aD2x7RRM.js} +23 -21
- package/dist/audio/cmfLoad.js +10 -0
- package/dist/audio/cmfPlayer.js +201 -0
- package/dist/audio/context.js +75 -0
- package/dist/audio/engine.js +173 -0
- package/dist/audio/mix.js +40 -0
- package/dist/audio/opl.js +245 -0
- package/dist/audio/output.js +40 -0
- package/dist/core/gameFiles.js +89 -0
- package/dist/engine/character.js +187 -0
- package/dist/engine/funcKeys.js +164 -0
- package/dist/engine/game.js +133 -0
- package/dist/engine/keys.js +68 -0
- package/dist/engine/machine.js +192 -0
- package/dist/engine/menus.js +135 -0
- package/dist/engine/monsters.js +259 -0
- package/dist/engine/playGain.js +10 -0
- package/dist/engine/playerLook.js +48 -0
- package/dist/engine/recorder.js +127 -0
- package/dist/engine/render.js +45 -0
- package/dist/engine/scene.js +324 -0
- package/dist/engine/scroll.js +79 -0
- package/dist/engine/showGraphic.js +107 -0
- package/dist/engine/slowPc.js +98 -0
- package/dist/engine/slowPcMusic.js +46 -0
- package/dist/engine/touch.js +61 -0
- package/dist/engine/world.js +205 -0
- package/dist/formats/binary.js +120 -0
- package/dist/formats/blocks.js +103 -0
- package/dist/formats/character.js +83 -0
- package/dist/formats/cmf.js +37 -0
- package/dist/formats/cmfEdit.js +154 -0
- package/dist/formats/cmfPreview.js +89 -0
- package/dist/formats/cmfSong.js +190 -0
- package/dist/formats/fli.js +340 -0
- package/dist/formats/fliFrames.js +34 -0
- package/dist/formats/fliLimits.js +54 -0
- package/dist/formats/game.js +198 -0
- package/dist/formats/gif.js +125 -0
- package/dist/formats/gifProgressive.js +99 -0
- package/dist/formats/graphicScripts.js +44 -0
- package/dist/formats/highscore.js +30 -0
- package/dist/formats/jpeg.js +359 -0
- package/dist/formats/map.js +38 -0
- package/dist/formats/monster.js +69 -0
- package/dist/formats/palette.js +58 -0
- package/dist/formats/recording.js +17 -0
- package/dist/formats/sound.js +44 -0
- package/dist/formats/voc.js +303 -0
- package/dist/gfx/colorVision.js +45 -0
- package/dist/gfx/cp437Glyphs.js +337 -0
- package/dist/gfx/font8x8.js +10 -0
- package/dist/gfx/screen.js +151 -0
- package/dist/index.js +15 -0
- package/dist/input/chords.js +46 -0
- package/dist/input/deskMouse.js +24 -0
- package/dist/input/keyboard.js +82 -0
- package/dist/input/scancodes.js +143 -0
- package/dist/player/fileExtensions.js +118 -0
- package/dist/player/patchRules.js +129 -0
- package/dist/player/patchTable.js +1753 -0
- package/dist/text/cp437.js +44 -0
- package/dist/types/audio/cmfPlayer.d.ts +1 -1
- package/dist/types/audio/engine.d.ts +21 -0
- package/dist/types/audio/mix.d.ts +14 -0
- package/dist/types/audio/music.worklet.d.ts +8 -0
- package/dist/types/engine/character.d.ts +3 -3
- package/dist/types/engine/funcKeys.d.ts +8 -6
- package/dist/types/engine/game.d.ts +9 -4
- package/dist/types/engine/keys.d.ts +2 -2
- package/dist/types/engine/machine.d.ts +8 -4
- package/dist/types/engine/menus.d.ts +4 -4
- package/dist/types/engine/monsters.d.ts +1 -1
- package/dist/types/engine/playerLook.d.ts +20 -2
- package/dist/types/engine/recorder.d.ts +8 -1
- package/dist/types/engine/render.d.ts +2 -2
- package/dist/types/engine/scene.d.ts +41 -9
- package/dist/types/engine/scroll.d.ts +9 -1
- package/dist/types/engine/showGraphic.d.ts +2 -2
- package/dist/types/engine/slowPc.d.ts +64 -2
- package/dist/types/engine/slowPcMusic.d.ts +18 -0
- package/dist/types/engine/touch.d.ts +2 -2
- package/dist/types/engine/world.d.ts +28 -6
- package/dist/types/formats/cmfEdit.d.ts +53 -0
- package/dist/types/formats/cmfPreview.d.ts +19 -0
- package/dist/types/formats/cmfSong.d.ts +74 -0
- package/dist/types/formats/fli.d.ts +11 -0
- package/dist/types/formats/fliFrames.d.ts +18 -0
- package/dist/types/formats/fliLimits.d.ts +13 -0
- package/dist/types/formats/game.d.ts +7 -0
- package/dist/types/formats/gif.d.ts +1 -1
- package/dist/types/formats/gifProgressive.d.ts +46 -0
- package/dist/types/formats/jpeg.d.ts +20 -0
- package/dist/types/gfx/colorVision.d.ts +26 -0
- package/dist/types/gfx/screen.d.ts +4 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/input/keyboard.d.ts +1 -1
- package/dist/types/{dosPlayer → player}/patchRules.d.ts +1 -1
- package/dist/types/{dosPlayer → player}/patchTable.d.ts +8 -5
- package/dist/types/text/cp437.d.ts +6 -0
- package/package.json +322 -9
- package/dist/engine.js +0 -5436
- package/dist/types/engine/package.d.ts +0 -4
- /package/dist/types/{project → core}/gameFiles.d.ts +0 -0
- /package/dist/types/{dosPlayer → player}/fileExtensions.d.ts +0 -0
package/NOTICE.md
CHANGED
|
@@ -1,753 +1,58 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
(
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
-
|
|
32
|
-
|
|
33
|
-
-
|
|
34
|
-
|
|
35
|
-
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
(
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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.
|