Code cleanup

This commit is contained in:
Souryo 2017-04-29 08:29:56 -04:00
parent 4d48b6a95f
commit 0c2cc8c94d
26 changed files with 83 additions and 53 deletions

View file

@ -8,6 +8,7 @@
#include "ApuFrameCounter.h"
#include "EmulationSettings.h"
#include "SoundMixer.h"
#include "MemoryManager.h"
APU* APU::Instance = nullptr;

View file

@ -3,6 +3,7 @@
#include "ControlManager.h"
#include "PPU.h"
#include "GameServerConnection.h"
#include "IKeyManager.h"
void ArkanoidController::StreamState(bool saving)
{

View file

@ -2,6 +2,7 @@
#include "BizhawkMovie.h"
#include "VsControlManager.h"
#include "FDS.h"
#include "PPU.h"
BizhawkMovie::BizhawkMovie()
{

View file

@ -6,6 +6,7 @@
#include "TraceLogger.h"
#include "Debugger.h"
#include "NsfMapper.h"
#include "MemoryManager.h"
CPU* CPU::Instance = nullptr;
@ -176,6 +177,40 @@ void CPU::BRK() {
_prevRunIrq = false;
}
void CPU::MemoryWrite(uint16_t addr, uint8_t value)
{
_cpuWrite = true;;
_writeAddr = addr;
IncCycleCount();
while(_dmcDmaRunning) {
IncCycleCount();
}
_memoryManager->Write(addr, value);
//DMA DMC might have started after a write to $4015, stall CPU if needed
while(_dmcDmaRunning) {
IncCycleCount();
}
_cpuWrite = false;
}
uint8_t CPU::MemoryRead(uint16_t addr, MemoryOperationType operationType) {
IncCycleCount();
while(_dmcDmaRunning) {
//Stall CPU until we can process a DMC read
if((addr != 0x4016 && addr != 0x4017 && (_cycleCount & 0x01)) || _dmcCounter == 1) {
//While the CPU is stalled, reads are performed on the current address
//Reads are only performed every other cycle? This fixes "dma_2007_read" test
//This behavior causes the $4016/7 data corruption when a DMC is running.
//When reading $4016/7, only the last read counts (because this only occurs to low-to-high transitions, i.e once in this case)
_memoryManager->Read(addr);
}
IncCycleCount();
}
uint8_t value = _memoryManager->Read(addr, operationType);
return value;
}
uint16_t CPU::FetchOperand()
{
switch(_instAddrMode) {

View file

@ -1,11 +1,12 @@
#pragma once
#include "stdafx.h"
#include "MemoryManager.h"
#include "Snapshotable.h"
#include "EmulationSettings.h"
#include "Types.h"
enum class NesModel;
class MemoryManager;
namespace PSFlags
{
enum PSFlags : uint8_t
@ -135,39 +136,8 @@ private:
return ((valA + valB) & 0xFF00) != (valA & 0xFF00);
}
void MemoryWrite(uint16_t addr, uint8_t value)
{
_cpuWrite = true;;
_writeAddr = addr;
IncCycleCount();
while(_dmcDmaRunning) {
IncCycleCount();
}
_memoryManager->Write(addr, value);
//DMA DMC might have started after a write to $4015, stall CPU if needed
while (_dmcDmaRunning) {
IncCycleCount();
}
_cpuWrite = false;
}
uint8_t MemoryRead(uint16_t addr, MemoryOperationType operationType = MemoryOperationType::Read) {
IncCycleCount();
while(_dmcDmaRunning) {
//Stall CPU until we can process a DMC read
if((addr != 0x4016 && addr != 0x4017 && (_cycleCount & 0x01)) || _dmcCounter == 1) {
//While the CPU is stalled, reads are performed on the current address
//Reads are only performed every other cycle? This fixes "dma_2007_read" test
//This behavior causes the $4016/7 data corruption when a DMC is running.
//When reading $4016/7, only the last read counts (because this only occurs to low-to-high transitions, i.e once in this case)
_memoryManager->Read(addr);
}
IncCycleCount();
}
uint8_t value = _memoryManager->Read(addr, operationType);
return value;
}
void MemoryWrite(uint16_t addr, uint8_t value);
uint8_t MemoryRead(uint16_t addr, MemoryOperationType operationType = MemoryOperationType::Read);
uint16_t MemoryReadWord(uint16_t addr, MemoryOperationType operationType = MemoryOperationType::Read) {
uint8_t lo = MemoryRead(addr, operationType);

View file

@ -1,6 +1,11 @@
#include "stdafx.h"
#include <thread>
#include "Console.h"
#include "CPU.h"
#include "PPU.h"
#include "APU.h"
#include "MemoryManager.h"
#include "AutoSaveManager.h"
#include "BaseMapper.h"
#include "ControlManager.h"
#include "VsControlManager.h"

View file

@ -2,18 +2,19 @@
#include "stdafx.h"
#include <atomic>
#include "CPU.h"
#include "PPU.h"
#include "APU.h"
#include "MemoryManager.h"
#include "ControlManager.h"
#include "../Utilities/SimpleLock.h"
#include "AutoSaveManager.h"
#include "RomData.h"
class Debugger;
class BaseMapper;
class RewindManager;
class APU;
class CPU;
class PPU;
class MemoryManager;
class ControlManager;
class AutoSaveManager;
enum class NesModel;
class Console
{

View file

@ -7,6 +7,9 @@
#include "EmulationSettings.h"
#include "Console.h"
#include "GameServerConnection.h"
#include "MemoryManager.h"
#include "PPU.h"
#include "IKeyManager.h"
unique_ptr<IKeyManager> ControlManager::_keyManager = nullptr;
shared_ptr<BaseControlDevice> ControlManager::_controlDevices[2] = { nullptr, nullptr };

View file

@ -1,15 +1,15 @@
#pragma once
#include "stdafx.h"
#include "BaseControlDevice.h"
#include "IMemoryHandler.h"
#include "IGameBroadcaster.h"
#include "Snapshotable.h"
#include "../Utilities/SimpleLock.h"
#include "IKeyManager.h"
#include "IMemoryHandler.h"
#include "Snapshotable.h"
class BaseControlDevice;
class Zapper;
class IGameBroadcaster;
class IKeyManager;
enum class MouseButton;
struct MousePosition
{

View file

@ -17,6 +17,8 @@
#include "Assembler.h"
#include "CodeRunner.h"
#include "DisassemblyInfo.h"
#include "PPU.h"
#include "MemoryManager.h"
Debugger* Debugger::Instance = nullptr;
const int Debugger::BreakpointTypeCount;

View file

@ -3,6 +3,7 @@
#include "APU.h"
#include "CPU.h"
#include "Console.h"
#include "MemoryManager.h"
DeltaModulationChannel *DeltaModulationChannel::Instance = nullptr;

View file

@ -1,8 +1,9 @@
#include "stdafx.h"
#include "../Utilities/HexUtilities.h"
#include "DisassemblyInfo.h"
#include "CPU.h"
#include "LabelManager.h"
#include "../Utilities/HexUtilities.h"
#include "MemoryManager.h"
string DisassemblyInfo::OPName[256];
AddrMode DisassemblyInfo::OPMode[256];

View file

@ -1,6 +1,7 @@
#include "stdafx.h"
#include "FDS.h"
#include "FdsAudio.h"
#include "MemoryManager.h"
FDS* FDS::Instance = nullptr;

View file

@ -1,12 +1,13 @@
#pragma once
#include "stdafx.h"
#include <algorithm>
#include "Snapshotable.h"
#include "EmulationSettings.h"
#include "APU.h"
#include "BaseFdsChannel.h"
#include "ModChannel.h"
#include <algorithm>
#include "BaseExpansionAudio.h"
#include "MemoryManager.h"
class FdsAudio : public BaseExpansionAudio
{

View file

@ -5,6 +5,7 @@ using std::thread;
#include "MessageManager.h"
#include "GameServer.h"
#include "Console.h"
#include "ControlManager.h"
#include "../Utilities/Socket.h"
#include "PlayerListMessage.h"

View file

@ -1,4 +1,5 @@
#include "stdafx.h"
#include "PPU.h"
#include "HdNesPack.h"
#include "HdVideoFilter.h"

View file

@ -2,6 +2,7 @@
#include "stdafx.h"
#include "BaseMapper.h"
#include "CPU.h"
#include "MemoryManager.h"
class JyCompany : public BaseMapper
{

View file

@ -4,6 +4,7 @@
#include "BaseExpansionAudio.h"
#include "CPU.h"
#include "Console.h"
#include "MemoryManager.h"
class MMC5Square : public SquareChannel
{

View file

@ -2,6 +2,7 @@
#include "NsfMapper.h"
#include "CPU.h"
#include "Console.h"
#include "MemoryManager.h"
NsfMapper* NsfMapper::_instance;

View file

@ -2,6 +2,8 @@
#include "OekaKidsTablet.h"
#include "ControlManager.h"
#include "GameServerConnection.h"
#include "IKeyManager.h"
#include "IKeyManager.h"
void OekaKidsTablet::StreamState(bool saving)
{

View file

@ -6,6 +6,7 @@
#include "MessageManager.h"
#include "Debugger.h"
#include "MovieManager.h"
#include "PPU.h"
#include "../Utilities/FolderUtilities.h"
#include "../Utilities/md5.h"
#include "../Utilities/ZipWriter.h"

View file

@ -5,6 +5,7 @@
#include "Console.h"
#include "MemoryManager.h"
#include "LabelManager.h"
#include "EmulationSettings.h"
#include "../Utilities/HexUtilities.h"
#include "../Utilities/FolderUtilities.h"

View file

@ -9,6 +9,7 @@
#include "ScaleFilter.h"
#include "VideoRenderer.h"
#include "RewindManager.h"
#include "PPU.h"
unique_ptr<VideoDecoder> VideoDecoder::Instance;

View file

@ -4,6 +4,7 @@
#include "PPU.h"
#include "ControlManager.h"
#include "GameServerConnection.h"
#include "IKeyManager.h"
void Zapper::StreamState(bool saving)
{

View file

@ -23,6 +23,7 @@
#include "../Utilities/Timer.h"
#include "../Core/MessageManager.h"
#include "../Core/ControlManager.h"
#include "../Core/EmulationSettings.h"
using namespace std;

View file

@ -1,17 +1,12 @@
#include "stdafx.h"
#include <Dwmapi.h>
#include "Renderer.h"
#include "DirectXTK/SpriteBatch.h"
#include "DirectXTK/SpriteFont.h"
#include "DirectXTK/DDSTextureLoader.h"
#include "DirectXTK/WICTextureLoader.h"
#include "../Core/PPU.h"
#include "../Core/VideoRenderer.h"
#include "../Core/VideoDecoder.h"
#include "../Core/EmulationSettings.h"
#include "../Core/MessageManager.h"
#include "../Utilities/UTF8Util.h"
#include "../Core/HdNesPack.h"
using namespace DirectX;