OSDN Git Service

[LIBCPU_NEWDEV] Fix FTBFS.
[csp-qt/common_source_project-fm7.git] / source / src / vm / ym2413.h
1 /*
2         Skelton for retropc emulator
3
4         Author : Takeo.Namiki
5         Date   : 2013.10.26-
6
7         [ YM2413 ]
8 */
9
10 #ifndef _YM2413_H_
11 #define _YM2413_H_
12
13 //#include "vm.h"
14 //#include "../emu.h"
15 #include "device.h"
16
17 #define SIG_YM2413_MUTE         0
18
19 typedef INT16 SAMP;
20 typedef void (*OPLL_UPDATEHANDLER)(int param,int min_interval_us);
21 void YM2413SetUpdateHandler(int which, OPLL_UPDATEHANDLER UpdateHandler, int param);
22
23 class VM;
24 class EMU;
25 class YM2413 : public DEVICE
26 {
27 private:
28         uint8_t latch;
29         uint8_t reg[0x40];
30         bool mute;
31         INT16 *buf[2];
32         int volume_l, volume_r;
33         int alloc_size;
34         bool __MSX;
35         
36 public:
37         YM2413(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
38         {
39                 volume_l = volume_r = 1024;
40                 __MSX = false;
41                 set_device_name(_T("YM2413 OPLL"));
42         }
43         ~YM2413() {}
44         
45         // common functions
46         void initialize();
47         void release();
48         void reset();
49         void write_io8(uint32_t addr, uint32_t data);
50         uint32_t read_io8(uint32_t addr);
51         void write_signal(int id, uint32_t data, uint32_t mask);
52         void mix(int32_t* buffer, int cnt);
53         void set_volume(int ch, int decibel_l, int decibel_r);
54         // unique functions
55         void initialize_sound(int rate, int clock, int samples);
56 };
57
58 #endif