mirror of
https://github.com/dborth/snes9xgx.git
synced 2024-12-05 00:44:19 +01:00
65984b9102
- 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
78 lines
1.4 KiB
C++
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);
|
|
}
|
|
}
|