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

67 lines
2.1 KiB
C
Raw Normal View History

2012-12-19 09:30:18 +00:00
/****************************************************************************
* *
2015-11-10 05:21:49 +00:00
* Project64 - A Nintendo 64 emulator. *
2012-12-19 09:30:18 +00:00
* 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
2015-12-06 09:59:58 +00:00
#include <Project64-core/Logging.h>
#include <Project64-core/N64System/Mips/Eeprom.h>
2015-12-06 09:59:58 +00:00
class CPifRamSettings
{
protected:
2016-01-13 21:29:55 +00:00
CPifRamSettings();
virtual ~CPifRamSettings();
bool bShowPifRamErrors() const
{
return m_bShowPifRamErrors;
}
private:
2016-01-13 21:29:55 +00:00
static void RefreshSettings(void*);
2016-01-13 21:29:55 +00:00
static bool m_bShowPifRamErrors;
static int32_t m_RefCount;
};
class CPifRam :
public CLogging,
2016-01-13 21:29:55 +00:00
private CPifRamSettings,
private CEeprom
{
public:
2016-01-13 21:29:55 +00:00
CPifRam(bool SavesReadOnly);
~CPifRam();
2016-01-13 21:29:55 +00:00
void Reset();
2016-01-13 21:29:55 +00:00
void PifRamWrite();
void PifRamRead();
2016-01-13 21:29:55 +00:00
void SI_DMA_READ();
void SI_DMA_WRITE();
protected:
2015-12-06 09:59:58 +00:00
uint8_t m_PifRom[0x7C0];
uint8_t m_PifRam[0x40];
private:
CPifRam(); // Disable default constructor
CPifRam(const CPifRam&); // Disable copy constructor
CPifRam& operator=(const CPifRam&); // Disable assignment
enum { CHALLENGE_LENGTH = 0x20 };
void ProcessControllerCommand(int32_t Control, uint8_t * Command);
void ReadControllerCommand(int32_t Control, uint8_t * Command);
void LogControllerPakData(const char * Description);
void n64_cic_nus_6105(char challenge[], char response[], int32_t length);
2015-01-31 19:27:27 +00:00
};