Subversion Repositories pentevo

Rev

Rev 1147 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1099 galstaff 1
// From https://github.com/tslabs/zx-evo/blob/master/pentevo/unreal/Unreal/sound/dev_moonsound.h
2
 
3
#pragma once
4
 
5
#ifndef _SOUND_DEV_MOONSOUND_H
6
#define _SOUND_DEV_MOONSOUND_H
7
 
8
#include "../sysdefs.h"
1147 lvd 9
#include "ymf262.h"
10
#include "ymf278.h"
1099 galstaff 11
 
1147 lvd 12
struct ZXMMoonSound_priv
13
{
14
friend class ZXMMoonSound;
1099 galstaff 15
 
1147 lvd 16
public:
17
        ZXMMoonSound_priv();
18
        ~ZXMMoonSound_priv();
19
 
20
private:
21
        YMF262 ymf262;
22
        int opl3latch;
23
 
24
        YMF278 ymf278;
25
        int opl4latch;
26
};
27
 
1099 galstaff 28
class ZXMMoonSound : public SNDRENDER
29
{
30
public:
31
        ZXMMoonSound();
32
 
33
        int load_rom(char *path);
34
 
35
        void reset();
1153 lvd 36
        bool wr_opl3( u8 port, u8  val );
37
        bool wr_opl4( u8 port, u8  val );
38
        bool rd_opl3( u8 port, u8 &val );
39
        bool rd_opl4( u8 port, u8 &val );
1099 galstaff 40
 
41
        // set of functions that fills buffer in emulation progress
42
        void set_timings(unsigned system_clock_rate, unsigned chip_clock_rate, unsigned sample_rate);
43
        void start_frame() { SNDRENDER::start_frame(); }
44
        void start_frame(bufptr_t dst);
45
        unsigned end_frame(unsigned clk_ticks);
46
        void flush(unsigned chiptick);
47
 
48
private:
1147 lvd 49
        ZXMMoonSound_priv d;
1099 galstaff 50
 
51
        unsigned chip_clock_rate;
52
        unsigned system_clock_rate;
53
        u64 passed_chip_ticks;
54
        u64 passed_clk_ticks;
55
 
56
        unsigned t;
57
};
58
 
59
extern ZXMMoonSound zxmmoonsound;
60
 
1147 lvd 61
#endif /* _SOUND_DEV_MOONSOUND_H */