/* .PMD tape images */ #include "pmd_pmd.h" #define WAVEENTRY_LOW -32768 #define WAVEENTRY_HIGH 32767 #define PMD85_WAV_FREQUENCY 7200 #define PMD85_TIMER_FREQUENCY 1200 #define PMD85_BIT_LENGTH (PMD85_WAV_FREQUENCY/PMD85_TIMER_FREQUENCY) #define PMD85_PILOT_BITS (PMD85_TIMER_FREQUENCY*3) #define PMD85_PAUSE_BITS (PMD85_TIMER_FREQUENCY/2) #define PMD85_HEADER_BYTES 63 #define PMD85_BITS_PER_BYTE 11 static INT16 *pmd85_emit_level(INT16 *p, int count, int level) { int i; for (i=0; i>(7-i)) & 0x01); /* stop */ p = pmd85_output_bit (p, 1); p = pmd85_output_bit (p, 1); return p; } static int pmd85_cassette_calculate_size_in_samples(const UINT8 *bytes, int length) { return PMD85_BIT_LENGTH * (length * PMD85_BITS_PER_BYTE + PMD85_PILOT_BITS + PMD85_PAUSE_BITS); } static int pmd85_cassette_fill_wave(INT16 *buffer, int length, UINT8 *bytes) { int i; INT16 * p = buffer; int data_size = ((length/PMD85_BIT_LENGTH-PMD85_PILOT_BITS-PMD85_PAUSE_BITS)/PMD85_BITS_PER_BYTE)-PMD85_HEADER_BYTES; /* pilot */ for (i=0; i