Fixed project issues (DLL was not included in .exe)
+ Prevent crash when SPC bios is not found
This commit is contained in:
parent
75dee8b8e4
commit
66cc7847fb
5 changed files with 34 additions and 19 deletions
|
@ -15,6 +15,7 @@
|
|||
#include "DebugHud.h"
|
||||
#include "FrameLimiter.h"
|
||||
#include "MessageManager.h"
|
||||
#include "KeyManager.h"
|
||||
#include "../Utilities/Timer.h"
|
||||
#include "../Utilities/VirtualFile.h"
|
||||
#include "../Utilities/PlatformUtilities.h"
|
||||
|
@ -57,13 +58,17 @@ void Console::Run()
|
|||
|
||||
PlatformUtilities::EnableHighResolutionTimer();
|
||||
|
||||
uint32_t keyCode = KeyManager::GetKeyCode("Tab");
|
||||
|
||||
auto lock = _runLock.AcquireSafe();
|
||||
while(!_stopFlag) {
|
||||
_cpu->Exec();
|
||||
|
||||
if(previousFrameCount != _ppu->GetFrameCount()) {
|
||||
frameLimiter.ProcessFrame();
|
||||
frameLimiter.WaitForNextFrame();
|
||||
if(!KeyManager::IsKeyPressed(keyCode)) {
|
||||
frameLimiter.ProcessFrame();
|
||||
frameLimiter.WaitForNextFrame();
|
||||
}
|
||||
previousFrameCount = _ppu->GetFrameCount();
|
||||
}
|
||||
}
|
||||
|
@ -90,6 +95,8 @@ void Console::Stop()
|
|||
_controlManager.reset();
|
||||
_memoryManager.reset();
|
||||
_dmaController.reset();
|
||||
|
||||
_soundMixer->StopAudio();
|
||||
}
|
||||
|
||||
void Console::LoadRom(VirtualFile romFile, VirtualFile patchFile)
|
||||
|
@ -99,23 +106,34 @@ void Console::LoadRom(VirtualFile romFile, VirtualFile patchFile)
|
|||
shared_ptr<BaseCartridge> cart = BaseCartridge::CreateCartridge(romFile, patchFile);
|
||||
if(cart) {
|
||||
MessageManager::ClearLog();
|
||||
|
||||
vector<uint8_t> spcRomData;
|
||||
VirtualFile spcBios("spc700.rom");
|
||||
if(spcBios.IsValid()) {
|
||||
spcBios.ReadFile(spcRomData);
|
||||
} else {
|
||||
MessageManager::Log("[SPC] spc700.rom not found, cannot launch game.");
|
||||
return;
|
||||
}
|
||||
|
||||
_internalRegisters.reset(new InternalRegisters(shared_from_this()));
|
||||
_ppu.reset(new Ppu(shared_from_this()));
|
||||
_spc.reset(new Spc(shared_from_this()));
|
||||
_spc.reset(new Spc(shared_from_this(), spcRomData));
|
||||
_cart = cart;
|
||||
_controlManager.reset(new ControlManager(shared_from_this()));
|
||||
_memoryManager.reset(new MemoryManager());
|
||||
_dmaController.reset(new DmaController(_memoryManager.get()));
|
||||
_dmaController.reset(new DmaController(shared_from_this()));
|
||||
|
||||
_memoryManager->Initialize(shared_from_this());
|
||||
|
||||
_cpu.reset(new Cpu(_memoryManager));
|
||||
_memoryManager->IncrementMasterClockValue<160>();
|
||||
|
||||
//if(_debugger) {
|
||||
//Reset debugger if it was running before
|
||||
auto lock = _debuggerLock.AcquireSafe();
|
||||
_debugger.reset();
|
||||
GetDebugger();
|
||||
//auto lock = _debuggerLock.AcquireSafe();
|
||||
//_debugger.reset();
|
||||
//GetDebugger();
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
|
10
Core/Spc.cpp
10
Core/Spc.cpp
|
@ -4,16 +4,12 @@
|
|||
#include "Console.h"
|
||||
#include "MemoryManager.h"
|
||||
#include "SoundMixer.h"
|
||||
#include "../Utilities/VirtualFile.h"
|
||||
|
||||
Spc::Spc(shared_ptr<Console> console)
|
||||
Spc::Spc(shared_ptr<Console> console, vector<uint8_t> &spcRomData)
|
||||
{
|
||||
_console = console;
|
||||
|
||||
vector<uint8_t> fileData;
|
||||
VirtualFile spcBios("spc700.rom");
|
||||
spcBios.ReadFile(fileData);
|
||||
memcpy(_spcBios, fileData.data(), 64);
|
||||
|
||||
memcpy(_spcBios, spcRomData.data(), 64);
|
||||
|
||||
_soundBuffer = new int16_t[Spc::SampleBufferSize];
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ private:
|
|||
int GetSpcTime();
|
||||
|
||||
public:
|
||||
Spc(shared_ptr<Console> console);
|
||||
Spc(shared_ptr<Console> console, vector<uint8_t> &spcRomData);
|
||||
~Spc();
|
||||
|
||||
uint8_t Read(uint16_t addr);
|
||||
|
|
|
@ -640,14 +640,14 @@ if "x86" == "$(PlatformName)" copy "C:\Program Files (x86)\Microsoft Visual Stud
|
|||
if "x64" == "$(PlatformName)" copy "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\pgort140.dll" "pgort140.dll"
|
||||
|
||||
if "PGO Optimize" == "$(ConfigurationName)" (
|
||||
copy "$(SolutionDir)bin\x86\PGO Profile\MesenCore.dll" "Dependencies\MesenCore.x86.dll"
|
||||
copy "$(SolutionDir)bin\x86\PGO Profile\MesenSCore.dll" "Dependencies\MesenSCore.x86.dll"
|
||||
|
||||
copy "$(SolutionDir)bin\x64\PGO Profile\MesenCore.dll" "Dependencies\MesenCore.x64.dll"
|
||||
copy "$(SolutionDir)bin\x64\PGO Profile\MesenSCore.dll" "Dependencies\MesenSCore.x64.dll"
|
||||
)
|
||||
if NOT "PGO Optimize" == "$(ConfigurationName)" (
|
||||
copy "$(SolutionDir)bin\x86\$(ConfigurationName)\MesenCore.dll" "Dependencies\MesenCore.x86.dll"
|
||||
copy "$(SolutionDir)bin\x86\$(ConfigurationName)\MesenSCore.dll" "Dependencies\MesenSCore.x86.dll"
|
||||
|
||||
copy "$(SolutionDir)bin\x64\$(ConfigurationName)\MesenCore.dll" "Dependencies\MesenCore.x64.dll"
|
||||
copy "$(SolutionDir)bin\x64\$(ConfigurationName)\MesenSCore.dll" "Dependencies\MesenSCore.x64.dll"
|
||||
)
|
||||
copy "MesenUpdater.exe" "Dependencies\MesenUpdater.exe"
|
||||
call DependencyPacker.exe
|
||||
|
|
|
@ -23,6 +23,7 @@ SoundManager::SoundManager(shared_ptr<Console> console, HWND hwnd)
|
|||
|
||||
SoundManager::~SoundManager()
|
||||
{
|
||||
_console->GetSoundMixer()->RegisterAudioDevice(nullptr);
|
||||
Release();
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue