[!IMPORTANT] This is a WIP of an emulator, i expect to finish this in some months, but let's see how it goes...
A SNES emulator focused on perfomance, lightness, portability and features.
- CPU
- PPU
- APU
- DMA
- Banks
- Memory Mapping
- BUS
- Special Chips(SA-1, SuperFX, etc...)
- Dynarec
- Discord RPC
- Save-states
- Debug Inspector
- Memory View
- UI
- Dissassembler
- PS2
- PC
- Remove unecessary functions like
update_n_flagandupdate_z_flagthey're complete useless, and i didn't know what i did that, since i could do that in only one single operation - Fix some opcodes logic, some are really wrong, i already fixed some, but probally there's more
- Idk, maybe another lib aimed for graphics rendering instead of SDL + OpenGL
- Fix some order updating flags, some flags are updated before the operation
- Implement StackPointer Lock Behavior
- Fix emulation mode behavior, it only changes some opcodes behavior, but doesn't make any influence to the registers or something
In this stage, there's a 95.5% of chance of the emulator gets into a infinite loop, this is due to a mix of non-implemented resources and CPU operations, for example, if you do a BEQ operation to confirm that everything is ok with your APU, PPU, howewer, as they're not fully implemented, they cannot send info.
In response of the item above, this is already being solved along with mapping and fetch.
extern inline void sn_Mwrite(u8 bank, u8* address, u8 value) {
**mBank[bank][*address] = value; /* Mapped as PPU->IniDisp */
}
int main() {
sn_Mwrite(0x00, 0x2100, 0x80);
printf("%X \n", ppu->IniDisp); /* Will print 0x80 to the console */
}