Adds a new script module exposing Input.bind/value/lastValue/isDown/
wasDown/pressed/released, InputBind.* (the inputbind_t action enum),
and InputButton.* (every named button in the compiled platform's
INPUT_BUTTON_DATA table, e.g. InputButton.SELECT on PSP).
Renames the PLATFORM global to Platform.current for consistency with
Time/Console/Input.
Uppercases every INPUT_BUTTON_DATA .name across inputlinux.c/
inputpsp.c/inputdolphin.c to match the InputButton.* JS constants
(inputButtonGetByName was already case-insensitive, so this doesn't
change matching behavior).
Moves the default key/button-to-action bindings out of
src/duskrpg/input/inputbindmap.h (deleted) and into
assets/scripts/input.js, branching on Platform.current instead of the
old per-platform #ifdefs. Wired in via require('./input.js') from
init.js.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Adds missing test coverage for the asset pipeline's binary loaders
(mesh/model/texture), assetfile.c, and assetbatch.c, plus a new
test/event suite for the shared event primitive.
Found and fixed two real bugs while writing this:
- assetFileRead's NULL-buffer skip path double-counted file->position,
which could trip stb_image's EOF check early on images that skip
bytes mid-decode.
- eventSubscribe/eventUnsubscribe matched only on the callback pointer
instead of the (callback, user) pair the docs already promised, so
two independent consumers of the same cached asset (e.g. two
assetbatch_t's) would abort. Covered by dedicated caching tests in
both test_assetbatch.c and test_assetmodelloader.c.
Also drops test_overworldscene.c, broken by the in-progress
overworldscene.js/init.js export-contract rewrite.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
scriptvalue.h/.c holds the scriptvalue_t tagged-union type and its
JS<->C decode/encode helpers; scriptdef.h/.c holds the declarative
scriptfuncdef_t/scriptpropdef_t definitions, the binding registry,
and the JerryScript trampolines. Lets a module declare its JS-facing
methods/properties/globals as typed data instead of hand-writing
argument-checking boilerplate per method. Framework only for now --
no existing module has been migrated onto it yet.