diff --git a/src/test/libc_test.cc b/src/test/libc_test.cc index 724ec5f9..50c6adce 100644 --- a/src/test/libc_test.cc +++ b/src/test/libc_test.cc @@ -5,7 +5,8 @@ namespace yaze_test { TEST(YazeCLibTest, InitializeAndCleanup) { - yaze_initialize(); + yaze_flags flags; + yaze_init(&flags); yaze_cleanup(); } diff --git a/src/yaze.cc b/src/yaze.cc index 7aabf2ce..b38399a7 100644 --- a/src/yaze.cc +++ b/src/yaze.cc @@ -2,11 +2,23 @@ #include "app/rom.h" -// TODO: Implement yaze_initialize -void yaze_initialize(void) {} +void yaze_init(yaze_flags* flags) { + if (flags == nullptr) { + return; + } -// TODO: Implement yaze_cleanup -void yaze_cleanup(void) {} + if (flags->rom_filename == nullptr) { + return; + } + + flags->rom = yaze_load_rom(flags->rom_filename); +} + +void yaze_cleanup(yaze_flags* flags) { + if (flags->rom) { + yaze_unload_rom(flags->rom); + } +} z3_rom* yaze_load_rom(const char* filename) { yaze::app::Rom* internal_rom; diff --git a/src/yaze.h b/src/yaze.h index be764c33..4cc2a8f1 100644 --- a/src/yaze.h +++ b/src/yaze.h @@ -11,9 +11,11 @@ extern "C" { #include "base/snes_color.h" #include "base/sprite.h" -void yaze_initialize(void); +typedef struct yaze_flags yaze_flags; -void yaze_cleanup(void); +void yaze_init(yaze_flags*); + +void yaze_cleanup(yaze_flags*); typedef struct z3_rom z3_rom; struct z3_rom {