diff options
| author | Takamichi Horikawa <takamichiho@gmail.com> | 2017-03-17 22:31:59 +0900 | 
|---|---|---|
| committer | Takamichi Horikawa <takamichiho@gmail.com> | 2017-03-17 22:31:59 +0900 | 
| commit | fa75caf9f74bb5ad69cc953d52ba26667b7d9562 (patch) | |
| tree | 93aedc0957c4d1e9024eff90e08bc6e8a4fb4a90 | |
| parent | 10aa49dcf1e28f1cb7365123644196ad6a31a5e2 (diff) | |
fmdsp: display current filename
| -rw-r--r-- | fmdriver/fmdriver.h | 3 | ||||
| -rw-r--r-- | fmdriver/fmdriver_pmd.c | 40 | ||||
| -rw-r--r-- | fmdsp/fmdsp.c | 57 | ||||
| -rw-r--r-- | fmdsp/fmdsp.h | 2 | ||||
| -rw-r--r-- | fmdsp/fmdsp_sprites.h | 40 | ||||
| -rw-r--r-- | fmdsp/font.h | 1 | ||||
| -rw-r--r-- | fmdsp/font_fmdsp_medium_data.h | 174 | ||||
| -rw-r--r-- | fmdsp/font_fmdsp_small.c | 12 | ||||
| -rw-r--r-- | fmdsp/font_fmdsp_small_data.h | 4 | 
9 files changed, 310 insertions, 23 deletions
| diff --git a/fmdriver/fmdriver.h b/fmdriver/fmdriver.h index 93d2f26..84234ee 100644 --- a/fmdriver/fmdriver.h +++ b/fmdriver/fmdriver.h @@ -44,7 +44,6 @@ enum fmdriver_track_info {  struct fmdriver_track_status {    bool playing; -  bool masked;    enum fmdriver_track_info info;    uint8_t ticks;    uint8_t ticks_left; @@ -84,6 +83,8 @@ struct fmdriver_work {    // CP932 encoded    //const char *title;    char comment[3][FMDRIVER_TITLE_BUFLEN]; +  // only single-byte uppercase cp932 +  char filename[FMDRIVER_TITLE_BUFLEN];    // driver status (for display)    uint8_t ssg_noise_freq;    struct fmdriver_track_status track_status[FMDRIVER_TRACK_NUM]; diff --git a/fmdriver/fmdriver_pmd.c b/fmdriver/fmdriver_pmd.c index 76a97ba..19f7e21 100644 --- a/fmdriver/fmdriver_pmd.c +++ b/fmdriver/fmdriver_pmd.c @@ -1,5 +1,6 @@  #include "fmdriver_pmd.h"  #include "fmdriver_common.h" +#include <stddef.h>  enum {    SSG_ENV_STATE_OLD_AL, @@ -1058,6 +1059,8 @@ static void pmd_part_tone_fm(    pmd_part_tone_tl_update(part, toneptr);  } +#include "pmd_ssgeff.h" +  // 0d28, 0d09  static void pmd_ssg_effect(    struct fmdriver_work *work, @@ -4261,12 +4264,37 @@ static void pmd_part_proc_opnarhythm(    }  } -// 0149 +// 05cf +static void pmd_part_off_adpcm( +  struct pmd_part *part +) { +  if (part->ssg_env_state_old == SSG_ENV_STATE_OLD_NEW) { +    if (part->ssg_env_state_new == SSG_ENV_STATE_NEW_RR) return; +  } else { +    if (part->ssg_env_state_old == SSG_ENV_STATE_OLD_RR) return; +  } +  // 05e2 +  // XXX +} + +// 0149 / 026c  static void pmd_part_proc_adpcm(    struct fmdriver_work *work,    struct driver_pmd *pmd,    struct pmd_part *part  ) { +  /* +  if (!part->ptr) return; +  part->proc_masked = pmd_part_masked(part); +  part->len_cnt--; +  if (!part->keystatus.off && !part->keystatus.off_mask) { +    if (part->len_cnt <= part->gate) { +      part->keystatus.off = true; +      part->keystatus.off_mask = true; +      // TODO: 05cf; +    } +  } +  */  }  // 079b @@ -4456,7 +4484,6 @@ static void pmd_work_status_update(      struct fmdriver_track_status *track = &work->track_status[t];      const struct pmd_part *part = &pmd->parts[pmd_track_map[t].ind];      track->playing = !part->loop.ended; -    track->masked = pmd_part_masked(part);      track->info = FMDRIVER_TRACK_INFO_NORMAL;      track->ticks = part->len;      track->ticks_left = part->len_cnt; @@ -4467,6 +4494,7 @@ static void pmd_work_status_update(      track->fmslotmask[3] = !(part->fm_slotmask & (1<<7));      track->tonenum = part->tonenum;      track->volume = part->vol; +    track->gate = part->gate;      int detune = part->detune;      if (detune > INT8_MAX) detune = INT8_MAX;      if (detune < INT8_MIN) detune = INT8_MIN; @@ -4573,7 +4601,7 @@ static const char *pmd_check_str(  ) {    uint16_t c = ptr;    while (pmd->datalen >= (c+1)) { -    if (!pmd->data[c++]) return &pmd->data[ptr]; +    if (!pmd->data[c++]) return (const char *)&pmd->data[ptr];    }    return 0;  } @@ -4645,15 +4673,15 @@ void pmd_init(struct fmdriver_work *work,    }    const char *pcmfile = pmd_get_memo(pmd, -2);    if (pcmfile) { -    pmd_filenamecopy(&pmd->ppzfile, pcmfile); +    pmd_filenamecopy(pmd->ppzfile, pcmfile);    }    pcmfile = pmd_get_memo(pmd, -1);    if (pcmfile) { -    pmd_filenamecopy(&pmd->ppsfile, pcmfile); +    pmd_filenamecopy(pmd->ppsfile, pcmfile);    }    pcmfile = pmd_get_memo(pmd, 0);    if (pcmfile) { -    pmd_filenamecopy(&pmd->ppcfile, pcmfile); +    pmd_filenamecopy(pmd->ppcfile, pcmfile);    }  } 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; | 
