~ubuntu-branches/ubuntu/wily/xmms2/wily

« back to all changes in this revision

Viewing changes to src/plugins/gme/gme/Gb_Oscs.h

  • Committer: Bazaar Package Importer
  • Author(s): Benjamin Drung
  • Date: 2008-07-04 16:23:34 UTC
  • mfrom: (1.1.5 upstream) (6.1.1 lenny)
  • Revision ID: james.westby@ubuntu.com-20080704162334-b3esbkcapt8wbrk4
Tags: 0.5DrLecter-2ubuntu1
* Merge from debian unstable (LP: #241098), remaining changes:
  + debian/control:
    + Update Maintainer field
    + add lpia to xmms2-plugin-alsa supported architectures
    + Added liba52-0.7.4-dev to build depends
  + debian/rules: Added patch, patch-stamp and unpatch
  + changed 01_gcc4.3.patch:
    + src/include/xmmsclient/xmmsclient++/helpers.h: Added #include <climits>
* New upstream relase fixes LP: #212566, #222341

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Private oscillators used by Gb_Apu
 
2
 
 
3
// Gb_Snd_Emu 0.1.5
 
4
#ifndef GB_OSCS_H
 
5
#define GB_OSCS_H
 
6
 
 
7
#include "blargg_common.h"
 
8
#include "Blip_Buffer.h"
 
9
 
 
10
struct Gb_Osc
 
11
{
 
12
        enum { trigger = 0x80 };
 
13
        enum { len_enabled_mask = 0x40 };
 
14
        
 
15
        Blip_Buffer* outputs [4]; // NULL, right, left, center
 
16
        Blip_Buffer* output;
 
17
        int output_select;
 
18
        BOOST::uint8_t* regs; // osc's 5 registers
 
19
        
 
20
        int delay;
 
21
        int last_amp;
 
22
        int volume;
 
23
        int length;
 
24
        int enabled;
 
25
        
 
26
        void reset();
 
27
        void clock_length();
 
28
        int frequency() const { return (regs [4] & 7) * 0x100 + regs [3]; }
 
29
};
 
30
 
 
31
struct Gb_Env : Gb_Osc
 
32
{
 
33
        int env_delay;
 
34
        
 
35
        void reset();
 
36
        void clock_envelope();
 
37
        bool write_register( int, int );
 
38
};
 
39
 
 
40
struct Gb_Square : Gb_Env
 
41
{
 
42
        enum { period_mask = 0x70 };
 
43
        enum { shift_mask  = 0x07 };
 
44
        
 
45
        typedef Blip_Synth<blip_good_quality,1> Synth;
 
46
        Synth const* synth;
 
47
        int sweep_delay;
 
48
        int sweep_freq;
 
49
        int phase;
 
50
        
 
51
        void reset();
 
52
        void clock_sweep();
 
53
        void run( blip_time_t, blip_time_t, int playing );
 
54
};
 
55
 
 
56
struct Gb_Noise : Gb_Env
 
57
{
 
58
        typedef Blip_Synth<blip_med_quality,1> Synth;
 
59
        Synth const* synth;
 
60
        unsigned bits;
 
61
        
 
62
        void run( blip_time_t, blip_time_t, int playing );
 
63
};
 
64
 
 
65
struct Gb_Wave : Gb_Osc
 
66
{
 
67
        typedef Blip_Synth<blip_med_quality,1> Synth;
 
68
        Synth const* synth;
 
69
        int wave_pos;
 
70
        enum { wave_size = 32 };
 
71
        BOOST::uint8_t wave [wave_size];
 
72
        
 
73
        void write_register( int, int );
 
74
        void run( blip_time_t, blip_time_t, int playing );
 
75
};
 
76
 
 
77
inline void Gb_Env::reset()
 
78
{
 
79
        env_delay = 0;
 
80
        Gb_Osc::reset();
 
81
}
 
82
 
 
83
#endif