static int apf_apt_handle_cassette(INT16 *buffer, const UINT8 *bytes) { UINT32 sample_count = 0; UINT32 i; UINT8 cksm = 0; UINT32 temp = 0; // silence sample_count += apf_put_samples(buffer, 0, 12000, 0); for (i=0; i<apf_image_size; i++) { sample_count += apf_output_byte(buffer, sample_count, bytes[i]); if (bytes[i]==0xfe) { temp = i+1; i = apf_image_size; } } /* data */ for (i= temp; i<(temp+0x1e00); i++) { cksm += bytes[i]; sample_count += apf_output_byte(buffer, sample_count, bytes[i]); } /* checksum byte */ sample_count += apf_output_byte(buffer, sample_count, cksm); return sample_count; }
static int apf_cpf_handle_cassette(INT16 *buffer, const UINT8 *bytes) { UINT32 sample_count = 0; UINT32 i; UINT8 cksm = 0; // silence sample_count += apf_put_samples(buffer, 0, 12000, 0); /* start */ for (i=0; i<10000; i++) sample_count += apf_output_bit(buffer, sample_count, 1); sample_count += apf_output_bit(buffer, sample_count, 0); /* data */ for (i=0; i<apf_image_size; i++) { cksm += bytes[i]; sample_count += apf_output_byte(buffer, sample_count, bytes[i]); } /* checksum byte */ sample_count += apf_output_byte(buffer, sample_count, cksm); return sample_count; }
static int apf_cpf_handle_cassette(int16_t *buffer, const uint8_t *bytes) { uint32_t sample_count = 0; uint32_t i; uint8_t cksm = 0; // silence sample_count += apf_put_samples(buffer, 0, 12000, 0); /* start */ for (i=0; i<10000; i++) sample_count += apf_output_bit(buffer, sample_count, 1); sample_count += apf_output_bit(buffer, sample_count, 0); /* data */ for (i=0; i<apf_image_size; i++) { cksm += bytes[i]; sample_count += apf_output_byte(buffer, sample_count, bytes[i]); } /* checksum byte */ sample_count += apf_output_byte(buffer, sample_count, cksm); return sample_count; }
static int apf_output_bit(INT16 *buffer, int sample_pos, bool bit) { int samples = 0; if (bit) { samples += apf_put_samples(buffer, sample_pos + samples, 4, WAVEENTRY_HIGH); samples += apf_put_samples(buffer, sample_pos + samples, 4, WAVEENTRY_LOW); } else { samples += apf_put_samples(buffer, sample_pos + samples, 2, WAVEENTRY_HIGH); samples += apf_put_samples(buffer, sample_pos + samples, 2, WAVEENTRY_LOW); } return samples; }