Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Latest commit

 

History

History
159 lines (134 loc) · 4.46 KB

SDL_mintaudio.h

File metadata and controls

159 lines (134 loc) · 4.46 KB
 
Jul 7, 2003
Jul 7, 2003
2
SDL - Simple DirectMedia Layer
Dec 8, 2008
Dec 8, 2008
3
Copyright (C) 1997-2009 Sam Lantinga
Jul 7, 2003
Jul 7, 2003
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Sam Lantinga
slouken@libsdl.org
*/
Feb 21, 2006
Feb 21, 2006
22
#include "SDL_config.h"
Jul 7, 2003
Jul 7, 2003
23
24
25
26
27
28
/*
MiNT audio driver
Patrice Mandin
*/
29
30
31
32
#ifndef _SDL_mintaudio_h
#define _SDL_mintaudio_h
Feb 16, 2006
Feb 16, 2006
33
#include "../SDL_sysaudio.h"
Jul 7, 2003
Jul 7, 2003
34
#include "SDL_mintaudio_stfa.h"
35
36
37
38
/* Hidden "this" pointer for the audio functions */
#define _THIS SDL_AudioDevice *this
Oct 29, 2004
Oct 29, 2004
39
/* 16 predivisors with 3 clocks max. */
Jul 10, 2006
Jul 10, 2006
40
41
42
43
44
45
46
47
#define MINTAUDIO_maxfreqs (16*3)
typedef struct
{
Uint32 frequency;
Uint32 masterclock;
Uint32 predivisor;
int gpio_bits; /* in case of external clock */
Oct 29, 2004
Oct 29, 2004
48
49
} mint_frequency_t;
Jul 10, 2006
Jul 10, 2006
50
51
52
53
54
struct SDL_PrivateAudioData
{
mint_frequency_t frequencies[MINTAUDIO_maxfreqs];
int freq_count; /* Number of frequencies in the array */
int numfreq; /* Number of selected frequency */
Jul 7, 2003
Jul 7, 2003
55
56
57
};
/* Old variable names */
Oct 29, 2004
Oct 29, 2004
58
59
60
#define MINTAUDIO_frequencies (this->hidden->frequencies)
#define MINTAUDIO_freqcount (this->hidden->freq_count)
Jul 7, 2003
Jul 7, 2003
61
62
63
#define MINTAUDIO_numfreq (this->hidden->numfreq)
/* _MCH cookie (values>>16) */
Jul 10, 2006
Jul 10, 2006
64
65
66
67
68
69
70
71
enum
{
MCH_ST = 0,
MCH_STE,
MCH_TT,
MCH_F30,
MCH_CLONE,
MCH_ARANYM
Jul 7, 2003
Jul 7, 2003
72
73
74
};
/* Master clocks for replay frequencies */
Jul 10, 2006
Jul 10, 2006
75
76
#define MASTERCLOCK_STE 8010666 /* Not sure of this one */
#define MASTERCLOCK_TT 16107953 /* Not sure of this one */
Jul 7, 2003
Jul 7, 2003
77
#define MASTERCLOCK_FALCON1 25175000
Jul 10, 2006
Jul 10, 2006
78
79
80
81
#define MASTERCLOCK_FALCON2 32000000 /* Only usable for DSP56K */
#define MASTERCLOCK_FALCONEXT -1 /* Clock on DSP56K port, unknown */
#define MASTERCLOCK_44K 22579200 /* Standard clock for 44.1 Khz */
#define MASTERCLOCK_48K 24576000 /* Standard clock for 48 Khz */
Jul 7, 2003
Jul 7, 2003
82
83
84
85
86
87
88
89
/* Master clock predivisors */
#define MASTERPREDIV_STE 160
#define MASTERPREDIV_TT 320
#define MASTERPREDIV_FALCON 256
#define MASTERPREDIV_MILAN 256
/* MFP 68901 interrupt sources */
Jul 10, 2006
Jul 10, 2006
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
enum
{
MFP_PARALLEL = 0,
MFP_DCD,
MFP_CTS,
MFP_BITBLT,
MFP_TIMERD,
MFP_BAUDRATE = MFP_TIMERD,
MFP_TIMERC,
MFP_200HZ = MFP_TIMERC,
MFP_ACIA,
MFP_DISK,
MFP_TIMERB,
MFP_HBLANK = MFP_TIMERB,
MFP_TERR,
MFP_TBE,
MFP_RERR,
MFP_RBF,
MFP_TIMERA,
MFP_DMASOUND = MFP_TIMERA,
MFP_RING,
MFP_MONODETECT
Jul 7, 2003
Jul 7, 2003
112
113
114
};
/* Xbtimer() timers */
Jul 10, 2006
Jul 10, 2006
115
116
117
118
119
120
enum
{
XB_TIMERA = 0,
XB_TIMERB,
XB_TIMERC,
XB_TIMERD
Jul 7, 2003
Jul 7, 2003
121
122
123
124
};
/* Variables */
extern SDL_AudioDevice *SDL_MintAudio_device;
Jul 10, 2006
Jul 10, 2006
125
126
127
extern Uint8 *SDL_MintAudio_audiobuf[2]; /* Pointers to buffers */
extern unsigned long SDL_MintAudio_audiosize; /* Length of audio buffer=spec->size */
extern volatile unsigned short SDL_MintAudio_numbuf; /* Buffer to play */
Apr 30, 2006
Apr 30, 2006
128
extern volatile unsigned short SDL_MintAudio_mutex;
Jul 7, 2003
Jul 7, 2003
129
extern cookie_stfa_t *SDL_MintAudio_stfa;
Apr 30, 2006
Apr 30, 2006
130
extern volatile unsigned long SDL_MintAudio_clocktics;
Sep 24, 2006
Sep 24, 2006
131
extern unsigned short SDL_MintAudio_hasfpu; /* To preserve fpu registers if needed */
Jul 7, 2003
Jul 7, 2003
132
Aug 10, 2005
Aug 10, 2005
133
/* MiNT thread variables */
Jul 10, 2006
Jul 10, 2006
134
extern SDL_bool SDL_MintAudio_mint_present;
Aug 10, 2005
Aug 10, 2005
135
136
137
138
extern SDL_bool SDL_MintAudio_quit_thread;
extern SDL_bool SDL_MintAudio_thread_finished;
extern long SDL_MintAudio_thread_pid;
Jul 7, 2003
Jul 7, 2003
139
140
/* Functions */
void SDL_MintAudio_Callback(void);
Aug 7, 2005
Aug 7, 2005
141
void SDL_MintAudio_AddFrequency(_THIS, Uint32 frequency, Uint32 clock,
Jul 10, 2006
Jul 10, 2006
142
Uint32 prediv, int gpio_bits);
Oct 29, 2004
Oct 29, 2004
143
int SDL_MintAudio_SearchFrequency(_THIS, int desired_freq);
Sep 16, 2006
Sep 16, 2006
144
void SDL_MintAudio_CheckFpu(void);
Jul 7, 2003
Jul 7, 2003
145
Aug 10, 2005
Aug 10, 2005
146
147
148
149
/* MiNT thread functions */
int SDL_MintAudio_Thread(long param);
void SDL_MintAudio_WaitThread(void);
Jul 7, 2003
Jul 7, 2003
150
151
152
/* ASM interrupt functions */
void SDL_MintAudio_GsxbInterrupt(void);
void SDL_MintAudio_EmptyGsxbInterrupt(void);
Oct 29, 2004
Oct 29, 2004
153
void SDL_MintAudio_XbiosInterruptMeasureClock(void);
Jul 7, 2003
Jul 7, 2003
154
155
156
157
void SDL_MintAudio_XbiosInterrupt(void);
void SDL_MintAudio_Dma8Interrupt(void);
void SDL_MintAudio_StfaInterrupt(void);
158
#endif /* _SDL_mintaudio_h */
Jul 10, 2006
Jul 10, 2006
159
/* vi: set ts=4 sw=4 expandtab: */