asap.h
上传用户:wstnjxml
上传日期:2014-04-03
资源大小:7248k
文件大小:4k
源码类别:

Windows CE

开发平台:

C/C++

  1. /*
  2.  * asap.h - public interface of the ASAP engine
  3.  *
  4.  * Copyright (C) 2005-2006  Piotr Fusik
  5.  *
  6.  * This file is part of ASAP (Another Slight Atari Player),
  7.  * see http://asap.sourceforge.net
  8.  *
  9.  * ASAP is free software; you can redistribute it and/or modify it
  10.  * under the terms of the GNU General Public License as published
  11.  * by the Free Software Foundation; either version 2 of the License,
  12.  * or (at your option) any later version.
  13.  *
  14.  * ASAP is distributed in the hope that it will be useful,
  15.  * but WITHOUT ANY WARRANTY; without even the implied warranty
  16.  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  17.  * See the GNU General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU General Public License
  20.  * along with ASAP; if not, write to the Free Software Foundation, Inc.,
  21.  * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  22.  */
  23. #ifndef _ASAP_H_
  24. #define _ASAP_H_
  25. #ifdef __cplusplus
  26. extern "C" {
  27. #endif
  28. /* ASAP version. */
  29. #define ASAP_VERSION "0.2.1"
  30. /* Short ASAP credits.
  31.    If you are porting ASAP then display your name, too. */
  32. #define ASAP_CREDITS 
  33.    "Another Slight Atari Player (C) 2005-2006 Piotr Fusikn" 
  34.    "6502 and POKEY sound emulation (C) 1995-2006 Atari800 development teamn" 
  35.    "CMC, MPT, TMC players (C) 1994-2005 Marcin Lewandowskin" 
  36.    "RMT player (C) 2002-2005 Radek Sterban"
  37. /* Short GPL notice.
  38.    Display after the credits. */
  39. #define ASAP_COPYRIGHT 
  40.    "This program is free software; you can redistribute it and/or modifyn" 
  41.    "it under the terms of the GNU General Public License as publishedn" 
  42.    "by the Free Software Foundation; either version 2 of the License,n" 
  43.    "or (at your option) any later version."
  44. /* Output formats. */
  45. /* unsigned char */
  46. #define AUDIO_FORMAT_U8      0
  47. /* signed short, little-endian */
  48. #define AUDIO_FORMAT_S16_LE  1
  49. /* signed short, big-endian */
  50. #define AUDIO_FORMAT_S16_BE  2
  51. /* signed short, machine's native endian convention */
  52. #ifdef WORDS_BIGENDIAN
  53. #define AUDIO_FORMAT_S16_NE  AUDIO_FORMAT_S16_BE
  54. #else
  55. #define AUDIO_FORMAT_S16_NE  AUDIO_FORMAT_S16_LE
  56. #endif
  57. /* Initializes ASAP.
  58.    "frequency" is sample rate in Hz (for example 44100).
  59.    "audio_format" is the format of generated samples (see values above).
  60.    "quality" 0 means Ron Fries' pokeysnd,
  61.    1..3 mean Michael Borisov's mzpokeysnd with different filters.
  62.    You must call this function before any other ASAP function. */
  63. void ASAP_Initialize(unsigned int frequency, unsigned int audio_format,
  64.                      unsigned int quality);
  65. /* Loads a module.
  66.    "filename" is required to detect file format by the filename extension.
  67.    You can pass a fake filename, but the extension must match the format
  68.    of "module".
  69.    "module" is the data (the contents of the file).
  70.    ASAP uses "filename" and "module" only inside this function.
  71.    "module_len" is the number of data bytes.
  72.    Returns non-zero on success.
  73.    If zero is returned, you must not call any of the following functions. */
  74. int ASAP_Load(const char *filename, const unsigned char *module,
  75.               unsigned int module_len);
  76. /* Returns number of channels for the loaded module.
  77.    1 means mono and 2 means stereo. */
  78. unsigned int ASAP_GetChannels(void);
  79. /* Returns number of songs in the loaded module.
  80.    ASAP supports multiple songs per file. */
  81. unsigned int ASAP_GetSongs(void);
  82. /* Returns zero-based number of the default song.
  83.    This corresponds to the "DEFSONG" tag value in a SAP file
  84.    and is zero for other formats. */
  85. unsigned int ASAP_GetDefSong(void);
  86. /* Prepares ASAP to play the specified song of the loaded module.
  87.    "song" is zero-based and must be less that the value returned
  88.    by ASAP_GetSongs(). Normally, after successful ASAP_Load()
  89.    you should use the value of ASAP_GetDefSong(). */
  90. void ASAP_PlaySong(unsigned int song);
  91. /* Fills in the specified buffer with generated samples.
  92.    "buffer" is a buffer for samples, managed outside ASAP.
  93.    "buffer_len" is the length of this buffer in bytes.
  94.    You must call ASAP_PlaySong() before this function.
  95.    Normally you use a buffer of a few kilobytes or less,
  96.    and call ASAP_Generate() in a loop or via a callback. */
  97. void ASAP_Generate(void *buffer, unsigned int buffer_len);
  98. #ifdef __cplusplus
  99. }
  100. #endif
  101. #endif