mirror of
https://github.com/elliotnunn/supermario.git
synced 2024-11-22 04:31:30 +00:00
1787 lines
53 KiB
Diff
1787 lines
53 KiB
Diff
From: Horst Beepmanh <>
|
|
Subject: Brave attempt
|
|
|
|
---
|
|
diff --git a/AmphibianDNA/Beep.lib b/AmphibianDNA/Beep.lib
|
|
new file mode 100644
|
|
index 0000000000000000000000000000000000000000..3fc2443acab9236d465e4cd840eee8b61c35090a
|
|
GIT binary patch
|
|
literal 6
|
|
NcmZQ%U|?cm0000M00sa6
|
|
|
|
literal 0
|
|
HcmV?d00001
|
|
|
|
diff --git a/AmphibianDNA/Beep.lib.idump b/AmphibianDNA/Beep.lib.idump
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/AmphibianDNA/Beep.lib.idump
|
|
@@ -0,0 +1 @@
|
|
+OBJ MPS
|
|
\ No newline at end of file
|
|
diff --git a/AmphibianDNA/PPCDsp.c.o b/AmphibianDNA/PPCDsp.c.o
|
|
new file mode 100644
|
|
index 0000000000000000000000000000000000000000..3fc2443acab9236d465e4cd840eee8b61c35090a
|
|
GIT binary patch
|
|
literal 6
|
|
NcmZQ%U|?cm0000M00sa6
|
|
|
|
literal 0
|
|
HcmV?d00001
|
|
|
|
diff --git a/AmphibianDNA/PPCDsp.c.o.idump b/AmphibianDNA/PPCDsp.c.o.idump
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/AmphibianDNA/PPCDsp.c.o.idump
|
|
@@ -0,0 +1 @@
|
|
+OBJ MPS
|
|
\ No newline at end of file
|
|
diff --git a/AmphibianDNA/SoundMgr.lib b/AmphibianDNA/SoundMgr.lib
|
|
new file mode 100644
|
|
index 0000000000000000000000000000000000000000..3fc2443acab9236d465e4cd840eee8b61c35090a
|
|
GIT binary patch
|
|
literal 6
|
|
NcmZQ%U|?cm0000M00sa6
|
|
|
|
literal 0
|
|
HcmV?d00001
|
|
|
|
diff --git a/AmphibianDNA/SoundMgr.lib.idump b/AmphibianDNA/SoundMgr.lib.idump
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/AmphibianDNA/SoundMgr.lib.idump
|
|
@@ -0,0 +1 @@
|
|
+OBJ MPS
|
|
\ No newline at end of file
|
|
diff --git a/AmphibianDNA/StartTest.lib b/AmphibianDNA/StartTest.lib
|
|
new file mode 100644
|
|
index 0000000000000000000000000000000000000000..3fc2443acab9236d465e4cd840eee8b61c35090a
|
|
GIT binary patch
|
|
literal 6
|
|
NcmZQ%U|?cm0000M00sa6
|
|
|
|
literal 0
|
|
HcmV?d00001
|
|
|
|
diff --git a/AmphibianDNA/StartTest.lib.idump b/AmphibianDNA/StartTest.lib.idump
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/AmphibianDNA/StartTest.lib.idump
|
|
@@ -0,0 +1 @@
|
|
+OBJ MPS
|
|
\ No newline at end of file
|
|
diff --git a/DeclData/DeclVideo/ATI/ATI.h b/DeclData/DeclVideo/ATI/ATI.h
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/DeclData/DeclVideo/ATI/ATI.h
|
|
@@ -0,0 +1,122 @@
|
|
+#ifdef _ATI_H_
|
|
+#else
|
|
+#define _ATI_H_
|
|
+
|
|
+#include "Diamond.h"
|
|
+
|
|
+void ATIReset68800 (void);
|
|
+void ATISetSyncRegisters (void);
|
|
+
|
|
+#define k4MegAperture 0
|
|
+#define kADVFUNC_CNTL 0
|
|
+#define kAPERTURE_CNTL 0
|
|
+#define kATIDeviceID 0
|
|
+#define kATIVendorID 0
|
|
+#define kATIVRAMAddr 0
|
|
+#define kBT485Reg0 0
|
|
+#define kBT485Reg1 0
|
|
+#define kBT485Reg2 0
|
|
+#define kBT485Reg3 0
|
|
+#define kCLOCK_SEL 0
|
|
+#define kCLOCK_SELECT 0
|
|
+#define kCLOCK_SELECT_COMPOSITE_SYNC 0
|
|
+#define kCLOCK_SELECT_DIV_2 0
|
|
+#define kCLOCK_SELECT_ENABLE_8514 0
|
|
+#define kCOLOR_SRC_FG 0
|
|
+#define kConfigAddressReg 0
|
|
+#define kConfigDataReg 0
|
|
+#define kCPUIDReg 0
|
|
+#define kCRT_OFFSET_HIGH 0
|
|
+#define kCRT_OFFSET_LOW 0
|
|
+#define kCRT_PITCH 0
|
|
+#define kCURSOR_OFFSET_HIGH 0
|
|
+#define kDAC_DATA 0
|
|
+#define kDAC_MASK 0
|
|
+#define kDAC_R_INDEX 0
|
|
+#define kDAC_W_INDEX 0
|
|
+#define kDEST_CMP_FN 0
|
|
+#define kDiamondDeviceID 0
|
|
+#define kDiamondDrawMode 0
|
|
+#define kDiamondFBBase 0
|
|
+#define kDiamondHorzBlankFallingEdge 0
|
|
+#define kDiamondHorzBlankRisingEdge 0
|
|
+#define kDiamondHorzCounterPreload 0
|
|
+#define kDiamondHorzLength 0
|
|
+#define kDiamondHorzSyncRisingEdge 0
|
|
+#define kDiamondInterruptEnable 0
|
|
+#define kDiamondIOAddr 0
|
|
+#define kDiamondMemConfig 0
|
|
+#define kDiamondPlaneMask 0
|
|
+#define kDiamondRasMax 0
|
|
+#define kDiamondRefreshPeriod 0
|
|
+#define kDiamondScreenRepaintTiming 0
|
|
+#define kDiamondSysConfig 0
|
|
+#define kDiamondVendorID 0
|
|
+#define kDiamondVertBlankFallingEdge 0
|
|
+#define kDiamondVertBlankRisingEdge 0
|
|
+#define kDiamondVertCounterPreload 0
|
|
+#define kDiamondVertLength 0
|
|
+#define kDiamondVertSyncRisingEdge 0
|
|
+#define kDiamondVRAMAddr 0
|
|
+#define kDiamondWindowMaximum 0
|
|
+#define kDiamondWindowMaximum 0
|
|
+#define kDiamondWindowMinimum 0
|
|
+#define kDISP_CNTL 0
|
|
+#define kDP_CONFIG 0
|
|
+#define kDP_CONFIG_BG_COLOR_SRC_BG 0
|
|
+#define kDP_CONFIG_DATA_WIDTH_16 0
|
|
+#define kDP_CONFIG_ENABLE_DRAW 0
|
|
+#define kDP_CONFIG_FG_COLOR_SRC_FG 0
|
|
+#define kDP_CONFIG_MONO_SRC_ALWAYS1 0
|
|
+#define kDP_CONFIG_MSB_FIRST 0
|
|
+#define kDP_CONFIG_POLY_FILL_DISABLE 0
|
|
+#define kDP_CONFIG_READ_MODE_COLOR_DATA 0
|
|
+#define kDP_CONFIG_WRITE 0
|
|
+#define kEXT_FIFO_STATUS 0
|
|
+#define kEXT_GE_CONFIG 0
|
|
+#define kFRGD_MIX 0
|
|
+#define kGE_BUSY 0
|
|
+#define kGE_OFFSET_HIGH 0
|
|
+#define kGE_OFFSET_LOW 0
|
|
+#define kGE_PITCH 0
|
|
+#define kGE_STAT_BUSY 0
|
|
+#define kH_DISP 0
|
|
+#define kH_SYNC_STRT 0
|
|
+#define kH_SYNC_WID 0
|
|
+#define kH_TOTAL 0
|
|
+#define kHORIZONTAL_OVERSCAN 0
|
|
+#define kLOCAL_CNTL 0
|
|
+#define kMEM_CFG 0
|
|
+#define kMISC_OPTIONS 0
|
|
+#define kMIX_FN_S 0
|
|
+#define kMULTIFUNC_CNTL 0
|
|
+#define kNORMAL_GE 0
|
|
+#define kOVERSCAN_COLOR_8_BLUE 0
|
|
+#define kOVERSCAN_COLOR_GREEN_RED 0
|
|
+#define kPCIBaseReg1Offset 0
|
|
+#define kPCIBaseReg2Offset 0
|
|
+#define kPCICommandOffset 0
|
|
+#define kPCIVendorIDOffset 0
|
|
+#define kPixelMask 0
|
|
+#define kRamWrite 0
|
|
+#define kRESET_GE 0
|
|
+#define kSCISSOR_BOTTOM 0
|
|
+#define kSCISSOR_LEFT 0
|
|
+#define kSCISSOR_RIGHT 0
|
|
+#define kSCISSOR_TOP 0
|
|
+#define kSecondPCISlot 0
|
|
+#define kSHADOW_CTL 0
|
|
+#define kSHADOW_SET 0
|
|
+#define kSRC_Y_DIR 0
|
|
+#define kSUBSYS_CNTL 0
|
|
+#define kV_DISP 0
|
|
+#define kV_SYNC_STRT 0
|
|
+#define kV_SYNC_WID 0
|
|
+#define kV_TOTAL 0
|
|
+#define kVERTICAL_OVERSCAN 0
|
|
+#define kWRT_MASK 0
|
|
+#define NEGATIVE 0
|
|
+#define PCI_CNTL 0
|
|
+#define POSITIVE 0
|
|
+
|
|
+#endif
|
|
\ No newline at end of file
|
|
diff --git a/DeclData/DeclVideo/ATI/ATI.h.idump b/DeclData/DeclVideo/ATI/ATI.h.idump
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/DeclData/DeclVideo/ATI/ATI.h.idump
|
|
@@ -0,0 +1 @@
|
|
+TEXTMPS
|
|
\ No newline at end of file
|
|
diff --git a/Interfaces/AIncludes/Sound.a b/Interfaces/AIncludes/Sound.a
|
|
new file mode 100755
|
|
--- /dev/null
|
|
+++ b/Interfaces/AIncludes/Sound.a
|
|
@@ -0,0 +1 @@
|
|
+; Version: 3.24
|
|
; Created: Friday, October 20, 1989 at 9:54:13 PM
|
|
;
|
|
; File: Sound.a
|
|
;
|
|
; Assembler Interface to the Macintosh Libraries
|
|
; Copyright Apple Computer, Inc. 1986-1991
|
|
; All Rights Reserved
|
|
;
|
|
;--------------------------------------------------------------------
|
|
|
|
IF &TYPE('__IncludingSound__') = 'UNDEFINED' THEN
|
|
__IncludingSound__ SET 1
|
|
|
|
|
|
; _______________________________________________________________________
|
|
;
|
|
; Sound Driver
|
|
;
|
|
; _______________________________________________________________________
|
|
|
|
swMode EQU -1
|
|
ftMode EQU 1
|
|
ffMode EQU 0
|
|
|
|
FFSynthRec RECORD 0
|
|
mode DS.W 1
|
|
count DS.L 1
|
|
waveBytes DS.B 30001
|
|
ENDR
|
|
|
|
Tone RECORD 0
|
|
count DS.W 1
|
|
amplitude DS.W 1
|
|
duration DS.W 1
|
|
toneRecSize EQU *
|
|
ENDR
|
|
|
|
SWSynthRec RECORD 0
|
|
mode DS.W 1
|
|
triplets DS.B 5001*Tone.toneRecSize
|
|
ENDR
|
|
|
|
FTSoundRec RECORD 0
|
|
duration DS.W 1
|
|
sound1Rate DS.L 1
|
|
sound1Phase DS.L 1
|
|
sound2Rate DS.L 1
|
|
sound2Phase DS.L 1
|
|
sound3Rate DS.L 1
|
|
sound3Phase DS.L 1
|
|
sound4Rate DS.L 1
|
|
sound4Phase DS.L 1
|
|
sound1Wave DS.L 1
|
|
sound2Wave DS.L 1
|
|
sound3Wave DS.L 1
|
|
sound4Wave DS.L 1
|
|
ENDR
|
|
|
|
FTSynthRec RECORD 0
|
|
mode DS.W 1
|
|
sndRec DS.L 1
|
|
ENDR
|
|
; _______________________________________________________________________
|
|
;
|
|
; Sound Manager constants
|
|
;
|
|
; _______________________________________________________________________
|
|
|
|
synthCodeRsrc EQU 'snth'
|
|
soundListRsrc EQU 'snd '
|
|
|
|
rate22khz EQU $56EE8BA3 ; 22254.54545
|
|
rate11khz EQU $2B7745D1 ; 11127.27273
|
|
|
|
; synthesizer numbers for SndNewChannel
|
|
|
|
squareWaveSynth EQU 1 ; square wave synthesizer
|
|
waveTableSynth EQU 3 ; wave table synthesizer
|
|
sampledSynth EQU 5 ; sampled sound synthesizer
|
|
|
|
; Command Numbers
|
|
|
|
nullCmd EQU 0
|
|
initCmd EQU 1
|
|
freeCmd EQU 2
|
|
quietCmd EQU 3
|
|
flushCmd EQU 4
|
|
reInitCmd EQU 5
|
|
|
|
waitCmd EQU 10
|
|
pauseCmd EQU 11
|
|
resumeCmd EQU 12
|
|
callBackCmd EQU 13
|
|
syncCmd EQU 14
|
|
emptyCmd EQU 15
|
|
|
|
tickleCmd EQU 20
|
|
requestNextCmd EQU 21
|
|
howOftenCmd EQU 22
|
|
wakeUpCmd EQU 23
|
|
availableCmd EQU 24
|
|
versionCmd EQU 25
|
|
totalLoadCmd EQU 26
|
|
loadCmd EQU 27
|
|
|
|
scaleCmd EQU 30
|
|
tempoCmd EQU 31
|
|
|
|
freqDurationCmd EQU 40
|
|
restCmd EQU 41
|
|
freqCmd EQU 42
|
|
ampCmd EQU 43
|
|
timbreCmd EQU 44
|
|
getAmpCmd EQU 45
|
|
waveTableCmd EQU 60
|
|
phaseCmd EQU 61
|
|
|
|
soundCmd EQU 80
|
|
bufferCmd EQU 81
|
|
rateCmd EQU 82
|
|
continueCmd EQU 83
|
|
doubleBufferCmd EQU 84
|
|
getRateCmd EQU 85
|
|
|
|
sizeCmd EQU 90
|
|
convertCmd EQU 91
|
|
|
|
stdQLength EQU 128
|
|
dataOffsetFlag EQU $8000
|
|
|
|
waveInitChannelMask EQU $07
|
|
waveInitChannel0 EQU $04
|
|
waveInitChannel1 EQU $05
|
|
waveInitChannel2 EQU $06
|
|
waveInitChannel3 EQU $07
|
|
|
|
; channel initialization parameters
|
|
|
|
initPanMask EQU $0003 ; mask for right/left pan values
|
|
initSRateMask EQU $0030 ; mask for sample rate values
|
|
initStereoMask EQU $00C0 ; mask for mono/stereo values
|
|
initCompMask EQU $FF00 ; mask for compression IDs
|
|
|
|
initChanLeft EQU $0002 ; left stereo channel
|
|
initChanRight EQU $0003 ; right stereo channel
|
|
initSRate22k EQU $0020 ; 22k sampling rate
|
|
initMono EQU $0080 ; monophonic channel
|
|
initStereo EQU $00C0 ; stereo channel
|
|
initNoInterp EQU $0004 ; no linear interpolation
|
|
initNoDrop EQU $0008 ; no drop-sample conversion
|
|
initMACE3 EQU $0300 ; MACE 3:1
|
|
initMACE6 EQU $0400 ; MACE 6:1
|
|
|
|
initChan0 EQU $0004 ; channel 0 - wave table only
|
|
initChan1 EQU $0005 ; channel 1 - wave table only
|
|
initChan2 EQU $0006 ; channel 2 - wave table only
|
|
initChan3 EQU $0007 ; channel 3 - wave table only
|
|
|
|
stdSH EQU $0
|
|
extSH EQU $FF
|
|
cmpSH EQU $FE
|
|
|
|
notCompressed EQU 0
|
|
twoToOne EQU 1
|
|
eightToThree EQU 2
|
|
threeToOne EQU 3
|
|
sixToOne EQU 4
|
|
|
|
outsideCmpSH EQU 0
|
|
insideCmpSH EQU 1
|
|
aceSuccess EQU 0
|
|
aceMemFull EQU 1
|
|
aceNilBlock EQU 2
|
|
aceBadComp EQU 3
|
|
aceBadEncode EQU 4
|
|
aceBadDest EQU 5
|
|
aceBadCmd EQU 6
|
|
sixToOnePacketSize EQU 8
|
|
threeToOnePacketSize EQU 16
|
|
stateBlockSize EQU 64
|
|
leftOverBlockSize EQU 32
|
|
|
|
firstSoundFormat EQU 1
|
|
secondSoundFormat EQU 2
|
|
|
|
dbBufferReady EQU $00000001
|
|
dbLastBuffer EQU $00000004
|
|
|
|
sysBeepDisable EQU $0000
|
|
sysBeepEnable EQU $0001
|
|
|
|
unitTypeNoSelection EQU $FFFF
|
|
unitTypeSeconds EQU $0000
|
|
|
|
|
|
noneCompType EQU 'NONE' ; use no compression on samples
|
|
MACE3CompType EQU 'MAC3' ; use MACE 3:1 compression on samples
|
|
MACE6CompType EQU 'MAC6' ; use MACE 6:1 compression on samples
|
|
|
|
|
|
; _______________________________________________________________________
|
|
;
|
|
; Sound Manager structures
|
|
;
|
|
; _______________________________________________________________________
|
|
|
|
SndCommand RECORD 0
|
|
cmd DS.W 1 ; INTEGER
|
|
param1 DS.W 1 ; INTEGER
|
|
param2 DS.L 1 ; LONGINT
|
|
sndCSize EQU * ; size of SndCommand
|
|
ENDR
|
|
|
|
SndChannel RECORD 0
|
|
nextChan DS.L 1 ; ^SndChannel
|
|
firstMod DS.L 1 ; Ptr
|
|
callBack DS.L 1 ; ProcPtr
|
|
userInfo DS.L 1
|
|
|
|
; The following is for internal Sound Manager use only.
|
|
|
|
wait DS.L 1 ; Time [LONGINT]
|
|
cmdInProgress DS SndCommand
|
|
flags DS.W 1 ; INTEGER
|
|
qLength DS.W 1 ; INTEGER
|
|
qHead DS.W 1 ; INTEGER
|
|
qTail DS.W 1 ; INTEGER
|
|
queue DS.B stdQLength*SndCommand.sndCSize
|
|
sndChSize EQU * ; size of SndChannel
|
|
ENDR
|
|
|
|
SoundHeader RECORD 0
|
|
samplePtr DS.L 1 ; Ptr - if NIL then samples are in sampleArea
|
|
length DS.L 1 ; LONGINT
|
|
sampleRate DS.L 1 ; Fixed
|
|
loopStart DS.L 1 ; LONGINT
|
|
loopEnd DS.L 1 ; LONGINT
|
|
baseFrequency DS.W 1 ; INTEGER
|
|
sampleArea EQU * ; PACKED ARRAY [0..0] OF Byte
|
|
ENDR
|
|
|
|
SMStatus RECORD 0
|
|
smMaxCPULoad DS.W 1
|
|
smNumChannels DS.W 1
|
|
smCurCPULoad DS.W 1
|
|
ENDR
|
|
|
|
SCStatus RECORD 0
|
|
scStartTime DS.L 1
|
|
scEndTime DS.L 1
|
|
scCurrentTime DS.L 1
|
|
scChannelBusy DS.B 1
|
|
scChannelDisposed DS.B 1
|
|
scChannelPaused DS.B 1
|
|
scUnused DS.B 1
|
|
scChannelAttributes DS.L 1
|
|
scCPULoad DS.L 1
|
|
ENDR
|
|
|
|
AudioSelection RECORD 0
|
|
unitType DS.L 1
|
|
selStart DS.L 1 ; Fixed;
|
|
selEnd DS.L 1 ; Fixed;
|
|
ENDR
|
|
|
|
SndDoubleBuffer RECORD 0
|
|
dbNumFrames DS.L 1
|
|
dbFlags DS.L 1
|
|
dbUserInfo DS.L 2
|
|
dbSoundData EQU *
|
|
ENDR
|
|
|
|
SndDoubleBufferHeader RECORD 0
|
|
dbhNumChannels DS.W 1
|
|
dbhSampleSize DS.W 1
|
|
dbhCompressionID DS.W 1
|
|
dbhPacketSize DS.W 1
|
|
dbhSampleRate DS.L 1
|
|
dbhBufferPtr DS.L 2
|
|
dbhDoubleBack DS.L 1
|
|
SndDoubleBufferHeaderSz EQU *
|
|
ENDR
|
|
|
|
; _______________________________________________________________________
|
|
;
|
|
; MACE structures
|
|
;
|
|
; _______________________________________________________________________
|
|
|
|
|
|
LeftOverBlock RECORD 0
|
|
count DS.L 1
|
|
sampleArea DS.B leftOverBlockSize
|
|
ENDR
|
|
|
|
CmpSoundHeader RECORD 0
|
|
samplePtr DS.L 1 ; if NIL then samples are in sampleArea
|
|
numChannels DS.L 1 ; number of channels mono = 1
|
|
sampleRate DS.L 1 ; sample rate in Apples Fixed point representation
|
|
loopStart DS.L 1 ; loopStart of sound before compression
|
|
loopEnd DS.L 1 ; loopEnd of sound before compression
|
|
encode DS.B 1 ; data structure used , stdSH, extSH, or cmpSH
|
|
baseFrequency DS.B 1 ; same meaning as regular SoundHeader
|
|
numFrames DS.L 1 ; length in frames ( packetFrames or sampleFrames
|
|
AIFFSampleRate DS.B 10 ; IEEE sample rate EXTENDED number
|
|
markerChunk DS.L 1 ; sync track
|
|
futureUse1 DS.L 1 ; reserved by Apple
|
|
futureUse2 DS.L 1 ; reserved by Apple
|
|
stateVars DS.L 1 ; pointer to State Block
|
|
leftOverSamples DS.L 1 ; used to save truncated samples between compression calls
|
|
compressionID DS.W 1 ; 0 means no compression, non zero means compressionID
|
|
packetSize DS.W 1 ; number of bits in compressed sample packet
|
|
snthID DS.W 1 ; Resource ID of Sound Manager snth that contains NRT C/E
|
|
sampleSize DS.W 1 ; number of bits in non-compressed sample
|
|
sampleArea EQU * ; space for when samples follow directly
|
|
ENDR
|
|
|
|
ExtSoundHeader RECORD 0
|
|
samplePtr DS.L 1 ; if NIL then samples are in sampleArea
|
|
numChannels DS.L 1 ; number of channels mono = 1
|
|
sampleRate DS.L 1 ; sample rate in Apples Fixed point representation
|
|
loopStart DS.L 1 ; loopStart of sound before compression
|
|
loopEnd DS.L 1 ; loopEnd of sound before compression
|
|
encode DS.B 1 ; data structure used , stdSH, extSH, or cmpSH
|
|
baseFrequency DS.B 1 ; same meaning as regular SoundHeader
|
|
numFrames DS.L 1 ; length in total number of frames
|
|
AIFFSampleRate DS.B 10 ; IEEE sample rate
|
|
markerChunk DS.L 1 ; sync track
|
|
instrumentChunks DS.L 1
|
|
AESRecording DS.L 1
|
|
sampleSize DS.W 1 ; number of bits in sample
|
|
futureUse1 DS.W 1 ; reserved by Apple
|
|
futureUse2 DS.L 1 ; reserved by Apple
|
|
futureUse3 DS.L 1 ; reserved by Apple
|
|
futureUse4 DS.L 1 ; reserved by Apple
|
|
sampleArea EQU * ; space for when samples follow directly
|
|
ENDR
|
|
|
|
; _______________________________________________________________________
|
|
;
|
|
; Sound Input
|
|
;
|
|
; _______________________________________________________________________
|
|
|
|
siDeviceIsConnected EQU 1 ; input device is connected and ready for input
|
|
siDeviceNotConnected EQU 0 ; input device is not connected
|
|
siDontKnowIfConnected EQU -1 ; can't tell if input device is connected
|
|
|
|
|
|
; Info Selectors for the SPBGetDeviceInfo and SPBSetDeviceInfo calls
|
|
|
|
siDeviceConnected EQU 'dcon' ; input device connection status
|
|
siAGCOnOff EQU 'agc ' ; automatic gain control state
|
|
siPlayThruOnOff EQU 'plth' ; playthrough state
|
|
siTwosComplementOnOff EQU 'twos' ; two's complement state
|
|
siLevelMeterOnOff EQU 'lmet' ; level meter state
|
|
siRecordingQuality EQU 'qual' ; recording quality
|
|
siVoxRecordInfo EQU 'voxr' ; VOX record parameters
|
|
siVoxStopInfo EQU 'voxs' ; VOX stop parameters
|
|
siNumberChannels EQU 'chan' ; current number of channels
|
|
siSampleSize EQU 'ssiz' ; current sample size
|
|
siSampleRate EQU 'srat' ; current sample rate
|
|
siCompressionType EQU 'comp' ; current compression type
|
|
siCompressionFactor EQU 'cmfa' ; current compression factor
|
|
siCompressionHeader EQU 'cmhd' ; return compression header
|
|
siDeviceName EQU 'name' ; input device name
|
|
siDeviceIcon EQU 'icon' ; input device icon
|
|
siDeviceBufferInfo EQU 'dbin' ; size of interrupt buffer
|
|
siSampleSizeAvailable EQU 'ssav' ; sample sizes available
|
|
siSampleRateAvailable EQU 'srav' ; sample rates available
|
|
siCompressionAvailable EQU 'cmav' ; compression types available
|
|
siChannelAvailable EQU 'chav' ; number of channels available
|
|
siAsync EQU 'asyn' ; asynchronous capability
|
|
siOptionsDialog EQU 'optd' ; display options dialog
|
|
siContinuous EQU 'cont' ; continous recording
|
|
siActiveChannels EQU 'chac' ; active channels
|
|
siActiveLevels EQU 'lmac' ; active meter levels
|
|
siInputSource EQU 'sour' ; input source selector
|
|
siInitializeDriver EQU 'init' ; reserved for internal use only
|
|
siCloseDriver EQU 'clos' ; reserved for internal use only
|
|
siPauseRecording EQU 'paus' ; reserved for internal use only
|
|
siUserInterruptProc EQU 'user' ; reserved for internal use only
|
|
|
|
; Quality Selectors for the SndRecord and SndRecordToFile calls
|
|
|
|
siBestQuality EQU 'best'
|
|
siBetterQuality EQU 'betr'
|
|
siGoodQuality EQU 'good'
|
|
|
|
; Sound Input Parameter Block (SPB)
|
|
|
|
SInParam RECORD 0
|
|
inRefNum DS.L 1 ; pointer to Application Reference Block
|
|
count DS.L 1 ; the # of bytes to read
|
|
milliseconds DS.L 1 ; the # of ms of sound to read
|
|
bufferLength DS.L 1 ; length of input buffer
|
|
inputBuffer DS.L 1 ; pointer to input buffer
|
|
completionRoutine DS.L 1 ; procPtr to the user completion routine
|
|
interruptRoutine DS.L 1 ; procPtr to the user interrupt routine
|
|
userLong DS.L 1 ; reserved for user data
|
|
error DS.W 1 ; OSErr will be returned to asynch routines
|
|
unused1 DS.L 1 ; reserved for future expansion - must be zero
|
|
SInPARAMSize EQU * ; size of SInParam
|
|
ENDR
|
|
|
|
|
|
ENDIF ; ...already included
|
|
\ No newline at end of file
|
|
diff --git a/Interfaces/AIncludes/Sound.a.idump b/Interfaces/AIncludes/Sound.a.idump
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/Interfaces/AIncludes/Sound.a.idump
|
|
@@ -0,0 +1 @@
|
|
+TEXTMPS
|
|
diff --git a/Interfaces/CIncludes/Sound.h b/Interfaces/CIncludes/Sound.h
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/Interfaces/CIncludes/Sound.h
|
|
@@ -0,0 +1,521 @@
|
|
+
|
|
+/************************************************************
|
|
+
|
|
+Created: Monday, December 2, 1991 at 5:07 PM
|
|
+ Sound.h
|
|
+ C Interface to the Macintosh Libraries
|
|
+
|
|
+
|
|
+ Copyright Apple Computer, Inc. 1986-1991
|
|
+ All rights reserved
|
|
+
|
|
+************************************************************/
|
|
+
|
|
+
|
|
+#ifndef __SOUND__
|
|
+#define __SOUND__
|
|
+
|
|
+#ifndef __TYPES__
|
|
+#include <Types.h>
|
|
+#endif
|
|
+
|
|
+#ifndef __FILES__
|
|
+#include <Files.h>
|
|
+#endif
|
|
+
|
|
+
|
|
+enum {
|
|
+
|
|
+ swMode = -1, /* Sound Driver modes */
|
|
+ ftMode = 1,
|
|
+ ffMode = 0,
|
|
+
|
|
+
|
|
+#define synthCodeRsrc 'snth' /* Resource types used by Sound Manager */
|
|
+#define soundListRsrc 'snd '
|
|
+
|
|
+#define twelfthRootTwo 1.05946309434
|
|
+
|
|
+ rate22khz = 0x56EE8BA3, /* 22254.54545 in fixed-point */
|
|
+ rate11khz = 0x2B7745D1, /* 11127.27273 in fixed-point */
|
|
+
|
|
+/* synthesizer numbers for SndNewChannel */
|
|
+ squareWaveSynth = 1, /*square wave synthesizer*/
|
|
+ waveTableSynth = 3, /*wave table synthesizer*/
|
|
+ sampledSynth = 5, /*sampled sound synthesizer*/
|
|
+
|
|
+/* old Sound Manager MACE synthesizer numbers */
|
|
+ MACE3snthID = 11,
|
|
+ MACE6snthID = 13,
|
|
+
|
|
+/* command numbers for SndDoCommand and SndDoImmediate */
|
|
+ nullCmd = 0,
|
|
+ initCmd = 1,
|
|
+ freeCmd = 2,
|
|
+ quietCmd = 3,
|
|
+ flushCmd = 4,
|
|
+ reInitCmd = 5,
|
|
+
|
|
+ waitCmd = 10,
|
|
+ pauseCmd = 11,
|
|
+ resumeCmd = 12,
|
|
+ callBackCmd = 13
|
|
+};
|
|
+enum {
|
|
+ syncCmd = 14,
|
|
+ emptyCmd = 15,
|
|
+
|
|
+ tickleCmd = 20,
|
|
+ requestNextCmd = 21,
|
|
+ howOftenCmd = 22,
|
|
+ wakeUpCmd = 23,
|
|
+ availableCmd = 24,
|
|
+ versionCmd = 25,
|
|
+ totalLoadCmd = 26,
|
|
+ loadCmd = 27,
|
|
+
|
|
+ scaleCmd = 30,
|
|
+ tempoCmd = 31,
|
|
+
|
|
+ freqDurationCmd = 40,
|
|
+ restCmd = 41,
|
|
+ freqCmd = 42,
|
|
+ ampCmd = 43,
|
|
+ timbreCmd = 44,
|
|
+ getAmpCmd = 45,
|
|
+
|
|
+ volumeCmd = 46, /*sound manager 3.0 or later only*/
|
|
+ getVolumeCmd = 47, /*sound manager 3.0 or later only*/
|
|
+ clockComponentCmd = 50, /*sound manager 3.2.1 or later only*/
|
|
+ getClockComponentCmd = 51, /*sound manager 3.2.1 or later only*/
|
|
+ scheduledSoundCmd = 52, /*sound manager 3.3 or later only*/
|
|
+ linkSoundComponentsCmd = 53, /*sound manager 3.3 or later only*/
|
|
+
|
|
+ waveTableCmd = 60,
|
|
+ phaseCmd = 61
|
|
+};
|
|
+enum {
|
|
+
|
|
+ soundCmd = 80,
|
|
+ bufferCmd = 81,
|
|
+ rateCmd = 82,
|
|
+ continueCmd = 83,
|
|
+ doubleBufferCmd = 84,
|
|
+ getRateCmd = 85,
|
|
+ rateMultiplierCmd = 86,
|
|
+ getRateMultiplierCmd = 87,
|
|
+
|
|
+ sizeCmd = 90,
|
|
+ convertCmd = 91,
|
|
+
|
|
+ stdQLength = 128,
|
|
+ dataOffsetFlag = 0x8000,
|
|
+
|
|
+ waveInitChannelMask = 0x07,
|
|
+ waveInitChannel0 = 0x04,
|
|
+ waveInitChannel1 = 0x05,
|
|
+ waveInitChannel2 = 0x06,
|
|
+ waveInitChannel3 = 0x07,
|
|
+
|
|
+/* channel initialization parameters */
|
|
+ initPanMask = 0x0003, /* mask for right/left pan values */
|
|
+ initSRateMask = 0x0030, /* mask for sample rate values */
|
|
+ initStereoMask = 0x00C0, /* mask for mono/stereo values */
|
|
+ initCompMask = 0xFF00, /* mask for compression IDs */
|
|
+
|
|
+ initChanLeft = 0x0002 /* left stereo channel */
|
|
+};
|
|
+enum {
|
|
+ initChanRight = 0x0003, /* right stereo channel */
|
|
+ initNoInterp = 0x0004, /* no linear interpolation */
|
|
+ initNoDrop = 0x0008, /* no drop-sample conversion */
|
|
+ initMono = 0x0080, /* monophonic channel */
|
|
+ initStereo = 0x00C0, /* stereo channel */
|
|
+ initMACE3 = 0x0300, /* MACE 3:1 */
|
|
+ initMACE6 = 0x0400, /* MACE 6:1 */
|
|
+
|
|
+ initChan0 = 0x0004, /* channel 0 - wave table only */
|
|
+ initChan1 = 0x0005, /* channel 1 - wave table only */
|
|
+ initChan2 = 0x0006, /* channel 2 - wave table only */
|
|
+ initChan3 = 0x0007, /* channel 3 - wave table only */
|
|
+
|
|
+ stdSH = 0x00, /* Standard sound header encode value */
|
|
+ extSH = 0xFF, /* Extended sound header encode value */
|
|
+ cmpSH = 0xFE, /* Compressed sound header encode value */
|
|
+
|
|
+ notCompressed = 0, /* compression ID's */
|
|
+ twoToOne = 1,
|
|
+ eightToThree = 2,
|
|
+ threeToOne = 3,
|
|
+ sixToOne = 4,
|
|
+
|
|
+ outsideCmpSH = 0 /* MACE constants */
|
|
+};
|
|
+enum {
|
|
+ insideCmpSH = 1,
|
|
+ aceSuccess = 0,
|
|
+ aceMemFull = 1,
|
|
+ aceNilBlock = 2,
|
|
+ aceBadComp = 3,
|
|
+ aceBadEncode = 4,
|
|
+ aceBadDest = 5,
|
|
+ aceBadCmd = 6,
|
|
+ sixToOnePacketSize = 8,
|
|
+ threeToOnePacketSize = 16,
|
|
+ stateBlockSize = 64,
|
|
+ leftOverBlockSize = 32,
|
|
+
|
|
+ firstSoundFormat = 0x0001, /* general sound format */
|
|
+ secondSoundFormat = 0x0002, /* special sampled sound format (HyperCard) */
|
|
+
|
|
+ dbBufferReady = 0x00000001, /* double buffer is filled */
|
|
+ dbLastBuffer = 0x00000004, /* last double buffer to play */
|
|
+
|
|
+ sysBeepDisable = 0x0000, /* SysBeep() enable flags */
|
|
+ sysBeepEnable = 0x0001,
|
|
+
|
|
+ unitTypeNoSelection = 0xFFFF, /* unitTypes for AudioSelection.unitType */
|
|
+ unitTypeSeconds = 0x0000
|
|
+};
|
|
+
|
|
+
|
|
+/* Structures for Sound Driver */
|
|
+
|
|
+
|
|
+typedef unsigned char FreeWave[30001];
|
|
+
|
|
+struct FFSynthRec {
|
|
+ short mode;
|
|
+ Fixed count;
|
|
+ FreeWave waveBytes;
|
|
+};
|
|
+
|
|
+typedef struct FFSynthRec FFSynthRec;
|
|
+typedef FFSynthRec *FFSynthPtr;
|
|
+
|
|
+struct Tone {
|
|
+ short count;
|
|
+ short amplitude;
|
|
+ short duration;
|
|
+};
|
|
+
|
|
+typedef struct Tone Tone;
|
|
+
|
|
+
|
|
+typedef Tone Tones[5001];
|
|
+
|
|
+struct SWSynthRec {
|
|
+ short mode;
|
|
+ Tones triplets;
|
|
+};
|
|
+
|
|
+typedef struct SWSynthRec SWSynthRec;
|
|
+typedef SWSynthRec *SWSynthPtr;
|
|
+
|
|
+
|
|
+typedef unsigned char Wave[256];
|
|
+typedef Wave *WavePtr;
|
|
+
|
|
+struct FTSoundRec {
|
|
+ short duration;
|
|
+ Fixed sound1Rate;
|
|
+ long sound1Phase;
|
|
+ Fixed sound2Rate;
|
|
+ long sound2Phase;
|
|
+ Fixed sound3Rate;
|
|
+ long sound3Phase;
|
|
+ Fixed sound4Rate;
|
|
+ long sound4Phase;
|
|
+ WavePtr sound1Wave;
|
|
+ WavePtr sound2Wave;
|
|
+ WavePtr sound3Wave;
|
|
+ WavePtr sound4Wave;
|
|
+};
|
|
+
|
|
+typedef struct FTSoundRec FTSoundRec;
|
|
+typedef FTSoundRec *FTSndRecPtr;
|
|
+
|
|
+struct FTSynthRec {
|
|
+ short mode;
|
|
+ FTSndRecPtr sndRec;
|
|
+};
|
|
+
|
|
+typedef struct FTSynthRec FTSynthRec;
|
|
+typedef FTSynthRec *FTSynthPtr;
|
|
+
|
|
+
|
|
+typedef pascal void (*SndCompletionProcPtr)(void);
|
|
+
|
|
+/* Structures for Sound Manager */
|
|
+
|
|
+struct SndCommand {
|
|
+ unsigned short cmd;
|
|
+ short param1;
|
|
+ long param2;
|
|
+};
|
|
+
|
|
+typedef struct SndCommand SndCommand;
|
|
+
|
|
+
|
|
+typedef long Time; /* in half milliseconds */
|
|
+
|
|
+
|
|
+
|
|
+typedef struct SndChannel SndChannel;
|
|
+typedef SndChannel *SndChannelPtr;
|
|
+
|
|
+
|
|
+typedef pascal void (*SndCallBackProcPtr)(SndChannelPtr chan, SndCommand cmd);
|
|
+
|
|
+struct SndChannel {
|
|
+ struct SndChannel *nextChan;
|
|
+ Ptr firstMod; /* reserved for the Sound Manager */
|
|
+ SndCallBackProcPtr callBack;
|
|
+ long userInfo;
|
|
+ Time wait; /* The following is for internal Sound Manager use only.*/
|
|
+ SndCommand cmdInProgress;
|
|
+ short flags;
|
|
+ short qLength;
|
|
+ short qHead; /* next spot to read or -1 if empty */
|
|
+ short qTail; /* next spot to write = qHead if full */
|
|
+ SndCommand queue[stdQLength];
|
|
+};
|
|
+
|
|
+/* MACE structures */
|
|
+struct StateBlock {
|
|
+ short stateVar[stateBlockSize];
|
|
+};
|
|
+
|
|
+typedef struct StateBlock StateBlock;
|
|
+typedef StateBlock *StateBlockPtr;
|
|
+
|
|
+struct LeftOverBlock {
|
|
+ unsigned long count;
|
|
+ char sampleArea[leftOverBlockSize];
|
|
+};
|
|
+
|
|
+typedef struct LeftOverBlock LeftOverBlock;
|
|
+typedef LeftOverBlock *LeftOverBlockPtr;
|
|
+
|
|
+struct ModRef {
|
|
+ unsigned short modNumber;
|
|
+ long modInit;
|
|
+};
|
|
+
|
|
+typedef struct ModRef ModRef;
|
|
+
|
|
+struct SndListResource {
|
|
+ short format;
|
|
+ short numModifiers;
|
|
+ ModRef modifierPart[1]; /*This is a variable length array*/
|
|
+ short numCommands;
|
|
+ SndCommand commandPart[1]; /*This is a variable length array*/
|
|
+ char dataPart[1]; /*This is a variable length array*/
|
|
+};
|
|
+
|
|
+typedef struct SndListResource SndListResource;
|
|
+typedef SndListResource *SndListPtr;
|
|
+
|
|
+struct SoundHeader {
|
|
+ Ptr samplePtr; /* if NIL then samples are in sampleArea */
|
|
+ unsigned long length; /* length of sound in bytes */
|
|
+ Fixed sampleRate; /* sample rate for this sound */
|
|
+ unsigned long loopStart; /* start of looping portion */
|
|
+ unsigned long loopEnd; /* end of looping portion */
|
|
+ unsigned char encode; /* header encoding */
|
|
+ unsigned char baseFrequency; /* baseFrequency value */
|
|
+ char sampleArea[1];
|
|
+};
|
|
+
|
|
+typedef struct SoundHeader SoundHeader;
|
|
+typedef SoundHeader *SoundHeaderPtr;
|
|
+
|
|
+struct CmpSoundHeader {
|
|
+ Ptr samplePtr; /* if nil then samples are in sample area */
|
|
+ unsigned long numChannels; /* number of channels i.e. mono = 1 */
|
|
+ Fixed sampleRate; /* sample rate in Apples Fixed point representation */
|
|
+ unsigned long loopStart; /* loopStart of sound before compression */
|
|
+ unsigned long loopEnd; /* loopEnd of sound before compression */
|
|
+ unsigned char encode; /* data structure used , stdSH, extSH, or cmpSH */
|
|
+ unsigned char baseFrequency; /* same meaning as regular SoundHeader */
|
|
+ unsigned long numFrames; /* length in frames ( packetFrames or sampleFrames ) */
|
|
+ extended80 AIFFSampleRate; /* IEEE sample rate */
|
|
+ Ptr markerChunk; /* sync track */
|
|
+ Ptr futureUse1; /* reserved by Apple */
|
|
+ Ptr futureUse2; /* reserved by Apple */
|
|
+ StateBlockPtr stateVars; /* pointer to State Block */
|
|
+ LeftOverBlockPtr leftOverSamples; /* used to save truncated samples between compression calls */
|
|
+ unsigned short compressionID; /* 0 means no compression, non zero means compressionID */
|
|
+ unsigned short packetSize; /* number of bits in compressed sample packet */
|
|
+ unsigned short snthID; /* resource ID of Sound Manager snth that contains NRT C/E */
|
|
+ unsigned short sampleSize; /* number of bits in non-compressed sample */
|
|
+ char sampleArea[1]; /* space for when samples follow directly */
|
|
+};
|
|
+
|
|
+typedef struct CmpSoundHeader CmpSoundHeader;
|
|
+typedef CmpSoundHeader *CmpSoundHeaderPtr;
|
|
+
|
|
+struct ExtSoundHeader {
|
|
+ Ptr samplePtr; /* if nil then samples are in sample area */
|
|
+ unsigned long numChannels; /* number of channels, ie mono = 1 */
|
|
+ Fixed sampleRate; /* sample rate in Apples Fixed point representation */
|
|
+ unsigned long loopStart; /* same meaning as regular SoundHeader */
|
|
+ unsigned long loopEnd; /* same meaning as regular SoundHeader */
|
|
+ unsigned char encode; /* data structure used , stdSH, extSH, or cmpSH */
|
|
+ unsigned char baseFrequency; /* same meaning as regular SoundHeader */
|
|
+ unsigned long numFrames; /* length in total number of frames */
|
|
+ extended80 AIFFSampleRate; /* IEEE sample rate */
|
|
+ Ptr markerChunk; /* sync track */
|
|
+ Ptr instrumentChunks; /* AIFF instrument chunks */
|
|
+ Ptr AESRecording;
|
|
+ unsigned short sampleSize; /* number of bits in sample */
|
|
+ unsigned short futureUse1; /* reserved by Apple */
|
|
+ unsigned long futureUse2; /* reserved by Apple */
|
|
+ unsigned long futureUse3; /* reserved by Apple */
|
|
+ unsigned long futureUse4; /* reserved by Apple */
|
|
+ char sampleArea[1]; /* space for when samples follow directly */
|
|
+};
|
|
+
|
|
+typedef struct ExtSoundHeader ExtSoundHeader;
|
|
+typedef ExtSoundHeader *ExtSoundHeaderPtr;
|
|
+
|
|
+struct ConversionBlock {
|
|
+ short destination;
|
|
+ short unused;
|
|
+ CmpSoundHeaderPtr inputPtr;
|
|
+ CmpSoundHeaderPtr outputPtr;
|
|
+};
|
|
+
|
|
+typedef struct ConversionBlock ConversionBlock;
|
|
+typedef ConversionBlock *ConversionBlockPtr;
|
|
+
|
|
+struct SMStatus {
|
|
+ short smMaxCPULoad;
|
|
+ short smNumChannels;
|
|
+ short smCurCPULoad;
|
|
+};
|
|
+
|
|
+typedef struct SMStatus SMStatus;
|
|
+typedef SMStatus *SMStatusPtr;
|
|
+
|
|
+struct SCStatus {
|
|
+ Fixed scStartTime;
|
|
+ Fixed scEndTime;
|
|
+ Fixed scCurrentTime;
|
|
+ Boolean scChannelBusy;
|
|
+ Boolean scChannelDisposed;
|
|
+ Boolean scChannelPaused;
|
|
+ Boolean scUnused;
|
|
+ unsigned long scChannelAttributes;
|
|
+ long scCPULoad;
|
|
+};
|
|
+
|
|
+typedef struct SCStatus SCStatus;
|
|
+typedef SCStatus *SCStatusPtr;
|
|
+
|
|
+struct AudioSelection {
|
|
+ long unitType;
|
|
+ Fixed selStart;
|
|
+ Fixed selEnd;
|
|
+};
|
|
+
|
|
+typedef struct AudioSelection AudioSelection;
|
|
+typedef AudioSelection *AudioSelectionPtr;
|
|
+
|
|
+struct SndDoubleBuffer {
|
|
+ long dbNumFrames;
|
|
+ long dbFlags;
|
|
+ long dbUserInfo[2];
|
|
+ char dbSoundData[1];
|
|
+};
|
|
+
|
|
+typedef struct SndDoubleBuffer SndDoubleBuffer;
|
|
+typedef SndDoubleBuffer *SndDoubleBufferPtr;
|
|
+
|
|
+
|
|
+typedef pascal void (*SndDoubleBackProcPtr) (SndChannelPtr channel,
|
|
+ SndDoubleBufferPtr doubleBufferPtr);
|
|
+
|
|
+struct SndDoubleBufferHeader {
|
|
+ short dbhNumChannels;
|
|
+ short dbhSampleSize;
|
|
+ short dbhCompressionID;
|
|
+ short dbhPacketSize;
|
|
+ Fixed dbhSampleRate;
|
|
+ SndDoubleBufferPtr dbhBufferPtr[2];
|
|
+ SndDoubleBackProcPtr dbhDoubleBack;
|
|
+};
|
|
+
|
|
+typedef struct SndDoubleBufferHeader SndDoubleBufferHeader;
|
|
+typedef SndDoubleBufferHeader *SndDoubleBufferHeaderPtr;
|
|
+
|
|
+
|
|
+#ifdef __cplusplus
|
|
+extern "C" {
|
|
+#endif
|
|
+pascal OSErr SndDoCommand(SndChannelPtr chan,const SndCommand *cmd,Boolean noWait)
|
|
+ = 0xA803;
|
|
+pascal OSErr SndDoImmediate(SndChannelPtr chan,const SndCommand *cmd)
|
|
+ = 0xA804;
|
|
+pascal OSErr SndNewChannel(SndChannelPtr *chan,short synth,long init,SndCallBackProcPtr userRoutine)
|
|
+ = 0xA807;
|
|
+pascal OSErr SndDisposeChannel(SndChannelPtr chan,Boolean quietNow)
|
|
+ = 0xA801;
|
|
+pascal OSErr SndPlay(SndChannelPtr chan,Handle sndHdl,Boolean async)
|
|
+ = 0xA805;
|
|
+pascal OSErr SndAddModifier(SndChannelPtr chan,ProcPtr modifier,short id,
|
|
+ long init)
|
|
+ = 0xA802;
|
|
+pascal OSErr SndControl(short id,SndCommand *cmd)
|
|
+ = 0xA806;
|
|
+
|
|
+pascal void SetSoundVol(short level);
|
|
+#pragma parameter GetSoundVol(__A0)
|
|
+pascal void GetSoundVol(short *level)
|
|
+ = {0x4218,0x10B8,0x0260};
|
|
+pascal void StartSound(const void *synthRec,long numBytes,SndCompletionProcPtr completionRtn);
|
|
+pascal void StopSound(void);
|
|
+pascal Boolean SoundDone(void);
|
|
+
|
|
+pascal NumVersion SndSoundManagerVersion(void)
|
|
+ = {0x203C,0x000C,0x0008,0xA800};
|
|
+pascal OSErr SndStartFilePlay(SndChannelPtr chan,short fRefNum,short resNum,
|
|
+ long bufferSize,void *theBuffer,AudioSelectionPtr theSelection,ProcPtr theCompletion,
|
|
+ Boolean async)
|
|
+ = {0x203C,0x0D00,0x0008,0xA800};
|
|
+pascal OSErr SndPauseFilePlay(SndChannelPtr chan)
|
|
+ = {0x203C,0x0204,0x0008,0xA800};
|
|
+pascal OSErr SndStopFilePlay(SndChannelPtr chan,Boolean async)
|
|
+ = {0x203C,0x0308,0x0008,0xA800};
|
|
+pascal OSErr SndChannelStatus(SndChannelPtr chan,short theLength,SCStatusPtr theStatus)
|
|
+ = {0x203C,0x0010,0x0008,0xA800};
|
|
+pascal OSErr SndManagerStatus(short theLength,SMStatusPtr theStatus)
|
|
+ = {0x203C,0x0014,0x0008,0xA800};
|
|
+pascal void SndGetSysBeepState(short *sysBeepState)
|
|
+ = {0x203C,0x0018,0x0008,0xA800};
|
|
+pascal OSErr SndSetSysBeepState(short sysBeepState)
|
|
+ = {0x203C,0x001C,0x0008,0xA800};
|
|
+pascal OSErr SndPlayDoubleBuffer(SndChannelPtr chan,SndDoubleBufferHeaderPtr theParams)
|
|
+ = {0x203C,0x0020,0x0008,0xA800};
|
|
+pascal OSErr GetSysBeepVolume(long *level)
|
|
+ = {0x203C,0x0224,0x0018,0xA800};
|
|
+
|
|
+pascal NumVersion MACEVersion(void)
|
|
+ = {0x203C,0x0000,0x0010,0xA800};
|
|
+pascal void Comp3to1(const void *inBuffer,void *outBuffer,unsigned long cnt,
|
|
+ const void *inState,void *outState,unsigned long numChannels,unsigned long whichChannel)
|
|
+ = {0x203C,0x0004,0x0010,0xA800};
|
|
+pascal void Exp1to3(const void *inBuffer,void *outBuffer,unsigned long cnt,
|
|
+ const void *inState,void *outState,unsigned long numChannels,unsigned long whichChannel)
|
|
+ = {0x203C,0x0008,0x0010,0xA800};
|
|
+pascal void Comp6to1(const void *inBuffer,void *outBuffer,unsigned long cnt,
|
|
+ const void *inState,void *outState,unsigned long numChannels,unsigned long whichChannel)
|
|
+ = {0x203C,0x000C,0x0010,0xA800};
|
|
+pascal void Exp1to6(const void *inBuffer,void *outBuffer,unsigned long cnt,
|
|
+ const void *inState,void *outState,unsigned long numChannels,unsigned long whichChannel)
|
|
+ = {0x203C,0x0010,0x0010,0xA800};
|
|
+#ifdef __cplusplus
|
|
+}
|
|
+#endif
|
|
+
|
|
+#endif
|
|
diff --git a/Interfaces/CIncludes/Sound.h.idump b/Interfaces/CIncludes/Sound.h.idump
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/Interfaces/CIncludes/Sound.h.idump
|
|
@@ -0,0 +1 @@
|
|
+TEXTMPS
|
|
\ No newline at end of file
|
|
diff --git a/Interfaces/CIncludes/Sound.h.rdump b/Interfaces/CIncludes/Sound.h.rdump
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/Interfaces/CIncludes/Sound.h.rdump
|
|
@@ -0,0 +1,45 @@
|
|
+#if 0
|
|
+data '????' (0, "Header as fake resource (not for Rez)") {
|
|
+ $"0002 0031 0032 0002 0031 005A 000F 0061" /* ...1.2...1.Z...a */
|
|
+ $"6D70 436D 6420 4551 5520 3433 2000 0055" /* mpCmd EQU 43 ..U */
|
|
+ $"0753 6F75 6E64 2E68 0200 0000 5445 5854" /* .Sound.h....TEXT */
|
|
+ $"4D50 5320 0000 0000 0000 0000 0000 014D" /* MPS ...........M */
|
|
+ $"0000 5445 5854 4D50 5320 0000 0000 0000" /* ..TEXTMPS ...... */
|
|
+ $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */
|
|
+ $"0000 A664 D9C0 0000 0000 0000 021B 0000" /* ...d............ */
|
|
+ $"0000 01C0 4341 5244 0000 3B1E 0000 0000" /* ....CARD..;..... */
|
|
+ $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */
|
|
+ $"0000 202A 0000 122E 0000 0000 0000 0000" /* .. *............ */
|
|
+ $"001A 0000 0160 0009 0011 0031 322F 3131" /* .....`.....12/11 */
|
|
+ $"2F38 3720 353A 3533 2041 4D00 0002 0006" /* /87 5:53 AM..... */
|
|
+ $"0053 6F75 6E64 0003 000A 0074 696D 6272" /* .Sound.....timbr */
|
|
+ $"6543 6D64 0004 0003 0034 3400 0005 0006" /* eCmd.....44..... */
|
|
+ $"0024 3030 3332 000C 000C 0052 6F6E 204D" /* .$0032.....Ron M */
|
|
+};
|
|
+#endif
|
|
+
|
|
+data 'vers' (1) {
|
|
+ $"0321 8000 0000 0533 2E32 2E31 2833 2E32" /* .!.....3.2.1(3.2 */
|
|
+ $"2E31 2C20 A920 4170 706C 6520 436F 6D70" /* .1, . Apple Comp */
|
|
+ $"7574 6572 2C20 496E 632E 2031 3938 352D" /* uter, Inc. 1985- */
|
|
+ $"3139 3932 2E" /* 1992. */
|
|
+};
|
|
+
|
|
+data 'vers' (2, purgeable) {
|
|
+ $"0330 8000 0000 0333 2E33 074D 5057 2033" /* .0.....3.3.MPW 3 */
|
|
+ $"2E33" /* .3 */
|
|
+};
|
|
+
|
|
+data 'MPSR' (1005) {
|
|
+ $"0009 4D6F 6E61 636F 00FF 001F 01E1 01E2" /* ..Monaco........ */
|
|
+ $"7FFF 015E 0009 000A 7FFF 015F 000A 01E2" /* ...^......._.... */
|
|
+ $"7FFF 0006 0004 0031 000A 015D 01E0 0031" /* .......1...]...1 */
|
|
+ $"000A 015D 01E0 A664 D9C0 0000 0000 0000" /* ...]...d........ */
|
|
+ $"0000 0000 0000 0100" /* ........ */
|
|
+};
|
|
+
|
|
+data 'MPSR' (1008) {
|
|
+ $"0031 000A 015D 01E0 0031 000A 015D 01E0" /* .1...]...1...].. */
|
|
+ $"0000 0000 0000 0000 0000 0000 0000" /* .............. */
|
|
+};
|
|
+
|
|
diff --git a/Interfaces/PInterfaces/Sound.p b/Interfaces/PInterfaces/Sound.p
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/Interfaces/PInterfaces/Sound.p
|
|
@@ -0,0 +1,455 @@
|
|
+
|
|
+{
|
|
+Created: Monday, December 2, 1991 at 5:09 PM
|
|
+ Sound.p
|
|
+ Pascal Interface to the Macintosh Libraries
|
|
+
|
|
+ Copyright Apple Computer, Inc. 1986-1991
|
|
+ All rights reserved
|
|
+}
|
|
+
|
|
+
|
|
+{$IFC UNDEFINED UsingIncludes}
|
|
+{$SETC UsingIncludes := 0}
|
|
+{$ENDC}
|
|
+
|
|
+{$IFC NOT UsingIncludes}
|
|
+ UNIT Sound;
|
|
+ INTERFACE
|
|
+{$ENDC}
|
|
+
|
|
+{$IFC UNDEFINED UsingSound}
|
|
+{$SETC UsingSound := 1}
|
|
+
|
|
+{$I+}
|
|
+{$SETC SoundIncludes := UsingIncludes}
|
|
+{$SETC UsingIncludes := 1}
|
|
+{$IFC UNDEFINED UsingTypes}
|
|
+{$I $$Shell(PInterfaces)Types.p}
|
|
+{$ENDC}
|
|
+{$IFC UNDEFINED UsingFiles}
|
|
+{$I $$Shell(PInterfaces)Files.p}
|
|
+{$ENDC}
|
|
+{$SETC UsingIncludes := SoundIncludes}
|
|
+
|
|
+CONST
|
|
+swMode = -1; { Sound Driver modes }
|
|
+ftMode = 1;
|
|
+ffMode = 0;
|
|
+
|
|
+synthCodeRsrc = 'snth'; { Resource types used by Sound Manager }
|
|
+soundListRsrc = 'snd ';
|
|
+
|
|
+twelfthRootTwo = 1.05946309434;
|
|
+rate22khz = $56EE8BA3; { 22254.54545 in fixed-point }
|
|
+rate11khz = $2B7745D1; { 11127.27273 in fixed-point }
|
|
+
|
|
+{ synthesizer numbers for SndNewChannel }
|
|
+squareWaveSynth = 1; {square wave synthesizer}
|
|
+waveTableSynth = 3; {wave table synthesizer}
|
|
+sampledSynth = 5; {sampled sound synthesizer}
|
|
+
|
|
+{ old Sound Manager MACE synthesizer numbers }
|
|
+MACE3snthID = 11;
|
|
+MACE6snthID = 13;
|
|
+
|
|
+{ command numbers for SndDoCommand and SndDoImmediate }
|
|
+nullCmd = 0;
|
|
+initCmd = 1;
|
|
+freeCmd = 2;
|
|
+quietCmd = 3;
|
|
+flushCmd = 4;
|
|
+reInitCmd = 5;
|
|
+
|
|
+waitCmd = 10;
|
|
+pauseCmd = 11;
|
|
+resumeCmd = 12;
|
|
+callBackCmd = 13;
|
|
+syncCmd = 14;
|
|
+emptyCmd = 15;
|
|
+
|
|
+tickleCmd = 20;
|
|
+requestNextCmd = 21;
|
|
+howOftenCmd = 22;
|
|
+wakeUpCmd = 23;
|
|
+availableCmd = 24;
|
|
+versionCmd = 25;
|
|
+totalLoadCmd = 26;
|
|
+loadCmd = 27;
|
|
+
|
|
+scaleCmd = 30;
|
|
+tempoCmd = 31;
|
|
+
|
|
+freqDurationCmd = 40;
|
|
+restCmd = 41;
|
|
+freqCmd = 42;
|
|
+ampCmd = 43;
|
|
+timbreCmd = 44;
|
|
+getAmpCmd = 45;
|
|
+
|
|
+waveTableCmd = 60;
|
|
+phaseCmd = 61;
|
|
+
|
|
+soundCmd = 80;
|
|
+bufferCmd = 81;
|
|
+rateCmd = 82;
|
|
+continueCmd = 83;
|
|
+doubleBufferCmd = 84;
|
|
+getRateCmd = 85;
|
|
+
|
|
+sizeCmd = 90;
|
|
+convertCmd = 91;
|
|
+
|
|
+stdQLength = 128;
|
|
+dataOffsetFlag = $8000;
|
|
+
|
|
+waveInitChannelMask = $07;
|
|
+waveInitChannel0 = $04;
|
|
+waveInitChannel1 = $05;
|
|
+waveInitChannel2 = $06;
|
|
+waveInitChannel3 = $07;
|
|
+
|
|
+{ channel initialization parameters }
|
|
+initPanMask = $0003; { mask for right/left pan values }
|
|
+initSRateMask = $0030; { mask for sample rate values }
|
|
+initStereoMask = $00C0; { mask for mono/stereo values }
|
|
+initCompMask = $FF00; { mask for compression IDs }
|
|
+
|
|
+initChanLeft = $0002; { left stereo channel }
|
|
+initChanRight = $0003; { right stereo channel }
|
|
+initNoInterp = $0004; { no linear interpolation }
|
|
+initNoDrop = $0008; { no drop-sample conversion }
|
|
+initMono = $0080; { monophonic channel }
|
|
+initStereo = $00C0; { stereo channel }
|
|
+initMACE3 = $0300; { MACE 3:1 }
|
|
+initMACE6 = $0400; { MACE 6:1 }
|
|
+
|
|
+initChan0 = $0004; { channel 0 - wave table only }
|
|
+initChan1 = $0005; { channel 1 - wave table only }
|
|
+initChan2 = $0006; { channel 2 - wave table only }
|
|
+initChan3 = $0007; { channel 3 - wave table only }
|
|
+
|
|
+stdSH = $00; { Standard sound header encode value }
|
|
+extSH = $FF; { Extended sound header encode value }
|
|
+cmpSH = $FE; { Compressed sound header encode value }
|
|
+
|
|
+notCompressed = 0; { compression ID's }
|
|
+twoToOne = 1;
|
|
+eightToThree = 2;
|
|
+threeToOne = 3;
|
|
+sixToOne = 4;
|
|
+
|
|
+outsideCmpSH = 0; { MACE constants }
|
|
+insideCmpSH = 1;
|
|
+aceSuccess = 0;
|
|
+aceMemFull = 1;
|
|
+aceNilBlock = 2;
|
|
+aceBadComp = 3;
|
|
+aceBadEncode = 4;
|
|
+aceBadDest = 5;
|
|
+aceBadCmd = 6;
|
|
+sixToOnePacketSize = 8;
|
|
+threeToOnePacketSize = 16;
|
|
+stateBlockSize = 64;
|
|
+leftOverBlockSize = 32;
|
|
+
|
|
+firstSoundFormat = $0001; { general sound format }
|
|
+secondSoundFormat = $0002; { special sampled sound format (HyperCard) }
|
|
+
|
|
+dbBufferReady = $00000001; { double buffer is filled }
|
|
+dbLastBuffer = $00000004; { last double buffer to play }
|
|
+
|
|
+sysBeepDisable = $0000; { SysBeep() enable flags }
|
|
+sysBeepEnable = $0001;
|
|
+
|
|
+unitTypeNoSelection = $FFFF; { unitTypes for AudioSelection.unitType }
|
|
+unitTypeSeconds = $0000;
|
|
+
|
|
+TYPE
|
|
+{ Structures for Sound Driver }
|
|
+
|
|
+
|
|
+FreeWave = PACKED ARRAY [0..30000] OF Byte;
|
|
+
|
|
+FFSynthPtr = ^FFSynthRec;
|
|
+FFSynthRec = RECORD
|
|
+ mode: INTEGER;
|
|
+ count: Fixed;
|
|
+ waveBytes: FreeWave;
|
|
+ END;
|
|
+
|
|
+Tone = RECORD
|
|
+ count: INTEGER;
|
|
+ amplitude: INTEGER;
|
|
+ duration: INTEGER;
|
|
+ END;
|
|
+
|
|
+
|
|
+Tones = ARRAY [0..5000] OF Tone;
|
|
+
|
|
+SWSynthPtr = ^SWSynthRec;
|
|
+SWSynthRec = RECORD
|
|
+ mode: INTEGER;
|
|
+ triplets: Tones;
|
|
+ END;
|
|
+
|
|
+
|
|
+Wave = PACKED ARRAY [0..255] OF Byte;
|
|
+WavePtr = ^Wave;
|
|
+
|
|
+FTSndRecPtr = ^FTSoundRec;
|
|
+FTSoundRec = RECORD
|
|
+ duration: INTEGER;
|
|
+ sound1Rate: Fixed;
|
|
+ sound1Phase: LONGINT;
|
|
+ sound2Rate: Fixed;
|
|
+ sound2Phase: LONGINT;
|
|
+ sound3Rate: Fixed;
|
|
+ sound3Phase: LONGINT;
|
|
+ sound4Rate: Fixed;
|
|
+ sound4Phase: LONGINT;
|
|
+ sound1Wave: WavePtr;
|
|
+ sound2Wave: WavePtr;
|
|
+ sound3Wave: WavePtr;
|
|
+ sound4Wave: WavePtr;
|
|
+ END;
|
|
+
|
|
+FTSynthPtr = ^FTSynthRec;
|
|
+FTSynthRec = RECORD
|
|
+ mode: INTEGER;
|
|
+ sndRec: FTSndRecPtr;
|
|
+ END;
|
|
+
|
|
+{ Structures for Sound Manager }
|
|
+
|
|
+SndCommand = PACKED RECORD
|
|
+ cmd: INTEGER;
|
|
+ param1: INTEGER;
|
|
+ param2: LONGINT;
|
|
+ END;
|
|
+
|
|
+
|
|
+Time = LONGINT; { in half milliseconds }
|
|
+
|
|
+
|
|
+
|
|
+SndChannelPtr = ^SndChannel;
|
|
+SndChannel = PACKED RECORD
|
|
+ nextChan: SndChannelPtr;
|
|
+ firstMod: Ptr; { reserved for the Sound Manager }
|
|
+ callBack: ProcPtr;
|
|
+ userInfo: LONGINT;
|
|
+ wait: Time; { The following is for internal Sound Manager use only.}
|
|
+ cmdInProgress: SndCommand;
|
|
+ flags: INTEGER;
|
|
+ qLength: INTEGER;
|
|
+ qHead: INTEGER; { next spot to read or -1 if empty }
|
|
+ qTail: INTEGER; { next spot to write = qHead if full }
|
|
+ queue: ARRAY [0..stdQLength - 1] OF SndCommand;
|
|
+ END;
|
|
+
|
|
+{ MACE structures }
|
|
+StateBlockPtr = ^StateBlock;
|
|
+StateBlock = RECORD
|
|
+ stateVar: ARRAY [0..stateBlockSize - 1] OF INTEGER;
|
|
+ END;
|
|
+
|
|
+LeftOverBlockPtr = ^LeftOverBlock;
|
|
+LeftOverBlock = RECORD
|
|
+ count: LONGINT;
|
|
+ sampleArea: PACKED ARRAY [0..leftOverBlockSize - 1] OF Byte;
|
|
+ END;
|
|
+
|
|
+ModRef = RECORD
|
|
+ modNumber: INTEGER;
|
|
+ modInit: LONGINT;
|
|
+ END;
|
|
+
|
|
+SndListPtr = ^SndListResource;
|
|
+SndListResource = RECORD
|
|
+ format: INTEGER;
|
|
+ numModifiers: INTEGER;
|
|
+ modifierPart: ARRAY [0..0] OF ModRef; {This is a variable length array}
|
|
+ numCommands: INTEGER;
|
|
+ commandPart: ARRAY [0..0] OF SndCommand; {This is a variable length array}
|
|
+ dataPart: PACKED ARRAY [0..0] OF Byte; {This is a variable length array}
|
|
+ END;
|
|
+
|
|
+SoundHeaderPtr = ^SoundHeader;
|
|
+SoundHeader = PACKED RECORD
|
|
+ samplePtr: Ptr; { if NIL then samples are in sampleArea }
|
|
+ length: LONGINT; { length of sound in bytes }
|
|
+ sampleRate: Fixed; { sample rate for this sound }
|
|
+ loopStart: LONGINT; { start of looping portion }
|
|
+ loopEnd: LONGINT; { end of looping portion }
|
|
+ encode: Byte; { header encoding }
|
|
+ baseFrequency: Byte; { baseFrequency value }
|
|
+ sampleArea: PACKED ARRAY [0..0] OF Byte;
|
|
+ END;
|
|
+
|
|
+CmpSoundHeaderPtr = ^CmpSoundHeader;
|
|
+CmpSoundHeader = PACKED RECORD
|
|
+ samplePtr: Ptr; { if nil then samples are in sample area }
|
|
+ numChannels: LONGINT; { number of channels i.e. mono = 1 }
|
|
+ sampleRate: Fixed; { sample rate in Apples Fixed point representation }
|
|
+ loopStart: LONGINT; { loopStart of sound before compression }
|
|
+ loopEnd: LONGINT; { loopEnd of sound before compression }
|
|
+ encode: Byte; { data structure used , stdSH, extSH, or cmpSH }
|
|
+ baseFrequency: Byte; { same meaning as regular SoundHeader }
|
|
+ numFrames: LONGINT; { length in frames ( packetFrames or sampleFrames ) }
|
|
+ AIFFSampleRate: Extended80; { IEEE sample rate }
|
|
+ markerChunk: Ptr; { sync track }
|
|
+ futureUse1: Ptr; { reserved by Apple }
|
|
+ futureUse2: Ptr; { reserved by Apple }
|
|
+ stateVars: StateBlockPtr; { pointer to State Block }
|
|
+ leftOverSamples: LeftOverBlockPtr; { used to save truncated samples between compression calls }
|
|
+ compressionID: INTEGER; { 0 means no compression, non zero means compressionID }
|
|
+ packetSize: INTEGER; { number of bits in compressed sample packet }
|
|
+ snthID: INTEGER; { resource ID of Sound Manager snth that contains NRT C/E }
|
|
+ sampleSize: INTEGER; { number of bits in non-compressed sample }
|
|
+ sampleArea: PACKED ARRAY [0..0] OF Byte; { space for when samples follow directly }
|
|
+ END;
|
|
+
|
|
+ExtSoundHeaderPtr = ^ExtSoundHeader;
|
|
+ExtSoundHeader = PACKED RECORD
|
|
+ samplePtr: Ptr; { if nil then samples are in sample area }
|
|
+ numChannels: LONGINT; { number of channels, ie mono = 1 }
|
|
+ sampleRate: Fixed; { sample rate in Apples Fixed point representation }
|
|
+ loopStart: LONGINT; { same meaning as regular SoundHeader }
|
|
+ loopEnd: LONGINT; { same meaning as regular SoundHeader }
|
|
+ encode: Byte; { data structure used , stdSH, extSH, or cmpSH }
|
|
+ baseFrequency: Byte; { same meaning as regular SoundHeader }
|
|
+ numFrames: LONGINT; { length in total number of frames }
|
|
+ AIFFSampleRate: Extended80; { IEEE sample rate }
|
|
+ markerChunk: Ptr; { sync track }
|
|
+ instrumentChunks: Ptr; { AIFF instrument chunks }
|
|
+ AESRecording: Ptr;
|
|
+ sampleSize: INTEGER; { number of bits in sample }
|
|
+ futureUse1: INTEGER; { reserved by Apple }
|
|
+ futureUse2: LONGINT; { reserved by Apple }
|
|
+ futureUse3: LONGINT; { reserved by Apple }
|
|
+ futureUse4: LONGINT; { reserved by Apple }
|
|
+ sampleArea: PACKED ARRAY [0..0] OF Byte; { space for when samples follow directly }
|
|
+ END;
|
|
+
|
|
+ConversionBlockPtr = ^ConversionBlock;
|
|
+ConversionBlock = RECORD
|
|
+ destination: INTEGER;
|
|
+ unused: INTEGER;
|
|
+ inputPtr: CmpSoundHeaderPtr;
|
|
+ outputPtr: CmpSoundHeaderPtr;
|
|
+ END;
|
|
+
|
|
+SMStatusPtr = ^SMStatus;
|
|
+SMStatus = PACKED RECORD
|
|
+ smMaxCPULoad: INTEGER;
|
|
+ smNumChannels: INTEGER;
|
|
+ smCurCPULoad: INTEGER;
|
|
+ END;
|
|
+
|
|
+SCStatusPtr = ^SCStatus;
|
|
+SCStatus = RECORD
|
|
+ scStartTime: Fixed;
|
|
+ scEndTime: Fixed;
|
|
+ scCurrentTime: Fixed;
|
|
+ scChannelBusy: BOOLEAN;
|
|
+ scChannelDisposed: BOOLEAN;
|
|
+ scChannelPaused: BOOLEAN;
|
|
+ scUnused: BOOLEAN;
|
|
+ scChannelAttributes: LONGINT;
|
|
+ scCPULoad: LONGINT;
|
|
+ END;
|
|
+
|
|
+AudioSelectionPtr = ^AudioSelection;
|
|
+AudioSelection = PACKED RECORD
|
|
+ unitType: LONGINT;
|
|
+ selStart: Fixed;
|
|
+ selEnd: Fixed;
|
|
+ END;
|
|
+
|
|
+SndDoubleBufferPtr = ^SndDoubleBuffer;
|
|
+SndDoubleBuffer = PACKED RECORD
|
|
+ dbNumFrames: LONGINT;
|
|
+ dbFlags: LONGINT;
|
|
+ dbUserInfo: ARRAY [0..1] OF LONGINT;
|
|
+ dbSoundData: PACKED ARRAY [0..0] OF Byte;
|
|
+ END;
|
|
+
|
|
+SndDoubleBufferHeaderPtr = ^SndDoubleBufferHeader;
|
|
+SndDoubleBufferHeader = PACKED RECORD
|
|
+ dbhNumChannels: INTEGER;
|
|
+ dbhSampleSize: INTEGER;
|
|
+ dbhCompressionID: INTEGER;
|
|
+ dbhPacketSize: INTEGER;
|
|
+ dbhSampleRate: Fixed;
|
|
+ dbhBufferPtr: ARRAY [0..1] OF SndDoubleBufferPtr;
|
|
+ dbhDoubleBack: ProcPtr;
|
|
+ END;
|
|
+
|
|
+
|
|
+FUNCTION SndDoCommand(chan: SndChannelPtr;cmd: SndCommand;noWait: BOOLEAN): OSErr;
|
|
+ INLINE $A803;
|
|
+FUNCTION SndDoImmediate(chan: SndChannelPtr;cmd: SndCommand): OSErr;
|
|
+ INLINE $A804;
|
|
+FUNCTION SndNewChannel(VAR chan: SndChannelPtr;synth: INTEGER;init: LONGINT;
|
|
+ userRoutine: ProcPtr): OSErr;
|
|
+ INLINE $A807;
|
|
+FUNCTION SndDisposeChannel(chan: SndChannelPtr;quietNow: BOOLEAN): OSErr;
|
|
+ INLINE $A801;
|
|
+FUNCTION SndPlay(chan: SndChannelPtr;sndHdl: Handle;async: BOOLEAN): OSErr;
|
|
+ INLINE $A805;
|
|
+FUNCTION SndAddModifier(chan: SndChannelPtr;modifier: ProcPtr;id: INTEGER;
|
|
+ init: LONGINT): OSErr;
|
|
+ INLINE $A802;
|
|
+FUNCTION SndControl(id: INTEGER;VAR cmd: SndCommand): OSErr;
|
|
+ INLINE $A806;
|
|
+
|
|
+PROCEDURE SetSoundVol(level: INTEGER);
|
|
+PROCEDURE GetSoundVol(VAR level: INTEGER);
|
|
+PROCEDURE StartSound(synthRec: Ptr;numBytes: LONGINT;completionRtn: ProcPtr);
|
|
+PROCEDURE StopSound;
|
|
+FUNCTION SoundDone: BOOLEAN;
|
|
+
|
|
+FUNCTION SndSoundManagerVersion: NumVersion;
|
|
+ INLINE $203C,$000C,$0008,$A800;
|
|
+FUNCTION SndStartFilePlay(chan: SndChannelPtr;fRefNum: INTEGER;resNum: INTEGER;
|
|
+ bufferSize: LONGINT;theBuffer: Ptr;theSelection: AudioSelectionPtr;theCompletion: ProcPtr;
|
|
+ async: BOOLEAN): OSErr;
|
|
+ INLINE $203C,$0D00,$0008,$A800;
|
|
+FUNCTION SndPauseFilePlay(chan: SndChannelPtr): OSErr;
|
|
+ INLINE $203C,$0204,$0008,$A800;
|
|
+FUNCTION SndStopFilePlay(chan: SndChannelPtr;async: BOOLEAN): OSErr;
|
|
+ INLINE $203C,$0308,$0008,$A800;
|
|
+FUNCTION SndChannelStatus(chan: SndChannelPtr;theLength: INTEGER;theStatus: SCStatusPtr): OSErr;
|
|
+ INLINE $203C,$0010,$0008,$A800;
|
|
+FUNCTION SndManagerStatus(theLength: INTEGER;theStatus: SMStatusPtr): OSErr;
|
|
+ INLINE $203C,$0014,$0008,$A800;
|
|
+PROCEDURE SndGetSysBeepState(VAR sysBeepState: INTEGER);
|
|
+ INLINE $203C,$0018,$0008,$A800;
|
|
+FUNCTION SndSetSysBeepState(sysBeepState: INTEGER): OSErr;
|
|
+ INLINE $203C,$001C,$0008,$A800;
|
|
+FUNCTION SndPlayDoubleBuffer(chan: SndChannelPtr;theParams: SndDoubleBufferHeaderPtr): OSErr;
|
|
+ INLINE $203C,$0020,$0008,$A800;
|
|
+
|
|
+FUNCTION MACEVersion: NumVersion;
|
|
+ INLINE $203C,$0000,$0010,$A800;
|
|
+PROCEDURE Comp3to1(inBuffer: Ptr;outBuffer: Ptr;cnt: LONGINT;inState: Ptr;
|
|
+ outState: Ptr;numChannels: LONGINT;whichChannel: LONGINT);
|
|
+ INLINE $203C,$0004,$0010,$A800;
|
|
+PROCEDURE Exp1to3(inBuffer: Ptr;outBuffer: Ptr;cnt: LONGINT;inState: Ptr;
|
|
+ outState: Ptr;numChannels: LONGINT;whichChannel: LONGINT);
|
|
+ INLINE $203C,$0008,$0010,$A800;
|
|
+PROCEDURE Comp6to1(inBuffer: Ptr;outBuffer: Ptr;cnt: LONGINT;inState: Ptr;
|
|
+ outState: Ptr;numChannels: LONGINT;whichChannel: LONGINT);
|
|
+ INLINE $203C,$000C,$0010,$A800;
|
|
+PROCEDURE Exp1to6(inBuffer: Ptr;outBuffer: Ptr;cnt: LONGINT;inState: Ptr;
|
|
+ outState: Ptr;numChannels: LONGINT;whichChannel: LONGINT);
|
|
+ INLINE $203C,$0010,$0010,$A800;
|
|
+
|
|
+
|
|
+{$ENDC} { UsingSound }
|
|
+
|
|
+{$IFC NOT UsingIncludes}
|
|
+ END.
|
|
+{$ENDC}
|
|
+
|
|
diff --git a/Interfaces/PInterfaces/Sound.p.idump b/Interfaces/PInterfaces/Sound.p.idump
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/Interfaces/PInterfaces/Sound.p.idump
|
|
@@ -0,0 +1 @@
|
|
+TEXTMPS
|
|
\ No newline at end of file
|
|
diff --git a/Internal/Asm/SoundPrivate.a b/Internal/Asm/SoundPrivate.a
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/Internal/Asm/SoundPrivate.a
|
|
@@ -0,0 +1,18 @@
|
|
+ASCFIFOCONTROL equ 0
|
|
+ASCFIFOINT equ 0
|
|
+ASCMODE equ 0
|
|
+ASCPLAYRECA equ 0
|
|
+ASCTESTREG equ 0
|
|
+ASCVERSION equ 0
|
|
+ASCVOLCONTROL equ 0
|
|
+BMFIFOCONTROLA equ 0
|
|
+BMFIFOCONTROLB equ 0
|
|
+BMINTCONTROLA equ 0
|
|
+BMINTCONTROLB equ 0
|
|
+BMLEFTSCALEA equ 0
|
|
+BMLEFTSCALEB equ 0
|
|
+BMRIGHTSCALEA equ 0
|
|
+BMRIGHTSCALEB equ 0
|
|
+BMSRCTIMEINCRA equ 0
|
|
+BMSRCTIMEINCRB equ 0
|
|
+RATE11025HZ equ 0
|
|
diff --git a/Internal/Asm/SoundPrivate.a.idump b/Internal/Asm/SoundPrivate.a.idump
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/Internal/Asm/SoundPrivate.a.idump
|
|
@@ -0,0 +1 @@
|
|
+TEXTMPS
|
|
\ No newline at end of file
|
|
diff --git a/Make/MainCode.Make b/Make/MainCode.Make
|
|
--- a/Make/MainCode.Make
|
|
+++ b/Make/MainCode.Make
|
|
@@ -119,7 +119,8 @@ MainCodeLibs = ∂
|
|
# Vectorization
|
|
#
|
|
"{LibDir}MainCode.Lib" ƒ {MainCodeLibs} "{ObjDir}VectorTablePatch.a.o"
|
|
- "{ToolDir}Vectorize" -w -v "{ObjDir}VectorTablePatch.a.o" -log "{TextDir}MainCode.Sym" {StdVOpts} -o "{Targ}" {MainCodeLibs}
|
|
+ Lib -o "{Targ}".blob {MainCodeLibs}
|
|
+ "{ToolDir}Vectorize" -w -v "{ObjDir}VectorTablePatch.a.o" -log "{TextDir}MainCode.Sym" {StdVOpts} -o "{Targ}" "{Targ}".blob
|
|
|
|
"{ObjDir}VectorTablePatch.a.o" ƒ "{Sources}Make:VectorTable.a" "{IntAIncludes}VectorTablePatch.a"
|
|
Asm -case on {StdAOpts} -o "{Targ}" "{IntAIncludes}VectorTablePatch.a" -d &VectorTable="∂'{Sources}Make:VectorTable.a∂'" -d ROMBASE={RomBase}
|
|
diff --git a/Make/RISC.make b/Make/RISC.make
|
|
--- a/Make/RISC.make
|
|
+++ b/Make/RISC.make
|
|
@@ -270,50 +270,9 @@ Features = hasRISCV0ResMgrPatches ∂
|
|
ForROM
|
|
|
|
|
|
-ResourceFiles = "{RsrcDir}ATBoot.RSRC" ∂
|
|
- "{MiscDir}AppleTalk.ROM.rsrc" ∂
|
|
- "{RsrcDir}AppleEventMgr.rsrc" ∂
|
|
- "{RsrcDir}CQD.rsrc" ∂
|
|
- "{RsrcDir}ColorPicker.rsrc" ∂
|
|
- "{RsrcDir}CommToolbox.rsrc" ∂
|
|
- "{RsrcDir}ControlMgr.rsrc" ∂
|
|
- "{RsrcDir}DataAccessMgr.rsrc" ∂
|
|
- "{RsrcDir}DictionaryMgr.rsrc" ∂
|
|
- "{RsrcDir}DeclData" ∂
|
|
- "{RsrcDir}EDisk.rsrc" ∂
|
|
- "{RsrcDir}EditionMgr.rsrc" ∂
|
|
- "{RsrcDir}Gibbly.rsrc" ∂
|
|
- "{MiscDir}GoNativeResources" ∂
|
|
- "{MiscDir}EmulatorAccelerations.rsrc" ∂
|
|
- "{RsrcDir}HelpMgr.rsrc" ∂
|
|
- "{RsrcDir}InSane.rsrc" ∂
|
|
- "{RsrcDir}I2CC.rsrc" ∂
|
|
- "{RsrcDir}I2CT.rsrc" ∂
|
|
- "{RsrcDir}ListMgr.rsrc" ∂
|
|
+ResourceFiles = "{RsrcDir}DeclData" ∂
|
|
"{RsrcDir}MainCode.Rsrc" ∂
|
|
- "{RsrcDir}MenuMgr.rsrc" ∂
|
|
- "{RsrcDir}MiscROMRsrcs.rsrc" ∂
|
|
- "{RsrcDir}NetBoot.rsrc" ∂
|
|
- "{RsrcDir}PDMENET.rsrc" ∂
|
|
- "{RsrcDir}PPC.rsrc" ∂
|
|
- "{RsrcDir}PictUtilities.rsrc" ∂
|
|
- "{RsrcDir}ROMApple2Fonts.rsrc" ∂
|
|
- "{RsrcDir}ROMFonts.rsrc" ∂
|
|
"{RsrcDir}RomLayout.Rsrc" ∂
|
|
- "{RsrcDir}SCCIOP.rsrc" ∂
|
|
- "{RsrcDir}SWIMIOP.rsrc" ∂
|
|
- "{RsrcDir}InSaneNFPU.rsrc" ∂
|
|
- "{RsrcDir}Sane.rsrc" ∂
|
|
- "{RsrcDir}Serial.rsrc" ∂
|
|
- "{RsrcDir}SerialDMA.rsrc" ∂
|
|
- "{RsrcDir}Sony.rsrc" ∂
|
|
- "{RsrcDir}SoundMgr.rsrc" ∂
|
|
- "{RsrcDir}StandardFile.rsrc" ∂
|
|
- "{RsrcDir}VDigC.rsrc" ∂
|
|
- "{RsrcDir}VDigT.rsrc" ∂
|
|
- "{MiscDir}VM.RSRC" ∂
|
|
- "{RsrcDir}WindowMgr.rsrc" ∂
|
|
- "{RsrcDir}kbd.rsrc"
|
|
|
|
|
|
RomMondo ƒ FeatureSet "{ImageDir}RomMondo"
|
|
diff --git a/OS/IoPrimitives/ImmgPrimitives.a b/OS/IoPrimitives/ImmgPrimitives.a
|
|
--- a/OS/IoPrimitives/ImmgPrimitives.a
|
|
+++ b/OS/IoPrimitives/ImmgPrimitives.a
|
|
@@ -79,6 +79,7 @@
|
|
INCLUDE 'IntModemMgrPrivEqu.a'
|
|
INCLUDE 'PowerPrivEqu.a'
|
|
INCLUDE 'Sound.a'
|
|
+ INCLUDE 'SoundPrivate.a'
|
|
|
|
MACHINE MC68020 ; <H3>
|
|
|