From 7c19aac60e12d6f5ea301bdb34d7826a01e0b06f Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Sun, 8 Nov 2015 12:56:12 +0100 Subject: Rename *.c -> *.cpp in our source (nw) --- src/lib/formats/rk_cas.cpp | 314 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 314 insertions(+) create mode 100644 src/lib/formats/rk_cas.cpp (limited to 'src/lib/formats/rk_cas.cpp') diff --git a/src/lib/formats/rk_cas.cpp b/src/lib/formats/rk_cas.cpp new file mode 100644 index 00000000000..03139e1515d --- /dev/null +++ b/src/lib/formats/rk_cas.cpp @@ -0,0 +1,314 @@ +// license:BSD-3-Clause +// copyright-holders:Miodrag Milanovic +/* + + Tape support for RK format + +*/ +#include + +#include "rk_cas.h" + + +#define RK_WAV_FREQUENCY 44000 +#define WAVE_HIGH 32767 +#define WAVE_LOW -32768 + +#define RK_HEADER_LEN 256 + +#define RK_SIZE_20 20 +#define RK_SIZE_22 22 +#define RK_SIZE_60 60 + +static int data_size; + +static INT16 *rk_emit_level(INT16 *p, int count, int level) +{ + int i; + + for (i=0; i=0; i--) + p = rk_output_bit(p,(byte>>i) & 0x01, bitsize); + + return p; +} + + +static int rk20_cas_to_wav_size( const UINT8 *casdata, int caslen ) { + data_size = caslen; + return (RK_HEADER_LEN * 8 * 2 + 8*2 + caslen * 8 * 2) * RK_SIZE_20; +} + +static int rk22_cas_to_wav_size( const UINT8 *casdata, int caslen ) { + data_size = caslen; + return (RK_HEADER_LEN * 8 * 2 + 8*2 + caslen * 8 * 2) * RK_SIZE_22; +} + +static int rk60_cas_to_wav_size( const UINT8 *casdata, int caslen ) { + data_size = caslen; + return (RK_HEADER_LEN * 8 * 2 + 8*2 + caslen * 8 * 2) * RK_SIZE_60; +} + +static int gam_cas_to_wav_size( const UINT8 *casdata, int caslen ) { + data_size = caslen; + return (RK_HEADER_LEN * 8 * 2 + caslen * 8 * 2) * RK_SIZE_20; +} + +static int rk20_cas_fill_wave( INT16 *buffer, int length, UINT8 *bytes ) { + int i; + INT16 * p = buffer; + + for (i=0; i