diff --git a/apps/litenes/include/memory.h b/apps/litenes/include/memory.h index c5755bc4..445f9459 100644 --- a/apps/litenes/include/memory.h +++ b/apps/litenes/include/memory.h @@ -47,7 +47,10 @@ static inline uint32_t memory_readw(uint32_t address) static inline uint32_t instr_fetchw(uint32_t address) { - return instr_fetch(address) | (instr_fetch(address + 1) << 8); + extern byte memory[0x10000]; // mmc + + // for super mairo, all fetch are from mmc + return *(uint16_t *)(memory + address); } static inline void memory_writew(uint32_t address, uint32_t word_data) diff --git a/apps/litenes/src/cpu.c b/apps/litenes/src/cpu.c index c3676ba3..3f2f5766 100644 --- a/apps/litenes/src/cpu.c +++ b/apps/litenes/src/cpu.c @@ -192,12 +192,11 @@ inline void cpu_ram_write(uint32_t address, uint32_t byte_data) { } static inline uint32_t cpu_ram_readw(uint32_t address) { - return cpu_ram_read(address) | (cpu_ram_read(address + 1) << 8); + return *(uint16_t *)(CPU_RAM + address); } static inline void cpu_ram_writew(uint32_t address, uint32_t word_data) { - cpu_ram_write(address, word_data & 0xff); - cpu_ram_write(address + 1, word_data >> 8); + *(uint16_t *)(CPU_RAM + address) = word_data; }