summaryrefslogtreecommitdiff
path: root/sid/sidplay-libs-2.1.0/libsidplay/include/sidplay/sidbuilder.h
diff options
context:
space:
mode:
Diffstat (limited to 'sid/sidplay-libs-2.1.0/libsidplay/include/sidplay/sidbuilder.h')
-rw-r--r--sid/sidplay-libs-2.1.0/libsidplay/include/sidplay/sidbuilder.h77
1 files changed, 77 insertions, 0 deletions
diff --git a/sid/sidplay-libs-2.1.0/libsidplay/include/sidplay/sidbuilder.h b/sid/sidplay-libs-2.1.0/libsidplay/include/sidplay/sidbuilder.h
new file mode 100644
index 00000000..8dde0548
--- /dev/null
+++ b/sid/sidplay-libs-2.1.0/libsidplay/include/sidplay/sidbuilder.h
@@ -0,0 +1,77 @@
+/***************************************************************************
+ sidbuilder.h - Sid Builder Classes
+ -------------------
+ begin : Sat May 6 2001
+ copyright : (C) 2000 by Simon White
+ email : s_a_white@email.com
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef _sidbuilder_h_
+#define _sidbuilder_h_
+
+#include "sid2types.h"
+#include "component.h"
+#include "c64env.h"
+
+
+// Inherit this class to create a new SID emulations for libsidplay2.
+class sidbuilder;
+class sidemu: public component
+{
+private:
+ sidbuilder *m_builder;
+
+public:
+ sidemu (sidbuilder *builder)
+ :m_builder (builder) {;}
+ virtual ~sidemu () {;}
+
+ // Standard component functions
+ void reset () { reset (0); }
+ virtual void reset (uint8_t volume) = 0;
+ virtual uint8_t read (uint_least8_t addr) = 0;
+ virtual void write (uint_least8_t addr, uint8_t data) = 0;
+ virtual const char *credits (void) = 0;
+
+ // Standard SID functions
+ virtual int_least32_t output (uint_least8_t bits) = 0;
+ virtual void voice (uint_least8_t num,
+ uint_least8_t vol,
+ bool mute) = 0;
+ virtual void gain (int_least8_t precent) = 0;
+ sidbuilder *builder (void) const { return m_builder; }
+};
+
+
+class sidbuilder
+{
+private:
+ const char * const m_name;
+
+protected:
+ bool m_status;
+
+public:
+ // Determine current state of object (true = okay, false = error).
+ sidbuilder(const char * const name)
+ : m_name(name), m_status (true) {;}
+ virtual ~sidbuilder() {;}
+
+ virtual sidemu *lock (c64env *env, sid2_model_t model) = 0;
+ virtual void unlock (sidemu *device) = 0;
+ const char *name (void) const { return m_name; }
+ virtual const char *error (void) const = 0;
+ virtual const char *credits (void) = 0;
+ operator bool() const { return m_status; }
+};
+
+#endif // _sidbuilder_h_