Skip to content
/ SNLS Public

A SNES emulator focused on perfomance, portability and features, made in C for PC/PS2.

License

Notifications You must be signed in to change notification settings

larkkjj/SNLS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

[!IMPORTANT] This is a WIP of an emulator, i expect to finish this in some months, but let's see how it goes...

AWESOME LOGO

A SNES emulator focused on perfomance, lightness, portability and features.

What we've got so far?

Basics

  • CPU
  • PPU
  • APU
  • DMA
  • Banks
  • Memory Mapping
  • BUS
  • Special Chips(SA-1, SuperFX, etc...)

Features

  • Dynarec
  • Discord RPC
  • Save-states
  • Debug Inspector
  • Memory View
  • UI
  • Dissassembler

Targets

  • PS2
  • PC

Bugfixes

  • Remove unecessary functions like update_n_flag and update_z_flag they'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

Known Problems

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.

(This is an older code)

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 */
}

Roms being tested

Super Mario RPG

(The game is executed but CPU is halted after some time)

Super Mario World

(The game is executed and enters in a loop)

The Legend of Zelda - A Link To The Past

(The game is executed and enters in a loop)

[testing roms]

(Need more resources to a full result)

idk guys, just makin it, cant take a fuckin shit anmr

About

A SNES emulator focused on perfomance, portability and features, made in C for PC/PS2.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages