1
0
Fork 0
forked from len0rd/rockbox

sync asap codec to ASAP 2.1

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24511 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Dominik Wenger 2010-02-04 17:31:10 +00:00
parent b1a6c9096d
commit 35472fe7f1
11 changed files with 3710 additions and 2605 deletions

View file

@ -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,34 +24,36 @@
#ifndef _ASAP_INTERNAL_H_
#define _ASAP_INTERNAL_H_
#if !defined(JAVA) && !defined(CSHARP)
#include "anylang.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
#elif defined(ACTIONSCRIPT)
#define ASAP_SampleFormat int
#else /* C */
#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);
@ -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_ */