From 661dbbff6f0a0ba1613e5376834e0db2617f5e4b Mon Sep 17 00:00:00 2001 From: Kalle Fagerberg Date: Mon, 13 Apr 2026 21:31:59 +0200 Subject: [PATCH 1/6] Updated example/README.md --- example/README.md | 28 ++++++++------------------ example/scores/screenshot.png | Bin 0 -> 22740 bytes example/scores/screenshot.png.license | 3 +++ 3 files changed, 11 insertions(+), 20 deletions(-) create mode 100644 example/scores/screenshot.png create mode 100644 example/scores/screenshot.png.license diff --git a/example/README.md b/example/README.md index b2e6716..9d05fe6 100644 --- a/example/README.md +++ b/example/README.md @@ -17,42 +17,30 @@ You need these to run the examples: To run one of the examples then execute the listed command from the root of this repository. -## Example: [font](./font) +## Example: [audio](./audio) + +> *(no screenshot, it only plays some sounds)* -```bash -task example/font:run -``` +## Example: [font](./font) [![font screenshot](./font/screenshot.png)](./font) ## Example: [image](./image) -```bash -task example/image:run -``` - [![image screenshot](./image/screenshot.png)](./image) ## Example: [input](./input) -```bash -task example/input:run -``` - [![input screenshot](./input/screenshot.png)](./input) ## Example: [random](./random) -```bash -task example/random:run -``` - [![random screenshot](./random/screenshot.png)](./random) -## Example: [shapes](./shapes) +## Example: [scores](./scores) -```bash -task example/shapes:run -``` +[![scores screenshot](./scores/screenshot.png)](./scores) + +## Example: [shapes](./shapes) [![shapes screenshot](./shapes/screenshot.png)](./shapes) diff --git a/example/scores/screenshot.png b/example/scores/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..953c2c8d4d8455049def84fda33e154d494e653e GIT binary patch literal 22740 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 literal 0 HcmV?d00001 diff --git a/example/scores/screenshot.png.license b/example/scores/screenshot.png.license new file mode 100644 index 0000000..93b4034 --- /dev/null +++ b/example/scores/screenshot.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2025 Kalle Fagerberg + +SPDX-License-Identifier: MIT From 2e8f393df8e3a63ca0cf6dd8915e22a6206cfc36 Mon Sep 17 00:00:00 2001 From: Kalle Fagerberg Date: Mon, 13 Apr 2026 21:35:38 +0200 Subject: [PATCH 2/6] Fix run command text --- example/README.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/example/README.md b/example/README.md index 9d05fe6..6d4ebb6 100644 --- a/example/README.md +++ b/example/README.md @@ -14,8 +14,14 @@ You need these to run the examples: - Firefly Zero CLI (`ff`): - Firefly Zero emulator (`firefly-emulator`): -To run one of the examples then execute the listed command from the root of -this repository. +To run one of the examples then navigate to its directory and run: + +```bash +ff build + +# replace $NAME with the name shown in the `ff build` output +firefly-emulator --id demo.moonbit-$NAME +``` ## Example: [audio](./audio) From 3f7cf140f79747a102bcf9c3fe65d7de532d0a9c Mon Sep 17 00:00:00 2001 From: Kalle Fagerberg Date: Mon, 13 Apr 2026 21:36:37 +0200 Subject: [PATCH 3/6] Remove taskfile from list of requirements --- example/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/example/README.md b/example/README.md index 6d4ebb6..0dea22a 100644 --- a/example/README.md +++ b/example/README.md @@ -10,7 +10,6 @@ You need these to run the examples: - Clone this Git repo: - MoonBit CLI (`moon`): -- Taskfile CLI (`task`): - Firefly Zero CLI (`ff`): - Firefly Zero emulator (`firefly-emulator`): From 8579a8f5a3e5d1b3a587e70f0aa390ed95abc39b Mon Sep 17 00:00:00 2001 From: Kalle Fagerberg Date: Mon, 13 Apr 2026 21:37:48 +0200 Subject: [PATCH 4/6] Rename demo.moonbit-text to demo.moonbit-font --- example/font/firefly.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/example/font/firefly.toml b/example/font/firefly.toml index a4c9bc2..c718929 100644 --- a/example/font/firefly.toml +++ b/example/font/firefly.toml @@ -3,7 +3,7 @@ # SPDX-License-Identifier: CC0-1.0 author_id = "demo" -app_id = "moonbit-text" +app_id = "moonbit-font" author_name = "Demo" app_name = "Text example (MoonBit)" From fe9c3957cdcf3c9af0275ef6cf36438bd065eae7 Mon Sep 17 00:00:00 2001 From: Kalle Fagerberg Date: Mon, 13 Apr 2026 21:41:09 +0200 Subject: [PATCH 5/6] Make example moon module names more consistent --- example/audio/moon.mod.json | 2 +- example/font/moon.mod.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/example/audio/moon.mod.json b/example/audio/moon.mod.json index a1026a6..edc1c21 100644 --- a/example/audio/moon.mod.json +++ b/example/audio/moon.mod.json @@ -1,5 +1,5 @@ { - "name": "firefly/firefly/example/audio", + "name": "example-audio", "deps": { "firefly/firefly": { "path": "../.." diff --git a/example/font/moon.mod.json b/example/font/moon.mod.json index 79d4c49..6025ef8 100644 --- a/example/font/moon.mod.json +++ b/example/font/moon.mod.json @@ -1,5 +1,5 @@ { - "name": "example-text", + "name": "example-font", "deps": { "firefly/firefly": { "path": "../.." From f4c99040834aecc7318e142d0eb365aea8a0c7c8 Mon Sep 17 00:00:00 2001 From: Kalle Fagerberg Date: Mon, 13 Apr 2026 21:41:59 +0200 Subject: [PATCH 6/6] Use similar app name as other examples --- example/font/firefly.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/example/font/firefly.toml b/example/font/firefly.toml index c718929..7745638 100644 --- a/example/font/firefly.toml +++ b/example/font/firefly.toml @@ -5,7 +5,7 @@ author_id = "demo" app_id = "moonbit-font" author_name = "Demo" -app_name = "Text example (MoonBit)" +app_name = "Font demo (MoonBit)" [files] font = { path = "assets/eg_6x12.fff" }