Search found 69 matches

by Josh
Mon Apr 17, 2006 9:01 pm
Forum: NESemdev
Topic: Nes_ntsc NTSC Video Filter Library
Replies: 46
Views: 33123

The new NTSC filters are very impressive, and it's becoming increasingly harder to tell the difference between good-quality NES emulation and the real thing. Thanks for both the filters and the great test ROMs! BTW... I've looked over the code, but I'm still trying to wrap my head around it. Does it...
by Josh
Sat Apr 15, 2006 4:18 pm
Forum: NESemdev
Topic: Mid-frame PPU writes causing glitches...
Replies: 7
Views: 4974

Silly question: Have you checked on a real NES to see if the glitches appear there?
by Josh
Wed Apr 12, 2006 4:21 pm
Forum: NESemdev
Topic: Where to start DMA
Replies: 32
Views: 16942

So, are we sure that $2003 is cleared at the *end* of the frame, rather than the beginning? Also, do we know if $2003 is cleared *only* at the end of the frame, or is it cleared at the end of each scanline rendered?
by Josh
Mon Apr 10, 2006 4:02 pm
Forum: NESemdev
Topic: Where to start DMA
Replies: 32
Views: 16942

Alternatively, it's possible that $2003 is only used for reads from the primary OAM. After all, during evaluation, the first byte read from the main OAM is OAM[n][0], which is the first byte of OAM (index $00). Obviously, empirical testing on a real NES will be needed in order to determine what exac...
by Josh
Mon Apr 10, 2006 3:56 pm
Forum: NESemdev
Topic: Where to start DMA
Replies: 32
Views: 16942

According to the nesdev wiki: Cycles 0-63: Secondary OAM (32-byte buffer for current sprites on scanline) is initialized to $FF - attempting to read $2004 will return $FF And... On even cycles, data is read from (primary) OAM On odd cycles, data is written to secondary OAM (unless writes are inhibit...
by Josh
Fri Apr 07, 2006 3:06 pm
Forum: NESemdev
Topic: MMC5 CHR reading
Replies: 14
Views: 6381

Couldn't the MMC5 simply monitor writes to $2000 (and its mirrors) in order to detect the sprite size? All of the CPU address lines except A15 are connected to the mapper, according to the pinout ( http://nesdevwiki.ath.cx/index.php/Nintendo_MMC5_Pinout ) as well as all of the CPU data lines. I susp...
by Josh
Wed Apr 05, 2006 12:21 am
Forum: NESemdev
Topic: Blargg's ROMs
Replies: 23
Views: 9823

The iNES header format is so uninformative, and the variety of ROM images out there so chaotic, that it's best to simply ignore the header entirely if at all possible. Instead, a large database of all known CRC32 (or MD5 if you prefer) hashes should be included in the emulator, and mapper routines s...
by Josh
Sat Apr 01, 2006 11:28 pm
Forum: NESemdev
Topic: C/C++ speed differences
Replies: 22
Views: 9277

Thanks for the detailed analysis, mozz.

You mentioned the importance of a good optimizing compiler with more intricate C++ constructs. Is gcc (specifically, the newer versions of MinGW) considered good at optimizing code?
by Josh
Sat Apr 01, 2006 3:58 pm
Forum: NESemdev
Topic: Viva Las Vegas (J) problem
Replies: 6
Views: 5982

I checked the VirtuaNES source, and there is indeed a game-specific hack for Viva Las Vegas. Here's the code in question: if( crc == 0x11469ce3 ) { // Viva! Las Vegas(J) } if( crc == 0xd878ebf5 ) { // Ninja Ryukenden(J) nes->SetRenderMethod( NES::POST_ALL_RENDER ); } I haven't examined enough of the...
by Josh
Fri Mar 31, 2006 5:30 pm
Forum: NESemdev
Topic: C/C++ speed differences
Replies: 22
Views: 9277

Perhaps it could be predicted in advance if some sort of queuing/timestamp system were used. However, I'm going for a relatively simple model, where one opcode is executed at a time and the PPU/APU/MMC states are updated on each clock cycle. Thus, the MMC routine would be called every single cycle t...
by Josh
Fri Mar 31, 2006 5:02 pm
Forum: NESemdev
Topic: C/C++ speed differences
Replies: 22
Views: 9277

Thanks for the detailed overview. It sounds like the speed hit would be negligible for most of what I had in mind. The only place I would be using polymorphism would be in the MMC emulation (since each mapper would have its own read/write/cycle/bus functions). However, this might still result in a s...
by Josh
Fri Mar 31, 2006 2:36 pm
Forum: NESemdev
Topic: C/C++ speed differences
Replies: 22
Views: 9277

I probably should have been more specific in my question. I'm referring to the speed difference between basic procedural C, and object-oriented C++ using classes and subclasses (i.e. a NES virtual machine class with CPU, APU, PPU, MMC, etc. subclasses). Does the latter drastically slow things down?
by Josh
Fri Mar 31, 2006 2:11 pm
Forum: NESemdev
Topic: C/C++ speed differences
Replies: 22
Views: 9277

C/C++ speed differences

Has anyone written an emulator in C and then later converted it to C++, or vice versa? Is C++ significantly slower, or is the speed difference negligible? If a cycle accurate emulator like Nintendulator were written in C++, would it be too slow for most systems?
by Josh
Thu Mar 30, 2006 12:45 am
Forum: NESemdev
Topic: Really specific question about timing
Replies: 0
Views: 1949

Really specific question about timing

According to what's been posted here previously, LoopyV is updated to point to the next horizontal tile on PPU clock cycle 3, 11, 19, and so on (zero based) of each scanline. OK, but does this take place *before* or *after* that cycle? What I mean is, does it look like this: Cycle #0: Latch address ...
by Josh
Wed Mar 29, 2006 4:53 pm
Forum: NESemdev
Topic: Zero Page, X issue / Question
Replies: 3
Views: 2149

Yes. Pretty much by definition, if zero page is being accessed, the high 8 lines of the address bus will all be low. This is the case on the 2A03 and on the standard 6502. (I'm not sure if the external address bus is affected at all when accessing the I/O in zero page of special derivatives like the...