Fixed a silly Wave-DMA bug, fixes at least ARM7 & bgms in sfz3ugd.

===================================================================

I hate Sega docs and their non-clear explainations...
This commit is contained in:
Angelo Salese 2009-03-31 21:52:01 +00:00
parent 1e6133ef79
commit 5634fc413b
2 changed files with 11 additions and 4 deletions

View File

@ -99,7 +99,12 @@ extern UINT32 dc_coin_counts[2];
#define SB_ADST ((0x005F7818-0x005F7800)/4)
#define SB_ADSUSP ((0x005F781c-0x005F7800)/4)
#define SB_PDSTAP ((0x005F7c00-0x005F7c00)/4)
#define SB_PDSTAR ((0x005F7c04-0x005F7c00)/4)
#define SB_PDLEN ((0x005F7c08-0x005F7c00)/4)
#define SB_PDDIR ((0x005F7c0c-0x005F7c00)/4)
#define SB_PDTSEL ((0x005F7c10-0x005F7c00)/4)
#define SB_PDEN ((0x005F7c14-0x005F7c00)/4)
#define SB_PDST ((0x005F7c18-0x005F7c00)/4)
#define RTC1 ((0x00710000-0x00710000)/4)

View File

@ -893,12 +893,14 @@ WRITE64_HANDLER( dc_g2_ctrl_w )
UINT32 src,dst,size;
dst = wave_dma.aica_addr;
src = wave_dma.root_addr;
//size = wave_dma_size;
size = 0;
/* 0 rounding size = 32 Mbytes */
if(wave_dma.size == 0) { wave_dma.size = 0x2000000; }
/* TODO: use the ddt function. */
if(wave_dma.dir == 1)
{
for(;size<wave_dma.size;size++)
for(;size<wave_dma.size;size+=4)
{
memory_write_dword_64le(space,dst,memory_read_dword(space,src));
src+=4;
@ -907,7 +909,7 @@ WRITE64_HANDLER( dc_g2_ctrl_w )
}
else
{
for(;size<wave_dma.size;size++)
for(;size<wave_dma.size;size+=4)
{
memory_write_dword_64le(space,src,memory_read_dword(space,dst));
src+=4;