diff --git a/source/rom.h b/source/rom.h index 944ed2d..0e02b41 100644 --- a/source/rom.h +++ b/source/rom.h @@ -55,4 +55,11 @@ ws_romHeaderStruct *ws_rom_getHeader(uint8_t *wsrom, uint32_t wsromSize); uint32_t ws_rom_sramSize(uint8_t *wsrom, uint32_t wsromSize); uint32_t ws_rom_eepromSize(uint8_t *wsrom, uint32_t wsromSize); +static inline uint8_t *ws_get_page_ptr(uint8_t *wsrom, uint32_t romSize, uint16_t page) +{ + uint32_t temp = page << 16; + temp &= (romSize - 1); + return &wsrom[temp]; +} + #endif diff --git a/source/ws.c b/source/ws.c index ce07b91..0781c98 100644 --- a/source/ws.c +++ b/source/ws.c @@ -106,9 +106,6 @@ int ws_init(char *rompath) return (0); } - ws_memory_init(rom, romSize); - ws_patchRom(); - ws_staticRam = (uint8_t *)load_file(ws_sram_path); if (ws_staticRam == NULL) { @@ -132,6 +129,9 @@ int ws_init(char *rompath) return 0; } + ws_memory_init(rom, romSize); + ws_patchRom(); + ws_io_init(); ws_audio_init(); ws_gpu_init();