From ec7b1726e60f6077fc90d736e8224b9473534d79 Mon Sep 17 00:00:00 2001 From: lonkaars Date: Mon, 13 Mar 2023 20:38:34 +0100 Subject: untested POC --- src/main.c | 34 +- src/makefile | 14 +- test/ppu-stm-integration-demo/.gitignore | 1 + test/ppu-stm-integration-demo/data.txt | 2521 ++++++++++++++++++++++++++++++ test/ppu-stm-integration-demo/img.png | Bin 0 -> 2438 bytes test/ppu-stm-integration-demo/makefile | 6 + test/ppu-stm-integration-demo/readme.md | 9 + 7 files changed, 2564 insertions(+), 21 deletions(-) create mode 100644 test/ppu-stm-integration-demo/.gitignore create mode 100644 test/ppu-stm-integration-demo/data.txt create mode 100644 test/ppu-stm-integration-demo/img.png create mode 100644 test/ppu-stm-integration-demo/makefile create mode 100644 test/ppu-stm-integration-demo/readme.md diff --git a/src/main.c b/src/main.c index 191d5d9..8d36bf5 100644 --- a/src/main.c +++ b/src/main.c @@ -1,21 +1,37 @@ #include +#include -#include "demo.h" -#include "input.h" #include "main.h" +#include "stm32/setup.h" +#include "../test/ppu-stm-integration-demo/data.h" bool g_hh_run = true; int main() { hh_setup(); - hh_loop(); + + while (1) { + for (unsigned long i = 0; i < HH_PPUINTDEMO_LENGTH; i++) { + uint16_t addr = HH_PPUINTDEMO_ADDR[i]; + uint16_t data = HH_PPUINTDEMO_DATA[i]; + + uint8_t spi_data[4] = { + (addr & 0xff00) >> 8, + (addr & 0x00ff) >> 0, + (data & 0xff00) >> 8, + (data & 0x00ff) >> 0, + }; + + HAL_SPI_Transmit(&hspi1, spi_data, 4, HAL_MAX_DELAY); + HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, true); + // HAL_Delay(1); + HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, false); + // HAL_Delay(1); + } + HAL_Delay(1e3); + } + hh_exit(); return 0; } -void hh_ppu_vblank_interrupt() { - static unsigned long frame = 0; - hh_input_read(); - hh_demo_loop(frame); - frame++; -} diff --git a/src/makefile b/src/makefile index d7d9087..e2fc1d3 100644 --- a/src/makefile +++ b/src/makefile @@ -3,7 +3,7 @@ RM = rm -f TARGET = main # platform is ds (desktop) or stm (stm32) -PLATFORM = ds +PLATFORM = stm # if your editor uses compile_commands.json for autocomplete, you should run `make compile_commands.json` again HOST=$(strip $(shell uname -o)) @@ -27,17 +27,7 @@ LFLAGS += -lm CFLAGS += $(if $(STM), -DHH_TARGET_STM32, ) CFLAGS += $(if $(DESKTOP), -DHH_TARGET_DESKTOP, ) -LOCAL_SRCS += main.c \ - ppu/internals.c \ - ppu/ppu.c \ - demo.c \ - engine/engine.c \ - engine/sprite_controller.c \ - engine/player_controller.c \ - engine/draw_screen.c \ - engine/camera.c \ - engine/maths.c \ - engine/entity.c +LOCAL_SRCS += main.c CFLAGS += $(SHARED_FLAGS) LFLAGS += $(SHARED_FLAGS) diff --git a/test/ppu-stm-integration-demo/.gitignore b/test/ppu-stm-integration-demo/.gitignore new file mode 100644 index 0000000..f6e7f8c --- /dev/null +++ b/test/ppu-stm-integration-demo/.gitignore @@ -0,0 +1 @@ +data.h diff --git a/test/ppu-stm-integration-demo/data.txt b/test/ppu-stm-integration-demo/data.txt new file mode 100644 index 0000000..f0c3b43 --- /dev/null +++ b/test/ppu-stm-integration-demo/data.txt @@ -0,0 +1,2521 @@ +0000: 0000 +0001: 1249 +0002: 0001 +0003: 1000 +0004: 1249 +0005: 0249 +0006: 1000 +0007: 1249 +0008: 1249 +0009: 1001 +000a: 1249 +000b: 1249 +000c: 0049 +000d: 1249 +000e: 1249 +000f: 0249 +0010: 1249 +0011: 1249 +0012: 1249 +0013: 1249 +0014: 1249 +0015: 1249 +0016: 1249 +0017: 1249 +0018: 1249 +0019: 1249 +001a: 1249 +001b: 1249 +001c: 1249 +001d: 1249 +001e: 0249 +001f: 1249 +0020: 1249 +0021: 1249 +0022: 1241 +0023: 1241 +0024: 0049 +0025: 1000 +0026: 1201 +0027: 1249 +0028: 1049 +0029: 0009 +002a: 1249 +002b: 1049 +002c: 0009 +002d: 1240 +002e: 1249 +002f: 0009 +0030: 0000 +0031: 1249 +0032: 0001 +0033: 0000 +0034: 0001 +0035: 0208 +0036: 1000 +0037: 0000 +0038: 0200 +0039: 0000 +003a: 0048 +003b: 0200 +003c: 0001 +003d: 1008 +003e: 0200 +003f: 0040 +0040: 0008 +0041: 0208 +0042: 1000 +0043: 0008 +0044: 0200 +0045: 0000 +0046: 0008 +0047: 0200 +0048: 0001 +0049: 0208 +004a: 0200 +004b: 0040 +004c: 0008 +004d: 0201 +004e: 1000 +004f: 0008 +0050: 0040 +0051: 0000 +0052: 0008 +0053: 1000 +0054: 0001 +0055: 0208 +0056: 1000 +0057: 0040 +0058: 0008 +0059: 1001 +005a: 1000 +005b: 0008 +005c: 1040 +005d: 0000 +005e: 0008 +005f: 1000 +0060: 0000 +0061: 0208 +0062: 1000 +0063: 0008 +0064: 0008 +0065: 1001 +0066: 0200 +0067: 0000 +dc01: 0444 +d000: 0001 +d001: 5f5a +d001: 0001 +d002: 5f5a +d002: 0001 +d003: 5f5a +d003: 0001 +d004: 5f5a +d004: 0001 +d005: 5f5a +d005: 0001 +d006: 5f5a +d006: 0001 +d007: 5f5a +d007: 0001 +d008: 5f5a +d008: 0001 +d009: 5f5a +d009: 0001 +d00a: 5f5a +d00a: 0001 +d00b: 5f5a +d00b: 0001 +d00c: 5f5a +d00c: 0001 +d00d: 5f5a +d00d: 0001 +d00e: 5f5a +d00e: 0001 +d00f: 5f5a +d00f: 0001 +d010: 5f5a +d010: 0001 +d011: 5f5a +d011: 0001 +d012: 5f5a +d012: 0001 +d013: 5f5a +d013: 0001 +d014: 5f5a +d014: 0001 +d015: 5f5a +d015: 0001 +d016: 5f5a +d016: 0001 +d017: 5f5a +d017: 0001 +d018: 5f5a +d018: 0001 +d019: 5f5a +d019: 0001 +d01a: 5f5a +d01a: 0001 +d01b: 5f5a +d01b: 0001 +d01c: 5f5a +d01c: 0001 +d01d: 5f5a +d01d: 0001 +d01e: 5f5a +d01e: 0001 +d01f: 5f5a +d01f: 0001 +d020: 5f5a +d020: 0001 +d021: 5f5a +d021: 0001 +d022: 5f5a +d022: 0001 +d023: 5f5a +d023: 0001 +d024: 5f5a +d024: 0001 +d025: 5f5a +d025: 0001 +d026: 5f5a +d026: 0001 +d027: 5f5a +d027: 0001 +d028: 5f5a +d028: 0001 +d029: 5f5a +d029: 0001 +d02a: 5f5a +d02a: 0001 +d02b: 5f5a +d02b: 0001 +d02c: 5f5a +d02c: 0001 +d02d: 5f5a +d02d: 0001 +d02e: 5f5a +d02e: 0001 +d02f: 5f5a +d02f: 0001 +d030: 5f5a +d030: 0001 +d031: 5f5a +d031: 0001 +d032: 5f5a +d032: 0001 +d033: 5f5a +d033: 0001 +d034: 5f5a +d034: 0001 +d035: 5f5a +d035: 0001 +d036: 5f5a +d036: 0001 +d037: 5f5a +d037: 0001 +d038: 5f5a +d038: 0001 +d039: 5f5a +d039: 0001 +d03a: 5f5a +d03a: 0001 +d03b: 5f5a +d03b: 0001 +d03c: 5f5a +d03c: 0001 +d03d: 5f5a +d03d: 0001 +d03e: 5f5a +d03e: 0001 +d03f: 5f5a +d03f: 0001 +d040: 5f5a +d040: 0001 +d041: 5f5a +d041: 0001 +d042: 5f5a +d042: 0001 +d043: 5f5a +d043: 0001 +d044: 5f5a +d044: 0001 +d045: 5f5a +d045: 0001 +d046: 5f5a +d046: 0001 +d047: 5f5a +d047: 0001 +d048: 5f5a +d048: 0001 +d049: 5f5a +d049: 0001 +d04a: 5f5a +d04a: 0001 +d04b: 5f5a +d04b: 0001 +d04c: 5f5a +d04c: 0001 +d04d: 5f5a +d04d: 0001 +d04e: 5f5a +d04e: 0001 +d04f: 5f5a +d04f: 0001 +d050: 5f5a +d050: 0001 +d051: 5f5a +d051: 0001 +d052: 5f5a +d052: 0001 +d053: 5f5a +d053: 0001 +d054: 5f5a +d054: 0001 +d055: 5f5a +d055: 0001 +d056: 5f5a +d056: 0001 +d057: 5f5a +d057: 0001 +d058: 5f5a +d058: 0001 +d059: 5f5a +d059: 0001 +d05a: 5f5a +d05a: 0001 +d05b: 5f5a +d05b: 0001 +d05c: 5f5a +d05c: 0001 +d05d: 5f5a +d05d: 0001 +d05e: 5f5a +d05e: 0001 +d05f: 5f5a +d05f: 0001 +d060: 5f5a +d060: 0001 +d061: 5f5a +d061: 0001 +d062: 5f5a +d062: 0001 +d063: 5f5a +d063: 0001 +d064: 5f5a +d064: 0001 +d065: 5f5a +d065: 0001 +d066: 5f5a +d066: 0001 +d067: 5f5a +d067: 0001 +d068: 5f5a +d068: 0001 +d069: 5f5a +d069: 0001 +d06a: 5f5a +d06a: 0001 +d06b: 5f5a +d06b: 0001 +d06c: 5f5a +d06c: 0001 +d06d: 5f5a +d06d: 0001 +d06e: 5f5a +d06e: 0001 +d06f: 5f5a +d06f: 0001 +d070: 5f5a +d070: 0001 +d071: 5f5a +d071: 0001 +d072: 5f5a +d072: 0001 +d073: 5f5a +d073: 0001 +d074: 5f5a +d074: 0001 +d075: 5f5a +d075: 0001 +d076: 5f5a +d076: 0001 +d077: 5f5a +d077: 0001 +d078: 5f5a +d078: 0001 +d079: 5f5a +d079: 0001 +d07a: 5f5a +d07a: 0001 +d07b: 5f5a +d07b: 0001 +d07c: 5f5a +d07c: 0001 +d07d: 5f5a +d07d: 0001 +d07e: 5f5a +d07e: 0001 +d07f: 5f5a +d07f: 0001 +d080: 5f5a +d080: 0001 +d081: 5f5a +d081: 0001 +d082: 5f5a +d082: 0001 +d083: 5f5a +d083: 0001 +d084: 5f5a +d084: 0001 +d085: 5f5a +d085: 0001 +d086: 5f5a +d086: 0001 +d087: 5f5a +d087: 0001 +d088: 5f5a +d088: 0001 +d089: 5f5a +d089: 0001 +d08a: 5f5a +d08a: 0001 +d08b: 5f5a +d08b: 0001 +d08c: 5f5a +d08c: 0001 +d08d: 5f5a +d08d: 0001 +d08e: 5f5a +d08e: 0001 +d08f: 5f5a +d08f: 0001 +d090: 5f5a +d090: 0001 +d091: 5f5a +d091: 0001 +d092: 5f5a +d092: 0001 +d093: 5f5a +d093: 0001 +d094: 5f5a +d094: 0001 +d095: 5f5a +d095: 0001 +d096: 5f5a +d096: 0001 +d097: 5f5a +d097: 0001 +d098: 5f5a +d098: 0001 +d099: 5f5a +d099: 0001 +d09a: 5f5a +d09a: 0001 +d09b: 5f5a +d09b: 0001 +d09c: 5f5a +d09c: 0001 +d09d: 5f5a +d09d: 0001 +d09e: 5f5a +d09e: 0001 +d09f: 5f5a +d09f: 0001 +d0a0: 5f5a +d0a0: 0001 +d0a1: 5f5a +d0a1: 0001 +d0a2: 5f5a +d0a2: 0001 +d0a3: 5f5a +d0a3: 0001 +d0a4: 5f5a +d0a4: 0001 +d0a5: 5f5a +d0a5: 0001 +d0a6: 5f5a +d0a6: 0001 +d0a7: 5f5a +d0a7: 0001 +d0a8: 5f5a +d0a8: 0001 +d0a9: 5f5a +d0a9: 0001 +d0aa: 5f5a +d0aa: 0001 +d0ab: 5f5a +d0ab: 0001 +d0ac: 5f5a +d0ac: 0001 +d0ad: 5f5a +d0ad: 0001 +d0ae: 5f5a +d0ae: 0001 +d0af: 5f5a +d0af: 0001 +d0b0: 5f5a +d0b0: 0001 +d0b1: 5f5a +d0b1: 0001 +d0b2: 5f5a +d0b2: 0001 +d0b3: 5f5a +d0b3: 0001 +d0b4: 5f5a +d0b4: 0001 +d0b5: 5f5a +d0b5: 0001 +d0b6: 5f5a +d0b6: 0001 +d0b7: 5f5a +d0b7: 0001 +d0b8: 5f5a +d0b8: 0001 +d0b9: 5f5a +d0b9: 0001 +d0ba: 5f5a +d0ba: 0001 +d0bb: 5f5a +d0bb: 0001 +d0bc: 5f5a +d0bc: 0001 +d0bd: 5f5a +d0bd: 0001 +d0be: 5f5a +d0be: 0001 +d0bf: 5f5a +d0bf: 0001 +d0c0: 5f5a +d0c0: 0001 +d0c1: 5f5a +d0c1: 0001 +d0c2: 5f5a +d0c2: 0001 +d0c3: 5f5a +d0c3: 0001 +d0c4: 5f5a +d0c4: 0001 +d0c5: 5f5a +d0c5: 0001 +d0c6: 5f5a +d0c6: 0001 +d0c7: 5f5a +d0c7: 0001 +d0c8: 5f5a +d0c8: 0001 +d0c9: 5f5a +d0c9: 0001 +d0ca: 5f5a +d0ca: 0001 +d0cb: 5f5a +d0cb: 0001 +d0cc: 5f5a +d0cc: 0001 +d0cd: 5f5a +d0cd: 0001 +d0ce: 5f5a +d0ce: 0001 +d0cf: 5f5a +d0cf: 0001 +d0d0: 5f5a +d0d0: 0001 +d0d1: 5f5a +d0d1: 0001 +d0d2: 5f5a +d0d2: 0001 +d0d3: 5f5a +d0d3: 0001 +d0d4: 5f5a +d0d4: 0001 +d0d5: 5f5a +d0d5: 0001 +d0d6: 5f5a +d0d6: 0001 +d0d7: 5f5a +d0d7: 0001 +d0d8: 5f5a +d0d8: 0001 +d0d9: 5f5a +d0d9: 0001 +d0da: 5f5a +d0da: 0001 +d0db: 5f5a +d0db: 0001 +d0dc: 5f5a +d0dc: 0001 +d0dd: 5f5a +d0dd: 0001 +d0de: 5f5a +d0de: 0001 +d0df: 5f5a +d0df: 0001 +d0e0: 5f5a +d0e0: 0001 +d0e1: 5f5a +d0e1: 0001 +d0e2: 5f5a +d0e2: 0001 +d0e3: 5f5a +d0e3: 0001 +d0e4: 5f5a +d0e4: 0001 +d0e5: 5f5a +d0e5: 0001 +d0e6: 5f5a +d0e6: 0001 +d0e7: 5f5a +d0e7: 0001 +d0e8: 5f5a +d0e8: 0001 +d0e9: 5f5a +d0e9: 0001 +d0ea: 5f5a +d0ea: 0001 +d0eb: 5f5a +d0eb: 0001 +d0ec: 5f5a +d0ec: 0001 +d0ed: 5f5a +d0ed: 0001 +d0ee: 5f5a +d0ee: 0001 +d0ef: 5f5a +d0ef: 0001 +d0f0: 5f5a +d0f0: 0001 +d0f1: 5f5a +d0f1: 0001 +d0f2: 5f5a +d0f2: 0001 +d0f3: 5f5a +d0f3: 0001 +d0f4: 5f5a +d0f4: 0001 +d0f5: 5f5a +d0f5: 0001 +d0f6: 5f5a +d0f6: 0001 +d0f7: 5f5a +d0f7: 0001 +d0f8: 5f5a +d0f8: 0001 +d0f9: 5f5a +d0f9: 0001 +d0fa: 5f5a +d0fa: 0001 +d0fb: 5f5a +d0fb: 0001 +d0fc: 5f5a +d0fc: 0001 +d0fd: 5f5a +d0fd: 0001 +d0fe: 5f5a +d0fe: 0001 +d0ff: 5f5a +d0ff: 0001 +d100: 5f5a +d100: 0001 +d101: 5f5a +d101: 0001 +d102: 5f5a +d102: 0001 +d103: 5f5a +d103: 0001 +d104: 5f5a +d104: 0001 +d105: 5f5a +d105: 0001 +d106: 5f5a +d106: 0001 +d107: 5f5a +d107: 0001 +d108: 5f5a +d108: 0001 +d109: 5f5a +d109: 0001 +d10a: 5f5a +d10a: 0001 +d10b: 5f5a +d10b: 0001 +d10c: 5f5a +d10c: 0001 +d10d: 5f5a +d10d: 0001 +d10e: 5f5a +d10e: 0001 +d10f: 5f5a +d10f: 0001 +d110: 5f5a +d110: 0001 +d111: 5f5a +d111: 0001 +d112: 5f5a +d112: 0001 +d113: 5f5a +d113: 0001 +d114: 5f5a +d114: 0001 +d115: 5f5a +d115: 0001 +d116: 5f5a +d116: 0001 +d117: 5f5a +d117: 0001 +d118: 5f5a +d118: 0001 +d119: 5f5a +d119: 0001 +d11a: 5f5a +d11a: 0001 +d11b: 5f5a +d11b: 0001 +d11c: 5f5a +d11c: 0001 +d11d: 5f5a +d11d: 0001 +d11e: 5f5a +d11e: 0001 +d11f: 5f5a +d11f: 0001 +d120: 5f5a +d120: 0001 +d121: 5f5a +d121: 0001 +d122: 5f5a +d122: 0001 +d123: 5f5a +d123: 0001 +d124: 5f5a +d124: 0001 +d125: 5f5a +d125: 0001 +d126: 5f5a +d126: 0001 +d127: 5f5a +d127: 0001 +d128: 5f5a +d128: 0001 +d129: 5f5a +d129: 0001 +d12a: 5f5a +d12a: 0001 +d12b: 5f5a +d12b: 0001 +d12c: 5f5a +d12c: 0001 +d12d: 5f5a +d12d: 0001 +d12e: 5f5a +d12e: 0001 +d12f: 5f5a +d12f: 0001 +d130: 5f5a +d130: 0001 +d131: 5f5a +d131: 0001 +d132: 5f5a +d132: 0001 +d133: 5f5a +d133: 0001 +d134: 5f5a +d134: 0001 +d135: 5f5a +d135: 0001 +d136: 5f5a +d136: 0001 +d137: 5f5a +d137: 0001 +d138: 5f5a +d138: 0001 +d139: 5f5a +d139: 0001 +d13a: 5f5a +d13a: 0001 +d13b: 5f5a +d13b: 0001 +d13c: 5f5a +d13c: 0001 +d13d: 5f5a +d13d: 0001 +d13e: 5f5a +d13e: 0001 +d13f: 5f5a +d13f: 0001 +d140: 5f5a +d140: 0001 +d141: 5f5a +d141: 0001 +d142: 5f5a +d142: 0001 +d143: 5f5a +d143: 0001 +d144: 5f5a +d144: 0001 +d145: 5f5a +d145: 0001 +d146: 5f5a +d146: 0001 +d147: 5f5a +d147: 0001 +d148: 5f5a +d148: 0001 +d149: 5f5a +d149: 0001 +d14a: 5f5a +d14a: 0001 +d14b: 5f5a +d14b: 0001 +d14c: 5f5a +d14c: 0001 +d14d: 5f5a +d14d: 0001 +d14e: 5f5a +d14e: 0001 +d14f: 5f5a +d14f: 0001 +d150: 5f5a +d150: 0001 +d151: 5f5a +d151: 0001 +d152: 5f5a +d152: 0001 +d153: 5f5a +d153: 0001 +d154: 5f5a +d154: 0001 +d155: 5f5a +d155: 0001 +d156: 5f5a +d156: 0001 +d157: 5f5a +d157: 0001 +d158: 5f5a +d158: 0001 +d159: 5f5a +d159: 0001 +d15a: 5f5a +d15a: 0001 +d15b: 5f5a +d15b: 0001 +d15c: 5f5a +d15c: 0001 +d15d: 5f5a +d15d: 0001 +d15e: 5f5a +d15e: 0001 +d15f: 5f5a +d15f: 0001 +d160: 5f5a +d160: 0001 +d161: 5f5a +d161: 0001 +d162: 5f5a +d162: 0001 +d163: 5f5a +d163: 0001 +d164: 5f5a +d164: 0001 +d165: 5f5a +d165: 0001 +d166: 5f5a +d166: 0001 +d167: 5f5a +d167: 0001 +d168: 5f5a +d168: 0001 +d169: 5f5a +d169: 0001 +d16a: 5f5a +d16a: 0001 +d16b: 5f5a +d16b: 0001 +d16c: 5f5a +d16c: 0001 +d16d: 5f5a +d16d: 0001 +d16e: 5f5a +d16e: 0001 +d16f: 5f5a +d16f: 0001 +d170: 5f5a +d170: 0001 +d171: 5f5a +d171: 0001 +d172: 5f5a +d172: 0001 +d173: 5f5a +d173: 0001 +d174: 5f5a +d174: 0001 +d175: 5f5a +d175: 0001 +d176: 5f5a +d176: 0001 +d177: 5f5a +d177: 0001 +d178: 5f5a +d178: 0001 +d179: 5f5a +d179: 0001 +d17a: 5f5a +d17a: 0001 +d17b: 5f5a +d17b: 0001 +d17c: 5f5a +d17c: 0001 +d17d: 5f5a +d17d: 0001 +d17e: 5f5a +d17e: 0001 +d17f: 5f5a +d17f: 0001 +d180: 5f5a +d180: 0001 +d181: 5f5a +d181: 0001 +d182: 5f5a +d182: 0001 +d183: 5f5a +d183: 0001 +d184: 5f5a +d184: 0001 +d185: 5f5a +d185: 0001 +d186: 5f5a +d186: 0001 +d187: 5f5a +d187: 0001 +d188: 5f5a +d188: 0001 +d189: 5f5a +d189: 0001 +d18a: 5f5a +d18a: 0001 +d18b: 5f5a +d18b: 0001 +d18c: 5f5a +d18c: 0001 +d18d: 5f5a +d18d: 0001 +d18e: 5f5a +d18e: 0001 +d18f: 5f5a +d18f: 0001 +d190: 5f5a +d190: 0001 +d191: 5f5a +d191: 0001 +d192: 5f5a +d192: 0001 +d193: 5f5a +d193: 0001 +d194: 5f5a +d194: 0001 +d195: 5f5a +d195: 0001 +d196: 5f5a +d196: 0001 +d197: 5f5a +d197: 0001 +d198: 5f5a +d198: 0001 +d199: 5f5a +d199: 0001 +d19a: 5f5a +d19a: 0001 +d19b: 5f5a +d19b: 0001 +d19c: 5f5a +d19c: 0001 +d19d: 5f5a +d19d: 0001 +d19e: 5f5a +d19e: 0001 +d19f: 5f5a +d19f: 0001 +d1a0: 5f5a +d1a0: 0001 +d1a1: 5f5a +d1a1: 0001 +d1a2: 5f5a +d1a2: 0001 +d1a3: 5f5a +d1a3: 0001 +d1a4: 5f5a +d1a4: 0001 +d1a5: 5f5a +d1a5: 0001 +d1a6: 5f5a +d1a6: 0001 +d1a7: 5f5a +d1a7: 0001 +d1a8: 5f5a +d1a8: 0001 +d1a9: 5f5a +d1a9: 0001 +d1aa: 5f5a +d1aa: 0001 +d1ab: 5f5a +d1ab: 0001 +d1ac: 5f5a +d1ac: 0001 +d1ad: 5f5a +d1ad: 0001 +d1ae: 5f5a +d1ae: 0001 +d1af: 5f5a +d1af: 0001 +d1b0: 5f5a +d1b0: 0001 +d1b1: 5f5a +d1b1: 0001 +d1b2: 5f5a +d1b2: 0001 +d1b3: 5f5a +d1b3: 0001 +d1b4: 5f5a +d1b4: 0001 +d1b5: 5f5a +d1b5: 0001 +d1b6: 5f5a +d1b6: 0001 +d1b7: 5f5a +d1b7: 0001 +d1b8: 5f5a +d1b8: 0001 +d1b9: 5f5a +d1b9: 0001 +d1ba: 5f5a +d1ba: 0001 +d1bb: 5f5a +d1bb: 0001 +d1bc: 5f5a +d1bc: 0001 +d1bd: 5f5a +d1bd: 0001 +d1be: 5f5a +d1be: 0001 +d1bf: 5f5a +d1bf: 0001 +d1c0: 5f5a +d1c0: 0001 +d1c1: 5f5a +d1c1: 0001 +d1c2: 5f5a +d1c2: 0001 +d1c3: 5f5a +d1c3: 0001 +d1c4: 5f5a +d1c4: 0001 +d1c5: 5f5a +d1c5: 0001 +d1c6: 5f5a +d1c6: 0001 +d1c7: 5f5a +d1c7: 0001 +d1c8: 5f5a +d1c8: 0001 +d1c9: 5f5a +d1c9: 0001 +d1ca: 5f5a +d1ca: 0001 +d1cb: 5f5a +d1cb: 0001 +d1cc: 5f5a +d1cc: 0001 +d1cd: 5f5a +d1cd: 0001 +d1ce: 5f5a +d1ce: 0001 +d1cf: 5f5a +d1cf: 0001 +d1d0: 5f5a +d1d0: 0001 +d1d1: 5f5a +d1d1: 0001 +d1d2: 5f5a +d1d2: 0001 +d1d3: 5f5a +d1d3: 0001 +d1d4: 5f5a +d1d4: 0001 +d1d5: 5f5a +d1d5: 0001 +d1d6: 5f5a +d1d6: 0001 +d1d7: 5f5a +d1d7: 0001 +d1d8: 5f5a +d1d8: 0001 +d1d9: 5f5a +d1d9: 0001 +d1da: 5f5a +d1da: 0001 +d1db: 5f5a +d1db: 0001 +d1dc: 5f5a +d1dc: 0001 +d1dd: 5f5a +d1dd: 0001 +d1de: 5f5a +d1de: 0001 +d1df: 5f5a +d1df: 0001 +d1e0: 5f5a +d1e0: 0001 +d1e1: 5f5a +d1e1: 0001 +d1e2: 5f5a +d1e2: 0001 +d1e3: 5f5a +d1e3: 0001 +d1e4: 5f5a +d1e4: 0001 +d1e5: 5f5a +d1e5: 0001 +d1e6: 5f5a +d1e6: 0001 +d1e7: 5f5a +d1e7: 0001 +d1e8: 5f5a +d1e8: 0001 +d1e9: 5f5a +d1e9: 0001 +d1ea: 5f5a +d1ea: 0001 +d1eb: 5f5a +d1eb: 0001 +d1ec: 5f5a +d1ec: 0001 +d1ed: 5f5a +d1ed: 0001 +d1ee: 5f5a +d1ee: 0001 +d1ef: 5f5a +d1ef: 0001 +d1f0: 5f5a +d1f0: 0001 +d1f1: 5f5a +d1f1: 0001 +d1f2: 5f5a +d1f2: 0001 +d1f3: 5f5a +d1f3: 0001 +d1f4: 5f5a +d1f4: 0001 +d1f5: 5f5a +d1f5: 0001 +d1f6: 5f5a +d1f6: 0001 +d1f7: 5f5a +d1f7: 0001 +d1f8: 5f5a +d1f8: 0001 +d1f9: 5f5a +d1f9: 0001 +d1fa: 5f5a +d1fa: 0001 +d1fb: 5f5a +d1fb: 0001 +d1fc: 5f5a +d1fc: 0001 +d1fd: 5f5a +d1fd: 0001 +d1fe: 5f5a +d1fe: 0001 +d1ff: 5f5a +d1ff: 0001 +d200: 5f5a +d200: 0001 +d201: 5f5a +d201: 0001 +d202: 5f5a +d202: 0001 +d203: 5f5a +d203: 0001 +d204: 5f5a +d204: 0001 +d205: 5f5a +d205: 0001 +d206: 5f5a +d206: 0001 +d207: 5f5a +d207: 0001 +d208: 5f5a +d208: 0001 +d209: 5f5a +d209: 0001 +d20a: 5f5a +d20a: 0001 +d20b: 5f5a +d20b: 0001 +d20c: 5f5a +d20c: 0001 +d20d: 5f5a +d20d: 0001 +d20e: 5f5a +d20e: 0001 +d20f: 5f5a +d20f: 0001 +d210: 5f5a +d210: 0001 +d211: 5f5a +d211: 0001 +d212: 5f5a +d212: 0001 +d213: 5f5a +d213: 0001 +d214: 5f5a +d214: 0001 +d215: 5f5a +d215: 0001 +d216: 5f5a +d216: 0001 +d217: 5f5a +d217: 0001 +d218: 5f5a +d218: 0001 +d219: 5f5a +d219: 0001 +d21a: 5f5a +d21a: 0001 +d21b: 5f5a +d21b: 0001 +d21c: 5f5a +d21c: 0001 +d21d: 5f5a +d21d: 0001 +d21e: 5f5a +d21e: 0001 +d21f: 5f5a +d21f: 0001 +d220: 5f5a +d220: 0001 +d221: 5f5a +d221: 0001 +d222: 5f5a +d222: 0001 +d223: 5f5a +d223: 0001 +d224: 5f5a +d224: 0001 +d225: 5f5a +d225: 0001 +d226: 5f5a +d226: 0001 +d227: 5f5a +d227: 0001 +d228: 5f5a +d228: 0001 +d229: 5f5a +d229: 0001 +d22a: 5f5a +d22a: 0001 +d22b: 5f5a +d22b: 0001 +d22c: 5f5a +d22c: 0001 +d22d: 5f5a +d22d: 0001 +d22e: 5f5a +d22e: 0001 +d22f: 5f5a +d22f: 0001 +d230: 5f5a +d230: 0001 +d231: 5f5a +d231: 0001 +d232: 5f5a +d232: 0001 +d233: 5f5a +d233: 0001 +d234: 5f5a +d234: 0001 +d235: 5f5a +d235: 0001 +d236: 5f5a +d236: 0001 +d237: 5f5a +d237: 0001 +d238: 5f5a +d238: 0001 +d239: 5f5a +d239: 0001 +d23a: 5f5a +d23a: 0001 +d23b: 5f5a +d23b: 0001 +d23c: 5f5a +d23c: 0001 +d23d: 5f5a +d23d: 0001 +d23e: 5f5a +d23e: 0001 +d23f: 5f5a +d23f: 0001 +d240: 5f5a +d240: 0001 +d241: 5f5a +d241: 0001 +d242: 5f5a +d242: 0001 +d243: 5f5a +d243: 0001 +d244: 5f5a +d244: 0001 +d245: 5f5a +d245: 0001 +d246: 5f5a +d246: 0001 +d247: 5f5a +d247: 0001 +d248: 5f5a +d248: 0001 +d249: 5f5a +d249: 0001 +d24a: 5f5a +d24a: 0001 +d24b: 5f5a +d24b: 0001 +d24c: 5f5a +d24c: 0001 +d24d: 5f5a +d24d: 0001 +d24e: 5f5a +d24e: 0001 +d24f: 5f5a +d24f: 0001 +d250: 5f5a +d250: 0001 +d251: 5f5a +d251: 0001 +d252: 5f5a +d252: 0001 +d253: 5f5a +d253: 0001 +d254: 5f5a +d254: 0001 +d255: 5f5a +d255: 0001 +d256: 5f5a +d256: 0001 +d257: 5f5a +d257: 0001 +d258: 5f5a +d258: 0001 +d259: 5f5a +d259: 0001 +d25a: 5f5a +d25a: 0001 +d25b: 5f5a +d25b: 0001 +d25c: 5f5a +d25c: 0001 +d25d: 5f5a +d25d: 0001 +d25e: 5f5a +d25e: 0001 +d25f: 5f5a +d25f: 0001 +d260: 5f5a +d260: 0001 +d261: 5f5a +d261: 0001 +d262: 5f5a +d262: 0001 +d263: 5f5a +d263: 0001 +d264: 5f5a +d264: 0001 +d265: 5f5a +d265: 0001 +d266: 5f5a +d266: 0001 +d267: 5f5a +d267: 0001 +d268: 5f5a +d268: 0001 +d269: 5f5a +d269: 0001 +d26a: 5f5a +d26a: 0001 +d26b: 5f5a +d26b: 0001 +d26c: 5f5a +d26c: 0001 +d26d: 5f5a +d26d: 0001 +d26e: 5f5a +d26e: 0001 +d26f: 5f5a +d26f: 0001 +d270: 5f5a +d270: 0001 +d271: 5f5a +d271: 0001 +d272: 5f5a +d272: 0001 +d273: 5f5a +d273: 0001 +d274: 5f5a +d274: 0001 +d275: 5f5a +d275: 0001 +d276: 5f5a +d276: 0001 +d277: 5f5a +d277: 0001 +d278: 5f5a +d278: 0001 +d279: 5f5a +d279: 0001 +d27a: 5f5a +d27a: 0001 +d27b: 5f5a +d27b: 0001 +d27c: 5f5a +d27c: 0001 +d27d: 5f5a +d27d: 0001 +d27e: 5f5a +d27e: 0001 +d27f: 5f5a +d27f: 0001 +d280: 5f5a +d280: 0001 +d281: 5f5a +d281: 0001 +d282: 5f5a +d282: 0001 +d283: 5f5a +d283: 0001 +d284: 5f5a +d284: 0001 +d285: 5f5a +d285: 0001 +d286: 5f5a +d286: 0001 +d287: 5f5a +d287: 0001 +d288: 5f5a +d288: 0001 +d289: 5f5a +d289: 0001 +d28a: 5f5a +d28a: 0001 +d28b: 5f5a +d28b: 0001 +d28c: 5f5a +d28c: 0001 +d28d: 5f5a +d28d: 0001 +d28e: 5f5a +d28e: 0001 +d28f: 5f5a +d28f: 0001 +d290: 5f5a +d290: 0001 +d291: 5f5a +d291: 0001 +d292: 5f5a +d292: 0001 +d293: 5f5a +d293: 0001 +d294: 5f5a +d294: 0001 +d295: 5f5a +d295: 0001 +d296: 5f5a +d296: 0001 +d297: 5f5a +d297: 0001 +d298: 5f5a +d298: 0001 +d299: 5f5a +d299: 0001 +d29a: 5f5a +d29a: 0001 +d29b: 5f5a +d29b: 0001 +d29c: 5f5a +d29c: 0001 +d29d: 5f5a +d29d: 0001 +d29e: 5f5a +d29e: 0001 +d29f: 5f5a +d29f: 0001 +d2a0: 5f5a +d2a0: 0001 +d2a1: 5f5a +d2a1: 0001 +d2a2: 5f5a +d2a2: 0001 +d2a3: 5f5a +d2a3: 0001 +d2a4: 5f5a +d2a4: 0001 +d2a5: 5f5a +d2a5: 0001 +d2a6: 5f5a +d2a6: 0001 +d2a7: 5f5a +d2a7: 0001 +d2a8: 5f5a +d2a8: 0001 +d2a9: 5f5a +d2a9: 0001 +d2aa: 5f5a +d2aa: 0001 +d2ab: 5f5a +d2ab: 0001 +d2ac: 5f5a +d2ac: 0001 +d2ad: 5f5a +d2ad: 0001 +d2ae: 5f5a +d2ae: 0001 +d2af: 5f5a +d2af: 0001 +d2b0: 5f5a +d2b0: 0001 +d2b1: 5f5a +d2b1: 0001 +d2b2: 5f5a +d2b2: 0001 +d2b3: 5f5a +d2b3: 0001 +d2b4: 5f5a +d2b4: 0001 +d2b5: 5f5a +d2b5: 0001 +d2b6: 5f5a +d2b6: 0001 +d2b7: 5f5a +d2b7: 0001 +d2b8: 5f5a +d2b8: 0001 +d2b9: 5f5a +d2b9: 0001 +d2ba: 5f5a +d2ba: 0001 +d2bb: 5f5a +d2bb: 0001 +d2bc: 5f5a +d2bc: 0001 +d2bd: 5f5a +d2bd: 0001 +d2be: 5f5a +d2be: 0001 +d2bf: 5f5a +d2bf: 0001 +d2c0: 5f5a +d2c0: 0001 +d2c1: 5f5a +d2c1: 0001 +d2c2: 5f5a +d2c2: 0001 +d2c3: 5f5a +d2c3: 0001 +d2c4: 5f5a +d2c4: 0001 +d2c5: 5f5a +d2c5: 0001 +d2c6: 5f5a +d2c6: 0001 +d2c7: 5f5a +d2c7: 0001 +d2c8: 5f5a +d2c8: 0001 +d2c9: 5f5a +d2c9: 0001 +d2ca: 5f5a +d2ca: 0001 +d2cb: 5f5a +d2cb: 0001 +d2cc: 5f5a +d2cc: 0001 +d2cd: 5f5a +d2cd: 0001 +d2ce: 5f5a +d2ce: 0001 +d2cf: 5f5a +d2cf: 0001 +d2d0: 5f5a +d2d0: 0001 +d2d1: 5f5a +d2d1: 0001 +d2d2: 5f5a +d2d2: 0001 +d2d3: 5f5a +d2d3: 0001 +d2d4: 5f5a +d2d4: 0001 +d2d5: 5f5a +d2d5: 0001 +d2d6: 5f5a +d2d6: 0001 +d2d7: 5f5a +d2d7: 0001 +d2d8: 5f5a +d2d8: 0001 +d2d9: 5f5a +d2d9: 0001 +d2da: 5f5a +d2da: 0001 +d2db: 5f5a +d2db: 0001 +d2dc: 5f5a +d2dc: 0001 +d2dd: 5f5a +d2dd: 0001 +d2de: 5f5a +d2de: 0001 +d2df: 5f5a +d2df: 0001 +d2e0: 5f5a +d2e0: 0001 +d2e1: 5f5a +d2e1: 0001 +d2e2: 5f5a +d2e2: 0001 +d2e3: 5f5a +d2e3: 0001 +d2e4: 5f5a +d2e4: 0001 +d2e5: 5f5a +d2e5: 0001 +d2e6: 5f5a +d2e6: 0001 +d2e7: 5f5a +d2e7: 0001 +d2e8: 5f5a +d2e8: 0001 +d2e9: 5f5a +d2e9: 0001 +d2ea: 5f5a +d2ea: 0001 +d2eb: 5f5a +d2eb: 0001 +d2ec: 5f5a +d2ec: 0001 +d2ed: 5f5a +d2ed: 0001 +d2ee: 5f5a +d2ee: 0001 +d2ef: 5f5a +d2ef: 0001 +d2f0: 5f5a +d2f0: 0001 +d2f1: 5f5a +d2f1: 0001 +d2f2: 5f5a +d2f2: 0001 +d2f3: 5f5a +d2f3: 0001 +d2f4: 5f5a +d2f4: 0001 +d2f5: 5f5a +d2f5: 0001 +d2f6: 5f5a +d2f6: 0001 +d2f7: 5f5a +d2f7: 0001 +d2f8: 5f5a +d2f8: 0001 +d2f9: 5f5a +d2f9: 0001 +d2fa: 5f5a +d2fa: 0001 +d2fb: 5f5a +d2fb: 0001 +d2fc: 5f5a +d2fc: 0001 +d2fd: 5f5a +d2fd: 0001 +d2fe: 5f5a +d2fe: 0001 +d2ff: 5f5a +d2ff: 0001 +d300: 5f5a +d300: 0001 +d301: 5f5a +d301: 0001 +d302: 5f5a +d302: 0001 +d303: 5f5a +d303: 0001 +d304: 5f5a +d304: 0001 +d305: 5f5a +d305: 0001 +d306: 5f5a +d306: 0001 +d307: 5f5a +d307: 0001 +d308: 5f5a +d308: 0001 +d309: 5f5a +d309: 0001 +d30a: 5f5a +d30a: 0001 +d30b: 5f5a +d30b: 0001 +d30c: 5f5a +d30c: 0001 +d30d: 5f5a +d30d: 0001 +d30e: 5f5a +d30e: 0001 +d30f: 5f5a +d30f: 0001 +d310: 5f5a +d310: 0001 +d311: 5f5a +d311: 0001 +d312: 5f5a +d312: 0001 +d313: 5f5a +d313: 0001 +d314: 5f5a +d314: 0001 +d315: 5f5a +d315: 0001 +d316: 5f5a +d316: 0001 +d317: 5f5a +d317: 0001 +d318: 5f5a +d318: 0001 +d319: 5f5a +d319: 0001 +d31a: 5f5a +d31a: 0001 +d31b: 5f5a +d31b: 0001 +d31c: 5f5a +d31c: 0001 +d31d: 5f5a +d31d: 0001 +d31e: 5f5a +d31e: 0001 +d31f: 5f5a +d31f: 0001 +d320: 5f5a +d320: 0001 +d321: 5f5a +d321: 0001 +d322: 5f5a +d322: 0001 +d323: 5f5a +d323: 0001 +d324: 5f5a +d324: 0001 +d325: 5f5a +d325: 0001 +d326: 5f5a +d326: 0001 +d327: 5f5a +d327: 0001 +d328: 5f5a +d328: 0001 +d329: 5f5a +d329: 0001 +d32a: 5f5a +d32a: 0001 +d32b: 5f5a +d32b: 0001 +d32c: 5f5a +d32c: 0001 +d32d: 5f5a +d32d: 0001 +d32e: 5f5a +d32e: 0001 +d32f: 5f5a +d32f: 0001 +d330: 5f5a +d330: 0001 +d331: 5f5a +d331: 0001 +d332: 5f5a +d332: 0001 +d333: 5f5a +d333: 0001 +d334: 5f5a +d334: 0001 +d335: 5f5a +d335: 0001 +d336: 5f5a +d336: 0001 +d337: 5f5a +d337: 0001 +d338: 5f5a +d338: 0001 +d339: 5f5a +d339: 0001 +d33a: 5f5a +d33a: 0001 +d33b: 5f5a +d33b: 0001 +d33c: 5f5a +d33c: 0001 +d33d: 5f5a +d33d: 0001 +d33e: 5f5a +d33e: 0001 +d33f: 5f5a +d33f: 0001 +d340: 5f5a +d340: 0001 +d341: 5f5a +d341: 0001 +d342: 5f5a +d342: 0001 +d343: 5f5a +d343: 0001 +d344: 5f5a +d344: 0001 +d345: 5f5a +d345: 0001 +d346: 5f5a +d346: 0001 +d347: 5f5a +d347: 0001 +d348: 5f5a +d348: 0001 +d349: 5f5a +d349: 0001 +d34a: 5f5a +d34a: 0001 +d34b: 5f5a +d34b: 0001 +d34c: 5f5a +d34c: 0001 +d34d: 5f5a +d34d: 0001 +d34e: 5f5a +d34e: 0001 +d34f: 5f5a +d34f: 0001 +d350: 5f5a +d350: 0001 +d351: 5f5a +d351: 0001 +d352: 5f5a +d352: 0001 +d353: 5f5a +d353: 0001 +d354: 5f5a +d354: 0001 +d355: 5f5a +d355: 0001 +d356: 5f5a +d356: 0001 +d357: 5f5a +d357: 0001 +d358: 5f5a +d358: 0001 +d359: 5f5a +d359: 0001 +d35a: 5f5a +d35a: 0001 +d35b: 5f5a +d35b: 0001 +d35c: 5f5a +d35c: 0001 +d35d: 5f5a +d35d: 0001 +d35e: 5f5a +d35e: 0001 +d35f: 5f5a +d35f: 0001 +d360: 5f5a +d360: 0001 +d361: 5f5a +d361: 0001 +d362: 5f5a +d362: 0001 +d363: 5f5a +d363: 0001 +d364: 5f5a +d364: 0001 +d365: 5f5a +d365: 0001 +d366: 5f5a +d366: 0001 +d367: 5f5a +d367: 0001 +d368: 5f5a +d368: 0001 +d369: 5f5a +d369: 0001 +d36a: 5f5a +d36a: 0001 +d36b: 5f5a +d36b: 0001 +d36c: 5f5a +d36c: 0001 +d36d: 5f5a +d36d: 0001 +d36e: 5f5a +d36e: 0001 +d36f: 5f5a +d36f: 0001 +d370: 5f5a +d370: 0001 +d371: 5f5a +d371: 0001 +d372: 5f5a +d372: 0001 +d373: 5f5a +d373: 0001 +d374: 5f5a +d374: 0001 +d375: 5f5a +d375: 0001 +d376: 5f5a +d376: 0001 +d377: 5f5a +d377: 0001 +d378: 5f5a +d378: 0001 +d379: 5f5a +d379: 0001 +d37a: 5f5a +d37a: 0001 +d37b: 5f5a +d37b: 0001 +d37c: 5f5a +d37c: 0001 +d37d: 5f5a +d37d: 0001 +d37e: 5f5a +d37e: 0001 +d37f: 5f5a +d37f: 0001 +d380: 5f5a +d380: 0001 +d381: 5f5a +d381: 0001 +d382: 5f5a +d382: 0001 +d383: 5f5a +d383: 0001 +d384: 5f5a +d384: 0001 +d385: 5f5a +d385: 0001 +d386: 5f5a +d386: 0001 +d387: 5f5a +d387: 0001 +d388: 5f5a +d388: 0001 +d389: 5f5a +d389: 0001 +d38a: 5f5a +d38a: 0001 +d38b: 5f5a +d38b: 0001 +d38c: 5f5a +d38c: 0001 +d38d: 5f5a +d38d: 0001 +d38e: 5f5a +d38e: 0001 +d38f: 5f5a +d38f: 0001 +d390: 5f5a +d390: 0001 +d391: 5f5a +d391: 0001 +d392: 5f5a +d392: 0001 +d393: 5f5a +d393: 0001 +d394: 5f5a +d394: 0001 +d395: 5f5a +d395: 0001 +d396: 5f5a +d396: 0001 +d397: 5f5a +d397: 0001 +d398: 5f5a +d398: 0001 +d399: 5f5a +d399: 0001 +d39a: 5f5a +d39a: 0001 +d39b: 5f5a +d39b: 0001 +d39c: 5f5a +d39c: 0001 +d39d: 5f5a +d39d: 0001 +d39e: 5f5a +d39e: 0001 +d39f: 5f5a +d39f: 0001 +d3a0: 5f5a +d3a0: 0001 +d3a1: 5f5a +d3a1: 0001 +d3a2: 5f5a +d3a2: 0001 +d3a3: 5f5a +d3a3: 0001 +d3a4: 5f5a +d3a4: 0001 +d3a5: 5f5a +d3a5: 0001 +d3a6: 5f5a +d3a6: 0001 +d3a7: 5f5a +d3a7: 0001 +d3a8: 5f5a +d3a8: 0001 +d3a9: 5f5a +d3a9: 0001 +d3aa: 5f5a +d3aa: 0001 +d3ab: 5f5a +d3ab: 0001 +d3ac: 5f5a +d3ac: 0001 +d3ad: 5f5a +d3ad: 0001 +d3ae: 5f5a +d3ae: 0001 +d3af: 5f5a +d3af: 0001 +d3b0: 5f5a +d3b0: 0001 +d3b1: 5f5a +d3b1: 0001 +d3b2: 5f5a +d3b2: 0001 +d3b3: 5f5a +d3b3: 0001 +d3b4: 5f5a +d3b4: 0001 +d3b5: 5f5a +d3b5: 0001 +d3b6: 5f5a +d3b6: 0001 +d3b7: 5f5a +d3b7: 0001 +d3b8: 5f5a +d3b8: 0001 +d3b9: 5f5a +d3b9: 0001 +d3ba: 5f5a +d3ba: 0001 +d3bb: 5f5a +d3bb: 0001 +d3bc: 5f5a +d3bc: 0001 +d3bd: 5f5a +d3bd: 0001 +d3be: 5f5a +d3be: 0001 +d3bf: 5f5a +d3bf: 0001 +d3c0: 5f5a +d3c0: 0001 +d3c1: 5f5a +d3c1: 0001 +d3c2: 5f5a +d3c2: 0001 +d3c3: 5f5a +d3c3: 0001 +d3c4: 5f5a +d3c4: 0001 +d3c5: 5f5a +d3c5: 0001 +d3c6: 5f5a +d3c6: 0001 +d3c7: 5f5a +d3c7: 0001 +d3c8: 5f5a +d3c8: 0001 +d3c9: 5f5a +d3c9: 0001 +d3ca: 5f5a +d3ca: 0001 +d3cb: 5f5a +d3cb: 0001 +d3cc: 5f5a +d3cc: 0001 +d3cd: 5f5a +d3cd: 0001 +d3ce: 5f5a +d3ce: 0001 +d3cf: 5f5a +d3cf: 0001 +d3d0: 5f5a +d3d0: 0001 +d3d1: 5f5a +d3d1: 0001 +d3d2: 5f5a +d3d2: 0001 +d3d3: 5f5a +d3d3: 0001 +d3d4: 5f5a +d3d4: 0001 +d3d5: 5f5a +d3d5: 0001 +d3d6: 5f5a +d3d6: 0001 +d3d7: 5f5a +d3d7: 0001 +d3d8: 5f5a +d3d8: 0001 +d3d9: 5f5a +d3d9: 0001 +d3da: 5f5a +d3da: 0001 +d3db: 5f5a +d3db: 0001 +d3dc: 5f5a +d3dc: 0001 +d3dd: 5f5a +d3dd: 0001 +d3de: 5f5a +d3de: 0001 +d3df: 5f5a +d3df: 0001 +d3e0: 5f5a +d3e0: 0001 +d3e1: 5f5a +d3e1: 0001 +d3e2: 5f5a +d3e2: 0001 +d3e3: 5f5a +d3e3: 0001 +d3e4: 5f5a +d3e4: 0001 +d3e5: 5f5a +d3e5: 0001 +d3e6: 5f5a +d3e6: 0001 +d3e7: 5f5a +d3e7: 0001 +d3e8: 5f5a +d3e8: 0001 +d3e9: 5f5a +d3e9: 0001 +d3ea: 5f5a +d3ea: 0001 +d3eb: 5f5a +d3eb: 0001 +d3ec: 5f5a +d3ec: 0001 +d3ed: 5f5a +d3ed: 0001 +d3ee: 5f5a +d3ee: 0001 +d3ef: 5f5a +d3ef: 0001 +d3f0: 5f5a +d3f0: 0001 +d3f1: 5f5a +d3f1: 0001 +d3f2: 5f5a +d3f2: 0001 +d3f3: 5f5a +d3f3: 0001 +d3f4: 5f5a +d3f4: 0001 +d3f5: 5f5a +d3f5: 0001 +d3f6: 5f5a +d3f6: 0001 +d3f7: 5f5a +d3f7: 0001 +d3f8: 5f5a +d3f8: 0001 +d3f9: 5f5a +d3f9: 0001 +d3fa: 5f5a +d3fa: 0001 +d3fb: 5f5a +d3fb: 0001 +d3fc: 5f5a +d3fc: 0001 +d3fd: 5f5a +d3fd: 0001 +d3fe: 5f5a +d3fe: 0001 +d3ff: 5f5a +d3ff: 0001 +d400: 5f5a +d400: 0001 +d401: 5f5a +d401: 0001 +d402: 5f5a +d402: 0001 +d403: 5f5a +d403: 0001 +d404: 5f5a +d404: 0001 +d405: 5f5a +d405: 0001 +d406: 5f5a +d406: 0001 +d407: 5f5a +d407: 0001 +d408: 5f5a +d408: 0001 +d409: 5f5a +d409: 0001 +d40a: 5f5a +d40a: 0001 +d40b: 5f5a +d40b: 0001 +d40c: 5f5a +d40c: 0001 +d40d: 5f5a +d40d: 0001 +d40e: 5f5a +d40e: 0001 +d40f: 5f5a +d40f: 0001 +d410: 5f5a +d410: 0001 +d411: 5f5a +d411: 0001 +d412: 5f5a +d412: 0001 +d413: 5f5a +d413: 0001 +d414: 5f5a +d414: 0001 +d415: 5f5a +d415: 0001 +d416: 5f5a +d416: 0001 +d417: 5f5a +d417: 0001 +d418: 5f5a +d418: 0001 +d419: 5f5a +d419: 0001 +d41a: 5f5a +d41a: 0001 +d41b: 5f5a +d41b: 0001 +d41c: 5f5a +d41c: 0001 +d41d: 5f5a +d41d: 0001 +d41e: 5f5a +d41e: 0001 +d41f: 5f5a +d41f: 0001 +d420: 5f5a +d420: 0001 +d421: 5f5a +d421: 0001 +d422: 5f5a +d422: 0001 +d423: 5f5a +d423: 0001 +d424: 5f5a +d424: 0001 +d425: 5f5a +d425: 0001 +d426: 5f5a +d426: 0001 +d427: 5f5a +d427: 0001 +d428: 5f5a +d428: 0001 +d429: 5f5a +d429: 0001 +d42a: 5f5a +d42a: 0001 +d42b: 5f5a +d42b: 0001 +d42c: 5f5a +d42c: 0001 +d42d: 5f5a +d42d: 0001 +d42e: 5f5a +d42e: 0001 +d42f: 5f5a +d42f: 0001 +d430: 5f5a +d430: 0001 +d431: 5f5a +d431: 0001 +d432: 5f5a +d432: 0001 +d433: 5f5a +d433: 0001 +d434: 5f5a +d434: 0001 +d435: 5f5a +d435: 0001 +d436: 5f5a +d436: 0001 +d437: 5f5a +d437: 0001 +d438: 5f5a +d438: 0001 +d439: 5f5a +d439: 0001 +d43a: 5f5a +d43a: 0001 +d43b: 5f5a +d43b: 0001 +d43c: 5f5a +d43c: 0001 +d43d: 5f5a +d43d: 0001 +d43e: 5f5a +d43e: 0001 +d43f: 5f5a +d43f: 0001 +d440: 5f5a +d440: 0001 +d441: 5f5a +d441: 0001 +d442: 5f5a +d442: 0001 +d443: 5f5a +d443: 0001 +d444: 5f5a +d444: 0001 +d445: 5f5a +d445: 0001 +d446: 5f5a +d446: 0001 +d447: 5f5a +d447: 0001 +d448: 5f5a +d448: 0001 +d449: 5f5a +d449: 0001 +d44a: 5f5a +d44a: 0001 +d44b: 5f5a +d44b: 0001 +d44c: 5f5a +d44c: 0001 +d44d: 5f5a +d44d: 0001 +d44e: 5f5a +d44e: 0001 +d44f: 5f5a +d44f: 0001 +d450: 5f5a +d450: 0001 +d451: 5f5a +d451: 0001 +d452: 5f5a +d452: 0001 +d453: 5f5a +d453: 0001 +d454: 5f5a +d454: 0001 +d455: 5f5a +d455: 0001 +d456: 5f5a +d456: 0001 +d457: 5f5a +d457: 0001 +d458: 5f5a +d458: 0001 +d459: 5f5a +d459: 0001 +d45a: 5f5a +d45a: 0001 +d45b: 5f5a +d45b: 0001 +d45c: 5f5a +d45c: 0001 +d45d: 5f5a +d45d: 0001 +d45e: 5f5a +d45e: 0001 +d45f: 5f5a +d45f: 0001 +d460: 5f5a +d460: 0001 +d461: 5f5a +d461: 0001 +d462: 5f5a +d462: 0001 +d463: 5f5a +d463: 0001 +d464: 5f5a +d464: 0001 +d465: 5f5a +d465: 0001 +d466: 5f5a +d466: 0001 +d467: 5f5a +d467: 0001 +d468: 5f5a +d468: 0001 +d469: 5f5a +d469: 0001 +d46a: 5f5a +d46a: 0001 +d46b: 5f5a +d46b: 0001 +d46c: 5f5a +d46c: 0001 +d46d: 5f5a +d46d: 0001 +d46e: 5f5a +d46e: 0001 +d46f: 5f5a +d46f: 0001 +d470: 5f5a +d470: 0001 +d471: 5f5a +d471: 0001 +d472: 5f5a +d472: 0001 +d473: 5f5a +d473: 0001 +d474: 5f5a +d474: 0001 +d475: 5f5a +d475: 0001 +d476: 5f5a +d476: 0001 +d477: 5f5a +d477: 0001 +d478: 5f5a +d478: 0001 +d479: 5f5a +d479: 0001 +d47a: 5f5a +d47a: 0001 +d47b: 5f5a +d47b: 0001 +d47c: 5f5a +d47c: 0001 +d47d: 5f5a +d47d: 0001 +d47e: 5f5a +d47e: 0001 +d47f: 5f5a +d47f: 0001 +d480: 5f5a +d480: 0001 +d481: 5f5a +d481: 0001 +d482: 5f5a +d482: 0001 +d483: 5f5a +d483: 0001 +d484: 5f5a +d484: 0001 +d485: 5f5a +d485: 0001 +d486: 5f5a +d486: 0001 +d487: 5f5a +d487: 0001 +d488: 5f5a +d488: 0001 +d489: 5f5a +d489: 0001 +d48a: 5f5a +d48a: 0001 +d48b: 5f5a +d48b: 0001 +d48c: 5f5a +d48c: 0001 +d48d: 5f5a +d48d: 0001 +d48e: 5f5a +d48e: 0001 +d48f: 5f5a +d48f: 0001 +d490: 5f5a +d490: 0001 +d491: 5f5a +d491: 0001 +d492: 5f5a +d492: 0001 +d493: 5f5a +d493: 0001 +d494: 5f5a +d494: 0001 +d495: 5f5a +d495: 0001 +d496: 5f5a +d496: 0001 +d497: 5f5a +d497: 0001 +d498: 5f5a +d498: 0001 +d499: 5f5a +d499: 0001 +d49a: 5f5a +d49a: 0001 +d49b: 5f5a +d49b: 0001 +d49c: 5f5a +d49c: 0001 +d49d: 5f5a +d49d: 0001 +d49e: 5f5a +d49e: 0001 +d49f: 5f5a +d49f: 0001 +d4a0: 5f5a +d4a0: 0001 +d4a1: 5f5a +d4a1: 0001 +d4a2: 5f5a +d4a2: 0001 +d4a3: 5f5a +d4a3: 0001 +d4a4: 5f5a +d4a4: 0001 +d4a5: 5f5a +d4a5: 0001 +d4a6: 5f5a +d4a6: 0001 +d4a7: 5f5a +d4a7: 0001 +d4a8: 5f5a +d4a8: 0001 +d4a9: 5f5a +d4a9: 0001 +d4aa: 5f5a +d4aa: 0001 +d4ab: 5f5a +d4ab: 0001 +d4ac: 5f5a +d4ac: 0001 +d4ad: 5f5a +d4ad: 0001 +d4ae: 5f5a +d4ae: 0001 +d4af: 5f5a +d4af: 0001 +dc09: 0f0f +dc11: 0fff +dc19: 0f00 +dc21: 00ff +dc29: 000f +de00: 0401 +de01: 0000 +d800: a400 +d801: 1ad3 +d802: 8800 +d803: 1773 +d804: 4c00 +d805: 1372 +d806: 7000 +d807: 0fb0 +d808: 7400 +d809: 0dce diff --git a/test/ppu-stm-integration-demo/img.png b/test/ppu-stm-integration-demo/img.png new file mode 100644 index 0000000..449d8ec Binary files /dev/null and b/test/ppu-stm-integration-demo/img.png differ diff --git a/test/ppu-stm-integration-demo/makefile b/test/ppu-stm-integration-demo/makefile new file mode 100644 index 0000000..715a22b --- /dev/null +++ b/test/ppu-stm-integration-demo/makefile @@ -0,0 +1,6 @@ +data.h: data.txt + echo "#pragma once" > $@ + echo "#include " >> $@ + (printf "#define HH_PPUINTDEMO_LENGTH "; wc -l < $<) >> $@ + tr -d ':' < $< | awk 'BEGIN { printf "const uint16_t HH_PPUINTDEMO_ADDR[] = { " } 1 { printf "0x"$$1", " } END { print "};" }' >> $@ + tr -d ':' < $< | awk 'BEGIN { printf "const uint16_t HH_PPUINTDEMO_DATA[] = { " } 1 { printf "0x"$$2", " } END { print "};" }' >> $@ diff --git a/test/ppu-stm-integration-demo/readme.md b/test/ppu-stm-integration-demo/readme.md new file mode 100644 index 0000000..4e9be23 --- /dev/null +++ b/test/ppu-stm-integration-demo/readme.md @@ -0,0 +1,9 @@ +# ppu-stm integration demo + +- data.txt is generated using a hacked version of the ppusim demo +- makefile converts data into header file for c +- main.c should be compiled and uploaded to stm32 +- this program sends ppu data to the ppu using HAL SPI, and should produce + img.png as output +- other details undocumented + -- cgit v1.2.3