2 CASIO PV-2000 Emulator 'EmuGaki'
4 Author : Takeda.Toshiya
12 void CMT::initialize()
15 memset(buffer, 0, sizeof(buffer));
33 void CMT::write_io8(uint32_t addr, uint32_t data)
37 // bit0 = motor, bit1 = rec, bit3 = play
38 if(start == 0 && data == 3 && rec) {
39 for(int i = 0; i < 60; i++) {
40 buffer[bufcnt] |= bit;
44 if(++bufcnt == BUFFER_SIZE) {
45 fio->Fwrite(buffer, sizeof(buffer), 1);
46 memset(buffer, 0, sizeof(buffer));
57 if((start & 0x3) == 0x3 && rec) {
58 buffer[bufcnt] |= (data & 1) ? bit : 0;
62 if(++bufcnt == BUFFER_SIZE) {
63 fio->Fwrite(buffer, sizeof(buffer), 1);
64 memset(buffer, 0, sizeof(buffer));
74 uint32_t CMT::read_io8(uint32_t addr)
78 if((start & 0x9) == 0x9 && play) {
79 val |= (buffer[bufcnt] & bit ? 1 : 0);
83 if(++bufcnt == BUFFER_SIZE) {
84 memset(buffer, 0, sizeof(buffer));
85 fio->Fread(buffer, sizeof(buffer), 1);
94 void CMT::play_tape(const _TCHAR* file_path)
98 if(fio->Fopen(file_path, FILEIO_READ_BINARY)) {
100 fio->Fread(buffer, sizeof(buffer), 1);
107 void CMT::rec_tape(const _TCHAR* file_path)
111 if(fio->Fopen(file_path, FILEIO_WRITE_BINARY)) {
113 memset(buffer, 0, sizeof(buffer));
120 void CMT::close_tape()
124 fio->Fwrite(buffer, bufcnt, 1);
132 #define STATE_VERSION 1
134 bool CMT::process_state(FILEIO* state_fio, bool loading)
136 if(!state_fio->StateCheckUint32(STATE_VERSION)) {
139 if(!state_fio->StateCheckInt32(this_device_id)) {
142 state_fio->StateInt32(bufcnt);
143 state_fio->StateBuffer(buffer, sizeof(buffer), 1);
144 state_fio->StateBool(play);
145 state_fio->StateBool(rec);
146 state_fio->StateUint8(start);
147 state_fio->StateUint8(bit);