From 6fd2ccec503041427dbd03388e67da70a4d5502e Mon Sep 17 00:00:00 2001 From: "SND\\ckain_cp" Date: Wed, 13 Feb 2013 12:36:00 +0000 Subject: Fix Vampire Hunter D title screen by handling special DMA CHCR 0x0401 (not start/busy). http://nocash.emubase.de/psx-spx.htm#dmachannels DmaExec looks fugly now. :/ git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@82841 e17a0e51-4ae3-4d35-97c3-1a29b211df97 --- libpcsxcore/gpu.c | 3 ++- libpcsxcore/psxhw.c | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) (limited to 'libpcsxcore') diff --git a/libpcsxcore/gpu.c b/libpcsxcore/gpu.c index 2b1e5b22..992eb536 100755 --- a/libpcsxcore/gpu.c +++ b/libpcsxcore/gpu.c @@ -152,9 +152,10 @@ void psxDma2(u32 madr, u32 bcr, u32 chcr) { // GPU #endif return; + case 0x0401: // Vampire Hunter D: title screen linked list update case 0x01000401: // dma chain #ifdef PSXDMA_LOG - PSXDMA_LOG("*** DMA 2 - GPU dma chain *** %lx addr = %lx size = %lx\n", chcr, madr, bcr); + PSXDMA_LOG("*** DMA 2 - GPU dma chain *** %8.8lx addr = %lx size = %lx\n", chcr, madr, bcr); #endif size = gpuDmaChainSize(madr); diff --git a/libpcsxcore/psxhw.c b/libpcsxcore/psxhw.c index 6fc705b0..2e7241d0 100755 --- a/libpcsxcore/psxhw.c +++ b/libpcsxcore/psxhw.c @@ -503,7 +503,9 @@ void psxHwWrite16(u32 add, u16 value) { #define DmaExec(n) { \ HW_DMA##n##_CHCR = SWAPu32(value); \ \ - if (SWAPu32(HW_DMA##n##_CHCR) & 0x01000000 && SWAPu32(HW_DMA_PCR) & (8 << (n * 4))) { \ + if ((SWAPu32(HW_DMA##n##_CHCR) & 0x01000000 || \ + (n == 2 && SWAPu32(HW_DMA##n##_CHCR) == 0x0401)) /* Vampire Hunter D */ && \ + SWAPu32(HW_DMA_PCR) & (8 << (n * 4))) { \ psxDma##n(SWAPu32(HW_DMA##n##_MADR), SWAPu32(HW_DMA##n##_BCR), SWAPu32(HW_DMA##n##_CHCR)); \ } \ } -- cgit v1.2.3