project64/Source/Project64/N64System/Mips/PifRam.h

62 lines
1.7 KiB
C++

/****************************************************************************
* *
* Project64 - A Nintendo 64 emulator. *
* http://www.pj64-emu.com/ *
* Copyright (C) 2012 Project64. All rights reserved. *
* *
* License: *
* GNU/GPLv2 http://www.gnu.org/licenses/gpl-2.0.html *
* *
****************************************************************************/
#pragma once
#include <Project64/Logging.h>
class CPifRamSettings
{
protected:
CPifRamSettings();
virtual ~CPifRamSettings();
bool bShowPifRamErrors() const
{
return m_bShowPifRamErrors;
}
private:
static void RefreshSettings(void*);
static bool m_bShowPifRamErrors;
static int m_RefCount;
};
class CPifRam :
public CLogging,
private CPifRamSettings,
private CEeprom
{
public:
CPifRam(bool SavesReadOnly);
~CPifRam();
void Reset();
void PifRamWrite();
void PifRamRead();
void SI_DMA_READ();
void SI_DMA_WRITE();
protected:
BYTE m_PifRom[0x7C0];
BYTE m_PifRam[0x40];
private:
#define CHALLENGE_LENGTH 0x20
void ProcessControllerCommand ( int Control, BYTE * Command );
void ReadControllerCommand ( int Control, BYTE * Command );
void LogControllerPakData ( char * Description );
void n64_cic_nus_6105 (char challenge[], char response[], int length);
};