I 'm having issues changing a statement to be used on the FX chip. I don’t know if I’m just ignorant, or what. @Mr.Blinky, any ideas?
Here’s a snippet of the original statement:
const uint8_t gti[] PROGMEM = { 255,255,16,66,79,79,77,33,32,82,85,77,66,76,69,33,32,70,76,65,83,72,33,0,255,255,13,1,255,255,13,0,255,255,16,65,110,32,101,120,112,108,111,115,105,111,110,32,115,111,109,101,119,104,101,114,101,32,119,105,116,104,105,110,32,153,};
When I try to take the statement below (also just a snippet) and put it into the fxdata.txt, build it, it works. But then when I go to export compiled binary, it throws errors.
uint8_t gti[] = {
255, 255, 16, 66, 79, 79, 77, 33, 32, 82, 85, 77, 66, 76, 69, 33, 32, 70, 76, 65, 83, 72, 33, 0, 255, 255, 13, 1, 255, 255, 13, 0, 255, 255, 16, 65, 110, 32, 101, 120, 112, 108, 111, 115, 105, 111, 110, 32, 115, 111, 109, 101, 119, 104, 101, 114, 101, 32, 119, 105, 116, 104, 105, 110, 32,153
};
Here are the errors:
Arduino: 1.8.19 (Windows 10), Board: "Arduboy"
In file included from C:\Users\Dolorre\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino/Arduino.h:28:0,
from sketch\Silence_FX.ino.cpp:1:
E:\Documents\Arduboy FX Games\Silence_FX\Silence_FX.ino: In function 'void startVM(uint16_t)':
Silence_FX:62:47: error: invalid types 'const uint24_t {aka const __uint24}[uint16_t {aka unsigned int}]' for array subscript
uint16_t type = (pgm_read_byte_near(&(gti[pc])) << 8) | (pgm_read_byte_near(&(gti[pc+1])) & 0xFF); // Read in type of frame
^
Silence_FX:62:89: error: invalid types 'const uint24_t {aka const __uint24}[uint16_t {aka unsigned int}]' for array subscript
uint16_t type = (pgm_read_byte_near(&(gti[pc])) << 8) | (pgm_read_byte_near(&(gti[pc+1])) & 0xFF); // Read in type of frame
^
Silence_FX:67:48: error: invalid types 'const uint24_t {aka const __uint24}[uint16_t {aka unsigned int}]' for array subscript
uint8_t mode = pgm_read_byte_near(&(gti[pc])); // get the special packet mode
^
Silence_FX:76:56: error: invalid types 'const uint24_t {aka const __uint24}[uint16_t {aka unsigned int}]' for array subscript
uint8_t buff = pgm_read_byte_near(&(gti[pc])); // read a chracter
^
Silence_FX:93:45: error: invalid types 'const uint24_t {aka const __uint24}[uint16_t {aka unsigned int}]' for array subscript
pc = (pgm_read_byte_near(&(gti[pc])) << 8) | (pgm_read_byte_near(&(gti[pc+1])) & 0xFF); // Set the program counter to the address in 16 bit field
^
Silence_FX:93:87: error: invalid types 'const uint24_t {aka const __uint24}[uint16_t {aka unsigned int}]' for array subscript
pc = (pgm_read_byte_near(&(gti[pc])) << 8) | (pgm_read_byte_near(&(gti[pc+1])) & 0xFF); // Set the program counter to the address in 16 bit field
^
Silence_FX:101:49: error: invalid types 'const uint24_t {aka const __uint24}[uint16_t {aka unsigned int}]' for array subscript
effect = pgm_read_byte_near(&(gti[pc])); // Get effect type
^
Silence_FX:141:56: error: invalid types 'const uint24_t {aka const __uint24}[uint16_t {aka unsigned int}]' for array subscript
uint8_t buff = pgm_read_byte_near(&(gti[pc])); // Read a character
^
Silence_FX:159:56: error: invalid types 'const uint24_t {aka const __uint24}[uint16_t {aka unsigned int}]' for array subscript
uint16_t alterexit = (pgm_read_byte_near(&(gti[pc])) << 8) | (pgm_read_byte_near(&(gti[pc+1])) & 0xFF); // get jump b address
^
Silence_FX:159:98: error: invalid types 'const uint24_t {aka const __uint24}[uint16_t {aka unsigned int}]' for array subscript
uint16_t alterexit = (pgm_read_byte_near(&(gti[pc])) << 8) | (pgm_read_byte_near(&(gti[pc+1])) & 0xFF); // get jump b address
^
Silence_FX:163:51: error: invalid types 'const uint24_t {aka const __uint24}[uint16_t {aka unsigned int}]' for array subscript
uint8_t buff = pgm_read_byte_near(&(gti[pc])); // get a chracter
^
Silence_FX:174:51: error: invalid types 'const uint24_t {aka const __uint24}[uint16_t {aka unsigned int}]' for array subscript
uint8_t buff = pgm_read_byte_near(&(gti[pc])); // get a character
^
Silence_FX:186:56: error: invalid types 'const uint24_t {aka const __uint24}[uint16_t {aka unsigned int}]' for array subscript
uint8_t buff = pgm_read_byte_near(&(gti[pc])); // get character from main description
^
exit status 1
invalid types 'const uint24_t {aka const __uint24}[uint16_t {aka unsigned int}]' for array subscript
Finally, here’s what in the fxdata.h file (which I have not touched):
#pragma once
/**** FX data header generated by fxdata-build.py tool version 1.14 ****/
using uint24_t = __uint24;
// Initialize FX hardware using FX::begin(FX_DATA_PAGE); in the setup() function.
constexpr uint16_t FX_DATA_PAGE = 0xffc2;
constexpr uint24_t FX_DATA_BYTES = 15833;
constexpr uint24_t gti = 0x000000;
Any idea if I’m being ignorant or if there’s something wrong?