PCSX2 bug(s)?
#1
r4942

IPU_Fifo.cpp
- IPU_Fifo_Output::write

Code:
        uint transsize = min(size, 8 - (uint)ipuRegs.ctrl.OFC);
        if(!transsize)
            return 0;

#if 1
        // new code?
        ipuRegs.ctrl.OFC += transsize;
#else
        // old code
        ipuRegs.ctrl.OFC = transsize;
#endif

        size -= transsize;

If OFC = 7 (output FIFO count), it'll only write 1 qword to FIFO (8 = full).

Old code will set OFC = 1 Excl instead of max 8 (full).


Don't know if this fixes anything but something I've noticed.
(and noticed that IPU_Fifo_Input::write looks okay)
Reply

Sponsored links

#2
r4942

Time Crisis 2 boot

Code:
        case 0x08:  // STATUS
            CDVD_LOG("cdvdRead08(Status) %x", cdvd.Status);
#if 1
            // Time Crisis 2 - checks spin flag
            if( cdvd.Spinning )
                return cdvd.Status | CDVD_STATUS_SPIN;
            else
#endif
            return cdvd.Status;
            break;

        case 0x0A:  // STATUS
            CDVD_LOG("cdvdRead0A(Status) %x", cdvd.Status);
#if 1
            // Time Crisis 2 - checks spin flag
            if( cdvd.Spinning )
                return cdvd.Status | CDVD_STATUS_SPIN;
            else
#endif
            return cdvd.Status;
            break;

We get toasted on PS1 -all the time- because of this. Combinations of status flags (read + spin together in particular).

You'll notice the 'CDVD Fast hack' is no longer needed. And the Standby slamming goes away.



edit:
Other than 1394 -1 barfs, not sure where 'Loading' problem is. Likely cdrom again. Smile

