summaryrefslogtreecommitdiff
path: root/plugins/gme/game-music-emu-0.6pre/gme/Sgc_Core.h
blob: ef59194cfaca8bed2cbbe518dbf880fd8bc9f6b6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// Sega/Game Gear/Coleco SGC music file emulator core

// Game_Music_Emu 0.6-pre
#ifndef SGC_CORE_H
#define SGC_CORE_H

#include "Sgc_Impl.h"
#include "Sms_Fm_Apu.h"
#include "Sms_Apu.h"

class Sgc_Core : public Sgc_Impl {
public:
	
	// Adjusts music tempo, where 1.0 is normal. Can be changed while playing.
	// Resets to 1.0 when loading file.
	void set_tempo( double );
	
	// Starts track, where 0 is the first.
	blargg_err_t start_track( int );
	
	// Ends time frame at time t
	blargg_err_t end_frame( time_t t );
	
	// SN76489 sound chip
	Sms_Apu& apu()                  { return apu_; }
	Sms_Fm_Apu& fm_apu()            { return fm_apu_; }
	
protected:
	// Overrides
	virtual void cpu_out( time_t, addr_t, int data );
	virtual blargg_err_t load_( Data_Reader& );

// Implementation
public:
	Sgc_Core();
	~Sgc_Core();

private:
	bool fm_accessed;
	Sms_Apu apu_;
	Sms_Fm_Apu fm_apu_;
};

#endif