hacked by bITmASTER eMail: [email protected]m
last update: 11.04.99
VAG-Sample-Group
Eine Sample-Group besteht aus 16 Bytes.
typedef struct { unsigned char pack_info; unsigned char flags; unsigned char packed[14];
}
pack_info: höherwertiges Nibble: Predictor-Nummer niederwertiges Nibble: Shiftfactor
flags: 0x07: Sample-Ende 0x02: Samples gehören zu Repeat-Teil 0x06: Repeat-Start
0x04: Repeat-Point 0x03: Sample-Ende, beginne neu bei Repeat-Start
Register Size: short: 2 Bytes int: 4 Bytes
0x1f8010c0 | int | rw | SPU-DMA Memory-Address |
0x1f801c04 | int | rw | b15...b0 |
b31...b16: DMA-Block-Size (n * 64 | |||
Bytes) | |||
0x1f801c08 | int | rw | b24 = 1: Start DMA |
when transfer complete b24 | |||
switch to 0 |
0x1f8010f4 | int | rw | DMA Interrupt Control |
---|---|---|---|
b15 | DMA channel ?? interrupt enable | ||
0x1f801c00 | short | rw | Volume left Channel 0 b0...b13: Volume (0...0x3fff) b14: Sign |
0x1f801c02 | short | rw | Volume right Channel 0 b0...b13: Volume (0...0x3fff) b14: Sign |
0x1f801c04 | short | rw | Frequency |
0x1f801c06 | short | rw | Startaddress Sound = SPU-Memory / 8 |
0x1f801c08 | short | rw | b7-b14 Attack-Rate (0x7f = nie) b15: 1 Exponental |
0x1f801c0a | short | rw | ADSR2 |
0x1f801c0c | short | rw | ADSR-Volume (0x0000 - 0x7fff) |
0x1f801c0e | short | r | current repeat address |
... weitere 23 mal für die Channels 1...23
s: Anzahl der Samples für eine Periode
f: gewünschte Wiedergabefrequenz
t: Teilerfaktor
0x1f801d80 | short | rw | MasterVolume left (0x0000-0x3fff) |
0x1f801d82 | short | rw | MasterVolume right (0x0000-0x3fff) |
0x1f801d84 | short | rw | ReverbDepth left (0x0000-0x7fff) , b15=1: inverted |
0x1f801d86 | short | rw | ReverbDepth right (0x0000-0x7fff), b15=1: inverted |
0x1f801d88 | short | w | start sound play b0 = 1 start channel 0 b1 = 1 start channel 1 : : : : : : b15 = 1 start channel 15 |
0x1f801d8a | short | w | start sound play b0 = 1 start channel 16 b1 = 1 start channel 17 : : : : : : b7 = 1 start channel 23 |
0x1f801d8c | short | w | stop sound play b0 = 1 stop channel 0 b1 = 1 stop channel 1 : : : : : : b15 = 1 stop channel 15 |
0x1f801d8e | short | w | stop sound play b0 = 1 stop channel 16 |
b1 = 1 stop channel 17 : : : : : : b7 = 1 stop channel 23 | |||
0x1f801d90 | short | rw | set channel in FM-Modus die Modulation kommt von Channel n-1 b0 = 1 channel 0 b1 = 1 channel 1 : : : : : b15 = 1 channel 15 |
0x1f801d92 | short | rw | set channel in FM-Modus die Modulation kommt von Channel n-1 b0 = 1 channel 0 b1 = 1 channel 1 : : : : : b15 = 1 channel 15 |
0x1f801d94 | short | rw | use channel as noise generator b0 = 1 start channel 0 b1 = 1 start channel 1 : : : : : : b15 = 1 start channel 15 |
0x1f801d96 | short | rw | use channel as noise generator b0 = 1 start channel 16 b1 = 1 start channel 17 : : : : : : b7 = 1 start channel 23 |
0x1f801d98 | short | rw | set channel to reverb modus (after sample end, the reverb modus automatic switch off !!) b0 = 1 start channel 0 b1 = 1 start channel 1 : : : : : : b15 = 1 start channel 15 |
0x1f801d9a | short | rw | set channel to reverb modus b0 = 1 start channel 16 b1 = 1 start channel 17 : : : : : : b7 = 1 start channel 23 |
0x1f801d9c | short | r | channel active b0 = 0 channel 0 active b1 = 0 channel 1 active : : : : : : b15 = 0 channel 15 active |
0x1f801d9e | short | r | channel active b0 = 0 channel 16 active b1 = 0 channel 17 active : : : : : : b7 = 0 channel 23 active |
0x1f801da0 | not used | ||
0x1f801da2 | start address Reverb Buffer | ||
0x1f801da4 | short | rw | function unknow |
0x1f801da6 | short | rw | SPU-Memory-Address |
0x1f801da8 | short | rw | Data to SPU |
0x1f801daa | short | rw | Spu-Control1 (0xc000) b14=0 DA-Converter mute b13...b8: Noise-Frequency b7 0 Reverb off 1 Reverb on b6: SpuIQR b5 b4 0 0 --0 1 write SPU non-DMA 1 0 write SPU with DMA 1 1 read SPU with DMA b3:EXT Reverb b2:CD Reverb b1:enable extern digital audio input b0:enable CD audio |
0x1f801dac | short | rw | Spu-Control2 (4) |
0x1f801dae | short | r | Spu-Status b10: wrdy b11: current decoded page |
0x1f801db0 | short | rw | CD-Audio-Volume left |
0x1f801db2 | short | rw | CD-Audio-Volume right |
0x1f801db4 | short | rw | extern Volume left |
0x1f801db6 | short | rw | extern Volume right |
0x1f801db8 | short | r | ??? |
0x1f801dba | short | r | ??? |
0x1f801dbc | |||
0x1f801dbe | |||
0x1f801dc0 | SPU-Effects | ||
0x1f801dc2 | |||
0x1f801dc4 | Filter für verzögertes Signal Tiefpaß 0x0000: niedrigste Grenzfrequenz 0x7fff: höchste Grenzfrequenz, keine Filterwirkung | ||
0x1f801dc6 | Amplitude verzögertes Signal 0...32767 -32768...0 (invertiert) | ||
0x1f801dc8 | |||
0x1f801dca | |||
0x1f801dcc | |||
0x1f801dce | |||
0x1f801dd0 | |||
0x1f801dd2 | |||
0x1f801dd4 | |||
0x1f801dd6 | |||
0x1f801dd8 | Delay, in 8er Steps (???) | ||
0x1f801dda | |||
0x1f801ddc | |||
0x1f801dde | |||
0x1f801de0 | |||
0x1f801de2 | |||
0x1f801de4 | |||
0x1f801de6 | |||
0x1f801de8 | |||
0x1f801dea | |||
0x1f801dec | |||
0x1f801dee | |||
0x1f801df0 | |||
0x1f801df2 | |||
0x1f801df4 | |||
0x1f801df6 | |||
0x1f801df8 | offset left ??? | ||
0x1f801dfa | |||
0x1f801dfc | short | signed short volume left | |
0x1f801dfe | short | signed short volume right |
Timer
Timer-Frequenz: 33.872 MHz
Timer0
0x1f801100 | short | r | Up-Counter, aktueller Zählerstand |
---|---|---|---|
0x1f801104 | short | rw | Timer-Mode-Register |
0x1f801108 | short | rw | Zähler Endstand |
Timer-Mode-Register
0 | 1 | |
b0 | Timer running | Timer Stop |
b1 | ||
b2 | ||
b3 | Timer zählt von 0 bis 65535 | Timer zählt von 0 bis Endstand |
b4 | Interrupt enable | |
b5 | ||
b6 | Interrupt enable | |
b7 | ||
b8 | Vorteiler: ? | Vorteiler: ? |
Timer1
0x1f801110 | short | r | Up-Counter, aktueller Zählerstand |
---|---|---|---|
0x1f801114 | short | rw | Timer-Mode-Register |
0x1f801118 | short | rw | Zähler Endstand |
Timer-Mode-Register
0 | 1 | |
b0 | Timer running | Timer Stop |
b1 | ||
b2 | ||
b3 | Timer zählt von 0 bis 65535 | Timer zählt von 0 bis Endstand |
b4 | Interrupt enable | |
b5 | ||
b6 | Interrupt enable | |
b7 | ||
b8 | Vorteiler: ? | Timer wird mit HBL getaktet |
Timer2
0x1f801120 | short | r | Up-Counter, aktueller Zählerstand |
---|---|---|---|
0x1f801124 | short | rw | Timer-Mode-Register |
0x1f801128 | short | rw | Zähler Endstand |
Timer-Mode-Register
0 | 1 | |
b0 | Timer running | Timer Stop |
b1 | ||
b2 | ||
b3 | Timer zählt von 0 bis 65535 | Timer zählt von 0 bis Endstand |
b4 | Interrupt enable | |
b5 | ||
b6 | Interrupt enable | |
b7 | ||
b8 | Vorteiler: ? | Vorteiler: ? |
Interrupt-Mask-Register:
1=on | HW-Desc | |
---|---|---|
b0 | Interrupt für VBL erlauben | 0xf0000001 |
b1 | GPU | 0xf0000002 |
b2 | CD-ROM | 0xf0000003 |
b3 | DMA-Controller | 0xf0000004 |
b4 | Interrupt für Timer0 erlauben | 0xf0000005 |
b5 | Interrupt für Timer1 erlauben | 0xf0000006 |
b6 | Interrupt für Timer2 erlauben | 0xf0000007 |
b7 | Controller | 0xf0000008 |
b8 | SIO | 0xf0000009 |
b9 | SPU | 0xf000000a |
b10 | PIO | 0xf000000b |
SIO
0x1f801050 | short | rw | SIO-Data (8 Bits) | |||
---|---|---|---|---|---|---|
0x1f801054 | short | r | SIO Status | |||
b0 | ready for write byte ->TX | |||||
b1 | ready for read byte RX-> | |||||
b2 | ? | |||||
b3 | parity error | |||||
b4 | overrun error | |||||
b5 | frame error | |||||
b6 | 0 | |||||
b7 | DSR | |||||
b8 | CTS | |||||
b9 | interrupt | |||||
0x1f801058 | short | rw | SIO Mode | |||
b0 | = 0 ?? | |||||
b1 | = 1 ?? | |||||
b3 | b2 | char length | ||||
0 | 0 | 5 Bit | ||||
0 | 1 | 6 Bit | ||||
1 | 0 | 7 Bit | ||||
1 | 1 | 8 Bit | ||||
b4 | parity on | |||||
b5 | parity 0:even, 1:odd | |||||
b7 | b6 | stop bit length | ||||
0 | 1 | 1 | ||||
1 | 0 | 1,5 | ||||
1 | 1 | 2 | ||||
0x1f80105a | short | rw | SIO Control | |||
b0 | TX enable | |||||
b1 | DTR | |||||
b2 | RX enable | |||||
b3 | ? | |||||
b4 | Interrupt Flag | |||||
b5 | RTS | |||||
b6 | SIO Reset | |||||
b7 | ? | |||||
b8 | ? | |||||
b9 | ? | |||||
b10 | TX Interrupt enable | |||||
b11 | RX Interrupt enable | |||||
b12 | DSR Interrupt enable | |||||
0x1f80105e | short | rw | SIO Baudrate = 2,1168 Mhz / wanted baudrate |
Memory-Variables
0x120 Zeiger auf Event-Table 0x124 Größe Event-Table in Bytes