OSDN Git Service

d972729a5ab94ba848ed06df250f78873d321866
[csp-qt/common_source_project-fm7.git] / source / src / vm / vm_template.h
1 #ifndef __CSP_VM_TEMPLATE_H
2 #define __CSP_VM_TEMPLATE_H
3
4 #include "common.h"
5
6 class EMU;
7 class EVENT;
8 class DEVICE;
9 class csp_state_utils;
10 class DLL_PREFIX VM_TEMPLATE {
11 protected:
12         EMU* emu;
13         // devices
14         EVENT* event;
15         csp_state_utils *state_entry;
16         
17 public:
18         VM_TEMPLATE(EMU* parent_emu) : emu(parent_emu)
19         {
20                 emu = parent_emu;
21         }
22         ~VM_TEMPLATE() {}
23         // drive virtual machine
24         virtual void reset() { }
25         virtual void special_reset() { }
26         virtual void run() { }
27         virtual void notify_power_off() { }
28         
29         virtual double get_frame_rate() { return 59.94; }
30         virtual void get_screen_resolution(int *w, int *h) {
31                 if(w != NULL) *w = 0;
32                 if(h != NULL) *h = 0;
33         }
34
35         // debugger
36         virtual DEVICE *get_cpu(int num) { return NULL; }
37         virtual uint32_t get_cpu_pc() { return 0; }
38         virtual void initialize(void) { }
39         virtual void update_dipswitch(void) { }
40         
41         // draw screen
42         virtual void draw_screen() { }
43
44         // multimedia
45         virtual void movie_sound_callback(uint8_t *buffer, long size) { }
46         // sound generation
47         virtual void initialize_sound(int rate, int samples) { }
48         virtual uint16_t* create_sound(int* extra_frames) { return NULL; }
49         virtual int get_sound_buffer_ptr() { return 0; }
50         virtual void set_sound_device_volume(int ch, int decibel_l, int decibel_r) { }
51
52         // network
53         virtual void notify_socket_connected(int ch) { }
54         virtual void notify_socket_disconnected(int ch) { }
55         virtual uint8_t* get_socket_send_buffer(int ch, int* size)
56         {
57                 if(size != NULL) *size = 0;
58                 return NULL;
59         }
60         virtual void inc_socket_send_buffer_ptr(int ch, int size) { }
61         virtual uint8_t* get_socket_recv_buffer0(int ch, int* size0, int* size1) {
62                 if(size0 != NULL) *size0 = 0;
63                 if(size1 != NULL) *size1 = 0;
64                 return NULL;
65         }
66         virtual uint8_t* get_socket_recv_buffer1(int ch) { return NULL; }
67         virtual void inc_socket_recv_buffer_ptr(int ch, int size) { }
68
69         // notify key
70         virtual void key_down(int code, bool repeat) { }
71         virtual void key_up(int code) { }
72         virtual bool get_caps_locked() { return false; }
73         virtual bool get_kana_locked() { return false; }
74         virtual uint32_t get_led_status() { return 0; }
75
76         
77         // user interface
78         virtual void open_floppy_disk(int drv, _TCHAR *file_path, int bank) { }
79         virtual void open_quick_disk(int drv, _TCHAR *file_path) { }
80         virtual void open_hard_disk(int drv, _TCHAR *file_path) { }
81         virtual void open_compact_disc(int drv, _TCHAR *file_path) { }
82         virtual void open_laser_disc(int drv, _TCHAR *file_path) { }
83         virtual void open_bubble_casette(int drv, _TCHAR *file_path, int bank) { }
84         virtual void open_cart(int drv, _TCHAR *file_path) { }
85         virtual void play_tape(int drv, _TCHAR *file_path) { }
86         virtual void rec_tape(int drv, _TCHAR *file_path) { }
87         virtual void load_binary(int drv, _TCHAR *file_path) { }
88         virtual void save_binary(int drv, _TCHAR *file_path) { }
89         
90         virtual void close_floppy_disk(int drv) { }
91         virtual void close_quick_disk(int drv) { }
92         virtual void close_hard_disk(int drv) { }
93         virtual void close_compact_disc() { }
94         virtual void close_laser_disc(int drv) { }
95         virtual void close_bubble_casette(int drv) { }
96         virtual void close_cart(int drv) { }
97         virtual void close_tape(int drv) { }
98         
99         virtual uint32_t is_floppy_disk_accessed() { return 0; }
100         virtual uint32_t is_quick_disk_accessed() { return 0; }
101         virtual uint32_t is_hard_disk_accessed() { return 0; }
102         virtual uint32_t is_compact_disc_accessed() { return 0; }
103         virtual uint32_t is_laser_disc_accessed() { return 0; }
104
105         virtual bool is_floppy_disk_inserted(int drv) { return false; }
106         virtual bool is_quick_disk_inserted(int drv) { return false; }
107         virtual bool is_hard_disk_inserted(int drv) { return false; }
108         virtual bool is_compact_disc_inserted(int drv) { return false; }
109         virtual bool is_cart_inserted(int drv) { return false; }
110         virtual bool is_laser_disc_inserted(int drv) { return false; }
111         virtual bool is_tape_inserted(int drv) { return false; }
112         
113         virtual void is_floppy_disk_protected(int drv, bool value) { }
114         virtual bool is_floppy_disk_protected(int drv) { return false; }
115         virtual void is_bubble_casette_protected(int drv, bool flag) { }
116         virtual bool is_bubble_casette_protected(int drv) { return false; }
117         
118         virtual bool is_tape_playing(int drv) { return false; }
119         virtual bool is_tape_recording(int drv) { return false; }
120         virtual int get_tape_position(int drv) { return 0; }
121         virtual const _TCHAR* get_tape_message(int drv) { return (const _TCHAR *) ""; }
122         
123         virtual void push_play(int drv) { }
124         virtual void push_stop(int drv) { }
125         virtual void push_fast_forward(int drv) { }
126         virtual void push_fast_rewind(int drv) { }
127         virtual void push_apss_forward(int drv) { }
128         virtual void push_apss_rewind(int drv) { }
129
130         virtual void update_config() { }
131         virtual void save_state(FILEIO* state_fio) { }
132         virtual bool load_state(FILEIO* state_fio) { return true; }
133         virtual void decl_state(void) { }
134         
135         // devices
136         virtual void set_cpu_clock(DEVICE *cpu, uint32_t clocks) { }
137         virtual void set_vm_frame_rate(double fps) { }
138         virtual double get_vm_frame_rate() { return 59.94; }
139         virtual bool is_frame_skippable() { return false; }
140         virtual bool is_screen_changed() { return true; }
141         virtual int max_draw_ranges() { return 0; }
142         virtual DEVICE* get_device(int id) { return first_device; }
143         
144         DEVICE* dummy;
145         DEVICE* first_device;
146         DEVICE* last_device;
147 };
148 #endif /* __CSP_VM_TEMPLATE_H */