2026-07-15 15:02:54 +10:00
|
|
|
#include "emu.h"
|
|
|
|
|
|
|
|
|
|
Emulator* initEmulator(uint32_t memorySize) {
|
|
|
|
|
Emulator* newEmu = malloc(sizeof(Emulator));
|
|
|
|
|
if (!newEmu)
|
|
|
|
|
return NULL;
|
|
|
|
|
|
|
|
|
|
// zero out registers
|
|
|
|
|
memset(newEmu->regs, 0, sizeof(newEmu->regs));
|
|
|
|
|
|
2026-07-15 15:54:51 +10:00
|
|
|
// zero out special regs
|
|
|
|
|
newEmu->pc = 0;
|
|
|
|
|
newEmu->sp = 0;
|
|
|
|
|
newEmu->ihp = 0;
|
|
|
|
|
|
2026-07-15 15:02:54 +10:00
|
|
|
// init memory
|
|
|
|
|
newEmu->mem = initMemory(memorySize);
|
|
|
|
|
if (!newEmu->mem) {
|
|
|
|
|
free(newEmu);
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return newEmu;
|
2026-07-15 15:54:51 +10:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void freeEmulator(Emulator* emu) {
|
|
|
|
|
freeMemory(emu->mem);
|
|
|
|
|
free(emu);
|
2026-07-15 15:02:54 +10:00
|
|
|
}
|