#include int emulator_initialise(Emulator* emulator) { const uint8_t font[] = { 0xF0, 0x90, 0x90, 0x90, 0xF0, // 0 0x20, 0x60, 0x20, 0x20, 0x70, // 1 0xF0, 0x10, 0xF0, 0x80, 0xF0, // 2 0xF0, 0x10, 0xF0, 0x10, 0xF0, // 3 0x90, 0x90, 0xF0, 0x10, 0x10, // 4 0xF0, 0x80, 0xF0, 0x10, 0xF0, // 5 0xF0, 0x80, 0xF0, 0x90, 0xF0, // 6 0xF0, 0x10, 0x20, 0x40, 0x40, // 7 0xF0, 0x90, 0xF0, 0x90, 0xF0, // 8 0xF0, 0x90, 0xF0, 0x10, 0xF0, // 9 0xF0, 0x90, 0xF0, 0x90, 0x90, // A 0xE0, 0x90, 0xE0, 0x90, 0xE0, // B 0xF0, 0x80, 0x80, 0x80, 0xF0, // C 0xE0, 0x90, 0x90, 0x90, 0xE0, // D 0xF0, 0x80, 0xF0, 0x80, 0xF0, // E 0xF0, 0x80, 0xF0, 0x80, 0x80 // F }; //zero out the memory memset(emulator, 0, sizeof(Emulator)); memcpy(emulator->memory + FONT_LOAD_LOCATION, font, sizeof(font)); emulator->is_on = 1; return 0; } int emulator_load_rom(Emulator* emulator, char* rom_name) { printf("load rom!: %s\n", rom_name); FILE* rom = fopen(rom_name, "r"); if(rom == NULL) { perror("no rom file!\n"); return 1; } struct stat st; fstat(fileno(rom), &st); //rom loaded after 0x200 into memory int bytes_read = fread(emulator->memory + GAME_LOAD_LOCATION, 1, st.st_size, rom); if(bytes_read != st.st_size) { perror("doesnt cuadrar\n"); return 2; } emulator->pc = GAME_LOAD_LOCATION; return 0; } int emulator_tick(Emulator* emulator) { return 0; }