diff options
Diffstat (limited to 'src/lib/formats/vg5k_cas.cpp')
-rw-r--r-- | src/lib/formats/vg5k_cas.cpp | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/src/lib/formats/vg5k_cas.cpp b/src/lib/formats/vg5k_cas.cpp index 898507e7139..724a4889229 100644 --- a/src/lib/formats/vg5k_cas.cpp +++ b/src/lib/formats/vg5k_cas.cpp @@ -5,17 +5,18 @@ Support for VG-5000 .k7 cassette images ********************************************************************/ -#include <assert.h> #include "vg5k_cas.h" +#include "multibyte.h" + #define SMPLO -32768 #define SILENCE 0 #define SMPHI 32767 -static int k7_size; +static int k7_size; // FIXME: global variable prevents multiple instances /******************************************************************* Generate one high-low cycle of sample data @@ -144,7 +145,7 @@ static int vg5k_handle_tap(int16_t *buffer, const uint8_t *casdata) else if (casdata[data_pos] == 0xd6) { /* data block size is defined in head block */ - block_size = (casdata[data_pos - 4] | casdata[data_pos - 3]<<8) + 20; + block_size = get_u16le(&casdata[data_pos - 4]) + 20; /* 10000 samples of silence before the data block */ sample_count += vg5k_cas_silence(buffer, sample_count, 10000); @@ -183,7 +184,7 @@ static int vg5k_handle_tap(int16_t *buffer, const uint8_t *casdata) /******************************************************************* Generate samples for the tape image ********************************************************************/ -static int vg5k_k7_fill_wave(int16_t *buffer, int sample_count, uint8_t *bytes) +static int vg5k_k7_fill_wave(int16_t *buffer, int sample_count, const uint8_t *bytes, int) { return vg5k_handle_tap(buffer, bytes); } @@ -200,7 +201,7 @@ static int vg5k_k7_to_wav_size(const uint8_t *casdata, int caslen) } -static const struct CassetteLegacyWaveFiller vg5k_legacy_fill_wave = +static const cassette_image::LegacyWaveFiller vg5k_legacy_fill_wave = { vg5k_k7_fill_wave, /* fill_wave */ -1, /* chunk_size */ @@ -211,19 +212,19 @@ static const struct CassetteLegacyWaveFiller vg5k_legacy_fill_wave = 0 /* trailer_samples */ }; -static cassette_image::error vg5k_k7_identify(cassette_image *cassette, struct CassetteOptions *opts) +static cassette_image::error vg5k_k7_identify(cassette_image *cassette, cassette_image::Options *opts) { - return cassette_legacy_identify(cassette, opts, &vg5k_legacy_fill_wave); + return cassette->legacy_identify(opts, &vg5k_legacy_fill_wave); } static cassette_image::error vg5k_k7_load(cassette_image *cassette) { - return cassette_legacy_construct(cassette, &vg5k_legacy_fill_wave); + return cassette->legacy_construct(&vg5k_legacy_fill_wave); } -static const struct CassetteFormat vg5k_k7_format = +static const cassette_image::Format vg5k_k7_format = { "k7", vg5k_k7_identify, @@ -234,4 +235,5 @@ static const struct CassetteFormat vg5k_k7_format = CASSETTE_FORMATLIST_START(vg5k_cassette_formats) CASSETTE_FORMAT(vg5k_k7_format) + CASSETTE_FORMAT(cassette_image::wavfile_format) CASSETTE_FORMATLIST_END |