From 19a031275328e26e6f192fa32a3c88f66df723d3 Mon Sep 17 00:00:00 2001 From: bQUARKz Date: Fri, 27 Mar 2026 22:28:05 +0000 Subject: [PATCH] added fragments --- .../main/java/p/studio/compiler/Compile.java | 4 +- .../src/main/java/p/packer/PackMain.java | 4 +- .../fragments/.studio/activities.json | 11 +++ .../fragments/assets/.prometeu/cache.json | 4 ++ .../fragments/assets/.prometeu/index.json | 5 ++ test-projects/fragments/cartridge/assets.pa | Bin 0 -> 63 bytes .../fragments/cartridge/manifest.json | 10 +++ test-projects/fragments/cartridge/program.pbx | Bin 0 -> 13955 bytes test-projects/fragments/prometeu.json | 8 +++ test-projects/fragments/run.sh | 7 ++ test-projects/fragments/runtime | 1 + test-projects/fragments/src/main.pbs | 64 ++++++++++++++++++ test-projects/fragments/src/mod.barrel | 1 + 13 files changed, 117 insertions(+), 2 deletions(-) create mode 100644 test-projects/fragments/.studio/activities.json create mode 100644 test-projects/fragments/assets/.prometeu/cache.json create mode 100644 test-projects/fragments/assets/.prometeu/index.json create mode 100644 test-projects/fragments/cartridge/assets.pa create mode 100644 test-projects/fragments/cartridge/manifest.json create mode 100644 test-projects/fragments/cartridge/program.pbx create mode 100644 test-projects/fragments/prometeu.json create mode 100755 test-projects/fragments/run.sh create mode 120000 test-projects/fragments/runtime create mode 100644 test-projects/fragments/src/main.pbs create mode 100644 test-projects/fragments/src/mod.barrel diff --git a/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/Compile.java b/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/Compile.java index 5bec8d2c..707f1c58 100644 --- a/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/Compile.java +++ b/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/Compile.java @@ -5,9 +5,11 @@ import p.studio.compiler.workspaces.BuilderPipelineService; import p.studio.utilities.logs.LogAggregator; public class Compile { + private static final String PROJECT = "fragments"; + public static void main(String[] args) { final var logAggregator = LogAggregator.stdout(); - final var config = new BuilderPipelineConfig(false, "test-projects/main"); + final var config = new BuilderPipelineConfig(false, "test-projects/%s".formatted(PROJECT)); BuilderPipelineService.INSTANCE.run(config, logAggregator); } } diff --git a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/PackMain.java b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/PackMain.java index ab7d8bc9..6b6db3dd 100644 --- a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/PackMain.java +++ b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/PackMain.java @@ -8,12 +8,14 @@ import p.packer.messages.PackerProjectContext; import java.nio.file.Path; public final class PackMain { + private static final String PROJECT = "fragments"; + private PackMain() { } public static void main(String[] args) { final Path projectRoot = args.length == 0 - ? Path.of("test-projects/main") + ? Path.of("test-projects/%s".formatted(PROJECT)) : Path.of(args[0]); final String projectId = projectRoot.getFileName() == null ? "project" diff --git a/test-projects/fragments/.studio/activities.json b/test-projects/fragments/.studio/activities.json new file mode 100644 index 00000000..1ccd6bae --- /dev/null +++ b/test-projects/fragments/.studio/activities.json @@ -0,0 +1,11 @@ +[ { + "source" : "Assets", + "message" : "0 assets loaded", + "severity" : "SUCCESS", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan started", + "severity" : "INFO", + "sticky" : false +} ] \ No newline at end of file diff --git a/test-projects/fragments/assets/.prometeu/cache.json b/test-projects/fragments/assets/.prometeu/cache.json new file mode 100644 index 00000000..0b0e5946 --- /dev/null +++ b/test-projects/fragments/assets/.prometeu/cache.json @@ -0,0 +1,4 @@ +{ + "schema_version" : 1, + "assets" : [ ] +} \ No newline at end of file diff --git a/test-projects/fragments/assets/.prometeu/index.json b/test-projects/fragments/assets/.prometeu/index.json new file mode 100644 index 00000000..184e1c08 --- /dev/null +++ b/test-projects/fragments/assets/.prometeu/index.json @@ -0,0 +1,5 @@ +{ + "schema_version" : 1, + "next_asset_id" : 1, + "assets" : [ ] +} \ No newline at end of file diff --git a/test-projects/fragments/cartridge/assets.pa b/test-projects/fragments/cartridge/assets.pa new file mode 100644 index 0000000000000000000000000000000000000000..8a1dc8ae7ed554456c7016d144be36eae54f3897 GIT binary patch literal 63 ycmZ<^4sc{-U|^63VtXJ)2h~c6#l@*5@g<2#IjKrk(Xl#81x2Yj`H3kYPAvcps0@Pu literal 0 HcmV?d00001 diff --git a/test-projects/fragments/cartridge/manifest.json b/test-projects/fragments/cartridge/manifest.json new file mode 100644 index 00000000..4f20a259 --- /dev/null +++ b/test-projects/fragments/cartridge/manifest.json @@ -0,0 +1,10 @@ +{ + "magic": "PMTU", + "cartridge_version": 1, + "app_id": 1, + "title": "Fragments", + "app_version": "0.1.0", + "app_mode": "Game", + "entrypoint": "0", + "capabilities": ["log", "gfx", "asset"] +} diff --git a/test-projects/fragments/cartridge/program.pbx b/test-projects/fragments/cartridge/program.pbx new file mode 100644 index 0000000000000000000000000000000000000000..ba33b8596254c2a5159ca41b5adc971843b783f2 GIT binary patch literal 13955 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 Le-ZleR7UiFpZ%Tn literal 0 HcmV?d00001 diff --git a/test-projects/fragments/prometeu.json b/test-projects/fragments/prometeu.json new file mode 100644 index 00000000..a9c5ccd5 --- /dev/null +++ b/test-projects/fragments/prometeu.json @@ -0,0 +1,8 @@ +{ + "name": "fragments", + "version": "1.0.0", + "language": "pbs", + "stdlib": "1", + "dependencies": [ + ] +} diff --git a/test-projects/fragments/run.sh b/test-projects/fragments/run.sh new file mode 100755 index 00000000..3f792c15 --- /dev/null +++ b/test-projects/fragments/run.sh @@ -0,0 +1,7 @@ +#!/bin/zsh + +set -e + +cp build/assets.pa cartridge +cp build/program.pbx cartridge +./runtime/prometeu run cartridge diff --git a/test-projects/fragments/runtime b/test-projects/fragments/runtime new file mode 120000 index 00000000..567e7714 --- /dev/null +++ b/test-projects/fragments/runtime @@ -0,0 +1 @@ +../../../runtime/dist-staging/stable/prometeu-cli-aarch64-apple-darwin/ \ No newline at end of file diff --git a/test-projects/fragments/src/main.pbs b/test-projects/fragments/src/main.pbs new file mode 100644 index 00000000..a4eb381d --- /dev/null +++ b/test-projects/fragments/src/main.pbs @@ -0,0 +1,64 @@ +import { Color } from @core:color; +import { Gfx } from @sdk:gfx; + +declare global ticks: int = 0; +declare const SCREEN_W: int = 320; +declare const SCREEN_H: int = 180; +declare const CELL: int = 4; + +[Init] +fn init() -> void +{ + ticks = 0; +} + +[Frame] +fn frame() -> void +{ + ticks += 1; + Gfx.fill_rect(0, 0, SCREEN_W, CELL, new Color((ticks * 97 + 500) % 65535)); + Gfx.fill_rect(0, 4, SCREEN_W, CELL, new Color((ticks * 110 + 1200) % 65535)); + Gfx.fill_rect(0, 8, SCREEN_W, CELL, new Color((ticks * 123 + 1900) % 65535)); + Gfx.fill_rect(0, 12, SCREEN_W, CELL, new Color((ticks * 136 + 2600) % 65535)); + Gfx.fill_rect(0, 16, SCREEN_W, CELL, new Color((ticks * 149 + 3300) % 65535)); + Gfx.fill_rect(0, 20, SCREEN_W, CELL, new Color((ticks * 162 + 4000) % 65535)); + Gfx.fill_rect(0, 24, SCREEN_W, CELL, new Color((ticks * 175 + 4700) % 65535)); + Gfx.fill_rect(0, 28, SCREEN_W, CELL, new Color((ticks * 188 + 5400) % 65535)); + Gfx.fill_rect(0, 32, SCREEN_W, CELL, new Color((ticks * 201 + 6100) % 65535)); + Gfx.fill_rect(0, 36, SCREEN_W, CELL, new Color((ticks * 214 + 6800) % 65535)); + Gfx.fill_rect(0, 40, SCREEN_W, CELL, new Color((ticks * 227 + 7500) % 65535)); + Gfx.fill_rect(0, 44, SCREEN_W, CELL, new Color((ticks * 240 + 8200) % 65535)); + Gfx.fill_rect(0, 48, SCREEN_W, CELL, new Color((ticks * 253 + 8900) % 65535)); + Gfx.fill_rect(0, 52, SCREEN_W, CELL, new Color((ticks * 266 + 9600) % 65535)); + Gfx.fill_rect(0, 56, SCREEN_W, CELL, new Color((ticks * 279 + 10300) % 65535)); + Gfx.fill_rect(0, 60, SCREEN_W, CELL, new Color((ticks * 292 + 11000) % 65535)); + Gfx.fill_rect(0, 64, SCREEN_W, CELL, new Color((ticks * 305 + 11700) % 65535)); + Gfx.fill_rect(0, 68, SCREEN_W, CELL, new Color((ticks * 318 + 12400) % 65535)); + Gfx.fill_rect(0, 72, SCREEN_W, CELL, new Color((ticks * 331 + 13100) % 65535)); + Gfx.fill_rect(0, 76, SCREEN_W, CELL, new Color((ticks * 344 + 13800) % 65535)); + Gfx.fill_rect(0, 80, SCREEN_W, CELL, new Color((ticks * 357 + 14500) % 65535)); + Gfx.fill_rect(0, 84, SCREEN_W, CELL, new Color((ticks * 370 + 15200) % 65535)); + Gfx.fill_rect(0, 88, SCREEN_W, CELL, new Color((ticks * 383 + 15900) % 65535)); + Gfx.fill_rect(0, 92, SCREEN_W, CELL, new Color((ticks * 396 + 16600) % 65535)); + Gfx.fill_rect(0, 96, SCREEN_W, CELL, new Color((ticks * 409 + 17300) % 65535)); + Gfx.fill_rect(0, 100, SCREEN_W, CELL, new Color((ticks * 422 + 18000) % 65535)); + Gfx.fill_rect(0, 104, SCREEN_W, CELL, new Color((ticks * 435 + 18700) % 65535)); + Gfx.fill_rect(0, 108, SCREEN_W, CELL, new Color((ticks * 448 + 19400) % 65535)); + Gfx.fill_rect(0, 112, SCREEN_W, CELL, new Color((ticks * 461 + 20100) % 65535)); + Gfx.fill_rect(0, 116, SCREEN_W, CELL, new Color((ticks * 474 + 20800) % 65535)); + Gfx.fill_rect(0, 120, SCREEN_W, CELL, new Color((ticks * 487 + 21500) % 65535)); + Gfx.fill_rect(0, 124, SCREEN_W, CELL, new Color((ticks * 500 + 22200) % 65535)); + Gfx.fill_rect(0, 128, SCREEN_W, CELL, new Color((ticks * 513 + 22900) % 65535)); + Gfx.fill_rect(0, 132, SCREEN_W, CELL, new Color((ticks * 526 + 23600) % 65535)); + Gfx.fill_rect(0, 136, SCREEN_W, CELL, new Color((ticks * 539 + 24300) % 65535)); + Gfx.fill_rect(0, 140, SCREEN_W, CELL, new Color((ticks * 552 + 25000) % 65535)); + Gfx.fill_rect(0, 144, SCREEN_W, CELL, new Color((ticks * 565 + 25700) % 65535)); + Gfx.fill_rect(0, 148, SCREEN_W, CELL, new Color((ticks * 578 + 26400) % 65535)); + Gfx.fill_rect(0, 152, SCREEN_W, CELL, new Color((ticks * 591 + 27100) % 65535)); + Gfx.fill_rect(0, 156, SCREEN_W, CELL, new Color((ticks * 604 + 27800) % 65535)); + Gfx.fill_rect(0, 160, SCREEN_W, CELL, new Color((ticks * 617 + 28500) % 65535)); + Gfx.fill_rect(0, 164, SCREEN_W, CELL, new Color((ticks * 630 + 29200) % 65535)); + Gfx.fill_rect(0, 168, SCREEN_W, CELL, new Color((ticks * 643 + 29900) % 65535)); + Gfx.fill_rect(0, 172, SCREEN_W, CELL, new Color((ticks * 656 + 30600) % 65535)); + Gfx.fill_rect(0, 176, SCREEN_W, CELL, new Color((ticks * 669 + 31300) % 65535)); +} diff --git a/test-projects/fragments/src/mod.barrel b/test-projects/fragments/src/mod.barrel new file mode 100644 index 00000000..665da591 --- /dev/null +++ b/test-projects/fragments/src/mod.barrel @@ -0,0 +1 @@ +pub fn frame() -> void; \ No newline at end of file