Skip to content
/ nes-rs Public

A safe, fast and fully oxidised NES emulator written in the crustaceous language 🦀

Notifications You must be signed in to change notification settings

Abcight/nes-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

99 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NES-RS

A Nintendo Entertainment System emulator written in pure Rust.
🚧 Work in progress! 🚧

Motivation 🙌

I want to gain insight into the inner workings of the NES, and this project is a part of my research. Additionally, I want to build a better understanding of Rust.

Progress 🚀

This is a side project, so everything is moving at a snail's pace. So far I have only began working on emulating the Obelisk 6502 chip instructions. Here you can see how many have already been implemented:

ADC🚧 AND🚧 ASL🚧 BCC🚧 BCS🚧 BEQ🚧 BIT🚧 BMI🚧 BNE🚧 BPL🚧 BRK🚧 BVC🚧 BVS🚧 CLC🚧
CLD🚧 CLI🚧 CLV🚧 CMP🚧 CPX🚧 CPY🚧 DEC🚧 DEX🚧 DEY🚧 EOR🚧 INC🚧 INX🚧 INY🚧 JMP🚧
JSR🚧 LDA🚧 LDX🚧 LDY🚧 LSR🚧 NOP🚧 ORA🚧 PHA🚧 PHP🚧 PLA🚧 PLP🚧 ROL🚧 ROR🚧 RTI🚧
RTS🚧 SBC🚧 SEC🚧 SED🚧 SEI🚧 STA🚧 STX🚧 STY🚧 TAX🚧 TAY🚧 TSX🚧 TXA🚧 TXS🚧 TYA🚧

Additionally, the chip shipped with certain unofficial opcodes that were left unused by design. Some games still use these undocumented operations, so I am going to implement them for the sake of completeness. You can see the progress on that here:

AAC🚧 AAX🚧 ARR🚧 ASR🚧 ATX🚧 AXA🚧 AXS🚧 DCP🚧 DOP🚧 ISC🚧 KIL🚧 LAR🚧 LAX🚧 NOP🚧
RLA🚧 RRA🚧 SBC🚧 SLO🚧 SRE🚧 SXA🚧 SYA🚧 TOP🚧 XAA🚧 XAS🚧
Symbol Description
🚧 Implemented, not ran against NesTest
✔️ Implemented, passed NesTest
Implemented, failed NesTest

Goals 🎯

My grandest goal is that of building a greater understanding of NES and its inner workings, as well as deepening my knowledge of Rust. That wouldn't be possible without having a set path in mind, so I've decided that by the end of this learning experience I want to have an emulator capable of running "Super Mario Bros".

Sources 📚

I am following the afformentioned documents in order to learn about NES and Rust. This research wouldn't have come to fruition without these.

About

A safe, fast and fully oxidised NES emulator written in the crustaceous language 🦀

Topics

Resources

Stars

Watchers

Forks

Languages