snes9xgx/source/ngc/aram.cpp
dborth 65984b9102 [What Was New 004 - August 5, 2008]
- added: option to disable AA filtering 
         (snes graphics 'crisper', AA now default OFF)
- added: mapped zooming and turbo mode to classic controller
- added: preliminary usb support (loading)
- changed: sram and freezes now saved by filename, not internal romname. 
           If you have multiple versions of the same game, you can now have 
           srams and freezes for each version. A prompt to convert to the 
           new naming is provided for sram only.
- changed: by default, autoload/save sram and freeze enabled
2008-10-16 01:52:18 +00:00

78 lines
1.4 KiB
C++

/****************************************************************************
* Snes9x 1.50
*
* Nintendo Gamecube Audio RAM
*
* softdev July 2006
****************************************************************************/
#include <gccore.h>
#include <string.h>
#include "aram.h"
#define ARAM_READ 1
#define ARAM_WRITE 0
#define TEMPSIZE 32768
static char tempbuffer[TEMPSIZE] ATTRIBUTE_ALIGN (32);
/**
* ARAMPut
*
* Move data from MAIN memory to ARAM
*/
void
ARAMPut (char *src, char *dst, int len)
{
DCFlushRange (src, len);
AR_StartDMA (ARAM_WRITE, (u32) src, (u32) dst, len);
while (AR_GetDMAStatus());
}
/**
* ARAMFetch
*
* This function will move data from ARAM to MAIN memory
*/
void
ARAMFetch (char *dst, char *src, int len)
{
DCInvalidateRange (dst, len);
AR_StartDMA (ARAM_READ, (u32) dst, (u32) src, len);
while (AR_GetDMAStatus ());
}
/**
* ARAMFetchSlow
*
* Required as SNES memory may NOT be 32-byte aligned
*/
void
ARAMFetchSlow (char *dst, char *src, int len)
{
int t;
if (len > TEMPSIZE)
{
t = 0;
while (t < len)
{
ARAMFetch (tempbuffer, src + t, TEMPSIZE);
if (t + TEMPSIZE > len)
{
memcpy (dst + t, tempbuffer, len - t);
}
else
memcpy (dst + t, tempbuffer, TEMPSIZE);
t += TEMPSIZE;
}
}
else
{
ARAMFetch (tempbuffer, src, len);
memcpy (dst, tempbuffer, len);
}
}