summaryrefslogtreecommitdiff
path: root/apps/codecs/asap/asap_internal.h
diff options
context:
space:
mode:
authorDominik Wenger <domonoky@googlemail.com>2008-07-26 15:10:26 +0000
committerDominik Wenger <domonoky@googlemail.com>2008-07-26 15:10:26 +0000
commit4e4bf82fb756f36dca6af333357a54e09b9f4cca (patch)
tree33c98986cf95773a8a304c393f389065ec7ddb0e /apps/codecs/asap/asap_internal.h
parent43b11af169133572802bf19078eaac351c3bc140 (diff)
downloadrockbox-4e4bf82fb756f36dca6af333357a54e09b9f4cca.zip
rockbox-4e4bf82fb756f36dca6af333357a54e09b9f4cca.tar.gz
rockbox-4e4bf82fb756f36dca6af333357a54e09b9f4cca.tar.bz2
rockbox-4e4bf82fb756f36dca6af333357a54e09b9f4cca.tar.xz
import ASAP codec (http://asap.sourceforge.net/). Plays Amiga 8bit Sound. (.sap and more formats).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18120 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/asap/asap_internal.h')
-rw-r--r--apps/codecs/asap/asap_internal.h93
1 files changed, 93 insertions, 0 deletions
diff --git a/apps/codecs/asap/asap_internal.h b/apps/codecs/asap/asap_internal.h
new file mode 100644
index 0000000..1385215
--- /dev/null
+++ b/apps/codecs/asap/asap_internal.h
@@ -0,0 +1,93 @@
+/*
+ * asap_internal.h - private interface of the ASAP engine
+ *
+ * Copyright (C) 2005-2008 Piotr Fusik
+ *
+ * This file is part of ASAP (Another Slight Atari Player),
+ * see http://asap.sourceforge.net
+ *
+ * ASAP 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.
+ *
+ * ASAP is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with ASAP; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef _ASAP_INTERNAL_H_
+#define _ASAP_INTERNAL_H_
+
+#if !defined(JAVA) && !defined(CSHARP)
+
+#include "asap.h"
+
+#define CONST_LOOKUP(type, name) \
+ static const type name[]
+#define FILE_FUNC static
+#define ASAP_FUNC
+#define PTR *
+#define ADDRESSOF &
+#define ARRAY *
+#define VOIDPTR void *
+#define UBYTE(data) (data)
+#define SBYTE(data) (signed char) (data)
+#define STRING const char *
+#define ZERO_ARRAY(array) memset(array, 0, sizeof(array))
+#define COPY_ARRAY(dest, dest_offset, src, src_offset, len) \
+ memcpy(dest + dest_offset, src + src_offset, len)
+#define NEW_ARRAY(type, name, size) \
+ type name[size]
+#define INIT_ARRAY(array) memset(array, 0, sizeof(array))
+
+#define AST ast->
+#define PST pst->
+#define MODULE_INFO module_info->
+#define ASAP_OBX const byte *
+#define GET_OBX(name) name##_obx
+
+int ASAP_GetByte(ASAP_State *ast, int addr);
+void ASAP_PutByte(ASAP_State *ast, int addr, int data);
+
+void Cpu_RunScanlines(ASAP_State *ast, int scanlines);
+
+void PokeySound_Initialize(ASAP_State *ast);
+void PokeySound_StartFrame(ASAP_State *ast);
+void PokeySound_PutByte(ASAP_State *ast, int addr, int data);
+int PokeySound_GetRandom(ASAP_State *ast, int addr);
+void PokeySound_EndFrame(ASAP_State *ast, int cycle_limit);
+int PokeySound_Generate(ASAP_State *ast, byte buffer[], int buffer_offset, int blocks, ASAP_SampleFormat format);
+abool PokeySound_IsSilent(const PokeyState *pst);
+void PokeySound_Mute(const ASAP_State *ast, PokeyState *pst, int mask);
+
+#ifdef ASAPSCAN
+abool call_6502_player(ASAP_State *ast);
+extern abool cpu_trace;
+void print_cpu_state(const ASAP_State *ast, int pc, int a, int x, int y, int s, int nz, int vdi, int c);
+#endif
+
+#endif /* !defined(JAVA) && !defined(CSHARP) */
+
+#define ASAP_MAIN_CLOCK 1773447
+
+#define V_FLAG 0x40
+#define D_FLAG 0x08
+#define I_FLAG 0x04
+#define Z_FLAG 0x02
+
+#define NEVER 0x800000
+
+#define dGetByte(addr) UBYTE(AST memory[addr])
+#define dPutByte(addr, data) AST memory[addr] = (byte) (data)
+#define dGetWord(addr) (dGetByte(addr) + (dGetByte((addr) + 1) << 8))
+#define GetByte(addr) (((addr) & 0xf900) == 0xd000 ? ASAP_GetByte(ast, addr) : dGetByte(addr))
+#define PutByte(addr, data) do { if (((addr) & 0xf900) == 0xd000) ASAP_PutByte(ast, addr, data); else dPutByte(addr, data); } while (FALSE)
+#define RMW_GetByte(dest, addr) do { if (((addr) >> 8) == 0xd2) { dest = ASAP_GetByte(ast, addr); AST cycle--; ASAP_PutByte(ast, addr, dest); AST cycle++; } else dest = dGetByte(addr); } while (FALSE)
+
+#endif /* _ASAP_INTERNAL_H_ */