// license:BSD-3-Clause // copyright-holders:Sandro Ronco /******************************************************************** Support for Canon X-07 cassette images ********************************************************************/ #include "x07_cas.h" #include #define WAVEENTRY_LOW -32768 #define WAVEENTRY_HIGH 32767 #define X07_WAV_FREQUENCY 4800 #define X07_TIMER_FREQUENCY 1200 #define X07_BIT_LENGTH (X07_WAV_FREQUENCY/X07_TIMER_FREQUENCY) #define X07_HEADER_BYTES 16 // image size static int x07_image_size; // FIXME: global variable prevents multiple instances static int x07_put_samples(int16_t *buffer, int sample_pos, int count, int level) { if (buffer) { for (int i=0; i>i) & 0x01); /* stop */ samples += x07_output_bit (buffer, sample_pos + samples, 1); samples += x07_output_bit (buffer, sample_pos + samples, 1); samples += x07_output_bit (buffer, sample_pos + samples, 1); return samples; } static int x07_handle_cassette(int16_t *buffer, const uint8_t *bytes) { int sample_count = 0; int img_start = 0; /* start */ for (int i=0; ilegacy_identify(opts, &x07_legacy_fill_wave); } static cassette_image::error x07_cassette_load(cassette_image *cassette) { return cassette->legacy_construct(&x07_legacy_fill_wave); } static const cassette_image::Format x07_cassette_image_format = { "k7,lst,cas", x07_cassette_identify, x07_cassette_load, nullptr }; CASSETTE_FORMATLIST_START(x07_cassette_formats) CASSETTE_FORMAT(x07_cassette_image_format) CASSETTE_FORMATLIST_END