void initCPU(cpu* _cpu) { _cpu->_mmu = (mmu*)malloc(sizeof(mmu)); initMMU(_cpu->_mmu); _cpu->step = step; _cpu->doOp = doOp; return; }
void initializeGameboy() { sgbMode = false; switch(gbcModeOption) { case 0: // GB initGBMode(); break; case 1: // GBC if needed if (rom[0][0x143] == 0xC0) initGBCMode(); else initGBMode(); break; case 2: // GBC if (rom[0][0x143] == 0x80 || rom[0][0x143] == 0xC0) initGBCMode(); else initGBMode(); break; } bool sgbEnhanced = rom[0][0x14b] == 0x33 && rom[0][0x146] == 0x03; if (sgbEnhanced && resultantGBMode != 2 && probingForBorder) { resultantGBMode = 2; nukeBorder = false; } else { probingForBorder = false; } initMMU(); initCPU(); initLCD(); initGFX(); initSND(); if (!probingForBorder && suspendStateExists) { loadState(-1); // enter the console on resume advanceFrame = true; } updateScreens(); }