load files from command line
This commit is contained in:
@@ -1,11 +1,11 @@
|
|||||||
cmake_minimum_required(VERSION 3.25)
|
cmake_minimum_required(VERSION 3.25)
|
||||||
project(GBpp)
|
project(GameBoy++)
|
||||||
set(CMAKE_CXX_STANDARD 23)
|
set(CMAKE_CXX_STANDARD 23)
|
||||||
|
|
||||||
find_package(SDL2 REQUIRED)
|
find_package(SDL2 REQUIRED)
|
||||||
include_directories(${SDL2_INCLUDE_DIRS})
|
include_directories(${SDL2_INCLUDE_DIRS})
|
||||||
|
|
||||||
add_executable(GBpp src/main.cpp
|
add_executable(GameBoy++ src/main.cpp
|
||||||
src/gameboy.cpp
|
src/gameboy.cpp
|
||||||
src/opcodeResolver.cpp
|
src/opcodeResolver.cpp
|
||||||
src/interupts.cpp
|
src/interupts.cpp
|
||||||
@@ -18,4 +18,4 @@ add_executable(GBpp src/main.cpp
|
|||||||
src/testing.hpp
|
src/testing.hpp
|
||||||
src/joypad.cpp
|
src/joypad.cpp
|
||||||
)
|
)
|
||||||
target_link_libraries(GBpp ${SDL2_LIBRARIES})
|
target_link_libraries(GameBoy++ ${SDL2_LIBRARIES})
|
||||||
@@ -16,11 +16,18 @@ void AddressSpace::mapBootrom() {
|
|||||||
|
|
||||||
void AddressSpace::loadBootrom(const std::string& filename) {
|
void AddressSpace::loadBootrom(const std::string& filename) {
|
||||||
std::ifstream file;
|
std::ifstream file;
|
||||||
if (const uintmax_t size = std::filesystem::file_size(filename); size != 256) {
|
file.open(filename, std::ios::binary);
|
||||||
|
|
||||||
|
if (!file.is_open()) {
|
||||||
|
std::cerr << "Bootrom was not found!\nQuitting!\n" << std::endl;
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
const uintmax_t size = std::filesystem::file_size(filename);
|
||||||
|
if (size != 256) {
|
||||||
std::cerr << "Bootrom was an unexpected size!\nQuitting!\n" << std::endl;
|
std::cerr << "Bootrom was an unexpected size!\nQuitting!\n" << std::endl;
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
file.open(filename, std::ios::binary);
|
|
||||||
file.read(reinterpret_cast<char*>(bootrom), BOOTROM_SIZE);
|
file.read(reinterpret_cast<char*>(bootrom), BOOTROM_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,10 +10,15 @@ using json = nlohmann::json;
|
|||||||
void runJSONTests(GameBoy* gb);
|
void runJSONTests(GameBoy* gb);
|
||||||
|
|
||||||
int main(int argc, char** argv) {
|
int main(int argc, char** argv) {
|
||||||
|
if (argc != 3) {
|
||||||
|
std::cout << "Usage: " << argv[0] << " <bios> <game>" << std::endl;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
auto* gb = new GameBoy();
|
auto* gb = new GameBoy();
|
||||||
gb->SDL2setup();
|
gb->SDL2setup();
|
||||||
//runJSONTests(gb);
|
//runJSONTests(gb);
|
||||||
gb->start("../dmg_boot.bin", "../roms/DrMario.gb");
|
gb->start(argv[1], argv[2]);
|
||||||
gb->SDL2destroy();
|
gb->SDL2destroy();
|
||||||
delete gb;
|
delete gb;
|
||||||
|
|
||||||
|
|||||||
@@ -352,7 +352,7 @@ void GameBoy::drawLine() {
|
|||||||
|
|
||||||
void GameBoy::SDL2setup() {
|
void GameBoy::SDL2setup() {
|
||||||
SDL_Init(SDL_INIT_EVERYTHING);
|
SDL_Init(SDL_INIT_EVERYTHING);
|
||||||
screen = SDL_CreateWindow("GBpp",
|
screen = SDL_CreateWindow("GameBoy++",
|
||||||
SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
|
SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
|
||||||
RESOLUTION_X, RESOLUTION_Y,
|
RESOLUTION_X, RESOLUTION_Y,
|
||||||
0);
|
0);
|
||||||
|
|||||||
Reference in New Issue
Block a user