aboutsummaryrefslogtreecommitdiff
path: root/fmdsp
diff options
context:
space:
mode:
Diffstat (limited to 'fmdsp')
-rw-r--r--fmdsp/fmdsp.c57
-rw-r--r--fmdsp/fmdsp.h2
-rw-r--r--fmdsp/fmdsp_sprites.h40
-rw-r--r--fmdsp/font.h1
-rw-r--r--fmdsp/font_fmdsp_medium_data.h174
-rw-r--r--fmdsp/font_fmdsp_small.c12
-rw-r--r--fmdsp/font_fmdsp_small_data.h4
7 files changed, 274 insertions, 16 deletions
diff --git a/fmdsp/fmdsp.c b/fmdsp/fmdsp.c
index abf60a0..5d641df 100644
--- a/fmdsp/fmdsp.c
+++ b/fmdsp/fmdsp.c
@@ -200,9 +200,6 @@ static void fmdsp_track_init_13(struct fmdsp *fmdsp,
break;
}
fmdsp_putline(track_type, vram, &font_fmdsp_small, 1, TRACK_H_S*i, 2, true);
- int tracknum = track_type_table[t].num;
- vramblit(vram, NUM_X+NUM_W*0, TRACK_H_S*i+1, s_num[(tracknum/10)%10], NUM_W, NUM_H);
- vramblit(vram, NUM_X+NUM_W*1, TRACK_H_S*i+1, s_num[tracknum%10], NUM_W, NUM_H);
fmdsp_putline("TRACK.", vram, &font_fmdsp_small, 1, TRACK_H_S*i+6, 1, true);
vramblit(vram, KEY_LEFT_X, TRACK_H_S*i+KEY_Y, s_key_left + KEY_LEFT_S_OFFSET, KEY_LEFT_W, KEY_H_S);
@@ -244,9 +241,6 @@ static void fmdsp_track_init_10(struct fmdsp *fmdsp,
break;
}
fmdsp_putline(track_type, vram, &font_fmdsp_small, 1, TRACK_H*i, 2, true);
- int tracknum = track_type_table[t].num;
- vramblit(vram, NUM_X+NUM_W*0, TRACK_H*i+1, s_num[(tracknum/10)%10], NUM_W, NUM_H);
- vramblit(vram, NUM_X+NUM_W*1, TRACK_H*i+1, s_num[tracknum%10], NUM_W, NUM_H);
fmdsp_putline("TRACK.", vram, &font_fmdsp_small, 1, TRACK_H*i+6, 1, true);
vramblit(vram, KEY_LEFT_X, TRACK_H*i+KEY_Y, s_key_left, KEY_LEFT_W, KEY_H);
@@ -276,9 +270,19 @@ void fmdsp_vram_init(struct fmdsp *fmdsp,
}
vramblit(vram, PLAYING_X, PLAYING_Y,
s_playing, PLAYING_W, PLAYING_H);
+ vramblit(vram, FILEBAR_X, PLAYING_Y,
+ s_filebar, FILEBAR_W, FILEBAR_H);
+ fmdsp_putline("MUSIC", vram, &font_fmdsp_small,
+ FILEBAR_MUSIC_X, PLAYING_Y+1, 2, false);
+ fmdsp_putline("FILE", vram, &font_fmdsp_small,
+ FILEBAR_FILE_X, PLAYING_Y+1, 2, false);
+ vramblit(vram, FILEBAR_TRI_X, FILEBAR_TRI_Y,
+ s_filebar_tri, FILEBAR_TRI_W, FILEBAR_TRI_H);
for (int x = 74; x < PC98_W; x++) {
vram[332*PC98_W+x] = 7;
}
+ fmdsp_putline(work->filename, vram, &font_fmdsp_medium,
+ FILEBAR_FILENAME_X, PLAYING_Y, 2, false);
int height = (16+3)*3+8;
for (int y = PC98_H-height; y < PC98_H; y++) {
for (int x = 0; x < PC98_W; x++) {
@@ -390,6 +394,9 @@ static void fmdsp_track_info_ssg(const struct opna *opna,
vram[(y+2+py)*PC98_W+(x+px*2)] = color;
}
}
+ char strbuf[5];
+ snprintf(strbuf, sizeof(strbuf), " %03X", opna_ssg_tone_period(&opna->ssg, chi));
+ fmdsp_putline(strbuf, vram, &font_fmdsp_small, x+170, y, 1, false);
}
static void fmdsp_track_info_adpcm(const struct opna *opna,
@@ -447,9 +454,19 @@ static void fmdsp_track_without_key(
struct fmdsp *fmdsp,
const struct fmdriver_work *work,
const struct fmdriver_track_status *track,
+ int t,
int y,
uint8_t *vram
) {
+ int tracknum = track_type_table[t].num;
+ const uint8_t *num1 = s_num[(tracknum/10)%10];
+ const uint8_t *num2 = s_num[tracknum%10];
+ if (fmdsp->masked[t]) {
+ num1 = num2 = s_num[10];
+ }
+
+ vramblit(vram, NUM_X+NUM_W*0, y+1, num1, NUM_W, NUM_H);
+ vramblit(vram, NUM_X+NUM_W*1, y+1, num2, NUM_W, NUM_H);
const char *track_info1 = " ";
char track_info2[5] = " ";
if (track->playing || track->info == FMDRIVER_TRACK_INFO_SSGEFF) {
@@ -502,8 +519,8 @@ static void fmdsp_track_without_key(
snprintf(numbuf, sizeof(numbuf), "%03d", track->volume);
fmdsp_putline(numbuf, vram, &font_fmdsp_small, TDETAIL_VL_V_X, y+6, 1, true);
fmdsp_putline("GT:", vram, &font_fmdsp_small, TDETAIL_GT_X, y+6, 1, true);
- //snprintf(numbuf, sizeof(numbuf), "%03d", track->tonenum);
- //fmdsp_putline(numbuf, vram, &font_fmdsp_small, TDETAIL_GT_V_X, y+6, 1, true);
+ snprintf(numbuf, sizeof(numbuf), "%03d", track->gate);
+ fmdsp_putline(numbuf, vram, &font_fmdsp_small, TDETAIL_GT_V_X, y+6, 1, true);
fmdsp_putline("DT:", vram, &font_fmdsp_small, TDETAIL_DT_X, y+6, 1, true);
if (track->detune) {
snprintf(numbuf, sizeof(numbuf), "%+04d", track->detune);
@@ -513,7 +530,7 @@ static void fmdsp_track_without_key(
fmdsp_putline(numbuf, vram, &font_fmdsp_small, TDETAIL_DT_V_X, y+6, 1, true);
fmdsp_putline("M:", vram, &font_fmdsp_small, TDETAIL_M_X, y+6, 1, true);
fmdsp_putline(track->status, vram, &font_fmdsp_small, TDETAIL_M_V_X, y+6, 1, true);
- uint8_t color_on = ((track->key == 0xff) || track->masked) ? 7 : 2;
+ uint8_t color_on = ((track->key == 0xff) || fmdsp->masked[t]) ? 7 : 2;
if (!track->playing) color_on = 3;
vramblit_color(vram, BAR_L_X, y+BAR_Y,
s_bar_l, BAR_L_W, BAR_H, color_on);
@@ -563,7 +580,7 @@ static void fmdsp_update_10(struct fmdsp *fmdsp,
fmdsp_track_info_adpcm(opna, 320, TRACK_H*it+6, vram);
}
}
- fmdsp_track_without_key(fmdsp, work, track, TRACK_H*it, vram);
+ fmdsp_track_without_key(fmdsp, work, track, t, TRACK_H*it, vram);
for (int i = 0; i < KEY_OCTAVES; i++) {
vramblit(vram, KEY_X+KEY_W*i, TRACK_H*it+KEY_Y,
s_key_bg, KEY_W, KEY_H);
@@ -576,7 +593,7 @@ static void fmdsp_update_10(struct fmdsp *fmdsp,
if (track->key >> 4 == i) {
vramblit_key(vram, KEY_X+KEY_W*i, TRACK_H*it+KEY_Y,
s_key_mask, KEY_W, KEY_H,
- track->key & 0xf, track->masked ? 8 : 6);
+ track->key & 0xf, fmdsp->masked[t] ? 8 : 6);
}
}
}
@@ -617,7 +634,7 @@ static void fmdsp_update_13(struct fmdsp *fmdsp,
fmdsp_track_info_adpcm(opna, 320, TRACK_H_S*it, vram);
}
}
- fmdsp_track_without_key(fmdsp, work, track, TRACK_H_S*it, vram);
+ fmdsp_track_without_key(fmdsp, work, track, t, TRACK_H_S*it, vram);
for (int i = 0; i < KEY_OCTAVES; i++) {
vramblit(vram, KEY_X+KEY_W*i, TRACK_H_S*it+KEY_Y,
s_key_bg + KEY_S_OFFSET, KEY_W, KEY_H_S);
@@ -630,7 +647,7 @@ static void fmdsp_update_13(struct fmdsp *fmdsp,
if (track->key >> 4 == i) {
vramblit_key(vram, KEY_X+KEY_W*i, TRACK_H_S*it+KEY_Y,
s_key_mask + KEY_S_OFFSET, KEY_W, KEY_H_S,
- track->key & 0xf, track->masked ? 8 : 6);
+ track->key & 0xf, fmdsp->masked[t] ? 8 : 6);
}
}
}
@@ -648,6 +665,20 @@ void fmdsp_update(struct fmdsp *fmdsp,
fmdsp_track_init_10(fmdsp, vram);
}
}
+ unsigned mask = opna_get_mask(opna);
+ fmdsp->masked[FMDRIVER_TRACK_FM_1] = mask & LIBOPNA_CHAN_FM_1;
+ fmdsp->masked[FMDRIVER_TRACK_FM_2] = mask & LIBOPNA_CHAN_FM_2;
+ fmdsp->masked[FMDRIVER_TRACK_FM_3] = mask & LIBOPNA_CHAN_FM_3;
+ fmdsp->masked[FMDRIVER_TRACK_FM_3_EX_1] = mask & LIBOPNA_CHAN_FM_3;
+ fmdsp->masked[FMDRIVER_TRACK_FM_3_EX_2] = mask & LIBOPNA_CHAN_FM_3;
+ fmdsp->masked[FMDRIVER_TRACK_FM_3_EX_3] = mask & LIBOPNA_CHAN_FM_3;
+ fmdsp->masked[FMDRIVER_TRACK_FM_4] = mask & LIBOPNA_CHAN_FM_4;
+ fmdsp->masked[FMDRIVER_TRACK_FM_5] = mask & LIBOPNA_CHAN_FM_5;
+ fmdsp->masked[FMDRIVER_TRACK_FM_6] = mask & LIBOPNA_CHAN_FM_6;
+ fmdsp->masked[FMDRIVER_TRACK_SSG_1] = mask & LIBOPNA_CHAN_SSG_1;
+ fmdsp->masked[FMDRIVER_TRACK_SSG_2] = mask & LIBOPNA_CHAN_SSG_2;
+ fmdsp->masked[FMDRIVER_TRACK_SSG_3] = mask & LIBOPNA_CHAN_SSG_3;
+ fmdsp->masked[FMDRIVER_TRACK_ADPCM] = mask & LIBOPNA_CHAN_ADPCM;
fmdsp->style_updated = false;
if (fmdsp->style == FMDSP_DISPSTYLE_13) {
fmdsp_update_13(fmdsp, work, opna, vram);
diff --git a/fmdsp/fmdsp.h b/fmdsp/fmdsp.h
index 4c2c528..9c196f1 100644
--- a/fmdsp/fmdsp.h
+++ b/fmdsp/fmdsp.h
@@ -4,6 +4,7 @@
#include <stdint.h>
#include <stdbool.h>
#include "font.h"
+#include "fmdriver/fmdriver.h"
#ifdef __cplusplus
extern "C" {
@@ -33,6 +34,7 @@ struct fmdsp {
const struct fmdsp_font *font98;
enum FMDSP_DISPSTYLE style;
bool style_updated;
+ bool masked[FMDRIVER_TRACK_NUM];
};
struct fmdriver_work;
diff --git a/fmdsp/fmdsp_sprites.h b/fmdsp/fmdsp_sprites.h
index ba1a3e9..de6c839 100644
--- a/fmdsp/fmdsp_sprites.h
+++ b/fmdsp/fmdsp_sprites.h
@@ -44,6 +44,16 @@ enum {
PLAYING_Y = 324,
PLAYING_W = 72,
PLAYING_H = 9,
+ FILEBAR_X = 80,
+ FILEBAR_MUSIC_X = FILEBAR_X + 5,
+ FILEBAR_FILE_X = FILEBAR_MUSIC_X + 26,
+ FILEBAR_W = 2,
+ FILEBAR_H = 7,
+ FILEBAR_TRI_X = FILEBAR_FILE_X + 22,
+ FILEBAR_TRI_Y = PLAYING_Y+4,
+ FILEBAR_TRI_W = 3,
+ FILEBAR_TRI_H = 3,
+ FILEBAR_FILENAME_X = FILEBAR_TRI_X + 8,
};
enum {
@@ -188,7 +198,7 @@ static const uint8_t s_palettes[PALETTE_NUM][FMDSP_PALETTE_COLORS*3] = {
#undef LCD
-static const uint8_t s_num[10][NUM_W*NUM_H] = {
+static const uint8_t s_num[11][NUM_W*NUM_H] = {
{
0, 0, 0, 2, 2, 2, 0, 0,
0, 0, 2, 0, 0, 0, 3, 0,
@@ -318,6 +328,19 @@ static const uint8_t s_num[10][NUM_W*NUM_H] = {
0, 3, 0, 0, 0, 2, 0, 0,
0, 3, 0, 0, 0, 2, 0, 0,
0, 0, 2, 2, 2, 0, 0, 0,
+ },
+ {
+ 0, 0, 0, 3, 3, 3, 0, 0,
+ 0, 0, 3, 0, 0, 0, 3, 0,
+ 0, 0, 3, 0, 0, 0, 3, 0,
+ 0, 0, 3, 0, 0, 0, 3, 0,
+ 0, 0, 3, 0, 0, 0, 3, 0,
+ 0, 0, 0, 3, 3, 0, 0, 0,
+ 0, 3, 0, 0, 0, 3, 0, 0,
+ 0, 3, 0, 0, 0, 3, 0, 0,
+ 0, 3, 0, 0, 0, 3, 0, 0,
+ 0, 3, 0, 0, 0, 3, 0, 0,
+ 0, 0, 3, 3, 3, 0, 0, 0,
}
};
static const uint8_t s_key_bg[KEY_W*KEY_H] = {
@@ -419,3 +442,18 @@ static const uint8_t s_playing[PLAYING_W*PLAYING_H] = {
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
};
+static const uint8_t s_filebar[FILEBAR_W*FILEBAR_H] = {
+ 2, 2,
+ 2, 2,
+ 2, 2,
+ 2, 2,
+ 2, 2,
+ 2, 2,
+ 2, 2,
+};
+
+static const uint8_t s_filebar_tri[FILEBAR_TRI_W*FILEBAR_TRI_H] = {
+ 2, 0, 0,
+ 2, 2, 0,
+ 2, 2, 2,
+};
diff --git a/fmdsp/font.h b/fmdsp/font.h
index 0176c80..ec39ed3 100644
--- a/fmdsp/font.h
+++ b/fmdsp/font.h
@@ -69,6 +69,7 @@ enum {
void fmdsp_font_from_font_rom(struct fmdsp_font *font, const void *data);
extern const struct fmdsp_font font_fmdsp_small;
+extern const struct fmdsp_font font_fmdsp_medium;
#ifdef __cplusplus
}
diff --git a/fmdsp/font_fmdsp_medium_data.h b/fmdsp/font_fmdsp_medium_data.h
new file mode 100644
index 0000000..11d0bb5
--- /dev/null
+++ b/fmdsp/font_fmdsp_medium_data.h
@@ -0,0 +1,174 @@
+static const unsigned char fmdsp_medium_dat[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x20, 0x20, 0x20, 0x00, 0x20, 0x20, 0x00, 0x50, 0x50, 0xa0, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x50, 0x50, 0xf8, 0x50, 0xf8, 0x50, 0x50, 0x00,
+ 0x20, 0x78, 0xa0, 0x70, 0x28, 0xf0, 0x20, 0x00, 0x48, 0xa8, 0x50, 0x20,
+ 0x50, 0xa8, 0x90, 0x00, 0x60, 0x90, 0xa0, 0x40, 0xa8, 0x90, 0x68, 0x00,
+ 0x20, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x40, 0x40,
+ 0x40, 0x20, 0x10, 0x00, 0x80, 0x40, 0x20, 0x20, 0x20, 0x40, 0x80, 0x00,
+ 0x00, 0xa8, 0x70, 0x20, 0x70, 0xa8, 0x00, 0x00, 0x00, 0x20, 0x20, 0xf8,
+ 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x20, 0x40,
+ 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x60, 0x60, 0x00, 0x10, 0x10, 0x20, 0x20, 0x20, 0x40, 0x40, 0x00,
+ 0x70, 0x88, 0x98, 0xa8, 0xc8, 0x88, 0x70, 0x00, 0x20, 0x60, 0x20, 0x20,
+ 0x20, 0x20, 0x70, 0x00, 0x70, 0x88, 0x08, 0x10, 0x20, 0x40, 0xf8, 0x00,
+ 0x70, 0x88, 0x08, 0x30, 0x08, 0x88, 0x70, 0x00, 0x10, 0x30, 0x50, 0x90,
+ 0xf8, 0x10, 0x10, 0x00, 0xf8, 0x80, 0x80, 0xf0, 0x08, 0x88, 0x70, 0x00,
+ 0x70, 0x80, 0x80, 0xf0, 0x88, 0x88, 0x70, 0x00, 0xf8, 0x08, 0x10, 0x20,
+ 0x20, 0x20, 0x20, 0x00, 0x70, 0x88, 0x88, 0x70, 0x88, 0x88, 0x70, 0x00,
+ 0x70, 0x88, 0x88, 0x78, 0x08, 0x88, 0x70, 0x00, 0x00, 0x30, 0x30, 0x00,
+ 0x30, 0x30, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x10, 0x20,
+ 0x08, 0x10, 0x20, 0x40, 0x20, 0x10, 0x08, 0x00, 0x00, 0x00, 0xf8, 0x00,
+ 0xf8, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x20, 0x40, 0x80, 0x00,
+ 0x70, 0x88, 0x88, 0x10, 0x20, 0x00, 0x20, 0x00, 0x70, 0x88, 0x98, 0xa8,
+ 0x98, 0x80, 0x78, 0x00, 0x70, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88, 0x00,
+ 0xf0, 0x88, 0x88, 0xf0, 0x88, 0x88, 0xf0, 0x00, 0x70, 0x88, 0x80, 0x80,
+ 0x80, 0x88, 0x70, 0x00, 0xf0, 0x88, 0x88, 0x88, 0x88, 0x88, 0xf0, 0x00,
+ 0x78, 0x80, 0x80, 0xf0, 0x80, 0x80, 0x78, 0x00, 0x78, 0x80, 0x80, 0xf0,
+ 0x80, 0x80, 0x80, 0x00, 0x78, 0x80, 0x80, 0xb8, 0x88, 0x88, 0x78, 0x00,
+ 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88, 0x88, 0x00, 0x70, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x70, 0x00, 0x08, 0x08, 0x08, 0x08, 0x88, 0x88, 0x70, 0x00,
+ 0x88, 0x90, 0xa0, 0xc0, 0xa0, 0x90, 0x88, 0x00, 0x80, 0x80, 0x80, 0x80,
+ 0x80, 0x80, 0x78, 0x00, 0x88, 0xd8, 0xa8, 0x88, 0x88, 0x88, 0x88, 0x00,
+ 0x88, 0xc8, 0xa8, 0x98, 0x88, 0x88, 0x88, 0x00, 0x70, 0x88, 0x88, 0x88,
+ 0x88, 0x88, 0x70, 0x00, 0xf0, 0x88, 0x88, 0x88, 0xf0, 0x80, 0x80, 0x00,
+ 0x70, 0x88, 0x88, 0x88, 0xa8, 0x90, 0x68, 0x00, 0xf0, 0x88, 0x88, 0x90,
+ 0xe0, 0x90, 0x88, 0x00, 0x78, 0x80, 0x80, 0x70, 0x08, 0x08, 0xf0, 0x00,
+ 0xf8, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x88, 0x88, 0x88, 0x88,
+ 0x88, 0x88, 0x70, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x50, 0x20, 0x00,
+ 0x88, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0x50, 0x00, 0x88, 0x88, 0x50, 0x20,
+ 0x50, 0x88, 0x88, 0x00, 0x88, 0x88, 0x50, 0x20, 0x20, 0x20, 0x20, 0x00,
+ 0xf8, 0x08, 0x10, 0x20, 0x40, 0x80, 0xf8, 0x00, 0x30, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x30, 0x00, 0x40, 0x40, 0x20, 0x20, 0x20, 0x10, 0x10, 0x00,
+ 0x60, 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x40, 0xa0, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00,
+ 0x40, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x88, 0x88, 0x88,
+ 0xf8, 0x88, 0x88, 0x00, 0xf0, 0x88, 0x88, 0xf0, 0x88, 0x88, 0xf0, 0x00,
+ 0x70, 0x88, 0x80, 0x80, 0x80, 0x88, 0x70, 0x00, 0xf0, 0x88, 0x88, 0x88,
+ 0x88, 0x88, 0xf0, 0x00, 0x78, 0x80, 0x80, 0xf0, 0x80, 0x80, 0x78, 0x00,
+ 0x78, 0x80, 0x80, 0xf0, 0x80, 0x80, 0x80, 0x00, 0x78, 0x80, 0x80, 0xb8,
+ 0x88, 0x88, 0x78, 0x00, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88, 0x88, 0x00,
+ 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70, 0x00, 0x08, 0x08, 0x08, 0x08,
+ 0x88, 0x88, 0x70, 0x00, 0x88, 0x90, 0xa0, 0xc0, 0xa0, 0x90, 0x88, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x78, 0x00, 0x88, 0xd8, 0xa8, 0x88,
+ 0x88, 0x88, 0x88, 0x00, 0x88, 0xc8, 0xa8, 0x98, 0x88, 0x88, 0x88, 0x00,
+ 0x70, 0x88, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, 0xf0, 0x88, 0x88, 0x88,
+ 0xf0, 0x80, 0x80, 0x00, 0x70, 0x88, 0x88, 0x88, 0xa8, 0x90, 0x68, 0x00,
+ 0xf0, 0x88, 0x88, 0x90, 0xe0, 0x90, 0x88, 0x00, 0x78, 0x80, 0x80, 0x70,
+ 0x08, 0x08, 0xf0, 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,
+ 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, 0x88, 0x88, 0x88, 0x88,
+ 0x88, 0x50, 0x20, 0x00, 0x88, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0x50, 0x00,
+ 0x88, 0x88, 0x50, 0x20, 0x50, 0x88, 0x88, 0x00, 0x88, 0x88, 0x50, 0x20,
+ 0x20, 0x20, 0x20, 0x00, 0xf8, 0x08, 0x10, 0x20, 0x40, 0x80, 0xf8, 0x00,
+ 0x10, 0x20, 0x20, 0x40, 0x20, 0x20, 0x10, 0x00, 0x20, 0x20, 0x20, 0x00,
+ 0x20, 0x20, 0x20, 0x00, 0x40, 0x20, 0x20, 0x10, 0x20, 0x20, 0x40, 0x00,
+ 0x40, 0xa8, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xa0, 0x40, 0x00,
+ 0x70, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
+ 0x10, 0x10, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00,
+ 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0xf8, 0x08, 0xf8, 0x08,
+ 0x08, 0x10, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x10, 0x60, 0x40, 0x80, 0x00,
+ 0x00, 0x00, 0x10, 0x20, 0xe0, 0x20, 0x20, 0x00, 0x00, 0x00, 0x20, 0xf8,
+ 0x88, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70, 0x20, 0x20, 0xf8, 0x00,
+ 0x00, 0x00, 0x10, 0xf8, 0x30, 0x50, 0x90, 0x00, 0x00, 0x00, 0x40, 0xf8,
+ 0x48, 0x50, 0x40, 0x00, 0x00, 0x00, 0x00, 0x70, 0x10, 0x10, 0xf8, 0x00,
+ 0x00, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0x00, 0x00, 0xa8, 0xa8,
+ 0x08, 0x10, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00,
+ 0xf8, 0x08, 0x28, 0x30, 0x20, 0x40, 0x80, 0x00, 0x08, 0x10, 0x20, 0x60,
+ 0xa0, 0x20, 0x20, 0x00, 0x20, 0xf8, 0x88, 0x08, 0x08, 0x10, 0x60, 0x00,
+ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0xf8, 0x00, 0x10, 0xf8, 0x30, 0x30,
+ 0x50, 0x50, 0x90, 0x00, 0x20, 0xf8, 0x28, 0x28, 0x48, 0x48, 0x90, 0x00,
+ 0x20, 0xf8, 0x20, 0x20, 0xf8, 0x20, 0x20, 0x00, 0x78, 0x48, 0x48, 0x88,
+ 0x08, 0x10, 0x60, 0x00, 0x40, 0x78, 0x50, 0x90, 0x10, 0x20, 0x40, 0x00,
+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x50, 0xf8, 0x50, 0x50,
+ 0x10, 0x20, 0xc0, 0x00, 0x48, 0x28, 0x88, 0x48, 0x08, 0x10, 0xe0, 0x00,
+ 0xf8, 0x08, 0x08, 0x10, 0x20, 0x50, 0x88, 0x00, 0x40, 0xf8, 0x48, 0x50,
+ 0x40, 0x40, 0x38, 0x00, 0x88, 0x88, 0x48, 0x08, 0x08, 0x10, 0xe0, 0x00,
+ 0x78, 0x48, 0xc8, 0x28, 0x10, 0x20, 0xc0, 0x00, 0x10, 0x60, 0x20, 0xf8,
+ 0x20, 0x40, 0x80, 0x00, 0xa8, 0xa8, 0xa8, 0x08, 0x08, 0x10, 0xe0, 0x00,
+ 0xf8, 0x00, 0xf8, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x20, 0xf8, 0x20, 0x20, 0x20, 0x40, 0x80, 0x00,
+ 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0xf8, 0x08, 0x08, 0x50,
+ 0x20, 0x50, 0x88, 0x00, 0x20, 0xf8, 0x10, 0x20, 0x70, 0xa8, 0x20, 0x00,
+ 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x40, 0x00, 0x50, 0x50, 0x50, 0x88,
+ 0x88, 0x88, 0x88, 0x00, 0x80, 0xf8, 0x80, 0x80, 0x80, 0x40, 0x38, 0x00,
+ 0xf8, 0x08, 0x08, 0x08, 0x08, 0x10, 0x60, 0x00, 0x00, 0x40, 0xa0, 0x90,
+ 0x08, 0x00, 0x00, 0x00, 0x20, 0xf8, 0x20, 0xa8, 0xa8, 0xa8, 0x20, 0x00,
+ 0xf8, 0x08, 0x10, 0xa0, 0x40, 0x20, 0x10, 0x00, 0x70, 0x08, 0x70, 0x08,
+ 0x00, 0x70, 0x08, 0x00, 0x20, 0x20, 0x40, 0x40, 0x88, 0x88, 0xf8, 0x00,
+ 0x08, 0x08, 0x48, 0x30, 0x10, 0x28, 0xc0, 0x00, 0xf8, 0x40, 0x40, 0xf8,
+ 0x40, 0x40, 0x38, 0x00, 0x40, 0xf8, 0x48, 0x40, 0x20, 0x20, 0x10, 0x00,
+ 0xf0, 0x10, 0x10, 0x10, 0x10, 0x10, 0xf8, 0x00, 0xf8, 0x08, 0x08, 0x78,
+ 0x08, 0x08, 0xf8, 0x00, 0xf8, 0x00, 0xf8, 0x08, 0x08, 0x10, 0x60, 0x00,
+ 0x48, 0x48, 0x48, 0x48, 0x08, 0x10, 0x60, 0x00, 0xa0, 0xa0, 0xa0, 0xa0,
+ 0xa0, 0xa8, 0xb0, 0x00, 0x80, 0x80, 0x80, 0x88, 0x90, 0xa0, 0xc0, 0x00,
+ 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, 0xf8, 0x00, 0xf8, 0x88, 0x08, 0x08,
+ 0x08, 0x10, 0x60, 0x00, 0xc8, 0x28, 0x08, 0x08, 0x08, 0x10, 0xe0, 0x00,
+ 0xa0, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xa0, 0xe0, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+static unsigned int fmdsp_medium_2_dat_len = 2048;
diff --git a/fmdsp/font_fmdsp_small.c b/fmdsp/font_fmdsp_small.c
index d25f760..6f89797 100644
--- a/fmdsp/font_fmdsp_small.c
+++ b/fmdsp/font_fmdsp_small.c
@@ -1,6 +1,7 @@
#include "font.h"
#include "font_fmdsp_small_data.h"
+#include "font_fmdsp_medium_data.h"
static const void *fmdsp_font_get(const struct fmdsp_font *font,
uint16_t addr, enum fmdsp_font_type type) {
@@ -12,3 +13,14 @@ static const void *fmdsp_font_get(const struct fmdsp_font *font,
const struct fmdsp_font font_fmdsp_small = {
fmdsp_font_get, 0, 5, 6
};
+
+static const void *fmdsp_font_medium_get(const struct fmdsp_font *font,
+ uint16_t addr, enum fmdsp_font_type type) {
+ if (type != FMDSP_FONT_ANK) return 0;
+ if (addr >> 8) return 0;
+ return &fmdsp_medium_dat[addr*8];
+}
+
+const struct fmdsp_font font_fmdsp_medium = {
+ fmdsp_font_medium_get, 0, 6, 8
+};
diff --git a/fmdsp/font_fmdsp_small_data.h b/fmdsp/font_fmdsp_small_data.h
index a9a0fb9..3702831 100644
--- a/fmdsp/font_fmdsp_small_data.h
+++ b/fmdsp/font_fmdsp_small_data.h
@@ -1,4 +1,4 @@
-static unsigned char fontdat[] = {
+static const unsigned char fontdat[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -128,4 +128,4 @@ static unsigned char fontdat[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
-unsigned int fmdsp_dat_len = 1536;
+static unsigned int fmdsp_dat_len = 1536;