4 ms·
I agree, but you need to give this person the benefit of the doubt. They haven't yet "not finished" since this just came out yesterday. This "unfinished" issue
by WoodenChair 5y ago
I agree, but you need to give this person the benefit of the doubt. They haven't yet "not finished" since this just came out yesterday. This "unfinished" issue is also a problem with regards to tutorials for writing emulators. It's amazing, given how popular writing NES emulators is, that there is not yet a great step-by-step written tutorial for writing one (there IS great documentation and some great video tutorials (see One Lone Coder for example)). This is why one of the big projects in my next book will be a detailed tutorial showing how a simple NES emulator is built.
- cepher 5y agoDo you know if any tutorial exists for SNES emulators? Haven’t been able to find one, and I’ve heard it’s a large step up in difficulty from a NES emulator.
- WoodenChair 5y agoI don't know SNES. I went from writing a really basic NES emulator to working on a really basic IBM PC emulator. If you want to know more about SNES, I would look at old posts on the subreddit emudev: https://www.reddit.com/r/EmuDev/ https://www.reddit.com/r/EmuDev/
- nicetryguy 5y agoPerhaps i'm projecting my own frustrations trying to learn retro dev, which is unfortunate and maybe immature on my part, but i've been burned too many times to shut up. > Simple NES emulator The timings get really tough between the PPU / CPU with all of the scanline tricks you can do, even with an NROM setup. Many 6502 instructions don't behave like you think they would with page boundaries, there are some hardware errors. The PPU / registers get all kinds of weird with their behavior too, such as $2003/$2004 (sprite addr / data) basically being broken on real hardware and Sprite DMA only falling on even cycles, etc. Each mapper is it's own unique snowflake as well, the MMC3 and VRC6 scanline interrupts work completely differently in hardware. There are many more examples of strangeness. I'd love to see someone tackle it and wish you luck.
- WoodenChair 5y ago> The timings get really tough between the PPU / CPU with all of the scanline tricks you can do, even with an NROM setup. Right, I agree. The PPU's intricacies are what make it difficult to write a good tutorial. When I wrote my own emulator as a personal learning project in C I did it myself except the background rendering of the PPU which I ported from a popular cycle-accurate Go project. In writing this book, what I've done is go and say "how can I write the absolutely minimum PPU so that the most basic NROM games will play (like Donkey Kong & Tennis)." My rewritten from scratch PPU is as simple as possible, only doing any rendering once per frame (the simplified PPU only does anything 60 times per second). I have it working well on very simple commercial and public domain games in C. Now my challenge is to get it ported and performant enough in pure Python, the language of the book.
- nicetryguy 5y agoYou're doing Gods work then my friend =) Is it possible to sync python up enough to get it to write frames accurately without a significant amount of lag? I'd certainly be interested in how to get it to do that.
- 21bits 5y agoOff topic, but I wanted to tell you that I'm enjoying going through 'Classic Computer Science Problems In Python.' I think you're a very good writer and I'm looking forward to more of your work.
- WoodenChair 5y agoThank you! Much appreciated.