2 CASIO PV-1000 Emulator 'ePV-1000'
\r
4 Author : Takeda.Toshiya
\r
10 #include "joystick.h"
\r
11 #include "../../fileio.h"
\r
13 void JOYSTICK::initialize()
\r
15 key = emu->key_buffer();
\r
16 joy = emu->joy_buffer();
\r
18 // register event to interrupt
\r
19 register_frame_event(this);
\r
22 void JOYSTICK::reset()
\r
27 void JOYSTICK::write_io8(uint32 addr, uint32 data)
\r
29 switch(addr & 0xff) {
\r
38 // emu->out_debug_log(_T("OUT\t%2x, %2x\n"), addr & 0xff, data);
\r
41 uint32 JOYSTICK::read_io8(uint32 addr)
\r
45 switch(addr & 0xff) {
\r
53 if(joy[0] & 0x40) val |= 1; // #1 select
\r
54 if(joy[0] & 0x80) val |= 2; // #1 start
\r
55 if(joy[1] & 0x40) val |= 4; // #2 select
\r
56 if(joy[1] & 0x80) val |= 8; // #2 start
\r
59 if(joy[0] & 0x02) val |= 1; // #1 down
\r
60 if(joy[0] & 0x08) val |= 2; // #1 right
\r
61 if(joy[1] & 0x02) val |= 4; // #2 down
\r
62 if(joy[1] & 0x08) val |= 8; // #2 right
\r
65 if(joy[0] & 0x04) val |= 1; // #1 left
\r
66 if(joy[0] & 0x01) val |= 2; // #1 up
\r
67 if(joy[1] & 0x04) val |= 4; // #2 left
\r
68 if(joy[1] & 0x01) val |= 8; // #2 up
\r
71 if(joy[0] & 0x10) val |= 1; // #1 trig1
\r
72 if(joy[0] & 0x20) val |= 2; // #1 trig2
\r
73 if(joy[1] & 0x10) val |= 4; // #2 trig1
\r
74 if(joy[1] & 0x20) val |= 8; // #2 trig2
\r
79 // emu->out_debug_log(_T("IN\t%2x, %2x\n"), addr & 0xff, val);
\r
83 void JOYSTICK::event_frame()
\r
88 #define STATE_VERSION 1
\r
90 void JOYSTICK::save_state(FILEIO* state_fio)
\r
92 state_fio->FputUint32(STATE_VERSION);
\r
93 state_fio->FputInt32(this_device_id);
\r
95 state_fio->FputUint8(column);
\r
96 state_fio->FputUint8(status);
\r
99 bool JOYSTICK::load_state(FILEIO* state_fio)
\r
101 if(state_fio->FgetUint32() != STATE_VERSION) {
\r
104 if(state_fio->FgetInt32() != this_device_id) {
\r
107 column = state_fio->FgetUint8();
\r
108 status = state_fio->FgetUint8();
\r