LMMS
Loading...
Searching...
No Matches
Hes_Emu.h
Go to the documentation of this file.
1// TurboGrafx-16/PC Engine HES music file emulator
2
3// Game_Music_Emu https://bitbucket.org/mpyne/game-music-emu/
4#ifndef HES_EMU_H
5#define HES_EMU_H
6
7#include "Classic_Emu.h"
8#include "Hes_Apu.h"
9#include "Hes_Cpu.h"
10
11class Hes_Emu : private Hes_Cpu, public Classic_Emu {
12 typedef Hes_Cpu cpu;
13public:
14 // HES file header
15 enum { header_size = 0x20 };
16 struct header_t
17 {
18 byte tag [4];
19 byte vers;
21 byte init_addr [2];
22 byte banks [8];
23 byte data_tag [4];
24 byte size [4];
25 byte addr [4];
26 byte unused [4];
27 };
28
29 // Header for currently loaded file
30 header_t const& header() const { return header_; }
31
32 static gme_type_t static_type() { return gme_hes_type; }
33
34public:
35 Hes_Emu();
36 ~Hes_Emu();
37protected:
38 blargg_err_t track_info_( track_info_t*, int track ) const;
39 blargg_err_t load_( Data_Reader& );
40 blargg_err_t start_track_( int );
41 blargg_err_t run_clocks( blip_time_t&, int );
42 void set_tempo_( double );
44 void update_eq( blip_eq_t const& );
45 void unload();
46public: private: friend class Hes_Cpu;
47 byte* write_pages [page_count + 1]; // 0 if unmapped or I/O space
48
49 int cpu_read_( hes_addr_t );
50 int cpu_read( hes_addr_t );
51 void cpu_write_( hes_addr_t, int data );
52 void cpu_write( hes_addr_t, int );
53 void cpu_write_vdp( int addr, int data );
54 byte const* cpu_set_mmr( int page, int bank );
55 int cpu_done();
56private:
62
63 struct {
65 blargg_long count;
66 blargg_long load;
68 byte enabled;
69 byte fired;
71
72 struct {
74 byte latch;
75 byte control;
76 } vdp;
77
78 struct {
82 } irq;
83
84 void recalc_timer_load();
85
86 // large items
89
90 void irq_changed();
91 void run_until( hes_time_t );
92};
93
94#endif
blip_long blip_time_t
Definition Blip_Buffer.h:17
blargg_long hes_time_t
Definition Hes_Cpu.h:9
unsigned hes_addr_t
Definition Hes_Cpu.h:10
Definition Blip_Buffer.h:23
Classic_Emu()
Definition Classic_Emu.cpp:21
Definition Data_Reader.h:10
Definition Hes_Apu.h:34
@ page_size
Definition Hes_Cpu.h:17
@ cpu_padding
Definition Hes_Cpu.h:63
@ page_count
Definition Hes_Cpu.h:19
Rom_Data< page_size > rom
Definition Hes_Emu.h:57
Hes_Emu()
Definition Hes_Emu.cpp:28
hes_time_t last_frame_hook
Definition Hes_Emu.h:60
blargg_err_t run_clocks(blip_time_t &, int)
Definition Hes_Emu.cpp:507
hes_time_t play_period
Definition Hes_Emu.h:59
byte latch
Definition Hes_Emu.h:74
blargg_err_t load_(Data_Reader &)
Definition Hes_Emu.cpp:141
byte * write_pages[page_count+1]
Definition Hes_Emu.h:47
blargg_long count
Definition Hes_Emu.h:65
byte disables
Definition Hes_Emu.h:81
byte fired
Definition Hes_Emu.h:69
void cpu_write_vdp(int addr, int data)
Definition Hes_Emu.cpp:257
void run_until(hes_time_t)
Definition Hes_Emu.cpp:410
int cpu_read_(hes_addr_t)
Definition Hes_Emu.cpp:355
struct Hes_Emu::@061226022322052076015155365151041073373247126234 timer
hes_time_t next_vbl
Definition Hes_Emu.h:73
void recalc_timer_load()
Definition Hes_Emu.cpp:203
void irq_changed()
Definition Hes_Emu.cpp:428
@ header_size
Definition Hes_Emu.h:15
byte enabled
Definition Hes_Emu.h:68
void cpu_write(hes_addr_t, int)
Definition hes_cpu_io.h:15
blargg_err_t track_info_(track_info_t *, int track) const
Definition Hes_Emu.cpp:93
struct Hes_Emu::@263041101001236323327312237153070124050103030157 irq
Hes_Cpu cpu
Definition Hes_Emu.h:12
void update_eq(blip_eq_t const &)
Definition Hes_Emu.cpp:191
void set_voice(int, Blip_Buffer *, Blip_Buffer *, Blip_Buffer *)
Definition Hes_Emu.cpp:196
byte const * cpu_set_mmr(int page, int bank)
Definition hes_cpu_io.h:26
int timer_base
Definition Hes_Emu.h:61
~Hes_Emu()
Definition Hes_Emu.cpp:47
header_t const & header() const
Definition Hes_Emu.h:30
friend class Hes_Cpu
Definition Hes_Emu.h:46
void unload()
Definition Hes_Emu.cpp:49
struct Hes_Emu::@275071040042365156337262233102263315116377030320 vdp
blargg_err_t start_track_(int)
Definition Hes_Emu.cpp:215
void set_tempo_(double)
Definition Hes_Emu.cpp:208
header_t header_
Definition Hes_Emu.h:58
static gme_type_t static_type()
Definition Hes_Emu.h:32
Hes_Apu apu
Definition Hes_Emu.h:87
int cpu_read(hes_addr_t)
Definition hes_cpu_io.h:6
void cpu_write_(hes_addr_t, int data)
Definition Hes_Emu.cpp:286
int raw_load
Definition Hes_Emu.h:67
int cpu_done()
Definition Hes_Emu.cpp:453
blargg_long load
Definition Hes_Emu.h:66
byte sgx[3 *page_size+cpu_padding]
Definition Hes_Emu.h:88
hes_time_t last_time
Definition Hes_Emu.h:64
byte control
Definition Hes_Emu.h:75
Definition Classic_Emu.h:71
Definition Blip_Buffer.h:239
const struct gme_type_t_ * gme_type_t
Definition gme.h:161
const gme_type_t gme_hes_type
Definition gme.h:168
JSAMPIMAGE data
Definition jpeglib.h:945
static SerdStatus page(SerdReader *reader)
Definition reader.c:112
Definition Hes_Emu.h:17
byte init_addr[2]
Definition Hes_Emu.h:21
byte first_track
Definition Hes_Emu.h:20
byte addr[4]
Definition Hes_Emu.h:25
byte data_tag[4]
Definition Hes_Emu.h:23
byte unused[4]
Definition Hes_Emu.h:26
byte size[4]
Definition Hes_Emu.h:24
byte tag[4]
Definition Hes_Emu.h:18
byte vers
Definition Hes_Emu.h:19
byte banks[8]
Definition Hes_Emu.h:22
Definition Gme_File.h:28