// license:BSD-3-Clause // copyright-holders:Robbbert /******************************************************************** Support for Goldstar FC-100 cassette images We don't actually have any info on the cassette frequencies, so it's all a guess. ********************************************************************/ #include "fc100_cas.h" #include #define WAVEENTRY_LOW -32768 #define WAVEENTRY_HIGH 32767 #define FC100_WAV_FREQUENCY 9600 #define FC100_HEADER_BYTES 16 // image size static int fc100_image_size; // FIXME: global variable prevents multiple instances static int fc100_put_samples(int16_t *buffer, int sample_pos, int count, int level) { if (buffer) { for (int i=0; i> i) & 1); /* stop */ for (i = 0; i<4; i++) samples += fc100_output_bit (buffer, sample_pos + samples, 1); return samples; } static int fc100_handle_cassette(int16_t *buffer, const uint8_t *bytes) { uint32_t sample_count = 0; uint32_t byte_count = 0; uint32_t i; /* start */ for (i=0; i<2155; i++) sample_count += fc100_output_bit(buffer, sample_count, 1); /* header */ for (int i=0; ilegacy_identify(opts, &fc100_legacy_fill_wave); } static cassette_image::error fc100_cassette_load(cassette_image *cassette) { return cassette->legacy_construct(&fc100_legacy_fill_wave); } static const cassette_image::Format fc100_cassette_image_format = { "cas", fc100_cassette_identify, fc100_cassette_load, nullptr }; CASSETTE_FORMATLIST_START(fc100_cassette_formats) CASSETTE_FORMAT(fc100_cassette_image_format) CASSETTE_FORMATLIST_END