basicNES 2000 Changelog Current Revision: v1.1 [debug level 0] Good night Quote - 'Rome wasn't built in a day.' http://home.att.net/~r.jarrett/bNES.html 10.01.01 - Release v1.1 dl0 to the homepage. [Can't remember the dates]: Fixed up MMC2 and MMC3, SMB3 is now playable. Punch-Out looks good too. 23.12.00 - Clean up code a little. 07.12.00 - Added midi sound. Doesn't sound perfect, but usually it's adequate. Fixed a scrolling bug I accidentally created. Fixed a few other mostly scrolling related bugs. 04.12.00 - Some more awesome speed improvements. An unfortunate side effect is that saved states from previous versions don't work. With frameskip of 3 I get over 250 fps playing Super Mario Bros on a 500mhz Celeron. Also, on slow computers autospeed shouldn't be able to lock it up like before, although I can't test it. 03.12.00 - Sprites now drawn as full tiles rather than scanline by scanline. Internally supports 15, 16, and 32bit color rather than just 32bit. Noticeably faster when zoomed in 16bit. Detects color depth changes at run time. Sped up bank switching. Background drawn all the way to the edges, not clipped to full tiles. 27.11.00 - No functional changes. Rewrote code to blit array to screen from scratch. Smaller, less dead code, and no more 3rd party code. 25.11.00 - Now supports both horizontal and vertical mirroring, rather than just vertical. Fixed 8x16 sprites. Zelda 2 looks better, but still ugly. Added zooming support. It runs fastest in 32bit color mode. 24.11.00 - Released the emulator to the homepage with fixes. - I'm very happy with the recent events that have occured. We now have a full speed NES emulator written in Visual Basic, well, at least it is full speed on my p2-400. I wonder how it runs on my P100??? Thanks a ton to David Finch, he's done miracles for me. 24.11.00 - Saved states are compressed. Colors look right. 22-23.11.00 - David Finch took back his function pointer idea and also added automatic speed control. Also added support for saving states. 20-21.11.00 - David Finch added sprites and scrolling, and sped it up some more. Fixed some bugs. 19.11.00 - David Finch changed key codes to A=90,B=88,Sl=67,St=86 ZXCV. Cleaned up some code and defined some vars that were used as global but were undefined and therefore local. **Finally realized that all keys besides A weren't working, and fixed it. **Many games are now fully playable except no sprites. **Took screen shots of Dragon Warrior and Super Mario Bros 2. Comments are near most changes I could remember. Later 18.11.00 - David Finch implemented much faster graphics and modified the cpu emulator to use function pointers instead of a big select case for calling the appropriate opcode sub. This pushes the speed over the 60fps needed. 18.11.00 - David Finch made some random optimizations. Mostly a major scanline rendering speedup (still slow though), but also some other things. Changed some of the 2^ to faster equivelants. 15.11.00 - Added Mappers #69,71 but unsure about #69's workability. 01.11.00 - Added Mappers #68,78. - Changed some stuff in M6502.bas and m6502instruct.bas. 29.10.00 - Released v0 [debug level 1.4] to the basicNES homepage. - Added Mapper #1[MMC1]. - Cleaned up VROM switching. 15.09.00 - Released v0 [debug level 1.3] to the basicNES homepage. 14.09.00 - Had it so that if bit 8 of $2000 was set it would nmi6502 at every HBlank. This is now fixed, and fixed many games along with it. - Added Mapper #91[SF3 Hack]! 13.09.00 - Added Mapper #40[Super Mario Bros. 2 Japan]. Something wrong with palette though. 02.09.00 - Re-wrote some of the mappers. - Changed WRAM to bank6() and RAM to bank0(). - Changed some stuff in Write6502. 22.08.00 - Re-wrote Mapper #9(MMC2) implementation. - Is 1.3 ready yet? 21.08.00 - Removed scrolling from the scanline renderer, its not ready. Anyone one wanna throw some ideas around about how to implement it? - Minor changes to the 6502 core. - Started adding preliminary Apple II support. It's not include in the release editions though. - Minor changes to the LoadNES() function. 04.08.00 - Got Kirby's Adventure working! 30.07.00 - Added CPUPaused menu under Emulation. - Removed Palette selections under Emulation. 30.07.00 - Added Vertical Scrolling to the line renderer.Thanks to Neill Corlett. Still a little buggy. 29.07.00 - Wrote a line-based renderer, which ensures more games will run. RenderScanline(Scanline) is the new function. - Added Palette support thanks to Bero and his FCE emulator. - Anybody want to help me with sprites? 27.07.00 - Added Mappers #33 and #34. - Changed all other mappers to support new bankswitching scheme. 26.07.00 - Started adding support for 8x8 sprites, slow going though, anyone wanna e-mail and tell me how? thanks. 23.07.00 - Added Mapper #66, thanks to Quietust. - Added Mapper #9. The CHR-ROM switching is still wrong... - New way to figure out Mirroring in Write6502(). 22.07.00 - Implemented a new bankswitching system that is based on DarcNES. Thanks to nyef, and Delta for the suggestion. - Fixed Mapper #4 CHR-ROM switching. 20.07.00 - Added Mapper #4[MMC3]. Might still be buggy. - Changed adrmode() with constants for addressing modes instead of strings. - Also changed exec6502 with constants for the opcodes. 18.07.00 - Fixed bug in DrawScreenQb() that was causing extra lines to be drawn in some games like 1942. - Released debug level 1.2 to the basicNES homepage. 17.07.00 - Added Mapper #11 support. - Added Mapper #7 support. I just downloaded the Mappers.doc by \Firebug\ so I should be implementing more mappers as the days go by. - Added Select32KBank() so I could add Mapper #7 support. - Added a Common Dialog File opener without using the actual control, just a part of the windows api. Saves hard disk space and download time. 16.07.00 - Created 2 Screen rendering engines. There is one for the 4 color screens but with DirtyChar[faster], and there is one that actually uses the NES Palette[slow, no DirtyChars]. - Added Mapper #2 support. Preliminary, but some games work. - Added Select8KVROM() and Select16KBank for easy ROM access and adding mappers. 16.07.00 - Released debug level 1.1 to the basicNES homepage. 15.07.00 - Added Preliminary Mapper #3 support. Ice Hockey works! But no sprites yet so its not really playable. Don't know what other games work... - Added Free ROM menu, and CPURunning to check the status of the CPU[read the source, and you'll know why]. - Removed tsb and trb opcodes, as they aren't in the NES 6502[as I'm told]. - Made the basicNES screen bigger[And Yoshi is the icon!] 14.07.00 - Implemented DirtyChars in DrawScreen(). Gives it a little bit of a speed increase. - Added Joypad 1 support.[Check exec6502() and KeyDown()]. - Released source/binary to basicNES homepage. 13.07.00 - Wrote Read6502, Write6502, LoadNES, DrawScreen functions Fixed up the 6502 core.