[mupen64plus-rsp-z64] 65/140: Fix DMA transfer parameter decoding

Sven Eckelmann ecsv-guest at moszumanska.debian.org
Thu Nov 26 06:05:22 UTC 2015


This is an automated email from the git hooks/post-receive script.

ecsv-guest pushed a commit to branch master
in repository mupen64plus-rsp-z64.

commit b2be45cfdbeee9950a2232ee3fcb28a5c0e1424c
Author: Sven Eckelmann <sven at narfation.org>
Date:   Fri Sep 2 11:21:44 2011 +0200

    Fix DMA transfer parameter decoding
---
 debian/changelog                  |  2 ++
 debian/patches/dma_transfer.patch | 76 +++++++++++++++++++++++++++++++++++++++
 debian/patches/series             |  1 +
 3 files changed, 79 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index 78949ad..06e9b84 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,8 @@
 mupen64plus-rsp-z64 (1.99.4-4) UNRELEASED; urgency=low
 
   * Don't mix implicit and explicit rules to prevent FTBFS with make 3.82
+  * debian/patches:
+    - Add dma_transfer.patch, Fix DMA transfer parameter decoding
 
  -- Sven Eckelmann <sven at narfation.org>  Sun, 21 Aug 2011 17:55:03 +0200
 
diff --git a/debian/patches/dma_transfer.patch b/debian/patches/dma_transfer.patch
new file mode 100644
index 0000000..eff3b19
--- /dev/null
+++ b/debian/patches/dma_transfer.patch
@@ -0,0 +1,76 @@
+Description: Fix DMA transfer parameter decoding
+Author: casualjames <casual.james at yahoo.es>
+
+---
+diff --git a/src/rsp.cpp b/src/rsp.cpp
+index 669f63b341495663b593c0c429a683cc097f1850..404032aa206b429b62b8bfc40994b4943ce6bdd4 100644
+--- a/src/rsp.cpp
++++ b/src/rsp.cpp
+@@ -2897,9 +2897,13 @@ static void rsp_set_context(void *src)
+ }
+ 
+ 
++enum sp_dma_direction
++{
++	SP_DMA_RDRAM_TO_IDMEM,
++	SP_DMA_IDMEM_TO_RDRAM
++};
+ 
+-
+-static void sp_dma(int direction)
++static void sp_dma(enum sp_dma_direction direction)
+ {
+     UINT8 *src, *dst;
+     int i, j;
+@@ -2908,21 +2912,12 @@ static void sp_dma(int direction)
+     int skip;
+ 
+ 
+-    INT32 l = sp_dma_length;
+-
+-    if (direction)
+-    {
+-        length = ((l & 0xfff) | 3) + 1;
+-    }
+-    else
+-    {
+-        length = ((l & 0xfff) | 7) + 1;
+-    }
+-
++    UINT32 l = sp_dma_length;
++    length = ((l & 0xfff) | 7) + 1;
+     skip = (l >> 20) + length;
+     count = ((l >> 12) & 0xff) + 1;
+ 
+-    if (direction == 0)             // RDRAM -> I/DMEM
++    if (direction == SP_DMA_RDRAM_TO_IDMEM) // RDRAM -> I/DMEM
+     {
+         //UINT32 src_address = sp_dram_addr & ~7;
+         //UINT32 dst_address = (sp_mem_addr & 0x1000) ? 0x4001000 : 0x4000000;
+@@ -2945,7 +2940,7 @@ static void sp_dma(int direction)
+         *z64_rspinfo.SP_DMA_BUSY_REG = 0;
+         *z64_rspinfo.SP_STATUS_REG  &= ~SP_STATUS_DMABUSY;
+     }
+-    else                                    // I/DMEM -> RDRAM
++    else if (direction == SP_DMA_IDMEM_TO_RDRAM) // I/DMEM -> RDRAM
+     {
+         //UINT32 dst_address = sp_dram_addr & ~7;
+         //UINT32 src_address = (sp_mem_addr & 0x1000) ? 0x4001000 : 0x4000000;
+@@ -3030,7 +3025,7 @@ void n64_sp_reg_w(UINT32 offset, UINT32 data, UINT32 dummy)
+             //                              sp_dma_count = (data >> 12) & 0xff;
+             //                              sp_dma_skip = (data >> 20) & 0xfff;
+             sp_dma_length=data;
+-            sp_dma(0);
++            sp_dma(SP_DMA_RDRAM_TO_IDMEM);
+             break;
+ 
+         case 0x0c/4:            // SP_WR_LEN_REG
+@@ -3038,7 +3033,7 @@ void n64_sp_reg_w(UINT32 offset, UINT32 data, UINT32 dummy)
+             //                              sp_dma_count = (data >> 12) & 0xff;
+             //                              sp_dma_skip = (data >> 20) & 0xfff;
+             sp_dma_length=data;
+-            sp_dma(1);
++            sp_dma(SP_DMA_IDMEM_TO_RDRAM);
+             break;
+ 
+         case 0x10/4:            // SP_STATUS_REG
diff --git a/debian/patches/series b/debian/patches/series
index c753e70..fd94bcb 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1 +1,2 @@
 rewrite_makefile.patch
+dma_transfer.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/mupen64plus-rsp-z64.git



More information about the Pkg-games-commits mailing list