diff options
Diffstat (limited to 'src/lib/formats/kim1_cas.cpp')
-rw-r--r-- | src/lib/formats/kim1_cas.cpp | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/src/lib/formats/kim1_cas.cpp b/src/lib/formats/kim1_cas.cpp index 1bfccc7f8a0..de2ee022632 100644 --- a/src/lib/formats/kim1_cas.cpp +++ b/src/lib/formats/kim1_cas.cpp @@ -1,14 +1,16 @@ // license:BSD-3-Clause // copyright-holders:Wilbert Pol -#include <assert.h> - #include "kim1_cas.h" +#include "multibyte.h" + +#include <cstring> + #define SMPLO -32768 #define SMPHI 32767 -static int cas_size; +static int cas_size; // FIXME: global variable prevents multiple instances static inline int kim1_output_signal( int16_t *buffer, int sample_pos, int high ) @@ -87,8 +89,8 @@ static int kim1_handle_kim(int16_t *buffer, const uint8_t *casdata) if ( cas_size < 9 ) return -1; if ( memcmp( casdata, "KIM1", 4 ) ) return -1; - address = casdata[4] | ( casdata[5] << 8 ); - size = casdata[6] | ( casdata[7] << 8 ); + address = get_u16le( &casdata[4] ); + size = get_u16le( &casdata[6] ); file_id = casdata[8]; data_pos = 9; @@ -143,7 +145,7 @@ static int kim1_handle_kim(int16_t *buffer, const uint8_t *casdata) /******************************************************************* Generate samples for the tape image ********************************************************************/ -static int kim1_kim_fill_wave(int16_t *buffer, int sample_count, uint8_t *bytes) +static int kim1_kim_fill_wave(int16_t *buffer, int sample_count, const uint8_t *bytes, int) { return kim1_handle_kim( buffer, bytes ); } @@ -159,7 +161,7 @@ static int kim1_kim_to_wav_size(const uint8_t *casdata, int caslen) return kim1_handle_kim( nullptr, casdata ); } -static const struct CassetteLegacyWaveFiller kim1_kim_legacy_fill_wave = +static const cassette_image::LegacyWaveFiller kim1_kim_legacy_fill_wave = { kim1_kim_fill_wave, /* fill_wave */ -1, /* chunk_size */ @@ -171,19 +173,19 @@ static const struct CassetteLegacyWaveFiller kim1_kim_legacy_fill_wave = }; -static cassette_image::error kim1_kim_identify(cassette_image *cassette, struct CassetteOptions *opts) +static cassette_image::error kim1_kim_identify(cassette_image *cassette, cassette_image::Options *opts) { - return cassette_legacy_identify(cassette, opts, &kim1_kim_legacy_fill_wave); + return cassette->legacy_identify(opts, &kim1_kim_legacy_fill_wave); } static cassette_image::error kim1_kim_load(cassette_image *cassette) { - return cassette_legacy_construct(cassette, &kim1_kim_legacy_fill_wave); + return cassette->legacy_construct(&kim1_kim_legacy_fill_wave); } -static const struct CassetteFormat kim1_kim_format = +static const cassette_image::Format kim1_kim_format = { "kim,kim1", kim1_kim_identify, |