From 35472fe7f1c7133fa4291dad36ae457a460f021c Mon Sep 17 00:00:00 2001 From: Dominik Wenger Date: Thu, 4 Feb 2010 17:31:10 +0000 Subject: sync asap codec to ASAP 2.1 git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24511 a1c6a512-1295-4272-9138-f99709370657 --- apps/codecs/libasap/asap_internal.h | 91 +++++++++++++++++++++++-------------- 1 file changed, 57 insertions(+), 34 deletions(-) (limited to 'apps/codecs/libasap/asap_internal.h') diff --git a/apps/codecs/libasap/asap_internal.h b/apps/codecs/libasap/asap_internal.h index 1385215f37..1e38496344 100644 --- a/apps/codecs/libasap/asap_internal.h +++ b/apps/codecs/libasap/asap_internal.h @@ -1,7 +1,7 @@ /* - * asap_internal.h - private interface of the ASAP engine + * asap_internal.h - private interface of ASAP * - * Copyright (C) 2005-2008 Piotr Fusik + * Copyright (C) 2005-2010 Piotr Fusik * * This file is part of ASAP (Another Slight Atari Player), * see http://asap.sourceforge.net @@ -24,33 +24,35 @@ #ifndef _ASAP_INTERNAL_H_ #define _ASAP_INTERNAL_H_ -#if !defined(JAVA) && !defined(CSHARP) +#include "anylang.h" -#include "asap.h" +#ifndef C + +#define ASAP_SONGS_MAX 32 +#define ASAP_SAMPLE_RATE 44100 + +#endif + +#ifdef JAVA + +#define ASAP_FORMAT_U8 8 +#define ASAP_FORMAT_S16_LE 16 +#define ASAP_FORMAT_S16_BE -16 +#define ASAP_SampleFormat int + +#elif defined(CSHARP) || defined(JAVASCRIPT) + +#define ASAP_FORMAT_U8 ASAP_SampleFormat.U8 +#define ASAP_FORMAT_S16_LE ASAP_SampleFormat.S16LE +#define ASAP_FORMAT_S16_BE ASAP_SampleFormat.S16BE -#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 +#elif defined(ACTIONSCRIPT) + +#define ASAP_SampleFormat int + +#else /* C */ + +#include "asap.h" int ASAP_GetByte(ASAP_State *ast, int addr); void ASAP_PutByte(ASAP_State *ast, int addr, int data); @@ -60,7 +62,7 @@ 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); +int PokeySound_GetRandom(ASAP_State *ast, int addr, int cycle); 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); @@ -68,11 +70,11 @@ 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); +extern int cpu_trace; +void trace_cpu(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) */ +#endif /* C */ #define ASAP_MAIN_CLOCK 1773447 @@ -83,11 +85,32 @@ void print_cpu_state(const ASAP_State *ast, int pc, int a, int x, int y, int s, #define NEVER 0x800000 -#define dGetByte(addr) UBYTE(AST memory[addr]) -#define dPutByte(addr, data) AST memory[addr] = (byte) (data) +#define DELTA_SHIFT_POKEY 20 +#define DELTA_SHIFT_GTIA 20 +#define DELTA_SHIFT_COVOX 17 + +/* 6502 player types */ +#define ASAP_TYPE_SAP_B 1 +#define ASAP_TYPE_SAP_C 2 +#define ASAP_TYPE_SAP_D 3 +#define ASAP_TYPE_SAP_S 4 +#define ASAP_TYPE_CMC 5 +#define ASAP_TYPE_CM3 6 +#define ASAP_TYPE_CMR 7 +#define ASAP_TYPE_CMS 8 +#define ASAP_TYPE_DLT 9 +#define ASAP_TYPE_MPT 10 +#define ASAP_TYPE_RMT 11 +#define ASAP_TYPE_TMC 12 +#define ASAP_TYPE_TM2 13 + +#define dGetByte(addr) UBYTE(ast _ memory[addr]) +#define dPutByte(addr, data) ast _ memory[addr] = CAST(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) +#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) + +#define CYCLE_TO_SAMPLE(cycle) TO_INT(((cycle) * ASAP_SAMPLE_RATE + ast _ sample_offset) / ASAP_MAIN_CLOCK) #endif /* _ASAP_INTERNAL_H_ */ -- cgit v1.2.3