nova64 0.2.5 → 0.2.6

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 (140) hide show
  1. package/README.md +25 -8
  2. package/bin/nova64.js +165 -0
  3. package/dist/assets/console-CY_kygm3.js +14 -0
  4. package/dist/assets/console-CY_kygm3.js.map +1 -0
  5. package/dist/assets/main-l0sNRNKZ.js.map +1 -0
  6. package/dist/assets/sky/studio/nx.png +0 -0
  7. package/dist/assets/sky/studio/ny.png +0 -0
  8. package/dist/assets/sky/studio/nz.png +0 -0
  9. package/dist/assets/sky/studio/px.png +0 -0
  10. package/dist/assets/sky/studio/py.png +0 -0
  11. package/dist/assets/sky/studio/pz.png +0 -0
  12. package/dist/assets/vanilla-Dcuy32gi.js +2 -0
  13. package/dist/assets/vanilla-Dcuy32gi.js.map +1 -0
  14. package/dist/console.html +899 -0
  15. package/dist/docs/BENCHMARK.md +77 -0
  16. package/dist/docs/CHEATSHEET.md +255 -0
  17. package/dist/docs/EFFECTS_API_GUIDE.md +577 -0
  18. package/dist/docs/EFFECTS_QUICK_REFERENCE.md +331 -0
  19. package/dist/docs/FONT_CHARACTER_REFERENCE.md +219 -0
  20. package/dist/docs/FREE_GLB_ASSETS.md +330 -0
  21. package/dist/docs/FULLSCREEN_BUTTON_FEATURE.md +296 -0
  22. package/dist/docs/GAMEPAD_SUPPORT.md +348 -0
  23. package/dist/docs/GAME_IMPROVEMENTS.md +278 -0
  24. package/dist/docs/GAME_QUALITY_STATUS.md +300 -0
  25. package/dist/docs/MIGRATION_GUIDE.md +553 -0
  26. package/dist/docs/NOVA64_3D_API.md +356 -0
  27. package/dist/docs/NOVA64_API_REFERENCE.md +1406 -0
  28. package/dist/docs/NOVA64_UI_API.md +503 -0
  29. package/dist/docs/UI_SYSTEM_SUMMARY.md +445 -0
  30. package/dist/docs/VOXEL_ENGINE_GUIDE.md +662 -0
  31. package/dist/docs/VOXEL_QUICK_REFERENCE.md +386 -0
  32. package/dist/docs/api-3d.html +750 -0
  33. package/dist/docs/api-effects.html +385 -0
  34. package/dist/docs/api-improvements.md +121 -0
  35. package/dist/docs/api-skybox.html +407 -0
  36. package/dist/docs/api-sprites.html +321 -0
  37. package/dist/docs/api-voxel.html +337 -0
  38. package/dist/docs/api.html +543 -0
  39. package/dist/docs/assets.html +306 -0
  40. package/dist/docs/audio.html +340 -0
  41. package/dist/docs/blogs.html +286 -0
  42. package/dist/docs/collision.html +316 -0
  43. package/dist/docs/console.html +247 -0
  44. package/dist/docs/editor.html +297 -0
  45. package/dist/docs/font.html +247 -0
  46. package/dist/docs/framebuffer.html +247 -0
  47. package/dist/docs/fullscreen-button.html +297 -0
  48. package/dist/docs/gpu-systems.html +247 -0
  49. package/dist/docs/index.html +580 -0
  50. package/dist/docs/input.html +491 -0
  51. package/dist/docs/physics.html +311 -0
  52. package/dist/docs/screens.html +311 -0
  53. package/dist/docs/storage.html +311 -0
  54. package/dist/docs/textinput.html +332 -0
  55. package/dist/docs/ui.html +488 -0
  56. package/dist/examples/3d-advanced/code.js +695 -0
  57. package/dist/examples/adventure-comic-3d/code.js +342 -0
  58. package/dist/examples/audio-lab/code.js +150 -0
  59. package/dist/examples/boids-flocking/code.js +270 -0
  60. package/dist/examples/crystal-cathedral-3d/code.js +706 -0
  61. package/dist/examples/cyberpunk-city-3d/code.js +1383 -0
  62. package/dist/examples/demoscene/README.md +192 -0
  63. package/dist/examples/demoscene/code.js +1081 -0
  64. package/dist/examples/demoscene/meta.json +21 -0
  65. package/dist/examples/dungeon-crawler-3d/code.js +1117 -0
  66. package/dist/examples/f-zero-nova-3d/code.js +865 -0
  67. package/dist/examples/f-zero-nova-3d/code_old.js +1555 -0
  68. package/dist/examples/fps-demo-3d/code.js +744 -0
  69. package/dist/examples/game-of-life-3d/code.js +338 -0
  70. package/dist/examples/generative-art/code.js +632 -0
  71. package/dist/examples/hello-3d/code.js +325 -0
  72. package/dist/examples/hello-skybox/code.js +183 -0
  73. package/dist/examples/hello-world/code.js +19 -0
  74. package/dist/examples/input-showcase/code.js +109 -0
  75. package/dist/examples/instancing-demo/code.js +315 -0
  76. package/dist/examples/minecraft-demo/code.js +387 -0
  77. package/dist/examples/model-viewer-3d/code.js +114 -0
  78. package/dist/examples/mystical-realm-3d/code.js +1203 -0
  79. package/dist/examples/nature-explorer-3d/code.js +1318 -0
  80. package/dist/examples/particles-demo/code.js +522 -0
  81. package/dist/examples/pbr-showcase/code.js +140 -0
  82. package/dist/examples/physics-demo-3d/code.js +948 -0
  83. package/dist/examples/screen-demo/code.js +267 -0
  84. package/dist/examples/shooter-demo-3d/code.js +1286 -0
  85. package/dist/examples/space-combat-3d/IMPLEMENTATION_SUMMARY.md +109 -0
  86. package/dist/examples/space-combat-3d/README.md +135 -0
  87. package/dist/examples/space-combat-3d/code.js +1332 -0
  88. package/dist/examples/space-harrier-3d/code.js +923 -0
  89. package/dist/examples/star-fox-nova-3d/code.js +1116 -0
  90. package/dist/examples/star-fox-nova-3d/code_backup.js +410 -0
  91. package/dist/examples/star-fox-nova-3d/code_broken.js +1821 -0
  92. package/dist/examples/storage-quest/code.js +209 -0
  93. package/dist/examples/strider-demo-3d/IMPROVEMENT_OPTIONS.md +285 -0
  94. package/dist/examples/strider-demo-3d/cache-test.html +132 -0
  95. package/dist/examples/strider-demo-3d/code-fixed.js +582 -0
  96. package/dist/examples/strider-demo-3d/code-old.js +1537 -0
  97. package/dist/examples/strider-demo-3d/code.js +1462 -0
  98. package/dist/examples/strider-demo-3d/code.js.bak2 +1169 -0
  99. package/dist/examples/strider-demo-3d/fix-game.sh +53 -0
  100. package/dist/examples/super-plumber-64/README.md +128 -0
  101. package/dist/examples/super-plumber-64/code.js +1185 -0
  102. package/dist/examples/super-plumber-64/index.html +88 -0
  103. package/dist/examples/test-2d-overlay/code.js +32 -0
  104. package/dist/examples/test-font/code.js +51 -0
  105. package/dist/examples/test-minimal/code.js +21 -0
  106. package/dist/examples/ui-demo/code.js +306 -0
  107. package/dist/examples/wing-commander-space/README.md +180 -0
  108. package/dist/examples/wing-commander-space/code.js +1285 -0
  109. package/dist/examples/wizardry-3d/CHANGELOG.md +366 -0
  110. package/dist/examples/wizardry-3d/code.js +3928 -0
  111. package/dist/index.html +666 -0
  112. package/dist/os9-shell/assets/index-DIHfrTaW.css +1 -0
  113. package/dist/os9-shell/assets/index-KchE_ngx.js +483 -0
  114. package/dist/os9-shell/assets/index-KchE_ngx.js.map +1 -0
  115. package/dist/os9-shell/index.html +23 -0
  116. package/dist/os9-shell/nova-icon.svg +12 -0
  117. package/index.html +6 -1
  118. package/package.json +37 -32
  119. package/public/assets/sky/studio/nx.png +0 -0
  120. package/public/assets/sky/studio/ny.png +0 -0
  121. package/public/assets/sky/studio/nz.png +0 -0
  122. package/public/assets/sky/studio/px.png +0 -0
  123. package/public/assets/sky/studio/py.png +0 -0
  124. package/public/assets/sky/studio/pz.png +0 -0
  125. package/public/os9-shell/assets/index-KchE_ngx.js +483 -0
  126. package/public/os9-shell/assets/index-KchE_ngx.js.map +1 -0
  127. package/public/os9-shell/index.html +10 -1
  128. package/runtime/api-2d.js +301 -21
  129. package/runtime/api-3d/pbr.js +45 -1
  130. package/runtime/api-3d.js +1 -0
  131. package/runtime/api-effects.js +90 -3
  132. package/runtime/api-gameutils.js +476 -0
  133. package/runtime/api-generative.js +610 -0
  134. package/runtime/api-skybox.js +54 -0
  135. package/runtime/api-voxel.js +139 -28
  136. package/runtime/gpu-threejs.js +13 -9
  137. package/runtime/ui.js +2 -2
  138. package/src/main.js +20 -0
  139. package/public/os9-shell/assets/index-B1Uvacma.js +0 -32825
  140. package/public/os9-shell/assets/index-B1Uvacma.js.map +0 -1
