spu: fix first sample, don't play ahead
[pcsx_rearmed.git] / libpcsxcore / cdrom.h
index abadc4d..543c619 100644 (file)
@@ -51,8 +51,16 @@ typedef struct {
 
        unsigned char StatP;
 
-       unsigned char Transfer[CD_FRAMESIZE_RAW];
-       unsigned char *pTransfer;
+       unsigned char Transfer[DATA_SIZE];
+       struct {
+               unsigned char Track;
+               unsigned char Index;
+               unsigned char Relative[3];
+               unsigned char Absolute[3];
+       } subq;
+       unsigned char TrackChanged;
+       unsigned char pad1[3];
+       unsigned int  freeze_ver;
 
        unsigned char Prev[4];
        unsigned char Param[8];
@@ -65,13 +73,14 @@ typedef struct {
        unsigned char ResultReady;
        unsigned char Cmd;
        unsigned char Readed;
+       unsigned char SetlocPending;
        u32 Reading;
 
        unsigned char ResultTN[6];
        unsigned char ResultTD[4];
-       unsigned char SetSector[4];
-       unsigned char SetSectorSeek[4];
        unsigned char SetSectorPlay[4];
+       unsigned char SetSectorEnd[4];
+       unsigned char SetSector[4];
        unsigned char Track;
        boolean Play, Muted;
        int CurTrack;
@@ -84,29 +93,35 @@ typedef struct {
 
        int Init;
 
-       unsigned char Irq;
+       u16 Irq;
+       u8 IrqRepeated;
        u32 eCycle;
 
-       boolean Seeked;
+       u8 Seeked;
 
-       u8 LidCheck;
+       u8 DriveState;
        u8 FastForward;
        u8 FastBackward;
        u8 pad;
 
-       u32 LeftVol, RightVol;
+       u8 AttenuatorLeftToLeft, AttenuatorLeftToRight;
+       u8 AttenuatorRightToRight, AttenuatorRightToLeft;
+       u8 AttenuatorLeftToLeftT, AttenuatorLeftToRightT;
+       u8 AttenuatorRightToRightT, AttenuatorRightToLeftT;
 } cdrStruct;
 
 extern cdrStruct cdr;
 
-void cdrDecodedBufferInterrupt();
-
 void cdrReset();
+void cdrAttenuate(s16 *buf, int samples, int stereo);
+
 void cdrInterrupt();
 void cdrReadInterrupt();
 void cdrRepplayInterrupt();
 void cdrLidSeekInterrupt();
 void cdrPlayInterrupt();
+void cdrDmaInterrupt();
+void LidInterrupt();
 unsigned char cdrRead0(void);
 unsigned char cdrRead1(void);
 unsigned char cdrRead2(void);
@@ -115,7 +130,7 @@ void cdrWrite0(unsigned char rt);
 void cdrWrite1(unsigned char rt);
 void cdrWrite2(unsigned char rt);
 void cdrWrite3(unsigned char rt);
-int cdrFreeze(gzFile f, int Mode);
+int cdrFreeze(void *f, int Mode);
 
 #ifdef __cplusplus
 }