/* called after the rom is opened */ void init_neo(char *rom_name) { cpu_68k_init(); neogeo_init(); pd4990a_init(); setup_misc_patch(rom_name); if (conf.sound) { cpu_z80_init(); ogc_init_audio(); streams_sh_start(); YM2610_sh_start(); conf.snd_st_reg_create=1; } cpu_68k_reset(); arcade = (conf.system != SYS_HOME); }
void init_neo(char *rom_name) { cpu_68k_init(); neogeo_init(); pd4990a_init(); setup_misc_patch(rom_name); if (conf.sound) { cpu_z80_init(); init_sdl_audio(); streams_sh_start(); YM2610_sh_start(); SDL_PauseAudio(0); conf.snd_st_reg_create=1; } cpu_68k_reset(); }
void init_neo(void) { #ifdef ENABLE_940T int z80_overclk = CF_VAL(cf_get_item_by_name("z80clock")); #endif //neogeo_init_save_state(); #ifdef GP2X gp2x_ram_ptr_reset(); #endif cpu_68k_init(); // neogeo_reset(); pd4990a_init(); // setup_misc_patch(rom_name); init_sound(); neogeo_reset(); }
bool neoSystemOpen(const char* szFileName) { TNeoRomHeader header; int rom; u32 bit; ASSERT(g_neo->cpuClockDivide == 2 || g_neo->cpuClockDivide == 3); guiConsoleLogf("Loading %s...", szFileName); guiConsoleDump(); rom = systemOpen(szFileName, false); ASSERTMSG(g_neo->cpuClockDivide == 2 || g_neo->cpuClockDivide == 3, "%d", g_neo->cpuClockDivide); if(rom < 0) { guiConsoleLogf(" -> Failed!"); ASSERT(0); return false; } systemRead(rom, &header, sizeof(TNeoRomHeader)); if(header.magic != NEO_ROM_MAGIC || header.version != NEO_ROM_VERSION || header.sectionCount != NEOROM_COUNT) { systemClose(rom); guiConsoleLogf(" -> invalid rom"); guiConsoleLogf(" -> magic %08X / %08X", header.magic, NEO_ROM_MAGIC); guiConsoleLogf(" -> version %d / %d", header.version, NEO_ROM_VERSION); guiConsoleLogf(" -> section %d / %d", header.sectionCount, NEOROM_COUNT); ASSERT(0); return false; } neoSystemClose(); g_romSize = systemFileSize(rom) - NEO_HEADER_SIZE; g_header = header; g_rom = rom; linearHeapReset(&g_vramHHeap); linearHeapClear(&g_vramHHeap); g_neo->scanline = 0; g_neo->frameCount = 0; g_neo->irqPending = 0; g_neo->paletteBank = 0; g_neo->fixedBank = 0; g_neo->sramProtectCount = 0; g_neo->debug = true; g_neo->irqVectorLatch = false; g_neo->screenDarkLatch = false; g_neo->fixedRomLatch = false; g_neo->sramProtectLatch = false; g_neo->paletteRamLatch = false; g_neo->smaRand = 0x2345; NEOIPC->audioCommandPending = 0; NEOIPC->audioResult = 0; //sram hack gets around watchdog protection check...values taken from GnGeo //added samsho5 variations g_neo->sramProtection = g_header.sramProtection; guiConsoleLogf("Loaded Game: %s", g_header.name); g_neo->spriteCount = g_header.romEntry[NEOROM_SPRITEDATA].size / SPRITE_SIZE; g_neo->spriteMask = 0xffffffff; for(bit = 0x80000000; bit != 0; bit >>= 1) { if((g_neo->spriteCount - 1) & bit) break; g_neo->spriteMask >>= 1; } g_neo->romBankCount = 0; const s32 bankSize = (s32)g_header.romEntry[NEOROM_MAINPROGRAM].size - 1*MB; if(bankSize > 0) { g_neo->romBankCount = bankSize / (1*MB); if(g_neo->romBankCount * 1*MB != bankSize) { g_neo->romBankCount++; guiConsoleLogf(" -> partial rom bank"); } } guiConsoleLogf(" -> sprites: %d", g_neo->spriteCount); guiConsoleLogf(" -> mask: %08X", g_neo->spriteMask); guiConsoleLogf(" -> rom bank(s): %d", g_neo->romBankCount); if(g_neo->sramProtection == -1) { guiConsoleLogf(" -> sramProtection off"); } else { guiConsoleLogf(" -> sramProtection: %08X", g_neo->sramProtection); } guiConsoleDump(); systemRamReset(); cpuInit(); neoMemoryInit(); neoIOInit(); pd4990a_init(); neoVideoInit(); neoInstallProtection(); //neoSystemIrq(INTR_COLDBOOT); if(NEOIPC->globalAudioEnabled) { neoAudioStreamInit(); neoIPCSendCommand(NEOARM7_RESET); } else { //this is the value that needs to be set to bypass Z80 check NEOIPC->audioResult = 1; } cpuReset(); neoLoadConfig(szFileName); neoResetContext(); ASSERTMSG(g_neo->cpuClockDivide == 2 || g_neo->cpuClockDivide == 3, "%d", g_neo->cpuClockDivide); return true; }