diff --git a/README.md b/README.md index 9b57c4d..0f0ecbb 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,46 @@ NES Emulator written by Rust -## Screenshot +| Super Mario Bros. | Donkey Kong | +| - | - | +| ![mario-gif](https://user-images.githubusercontent.com/4300987/64512802-1bc8bd00-d322-11e9-8a70-26df62bb5ee1.gif) | ![donkey-gif](https://user-images.githubusercontent.com/4300987/64512801-1bc8bd00-d322-11e9-9e6c-0a149fb05c1b.gif) | + +## Feature & Known Issue + +- [x] CPU + - [x] Register + - [x] Interrupt + - [x] Official opcode + - [x] Unofficial opcode +- [x] Cassette(Mapper) + - [x] NROM(Mapper0) + - [ ] UNROM + - [ ] MMC1 + - [ ] MMC3 +- [x] PPU + - [x] OAM DMA + - [x] BG + - [x] Nametable Mirroring + - [x] Scroll + - [x] Sprite + - [x] 8*8 + - [x] 8*16 + - [ ] Sprite 0 hit bug(#40) +- [x] PAD + - [x] Joypad1 +- [ ] APU + - [ ] Puluse Wave1 + - [ ] Puluse Wave2 + - [ ] Tri Wave + - [ ] Noise + - [ ] DMC + +## Screenshot (Operation checked) ### Super Mario Bros. ![mario](https://raw.githubusercontent.com/kamiyaowl/rust-nes-emulator/master/screenshot/mario.bmp) -Work In Progress... ### Donkey Kong @@ -52,4 +85,4 @@ Thank you for the wonderful ! | path | from | url | | ---- | ---- | --- | | roms/other/hello.nes | コンソールゲーム機研究所 | http://hp.vector.co.jp/authors/VA042397/nes/sample.html | -| roms/nes-test-roms | christopherpow/nes-test-roms - GitHub | https://github.com/christopherpow/nes-test-roms | +| roms/nes-test-roms | christopherpow/nes-test-roms - GitHub | https://github.com/christopherpow/nes-test-roms | \ No newline at end of file diff --git a/src/nes/ppu.rs b/src/nes/ppu.rs index 43196a3..c85a31c 100644 --- a/src/nes/ppu.rs +++ b/src/nes/ppu.rs @@ -483,7 +483,7 @@ impl Ppu { // 描画範囲内(y+1)~(y+1+ 8or16) if (sprite_y < sprite_begin_y) && (sprite_begin_y <= sprite_end_y) { // sprite 0 hitフラグ(1lineごとに処理しているので先に立ててしまう) - let is_zero_hit_delay = sprite_begin_y > (sprite_end_y - 2); //1lineずつ処理だとマリオ等早く検知しすぎるので TODO: #40 + let is_zero_hit_delay = sprite_begin_y > (sprite_end_y - 3); //1lineずつ処理だとマリオ等早く検知しすぎるので TODO: #40 if sprite_index == 0 && is_zero_hit_delay { system.write_ppu_is_hit_sprite0(true); debugger_print!(PrintLevel::DEBUG, PrintFrom::PPU, format!("sprite zero hit"));