ref: 752d81359f71404b3cb410995ecbe43b0a11efa8
dir: /psx/dev/xa.h/
#ifndef XA_H
#define XA_H
/*
000h 0Ch Sync
00Ch 4 Header (Minute,Second,Sector,Mode=02h)
010h 4 Sub-Header (File, Channel, Submode with bit5=1, Codinginfo)
014h 4 Copy of Sub-Header
018h 914h Data (2324 bytes)
92Ch 4 EDC (checksum accross [010h..92Bh]) (or 00000000h if no EDC)
*/
enum {
XA_HDR_MINUTE = 0x0c,
XA_HDR_SECOND,
XA_HDR_SECTOR,
XA_HDR_MODE,
XA_SHDR_FILE,
XA_SHDR_CHANNEL,
XA_SHDR_SUBMODE,
XA_SHDR_CODINGINFO
};
/*
0 End of Record (EOR) (all Volume Descriptors, and all sectors with EOF)
1 Video ;\Sector Type (usually ONE of these bits should be set)
2 Audio ; Note: PSX .STR files are declared as Data (not as Video)
3 Data ;/
4 Trigger (for application use)
5 Form2 (0=Form1/800h-byte data, 1=Form2, 914h-byte data)
6 Real Time (RT)
7 End of File (EOF) (or end of Directory/PathTable/VolumeTerminator)
*/
enum {
XA_SM_EOR = 0x01,
XA_SM_VIDEO = 0x02,
XA_SM_AUDIO = 0x04,
XA_SM_DATA = 0x08,
XA_SM_TRIG = 0x10,
XA_SM_FORM2 = 0x20,
XA_SM_RT = 0x40,
XA_SM_EOF = 0x80
};
/*
0-1 Mono/Stereo (0=Mono, 1=Stereo, 2-3=Reserved)
2-2 Sample Rate (0=37800Hz, 1=18900Hz, 2-3=Reserved)
4-5 Bits per Sample (0=Normal/4bit, 1=8bit, 2-3=Reserved)
6 Emphasis (0=Normal/Off, 1=Emphasis)
7 Reserved (0)
*/
enum {
XA_CI_MODE = 0x03,
XA_CI_SAMPLERATE = 0x0c,
XA_CI_BPS = 0x30,
XA_CI_EMPHASIS = 0x40,
XA_CI_MONO = 0x00,
XA_CI_STEREO = 0x01,
XA_CI_37800HZ = 0x00,
XA_CI_18900HZ = 0x04,
XA_CI_4BIT = 0x00,
XA_CI_8BIT = 0x10
};
void xa_decode_sector(void*, void*);
#endif