summaryrefslogtreecommitdiff
path: root/frontends/calculator/CEdev/examples/keypad_arrows
diff options
context:
space:
mode:
Diffstat (limited to 'frontends/calculator/CEdev/examples/keypad_arrows')
-rw-r--r--frontends/calculator/CEdev/examples/keypad_arrows/autotester.json61
-rw-r--r--frontends/calculator/CEdev/examples/keypad_arrows/makefile15
-rw-r--r--frontends/calculator/CEdev/examples/keypad_arrows/readme.md10
-rw-r--r--frontends/calculator/CEdev/examples/keypad_arrows/screenshot.gifbin0 -> 6859 bytes
-rw-r--r--frontends/calculator/CEdev/examples/keypad_arrows/src/main.c49
5 files changed, 135 insertions, 0 deletions
diff --git a/frontends/calculator/CEdev/examples/keypad_arrows/autotester.json b/frontends/calculator/CEdev/examples/keypad_arrows/autotester.json
new file mode 100644
index 0000000..c81becf
--- /dev/null
+++ b/frontends/calculator/CEdev/examples/keypad_arrows/autotester.json
@@ -0,0 +1,61 @@
+{
+ "rom": "84pce_515.rom",
+ "transfer_files": [
+ "bin/DEMO.8xp"
+ ],
+ "target": {
+ "name": "DEMO",
+ "isASM": true
+ },
+ "sequence": [
+ "action|launch",
+ "delay|500",
+ "key|down",
+ "hash|1",
+ "delay|200",
+ "key|right",
+ "hash|2",
+ "delay|200",
+ "key|up",
+ "hash|3",
+ "delay|200",
+ "key|left",
+ "hash|4",
+ "delay|200",
+ "key|2nd",
+ "hashWait|5"
+ ],
+ "hashes": {
+ "1": {
+ "description": "The screen is black",
+ "start": "vram_start",
+ "size": "vram_8_size",
+ "expected_CRCs": [ "AF74BFCB" ]
+ },
+ "2": {
+ "description": "The screen is red",
+ "start": "vram_start",
+ "size": "vram_8_size",
+ "expected_CRCs": [ "D2E7DAC8" ]
+ },
+ "3": {
+ "description": "The screen is white",
+ "start": "vram_start",
+ "size": "vram_8_size",
+ "expected_CRCs": [ "3132DE74" ]
+ },
+ "4": {
+ "description": "The screen is red (other)",
+ "start": "vram_start",
+ "size": "vram_8_size",
+ "expected_CRCs": [ "74B02578" ]
+ },
+ "5": {
+ "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/keypad_arrows/makefile b/frontends/calculator/CEdev/examples/keypad_arrows/makefile
new file mode 100644
index 0000000..1f1b36b
--- /dev/null
+++ b/frontends/calculator/CEdev/examples/keypad_arrows/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/keypad_arrows/readme.md b/frontends/calculator/CEdev/examples/keypad_arrows/readme.md
new file mode 100644
index 0000000..698dd4e
--- /dev/null
+++ b/frontends/calculator/CEdev/examples/keypad_arrows/readme.md
@@ -0,0 +1,10 @@
+### Keypad Arrow Key Demo
+
+This demo changes the color of the screen depending on which arrow keys are pressed.
+
+![Screenshot](screenshot.gif)
+
+---
+
+This demo is a part of the C SDK Toolchain for use on the CE.
+
diff --git a/frontends/calculator/CEdev/examples/keypad_arrows/screenshot.gif b/frontends/calculator/CEdev/examples/keypad_arrows/screenshot.gif
new file mode 100644
index 0000000..7d1886c
--- /dev/null
+++ b/frontends/calculator/CEdev/examples/keypad_arrows/screenshot.gif
Binary files differ
diff --git a/frontends/calculator/CEdev/examples/keypad_arrows/src/main.c b/frontends/calculator/CEdev/examples/keypad_arrows/src/main.c
new file mode 100644
index 0000000..c4f7adf
--- /dev/null
+++ b/frontends/calculator/CEdev/examples/keypad_arrows/src/main.c
@@ -0,0 +1,49 @@
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <tice.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <keypadc.h>
+
+/* Function Prototypes */
+void fill_screen(uint8_t color);
+
+void main(void) {
+ /* Key variable */
+ kb_key_t key;
+
+ /* Loop until 2nd is pressed */
+ do {
+ /* Update kb_Data */
+ kb_Scan();
+
+ /* Load group 7 registers */
+ key = kb_Data[7];
+
+ switch (key) {
+ case kb_Down: /* Change screen color to black */
+ fill_screen(0x00);
+ break;
+ case kb_Right: /* Change screen color to red */
+ fill_screen(0xE0);
+ break;
+ case kb_Up: /* Change screen color to white */
+ fill_screen(0xFF);
+ break;
+ case kb_Left: /* Change screen color to a different red */
+ fill_screen(0xC0);
+ break;
+ default:
+ break;
+ }
+ } while (kb_Data[1] != kb_2nd);
+}
+
+/* Simple way to fill the screen with a given color */
+void fill_screen(uint8_t color) {
+ memset(lcd_Ram, color, LCD_SIZE);
+}