1//============================================================================
2//
3// SSSS tt lll lll
4// SS SS tt ll ll
5// SS tttttt eeee ll ll aaaa
6// SSSS tt ee ee ll ll aa
7// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
8// SS SS tt ee ll ll aa aa
9// SSSS ttt eeeee llll llll aaaaa
10//
11// Copyright (c) 1995-2019 by Bradford W. Mott, Stephen Anthony
12// and the Stella Team
13//
14// See the file "License.txt" for information on usage and redistribution of
15// this file, and for a DISCLAIMER OF ALL WARRANTIES.
16//============================================================================
17
18#ifndef TIA_AUDIO_CHANNEL_HXX
19#define TIA_AUDIO_CHANNEL_HXX
20
21#include "bspf.hxx"
22#include "Serializable.hxx"
23
24class AudioChannel : public Serializable
25{
26 public:
27 AudioChannel();
28
29 void reset();
30
31 void phase0();
32
33 uInt8 phase1();
34
35 void audc(uInt8 value);
36
37 void audf(uInt8 value);
38
39 void audv(uInt8 value);
40
41 /**
42 Serializable methods (see that class for more information).
43 */
44 bool save(Serializer& out) const override;
45 bool load(Serializer& in) override;
46
47 private:
48 uInt8 myAudc;
49 uInt8 myAudv;
50 uInt8 myAudf;
51
52 bool myClockEnable;
53 bool myNoiseFeedback;
54 bool myNoiseCounterBit4;
55 bool myPulseCounterHold;
56
57 uInt8 myDivCounter;
58 uInt8 myPulseCounter;
59 uInt8 myNoiseCounter;
60
61 private:
62 AudioChannel(const AudioChannel&);
63 AudioChannel(AudioChannel&&);
64 AudioChannel& operator=(const AudioChannel&);
65 AudioChannel& operator=(AudioChannel&&);
66};
67
68#endif // TIA_AUDIO_CHANNEL_HXX
69