static int emod_load(struct module_data *m, HIO_HANDLE * f, const int start) { iff_handle handle; int ret; LOAD_INIT(); hio_read32b(f); /* FORM */ hio_read32b(f); hio_read32b(f); /* EMOD */ handle = iff_new(); if (handle == NULL) return -1; /* IFF chunk IDs */ ret = iff_register(handle, "EMIC", get_emic); ret |= iff_register(handle, "PATT", get_patt); ret |= iff_register(handle, "8SMP", get_8smp); if (ret != 0) return -1; /* Load IFF chunks */ if (iff_load(handle, m, f, NULL) < 0) { iff_release(handle); return -1; } iff_release(handle); return 0; }
static int emod_load(struct module_data *m, xmp_file f, const int start) { iff_handle handle; LOAD_INIT(); read32b(f); /* FORM */ read32b(f); read32b(f); /* EMOD */ handle = iff_new(); if (handle == NULL) return -1; /* IFF chunk IDs */ iff_register(handle, "EMIC", get_emic); iff_register(handle, "PATT", get_patt); iff_register(handle, "8SMP", get_8smp); /* Load IFF chunks */ while (!xmp_feof(f)) { iff_chunk(handle, m, f, NULL); } iff_release(handle); return 0; }
static int dbm_load(struct module_data *m, FILE *f, const int start) { struct xmp_module *mod = &m->mod; iff_handle handle; char name[44]; uint16 version; int i; struct local_data data; LOAD_INIT(); read32b(f); /* DBM0 */ data.have_song = 0; version = read16b(f); fseek(f, 10, SEEK_CUR); fread(name, 1, 44, f); handle = iff_new(); if (handle == NULL) return -1; /* IFF chunk IDs */ iff_register(handle, "INFO", get_info); iff_register(handle, "SONG", get_song); iff_register(handle, "INST", get_inst); iff_register(handle, "PATT", get_patt); iff_register(handle, "SMPL", get_smpl); iff_register(handle, "VENV", get_venv); strncpy(mod->name, name, XMP_NAME_SIZE); snprintf(mod->type, XMP_NAME_SIZE, "DigiBooster Pro %d.%02x DBM0", version >> 8, version & 0xff); MODULE_INFO(); /* Load IFF chunks */ while (!feof(f)) { iff_chunk(handle, m, f, &data); } iff_release(handle); for (i = 0; i < mod->chn; i++) mod->xxc[i].pan = 0x80; return 0; }
int main(int argc, char *argv[]) { if(argc < 3) { fprintf(stderr, "Usage:\n%s fontdesc.def outfile.iff\n", argv[0]); return 0; } def = file_new(argv[1], 0); if(!def) { fprintf(stderr, "Can't find font definition '%s'\n", argv[1]); return 1; } file_load(def); if(!def->buf) { file_free(def); fprintf(stderr, "Not enough memory to load %s\n", argv[1]); return 2; } if(!parse_def()) { file_free(def); return 1; } font = iff_new(argv[2], MAKE_ID('F','O','N','T')); if(!font) { file_free(def); } iff_newchunk(font, MAKE_ID('N','A','M','E')); iff_writechunkdata(font, name, strlen(name)+1); iff_endchunk(font); iff_newchunk(font, MAKE_ID('F','I','L','E')); iff_writechunkdata(font, file, strlen(file)+1); iff_endchunk(font); iff_newchunk(font, MAKE_ID('A','U','T','H')); iff_writechunkdata(font, author, strlen(author)+1); iff_endchunk(font); parse_letters(); iff_close(font); file_free(def); return 0; }
static int pt3_load(struct module_data *m, HIO_HANDLE *f, const int start) { iff_handle handle; char buf[20]; int ret; LOAD_INIT(); hio_read32b(f); /* FORM */ hio_read32b(f); /* size */ hio_read32b(f); /* MODL */ hio_read32b(f); /* VERS */ hio_read32b(f); /* VERS size */ hio_read(buf, 1, 10, f); set_type(m, "%-6.6s IFFMODL", buf + 4); handle = iff_new(); if (handle == NULL) return -1; /* IFF chunk IDs */ ret = iff_register(handle, "INFO", get_info); ret |= iff_register(handle, "CMNT", get_cmnt); ret |= iff_register(handle, "PTDT", get_ptdt); if (ret != 0) return -1; iff_set_quirk(handle, IFF_FULL_CHUNK_SIZE); /* Load IFF chunks */ if (iff_load(handle, m, f, NULL) < 0) { iff_release(handle); return -1; } iff_release(handle); /* Sanity check */ if (m->mod.smp <= 0) { return -1; } return 0; }
static int okt_load(struct module_data *m, HIO_HANDLE * f, const int start) { iff_handle handle; struct local_data data; int ret; LOAD_INIT(); hio_seek(f, 8, SEEK_CUR); /* OKTASONG */ handle = iff_new(); if (handle == NULL) return -1; memset(&data, 0, sizeof(struct local_data)); /* IFF chunk IDs */ ret = iff_register(handle, "CMOD", get_cmod); ret |= iff_register(handle, "SAMP", get_samp); ret |= iff_register(handle, "SPEE", get_spee); ret |= iff_register(handle, "SLEN", get_slen); ret |= iff_register(handle, "PLEN", get_plen); ret |= iff_register(handle, "PATT", get_patt); ret |= iff_register(handle, "PBOD", get_pbod); ret |= iff_register(handle, "SBOD", get_sbod); if (ret != 0) return -1; set_type(m, "Oktalyzer"); MODULE_INFO(); /* Load IFF chunks */ if (iff_load(handle, m, f, &data) < 0) { iff_release(handle); return -1; } iff_release(handle); return 0; }
static int okt_load(struct module_data *m, xmp_file f, const int start) { iff_handle handle; struct local_data data; LOAD_INIT(); xmp_fseek(f, 8, SEEK_CUR); /* OKTASONG */ handle = iff_new(); if (handle == NULL) return -1; memset(&data, 0, sizeof(struct local_data)); /* IFF chunk IDs */ iff_register(handle, "CMOD", get_cmod); iff_register(handle, "SAMP", get_samp); iff_register(handle, "SPEE", get_spee); iff_register(handle, "SLEN", get_slen); iff_register(handle, "PLEN", get_plen); iff_register(handle, "PATT", get_patt); iff_register(handle, "PBOD", get_pbod); iff_register(handle, "SBOD", get_sbod); set_type(m, "Oktalyzer"); MODULE_INFO(); /* Load IFF chunks */ while (!xmp_feof(f)) { iff_chunk(handle, m, f, &data); } iff_release(handle); return 0; }
static int pt3_load(struct module_data *m, FILE *f, const int start) { iff_handle handle; char buf[20]; LOAD_INIT(); read32b(f); /* FORM */ read32b(f); /* size */ read32b(f); /* MODL */ read32b(f); /* VERS */ read32b(f); /* VERS size */ fread(buf, 1, 10, f); set_type(m, "%-6.6s IFFMODL", buf + 4); handle = iff_new(); if (handle == NULL) return -1; /* IFF chunk IDs */ iff_register(handle, "INFO", get_info); iff_register(handle, "CMNT", get_cmnt); iff_register(handle, "PTDT", get_ptdt); iff_set_quirk(handle, IFF_FULL_CHUNK_SIZE); /* Load IFF chunks */ while (!feof(f)) iff_chunk(handle, m, f, NULL); iff_release(handle); return 0; }
static int gal4_load(struct module_data *m, HIO_HANDLE *f, const int start) { struct xmp_module *mod = &m->mod; iff_handle handle; int i, ret, offset; struct local_data data; LOAD_INIT(); hio_read32b(f); /* Skip RIFF */ hio_read32b(f); /* Skip size */ hio_read32b(f); /* Skip AM */ offset = hio_tell(f); mod->smp = mod->ins = 0; handle = iff_new(); if (handle == NULL) return -1; /* IFF chunk IDs */ ret = iff_register(handle, "MAIN", get_main); ret |= iff_register(handle, "ORDR", get_ordr); ret |= iff_register(handle, "PATT", get_patt_cnt); ret |= iff_register(handle, "INST", get_inst_cnt); if (ret != 0) return -1; iff_set_quirk(handle, IFF_LITTLE_ENDIAN); iff_set_quirk(handle, IFF_CHUNK_TRUNC4); /* Load IFF chunks */ if (iff_load(handle, m, f, &data) < 0) { iff_release(handle); return -1; } iff_release(handle); mod->trk = mod->pat * mod->chn; MODULE_INFO(); if (instrument_init(mod) < 0) return -1; if (pattern_init(mod) < 0) return -1; D_(D_INFO "Stored patterns: %d\n", mod->pat); D_(D_INFO "Stored samples : %d ", mod->smp); hio_seek(f, start + offset, SEEK_SET); data.snum = 0; handle = iff_new(); if (handle == NULL) return -1; /* IFF chunk IDs */ ret = iff_register(handle, "PATT", get_patt); ret |= iff_register(handle, "INST", get_inst); if (ret != 0) return -1; iff_set_quirk(handle, IFF_LITTLE_ENDIAN); iff_set_quirk(handle, IFF_CHUNK_TRUNC4); /* Load IFF chunks */ if (iff_load(handle, m, f, &data) < 0) { iff_release(handle); return -1; } iff_release(handle); /* Alloc missing patterns */ for (i = 0; i < mod->pat; i++) { if (mod->xxp[i] == NULL) { if (pattern_tracks_alloc(mod, i, 64) < 0) { return -1; } } } for (i = 0; i < mod->chn; i++) { mod->xxc[i].pan = 0x80; } m->quirk |= QUIRKS_FT2; m->read_event_type = READ_EVENT_FT2; return 0; }