diff options
author | Determinant <[email protected]> | 2018-01-04 14:40:39 +0800 |
---|---|---|
committer | Determinant <[email protected]> | 2018-01-04 14:40:39 +0800 |
commit | 8b41532e597b6bf6fc16fe17700fd0a91d15f129 (patch) | |
tree | 3060a766711de226f5c8f9c62be6ab1a606add50 /src | |
parent | f6bc28a5beea85d5b84004f72d4ec2e3f77b2949 (diff) |
correct the IIR low pass filter; add rom test checklist
Diffstat (limited to 'src')
-rw-r--r-- | src/apu.rs | 5 | ||||
-rw-r--r-- | src/bin.rs | 14 | ||||
-rw-r--r-- | src/lib.rs | 4 |
3 files changed, 13 insertions, 10 deletions
@@ -26,8 +26,9 @@ impl LPFilter { } fn output(&mut self, input: i16) -> i16 { - let out = cutoff((input as i32 - self.prev_out as i32) - * LP_FACTOR / AUDIO_LEVEL_MAX); + let out = cutoff(self.prev_out as i32 + + (input as i32 - self.prev_out as i32) + * LP_FACTOR / AUDIO_LEVEL_MAX); self.prev_out = out; out } @@ -5,8 +5,7 @@ use std::sync::{Mutex, Condvar}; use std::io::Read; use std::cell::RefCell; use std::intrinsics::transmute; -//use std::time::{Instant, Duration}; -//use std::thread; +use std::process::exit; extern crate sdl2; #[macro_use] extern crate clap; @@ -211,7 +210,7 @@ impl<'a> ppu::Screen for SDLWindow<'a> { self.canvas.clear(); self.canvas.copy(&self.texture, self.copy_area, None).unwrap(); self.canvas.present(); - if self.poll() {std::process::exit(0);} + if self.poll() { exit(0) } } } @@ -360,7 +359,7 @@ fn main() { let fname = matches.value_of("INPUT").unwrap(); let mut file = File::open(fname).unwrap(); let mut rheader = [0; 16]; - println!("read {}", file.read(&mut rheader[..]).unwrap()); + file.read(&mut rheader[..]).unwrap(); let header = unsafe{transmute::<[u8; 16], INesHeader>(rheader)}; let mirror = match ((header.flags6 >> 2) & 2) | (header.flags6 & 1) { 0 => MirrorType::Horizontal, @@ -370,8 +369,11 @@ fn main() { _ => MirrorType::Four, }; let mapper_id = (header.flags7 & 0xf0) | (header.flags6 >> 4); - println!("magic:{}, prg size:{}, chr size:{}, mirror type:{}, mapper:{}", - std::str::from_utf8(&header.magic).unwrap(), + if std::str::from_utf8(&header.magic).unwrap() != "NES\x1a" { + println!("not an iNES file"); + exit(1); + } + println!("prg size:{}, chr size:{}, mirror type:{}, mapper:{}", header.prg_rom_nbanks, header.chr_rom_nbanks, mirror as u8, @@ -1,5 +1,5 @@ -//#![no_std] -extern crate core; +#![no_std] +//extern crate core; mod memory; #[macro_use] mod mos6502; mod ppu; |