Not so sure why game would use an 'Break' abort? (that's new for me)
Reply
#3
Break is usually used if a command is taking too long, maybe as you saw the spin status is used in conjunction with reading, but there youve made it always spin, so its trying to abort that command..

good finds tho! especially the ipu one, that could explain a lot!
[Image: ref-sig-anim.gif]

Reply
#4
(10-23-2011, 01:51 PM)refraction Wrote: Break is usually used if a command is taking too long, maybe as you saw the spin status is used in conjunction with reading, but there youve made it always spin, so its trying to abort that command..

It happens when you get into the main menu. Note that cdvdRead08(Status) logging is _before_ the spin flag hack is used.

This didn't help though:
if( cdvd.Spinning && cdvd.Reading )

Break happens with(out) the CDVD fast hack.

Code:
CDVD(0000b694 21435b29): CDVD read finished, DMA3 done
CDVD(00020a90 21435ba7): cdvdRead06(Error) 0
CDVD(00020a90 21435ba7): cdvdRead08(Status) a
CDVD(00020b0c 21435bb7): cdvdRead08(Status) a
CDVD(00020b64 21435bbc): cdvdWrite08(IntrReason) = ACK(2)
CDVD(00023550 214372e4): cdvdRead0F(Disc Type) 14
CDVD(00023588 214372ee): cdvdRead0F(Disc Type) 14
CDVD(00021e80 2143739e): cdvdRead05(NReady) 4e
CDVD(00021da0 214373ff): cdvdWrite06(HowTo) 8c
CDVD(0000661c 2143743d): *** DMA 3 *** 41000200 addr = 2a860 size = 2b0000c
CDVD(00021f18 2143745e): cdvdRead0F(Disc Type) 14
CDVD(00022118 214374eb): cdvdWrite05(NDataIn) 57
CDVD(00022118 214374f1): cdvdWrite05(NDataIn) e8
CDVD(00022118 214374f7): cdvdWrite05(NDataIn) b
CDVD(00022118 214374fd): cdvdWrite05(NDataIn) 0
CDVD(00022118 21437503): cdvdWrite05(NDataIn) 10
CDVD(00022118 21437509): cdvdWrite05(NDataIn) 0
CDVD(00022118 2143750f): cdvdWrite05(NDataIn) 0
CDVD(00022118 21437515): cdvdWrite05(NDataIn) 0
CDVD(00022118 2143751b): cdvdWrite05(NDataIn) 0
CDVD(00022118 21437521): cdvdWrite05(NDataIn) 83
CDVD(00022118 21437527): cdvdWrite05(NDataIn) 0
CDVD(00022130 2143752d): cdvdWrite04: NCMD CdReadDVDV (8) (ParamP = b)
CDVD(00022130 2143752d): DvdRead > startSector=780375, nSectors=16, RetryCnt=100, Speed=4(83), ReadMode=3(0) (1074=1430a0d)
CDVD(00022130 2143752d): CdSeek Begin > Contiguous block without seek - delta=0 sectors
CDVD(00022130 2143752d): cdvdRead04(NCMD) 8
CDVD(0000b694 2143a287): SECTOR 780375 (BCR 2b0;c)
CDVD(0000b694 2143cfe1): SECTOR 780376 (BCR 285;c)
CDVD(0000b694 2143fd3b): SECTOR 780377 (BCR 25a;c)
CDVD(0000b694 21442a95): SECTOR 780378 (BCR 22f;c)
CDVD(0000b694 214457ef): SECTOR 780379 (BCR 204;c)
CDVD(0000b694 21448549): SECTOR 780380 (BCR 1d9;c)
CDVD(0000b694 2144b2a3): SECTOR 780381 (BCR 1ae;c)
CDVD(0000b694 2144dffd): SECTOR 780382 (BCR 183;c)
CDVD(0000b694 21450d57): SECTOR 780383 (BCR 158;c)
CDVD(0000b694 21453ab1): SECTOR 780384 (BCR 12d;c)
CDVD(0000b694 2145680b): SECTOR 780385 (BCR 102;c)
CDVD(0000b694 21459565): SECTOR 780386 (BCR d7;c)
CDVD(0000b694 2145c2bf): SECTOR 780387 (BCR ac;c)
CDVD(0000b694 2145f019): SECTOR 780388 (BCR 81;c)
CDVD(0000b694 21461d73): SECTOR 780389 (BCR 56;c)
CDVD(0000b694 21464acd): SECTOR 780390 (BCR 2b;c)
CDVD(0000b694 21464acd): CDVD read finished, DMA3 done
CDVD(00020a90 21464b4b): cdvdRead06(Error) 0
CDVD(00020a90 21464b4b): cdvdRead08(Status) a
CDVD(00020b0c 21464b5b): cdvdRead08(Status) a
CDVD(00020b64 21464b60): cdvdWrite08(IntrReason) = ACK(2)
CDVD(00023550 21466288): cdvdRead0F(Disc Type) 14
CDVD(00023588 21466292): cdvdRead0F(Disc Type) 14
CDVD(00021e80 21466342): cdvdRead05(NReady) 4e
CDVD(00021da0 214663a3): cdvdWrite06(HowTo) 8c
CDVD(0000661c 214663e1): *** DMA 3 *** 41000200 addr = 2a860 size = 2b0000c
CDVD(00021f18 21466402): cdvdRead0F(Disc Type) 14
CDVD(00022118 2146648f): cdvdWrite05(NDataIn) 67
CDVD(00022118 21466495): cdvdWrite05(NDataIn) e8
CDVD(00022118 2146649b): cdvdWrite05(NDataIn) b
CDVD(00022118 214664a1): cdvdWrite05(NDataIn) 0
CDVD(00022118 214664a7): cdvdWrite05(NDataIn) 10
CDVD(00022118 214664ad): cdvdWrite05(NDataIn) 0
CDVD(00022118 214664b3): cdvdWrite05(NDataIn) 0
CDVD(00022118 214664b9): cdvdWrite05(NDataIn) 0
CDVD(00022118 214664bf): cdvdWrite05(NDataIn) 0
CDVD(00022118 214664c5): cdvdWrite05(NDataIn) 83
CDVD(00022118 214664cb): cdvdWrite05(NDataIn) 0
CDVD(00022130 214664d1): cdvdWrite04: NCMD CdReadDVDV (8) (ParamP = b)
CDVD(00022130 214664d1): DvdRead > startSector=780391, nSectors=16, RetryCnt=100, Speed=4(83), ReadMode=3(0) (1074=1430a0d)
CDVD(00022130 214664d1): CdSeek Begin > Contiguous block without seek - delta=0 sectors
CDVD(00022130 214664d1): cdvdRead04(NCMD) 8
CDVD(0000b694 2146922b): SECTOR 780391 (BCR 2b0;c)
CDVD(0000b694 2146bf85): SECTOR 780392 (BCR 285;c)
CDVD(0000b694 2146ecdf): SECTOR 780393 (BCR 25a;c)
CDVD(0000b694 21471a39): SECTOR 780394 (BCR 22f;c)
CDVD(0000b694 21474793): SECTOR 780395 (BCR 204;c)
CDVD(0000b694 214774ed): SECTOR 780396 (BCR 1d9;c)
CDVD(0000b694 2147a247): SECTOR 780397 (BCR 1ae;c)
CDVD(0000b694 2147cfa1): SECTOR 780398 (BCR 183;c)
CDVD(0000b694 2147fcfb): SECTOR 780399 (BCR 158;c)
CDVD(0000b694 21482a55): SECTOR 780400 (BCR 12d;c)
CDVD(0000b694 214857af): SECTOR 780401 (BCR 102;c)
CDVD(0000b694 21488509): SECTOR 780402 (BCR d7;c)
CDVD(0000b694 2148b263): SECTOR 780403 (BCR ac;c)
CDVD(0000b694 2148dfbd): SECTOR 780404 (BCR 81;c)
CDVD(0000409c 21490d17): SECTOR 780405 (BCR 56;c)
CDVD(00004e9c 21493a81): SECTOR 780406 (BCR 2b;c)
CDVD(00004e9c 21493a81): CDVD read finished, DMA3 done
CDVD(00020a90 21493c25): cdvdRead06(Error) 0
CDVD(00020a90 21493c25): cdvdRead08(Status) a
CDVD(00020b0c 21493c35): cdvdRead08(Status) a
CDVD(00020b64 21493c3a): cdvdWrite08(IntrReason) = ACK(2)
CDVD(00023550 2149e7f1): cdvdRead0F(Disc Type) 14
CDVD(00023588 2149e7fb): cdvdRead0F(Disc Type) 14
CDVD(00021e80 2149e8ab): cdvdRead05(NReady) 4e
CDVD(00021da0 2149e90c): cdvdWrite06(HowTo) 8c
CDVD(0000661c 2149e94a): *** DMA 3 *** 41000200 addr = 2a860 size = 2b0000c
CDVD(00021f18 2149e96b): cdvdRead0F(Disc Type) 14
CDVD(00022118 2149e9f8): cdvdWrite05(NDataIn) 77
CDVD(00022118 2149e9fe): cdvdWrite05(NDataIn) e8
CDVD(00022118 2149ea04): cdvdWrite05(NDataIn) b
CDVD(00022118 2149ea0a): cdvdWrite05(NDataIn) 0
CDVD(00022118 2149ea10): cdvdWrite05(NDataIn) 10
CDVD(00022118 2149ea16): cdvdWrite05(NDataIn) 0
CDVD(00022118 2149ea1c): cdvdWrite05(NDataIn) 0
CDVD(00022118 2149ea22): cdvdWrite05(NDataIn) 0
CDVD(00022118 2149ea28): cdvdWrite05(NDataIn) 0
CDVD(00022118 2149ea2e): cdvdWrite05(NDataIn) 83
CDVD(00022118 2149ea34): cdvdWrite05(NDataIn) 0
CDVD(00022130 2149ea3a): cdvdWrite04: NCMD CdReadDVDV (8) (ParamP = b)
CDVD(00022130 2149ea3a): DvdRead > startSector=780407, nSectors=16, RetryCnt=100, Speed=4(83), ReadMode=3(0) (1074=1430a0d)
CDVD(00022130 2149ea3a): CdSeek Begin > Contiguous block without seek - delta=0 sectors
CDVD(00022130 2149ea3a): cdvdRead04(NCMD) 8
CDVD(00024234 2149ef4e): cdvdRead0A(Status) a
CDVD(00021c4c 214a04a8): cdvdRead05(NReady) 0



CDVD(00021c94 214a04ae): cdvdWrite07(Break) 1
*PCSX2*: CDVD BREAK 1
CDVD Break Call



CDVD(00020a90 214a056c): cdvdRead06(Error) 0
CDVD(00020a90 214a056c): cdvdRead08(Status) 0
CDVD(00020b0c 214a057c): cdvdRead08(Status) 0
CDVD(00020b64 214a0581): cdvdWrite08(IntrReason) = ACK(2)
CDVD(00023550 214a0d52): cdvdRead0F(Disc Type) 14
CDVD(00023588 214a0d5c): cdvdRead0F(Disc Type) 14
CDVD(00021e80 214a0e0c): cdvdRead05(NReady) 4e
CDVD(00021d80 214a0e46): cdvdWrite07(Break) 1
CDVD(00021da0 214a0e70): cdvdWrite06(HowTo) 8c
CDVD(0000661c 214a0eae): *** DMA 3 *** 41000200 addr = 2a860 size = 2b0000c
CDVD(00021f18 214a0ecf): cdvdRead0F(Disc Type) 14
CDVD(00022118 214a0f5c): cdvdWrite05(NDataIn) 57
CDVD(00022118 214a0f62): cdvdWrite05(NDataIn) e8
CDVD(00022118 214a0f68): cdvdWrite05(NDataIn) b
CDVD(00022118 214a0f6e): cdvdWrite05(NDataIn) 0
CDVD(00022118 214a0f74): cdvdWrite05(NDataIn) 10
CDVD(00022118 214a0f7a): cdvdWrite05(NDataIn) 0
CDVD(00022118 214a0f80): cdvdWrite05(NDataIn) 0
CDVD(00022118 214a0f86): cdvdWrite05(NDataIn) 0
CDVD(00022118 214a0f8c): cdvdWrite05(NDataIn) 0
CDVD(00022118 214a0f92): cdvdWrite05(NDataIn) 83
CDVD(00022118 214a0f98): cdvdWrite05(NDataIn) 0
CDVD(00022130 214a0f9e): cdvdWrite04: NCMD CdReadDVDV (8) (ParamP = b)
CDVD(00022130 214a0f9e): DvdRead > startSector=780407, nSectors=16, RetryCnt=100, Speed=4(83), ReadMode=3(0) (1074=1430a0d)
CDVD(00022130 214a0f9e): CdSeek Begin > to sector 780375, from 780407 - delta=32 [FAST]
CDVD(00022130 214a0f9e): cdvdRead04(NCMD) 8
CDVD(00024234 214a1482): cdvdRead0A(Status) 0
CDVD(00024234 215357cb): cdvdRead0A(Status) 0
CDVD(0000b694 215aef9e): Cdvd Seek Complete > Scheduling block read interrupt at iopcycle=215b1cf8.
CDVD(0000b694 215b1cf8): SECTOR 780375 (BCR 2b0;c)
CDVD(0000b694 215b4a52): SECTOR 780376 (BCR 285;c)
CDVD(0000b694 215b77ac): SECTOR 780377 (BCR 25a;c)
CDVD(0000b694 215ba506): SECTOR 780378 (BCR 22f;c)
CDVD(0004e004 215bd260): SECTOR 780379 (BCR 204;c)
CDVD(0000b8bc 215bffc0): SECTOR 780380 (BCR 1d9;c)
CDVD(0004ff48 215c2d71): SECTOR 780381 (BCR 1ae;c)
CDVD(0000da34 215c5acc): SECTOR 780382 (BCR 183;c)
CDVD(00004990 215c8829): SECTOR 780383 (BCR 158;c)
CDVD(0000b694 215cb583): SECTOR 780384 (BCR 12d;c)
CDVD(00024234 215cba70): cdvdRead0A(Status) a
CDVD(0000b694 215ce2dd): SECTOR 780385 (BCR 102;c)
CDVD(0000b694 215d1037): SECTOR 780386 (BCR d7;c)
CDVD(0000b694 215d3d91): SECTOR 780387 (BCR ac;c)
CDVD(0000b694 215d6aeb): SECTOR 780388 (BCR 81;c)
CDVD(0000b694 215d9845): SECTOR 780389 (BCR 56;c)
CDVD(0000b694 215dc59f): SECTOR 780390 (BCR 2b;c)
CDVD(0000b694 215dc59f): CDVD read finished, DMA3 done
CDVD(00020a90 215dc61d): cdvdRead06(Error) 0
CDVD(00020a90 215dc61d): cdvdRead08(Status) a
CDVD(00020b0c 215dc62d): cdvdRead08(Status) a

Plus an IPU1 disabled warning at the main menu. This (seems?) to cause the main menu movies to stop. Making a save state then loading it at main menu causes everything to show up (and no IPU1 warning).

Code:
CDVD(00020b64 2bb30293): cdvdWrite08(IntrReason) = ACK(2)
CDVD(0002247c 2bb31062): cdvdRead0F(Disc Type) 14
CDVD(00021e80 2bb310f0): cdvdRead05(NReady) 40
CDVD(00021f1c 2bb31102): cdvdRead0F(Disc Type) 14
CDVD(00022134 2bb3118b): cdvdWrite04: NCMD CdStandby (2) (ParamP = 0)
CdStandby : 2
CDVD(00022134 2bb3118b): CdSeek Begin > to sector 0, from 528073 - delta=528073 [FULL]
CDVD(00022134 2bb3118b): cdvdRead04(NCMD) 2
CDVD Standby Call
CDVD(00020a90 2beb5209): cdvdRead06(Error) 0
CDVD(00020a90 2beb5209): cdvdRead08(Status) a
CDVD(00020b0c 2beb5219): cdvdRead08(Status) a
CDVD(00020b64 2beb521e): cdvdWrite08(IntrReason) = ACK(2)
CDVD(00024234 2beb6e24): cdvdRead0A(Status) a
CDVD(00024234 2bf4d08b): cdvdRead0A(Status) a
CDVD(00024234 2bfe32f3): cdvdRead0A(Status) a
CDVD(00024234 2c079659): cdvdRead0A(Status) a
CDVD(00024234 2c10f7c1): cdvdRead0A(Status) a
CDVD(00024234 2c1a5a28): cdvdRead0A(Status) a
CDVD(00024234 2c23bcc1): cdvdRead0A(Status) a
CDVD(00024234 2c2d1ef6): cdvdRead0A(Status) a



IPU1 running when IPU1 DMA disabled! CHCR 1 QWC 7a0b



CDVD(00024234 2c368227): cdvdRead0A(Status) a
CDVD(000241c0 2c36831d): cdvdRead05(NReady) 40
CDVD(00022ca0 2c36834e): cdvdRead0F(Disc Type) 14
CDVD(00022d58 2c36836d): cdvdRead05(NReady) 40
CDVD(00023588 2c3685cb): cdvdRead0F(Disc Type) 14


The in-game 'Loading' screen just sits around on the cdvdRead(status)
Code:
CDVD(00024234 39f68802): cdvdRead0A(Status) a
CDVD(000241c0 39f68895): cdvdRead05(NReady) 4e
CDVD(00022ca0 39f688c6): cdvdRead0F(Disc Type) 14
CDVD(00022d58 39f688e5): cdvdRead05(NReady) 4e
CDVD(00023588 39f68b43): cdvdRead0F(Disc Type) 14
CDVD(00021e80 39f68bf3): cdvdRead05(NReady) 4e
CDVD(00021da0 39f68c57): cdvdWrite06(HowTo) 8c
CDVD(0000661c 39f68c95): *** DMA 3 *** 41000200 addr = 2a860 size = 2b000c
CDVD(00021f18 39f68cb6): cdvdRead0F(Disc Type) 14
CDVD(00022118 39f68d43): cdvdWrite05(NDataIn) 5a
CDVD(00022118 39f68d49): cdvdWrite05(NDataIn) f
CDVD(00022118 39f68d4f): cdvdWrite05(NDataIn) 8
CDVD(00022118 39f68d55): cdvdWrite05(NDataIn) 0
CDVD(00022118 39f68d5b): cdvdWrite05(NDataIn) 1
CDVD(00022118 39f68d61): cdvdWrite05(NDataIn) 0
CDVD(00022118 39f68d67): cdvdWrite05(NDataIn) 0
CDVD(00022118 39f68d6d): cdvdWrite05(NDataIn) 0
CDVD(00022118 39f68d73): cdvdWrite05(NDataIn) 0
CDVD(00022118 39f68d79): cdvdWrite05(NDataIn) 83
CDVD(00022118 39f68d7f): cdvdWrite05(NDataIn) 0
CDVD(00022130 39f68d85): cdvdWrite04: NCMD CdReadDVDV (8) (ParamP = b)
CDVD(00022130 39f68d85): DvdRead > startSector=528218, nSectors=1, RetryCnt=100, Speed=4(83), ReadMode=3(0) (1074=1430a0d)
CDVD(00022130 39f68d85): CdSeek Begin > Contiguous block without seek - delta=0 sectors
CDVD(00022130 39f68d85): cdvdRead04(NCMD) 8
CDVD(00021c4c 39f6904f): cdvdRead05(NReady) 0
CDVD(00021c94 39f69055): cdvdWrite07(Break) 1
*PCSX2*: CDVD BREAK 1
CDVD Break Call
CDVD(00020a90 39f69113): cdvdRead06(Error) 0
CDVD(00020a90 39f69113): cdvdRead08(Status) 0
CDVD(00020b0c 39f69123): cdvdRead08(Status) 0
CDVD(00020b64 39f69128): cdvdWrite08(IntrReason) = ACK(2)
CDVD(00024128 39f692a2): cdvdRead05(NReady) 4e
CDVD(00024234 39ffea5d): cdvdRead0A(Status) 0
CDVD(00024234 3a094cca): cdvdRead0A(Status) 0
CDVD(00024234 3a12af2b): cdvdRead0A(Status) 0
CDVD(00024234 3a1c11c4): cdvdRead0A(Status) 0
CDVD(00024234 3a2573fa): cdvdRead0A(Status) 0
CDVD(00024234 3a2ed673): cdvdRead0A(Status) 0
CDVD(00024234 3a3838c8): cdvdRead0A(Status) 0
CDVD(00024234 3a419b35): cdvdRead0A(Status) 0
CDVD(00024234 3a4afd96): cdvdRead0A(Status) 0
CDVD(00024234 3a54603b): cdvdRead0A(Status) 0
CDVD(00024234 3a5dc09c): cdvdRead0A(Status) 0
CDVD(00024234 3a672315): cdvdRead0A(Status) 0
CDVD(00024234 3a70856a): cdvdRead0A(Status) 0
CDVD(00024234 3a79e7e3): cdvdRead0A(Status) 0
CDVD(00024234 3a834a50): cdvdRead0A(Status) 0
CDVD(00024234 3a8cacb1): cdvdRead0A(Status) 0
CDVD(00024234 3a960ffd): cdvdRead0A(Status) 0
CDVD(00024234 3a9f717f): cdvdRead0A(Status) 0
CDVD(00024234 3aa8d464): cdvdRead0A(Status) 0
CDVD(00024234 3ab2364d): cdvdRead0A(Status) 0
CDVD(00024234 3abb98a3): cdvdRead0A(Status) 0
CDVD(00024234 3ac4fb1c): cdvdRead0A(Status) 0
CDVD(00024234 3ace6178): cdvdRead0A(Status) 0
CDVD(00024234 3ad7bfea): cdvdRead0A(Status) 0
CDVD(00024234 3ae1223f): cdvdRead0A(Status) 0
CDVD(00024234 3aea84de): cdvdRead0A(Status) 0
CDVD(00024234 3af3e70d): cdvdRead0A(Status) 0
CDVD(00024234 3afd4986): cdvdRead0A(Status) 0
CDVD(00024234 3b06abdb): cdvdRead0A(Status) 0
CDVD(00024234 3b100e8e): cdvdRead0A(Status) 0
CDVD(00024234 3b1970a9): cdvdRead0A(Status) 0
CDVD(00024234 3b22d2f5): cdvdRead0A(Status) 0
CDVD(00024234 3b2c35a3): cdvdRead0A(Status) 0
CDVD(00024234 3b358c49): cdvdRead0A(Status) 0
CDVD(00024234 3b3eeeda): cdvdRead0A(Status) 0
CDVD(00024234 3b484fad): cdvdRead0A(Status) 0
CDVD(00024234 3b51b3b9): cdvdRead0A(Status) 0
CDVD(00024234 3b5b1620): cdvdRead0A(Status) 0
CDVD(00024234 3b647877): cdvdRead0A(Status) 0
CDVD(00024234 3b6ddaee): cdvdRead0A(Status) 0
CDVD(00024234 3b773d45): cdvdRead0A(Status) 0
CDVD(00024234 3b809fbc): cdvdRead0A(Status) 0
CDVD(00024234 3b8a0311): cdvdRead0A(Status) 0
CDVD(00024234 3b936442): cdvdRead0A(Status) 0
CDVD(00024234 3b9cc730): cdvdRead0A(Status) 0
CDVD(00024234 3ba62958): cdvdRead0A(Status) 0
CDVD(00024234 3baf8baf): cdvdRead0A(Status) 0
CDVD(00024234 3bb8ee31): cdvdRead0A(Status) 0
CDVD(00024234 3bc2507d): cdvdRead0A(Status) 0
CDVD(00024234 3bcbb2f4): cdvdRead0A(Status) 0
CDVD(00024234 3bd5154b): cdvdRead0A(Status) 0
CDVD(00024234 3bde77c2): cdvdRead0A(Status) 0
CDVD(00024234 3be7de21): cdvdRead0A(Status) 0
CDVD(00024234 3bf13c91): cdvdRead0A(Status) 0
CDVD(00024234 3bfa9ea0): cdvdRead0A(Status) 0
CDVD(00024234 3c04015f): cdvdRead0A(Status) 0
CDVD(00024234 3c0d63b6): cdvdRead0A(Status) 0
CDVD(00024234 3c16c607): cdvdRead0A(Status) 0
CDVD(00024234 3c20286f): cdvdRead0A(Status) 0
CDVD(00024234 3c298afb): cdvdRead0A(Status) 0
CDVD(00024234 3c32ed52): cdvdRead0A(Status) 0
CDVD(00024234 3c3c4fc9): cdvdRead0A(Status) 0
CDVD(00024234 3c45b220): cdvdRead0A(Status) 0
CDVD(00024234 3c4f1497): cdvdRead0A(Status) 0
CDVD(00024234 3c5876ee): cdvdRead0A(Status) 0
CDVD(00024234 3c61d91d): cdvdRead0A(Status) 0
CDVD(00024234 3c6b3bbc): cdvdRead0A(Status) 0
CDVD(00024234 3c749e33): cdvdRead0A(Status) 0
CDVD(00024234 3c7e008b): cdvdRead0A(Status) 0
CDVD(00024234 3c8763ee): cdvdRead0A(Status) 0
CDVD(00024234 3c90c5af): cdvdRead0A(Status) 0
CDVD(00024234 3c9a447c): cdvdRead0A(Status) 0
CDVD(00024234 3ca3a6bd): cdvdRead0A(Status) 0
CDVD(00024234 3cad0463): cdvdRead0A(Status) 0
CDVD(00024234 3cb65c91): cdvdRead0A(Status) 0
CDVD(00024234 3cbfcaf5): cdvdRead0A(Status) 0
CDVD(00024234 3cc92b94): cdvdRead0A(Status) 0
CDVD(00024234 3cd2836d): cdvdRead0A(Status) 0
CDVD(00024234 3cdbf462): cdvdRead0A(Status) 0
CDVD(00024234 3ce552cd): cdvdRead0A(Status) 0
CDVD(00024234 3ceeaa94): cdvdRead0A(Status) 0
CDVD(00024234 3cf81ba7): cdvdRead0A(Status) 0
CDVD(00024234 3d017e05): cdvdRead0A(Status) 0
CDVD(00024234 3d0ad1d5): cdvdRead0A(Status) 0
CDVD(00024234 3d1442cd): cdvdRead0A(Status) 0
CDVD(00024234 3d1da144): cdvdRead0A(Status) 0
CDVD(00024234 3d26f8ff): cdvdRead0A(Status) 0
CDVD(00024234 3d306a12): cdvdRead0A(Status) 0
CDVD(00024234 3d39c869): cdvdRead0A(Status) 0
CDVD(00024234 3d432042): cdvdRead0A(Status) 0
CDVD(00024234 3d4c9137): cdvdRead0A(Status) 0
CDVD(00024234 3d55efa2): cdvdRead0A(Status) 0
CDVD(00024234 3d5f4769): cdvdRead0A(Status) 0
CDVD(00024234 3d68b943): cdvdRead0A(Status) 0
CDVD(00024234 3d7216d3): cdvdRead0A(Status) 0
CDVD(00024234 3d7b6eac): cdvdRead0A(Status) 0
CDVD(00024234 3d84e35a): cdvdRead0A(Status) 0
CDVD(00024234 3d8e3e0c): cdvdRead0A(Status) 0
CDVD(00024234 3d9795d3): cdvdRead0A(Status) 0
CDVD(00024234 3da10758): cdvdRead0A(Status) 0
CDVD(00024234 3daa653e): cdvdRead0A(Status) 0
CDVD(00024234 3db3bd0b): cdvdRead0A(Status) 0
CDVD(00024234 3dbd2e0c): cdvdRead0A(Status) 0
CDVD(00024234 3dc68c77): cdvdRead0A(Status) 0
CDVD(00024234 3dcfe43e): cdvdRead0A(Status) 0
CDVD(00024234 3dd95551): cdvdRead0A(Status) 0
CDVD(00024234 3de2b3a8): cdvdRead0A(Status) 0
CDVD(00024234 3dec0b81): cdvdRead0A(Status) 0
CDVD(00024234 3df57c76): cdvdRead0A(Status) 0
CDVD(00024234 3dfedae6): cdvdRead0A(Status) 0
CDVD(00024234 3e0832a8): cdvdRead0A(Status) 0
CDVD(00024234 3e11a3bb): cdvdRead0A(Status) 0
CDVD(00024234 3e1b0619): cdvdRead0A(Status) 0
CDVD(00024234 3e2459eb): cdvdRead0A(Status) 0
CDVD(00024234 3e2dcae0): cdvdRead0A(Status) 0
CDVD(00024234 3e37294b): cdvdRead0A(Status) 0
CDVD(00024234 3e408113): cdvdRead0A(Status) 0
CDVD(00024234 3e49f21a): cdvdRead0A(Status) 0
CDVD(00024234 3e53507d): cdvdRead0A(Status) 0
CDVD(00024234 3e5ca856): cdvdRead0A(Status) 0
CDVD(00024234 3e66194b): cdvdRead0A(Status) 0
CDVD(00024234 3e6f77b6): cdvdRead0A(Status) 0
CDVD(00024234 3e78d046): cdvdRead0A(Status) 0
CDVD(00024234 3e824090): cdvdRead0A(Status) 0
CDVD(00024234 3e8b9ee7): cdvdRead0A(Status) 0
CDVD(00024234 3e94f6c0): cdvdRead0A(Status) 0
CDVD(00024234 3e9e67b5): cdvdRead0A(Status) 0
CDVD(00024234 3ea7c620): cdvdRead0A(Status) 0
CDVD(00024234 3eb11de7): cdvdRead0A(Status) 0
CDVD(00024234 3eba8efa): cdvdRead0A(Status) 0
CDVD(00024234 3ec3ed51): cdvdRead0A(Status) 0
CDVD(00024234 3ecd452a): cdvdRead0A(Status) 0
CDVD(00024234 3ed6b620): cdvdRead0A(Status) 0
CDVD(00024234 3ee0148b): cdvdRead0A(Status) 0
CDVD(00024234 3ee96c28): cdvdRead0A(Status) 0
CDVD(00024234 3ef2dd65): cdvdRead0A(Status) 0
CDVD(00024234 3efc3bbc): cdvdRead0A(Status) 0
CDVD(00024234 3f059395): cdvdRead0A(Status) 0
CDVD(00024234 3f0f048a): cdvdRead0A(Status) 0
CDVD(00024234 3f1862f5): cdvdRead0A(Status) 0
CDVD(00024234 3f21babc): cdvdRead0A(Status) 0
CDVD(00024234 3f2b2bcf): cdvdRead0A(Status) 0
CDVD(00024234 3f348e2d): cdvdRead0A(Status) 0
CDVD(00024234 3f3de1ff): cdvdRead0A(Status) 0
CDVD(00024234 3f4752f4): cdvdRead0A(Status) 0
CDVD(00024234 3f50b15f): cdvdRead0A(Status) 0
CDVD(00024234 3f5a0926): cdvdRead0A(Status) 0
CDVD(00024234 3f6377f1): cdvdRead0A(Status) 0
CDVD(00024234 3f6cd891): cdvdRead0A(Status) 0
CDVD(00024234 3f76305e): cdvdRead0A(Status) 0
CDVD(00024234 3f7fa1d8): cdvdRead0A(Status) 0
CDVD(00024234 3f88ffca): cdvdRead0A(Status) 0
CDVD(00024234 3f925791): cdvdRead0A(Status) 0
CDVD(00024234 3f9bc8a4): cdvdRead0A(Status) 0
CDVD(00024234 3fa526fb): cdvdRead0A(Status) 0
CDVD(00024234 3fae7ed4): cdvdRead0A(Status) 0
CDVD(00024234 3fb7f2c0): cdvdRead0A(Status) 0
CDVD(00024234 3fc14e40): cdvdRead0A(Status) 0
CDVD(00024234 3fcaa5fb): cdvdRead0A(Status) 0
CDVD(00024234 3fd4170e): cdvdRead0A(Status) 0
CDVD(00024234 3fdd7565): cdvdRead0A(Status) 0
CDVD(00024234 3fe6cd3e): cdvdRead0A(Status) 0
CDVD(00024234 3ff03e33): cdvdRead0A(Status) 0
CDVD(00024234 3ff99c73): cdvdRead0A(Status) 0
CDVD(00024234 4002f466): cdvdRead0A(Status) 0
CDVD(00024234 400c6579): cdvdRead0A(Status) 0
CDVD(00024234 4015c3d0): cdvdRead0A(Status) 0
CDVD(00024234 401f33d4): cdvdRead0A(Status) 0
CDVD(00024234 40287e00): cdvdRead0A(Status) 0
CDVD(00024234 4031e099): cdvdRead0A(Status) 0
CDVD(00024234 403b4106): cdvdRead0A(Status) 0
CDVD(00024234 4043c3a6): cdvdRead0A(Status) 0
IPU1 running when IPU1 DMA disabled! CHCR 1 QWC ffb6
CDVD(00024234 404d25fb): cdvdRead0A(Status) 0
CDVD(00041f80 40566f14): cdvdRead05(NReady) 4e
CDVD(00024234 4056888c): cdvdRead0A(Status) 0
CDVD(00024234 405fc33a): cdvdRead0A(Status) 0
CDVD(00041f80 405fdb75): cdvdRead05(NReady) 4e
CDVD(00024234 405feac7): cdvdRead0A(Status) 0
CDVD(00024234 40692635): cdvdRead0A(Status) 0
CDVD(00041f80 40693e1e): cdvdRead05(NReady) 4e
CDVD(00024234 40694d2e): cdvdRead0A(Status) 0
CDVD(00024234 40728907): cdvdRead0A(Status) 0
CDVD(00041f80 4072a14d): cdvdRead05(NReady) 4e
CDVD(00024234 4072af97): cdvdRead0A(Status) 0
CDVD(00024234 407bea84): cdvdRead0A(Status) 0
CDVD(00041f80 407c02c1): cdvdRead05(NReady) 4e
CDVD(00024234 407c11fe): cdvdRead0A(Status) 0
CDVD(00024234 40854d48): cdvdRead0A(Status) 0
CDVD(00041f80 4085659a): cdvdRead05(NReady) 4e
CDVD(00024234 40857465): cdvdRead0A(Status) 0
CDVD(00024234 408eaf52): cdvdRead0A(Status) 0
CDVD(00041f80 408ec78f): cdvdRead05(NReady) 4e
CDVD(00024234 408ed6cb): cdvdRead0A(Status) 0
CDVD(00024234 409811ac): cdvdRead0A(Status) 0
CDVD(00041f80 409829e7): cdvdRead05(NReady) 4e
CDVD(00024234 409839e9): cdvdRead0A(Status) 0
CDVD(00024234 40a17421): cdvdRead0A(Status) 0
CDVD(00041f80 40a18c5e): cdvdRead05(NReady) 4e
CDVD(00024234 40a19b99): cdvdRead0A(Status) 0
CDVD(00024234 40aad67a): cdvdRead0A(Status) 0
CDVD(00041f80 40aaeeb5): cdvdRead05(NReady) 4e
CDVD(00024234 40aafe00): cdvdRead0A(Status) 0
CDVD(00024234 40b438ef): cdvdRead0A(Status) 0
CDVD(00041f80 40b4512c): cdvdRead05(NReady) 4e
CDVD(00024234 40b46067): cdvdRead0A(Status) 0
CDVD(00024234 40bd9b48): cdvdRead0A(Status) 0
CDVD(00041f80 40bdb377): cdvdRead05(NReady) 4e
CDVD(00024234 40bdc3a5): cdvdRead0A(Status) 0
CDVD(00024234 40c6fed7): cdvdRead0A(Status) 0
CDVD(00041f80 40c7172b): cdvdRead05(NReady) 4e
CDVD(00024234 40c72538): cdvdRead0A(Status) 0
CDVD(00024234 40d06016): cdvdRead0A(Status) 0
CDVD(00041f80 40d07851): cdvdRead05(NReady) 4e
CDVD(00024234 40d0879d): cdvdRead0A(Status) 0
CDVD(00024234 40d9c28b): cdvdRead0A(Status) 0
CDVD(00041f80 40d9dac8): cdvdRead05(NReady) 4e
CDVD(00024234 40d9ea04): cdvdRead0A(Status) 0
CDVD(00024234 40e324e4): cdvdRead0A(Status) 0
CDVD(00041f80 40e33d1f): cdvdRead05(NReady) 4e
CDVD(00024234 40e34c69): cdvdRead0A(Status) 0
CDVD(00024234 40ec87cd): cdvdRead0A(Status) 0
CDVD(00041f80 40ec9fb6): cdvdRead05(NReady) 4e
CDVD(00024234 40ecaed4): cdvdRead0A(Status) 0
CDVD(00024234 40f5e9b2): cdvdRead0A(Status) 0
CDVD(00041f80 40f601ed): cdvdRead05(NReady) 4e
CDVD(00024234 40f61138): cdvdRead0A(Status) 0
CDVD(00024234 40ff4c92): cdvdRead0A(Status) 0
CDVD(00041f80 40ff6492): cdvdRead05(NReady) 4e
CDVD(00024234 40ff74a4): cdvdRead0A(Status) 0
CDVD(00024234 4108aeac): cdvdRead0A(Status) 0
CDVD(00041f80 4108c6e7): cdvdRead05(NReady) 4e


Just leaving around notes for you guys (until I find something else that may be borking your emu).


Attached Files Thumbnail(s)
       
Reply
#5
Good work!
Will definitely check this out when I have some time.

If you have anymore of these CDVD tips by chance, we could really use them.
As you may know by now, the thing is totally undocumented and everyone just guesses how it should work Tongue2
Reply
#6
All the Shin Megami games use CDVD Break seemingly as part of their normal operation btw.

Code:
DvdRead: Reading Sector 31946(16 Blocks of Size 2064) at Speed=4x
DvdRead: Reading Sector 31962(16 Blocks of Size 2064) at Speed=4x
DvdRead: Reading Sector 31978(16 Blocks of Size 2064) at Speed=4x
CDVD Break Call
DvdRead: Reading Sector 31991(16 Blocks of Size 2064) at Speed=4x
DvdRead: Reading Sector 206164(16 Blocks of Size 2064) at Speed=4x
CDVD Break Call
DvdRead: Reading Sector 206176(16 Blocks of Size 2064) at Speed=4x
DvdRead: Reading Sector 31986(16 Blocks of Size 2064) at Speed=4x
CDVD Break Call
DvdRead: Reading Sector 31990(16 Blocks of Size 2064) at Speed=4x
DvdRead: Reading Sector 31992(16 Blocks of Size 2064) at Speed=4x
CDVD Break Call

I believe the driver calls break whenever a full file is read.

Also I'd like to ask if you guys ever had PSX games overwrite IOP memory by reading a disk too quickly?
In our case it's the games Tales of the Abyss, which really doesn't like short seek times.
If the seeks in some locations are below like 5 seconds, some IOP stuff dies (we assume it's overwriting wrong memory here).
Reply
#7
Hello,

shalma is undergoing one of his two-five year hiatus vacations (burnout a few times already). Tongue2

Quote:As you may know by now, the thing is totally undocumented and everyone just guesses how it should work Tongue
I think he didn't know that. I'll tell him though! Laugh

Quote:Also I'd like to ask if you guys ever had PSX games overwrite IOP memory by reading a disk too quickly?
In our case it's the games Tales of the Abyss, which really doesn't like short seek times.
If the seeks in some locations are below like 5 seconds, some IOP stuff dies (we assume it's overwriting wrong memory here).
Uhm.. g.

I remember working with him on Gundam Battle Assault 2 + InuYasha + Hokuto no Ken 2.

We had a problem where the CdlPause time was way too fast. Game was decompressing (case #1) and didn't have time to finish = crash.

case #2 was a timing issue and battles not starting.
case #3 was gpu transfer time and garbled up.

Team Buddies has problem with too fast cd timing (..?) - doesn't make it too menus (does in his debugger build though). Fade to Black uses roughly 'precise' 1/75x timing (too slow 1/74 = crash, too fast 1/76 = crash). Didn't care to understand why.

For case 1-3 above, we used 'guess' time of 4 * 1/75x read length. Same for CdlPause. Except for seek 0 - must be 0 time.


He also talked privately to me about your PCSX2 CdlPause not having ack - complete IRQ phases? (you just have ack) This chewed up >> several psx games also like FF7 (ack = 2 read cycles, complete = 0 or 4 read cycles if game does double pause).


I'll ask him later. He wanted to test around with Xebra cdrom but never cared enough.
Reply
#8
Very interesting stuff! We need as much info on cdvd (cd should give good clues on how it'll react), it's such an unknown yet it causes so much bother lol
[Image: ref-sig-anim.gif]

Reply
#9
He made a few comments about cd -> cdvd:

1) Irq_CommandComplete

He thought he saw 'Irq_Acknowledge' but it Complete. Which works on PS1 he said except for some games that specifically check for Ack - Complete (like RE2).


2) CDVD_LOG( "CDVD read finished, DMA3 done" );

This bothered him a bit but he didn't investigate. PS2 seems to autopause by itself.

The PS1 has autopause reading but almost no one used it (Lode Runner did but not required). So it normally goes like this without autopause:
reads - seek time - ack (needed by a few games regardless of seek time)
read 1x - data ready
read 1x - data ready
pause - ack (2/75 seems right) - complete (~4/75 works)
(edit: he's not sure if PS1 autopause throws ack)


It's the lack of 'autopause' time in PCSX2 'read finished' code that makes him uneasy. PCSX2 just immediately stops with 'Complete' after the last block is read.

Something he still thinks about.


3) ReadTD time

2 PS1 games read tracks beyond the TOC limit (ex. Need for Speed reads track 02 when it has 1 track). Game wants 0:2:0 returned for all 'invalid' tracks.

He didn't think it would fix anything but it was worth mentioning (if cdrom plugin works but not cdiso).


Side-note:
He also said Guncom 2 FMV jigsaw puzzle is not PCSX2 IPU bug. It's GSdx (ZZOgl works okay). Something about memory alignment he thought.



If there was a more 'complete' list of possible CDVD game bug descriptions hanging around the SVN somewhere, maybe he'd revisit a few more again when he feels better. It's how we did bugs with PCSX1 - a sticky colored post-it board (really!).

I'll nag him again some other time about TC2. Laugh
Reply
#10
awsome! thanks for your help xD
[Image: ref-sig-anim.gif]

Reply




Users browsing this thread: 1 Guest(s)