Mercurial > repos > blastem
changeset 2044:460e14497120
zlib support in vgmplay
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 21 Sep 2021 23:03:18 -0700 |
parents | a61b47d5489e |
children | dbbf0100f249 |
files | dis.c vgmplay.c |
diffstat | 2 files changed, 39 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/dis.c Tue Mar 09 22:47:51 2021 -0800 +++ b/dis.c Tue Sep 21 23:03:18 2021 -0700 @@ -269,19 +269,21 @@ { *cur = (*cur >> 8) | (*cur << 8); } - uint32_t start = filebuf[2] << 16 | filebuf[3]; - uint32_t int_2 = filebuf[0x68/2] << 16 | filebuf[0x6A/2]; - uint32_t int_4 = filebuf[0x70/2] << 16 | filebuf[0x72/2]; - uint32_t int_6 = filebuf[0x78/2] << 16 | filebuf[0x7A/2]; - named_labels = add_label(named_labels, "start", start); - named_labels = add_label(named_labels, "int_2", int_2); - named_labels = add_label(named_labels, "int_4", int_4); - named_labels = add_label(named_labels, "int_6", int_6); - if (!def || !only) { - def = defer(start, def); - def = defer(int_2, def); - def = defer(int_4, def); - def = defer(int_6, def); + if (!address_off) { + uint32_t start = filebuf[2] << 16 | filebuf[3]; + uint32_t int_2 = filebuf[0x68/2] << 16 | filebuf[0x6A/2]; + uint32_t int_4 = filebuf[0x70/2] << 16 | filebuf[0x72/2]; + uint32_t int_6 = filebuf[0x78/2] << 16 | filebuf[0x7A/2]; + named_labels = add_label(named_labels, "start", start); + named_labels = add_label(named_labels, "int_2", int_2); + named_labels = add_label(named_labels, "int_4", int_4); + named_labels = add_label(named_labels, "int_6", int_6); + if (!def || !only) { + def = defer(start, def); + def = defer(int_2, def); + def = defer(int_4, def); + def = defer(int_6, def); + } } } uint16_t *encoded, *next;
--- a/vgmplay.c Tue Mar 09 22:47:51 2021 -0800 +++ b/vgmplay.c Tue Sep 21 23:03:18 2021 -0700 @@ -23,6 +23,25 @@ #define MCLKS_PER_Z80 15 #define MCLKS_PER_PSG (MCLKS_PER_Z80*16) + +#ifdef DISABLE_ZLIB +#define VGMFILE FILE* +#define vgmopen fopen +#define vgmread fread +#define vgmseek fseek +#define vgmgetc fgetc +#define vgmclose fclose +#else +#include "zlib/zlib.h" +#define VGMFILE gzFile +#define vgmopen gzopen +#define vgmread gzfread +#define vgmseek gzseek +#define vgmgetc gzgetc +#define vgmclose gzclose +#endif + + system_header *current_system; void system_request_exit(system_header *system, uint8_t force_release) @@ -120,17 +139,17 @@ psg_context p_context; psg_init(&p_context, MCLKS_NTSC, MCLKS_PER_PSG); - FILE * f = fopen(argv[1], "rb"); + VGMFILE * f = vgmopen(argv[1], "rb"); vgm_header header; - fread(&header, sizeof(header), 1, f); + vgmread(&header, sizeof(header), 1, f); if (header.version < 0x150 || !header.data_offset) { header.data_offset = 0xC; } - fseek(f, header.data_offset + 0x34, SEEK_SET); + vgmseek(f, header.data_offset + 0x34, SEEK_SET); uint32_t data_size = header.eof_offset + 4 - (header.data_offset + 0x34); uint8_t * data = malloc(data_size); - fread(data, 1, data_size, f); - fclose(f); + vgmread(data, 1, data_size, f); + vgmclose(f); uint32_t mclks_sample = MCLKS_NTSC / 44100; uint32_t loop_count = 2;