@blazium-engine/toolchain-win32-x64 0.1.6 → 0.1.7
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/README.md +237 -4
- package/bin/blazium-toolchain.exe +0 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,9 +1,242 @@
|
|
|
1
|
-
|
|
1
|
+
This package is the native win32 x64 binary for @blazium-engine/toolchain.
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Install `@blazium-engine/toolchain` instead of this package.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
# blazium-toolchain
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
A CLI that fetches console compilers into a cache and builds PS1, PS2, N64, and Interactive DVD products. GPL-3.0-or-later; the MIT Blazium editor only spawns the binary. `ps3` and `ps4` are reserved and exit `2`.
|
|
8
|
+
|
|
9
|
+
## Community
|
|
10
|
+
|
|
11
|
+
- Official website: [https://blazium.app/](https://blazium.app/)
|
|
12
|
+
- IndieDB blog: [https://www.indiedb.com/engines/blazium-engine](https://www.indiedb.com/engines/blazium-engine)
|
|
13
|
+
- Official community: [Blazium Discord](https://discord.gg/sZaf9KYzDp)
|
|
14
|
+
- Docs: [docs.blazium.app](https://docs.blazium.app)
|
|
15
|
+
|
|
16
|
+
## Ecosystem
|
|
17
|
+
|
|
18
|
+
| Product | Role | Release |
|
|
19
|
+
|---------|------|---------|
|
|
20
|
+
| [CLI](https://github.com/blazium-games/blazium-cli) | Install editors, projects, remote control, Steam/itch deploy | Linux and Windows, x86_64 and x86_32. Catalog: [cli.json](https://cdn.blazium.app/cli/cli.json) |
|
|
21
|
+
| [Hub](https://github.com/blazium-games/blazium-hub) | Desktop companion; installers bundle the CLI | Linux and Windows, x86_64 and x86_32. Engine builds track `blazium_4.8` |
|
|
22
|
+
| [Crash reporter](https://github.com/blazium-games/blazium_crash_reporter) | Sidecar UI for engine and Hub crash reports | Linux and Windows, x86_64 and x86_32. Catalog: [crash_reporter.json](https://cdn.blazium.app/crash_reporter/crash_reporter.json). Engine builds track `blazium_4.8` |
|
|
23
|
+
| [Toolchain](https://github.com/blazium-games/blazium-toolchain) | PS1, PS2, N64, and Interactive DVD | Linux and Windows, x86_64 and x86_32. Catalog: [toolchain.json](https://cdn.blazium.app/toolchain/toolchain.json) |
|
|
24
|
+
| [Skills](https://github.com/blazium-games/blazium-skills) | Agent skill packs for Claude, Cursor, Codex, and Grok | Own semver, separate from the 0.8.x API baseline. Catalog: [skills.json](https://cdn.blazium.app/skills/skills.json) |
|
|
25
|
+
| [Subagents](https://github.com/blazium-games/blazium-subagents) | Studio roster that loads those skills | Own semver. Catalog: [subagents.json](https://cdn.blazium.app/subagents/subagents.json) |
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
blazium-toolchain [--json] [--prefix DIR] version
|
|
29
|
+
blazium-toolchain [--json] list
|
|
30
|
+
blazium-toolchain [--json] [--prefix DIR] ps1 setup [--profile compile|dev|iso] [--offline]
|
|
31
|
+
blazium-toolchain [--json] [--prefix DIR] ps1 env
|
|
32
|
+
blazium-toolchain [--json] [--prefix DIR] ps1 status
|
|
33
|
+
blazium-toolchain [--prefix DIR] ps1 build --out FILE [--src DIR | --sample template|gte]
|
|
34
|
+
[--overlay DIR] [--export-src DIR]
|
|
35
|
+
[--tim|--mesh|--vag|--sprite|--script|--gdbc|--luau|--str|--xa|--node|--hud|--tile|--scene|--anim|--cam|--hit|--nav|--path|--way]
|
|
36
|
+
blazium-toolchain [--prefix DIR] ps1 export-guest [--out DIR]
|
|
37
|
+
blazium-toolchain [--prefix DIR] ps1 run [--iso CUE] [--timeout 120s] [--ui] GAME.EXE
|
|
38
|
+
blazium-toolchain [--prefix DIR] ps1 iso --xml FILE [--out PATH]
|
|
39
|
+
blazium-toolchain [--json] [--prefix DIR] ps1 fmv
|
|
40
|
+
blazium-toolchain [--json] [--prefix DIR] interdvd setup [--offline]
|
|
41
|
+
blazium-toolchain [--json] [--prefix DIR] interdvd env
|
|
42
|
+
blazium-toolchain [--json] [--prefix DIR] interdvd status
|
|
43
|
+
blazium-toolchain [--prefix DIR] interdvd ffmpeg -- <args>
|
|
44
|
+
blazium-toolchain [--prefix DIR] interdvd ffprobe -- <args>
|
|
45
|
+
blazium-toolchain interdvd iso --dir DIR --out FILE [--meta FILE] [--write-meta FILE] [--extra HOST[:DISC]] [--recursive]
|
|
46
|
+
blazium-toolchain interdvd meta init --out disc.interdvd.json
|
|
47
|
+
blazium-toolchain interdvd meta validate --meta disc.interdvd.json
|
|
48
|
+
blazium-toolchain [--prefix DIR] ps2 setup [--profile compile|dev|iso] [--offline]
|
|
49
|
+
blazium-toolchain [--prefix DIR] ps2 env
|
|
50
|
+
blazium-toolchain [--prefix DIR] ps2 status
|
|
51
|
+
blazium-toolchain [--prefix DIR] ps2 build --out FILE.elf [--src DIR | --sample cube]
|
|
52
|
+
[--overlay DIR] [--export-src DIR] [--node|--mesh|--gtex|--script]
|
|
53
|
+
blazium-toolchain [--prefix DIR] ps2 export-guest [--out DIR]
|
|
54
|
+
blazium-toolchain [--prefix DIR] ps2 run [--iso FILE.iso] [--timeout 120s] [--ui] GAME.elf
|
|
55
|
+
blazium-toolchain [--prefix DIR] ps2 iso --dir TREE --out FILE.iso
|
|
56
|
+
blazium-toolchain [--prefix DIR] ps2 elf-info FILE.elf
|
|
57
|
+
blazium-toolchain [--prefix DIR] ps2 chd --iso FILE.iso --out FILE.chd
|
|
58
|
+
blazium-toolchain [--prefix DIR] n64 setup [--profile compile|dev|rom] [--offline]
|
|
59
|
+
blazium-toolchain [--prefix DIR] n64 env
|
|
60
|
+
blazium-toolchain [--prefix DIR] n64 status
|
|
61
|
+
blazium-toolchain [--prefix DIR] n64 build --out FILE.z64 [--src DIR | --sample helloworld|rdpqdemo|t3dquad|ovldemo]
|
|
62
|
+
[--overlay DIR] [--export-src DIR] [--display 320|640] [--rumble] [--rdram 8|4]
|
|
63
|
+
[--ntex|--mesh|--node|--inp|--sfx|--music|--pack|--pack-dir|--script|--gdbc|--luau]
|
|
64
|
+
blazium-toolchain [--prefix DIR] n64 export-guest [--out DIR]
|
|
65
|
+
blazium-toolchain [--prefix DIR] n64 run [--emu ares|project64|both] [--timeout 120s] [--rdram 8|4] GAME.z64
|
|
66
|
+
blazium-toolchain [--prefix DIR] n64 rom --dir TREE --out FILE.z64 [--elf FILE.elf]
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
`n64` has no ISO path. The product is a big-endian `.z64`. `n64 iso` is rejected.
|
|
70
|
+
|
|
71
|
+
## Install
|
|
72
|
+
|
|
73
|
+
Linux and Windows, x64 and ia32:
|
|
74
|
+
|
|
75
|
+
```text
|
|
76
|
+
npx @blazium-engine/toolchain
|
|
8
77
|
npm install -g @blazium-engine/toolchain
|
|
9
78
|
```
|
|
79
|
+
|
|
80
|
+
The command is `blazium-toolchain`. Install `@blazium-engine/toolchain`. License: GPL-3.0-or-later.
|
|
81
|
+
|
|
82
|
+
npm installs one of these optional binaries for the current platform:
|
|
83
|
+
|
|
84
|
+
| Package | Platform | CPU |
|
|
85
|
+
|---------|----------|-----|
|
|
86
|
+
| `@blazium-engine/toolchain-linux-x64` | linux | x64 |
|
|
87
|
+
| `@blazium-engine/toolchain-linux-ia32` | linux | ia32 |
|
|
88
|
+
| `@blazium-engine/toolchain-win32-x64` | win32 | x64 |
|
|
89
|
+
| `@blazium-engine/toolchain-win32-ia32` | win32 | ia32 |
|
|
90
|
+
|
|
91
|
+
When that optional package is installed, its binary is used and nothing is downloaded. The CDN download runs only if that package is absent.
|
|
92
|
+
|
|
93
|
+
From source:
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
git clone https://github.com/blazium-games/blazium-toolchain.git
|
|
97
|
+
cd blazium-toolchain
|
|
98
|
+
go test ./...
|
|
99
|
+
go build -o blazium-toolchain.exe ./cmd/blazium-toolchain
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Drop `.exe` on Unix. Go 1.23.8 or later. Published binaries are Linux and Windows, x86_64 and x86_32: [toolchain.json](https://cdn.blazium.app/toolchain/toolchain.json). A local `go build` on macOS can still master Interactive DVD; CI does not ship a macOS binary.
|
|
103
|
+
|
|
104
|
+
## Project settings
|
|
105
|
+
|
|
106
|
+
Copy [blazium-toolchain.yml](blazium-toolchain.yml) into a game repo, or use `.blazium-toolchain.yml`. The CLI looks for `--settings FILE`, then `$BLAZIUM_TOOLCHAIN_SETTINGS`, then those two filenames walking up from cwd.
|
|
107
|
+
|
|
108
|
+
Omitted keys keep built-in defaults. `blazium-toolchain settings` dumps the resolved file (`--json settings` for a machine). SHA-pinned PS1 and FFmpeg zips stay in the embedded `pins.json`.
|
|
109
|
+
|
|
110
|
+
Knobs you actually change per game: smoke/download timeouts, `download_max_bytes`, default profiles, N64 display/RDRAM/emu/rom title, PS2 ISO labels and SYSTEM.CNF, size gates (`ps2.elf_*_max`, `n64.cart_max`), fetch URLs, and host search paths.
|
|
111
|
+
|
|
112
|
+
`--tim`, `--node`, and the other cook flags read the file you name. The CLI does not sandbox those paths.
|
|
113
|
+
|
|
114
|
+
`interdvd` `menu_language`, `audio_language`, `subtitle_language`, `region_mask`, and `parental_level` are stored in `disc.interdvd.json`. They are not written into IFO or UDF.
|
|
115
|
+
|
|
116
|
+
## How it talks
|
|
117
|
+
|
|
118
|
+
Stdout is process status. One verb per line:
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
fetching libdragon toolchain https://…
|
|
122
|
+
installing libdragon preview <prefix>/n64/inst
|
|
123
|
+
skip project64 PROJECT64_EXE missing
|
|
124
|
+
wrote hello.z64
|
|
125
|
+
ready n64 compile
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
A failure prints a block you can paste into a GitHub issue:
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
error missing-tool
|
|
132
|
+
n64 compile needs N64_INST (mips64-elf-gcc, n64.mk, libdragon.a)
|
|
133
|
+
fix blazium-toolchain n64 setup --profile compile
|
|
134
|
+
---
|
|
135
|
+
command blazium-toolchain n64 build --out hello.z64
|
|
136
|
+
host windows/amd64
|
|
137
|
+
version blazium-toolchain 0.1.0
|
|
138
|
+
prefix C:\Users\…\Blazium\blazium-toolchain
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
`--json` writes the same fields as one object. There is no session log.
|
|
142
|
+
|
|
143
|
+
## Cache
|
|
144
|
+
|
|
145
|
+
| Item | Use |
|
|
146
|
+
|------|-----|
|
|
147
|
+
| [manifest.json](manifest.json) | Name, version, platforms, commands (also embedded) |
|
|
148
|
+
| `blazium-toolchain --json version` | `{ "name", "version", "license" }` |
|
|
149
|
+
| `blazium-toolchain --json list` | Platform catalog |
|
|
150
|
+
| Exit `2` | Reserved platform, or this host cannot compile/run |
|
|
151
|
+
| Exit `3` | Host tool missing |
|
|
152
|
+
| `--prefix` / `BLAZIUM_TOOLCHAIN_PREFIX` | Cache root |
|
|
153
|
+
|
|
154
|
+
Default cache: `%LOCALAPPDATA%\Blazium\blazium-toolchain` (Windows), `~/.local/share/blazium-toolchain` (elsewhere).
|
|
155
|
+
|
|
156
|
+
```
|
|
157
|
+
<prefix>/
|
|
158
|
+
ps1/gcc/ psn00bsdk/ pcsx-redux/ openbios/ cmake/ ninja/
|
|
159
|
+
ps1/guest/runtime/ work/ state.json
|
|
160
|
+
ps2/ps2dev/ guest/runtime/ work/ state.json
|
|
161
|
+
n64/inst/ src/libdragon/ src/tiny3d/ ares/
|
|
162
|
+
n64/guest/runtime/ work/ state.json
|
|
163
|
+
interdvd/ffmpeg/ state.json
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Lookup order: tool env, then `<prefix>/<plat>/`, then `<exeDir>/<plat>/`, then PATH.
|
|
167
|
+
|
|
168
|
+
The MIT guests (CMake/Makefile + C++) live inside the CLI. `ps1|ps2|n64 export-guest --out DIR` writes the stub. `build` without `--src` uses that stub. `--overlay DIR` copies extra or replacement `*.cpp` on top. `--export-src DIR` writes the resolved tree.
|
|
169
|
+
|
|
170
|
+
Compilers are not in the binary. `ps1 setup`, `ps2 setup`, and `n64 setup` fetch upstream zips into `<prefix>/<plat>/`. Sony BIOS images and N64 PIF dumps are not fetched. `C:\ultra` is ignored.
|
|
171
|
+
|
|
172
|
+
## PS1
|
|
173
|
+
|
|
174
|
+
| Profile | What you get |
|
|
175
|
+
|---------|--------------|
|
|
176
|
+
| `compile` | gcc + PSn00bSDK 0.24 + elf2x |
|
|
177
|
+
| `dev` | compile + OpenBIOS + pcsx-redux CLI |
|
|
178
|
+
| `iso` | dev + mkpsxiso |
|
|
179
|
+
|
|
180
|
+
`ps1 setup --profile compile` fetches PSn00bSDK v0.24 (GCC 12.3.0 + SDK/`elf2x`) when they are missing. `--offline` skips the network.
|
|
181
|
+
|
|
182
|
+
`ps1 setup --profile dev` also fetches the pcsx-redux Windows x64 CLI nightly and copies `openbios.bin` into `<prefix>/ps1/openbios/`. `ps1 run` smokes that CLI. Default is headless (`-no-ui`); `--ui` opens the window.
|
|
183
|
+
|
|
184
|
+
`ps1 build --sample template` builds the official zip template to a `PS-X EXE`. CMake and Ninja come from PATH, or a Windows fetch into the cache.
|
|
185
|
+
|
|
186
|
+
## PS2
|
|
187
|
+
|
|
188
|
+
| Profile | What you get |
|
|
189
|
+
|---------|--------------|
|
|
190
|
+
| `compile` | ps2dev EE gcc + PS2SDK |
|
|
191
|
+
| `dev` | compile + your `PCSX2_EXE` (BIOS is not fetched) |
|
|
192
|
+
| `iso` | dev + `ps2 iso --dir TREE` |
|
|
193
|
+
|
|
194
|
+
`ps2 setup --profile compile` fetches the ps2dev host tarball into `<prefix>/ps2/ps2dev/`. On Windows it also stages the MinGW DLLs that tarball leaves out.
|
|
195
|
+
|
|
196
|
+
Set `PCSX2_EXE` (and `PS2_BIOS_DIR` if you have a legal BIOS). `ps2 run` smokes the ELF; `--ui` shows PCSX2.
|
|
197
|
+
|
|
198
|
+
`ps2 build` without `--src` links the bundled EE guest. Sample `cube` comes from ps2sdk. Size gates (`ps2.elf_text_max`, `ps2.elf_file_max`) apply to `ps2 build` and `ps2 elf-info`. `ps2 chd` wraps an ISO with chdman when that tool is on PATH.
|
|
199
|
+
|
|
200
|
+
## N64
|
|
201
|
+
|
|
202
|
+
| Profile | What you get |
|
|
203
|
+
|---------|--------------|
|
|
204
|
+
| `compile` | libdragon preview `N64_INST` + `mips64-elf-gcc` + `n64.mk` + `libdragon.a` |
|
|
205
|
+
| `dev` | compile + Ares and/or Project64 (a missing emulator is a skip) |
|
|
206
|
+
| `rom` | compile + `mkdfs` / `n64tool` |
|
|
207
|
+
|
|
208
|
+
`n64 setup --profile compile` fetches the libdragon mips64-elf toolchain into `<prefix>/n64/inst/` (Windows zip or Linux `.deb`, extracted in-prefix), preview sources into `<prefix>/n64/src/libdragon/`, Tiny3D into `<prefix>/n64/src/tiny3d/`, then builds libdragon. Samples (`helloworld`, `rdpqdemo`, `t3dquad`, `ovldemo`) resolve from that cache.
|
|
209
|
+
|
|
210
|
+
`n64 setup --profile dev` also fetches Ares v148 on Windows x64. Linux has no zip in that release: install `ares` and set `ARES_EXE`. Project64 is discovered via `PROJECT64_EXE`. `n64 run` uses Parallel-RDP or Angrylion, not Jabo.
|
|
211
|
+
|
|
212
|
+
`n64 build` without `--src` links the bundled rdpq guest and writes a big-endian `.z64` (`80 37 12 40`).
|
|
213
|
+
|
|
214
|
+
| Flag | Effect |
|
|
215
|
+
|------|--------|
|
|
216
|
+
| `--display 320\|640` | Framebuffer; default 320 |
|
|
217
|
+
| `--rumble` | Drive a Rumble Pak when present |
|
|
218
|
+
| `--rdram 8\|4` | 8 MiB Expansion Pak (default) or 4 MiB so Ares can boot without the pak |
|
|
219
|
+
| `--sample helloworld\|rdpqdemo\|t3dquad\|ovldemo` | libdragon / Tiny3D samples |
|
|
220
|
+
| `--ntex/--mesh/--node/--inp/--sfx/--music/--pack/--pack-dir` | Cooked slices / DragonFS extras |
|
|
221
|
+
|
|
222
|
+
`n64 run --emu both` (default) needs both validators when both are installed. A missing single emulator is a skip. `--rdram 4` matches the 4 MiB build.
|
|
223
|
+
|
|
224
|
+
`n64 rom --dir TREE` packs a DragonFS tree with `mkdfs` and wraps an ELF with `n64tool`.
|
|
225
|
+
|
|
226
|
+
## Hosts
|
|
227
|
+
|
|
228
|
+
PS1/PS2/N64 setup, build, run, iso, and rom are Windows and Linux. Other hosts exit `2`. `env`, `status`, and `export-guest` still work. Building the CLI locally on macOS can still master Interactive DVD. Published release binaries are Linux and Windows only.
|
|
229
|
+
|
|
230
|
+
CI runs `go test ./...`, `go vet ./...`, `ps2 build --out hello.elf`, and `n64 build --out hello.z64` on Ubuntu and Windows.
|
|
231
|
+
|
|
232
|
+
## Interactive DVD
|
|
233
|
+
|
|
234
|
+
`interdvd iso` masters ISO9660 + UDF 1.02 from a folder that already has `VIDEO_TS/` (and optional `AUDIO_TS/`). No mkisofs. Extra PC files (`--extra`, `--recursive`) sit beside the video folders. Title and related fields live in `disc.interdvd.json`.
|
|
235
|
+
|
|
236
|
+
`interdvd setup` can fetch pinned FFmpeg. `interdvd ffmpeg` / `ffprobe` spawn that binary.
|
|
237
|
+
|
|
238
|
+
## License
|
|
239
|
+
|
|
240
|
+
[GPL-3.0-or-later](LICENSE). Each fetched tree keeps its upstream license; see [THIRDPARTY.md](THIRDPARTY.md). The editor stays MIT and only spawns this binary. libpsn00b / ps2sdk / libdragon link into the exported guest, not the editor.
|
|
241
|
+
|
|
242
|
+
[CONTRIBUTING.md](CONTRIBUTING.md), [SECURITY.md](SECURITY.md).
|
|
Binary file
|
package/package.json
CHANGED