OSDN Git Service

[VM][WIP] Use namespace to devices per VMs.
[csp-qt/common_source_project-fm7.git] / source / src / vm / msx / msx.h
index 9496c1d..233cb67 100644 (file)
 #endif
 #define HAS_AY_3_8910
 // for Flappy Limited '85
-#define YM2203_PORT_MODE       0x80
+#define AY_3_891X_PORT_MODE    0x80
 
 // device informations for win32
-#define USE_CART1
-#define USE_CART2
-#define USE_TAPE
+#define USE_CART               2
+#define USE_TAPE               1
+#define USE_TAPE_BUTTON
 #if defined(_PX7)
-#define USE_LASER_DISC
+#define USE_LASER_DISC         1
+#define USE_MOVIE_PLAYER
 #else
-#define USE_FD1
-#define USE_FD2
+#define USE_FLOPPY_DISK                2
 #endif
 #define USE_ALT_F10_KEY
 #define USE_AUTO_KEY           6
 #define USE_AUTO_KEY_RELEASE   10
+#if defined(_PX7)
+#define USE_SOUND_VOLUME       5
+#else
+//#define USE_SOUND_VOLUME     5
+#define USE_SOUND_VOLUME       4
+#endif
+#define SUPPORT_TV_RENDER
+#define USE_JOYSTICK
 #define USE_DEBUGGER
 #define USE_STATE
+#define USE_CPU_Z80
 
 #include "../../common.h"
 #include "../../fileio.h"
+#include "../vm_template.h"
+
+#ifdef USE_SOUND_VOLUME
+static const _TCHAR *sound_device_caption[] = {
+       _T("PSG"), _T("Beep"), _T("CMT (Signal)"),
+#if defined(_PX7)
+       _T("LD-700"),
+#endif
+        _T("Noise (CMT)"),
+};
+#endif
 
 class EMU;
 class DEVICE;
@@ -80,7 +100,8 @@ class IO;
 class LD700;
 #endif
 class NOT;
-class YM2203;
+//class YM2203;
+class AY_3_891X;
 class PCM1BIT;
 #if defined(_MSX2)
 class RP5C01;
@@ -90,24 +111,25 @@ class TMS9918A;
 #endif
 class Z80;
 
-class JOYSTICK;
-class KEYBOARD;
-class MEMORY;
+namespace MSX {
+       class JOYSTICK;
+       class KEYBOARD;
+       class MEMORY;
 #if defined(_MSX2)
-class RTCIF;
+       class RTCIF;
 #endif
-class SLOT0;
-class SLOT1;
-class SLOT2;
-class SLOT3;
-
-class VM
+       class SLOT0;
+       class SLOT1;
+       class SLOT2;
+       class SLOT3;
+}
+class VM : public VM_TEMPLATE
 {
 protected:
-       EMU* emu;
+       //EMU* emu;
        
        // devices
-       EVENT* event;
+       //EVENT* event;
        
        DATAREC* drec;
        I8255* pio;
@@ -115,8 +137,9 @@ protected:
 #if defined(_PX7)
        LD700* ldp;
 #endif
-       NOT* d_not;
-       YM2203* psg;
+       NOT* not_remote;
+//     YM2203* psg;
+       AY_3_891X* psg;
        PCM1BIT* pcm;
 #if defined(_MSX2)
        RP5C01* rtc;
@@ -126,16 +149,16 @@ protected:
 #endif
        Z80* cpu;
        
-       JOYSTICK* joystick;
-       KEYBOARD* keyboard;
-       MEMORY* memory;
+       MSX::JOYSTICK* joystick;
+       MSX::KEYBOARD* keyboard;
+       MSX::MEMORY* memory;
 #ifdef _MSX2
-       RTCIF* rtcif;
+       MSX::RTCIF* rtcif;
 #endif
-       SLOT0 *slot0;
-       SLOT1 *slot1;
-       SLOT2 *slot2;
-       SLOT3 *slot3;
+       MSX::SLOT0 *slot0;
+       MSX::SLOT1 *slot1;
+       MSX::SLOT2 *slot2;
+       MSX::SLOT3 *slot3;
        
 public:
        // ----------------------------------------
@@ -163,38 +186,50 @@ public:
        
        // sound generation
        void initialize_sound(int rate, int samples);
-       uint16* create_sound(int* extra_frames);
-       int sound_buffer_ptr();
+       uint16_t* create_sound(int* extra_frames);
+       int get_sound_buffer_ptr();
 #if defined(_PX7)
-       void movie_sound_callback(uint8 *buffer, long size);
+       void movie_sound_callback(uint8_t *buffer, long size);
+#endif
+#ifdef USE_SOUND_VOLUME
+       void set_sound_device_volume(int ch, int decibel_l, int decibel_r);
 #endif
        
        // user interface
-       void open_cart(int drv, _TCHAR* file_path);
+       void open_cart(int drv, const _TCHAR* file_path);
        void close_cart(int drv);
-       bool cart_inserted(int drv);
-       void play_tape(_TCHAR* file_path);
-       void rec_tape(_TCHAR* file_path);
-       void close_tape();
-       bool tape_inserted();
-       int  get_tape_ptr();
+       bool is_cart_inserted(int drv);
+       void play_tape(int drv, const _TCHAR* file_path);
+       void rec_tape(int drv, const _TCHAR* file_path);
+       void close_tape(int drv);
+       bool is_tape_inserted(int drv);
+       bool is_tape_playing(int drv);
+       bool is_tape_recording(int drv);
+       int get_tape_position(int drv);
+       const _TCHAR* get_tape_message(int drv);
+       void push_play(int drv);
+       void push_stop(int drv);
+       void push_fast_forward(int drv);
+       void push_fast_rewind(int drv);
+       void push_apss_forward(int drv) {}
+       void push_apss_rewind(int drv) {}
 #if defined(_PX7)
-       void open_laser_disc(_TCHAR* file_path);
-       void close_laser_disc();
-       bool laser_disc_inserted();
+       void open_laser_disc(int drv, const _TCHAR* file_path);
+       void close_laser_disc(int drv);
+       bool is_laser_disc_inserted(int drv);
+       uint32_t is_laser_disc_accessed();
 #else
-       void open_disk(int drv, _TCHAR* file_path, int bank);
-       void close_disk(int drv);
-       bool disk_inserted(int drv);
-       void write_protect_fd(int drv, bool flag);
-       bool is_write_protect_fd(int drv);
-       //int access_lamp();
-#endif
-       bool now_skip();
+       void open_floppy_disk(int drv, const _TCHAR* file_path, int bank);
+       void close_floppy_disk(int drv);
+       bool is_floppy_disk_inserted(int drv);
+       void is_floppy_disk_protected(int drv, bool value);
+       bool is_floppy_disk_protected(int drv);
+       uint32_t is_floppy_disk_accessed();
+#endif
+       bool is_frame_skippable();
        
        void update_config();
-       void save_state(FILEIO* state_fio);
-       bool load_state(FILEIO* state_fio);
+       bool process_state(FILEIO* state_fio, bool loading);
        
        // ----------------------------------------
        // for each device
@@ -202,9 +237,9 @@ public:
        
        // devices
        DEVICE* get_device(int id);
-       DEVICE* dummy;
-       DEVICE* first_device;
-       DEVICE* last_device;
+       //DEVICE* dummy;
+       //DEVICE* first_device;
+       //DEVICE* last_device;
 };
 
 #endif