diff options
| author | Dominik Wenger <domonoky@googlemail.com> | 2008-07-26 15:10:26 +0000 |
|---|---|---|
| committer | Dominik Wenger <domonoky@googlemail.com> | 2008-07-26 15:10:26 +0000 |
| commit | 4e4bf82fb756f36dca6af333357a54e09b9f4cca (patch) | |
| tree | 33c98986cf95773a8a304c393f389065ec7ddb0e /apps/codecs/asap/asap_internal.h | |
| parent | 43b11af169133572802bf19078eaac351c3bc140 (diff) | |
| download | rockbox-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.h | 93 |
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_ */ |