summaryrefslogtreecommitdiff
path: root/frontends/calculator/CEdev/examples/gfx_blitting
diff options
context:
space:
mode:
authorAndrew Opalach <andrew@akon.city> 2019-04-10 15:14:00 -0400
committerAndrew Opalach <andrew@akon.city> 2019-04-10 15:14:00 -0400
commit60699af63f92f43cc4b4b9e3050fcdd2a8468281 (patch)
tree20a18af2774daa43ae7f4352dd032a24f7e06075 /frontends/calculator/CEdev/examples/gfx_blitting
parent4527bc20241068731c62101d0467d416119ec0c4 (diff)
downloadcetris-60699af63f92f43cc4b4b9e3050fcdd2a8468281.tar.gz
cetris-60699af63f92f43cc4b4b9e3050fcdd2a8468281.tar.bz2
cetris-60699af63f92f43cc4b4b9e3050fcdd2a8468281.zip
add opengl fronend, remove sdl frontend, refactor build system
Diffstat (limited to 'frontends/calculator/CEdev/examples/gfx_blitting')
-rw-r--r--frontends/calculator/CEdev/examples/gfx_blitting/autotester.json46
-rw-r--r--frontends/calculator/CEdev/examples/gfx_blitting/makefile15
-rw-r--r--frontends/calculator/CEdev/examples/gfx_blitting/readme.md7
-rw-r--r--frontends/calculator/CEdev/examples/gfx_blitting/src/main.c47
4 files changed, 115 insertions, 0 deletions
diff --git a/frontends/calculator/CEdev/examples/gfx_blitting/autotester.json b/frontends/calculator/CEdev/examples/gfx_blitting/autotester.json
new file mode 100644
index 0000000..bb67e72
--- /dev/null
+++ b/frontends/calculator/CEdev/examples/gfx_blitting/autotester.json
@@ -0,0 +1,46 @@
+{
+ "rom": "84pce_515.rom",
+ "transfer_files": [
+ "bin/DEMO.8xp"
+ ],
+ "target": {
+ "name": "DEMO",
+ "isASM": true
+ },
+ "sequence": [
+ "action|launch",
+ "hashWait|1",
+ "key|enter",
+ "hashWait|2",
+ "key|enter",
+ "hashWait|3",
+ "key|enter",
+ "hashWait|4"
+ ],
+ "hashes": {
+ "1": {
+ "description": "Nothing blitted yet, white screen",
+ "start": "vram_start",
+ "size": "vram_8_size",
+ "expected_CRCs": [ "3132DE74" ]
+ },
+ "2": {
+ "description": "Parts of buffer blitted to screen",
+ "start": "vram_start",
+ "size": "vram_8_size",
+ "expected_CRCs": [ "830291D3" ]
+ },
+ "3": {
+ "description": "Full buffer blitted to screen",
+ "start": "vram_start",
+ "size": "vram_8_size",
+ "expected_CRCs": [ "EA181DC1" ]
+ },
+ "4": {
+ "description": "Back to the home screen (exit check)",
+ "start": "vram_start",
+ "size": "vram_16_size",
+ "expected_CRCs": [ "FFAF89BA", "101734A5", "9DA19F44" ]
+ }
+ }
+}
diff --git a/frontends/calculator/CEdev/examples/gfx_blitting/makefile b/frontends/calculator/CEdev/examples/gfx_blitting/makefile
new file mode 100644
index 0000000..1f1b36b
--- /dev/null
+++ b/frontends/calculator/CEdev/examples/gfx_blitting/makefile
@@ -0,0 +1,15 @@
+# ----------------------------
+# Set NAME to the program name
+# Set ICON to the png icon file name
+# Set DESCRIPTION to display within a compatible shell
+# Set COMPRESSED to "YES" to create a compressed program
+# ----------------------------
+
+NAME ?= DEMO
+COMPRESSED ?= NO
+ICON ?= iconc.png
+DESCRIPTION ?= "C SDK Demo"
+
+# ----------------------------
+
+include $(CEDEV)/include/.makefile
diff --git a/frontends/calculator/CEdev/examples/gfx_blitting/readme.md b/frontends/calculator/CEdev/examples/gfx_blitting/readme.md
new file mode 100644
index 0000000..caa3bcb
--- /dev/null
+++ b/frontends/calculator/CEdev/examples/gfx_blitting/readme.md
@@ -0,0 +1,7 @@
+### GraphX Blitting Demo
+
+This example demonstrates blitting to manually copy data from the drawing buffer to the screen buffer
+
+---
+
+This demo is a part of the C SDK Toolchain for use on the CE.
diff --git a/frontends/calculator/CEdev/examples/gfx_blitting/src/main.c b/frontends/calculator/CEdev/examples/gfx_blitting/src/main.c
new file mode 100644
index 0000000..1582583
--- /dev/null
+++ b/frontends/calculator/CEdev/examples/gfx_blitting/src/main.c
@@ -0,0 +1,47 @@
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <tice.h>
+
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <graphx.h>
+
+/* This tutorial is meant to be played around with to get a feeling for how blitting works */
+void main(void) {
+ uint8_t c;
+
+ /* Initialize the 8bpp graphics, screen cleared to white */
+ gfx_Begin();
+
+ /* Draw to buffer instead of directly to screen */
+ gfx_SetDrawBuffer(); // This is the same as gfx_SetDraw(gfx_buffer)
+
+ /* Draw a gradient (to the buffer) */
+ for (c = 0; c < 8; c++) {
+ gfx_SetColor(c);
+ gfx_FillRectangle_NoClip(c * (LCD_WIDTH / 8), 0, LCD_WIDTH / 8, LCD_HEIGHT);
+ }
+
+ /* Wait for a key */
+ while (!os_GetCSC());
+
+ /* Copy parts of the buffer to the screen */
+ gfx_BlitLines(gfx_buffer, LCD_HEIGHT - 32, 32);
+ gfx_BlitRectangle(gfx_buffer, LCD_WIDTH / 4, LCD_HEIGHT / 4, LCD_WIDTH / 2, LCD_HEIGHT / 2);
+
+ /* Wait for a key */
+ while (!os_GetCSC());
+
+ /* Copy the full buffer to the screen */
+ gfx_BlitBuffer(); // This is the same as gfx_Blit(gfx_buffer)
+
+ /* Wait for a key */
+ while (!os_GetCSC());
+
+ /* Close the graphics */
+ gfx_End();
+}