Improving compiler.

This commit is contained in:
2022-01-04 21:36:37 -08:00
parent c9ebb85d13
commit dfd205ce22
28 changed files with 500 additions and 183 deletions

View File

@@ -11,30 +11,62 @@ char *TEXTBOX_TEXT;
uint8_t TEXTBOX_TEXT_LENGTH;
uint8_t TEXTBOX_STATE;
uint8_t TEXTBOX_SCROLL;
uint8_t TEXTBOX_TILES[TEXTBOX_TILES_MAX];
void textboxInit() {
uint8_t i;
// Reset textbox state
TEXTBOX_TEXT = NULL;
TEXTBOX_STATE = 0;
TEXTBOX_TEXT_LENGTH = 0;
TEXTBOX_SCROLL = 0;
move_win(7, SCREENHEIGHT - (TEXTBOX_TILES_ROWS * 8));
set_win_data(TEXTBOX_TILES_DATA_POSITION, FONT_TILE_COUNT, FONT_DATA);
// Setup window data
move_win(7, SCREENHEIGHT - (TEXTBOX_HEIGHT_IN_TILES * 8));
set_win_data(FONT_DATA_POSITION, FONT_TILE_COUNT, FONT_DATA);
set_win_data(FRAME_DATA_POSITION, FRAME_TILE_COUNT, FRAME_DATA);
// Corners
TEXTBOX_TILES[0] = FRAME_TILE_TOP_LEFT;
TEXTBOX_TILES[TEXTBOX_WIDTH_IN_TILES-1] = FRAME_TILE_TOP_RIGHT;
TEXTBOX_TILES[TEXTBOX_TILES_MAX-1] = FRAME_TILE_BOTTOM_RIGHT;
TEXTBOX_TILES[TEXTBOX_TILES_MAX-TEXTBOX_WIDTH_IN_TILES] = FRAME_TILE_BOTTOM_LEFT;
// Edges
for(i = 1; i < TEXTBOX_WIDTH_IN_TILES - 1; i++) {
TEXTBOX_TILES[i] = FRAME_TILE_TOP_CENTER;
TEXTBOX_TILES[TEXTBOX_TILES_MAX - 1 - i] = FRAME_TILE_BOTTOM_CENTER;
}
for(i = 1; i < TEXTBOX_HEIGHT_IN_TILES - 1; i++) {
TEXTBOX_TILES[TEXTBOX_WIDTH_IN_TILES * i] = FRAME_TILE_CENTER_LEFT;
TEXTBOX_TILES[TEXTBOX_WIDTH_IN_TILES * (i+1) - 1] = FRAME_TILE_CENTER_RIGHT;
}
}
void textboxSetText(char *text, uint8_t length) {
uint8_t tiles[TEXTBOX_TILES_MAX];
uint8_t i;
uint8_t i, j;
// Reset textbox state
TEXTBOX_TEXT = text;
TEXTBOX_TEXT_LENGTH = length;
TEXTBOX_STATE = TEXTBOX_STATE_VISIBLE;
TEXTBOX_SCROLL = 0;
// Fill blank characters
for(j = 0; j < TEXTBOX_CHAR_ROWS; j++) {
for(i = 0; i < TEXTBOX_CHARS_PER_ROW ; i++) {
TEXTBOX_TILES[(i+1) + ((j + 1) * TEXTBOX_WIDTH_IN_TILES)] = (
TEXTBOX_TILE_BLANK
);
}
}
for(i = 0; i < TEXTBOX_TILES_MAX; i++) tiles[i] = TEXTBOX_TILE_BLANK;
set_win_tiles(0, 0, TEXTBOX_TILES_PER_ROW, TEXTBOX_TILES_ROWS, tiles);
set_win_tiles(
0, 0,
TEXTBOX_WIDTH_IN_TILES, TEXTBOX_HEIGHT_IN_TILES,
TEXTBOX_TILES
);
SHOW_WIN;
}
@@ -44,7 +76,6 @@ void textboxClose() {
}
void textboxUpdate() {
uint8_t tiles[TEXTBOX_TILES_MAX];
uint8_t i, j;
if(!(TEXTBOX_STATE & TEXTBOX_STATE_VISIBLE)) return;
@@ -53,30 +84,27 @@ void textboxUpdate() {
}
TEXTBOX_SCROLL++;
j = 0;
j = TEXTBOX_WIDTH_IN_TILES + 1;
for(i = 0; i < TEXTBOX_SCROLL; i++) {
if(TEXTBOX_TEXT[i] == ' ') {
j++;
continue;
}
if(TEXTBOX_TEXT[i] == '\n') {
j = TEXTBOX_TILES_PER_ROW;
j = (
(j / TEXTBOX_WIDTH_IN_TILES)*TEXTBOX_WIDTH_IN_TILES
) + TEXTBOX_WIDTH_IN_TILES + 1;
continue;
}
tiles[j] = TILE_FROM_CHAR(TEXTBOX_TEXT[i]);
TEXTBOX_TILES[j] = TEXTBOX_TEXT[i];
j++;
}
for(i = j; i < TEXTBOX_TILES_MAX; i++) {
tiles[i] = TEXTBOX_TILE_BLANK;
}
set_win_tiles(
0, 0,
TEXTBOX_TILES_PER_ROW,
TEXTBOX_TILES_ROWS,
tiles
TEXTBOX_WIDTH_IN_TILES,
TEXTBOX_HEIGHT_IN_TILES,
TEXTBOX_TILES
);
if(TEXTBOX_SCROLL == TEXTBOX_TEXT_LENGTH) {