X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=source%2Fsrc%2Fvm%2Fpc8201%2Fcmt.cpp;h=1fcf5146219317b0545ee279cffc500b1b9fa1a9;hb=53c174b40785954fa8d0f4c276e8a45e059cff40;hp=3b320b25d9e5c5b95e244e709dd73dbe94d36db5;hpb=e909df1ebe073dd2ef51a827068ed0426438ad19;p=csp-qt%2Fcommon_source_project-fm7.git diff --git a/source/src/vm/pc8201/cmt.cpp b/source/src/vm/pc8201/cmt.cpp index 3b320b25d..1fcf51462 100644 --- a/source/src/vm/pc8201/cmt.cpp +++ b/source/src/vm/pc8201/cmt.cpp @@ -131,20 +131,40 @@ void CMT::close_tape() wav_header_t wav_header; wav_chunk_t wav_chunk; + pair_t __riff_chunk_size; + pair_t __fmt_chunk_size; + pair_t __wav_chunk_size; + pair16_t __fmt_id; + pair16_t __channels; + pair_t __sample_rate; + pair16_t __block_size; + pair16_t __sample_bits; + + __riff_chunk_size.d = length - 8; + __fmt_chunk_size.d = 16; + __fmt_id.w = 1; + __channels.w = 1; + __sample_rate.d = SAMPLE_RATE; + __block_size.w = 1; + __sample_bits.w = 8; + memcpy(wav_header.riff_chunk.id, "RIFF", 4); - wav_header.riff_chunk.size = length - 8; + wav_header.riff_chunk.size = __riff_chunk_size.get_4bytes_le_to(); + memcpy(wav_header.wave, "WAVE", 4); memcpy(wav_header.fmt_chunk.id, "fmt ", 4); - wav_header.fmt_chunk.size = 16; - wav_header.format_id = 1; - wav_header.channels = 1; - wav_header.sample_rate = SAMPLE_RATE; - wav_header.data_speed = SAMPLE_RATE; - wav_header.block_size = 1; - wav_header.sample_bits = 8; - + wav_header.fmt_chunk.size = __riff_chunk_size.get_4bytes_le_to(); + wav_header.format_id = __fmt_id.get_2bytes_le_to(); + wav_header.channels = __channels.get_2byte_le_to(); + wav_header.sample_rate = __sample_rate.get_4bytes_le_to(); + wav_header.data_speed = __sample_rate.get_4bytes_le_to(); + wav_header.block_size = __block_size.get_2bytes_le_to(); + wav_header.sample_bits = __sample_bits_get_2bytes_le_to(); + memcpy(wav_chunk.id, "data", 4); - wav_chunk.size = length - sizeof(wav_header) - sizeof(wav_chunk); + __wav_chunk_size.d = length - sizeof(wav_header) - sizeof(wav_chunk); + wav_chunk.size = __wav_chunk_size.get_4bytes_le_to(); + fio->Fseek(0, FILEIO_SEEK_SET); fio->Fwrite(&wav_header, sizeof(wav_header), 1);