Emulator: Change main to become an Inferno application
This commit is contained in:
@@ -78,15 +78,6 @@ void Loader::init()
|
|||||||
|
|
||||||
Emu::the().writeMemory(i, bootrom[i]);
|
Emu::the().writeMemory(i, bootrom[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
update();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Loader::update()
|
|
||||||
{
|
|
||||||
while (true) {
|
|
||||||
Emu::the().update();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Loader::destroy()
|
void Loader::destroy()
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
void init();
|
void init();
|
||||||
void update();
|
|
||||||
void destroy();
|
void destroy();
|
||||||
|
|
||||||
void loadCartridgeHeader();
|
void loadCartridgeHeader();
|
||||||
|
|||||||
+44
-15
@@ -5,24 +5,53 @@
|
|||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "loader.h"
|
#include <string_view>
|
||||||
|
|
||||||
|
#include "inferno.h"
|
||||||
|
#include "inferno/entrypoint.h"
|
||||||
#include "ruc/argparser.h"
|
#include "ruc/argparser.h"
|
||||||
#include "ruc/format/print.h"
|
#include "ruc/format/print.h"
|
||||||
#include "ruc/timer.h"
|
#include "ruc/timer.h"
|
||||||
#include <string_view>
|
|
||||||
|
|
||||||
int main(int argc, const char* argv[])
|
#include "emu.h"
|
||||||
|
#include "loader.h"
|
||||||
|
|
||||||
|
class GarbAGE final : public Inferno::Application {
|
||||||
|
public:
|
||||||
|
GarbAGE(int argc, char* argv[])
|
||||||
|
: Application()
|
||||||
|
{
|
||||||
|
std::string_view bootrom_path = "gbc_bios.bin";
|
||||||
|
std::string_view rom_path;
|
||||||
|
|
||||||
|
ruc::ArgParser argParser;
|
||||||
|
argParser.addOption(bootrom_path, 'b', "bootrom", nullptr, nullptr, "", ruc::ArgParser::Required::Yes);
|
||||||
|
argParser.addOption(rom_path, 'r', "rom", nullptr, nullptr, "", ruc::ArgParser::Required::Yes);
|
||||||
|
argParser.parse(argc, argv);
|
||||||
|
|
||||||
|
Loader::the().setBootromPath(bootrom_path);
|
||||||
|
Loader::the().loadRom(rom_path);
|
||||||
|
}
|
||||||
|
|
||||||
|
~GarbAGE()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void update() override
|
||||||
|
{
|
||||||
|
// 154 scanlines * 456 cycles = 70224 cycles per frame
|
||||||
|
for (int i = 0; i < (144 * 456 + 10 * 456); ++i) {
|
||||||
|
Emu::the().update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void render() override
|
||||||
|
{
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Inferno::Application* Inferno::createApplication(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
std::string_view bootrom_path = "gbc_bios.bin";
|
GarbAGE* gameboy = new GarbAGE(argc, argv);
|
||||||
std::string_view rom_path;
|
return gameboy;
|
||||||
|
|
||||||
ruc::ArgParser argParser;
|
|
||||||
argParser.addOption(bootrom_path, 'b', "bootrom", nullptr, nullptr, "", ruc::ArgParser::Required::Yes);
|
|
||||||
argParser.addOption(rom_path, 'r', "rom", nullptr, nullptr, "", ruc::ArgParser::Required::Yes);
|
|
||||||
argParser.parse(argc, argv);
|
|
||||||
|
|
||||||
Loader::the().setBootromPath(bootrom_path);
|
|
||||||
Loader::the().loadRom(rom_path);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user