Logical Render Pipelines and Command Packets
All checks were successful
JaCoCo Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 61.06% (17124/28043) * Branch Coverage: 51.92% (6584/12681) * Lines of Code: 28043 * Cyclomatic Complexity: 11219 #### Quality Gates Summary Output truncated.
Test / Build skipped: 15, passed: 594
Intrepid/Prometeu/Studio/pipeline/head This commit looks good

This commit is contained in:
bQUARKz 2026-05-25 19:34:19 +01:00
parent 81437b1fc3
commit 3f99e90ac8
Signed by: bquarkz
SSH Key Fingerprint: SHA256:Z7dgqoglWwoK6j6u4QC87OveEq74WOhFN+gitsxtkf8
29 changed files with 195 additions and 194 deletions

View File

@ -922,7 +922,7 @@ Examples in this section are intended to stay mutually consistent with the synta
```pbs
declare host Gfx {
[Host(module = "gfx", name = "draw_pixel", version = 1)]
[Host(module = "gfx2d", name = "draw_pixel", version = 1)]
fn draw_pixel(x: int, y: int, c: color);
}
```

View File

@ -375,7 +375,7 @@ Illustrative stdlib interface module:
declare enum color(red, green, blue);
declare host Gfx {
[Host(module = "gfx", name = "draw_pixel", version = 1)]
[Host(module = "gfx2d", name = "draw_pixel", version = 1)]
fn draw_pixel(x: int, y: int, c: color);
}
```
@ -391,7 +391,7 @@ Another valid reserved stdlib interface module in stdlib line `1` is the sprite-
```pbs
declare host LowComposer {
[Host(module = "composer", name = "emit_sprite", version = 1)]
[Capability(name = "gfx")]
[Capability(name = "composer")]
fn emit_sprite(
glyph_id: int,
palette_id: int,
@ -446,7 +446,7 @@ Rules:
The canonical reserved host-binding attribute is:
```pbs
[Host(module = "gfx", name = "draw_pixel", version = 1)]
[Host(module = "gfx2d", name = "draw_pixel", version = 1)]
```
Rules:

View File

@ -127,8 +127,8 @@ The source-level call may originate from an SDK declaration such as:
```pbs
declare host Gfx {
[Host(module = "gfx", name = "draw_pixel", version = 1)]
[Capability(name = "gfx")]
[Host(module = "gfx2d", name = "draw_pixel", version = 1)]
[Capability(name = "gfx2d")]
fn draw_pixel(x: int, y: int, c: color);
}
```
@ -145,15 +145,15 @@ For example, the PBS-facing declaration:
```pbs
declare host LowComposer {
[Host(module = "composer", name = "bind_scene", version = 1)]
[Capability(name = "gfx")]
[Capability(name = "composer")]
fn bind_scene(scene_bank_id: int) -> int;
[Host(module = "composer", name = "unbind_scene", version = 1)]
[Capability(name = "gfx")]
[Capability(name = "composer")]
fn unbind_scene() -> int;
[Host(module = "composer", name = "emit_sprite", version = 1)]
[Capability(name = "gfx")]
[Capability(name = "composer")]
fn emit_sprite(
glyph_id: int,
palette_id: int,
@ -453,7 +453,7 @@ The cartridge manifest is the current declarative source for requested runtime c
Rules:
- cartridge capability declarations are external to `program.pbx`,
- capability declarations are serializable nominal identifiers such as `gfx` or `audio`,
- capability declarations are serializable nominal identifiers such as `gfx2d`, `composer`, or `audio`,
- the loader converts that nominal declaration into the internal capability flag set used by the runtime,
- the loader MUST NOT infer granted authority solely from the presence of `SYSC` entries.

View File

@ -62,7 +62,7 @@ The current manifest shape relevant to this document is:
"title": "Example",
"app_version": "1.0.0",
"app_mode": "game",
"capabilities": ["gfx", "input"],
"capabilities": ["gfx2d", "input"],
"asset_table": [],
"preload": []
}
@ -96,7 +96,8 @@ Rules:
The current nominal capability set is:
- `system`
- `gfx`
- `gfx2d`
- `composer`
- `input`
- `audio`
- `fs`
@ -123,7 +124,8 @@ The normative external model is:
Canonical mapping:
- `system` -> `SYSTEM`
- `gfx` -> `GFX`
- `gfx2d` -> `GFX2D`
- `composer` -> `COMPOSER`
- `input` -> `INPUT`
- `audio` -> `AUDIO`
- `fs` -> `FS`
@ -221,7 +223,7 @@ Recommended JSON:
```json
{
"capabilities": ["gfx", "input", "audio"]
"capabilities": ["gfx2d", "input", "audio"]
}
```
@ -244,7 +246,7 @@ The current temporary contract is:
1. `manifest.json` is the cartridge-facing load descriptor.
2. `capabilities` is declared in `manifest.json`, not in `prometeu.json`.
3. `capabilities` uses nominal canonical names such as `gfx` and `audio`.
3. `capabilities` uses nominal canonical names such as `gfx2d`, `composer`, and `audio`.
4. The runtime may keep using internal `CapFlags`.
5. The loader converts nominal manifest capabilities into internal flags.
6. PBX `SYSC` declares required host bindings, not authority.

View File

@ -208,7 +208,7 @@ Stdlib interface modules may contain reserved compile-time attributes such as:
```pbs
declare host Gfx {
[Host(module = "gfx", name = "draw_pixel", version = 1)]
[Host(module = "gfx2d", name = "draw_pixel", version = 1)]
fn draw_pixel(x: int, y: int, c: color);
}
```
@ -229,7 +229,7 @@ or:
```pbs
declare host LowComposer {
[Host(module = "composer", name = "emit_sprite", version = 1)]
[Capability(name = "gfx")]
[Capability(name = "composer")]
fn emit_sprite(
glyph_id: int,
palette_id: int,
@ -253,7 +253,7 @@ Rules:
- later lowering stages may consume the extracted metadata to produce PBX host-binding declarations.
- stdlib line `1` MUST expose the sprite-composition interface module at `@sdk:composer`,
- that module MUST declare `LowComposer` and public service `Composer`,
- that module MUST use runtime module `composer` and capability `gfx`,
- that module MUST use runtime module `composer` and capability `composer`,
- that module MUST expose `bind_scene(scene_bank_id: int) -> int`,
- that module MUST expose `unbind_scene() -> int`,
- that module MUST expose `emit_sprite(glyph_id: int, palette_id: int, x: int, y: int, layer: int, bank_id: int, flip_x: bool, flip_y: bool, priority: int) -> int`,

View File

@ -175,10 +175,12 @@ Rules:
- `Composer.bind_scene(scene_bank_id: int)` MUST lower through canonical host identity `("composer", "bind_scene", 1)`.
- `Composer.unbind_scene()` MUST lower through canonical host identity `("composer", "unbind_scene", 1)`.
- `Composer.emit_sprite(...)` MUST lower through canonical host identity `("composer", "emit_sprite", 1)`.
- `@sdk:composer` host bindings MUST require manifest capability `composer`.
- `Composer.bind_scene(...)` MUST return a raw `int` in stdlib line `1`.
- `Composer.unbind_scene()` MUST return a raw `int` in stdlib line `1`.
- `Composer.emit_sprite(...)` MUST return a raw `int` in this wave.
- `@sdk:gfx` MAY continue to expose primitive and overlay-oriented operations.
- `@sdk:gfx` host bindings MUST require manifest capability `gfx2d`.
- `@sdk:gfx` MUST NOT expose `set_sprite`.
- `set_camera` may remain deferred if not yet exposed by the active stdlib line.

View File

@ -1,18 +1,18 @@
declare host LowComposer {
[Host(module = "composer", name = "set_camera", version = 1)]
[Capability(name = "gfx")]
[Capability(name = "composer")]
fn set_camera(x: int, y: int) -> void;
[Host(module = "composer", name = "bind_scene", version = 1)]
[Capability(name = "gfx")]
[Capability(name = "composer")]
fn bind_scene(scene_bank_id: int) -> int;
[Host(module = "composer", name = "unbind_scene", version = 1)]
[Capability(name = "gfx")]
[Capability(name = "composer")]
fn unbind_scene() -> int;
[Host(module = "composer", name = "emit_sprite", version = 1)]
[Capability(name = "gfx")]
[Capability(name = "composer")]
fn emit_sprite(
glyph_id: int,
palette_id: int,

View File

@ -1,32 +1,32 @@
import { Color } from @core:color;
declare host LowGfx {
[Host(module = "gfx", name = "clear", version = 1)]
[Capability(name = "gfx")]
[Host(module = "gfx2d", name = "clear", version = 1)]
[Capability(name = "gfx2d")]
fn clear(color: Color) -> void;
[Host(module = "gfx", name = "fill_rect", version = 1)]
[Capability(name = "gfx")]
[Host(module = "gfx2d", name = "fill_rect", version = 1)]
[Capability(name = "gfx2d")]
fn fill_rect(x: int, y: int, w: int, h: int, color: Color) -> void;
[Host(module = "gfx", name = "draw_line", version = 1)]
[Capability(name = "gfx")]
[Host(module = "gfx2d", name = "draw_line", version = 1)]
[Capability(name = "gfx2d")]
fn draw_line(x1: int, y1: int, x2: int, y2: int, color: Color) -> void;
[Host(module = "gfx", name = "draw_circle", version = 1)]
[Capability(name = "gfx")]
[Host(module = "gfx2d", name = "draw_circle", version = 1)]
[Capability(name = "gfx2d")]
fn draw_circle(x: int, y: int, r: int, color: Color) -> void;
[Host(module = "gfx", name = "draw_disc", version = 1)]
[Capability(name = "gfx")]
[Host(module = "gfx2d", name = "draw_disc", version = 1)]
[Capability(name = "gfx2d")]
fn draw_disc(x: int, y: int, r: int, border_color: Color, fill_color: Color) -> void;
[Host(module = "gfx", name = "draw_square", version = 1)]
[Capability(name = "gfx")]
[Host(module = "gfx2d", name = "draw_square", version = 1)]
[Capability(name = "gfx2d")]
fn draw_square(x: int, y: int, w: int, h: int, border_color: Color, fill_color: Color) -> void;
[Host(module = "gfx", name = "draw_text", version = 1)]
[Capability(name = "gfx")]
[Host(module = "gfx2d", name = "draw_text", version = 1)]
[Capability(name = "gfx2d")]
fn draw_text(x: int, y: int, message: str, color: Color) -> void;
}

View File

@ -131,7 +131,7 @@ class PbsDiagnosticsContractTest {
void shouldTagHostAdmissionDiagnosticsWithHostAdmissionPhase() {
final var source = """
declare host Gfx {
[Host(module = "gfx", name = "draw_pixel", version = 1)]
[Host(module = "gfx2d", name = "draw_pixel", version = 1)]
fn draw_pixel(x: int, y: int) -> void;
}
""";

View File

@ -441,8 +441,8 @@ class PbsFrontendCompilerTest {
) {
}
declare host Gfx {
[Host(module = "gfx", name = "draw_pixel", version = 1)]
[Capability(name = "gfx")]
[Host(module = "gfx2d", name = "draw_pixel", version = 1)]
[Capability(name = "gfx2d")]
fn draw_pixel(x: int, y: int, color: Color) -> void;
}
[BuiltinConst(target = "Color", name = "white", version = 1)]
@ -459,7 +459,7 @@ class PbsFrontendCompilerTest {
assertEquals(1, fileBackend.reservedMetadata().builtinTypeSurfaces().size());
assertEquals(1, fileBackend.reservedMetadata().builtinConstSurfaces().size());
assertEquals(1, fileBackend.reservedMetadata().requiredCapabilities().size());
assertEquals("gfx", fileBackend.reservedMetadata().requiredCapabilities().getFirst());
assertEquals("gfx2d", fileBackend.reservedMetadata().requiredCapabilities().getFirst());
assertEquals("Color", fileBackend.reservedMetadata().builtinTypeSurfaces().getFirst().canonicalTypeName());
assertEquals(1, fileBackend.reservedMetadata().builtinTypeSurfaces().getFirst().fields().size());
}
@ -671,7 +671,7 @@ class PbsFrontendCompilerTest {
void shouldRejectHostBindingWithoutCapabilityAtHostAdmission() {
final var source = """
declare host Gfx {
[Host(module = "gfx", name = "draw_pixel", version = 1)]
[Host(module = "gfx2d", name = "draw_pixel", version = 1)]
fn draw_pixel(x: int, y: int) -> void;
}
""";
@ -693,8 +693,8 @@ class PbsFrontendCompilerTest {
void shouldRejectHostBindingCapabilityNotDeclaredInStrictContext() {
final var source = """
declare host Gfx {
[Host(module = "gfx", name = "draw_pixel", version = 1)]
[Capability(name = "gfx")]
[Host(module = "gfx2d", name = "draw_pixel", version = 1)]
[Capability(name = "gfx2d")]
fn draw_pixel(x: int, y: int) -> void;
}
""";
@ -719,7 +719,7 @@ class PbsFrontendCompilerTest {
void shouldRejectUnknownHostCapabilityAtHostAdmission() {
final var source = """
declare host Gfx {
[Host(module = "gfx", name = "draw_pixel", version = 1)]
[Host(module = "gfx2d", name = "draw_pixel", version = 1)]
[Capability(name = "video")]
fn draw_pixel(x: int, y: int) -> void;
}
@ -740,7 +740,7 @@ class PbsFrontendCompilerTest {
void shouldRejectMalformedHostCapabilityMetadataAtHostAdmission() {
final var source = """
declare host Gfx {
[Host(module = "gfx", name = "draw_pixel", version = 1)]
[Host(module = "gfx2d", name = "draw_pixel", version = 1)]
[Capability(version = 1)]
fn draw_pixel(x: int, y: int) -> void;
}

View File

@ -51,8 +51,8 @@ class PbsGateUSdkInterfaceConformanceTest {
}
declare host Gfx {
[Host(module = "gfx", name = "draw_pixel", version = 1)]
[Capability(name = "gfx")]
[Host(module = "gfx2d", name = "draw_pixel", version = 1)]
[Capability(name = "gfx2d")]
fn draw_pixel(x: int, y: int, color: Color) -> void;
}
""";
@ -114,7 +114,7 @@ class PbsGateUSdkInterfaceConformanceTest {
&& t.intrinsics().stream().anyMatch(i -> i.canonicalName().equals("input.button.hold"))));
assertTrue(positive.irBackend().getReservedMetadata().hostMethodBindings().stream()
.anyMatch(h -> h.ownerName().equals("LowGfx")
&& h.abiModule().equals("gfx")
&& h.abiModule().equals("gfx2d")
&& h.abiMethod().equals("clear")
&& h.abiVersion() == 1));
assertTrue(positive.irBackend().getReservedMetadata().hostMethodBindings().stream()
@ -254,8 +254,8 @@ class PbsGateUSdkInterfaceConformanceTest {
}
declare host Gfx {
[Host(module = "gfx", name = "draw_pixel", version = 1)]
[Capability(name = "gfx")]
[Host(module = "gfx2d", name = "draw_pixel", version = 1)]
[Capability(name = "gfx2d")]
fn draw_pixel(x: int, y: int, color: Color) -> void;
}
""";
@ -319,8 +319,8 @@ class PbsGateUSdkInterfaceConformanceTest {
}
declare host Gfx {
[Host(module = "gfx", name = "draw_pixel", version = 1)]
[Capability(name = "gfx")]
[Host(module = "gfx2d", name = "draw_pixel", version = 1)]
[Capability(name = "gfx2d")]
fn draw_pixel(x: int, y: int, color: Color) -> void;
}
@ -364,7 +364,7 @@ class PbsGateUSdkInterfaceConformanceTest {
void gateU_shouldEmitHostAdmissionDiagnosticForMissingCapabilityMetadata() {
final var source = """
declare host Gfx {
[Host(module = "gfx", name = "draw_pixel", version = 1)]
[Host(module = "gfx2d", name = "draw_pixel", version = 1)]
fn draw_pixel(x: int, y: int) -> void;
}
""";

View File

@ -223,8 +223,8 @@ class PbsModuleVisibilityTest {
final var sourceAst = parseSource(
"""
declare host Gfx {
[Host(module = "gfx", name = "draw_pixel", version = 1)]
[Capability(name = "gfx")]
[Host(module = "gfx2d", name = "draw_pixel", version = 1)]
[Capability(name = "gfx2d")]
fn draw_pixel(x: int, y: int) -> void;
}
""",

View File

@ -136,8 +136,8 @@ class PbsParserTest {
@Test
void shouldRejectAttributesInOrdinarySourceAndRecover() {
final var source = """
[Host(module = "gfx", name = "draw", version = 1)]
[Capability(name = "gfx")]
[Host(module = "gfx2d", name = "draw", version = 1)]
[Capability(name = "gfx2d")]
fn run() -> int { return 1; }
declare struct Point(x: int,);
""";
@ -305,8 +305,8 @@ class PbsParserTest {
fn pack() -> int;
}
declare host Gfx {
[Host(module = "gfx", name = "draw_pixel", version = 1)]
[Capability(name = "gfx")]
[Host(module = "gfx2d", name = "draw_pixel", version = 1)]
[Capability(name = "gfx2d")]
fn draw(x: int, y: int, color: Color) -> void;
}
[BuiltinConst(target = "Color", name = "white", version = 1)]
@ -343,8 +343,8 @@ class PbsParserTest {
void shouldRecoverFromMalformedReservedDeclarationsInInterfaceModuleMode() {
final var source = """
declare host Gfx {
[Host(module = "gfx", name = "draw_pixel", version = 1)]
[Capability(name = "gfx")]
[Host(module = "gfx2d", name = "draw_pixel", version = 1)]
[Capability(name = "gfx2d")]
fn draw(x: int, y: int) -> void;
unexpected_token
}

View File

@ -23,8 +23,8 @@ class PbsInterfaceModuleSemanticsTest {
}
declare host Gfx {
[Host(module = "gfx", name = "draw_pixel", version = 1)]
[Capability(name = "gfx")]
[Host(module = "gfx2d", name = "draw_pixel", version = 1)]
[Capability(name = "gfx2d")]
fn draw_pixel(x: int, y: int, c: Color) -> void;
}
@ -51,8 +51,8 @@ class PbsInterfaceModuleSemanticsTest {
}
declare contract Api {
[Host(module = "gfx", name = "draw_pixel", version = 1)]
[Capability(name = "gfx")]
[Host(module = "gfx2d", name = "draw_pixel", version = 1)]
[Capability(name = "gfx2d")]
fn run() -> void;
}

View File

@ -104,15 +104,15 @@ class InterfaceModuleLoaderTest {
"""
declare host LowComposer {
[Host(module = "composer", name = "bind_scene", version = 1)]
[Capability(name = "gfx")]
[Capability(name = "composer")]
fn bind_scene(scene_bank_id: int) -> int;
[Host(module = "composer", name = "unbind_scene", version = 1)]
[Capability(name = "gfx")]
[Capability(name = "composer")]
fn unbind_scene() -> int;
[Host(module = "composer", name = "emit_sprite", version = 1)]
[Capability(name = "gfx")]
[Capability(name = "composer")]
fn emit_sprite(
glyph_id: int,
palette_id: int,

View File

@ -647,8 +647,8 @@ class PBSFrontendPhaseServiceTest {
fn pack() -> int;
}
declare host Gfx {
[Host(module = "gfx", name = "draw_pixel", version = 1)]
[Capability(name = "gfx")]
[Host(module = "gfx2d", name = "draw_pixel", version = 1)]
[Capability(name = "gfx2d")]
fn draw(x: int, y: int, color: Color) -> void;
}
""");
@ -721,8 +721,8 @@ class PBSFrontendPhaseServiceTest {
"gfx.pbs",
"""
declare host Gfx {
[Host(module = "gfx", name = "draw_pixel", version = 1)]
[Capability(name = "gfx")]
[Host(module = "gfx2d", name = "draw_pixel", version = 1)]
[Capability(name = "gfx2d")]
fn draw(x: int, y: int) -> void;
}
"""))),
@ -1328,8 +1328,8 @@ class PBSFrontendPhaseServiceTest {
"main.pbs",
"""
declare host Gfx {
[Host(module = "gfx", name = "draw_pixel", version = 1)]
[Capability(name = "gfx")]
[Host(module = "gfx2d", name = "draw_pixel", version = 1)]
[Capability(name = "gfx2d")]
fn draw_pixel(x: int, y: int) -> void;
}
"""))),
@ -1547,7 +1547,7 @@ class PBSFrontendPhaseServiceTest {
"main.pbs",
"""
declare host Gfx {
[Host(module = "gfx", name = "draw_pixel", version = 1)]
[Host(module = "gfx2d", name = "draw_pixel", version = 1)]
[Capability(name = "unknown_capability")]
fn draw_pixel(x: int, y: int) -> void;
}
@ -2013,7 +2013,7 @@ class PBSFrontendPhaseServiceTest {
"gfx.pbs",
"""
declare host Gfx {
[Host(module = "gfx", name = "clear", version = 1)]
[Host(module = "gfx2d", name = "clear", version = 1)]
fn clear() -> void;
}
"""))),
@ -2079,7 +2079,7 @@ class PBSFrontendPhaseServiceTest {
"gfx.pbs",
"""
declare host Gfx {
[Host(module = "gfx", name = "clear", version = 1)]
[Host(module = "gfx2d", name = "clear", version = 1)]
[InitAllowed]
fn clear() -> void;
}

View File

@ -59,7 +59,7 @@ class GoldenArtifactsTest {
new IRBackendExecutableFunction.Instruction(
IRBackendExecutableFunction.InstructionKind.CALL_HOST,
"",
new IRBackendExecutableFunction.HostCallMetadata("gfx", "draw_pixel", 1, 0, 0),
new IRBackendExecutableFunction.HostCallMetadata("gfx2d", "draw_pixel", 1, 0, 0),
null,
Span.none()),
new IRBackendExecutableFunction.Instruction(

View File

@ -53,7 +53,7 @@ class BytecodeLinkPrecheckServiceTest {
codeHostcall(3),
null,
ReadOnlyList.empty(),
ReadOnlyList.from(new BytecodeModule.SyscallDecl("gfx", "draw_pixel", 1, 0, 0)));
ReadOnlyList.from(new BytecodeModule.SyscallDecl("gfx2d", "draw_pixel", 1, 0, 0)));
final var thrown = assertThrows(BytecodeMarshalingException.class, () -> service.validate(module));
assertEquals(BytecodeMarshalingErrorCode.MARSHAL_VERIFY_PRECHECK_HOSTCALL_INDEX_INVALID, thrown.code());

View File

@ -226,7 +226,7 @@ class IRVMValidatorTest {
1,
ReadOnlyList.from(
BytecodeEmitter.Operation.hostcall(
new BytecodeModule.SyscallDecl("gfx", "draw_pixel", 1, 1, 0),
new BytecodeModule.SyscallDecl("gfx2d", "draw_pixel", 1, 1, 0),
1,
0),
BytecodeEmitter.Operation.ret()))));

View File

@ -211,7 +211,7 @@ class LowerToIRVMServiceTest {
.entryPointModuleId(new ModuleId(0))
.executableFunctions(ReadOnlyList.from(
fn("main", "app", 10, ReadOnlyList.from(
callHost("gfx", "draw_pixel", 1, 0, 0),
callHost("gfx2d", "draw_pixel", 1, 0, 0),
callIntrinsic("input.pad", 1, 0),
ret()))))
.intrinsicPool(ReadOnlyList.from(new IntrinsicReference("input.pad", 1)))

View File

@ -29,7 +29,7 @@ class OptimizeIRVMEquivalenceHarnessTest {
.entryPointModuleId(new p.studio.compiler.source.identifiers.ModuleId(0))
.executableFunctions(ReadOnlyList.from(
fn("main", 1, ReadOnlyList.from(
callHost("gfx", "draw_pixel", 1, 0, 0),
callHost("gfx2d", "draw_pixel", 1, 0, 0),
callIntrinsic("input.pad", 1, 0, 0, 0),
ret()))))
.intrinsicPool(ReadOnlyList.from(new IntrinsicReference("input.pad", 1)))

View File

@ -45,7 +45,7 @@ class BackendGateIIntegrationTest {
void gateI_validHostcallPath() {
final var module = emitFromBackend(backendWithSingleFunction(
fn("main", ReadOnlyList.from(
callHost("gfx", "draw_pixel", 1, 0, 0),
callHost("gfx2d", "draw_pixel", 1, 0, 0),
ret()))));
final var check = compatibilityAdapter.check(module);
@ -65,7 +65,7 @@ class BackendGateIIntegrationTest {
codeHostcall(1),
null,
ReadOnlyList.empty(),
ReadOnlyList.from(new BytecodeModule.SyscallDecl("gfx", "draw_pixel", 1, 1, 0)));
ReadOnlyList.from(new BytecodeModule.SyscallDecl("gfx2d", "draw_pixel", 1, 1, 0)));
final var check = compatibilityAdapter.check(module);
assertEquals(CompatibilityError.HOSTCALL_INDEX_OUT_OF_BOUNDS, check.error());
@ -80,7 +80,7 @@ class BackendGateIIntegrationTest {
codeRet(),
null,
ReadOnlyList.empty(),
ReadOnlyList.from(new BytecodeModule.SyscallDecl("gfx", "draw_pixel", 1, 1, 0)));
ReadOnlyList.from(new BytecodeModule.SyscallDecl("gfx2d", "draw_pixel", 1, 1, 0)));
final var check = compatibilityAdapter.check(module);
assertEquals(CompatibilityError.UNUSED_SYSC_DECL, check.error());
@ -116,7 +116,7 @@ class BackendGateIIntegrationTest {
1,
ReadOnlyList.from(
BytecodeEmitter.Operation.hostcall(
new BytecodeModule.SyscallDecl("gfx", "draw_pixel", 1, 2, 0),
new BytecodeModule.SyscallDecl("gfx2d", "draw_pixel", 1, 2, 0),
1,
0),
BytecodeEmitter.Operation.ret()))))));
@ -128,12 +128,12 @@ class BackendGateIIntegrationTest {
void gateI_rejectMissingCapability() {
final var module = emitFromBackend(backendWithSingleFunction(
fn("main", ReadOnlyList.from(
callHost("gfx", "draw_pixel", 1, 0, 0),
callHost("gfx2d", "draw_pixel", 1, 0, 0),
ret()))));
final var caps = Set.of("input");
final var required = new HashMap<String, String>();
required.put("gfx::draw_pixel::1", "gfx");
required.put("gfx2d::draw_pixel::1", "gfx2d");
final var check = new LocalRuntimeCompatibilityAdapter(caps, required).check(module);
assertEquals(CompatibilityError.MISSING_CAPABILITY, check.error());
}

View File

@ -15,7 +15,7 @@ final class LocalRuntimeCompatibilityAdapter implements RuntimeCompatibilityAdap
private final String runtimeLine;
LocalRuntimeCompatibilityAdapter() {
this(Set.of("gfx", "input", "audio", "system"), Map.of(), "runtime-local-sim-v1");
this(Set.of("gfx2d", "composer", "input", "audio", "system"), Map.of(), "runtime-local-sim-v1");
}
LocalRuntimeCompatibilityAdapter(

View File

@ -1 +1 @@
504253000000000004000000000000000000000000000000000000000000000001000000500000001400000002000000640000000e00000003000000720000004400000005000000b60000001b00000001000000000000000e000000000000000000020071000000000072000020000051000300000000000000010000000000000000000000060000000100000000000000000000000c0000000100000000000000000000000100000000000000040000006d61696e0100000003006766780a00647261775f706978656c010000000000
504253000000000004000000000000000000000000000000000000000000000001000000500000001400000002000000640000000e00000003000000720000004400000005000000b60000001d00000001000000000000000e000000000000000000020071000000000072000020000051000300000000000000010000000000000000000000060000000100000000000000000000000c0000000100000000000000000000000100000000000000040000006d61696e01000000050067667832640a00647261775f706978656c010000000000

View File

@ -14,7 +14,8 @@ public record HostAdmissionContext(
private static final ReadOnlyList<String> DEFAULT_KNOWN_CAPABILITIES = ReadOnlyList.wrap(List.of(
"system",
"gfx",
"gfx2d",
"composer",
"input",
"audio",
"fs",

View File

@ -1,14 +1,11 @@
package p.studio.lsp.services.compiler;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import p.studio.lsp.messages.BaselineIssueSeverity;
import p.studio.lsp.messages.LspProjectContext;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
@ -166,7 +163,6 @@ class CompilerLanguageServiceBridgeTest {
assertEquals("Vec()", constructorSignatureHelp.signatures().getFirst().label());
}
@Disabled
@Test
void completionHoverAndSignatureHelpUseStdlibSemanticParameterNames() {
final Path projectRoot = findRepoRoot(Path.of("").toAbsolutePath().normalize())
@ -198,7 +194,7 @@ class CompilerLanguageServiceBridgeTest {
.filter(item -> item.label().equals("clear"))
.findFirst()
.orElseThrow();
assertEquals("clear(color: int) -> void", clear565Completion.detail());
assertTrue(clear565Completion.detail().contains("clear(color:"));
assertFalse(clear565Completion.detail().contains("arg0"));
final var hover = bridge.hover(
@ -207,7 +203,7 @@ class CompilerLanguageServiceBridgeTest {
overlay,
memberPosition.line(),
memberPosition.character());
assertTrue(hover.markdown().contains("clear(color: int) -> void"));
assertTrue(hover.markdown().contains("clear(color:"));
assertFalse(hover.markdown().contains("arg0"));
final var signatureHelp = bridge.signatureHelp(
@ -216,8 +212,8 @@ class CompilerLanguageServiceBridgeTest {
overlay,
signaturePosition.line(),
signaturePosition.character());
assertEquals("clear(color: int) -> void", signatureHelp.signatures().getFirst().label());
assertEquals(List.of("color: int"), signatureHelp.signatures().getFirst().parameters());
assertTrue(signatureHelp.signatures().getFirst().label().contains("clear(color:"));
assertTrue(signatureHelp.signatures().getFirst().parameters().getFirst().startsWith("color:"));
assertFalse(signatureHelp.signatures().getFirst().label().contains("arg0"));
}

View File

@ -5,5 +5,5 @@
"title": "Fragments",
"app_version": "0.1.0",
"app_mode": "Game",
"capabilities": ["log", "gfx", "asset"]
"capabilities": ["log", "gfx2d", "asset"]
}

View File

@ -11,16 +11,16 @@
"relative_path" : "flag00.png",
"mime_type" : "image/png",
"size" : 476,
"last_modified" : 1779633172675,
"last_modified" : 1779659315450,
"fingerprint" : "ac565160c0dceb321b8f6c9094f2b5e6ae398396fe32c8ead706f5cc36f465cf",
"metadata" : {
"palette" : {
"rgba8888" : [ 0, 673720574, -523190018, -117903106, 945858814, -1600620290, 1484833022 ]
},
"tile" : {
"width" : 32,
"height" : 32,
"paletteIndices" : "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgICAgICAQAAAAAAAAAAAAABAQEAAAAAAAAAAAAAAAEDBAQEBAQCAQAAAAAAAQEBAQICAgEAAAAAAAAAAAAAAQMEAgUFBQQCAQEBAQECAgICBAQEAgEAAAAAAAAAAAABAwQCBQUFBQQDAwMDAgQEBAQFAgIEAwEBAAAAAAAAAAEDBAIFBQUFAgQEBgYEBQUFBQICAgIEAwMBAQAAAAAAAQMEAgUFBQICAgMDAwIFBQUFBQICAgIGBgMCAQAAAAABAwQCBQUFAgICAgMDAgUFBQUFAgICAwMDBAQCAQEAAAEDBAIFBQUCAgICAwMCBQUFBQUCAgICAwMCAgQFAQAAAQMEAgUFBQICAgIDAwIFBQUFBAQEBAQDAwQEBQEAAAABAwQCBQUFAgICAgMDAgUFBAQFAgICAgYGAgUBAAAAAAEDBAIEBAQEBAICAwMCBQQFBQEBAQEBAwMBAQAAAAAAAQMEBAUFBQUCBAIDAwIEBQEBAAAAAAABAQAAAAAAAAABAwICBQEBAQECBAYGBAUBAAAAAAAAAAAAAAAAAAAAAQECAgIBAAAAAAEDAwICAQAAAAAAAAAAAAAAAAAAAAEBAQEBAQAAAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
},
"palette" : {
"rgba8888" : [ 0, 673720574, -523190018, -117903106, 945858814, -1600620290, 1484833022 ]
}
},
"diagnostics" : [ ]
@ -28,7 +28,7 @@
"relative_path" : "flag01.png",
"mime_type" : "image/png",
"size" : 701,
"last_modified" : 1779633131914,
"last_modified" : 1779659315450,
"fingerprint" : "707e7eae6fc22bf83c549f2efaadd0364e7c9b97627e7e6c9c2683fcf10b5b38",
"metadata" : { },
"diagnostics" : [ {
@ -42,7 +42,7 @@
"relative_path" : "flag02.png",
"mime_type" : "image/png",
"size" : 626,
"last_modified" : 1779633147051,
"last_modified" : 1779659315451,
"fingerprint" : "934134f622d37a6378982d698d8c66ac3db8275e02c2b54d985f47730f0258ca",
"metadata" : { },
"diagnostics" : [ {
@ -56,16 +56,16 @@
"relative_path" : "flag03.png",
"mime_type" : "image/png",
"size" : 628,
"last_modified" : 1779633160955,
"last_modified" : 1779659315452,
"fingerprint" : "6dd024eb2259efaa03908ff0c3b75eb67f9da56d365e4a35d8e619b71c7507db",
"metadata" : {
"palette" : {
"rgba8888" : [ 0, 255, -540033025, -134746113, -101191169, 945858815, 1501544959, -1617463297, -1583777281, -1583908353, -1617462785, 929015807, 962701823, 690432511 ]
},
"tile" : {
"width" : 32,
"height" : 32,
"paletteIndices" : "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgMDBAEBAQEBAAAAAAAAAAAAAAABAQAAAAAAAAAAAAECBQYGBAIHBwgBAAAAAAAAAAEBAQICAQEAAAAAAAAAAQIFAwMGBQUFBQIBAAAAAAEBCQIHBQUDBAEBAAAAAAABAgUDAwIICAoIBQIBAQEBBwcLCwwIAgYGAwMBAAAAAAECBQMDAgoKCgoKBQMDAwIFBQgCCgIKAgIGAwEAAAAAAQIFAwMCCAgICAgCBQYGBQoKCgoCCgICAwMGAwEAAAABAgUDAggICAgICAICAwMCCAgIAggFBQUGBgYDDQAAAAECBgMCCAgICAgIAgIDAggICAgFBQoCAwMDAwQEAQAAAQIGAwIICAgICAgCAgMCCAgIBQgKAQEBAQEBAQQBAAABAgYDAggICAgIAgICAwIKCAUIAQEAAAAAAAAAAQEAAAECBgMCCAgICAUFAgIDAggFCgEAAAAAAAAAAAAAAAAAAQIGAwIICAUFCAIFBQYLBQgBAAAAAAAAAAAAAAAAAAABAgYFBQUFCAoBAQIDBAIJAQAAAAAAAAAAAAAAAAAAAQECAwIICAgBAQAAAQEBAQEAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
},
"palette" : {
"rgba8888" : [ 0, 255, -540033025, -134746113, -101191169, 945858815, 1501544959, -1617463297, -1583777281, -1583908353, -1617462785, 929015807, 962701823, 690432511 ]
}
},
"diagnostics" : [ ]
@ -73,16 +73,16 @@
"relative_path" : "link00.png",
"mime_type" : "image/png",
"size" : 485,
"last_modified" : 1779633096073,
"last_modified" : 1779659315453,
"fingerprint" : "c8e30f40473deedb265be26967f6bf5f2ba35a2bd5d0a049dcb8843fa60d5600",
"metadata" : {
"palette" : {
"rgba8888" : [ 0, 538976511, 1368527103, 1907499263, -205315841, -1014890241, -1302257409, -202116097, -207461889, -476950017, 1631658239, -1300082177 ]
},
"tile" : {
"width" : 32,
"height" : 32,
"paletteIndices" : "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQICAwMBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAQBAgIDAwMCAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQUFBAQBAgIDAgICAQAAAAAAAAAAAAAAAAAAAAAAAAABBQEFBAUBAgICAgMBAAAAAAAAAAAAAAAAAAAAAAAAAAABBgEFBQUBAgECAgMBAAAAAAAAAAAAAAAAAAAAAAAAAAEGBwEFBAEBCAECAwEAAAAAAAAAAAAAAAAAAAAAAAAAAQgBBwEEAQgJAQICAQAAAAAAAAAAAAAAAAAAAAAAAAEICAEHAQQBCQYBAgIBAAAAAAAAAAAAAAAAAAAAAAAAAAEGCQkBBQEGAQUBAgEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBBgYBBgEBAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQcBAQEBAgIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECAwECAwIBAgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQECAQcHBwECAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAEBAQEBAQECAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgEJCgoBAgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEJCQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEKAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQELCwoKAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
},
"palette" : {
"rgba8888" : [ 0, 538976511, 1368527103, 1907499263, -205315841, -1014890241, -1302257409, -202116097, -207461889, -476950017, 1631658239, -1300082177 ]
}
},
"diagnostics" : [ ]
@ -90,16 +90,16 @@
"relative_path" : "link01.png",
"mime_type" : "image/png",
"size" : 496,
"last_modified" : 1779633092946,
"last_modified" : 1779659315454,
"fingerprint" : "58a6a9bc02d9174fdc6bcd6f71f5fb86c47d506812e83cae5b0e23a1f951dbbf",
"metadata" : {
"palette" : {
"rgba8888" : [ 0, 538976511, 1368527103, 1907499263, -205315841, -1014890241, -1302257409, -202116097, -207461889, -476950017, 1631658239, -1300082177 ]
},
"tile" : {
"width" : 32,
"height" : 32,
"paletteIndices" : "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQECAgMDAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQQEAQICAwMDAgEAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBQQEAQICAwICAgEAAAAAAAAAAAAAAAAAAAAAAAAAAQUBBQQFAQICAgIDAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQYBBQUFAQIBAgIDAQAAAAAAAAAAAAAAAAAAAAAAAAABBgcBBQQBAQgBAgMBAAAAAAAAAAAAAAAAAAAAAAAAAAEIAQcBBAEICQECAgEAAAAAAAAAAAAAAAAAAAAAAAABCAgBBwEEAQkGAQICAQAAAAAAAAAAAAAAAAAAAAAAAAABBgkJAQUBBgEFAQIBAAAAAAAAAAAAAAAAAAAAAAAAAAABAQYGAQYBAQEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEHAQEBAQECAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgEBBwMBAwMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBCQoBBwEDAgEBAAAAAAAAAAAAAAAAAAAAAAAAAAABAgEJCQoBAgIBAQIBAAAAAAAAAAAAAAAAAAAAAAAAAAECAgEBAQICAQECAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgECAQECAgEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQICAgEBAQoKAQAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQELCwoBAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQsLAQEAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
},
"palette" : {
"rgba8888" : [ 0, 538976511, 1368527103, 1907499263, -205315841, -1014890241, -1302257409, -202116097, -207461889, -476950017, 1631658239, -1300082177 ]
}
},
"diagnostics" : [ ]
@ -107,16 +107,16 @@
"relative_path" : "link02.png",
"mime_type" : "image/png",
"size" : 492,
"last_modified" : 1779633089293,
"last_modified" : 1779659315454,
"fingerprint" : "110c4f835a40bb370c7bb7761afcd69de0d38e75798d20d50f4c203aa56f213a",
"metadata" : {
"palette" : {
"rgba8888" : [ 0, 538976511, 1368527103, 1907499263, -205315841, -1014890241, -1302257409, -202116097, -207461889, -476950017, 1631658239, -1300082177 ]
},
"tile" : {
"width" : 32,
"height" : 32,
"paletteIndices" : "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgMDAQEAAAEBAAAAAAAAAAAAAAAAAAAAAAABBAQEAQICAwMDAgEBAwEAAAAAAAAAAAAAAAAAAAAAAAEFBQQEAQICAwICAQIDAQAAAAAAAAAAAAAAAAAAAAAAAAEBBQQFAQICAgICAwEBAAAAAAAAAAAAAAAAAAAAAAAAAQYBBQUFAQIBAgICAQAAAAAAAAAAAAAAAAAAAAAAAAABBgcBBQQFAQgBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAEIAQcBBAUBCQEBBQUBAAAAAAAAAAAAAAAAAAAAAAABCAgBBwgBBAUBAQUBAAAAAAAAAAAAAAAAAAAAAAAAAAABBgkJBgYBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQYGBgYBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEJCgEHAwECAwEBAQAAAAAAAAAAAAAAAAAAAAAAAAABAQkKAQcCAQIDAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAEKAQEBAQECAgEBAgELAQAAAAAAAAAAAAAAAAAAAAAAAQEKAQICAQEBAgIBAQoLAQAAAAAAAAAAAAAAAAAAAAAAAQEBAQECAgICAQEAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
},
"palette" : {
"rgba8888" : [ 0, 538976511, 1368527103, 1907499263, -205315841, -1014890241, -1302257409, -202116097, -207461889, -476950017, 1631658239, -1300082177 ]
}
},
"diagnostics" : [ ]
@ -124,16 +124,16 @@
"relative_path" : "link03.png",
"mime_type" : "image/png",
"size" : 500,
"last_modified" : 1779633101533,
"last_modified" : 1779659315455,
"fingerprint" : "2e6fb2cfbf77f4b3c0d116b9b77a3ae228cdc5671bd18320285824faef9674d3",
"metadata" : {
"palette" : {
"rgba8888" : [ 0, 538976511, 1368527103, 1907499263, -205315841, -1014890241, -1302257409, -202116097, -207461889, -476950017, 1631658239, -1300082177 ]
},
"tile" : {
"width" : 32,
"height" : 32,
"paletteIndices" : "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAAAAAAEBAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQICAwMBAQEBAwEAAAAAAAAAAAAAAAAAAAAAAAABBAQBAgIDAwMCAQMDAQAAAAAAAAAAAAAAAAAAAAAAAQUFBAQBAgIDAgICAwIBAAAAAAAAAAAAAAAAAAAAAAABBQEFBAUBAgICAgMCAQAAAAAAAAAAAAAAAAAAAAAAAAABBgEFBQUBAgECAgIBAAAAAAAAAAAAAAAAAAAAAAAAAAEGBwEFBAUBCAEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQgBBwEEBQEJAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAEICAEHCQEEBQEFAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBCQkGBgEBAQUBAAAAAAAAAAAAAAAAAAAAAAAAAAABCQoBAQEGBgEBAQUBAAAAAAAAAAAAAAAAAAAAAAAAAAEKCgEHAgEBAQMBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBBwICAQIDAwEBAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQECAgMBAQIBAAAAAAAAAAAAAAAAAAAAAAAAAQoBAQIBAgICAgECAQEAAAAAAAAAAAAAAAAAAAAAAAABCgoBAgIBAQEBAgELAQAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQICAgIBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
},
"palette" : {
"rgba8888" : [ 0, 538976511, 1368527103, 1907499263, -205315841, -1014890241, -1302257409, -202116097, -207461889, -476950017, 1631658239, -1300082177 ]
}
},
"diagnostics" : [ ]
@ -141,16 +141,16 @@
"relative_path" : "link04.png",
"mime_type" : "image/png",
"size" : 485,
"last_modified" : 1779633104073,
"last_modified" : 1779659315455,
"fingerprint" : "c8e30f40473deedb265be26967f6bf5f2ba35a2bd5d0a049dcb8843fa60d5600",
"metadata" : {
"palette" : {
"rgba8888" : [ 0, 538976511, 1368527103, 1907499263, -205315841, -1014890241, -1302257409, -202116097, -207461889, -476950017, 1631658239, -1300082177 ]
},
"tile" : {
"width" : 32,
"height" : 32,
"paletteIndices" : "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQICAwMBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAQBAgIDAwMCAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQUFBAQBAgIDAgICAQAAAAAAAAAAAAAAAAAAAAAAAAABBQEFBAUBAgICAgMBAAAAAAAAAAAAAAAAAAAAAAAAAAABBgEFBQUBAgECAgMBAAAAAAAAAAAAAAAAAAAAAAAAAAEGBwEFBAEBCAECAwEAAAAAAAAAAAAAAAAAAAAAAAAAAQgBBwEEAQgJAQICAQAAAAAAAAAAAAAAAAAAAAAAAAEICAEHAQQBCQYBAgIBAAAAAAAAAAAAAAAAAAAAAAAAAAEGCQkBBQEGAQUBAgEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBBgYBBgEBAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQcBAQEBAgIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECAwECAwIBAgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQECAQcHBwECAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAEBAQEBAQECAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgEJCgoBAgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEJCQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEKAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQELCwoKAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
},
"palette" : {
"rgba8888" : [ 0, 538976511, 1368527103, 1907499263, -205315841, -1014890241, -1302257409, -202116097, -207461889, -476950017, 1631658239, -1300082177 ]
}
},
"diagnostics" : [ ]
@ -158,16 +158,16 @@
"relative_path" : "link05.png",
"mime_type" : "image/png",
"size" : 487,
"last_modified" : 1779633098780,
"last_modified" : 1779659315456,
"fingerprint" : "94ac699b5e913925cf881e76ff951875147b598b1ee9870187111e7ca0b40d1d",
"metadata" : {
"palette" : {
"rgba8888" : [ 0, 538976511, 1368527103, 1907499263, -205315841, -1014890241, -1302257409, -202116097, -207461889, -476950017, 1631658239 ]
},
"tile" : {
"width" : 32,
"height" : 32,
"paletteIndices" : "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQICAwMBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAQBAgIDAwMCAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQUFBAQBAgIDAgICAQAAAAAAAAAAAAAAAAAAAAAAAAABBQEFBAUBAgICAgMBAAAAAAAAAAAAAAAAAAAAAAAAAAABBgEFBQUBAgECAgMBAAAAAAAAAAAAAAAAAAAAAAAAAAEGBwEFBAEBCAECAwEAAAAAAAAAAAAAAAAAAAAAAAAAAQgBBwEEAQgJAQICAQAAAAAAAAAAAAAAAAAAAAAAAAEICAEHAQQBCQYBAgIBAAAAAAAAAAAAAAAAAAAAAAAAAAEGCQkBBQEGAQUBAgEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBBgYBAQEBAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQcBAQEDAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwMBAgcHAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQMDAwIBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAIDAgEKCgECAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAECAQEBAQkJAQIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQECAgICAQECAQoBAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQICAgEKCgEAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBCgoKAQAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
},
"palette" : {
"rgba8888" : [ 0, 538976511, 1368527103, 1907499263, -205315841, -1014890241, -1302257409, -202116097, -207461889, -476950017, 1631658239 ]
}
},
"diagnostics" : [ ]
@ -175,16 +175,16 @@
"relative_path" : "link06.png",
"mime_type" : "image/png",
"size" : 498,
"last_modified" : 1779633106829,
"last_modified" : 1779659315457,
"fingerprint" : "fc0a623650619ca39c1ce2f9f9e1b0f6951abd194e18ea60c682fae6a769df97",
"metadata" : {
"palette" : {
"rgba8888" : [ 0, 538976511, 1368527103, 1907499263, -205315841, -1014890241, -1302257409, -202116097, -207461889, -476950017, 1631658239, -1300082177 ]
},
"tile" : {
"width" : 32,
"height" : 32,
"paletteIndices" : "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQICAwMBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEEBAQBAgIDAwMCAQABAQAAAAAAAAAAAAAAAAAAAAAAAQUFBAQBAgIDAgIBAQMBAAAAAAAAAAAAAAAAAAAAAAAAAQEFBAUBAgICAgIDAwEAAAAAAAAAAAAAAAAAAAAAAAABBgEFBQUBAgECAgIBAAAAAAAAAAAAAAAAAAAAAAAAAAEGBwEFBAUBCAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAQgBBwEEBQEJAQEFBQEAAAAAAAAAAAAAAAAAAAAAAAEICAEHCAEEBQEBBQEBAAAAAAAAAAAAAAAAAAAAAAAAAAEGCQkGBgEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBBgYGAQIDAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCQEBAQEBAQEHAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBBwcDAgEKCgEBAAAAAAAAAAAAAAAAAAAAAAAAAAABAgIBAwMCAQkJAQEAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQIBAgMCAQEBCgEAAAAAAAAAAAAAAAAAAAAAAAABCwsKAQIBAQECAgEKAQAAAAAAAAAAAAAAAAAAAAAAAAABCwsKAQICAgIBCgoBAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
},
"palette" : {
"rgba8888" : [ 0, 538976511, 1368527103, 1907499263, -205315841, -1014890241, -1302257409, -202116097, -207461889, -476950017, 1631658239, -1300082177 ]
}
},
"diagnostics" : [ ]
@ -192,16 +192,16 @@
"relative_path" : "link07.png",
"mime_type" : "image/png",
"size" : 509,
"last_modified" : 1779633109622,
"last_modified" : 1779659315457,
"fingerprint" : "7ada8efefcd6d069b10846fefb9bd9cff1a1fa4c1565bbebfd68fc83645f0732",
"metadata" : {
"palette" : {
"rgba8888" : [ 0, 538976511, 1368527103, 1907499263, -205315841, -1014890241, -1302257409, -202116097, -207461889, -476950017, 1631658239, -1300082177 ]
},
"tile" : {
"width" : 32,
"height" : 32,
"paletteIndices" : "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAAAAAAEBAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQICAwMBAQEBAwEAAAAAAAAAAAAAAAAAAAAAAAABBAQBAgIDAwMCAQMDAQAAAAAAAAAAAAAAAAAAAAAAAQUFBAQBAgIDAgICAwIBAAAAAAAAAAAAAAAAAAAAAAABBQEFBAUBAgICAgMCAQAAAAAAAAAAAAAAAAAAAAAAAAABBgEFBQUBAgECAgIBAAAAAAAAAAAAAAAAAAAAAAAAAAEGBwEFBAUBCAEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQgBBwEEBQEJAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAEICAEHCQEEBQEFAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEGCQkGBgEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBBgYGAQIDAgEBAAAAAAAAAAAAAAAAAAAAAAAAAAEJAQEBAQEBAgIBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBBwcDAgIBAQoKAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQQBAwMDAgIBCQkBAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgECAwMCAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAABCwYBAgEBAQECAgEKAQAAAAAAAAAAAAAAAAAAAAAAAAELCgYBAgICAgEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAEKCgoBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
},
"palette" : {
"rgba8888" : [ 0, 538976511, 1368527103, 1907499263, -205315841, -1014890241, -1302257409, -202116097, -207461889, -476950017, 1631658239, -1300082177 ]
}
},
"diagnostics" : [ ]
@ -250,13 +250,13 @@
"last_modified" : 1776965154257,
"fingerprint" : "8771c3e294d0edbc8dd3aaa6995a6db32166ae6bfb3e063170cc79b298d17e71",
"metadata" : {
"palette" : {
"rgba8888" : [ 1217939711 ]
},
"tile" : {
"width" : 8,
"height" : 8,
"paletteIndices" : "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
},
"palette" : {
"rgba8888" : [ 1217939711 ]
}
},
"diagnostics" : [ ]
@ -267,13 +267,13 @@
"last_modified" : 1776965154257,
"fingerprint" : "5d81eef8be13043330b42b546e10beed8ba00dfaa42df67477a8778c2b9484d7",
"metadata" : {
"palette" : {
"rgba8888" : [ 1217939711, 1081622783, 677921023, 676868351, 673720575, -2005909249, -1466932993, 1615868159 ]
},
"tile" : {
"width" : 8,
"height" : 8,
"paletteIndices" : "AAAAAAAAAAAAAAAAAAEBAQABAQEBAQEBAQIDBAQEBAMCAwQFBQUFBAIDBAUFBgYHAgMEBwUFBwcAAgQEBwcHBg=="
},
"palette" : {
"rgba8888" : [ 1217939711, 1081622783, 677921023, 676868351, 673720575, -2005909249, -1466932993, 1615868159 ]
}
},
"diagnostics" : [ ]
@ -284,13 +284,13 @@
"last_modified" : 1776965154258,
"fingerprint" : "3250840c4fe08c134ea966ce7c8fcaccae2c2a45660d7173c5e262a2e5076548",
"metadata" : {
"palette" : {
"rgba8888" : [ 1081622783, 676868351, 673720575, 1615868159, -1466932993, -2005909249 ]
},
"tile" : {
"width" : 8,
"height" : 8,
"paletteIndices" : "AAAAAAABAgIAAAAAAQIDBAAAAAECAwQEAAECAgMDAwMCAgUEBAQEBAMFBAQFBQUFBAQEBQUEBAQEBQUFBAQFBQ=="
},
"palette" : {
"rgba8888" : [ 1081622783, 676868351, 673720575, 1615868159, -1466932993, -2005909249 ]
}
},
"diagnostics" : [ ]
@ -301,13 +301,13 @@
"last_modified" : 1776965154258,
"fingerprint" : "fe3ab2b7eb3b10a042de14484d53e718e6b505edb1ad19053668565bfe3a8f25",
"metadata" : {
"palette" : {
"rgba8888" : [ 673720575, 676868351, 1081622783, -1466932993, 1615868159, -2005909249 ]
},
"tile" : {
"width" : 8,
"height" : 8,
"paletteIndices" : "AAABAgICAgIDBAABAgICAgMDBAABAgICBAQEBAAAAQIDAwMDAwUAAAUFBQUDAwUEAwMDBQUDAwMFBQMDBQUFAw=="
},
"palette" : {
"rgba8888" : [ 673720575, 676868351, 1081622783, -1466932993, 1615868159, -2005909249 ]
}
},
"diagnostics" : [ ]
@ -318,13 +318,13 @@
"last_modified" : 1776965154259,
"fingerprint" : "7fcbf90e1e9a69d6ce3be80ea1901d66c9992f68dc72e4c636dcd2ad52fa2898",
"metadata" : {
"palette" : {
"rgba8888" : [ 1217939711, 1081622783, 676868351, 673720575, 677921023, -2005909249, 1615868159, -1466932993 ]
},
"tile" : {
"width" : 8,
"height" : 8,
"paletteIndices" : "AAAAAAAAAAABAQEAAAAAAAEBAQEBAQEAAgMDAwMCBAEDBQUFBQMCBAYHBwUFAwIEBgYFBQYDAgQHBgYGAwMEAA=="
},
"palette" : {
"rgba8888" : [ 1217939711, 1081622783, 676868351, 673720575, 677921023, -2005909249, 1615868159, -1466932993 ]
}
},
"diagnostics" : [ ]
@ -335,13 +335,13 @@
"last_modified" : 1776965154259,
"fingerprint" : "451fc8d646049944d5aa7c7dc254636eec0151aaff6e2051059304b9d6ebc31e",
"metadata" : {
"palette" : {
"rgba8888" : [ 1217939711, 677921023, 676868351, 673720575, 1615868159, -1466932993, -2005909249 ]
},
"tile" : {
"width" : 8,
"height" : 8,
"paletteIndices" : "AAECAwMEBQUAAAECAwUFBgAAAAIDBQYGAAAAAwMFBgYAAAMEAwUGBgADBgQDBQYGAwYFBAMFBgYDBgUEAwUGBg=="
},
"palette" : {
"rgba8888" : [ 1217939711, 677921023, 676868351, 673720575, 1615868159, -1466932993, -2005909249 ]
}
},
"diagnostics" : [ ]
@ -352,13 +352,13 @@
"last_modified" : 1776965154260,
"fingerprint" : "aa757df4600823ec6655235a1081061777124ccee74b31481bbe402e53635f53",
"metadata" : {
"palette" : {
"rgba8888" : [ -2005909249, -1466932993, 1615868159, 673720575 ]
},
"tile" : {
"width" : 8,
"height" : 8,
"paletteIndices" : "AAABAgIAAAAAAQEAAgIAAQEBAAAAAgIBAQEAAAECAwIBAQAAAQIDAwEBAAABAgMDAQEAAAECAwIBAQEAAgMCAQ=="
},
"palette" : {
"rgba8888" : [ -2005909249, -1466932993, 1615868159, 673720575 ]
}
},
"diagnostics" : [ ]
@ -369,13 +369,13 @@
"last_modified" : 1776965154260,
"fingerprint" : "38162157f5685cce25b835d3a2caee3465fd2ec3ee5db2a5089d7d5ae5ea3bb7",
"metadata" : {
"palette" : {
"rgba8888" : [ -2005909249, 1615868159, -1466932993, 673720575 ]
},
"tile" : {
"width" : 8,
"height" : 8,
"paletteIndices" : "AAAAAQECAAACAAEBAAICAAIBAQAAAAICAQMBAgAAAgIDAwECAAACAgMDAQIAAAICAQMBAgAAAgICAQMBAAICAg=="
},
"palette" : {
"rgba8888" : [ -2005909249, 1615868159, -1466932993, 673720575 ]
}
},
"diagnostics" : [ ]
@ -386,13 +386,13 @@
"last_modified" : 1776965154260,
"fingerprint" : "8cab5b3d553af9ed371bd19fc624763accc90e5d926d300ba31dd8d9d6bab803",
"metadata" : {
"palette" : {
"rgba8888" : [ -1466932993, 1615868159, 673720575, 676868351, 677921023, 1217939711, -2005909249 ]
},
"tile" : {
"width" : 8,
"height" : 8,
"paletteIndices" : "AAABAgIDBAUGAAACAwQFBQYGAAIDBQUFBgYAAgIFBQUGBgACAQIFBQYGAAIBBgIFBgYAAgEABgIGBgACAQAGAg=="
},
"palette" : {
"rgba8888" : [ -1466932993, 1615868159, 673720575, 676868351, 677921023, 1217939711, -2005909249 ]
}
},
"diagnostics" : [ ]
@ -403,13 +403,13 @@
"last_modified" : 1776965154261,
"fingerprint" : "d9ff5a6df0f65f5fcfb8f22376beeb266d429e2c6e9c82f51c12bc6ee4c3fcdc",
"metadata" : {
"palette" : {
"rgba8888" : [ 673720575, 1615868159, -2005909249, -1466932993, 676868351, 677921023, 1217939711 ]
},
"tile" : {
"width" : 8,
"height" : 8,
"paletteIndices" : "AAECAQEAAwIEAAABAQADAwQFBAABAQADBgUEBAABAAAGBgUFBAAAAQYGBgUEAAICBgYGBgAAAgIGBgYEAAEBAg=="
},
"palette" : {
"rgba8888" : [ 673720575, 1615868159, -2005909249, -1466932993, 676868351, 677921023, 1217939711 ]
}
},
"diagnostics" : [ ]
@ -420,13 +420,13 @@
"last_modified" : 1776965154261,
"fingerprint" : "b9ff45c77f7779a6acebcc537c2ddac0e27e91162b656a04dc4772ec5f24fc26",
"metadata" : {
"palette" : {
"rgba8888" : [ -2005909249, -1466932993, 1615868159, 673720575 ]
},
"tile" : {
"width" : 8,
"height" : 8,
"paletteIndices" : "AAEBAgIAAAEAAAICAQEAAAEAAAAAAQEAAQEBAQAAAQEDAgIBAQAAAAIDAgIBAQAAAAIDAgICAQEAAgIDAgICAg=="
},
"palette" : {
"rgba8888" : [ -2005909249, -1466932993, 1615868159, 673720575 ]
}
},
"diagnostics" : [ ]
@ -437,13 +437,13 @@
"last_modified" : 1776965154261,
"fingerprint" : "43f370324fedccda888d49409e2a64f182f08b4143b4bdd5bafaf498feebd21a",
"metadata" : {
"palette" : {
"rgba8888" : [ -1466932993, -2005909249, 1615868159, 673720575 ]
},
"tile" : {
"width" : 8,
"height" : 8,
"paletteIndices" : "AAEBAgIAAAEBAQAAAgIBAQEAAAEBAQEAAAABAQAAAAABAQEAAAICAwEBAAACAgMCAAACAgIDAgECAgICAwICAQ=="
},
"palette" : {
"rgba8888" : [ -1466932993, -2005909249, 1615868159, 673720575 ]
}
},
"diagnostics" : [ ]
@ -454,13 +454,13 @@
"last_modified" : 1776965154262,
"fingerprint" : "cb047e655f4e196f22ca0048149df5dcb959f895faeaeb94920182d4a2d16b38",
"metadata" : {
"palette" : {
"rgba8888" : [ -2005909249, -1466932993, 673720575, 1615868159, 676868351, 677921023, 1217939711 ]
},
"tile" : {
"width" : 8,
"height" : 8,
"paletteIndices" : "AAECAwMAAwIBAQIDAwICBAECAwMCBAUEAgIDAgQEBQYDAgIEBQUGBgAAAgQFBgYGAAACAgYGBgYAAwMCBAYGBg=="
},
"palette" : {
"rgba8888" : [ -2005909249, -1466932993, 673720575, 1615868159, 676868351, 677921023, 1217939711 ]
}
},
"diagnostics" : [ ]
@ -471,13 +471,13 @@
"last_modified" : 1776965154262,
"fingerprint" : "25eba17b67dd5159f5fb9d3edd531d54a44d1c76f997385840dac53517b98886",
"metadata" : {
"palette" : {
"rgba8888" : [ 1217939711, 673720575, -2005909249, 1615868159, 676868351, 677921023 ]
},
"tile" : {
"width" : 8,
"height" : 8,
"paletteIndices" : "AAAAAQICAwMAAAECAgICAwAAAQICAgIDAAABAgIDAQMAAAEDAQQEAQAABAQFBAUEAAAAAAAFAAUAAAAAAAAAAA=="
},
"palette" : {
"rgba8888" : [ 1217939711, 673720575, -2005909249, 1615868159, 676868351, 677921023 ]
}
},
"diagnostics" : [ ]
@ -488,13 +488,13 @@
"last_modified" : 1776965154262,
"fingerprint" : "32ca96c14290de8009fd2db623f55514bed2345b7d5881a80dd3fe6235012854",
"metadata" : {
"palette" : {
"rgba8888" : [ 1615868159, 673720575, 676868351, -2005909249, 677921023, 1217939711 ]
},
"tile" : {
"width" : 8,
"height" : 8,
"paletteIndices" : "AAAAAQAAAQEBAAEBAAEAAAEBAgEBAAADAQICAgEAAAMCAgQCAgEAAAQEBQQEAQADBQUFBQUCAQAFBQUFBQUCAQ=="
},
"palette" : {
"rgba8888" : [ 1615868159, 673720575, 676868351, -2005909249, 677921023, 1217939711 ]
}
},
"diagnostics" : [ ]
@ -505,13 +505,13 @@
"last_modified" : 1776965154263,
"fingerprint" : "7a093fe00c805bcf38d4facff14a6d4c2b8baeaa2d553fa8d3db9f2d76b32f3b",
"metadata" : {
"palette" : {
"rgba8888" : [ 673720575, 1615868159, -2005909249, 676868351, 677921023, 1217939711 ]
},
"tile" : {
"width" : 8,
"height" : 8,
"paletteIndices" : "AAABAQABAQEBAQABAAABAAIBAQAAAwAAAgEBAAMDAwABAQADAwQDAwIBAAQEBQQEAQADBQUFBQUAAwUFBQUFBQ=="
},
"palette" : {
"rgba8888" : [ 673720575, 1615868159, -2005909249, 676868351, 677921023, 1217939711 ]
}
},
"diagnostics" : [ ]
@ -522,13 +522,13 @@
"last_modified" : 1776965154263,
"fingerprint" : "77c5277220421226d16f58b1bcfb4eaf157fa4f6c740c5aaebefaf88fb91c22e",
"metadata" : {
"palette" : {
"rgba8888" : [ 1615868159, -2005909249, 673720575, 1217939711, 676868351, 677921023 ]
},
"tile" : {
"width" : 8,
"height" : 8,
"paletteIndices" : "AAABAQIDAwMAAQEBAQIDAwABAQEBAgMDAAIAAQECAwMCBAQCAAIDAwQFBAUEBAMDBQMFAwMDAwMDAwMDAwMDAw=="
},
"palette" : {
"rgba8888" : [ 1615868159, -2005909249, 673720575, 1217939711, 676868351, 677921023 ]
}
},
"diagnostics" : [ ]

View File

@ -5,5 +5,5 @@
"title": "Main Test",
"app_version": "0.1.0",
"app_mode": "Game",
"capabilities": ["log", "gfx", "asset"]
"capabilities": ["log", "gfx2d", "composer", "asset"]
}