nesemu/cpu/memory.c

36 lines
908 B
C

//
// Created by william on 10/15/23.
//
#include "memory.h"
#include "ram.h"
#include "../include/rom.h"
byte mem_get_byte(Mapper *mapper, address addr) {
address redirected_addr = mapper->redirect_addr(addr);
if (redirected_addr < 0x0800) {
return ram_get_byte(redirected_addr);
} else if (redirected_addr >= 0x4020) {
return rom_prg_get_byte(redirected_addr - 0x4020);
}
return 0;
}
word mem_get_word(Mapper *mapper, address addr) {
address redirected_addr = mapper->redirect_addr(addr);
if (redirected_addr < 0x0800) {
return ram_get_word(redirected_addr);
} else if (redirected_addr >= 0x4020) {
return rom_prg_get_word(redirected_addr - 0x4020);
}
return 0;
}
void mem_set_byte(Mapper *mapper, address addr, byte byte) {
address redirected_addr = mapper->redirect_addr(addr);
ram_set_byte(redirected_addr, byte);
}