LMMS
Loading...
Searching...
No Matches
Hes_Apu.h
Go to the documentation of this file.
1// Turbo Grafx 16 (PC Engine) PSG sound chip emulator
2
3// Game_Music_Emu https://bitbucket.org/mpyne/game-music-emu/
4#ifndef HES_APU_H
5#define HES_APU_H
6
7#include "blargg_common.h"
8#include "Blip_Buffer.h"
9
10struct Hes_Osc
11{
12 unsigned char wave [32];
13 short volume [2];
14 int last_amp [2];
15 int delay;
16 int period;
17 unsigned char noise;
18 unsigned char phase;
19 unsigned char balance;
20 unsigned char dac;
22
25 unsigned noise_lfsr;
26 unsigned char control;
27
28 enum { amp_range = 0x8000 };
30
32};
33
34class Hes_Apu {
35public:
36 void treble_eq( blip_eq_t const& );
37 void volume( double );
38
39 enum { osc_count = 6 };
40 void osc_output( int index, Blip_Buffer* center, Blip_Buffer* left, Blip_Buffer* right );
41
42 void reset();
43
44 enum { start_addr = 0x0800 };
45 enum { end_addr = 0x0809 };
46 void write_data( blip_time_t, int addr, int data );
47
48 void end_frame( blip_time_t );
49
50public:
51 Hes_Apu();
52private:
54 int latch;
57
58 void balance_changed( Hes_Osc& );
60};
61
62inline void Hes_Apu::volume( double v ) { synth.volume( 1.8 / osc_count / Hes_Osc::amp_range * v ); }
63
64inline void Hes_Apu::treble_eq( blip_eq_t const& eq ) { synth.treble_eq( eq ); }
65
66#endif
blip_long blip_time_t
Definition Blip_Buffer.h:17
SYNTH_T * synth
Definition LocalZynAddSubFx.cpp:47
Definition Blip_Buffer.h:23
Definition Blip_Buffer.h:191
int latch
Definition Hes_Apu.h:54
void osc_output(int index, Blip_Buffer *center, Blip_Buffer *left, Blip_Buffer *right)
Definition Hes_Apu.cpp:56
void reset()
Definition Hes_Apu.cpp:39
@ end_addr
Definition Hes_Apu.h:45
Hes_Osc oscs[osc_count]
Definition Hes_Apu.h:53
Hes_Osc::synth_t synth
Definition Hes_Apu.h:56
void volume(double)
Definition Hes_Apu.h:62
void balance_changed(Hes_Osc &)
Definition Hes_Apu.cpp:184
Hes_Apu()
Definition Hes_Apu.cpp:22
int balance
Definition Hes_Apu.h:55
void end_frame(blip_time_t)
Definition Hes_Apu.cpp:303
void write_data(blip_time_t, int addr, int data)
Definition Hes_Apu.cpp:230
void recalc_chans()
void treble_eq(blip_eq_t const &)
Definition Hes_Apu.h:64
@ start_addr
Definition Hes_Apu.h:44
@ osc_count
Definition Hes_Apu.h:39
Definition Blip_Buffer.h:239
unsigned v[N_MAX]
Definition inflate.c:1584
struct @113205115357366127300225113341150224053346037032::@137033172036070230260373056156374243321245367362 left
struct @113205115357366127300225113341150224053346037032::@137033172036070230260373056156374243321245367362 right
JSAMPIMAGE data
Definition jpeglib.h:945
Definition Hes_Apu.h:11
Blip_Buffer * chans[3]
Definition Hes_Apu.h:24
unsigned char wave[32]
Definition Hes_Apu.h:12
unsigned char phase
Definition Hes_Apu.h:18
void run_until(synth_t &synth, blip_time_t)
Definition Hes_Apu.cpp:72
int last_amp[2]
Definition Hes_Apu.h:14
unsigned char balance
Definition Hes_Apu.h:19
Blip_Buffer * outputs[2]
Definition Hes_Apu.h:23
Blip_Synth< blip_med_quality, 1 > synth_t
Definition Hes_Apu.h:29
unsigned char noise
Definition Hes_Apu.h:17
int delay
Definition Hes_Apu.h:15
unsigned noise_lfsr
Definition Hes_Apu.h:25
unsigned char dac
Definition Hes_Apu.h:20
blip_time_t last_time
Definition Hes_Apu.h:21
int period
Definition Hes_Apu.h:16
@ amp_range
Definition Hes_Apu.h:28
short volume[2]
Definition Hes_Apu.h:13
unsigned char control
Definition Hes_Apu.h:26
Definition tap_eq.c:71