libsidplayfp  2.12.0
exsid-emu.h
1 /***************************************************************************
2  exsid-emu.h - exSID support interface.
3  -------------------
4  Based on hardsid-emu.h (C) 2000-2002 Simon White, (C) 2001-2002 Jarno Paananen
5 
6  copyright : (C) 2015 Thibaut VARENE
7  ***************************************************************************/
8 /***************************************************************************
9  * *
10  * This program is free software; you can redistribute it and/or modify *
11  * it under the terms of the GNU General Public License version 2 as *
12  * published by the Free Software Foundation. *
13  * *
14  ***************************************************************************/
15 
16 #ifndef EXSID_EMU_H
17 #define EXSID_EMU_H
18 
19 #include "sidemu.h"
20 #include "Event.h"
21 #include "EventScheduler.h"
22 #include "sidplayfp/siddefs.h"
23 
24 #include "sidcxx11.h"
25 
26 #ifdef HAVE_CONFIG_H
27 # include "config.h"
28 #endif
29 
30 namespace libsidplayfp
31 {
32 
33 /***************************************************************************
34  * exSID SID Specialisation
35  ***************************************************************************/
36 class exSID final : public sidemu
37 {
38 private:
39  //friend class HardSIDBuilder;
40 
41  // exSID specific data
42  static unsigned int sid;
43  void * exsid;
44 
45  bool m_status;
46 
47  bool readflag;
48 
49  uint8_t busValue;
50 
51  SidConfig::sid_model_t runmodel;
52 
53 private:
54  unsigned int delay();
55 
56 public:
57  static const char* getCredits();
58 
59 public:
60  exSID(sidbuilder *builder);
61  ~exSID() override;
62 
63  bool getStatus() const { return m_status; }
64 
65  uint8_t read(uint_least8_t addr) override;
66  void write(uint_least8_t addr, uint8_t data) override;
67 
68  // c64sid functions
69  void reset(uint8_t volume) override;
70 
71  // Standard SID functions
72  void clock() override;
73 
74  void model(SidConfig::sid_model_t model, bool digiboost) override;
75 
76  void filter(bool) {}
77 
78  void sampling(float systemclock, float freq,
79  SidConfig::sampling_method_t method, bool) override;
80 
81  // exSID specific
82  void flush();
83 
84  // Must lock the SID before using the standard functions.
85  bool lock(EventScheduler *env) override;
86  void unlock() override;
87 };
88 
89 }
90 
91 #endif // EXSID_EMU_H
sid_model_t
SID chip model.
Definition: SidConfig.h:51
sampling_method_t
Sampling method.
Definition: SidConfig.h:84
Definition: EventScheduler.h:62
Definition: exsid-emu.h:37
void clock() override
Definition: exsid-emu.cpp:97
bool lock(EventScheduler *env) override
Definition: exsid-emu.cpp:154
void model(SidConfig::sid_model_t model, bool digiboost) override
Definition: exsid-emu.cpp:143
void unlock() override
Definition: exsid-emu.cpp:159
Definition: sidemu.h:47
Definition: sidbuilder.h:41