- Add page boundary cross extra clock adjustments to CPU
- Add some more docs in CPU clock function
- Use internal mutability inside PpuRegisters instead of using a RefCell in Ppu
- Added metric for clock frequency
- Pixel-by-pixel sprite rendering implementation
- Implement primitive metrics collector to compute FPS
- Sprite rendering v1, sprites by scan line
- Sprite rendering v0, sprites literally over background
- Sprite rendernig v0, use red tiles for sprites
- Add debug logs to DMA
- Use wrapping_add instead of relying on wrapping behaviour (as it panics for other than --release)
- Implement OAM struct with better API than raw RAM memory
- Add OAM debugging function
- Fix fake APU overwritting bus addresses
- Add overlapping address validation in bus
- Implement OAM DMA
- Extend UI trait
- Better error handling
- Implement an event bus for inter-component communications (NMI, frame ready...)
- Better encapsulation of keyboard channel between UI and controllers
- Add switch off event so the system can stop gracefully
- Add nes function to setup TV (GUI + audio when implemented)
- PPU background rendering with scrolling
- Add palette mirrors
- Improve controllers
- Bus specifies a unique id per attached device. Interface and log improvements
- Add quit functionality to GTK UI using C-q
- Implement controllers using crossbeam mspc channels
- Add a Bus id
- Add Bus debug logs
- Extend palette memory functionality
- Implement attribute table use on PPU rendering
- Partially implement PPU, CIRAM and nametable rendering
- Improve CPU logs
- Further implement and fix CPU interrupts
- Add CPU interruption capabilities
- Fix CPU instructions and addressing modes
- Add opcode field to CPU Instruction
- Fix CPU instructions
- Remove unneeded trait Processor
- Refactor CPU and split in simpler modules
- Add new bit utility functions to set and clear bits
- Support mappers on cartidge and implement mapper 0
- Allow Pixel creation using u8
- Add new Palette type with blargg's palette
- Fix bv shift with overflow
- Fix inversion of screen at GtkUi
- Allow arbitrary screen size
- Memories are now shared and Nes have it's ownership
- CPU execute error is now a String
- Implement CPU instruction limit for test purposes
- Processor execute returns a Result
- Add graphics module with empty PPU and GTK4 UI
- Add PPU and memories to NES module
- Add CartidgeHeader struct and improve header parsing
- Add logging
- Use interior mutability pattern for Nes bus
- Fix various CPU errors
- Add ROM implementation to memory module
- Rename MainBus to DataBus
- Add MirroredRam and use it as main memory
- Add attach and detach methods to Bus trait
- Bus hides address range to attached devices
- Move traits to separate folder (to share between modules)
- Test branch instructions
- Fix reset by starting on reset vector address
- Fix SR push and pull in BRK and RTI
- Fix PC increment on jumps and interrupts
- Implement BRK and RTI instructions
- Fix PC increment
- Add bytes to CPU instructions
- Add push and pull misc instructions
- Add branch misc instructions
- Add jump misc instruction
- Add call and return misc instructions
- Prepare interrupt instructions
- Add AbsoluteX, AbsoluteY and IndirectY load addressing modes
- Complete instruction set (missing implementation for some instructions)
- Add BIT instruction
- Add branch instructions (wo/ tests)
- Add more addressing modes to load and store operations (wo/ tests)
- Add reset to CPU
- Add CMP, CPX and CPY comparaison instructions
- Add ADC and SBC arithmetic instructions
- Add ASL and LSR shift instructions
- Add ROR and ROL rotate instructions
- Remove ExecutableInstruction and split instruction depending on memory access
- Improve internal CPU instruction execution model
- Add STA, STX, STY store instructions
- Add DEC, INC instructions
- Add NOP instruction
- Add DEX, DEY, INX, INY instructions
- Add CLC, CLD, CLI, CLV, SEC, SED, SEI flag instructions
- Add TAX, TAY, TSX, TXA, TXS, TYA transfer instructions
- Add LDA, LDX and LDY load instructions
- Convert Bus into a trait and rename struct to MainBus
- Move CPU tests to a separate file
- Reorder CPU module
- Update Nes with new cpu-bus architecture
- Add macro to easily write CPU instructions
- Implement EOR and ORA instructions with immediate addressing
- Start implementing the MOS 6502 processor
- Implement RAM
- Add CPU skeleton
- Implement AND instruction with immediate addressing
- Add Nes and Cartidge abstractions and a dummy main program
- Start NES emulator project