pcwalton wrote a NES emulator in Rust 7 years ago as a demonstration of Rust: https://github.com/pcwalton/sprocketnes
Also, a nitpick:
> One line of unsafe (std::mem::transmute::<u8>() -> i8)
You don't need unsafe for this, you can do that with an `as` cast.