@@ -0,0 +1,366 @@
1
+ # Wizardry Nova 64 — Changelog
2
+
3
+ First-person grid-based dungeon RPG inspired by _Wizardry: Proving Grounds of the Mad Overlord_, built entirely on the Nova64 3D Fantasy Console API.
4
+
5
+ **Current size:** ~3,489 lines | **Tests:** 45/45 passing
6
+
7
+ ---
8
+
9
+ ## Batch 19 — `d602a0b`
10
+
11
+ _+45/−10 lines_
12
+
13
+ | API | Integration |
14
+ | ---------------- | -------------------------------------------------------------------- |
15
+ | `novaStore` | Tracks game phase in `switchState()` for cross-system awareness |
16
+ | `enableBloom` | Explicitly re-enables bloom when restoring default visual preset |
17
+ | `btn` | PICO-8 style directional buttons (2=Up, 3=Down) for explore movement |
18
+ | `btnp` | PICO-8 button presses (4=Z, 5=X, 6=C) for combat action selection |
19
+ | `rightStickY` | Gamepad vertical stick for shop target member selection |
20
+ | `pset` | Pixel confetti sparkles on the victory screen celebration |
21
+ | `isInvulnerable` | Shield indicator on party members during invulnerability frames |
22
+ | `setCamera` | 2D camera shake offset applied/reset in draw for full-screen shake |
23
+ | `updateSpawner` | Properly ticks encounter spawner each frame during explore state |
24
+ | `getScene` | Three.js scene object count in inventory debug stats |
25
+
26
+ ---
27
+
28
+ ## Batch 18 — `6dfc3db`
29
+
30
+ _+68/−21 lines_
31
+
32
+ | API | Integration |
33
+ | ---------------------- | ------------------------------------------------------- |
34
+ | `createAdvancedCube` | Boss marker pillar with full PBR (metalness, roughness) |
35
+ | `createAdvancedSphere` | Boss orb with emissive glow on boss tile markers |
36
+ | `createLODMesh` | Torch LOD variants (cone close, cube far) for perf |
37
+ | `setLODPosition` | LOD torch positioning during level build |
38
+ | `removeLODMesh` | LOD cleanup in `clearLevel()` |
39
+ | `updateLODs` | Per-frame LOD distance evaluation in update loop |
40
+ | `gamepadAxis` | Shop item browsing via `leftY` gamepad axis |
41
+ | `animateSkybox` | Manual skybox rotation tick each frame |
42
+ | `colorMode`/`color` | HSB hue-cycling glow ring on spell VFX starburst |
43
+ | `createGameStore` | Tracks kills, steps, chests opened, fountains used |
44
+ | `getRenderer` | Renderer program count in inventory debug stats |
45
+
46
+ ---
47
+
48
+ ## Batch 17 — `4f3687b`
49
+
50
+ _+72/−11 lines_
51
+
52
+ | API | Integration |
53
+ | --------------------------- | -------------------------------------------------------- |
54
+ | `leftStickX`/`leftStickY` | Gamepad left stick for explore movement |
55
+ | `rightStickX` | Gamepad right stick horizontal for turning |
56
+ | `rightStickY` | _(see batch 19 for additional use)_ |
57
+ | `gamepadConnected` | Gamepad indicator icon on explore HUD |
58
+ | `mouseDown` | Combined with `mousePressed` for raycast click condition |
59
+ | `raycastFromCamera` | Click-to-inspect tiles in explore mode |
60
+ | `setCameraLookAt` | View direction vector replacing `setCameraTarget` |
61
+ | `resetMatrix` | Clean matrix state before title screen spirals |
62
+ | `setTextBaseline` | Baseline alignment in shop gold display |
63
+ | `createButton` | Game over screen "Try Again" button |
64
+ | `updateButton`/`drawButton` | Button tick and render in game over state |
65
+
66
+ ---
67
+
68
+ ## Batch 16 — `ec1b49a`
69
+
70
+ _+50/−14 lines_
71
+
72
+ | API | Integration |
73
+ | ------------------------------- | ----------------------------------------------------------- |
74
+ | `pushMatrix`/`popMatrix` | Matrix save/restore for rotated class icon emblems on title |
75
+ | `translate` | Position matrix for title party preview diamonds |
76
+ | `rotate` | Animated rotation on class emblem diamonds |
77
+ | `scale2d` | Scaled 2D emblem rects on title screen |
78
+ | `TWO_PI`/`HALF_PI`/`QUARTER_PI` | Constants replacing `Math.PI` expressions throughout |
79
+ | `enableDithering` | New "dithered" visual preset mode in V-key cycle |
80
+ | `mouseX`/`mouseY` | Mouse position for combat enemy click targeting |
81
+ | `mousePressed` | Mouse press detection for combat target selection |
82
+ | `setTextAlign` | Right-aligned gold display in shop |
83
+ | `drawText` | Alternate text draw for shop gold display |
84
+ | `uiProgressBar` | XP progress bars in inventory panel |
85
+
86
+ ---
87
+
88
+ ## Batch 15 — `7938f6b`
89
+
90
+ _+124/−13 lines_
91
+
92
+ | API | Integration |
93
+ | ---------------------- | ----------------------------------------------------- |
94
+ | `createInstancedMesh` | Crystal decorations scattered on dungeon floors |
95
+ | `setInstanceTransform` | Per-instance position/rotation/scale for crystals |
96
+ | `setInstanceColor` | Per-instance tinting matching floor theme |
97
+ | `finalizeInstances` | Finalize instanced mesh buffer after setup |
98
+ | `removeInstancedMesh` | Crystal cleanup in `clearLevel()` |
99
+ | `flowField` | Boss room animated energy flow visualization |
100
+ | `noiseMap` | Procedural fog overlay on deep floors (floor 3+) |
101
+ | `getParticleStats` | Active/max particle count in debug stats |
102
+ | `frameCount` | Frame counter in debug info + title spiral phase |
103
+ | `centerX`/`centerY` | Centered inventory panel + restart button positioning |
104
+ | `grid` | Grid layout for spell list in combat |
105
+ | `setFont`/`getFont` | Save/restore font around inventory rendering |
106
+
107
+ ---
108
+
109
+ ## Batch 14 — `ebd1473`
110
+
111
+ _+53/−4 lines_
112
+
113
+ | API | Integration |
114
+ | -------------------------- | --------------------------------------------- |
115
+ | `drawFloatingTexts3D` | World-space damage numbers above monsters |
116
+ | `worldToScreen` (helper) | 3D→2D projection for floating texts |
117
+ | `enableLowPolyMode` | Low-poly visual preset in V-key cycle |
118
+ | `createSolidSkybox` | Dark merchant atmosphere in shop |
119
+ | `disableSkyboxAutoAnimate` | Still skybox in shop |
120
+ | `clearSkybox` | Skybox cleanup before rebuilding levels |
121
+ | `isEffectsEnabled` | Report post-FX status in minimal mode message |
122
+ | `noiseSeed` | Consistent noise patterns seeded per floor |
123
+ | `drawSkyGradient` | Title screen gradient background |
124
+
125
+ ---
126
+
127
+ ## Batch 13 — `0b64738`
128
+
129
+ _+57/−2 lines_
130
+
131
+ | API | Integration |
132
+ | -------------------------- | --------------------------------------------------- |
133
+ | `createShaderMaterial` | Animated water shader on fountain meshes |
134
+ | `updateShaderUniform` | Per-frame `time` uniform update for water animation |
135
+ | `lerpColor` | Smooth color blending in spell VFX arcs |
136
+ | `hsb` | HSB color for quadratic bezier buff arcs |
137
+ | `quadCurve` | Quadratic bezier energy arc for buff/heal spells |
138
+ | `noiseDetail` | Richer noise octaves on deeper floors |
139
+ | `rad2deg` | Yaw display in compass panel |
140
+ | `disableBloom` | Bloom disable in minimal visual preset |
141
+ | `enableFXAA`/`disableFXAA` | FXAA toggle per visual preset mode |
142
+
143
+ ---
144
+
145
+ ## Batch 12 — `87bbb56`
146
+
147
+ _+43/−10 lines_
148
+
149
+ | API | Integration |
150
+ | ---------------------- | -------------------------------------------------- |
151
+ | `arc` | Compass arc sweep around facing direction |
152
+ | `randRange`/`randInt` | Monster stat scaling + encounter generation |
153
+ | `drawGlowTextCentered` | Centered glow titles (victory screen) |
154
+ | `dist3d` | Monster distance from player in combat info |
155
+ | `n64Palette` | Classic N64 color palette for boss/gold indicators |
156
+ | `createSpaceSkybox` | Dragon's Lair (floor 5) space skybox with nebula |
157
+ | `setSkyboxSpeed` | Per-floor skybox rotation speed |
158
+ | `deg2rad` | Compass arc angle conversion |
159
+ | `emitParticle` | Ambient dust motes near player during exploration |
160
+ | `get3DStats` | Triangle/draw call/mesh count in debug panel |
161
+
162
+ ---
163
+
164
+ ## Batch 11 — `4bfe5c5`
165
+
166
+ _+83/−12 lines_
167
+
168
+ | API | Integration |
169
+ | --------------------------------------------------- | ------------------------------------------------- |
170
+ | `enableN64Mode`/`enablePSXMode`/`disablePresetMode` | Visual preset toggle (V key) |
171
+ | `noise` | Perlin noise fog wisps during explore/combat |
172
+ | `drawGradientRect` | Selected item highlight in shop browser |
173
+ | `bezier` | Curved spell energy arc from caster to impact |
174
+ | `createCapsule` | Ghost/wraith monster shape |
175
+ | `setDirectionalLight` | Per-floor directional light angle for shadows |
176
+ | `drawFlash` | Screen flash overlay for damage/magic/discoveries |
177
+ | `clearFog` | No fog in merchant shop area |
178
+ | `getRotation` | Query spin state for trap rune direction reversal |
179
+ | `circleCollision` | _(exposed, used in conjunction with aabb)_ |
180
+
181
+ ---
182
+
183
+ ## Batch 10 — `6453655`
184
+
185
+ _+103/−10 lines_
186
+
187
+ | API | Integration |
188
+ | ------------------------------------------------------- | ------------------------------------------------- |
189
+ | `circle` | Targeting circle around crosshair + victory burst |
190
+ | `ellipse` | Aura behind title text + fog wisps |
191
+ | `ease` | Smooth transitions (floor wipe, victory slide-in) |
192
+ | `poly` | Victory crown + game over skull polygon icons |
193
+ | `setBloomStrength`/`setBloomRadius`/`setBloomThreshold` | Dynamic bloom per floor + combat |
194
+ | `setCastShadow`/`setReceiveShadow` | Floor shadow reception + ghost shadow disable |
195
+ | `setPointLightPosition` | Torch flame position sway |
196
+ | `updateParticles` | Per-frame particle system tick |
197
+ | `dist` | Distance-based encounter scaling from start |
198
+ | `remap` | Encounter chance remapping by distance |
199
+
200
+ ---
201
+
202
+ ## Batch 9 — `8052eb5`
203
+
204
+ _+86/−47 lines_
205
+
206
+ | API | Integration |
207
+ | -------------------------------------------------------------------------------------- | --------------------------------------------- |
208
+ | `createCooldownSet`/`updateCooldowns`/`cooldownReady`/`useCooldown`/`cooldownProgress` | Input + movement cooldown system |
209
+ | `drawTextShadow` | Combat log + floor messages with drop shadows |
210
+ | `smoothstep` | Title screen fade-in interpolation |
211
+ | `setCastShadow` | Ghost enemies don't cast shadows |
212
+ | `aabb` | Thief trap proximity warning collision check |
213
+
214
+ ---
215
+
216
+ ## Batch 8 — `417f047`
217
+
218
+ _+42/−5 lines_
219
+
220
+ | API | Integration |
221
+ | ---------------------------------- | --------------------------------------------------- |
222
+ | `enableRetroEffects` | Init-time bloom + vignette + FXAA + dithering setup |
223
+ | `setBloomStrength` | Boss encounter bloom intensification |
224
+ | `moveMesh` | Enemy lunge forward/back animation on attack |
225
+ | `setMeshVisible` | Death blink-out animation on killed enemies |
226
+ | `sfx` (custom) | Custom waveform SFX for heal, buff, spell, laser |
227
+ | `enableVignette`/`disableVignette` | Fountain cleansing visual |
228
+
229
+ ---
230
+
231
+ ## Batch 7 — `301e737`
232
+
233
+ _+76/−17 lines_
234
+
235
+ | API | Integration |
236
+ | ----------------------------------------------------------------------- | --------------------------------------------------------------------------- |
237
+ | `createHitState`/`triggerHit`/`isVisible`/`isFlashing`/`updateHitState` | Party invulnerability frames on enemy hit |
238
+ | `enableChromaticAberration`/`disableChromaticAberration` | Boss hit distortion effect (timed) |
239
+ | `setVolume` | Context-sensitive volume (combat louder, shop quieter) |
240
+ | `sfx` (presets) | Named presets: hit, explosion, death, coin, powerup, confirm, select, error |
241
+ | `drawPulsingText` | Animated title screen prompts |
242
+
243
+ ---
244
+
245
+ ## Batch 6 — `f4808db`
246
+
247
+ _+67/−15 lines_
248
+
249
+ | API | Integration |
250
+ | ------------------------- | -------------------------------------------------- |
251
+ | `createStateMachine` | Game flow state tracking with elapsed time |
252
+ | `createSpawner` | Encounter spawner that scales enemy count per wave |
253
+ | `enableSkyboxAutoAnimate` | Atmospheric skybox rotation |
254
+ | `enablePixelation` | Deeper floors get retro pixelation effect |
255
+ | `createTimer` | Floor message display timer |
256
+ | `burstParticles` | Particle burst on boss entrance + chest open |
257
+
258
+ ---
259
+
260
+ ## Batch 5 — `118370f`
261
+
262
+ _+87/−14 lines_
263
+
264
+ | API | Integration |
265
+ | --------------- | -------------------------------------------------- |
266
+ | `drawCrosshair` | Pulsing targeting reticle on selected enemy |
267
+ | `drawWave` | Animated energy wave on explore HUD + title screen |
268
+ | `drawTriangle` | Directional compass arrow indicators |
269
+ | `colorMix` | Buff glow indicators on party HP bars |
270
+ | `measureText` | Dynamic gold text alignment in inventory |
271
+ | `hexColor` | Cleaner color definitions in game over + victory |
272
+ | `createPool` | Hit spark particle pool on attack impacts |
273
+
274
+ ---
275
+
276
+ ## Pre-batch foundations (batches 1–4)
277
+
278
+ Commits `e28df4d` through `dc0cd95` established the core game:
279
+
280
+ - **Dungeon generation** — Room carving, corridor connection, door/chest/fountain/trap/boss placement
281
+ - **Party system** — 4-class RPG party (Fighter, Mage, Priest, Thief) with leveling + equipment
282
+ - **Turn-based combat** — Attack/magic/defend with auto-combat option
283
+ - **3D rendering** — First-person grid movement, monster meshes, torch lights, particle effects
284
+ - **Spell system** — Fireball, Ice Bolt, Heal, Bless, Turn Undead, Revive, Mana Shield
285
+ - **Shop system** — Floor-transition merchant with potions and buffs
286
+ - **Save/load** — localStorage persistence for full game state
287
+ - **Minimap** — Fog-of-war tile minimap with player blink + tile colors
288
+ - **Floating damage** — 2D floating text system for combat feedback
289
+
290
+ ---
291
+
292
+ ## Nova64 API Coverage Summary
293
+
294
+ The wizardry-3d demo uses **170+ distinct Nova64 API calls** across all runtime modules:
295
+
296
+ ### 3D Graphics
297
+
298
+ `createCube`, `createSphere`, `createCone`, `createCylinder`, `createPlane`, `createTorus`, `createCapsule`, `createAdvancedCube`, `createAdvancedSphere`, `setPosition`, `getPosition`, `setScale`, `setRotation`, `getRotation`, `rotateMesh`, `moveMesh`, `setFlatShading`, `setMeshOpacity`, `setMeshVisible`, `setCastShadow`, `setReceiveShadow`, `setPBRProperties`, `destroyMesh`, `getMesh`, `getScene`
299
+
300
+ ### Camera
301
+
302
+ `setCameraPosition`, `setCameraTarget`, `setCameraLookAt`, `setCameraFOV`
303
+
304
+ ### Lighting
305
+
306
+ `setAmbientLight`, `setLightDirection`, `setLightColor`, `setDirectionalLight`, `createPointLight`, `setPointLightColor`, `setPointLightPosition`, `removeLight`, `setFog`, `clearFog`
307
+
308
+ ### Skybox
309
+
310
+ `createGradientSkybox`, `createSpaceSkybox`, `createSolidSkybox`, `clearSkybox`, `setSkyboxSpeed`, `enableSkyboxAutoAnimate`, `disableSkyboxAutoAnimate`, `animateSkybox`
311
+
312
+ ### Particles
313
+
314
+ `createParticleSystem`, `setParticleEmitter`, `updateParticles`, `removeParticleSystem`, `burstParticles`, `emitParticle`, `getParticleStats`
315
+
316
+ ### Materials & Shaders
317
+
318
+ `createShaderMaterial`, `updateShaderUniform`, `createInstancedMesh`, `setInstanceTransform`, `setInstanceColor`, `finalizeInstances`, `removeInstancedMesh`, `createLODMesh`, `removeLODMesh`, `updateLODs`
319
+
320
+ ### Post-Processing
321
+
322
+ `enableRetroEffects`, `enableBloom`, `disableBloom`, `enableVignette`, `disableVignette`, `enableChromaticAberration`, `disableChromaticAberration`, `enablePixelation`, `enableFXAA`, `disableFXAA`, `enableDithering`, `enableN64Mode`, `enablePSXMode`, `disablePresetMode`, `enableLowPolyMode`, `isEffectsEnabled`, `setBloomStrength`, `setBloomRadius`, `setBloomThreshold`, `getRenderer`
323
+
324
+ ### 2D Drawing
325
+
326
+ `cls`, `pset`, `line`, `rect`, `rectfill`, `circle`, `ellipse`, `arc`, `bezier`, `quadCurve`, `poly`, `drawTriangle`, `drawDiamond`, `drawRoundedRect`, `drawCheckerboard`, `drawGradient`, `drawGradientRect`, `drawRadialGradient`, `drawSkyGradient`, `drawStarburst`, `drawSpiral`, `drawWave`, `drawNoise`, `drawScanlines`, `drawFlash`, `drawCrosshair`
327
+
328
+ ### Text
329
+
330
+ `print`, `printCentered`, `printRight`, `drawText`, `drawGlowText`, `drawGlowTextCentered`, `drawPulsingText`, `drawTextShadow`, `drawTextOutline`, `scrollingText`, `measureText`, `setTextAlign`, `setTextBaseline`, `setFont`, `getFont`
331
+
332
+ ### UI
333
+
334
+ `drawPanel`, `drawHealthBar`, `drawProgressBar`, `uiProgressBar`, `createButton`, `updateButton`, `drawButton`
335
+
336
+ ### Color
337
+
338
+ `rgba8`, `hexColor`, `hslColor`, `hsb`, `colorLerp`, `colorMix`, `lerpColor`, `n64Palette`, `colorMode`, `color`
339
+
340
+ ### Math
341
+
342
+ `lerp`, `clamp`, `pulse`, `smoothstep`, `ease`, `dist`, `dist3d`, `remap`, `randRange`, `randInt`, `deg2rad`, `rad2deg`, `noise`, `noiseDetail`, `noiseSeed`, `noiseMap`, `flowField`, `TWO_PI`, `HALF_PI`, `QUARTER_PI`
343
+
344
+ ### 2D Transform
345
+
346
+ `pushMatrix`, `popMatrix`, `translate`, `rotate`, `scale2d`, `resetMatrix`, `setCamera`, `centerX`, `centerY`, `grid`, `frameCount`
347
+
348
+ ### Input
349
+
350
+ `key`, `keyp`, `btn`, `btnp`, `mouseX`, `mouseY`, `mouseDown`, `mousePressed`, `leftStickX`, `leftStickY`, `rightStickX`, `rightStickY`, `gamepadAxis`, `gamepadConnected`
351
+
352
+ ### Game Utils
353
+
354
+ `createShake`, `triggerShake`, `updateShake`, `getShakeOffset`, `createCooldownSet`, `updateCooldowns`, `cooldownReady`, `useCooldown`, `cooldownProgress`, `createHitState`, `triggerHit`, `isInvulnerable`, `isVisible`, `isFlashing`, `updateHitState`, `createSpawner`, `updateSpawner`, `createPool`, `createFloatingTextSystem`, `drawFloatingTexts`, `drawFloatingTexts3D`, `createStateMachine`, `createTimer`, `createMinimap`, `drawMinimap`
355
+
356
+ ### Audio
357
+
358
+ `sfx` (presets + custom waveforms), `setVolume`
359
+
360
+ ### Storage & State
361
+
362
+ `saveData`, `loadData`, `deleteData`, `createGameStore`, `novaStore`
363
+
364
+ ### Collision
365
+
366
+ `aabb`, `circleCollision`, `raycastFromCamera`