It does more or less the same thing as all 3D rendering systems: it has a transformation matrix. The typical way to think of a transformation matrix is you have a vector which holds your X,Y position of a pixel. You multiply that vector by a matrix to get a new vector, which is the new position afte...
I'm writing a dinky little SPC player for funsies and I have some bugs in my SMP code. Are there any test ROMs (preferably in SPC file format -- as that's easy to load) I can use to help track them down? I searched for forums and found a thread from back in 2012 where kevtris talked about writing on...
You **MUST** do some form of down sampling. The NES outputs ~1790 KHz but you'll usually only want to output ~48 Khz (or 44KHz). Outputting 1 sample every ~40 clocks is one form of downsampling (commonly referred to as "nearest neighbor"). It will work but will be very low quality. If the ...
#3 is unworkable since most games will at least split the screen somewhere for a status bar -- meaning this approach will fail miserably for those games. The "logging writes" approach sounds good, until you realize that it doesn't solve the problem of $2002 reads for things like sprite-0 h...
In my emulator I allow the option. If you choose to sync to video frame rate, it will produce more or less audio to match.... which can be accomplished by running audio channels for more/fewer cycles as needed without actually changing the clock rate. This is complicated by the DMC, which has CPU-vi...
If you want some ideas: I have a 'Cpu' class and a 'Bus' class. When reading/writing, the Cpu class will call into the Bus class which will actually perform the read/write. Other parts of the system can hook into the Bus by adding callbacks for a specific range of addresses. So your PPU can tell the...
Code executes as fast as the CPU can run it. Your 'ReadyTimerInc' loop is not waiting any significant amount of time --- each iteration does not represent a 'frame' like you seem to want it to. To wait for a full frame to pass, the general approach is to wait for an NMI to trigger. Another approach ...
Cool. I'm in the same boat as you, rainwarrior. Final question: I'm not super familiar with wikis. Is there like a separate 'temporary' area where I can build a page (or series of pages) on the wiki before replacing the existing pages? I'm thinking if this was something like git or some other versio...
I have this hunch that if you don't implement all the 2A03 peripherals on the 900kHz timebase, you'll never be able to accurately emulate the DPCM read glitches. Well there's two approaches. Either you use 900kHz and allow of half cycle granularity ... or you use 1.8MHz and keep track of even/odd c...
And once again, when you find there is something wrong or inconsistent, like this information about $4017, once you've learned the truth, go back and fix it. Don't just complain about it!!! I'd love to. Sign me up. I'd be happy with doing some work to clean up the APU pages and adding a page on DMA...
Let me cut in with a little extra because I don't want to sound like a complainer. I love the wiki. It is infinitely better than a random mishmash of old docs and scattered forum posts. I know how much work it is to get a wiki up and running, keeping it maintained with constantly updating info, and ...
the frame counter reset and the quarter/half frame triggers happen simultaneously, but only on "odd" cycles (and only after the first "even" cycle after the write occurs) Sooo... the wiki is wrong about this too, then, because it says the quarter/half clocks happen immediately. ...