Depot Games: TI-NESulator
#12 during September 2009
Links: Web Site
Developers: Manoel Trapier
Linux, OS X, Windows
This is a preleminar version of the final version. Don't except him to emulate everything correctly.
TI-NESulator is an NES (Nintendo Entertainment System) emulator.
TI-NESulator was targeted at first to work only on TI-68k calculators. But since this was my first attempt for making a NES emulator, I can't continue without testing if the emulation work correctly with better debuguer. My primary graphic library on PC devellopement was Allegro, That's why I am here.
Actually the whole code is nearly entirely portable, and TI-68k and PC/Mac version share about 90% of the source code (this will change in a near future). BUT the PC/Mac version will not be abandoned.
The project started 2 years ago, but the whole code need at least 2 or 3 month of work. Some parts are so ugly that I can't even maintain or debug them! It don't have a frame limiter, so it can be too speed, but it's often lower than it should.
Anyway "it just work", and can actualy emulate games using MMC like cnrom, unrom, MMC1, or using no mapper.
The readme is actually only in french (sorry) so, the needed parts are translated here :
NES paddle Keyboard
A W (may be z on qwzerty keyboards..)
Others keys :
R Reset the emulator
3 Display/Hide Name Tables
4 Display/Hide Attribute Tables
5 Display/Hide Palettes
ESC Enter Debugguer
Under CLI :
With Window Explorer:
Drag'n'drop the ROM on the shortcut NOT on the executable (because of working directory issues, it can't find the bnes.pal file without)
A Mac OS X executable will be available soon.
2008-03-30: v0.40 (Finaly !)
- CPU is now more stable and more compatible with the real hardware
- Speed boost with the new CPU!
- Quick6502: Add preliminary support for pending INTs
- Quick6502: Correct S register behavior (when saving on stack)
- Quick6502: Correct cycle table
- Quick6502: Add support for page crossing cycle modification
- Quick6502: Correct JMP indirect
- Quick6502: Correct cycle count on Bxx if they branches
- Quick6502: Correct an error on ADC ($xx,x) display
- MMC4: Modify LOG define to remove warnings
- Iremh3001: comment it, since it need a log of rework and display a lot of warnings
- ppu.memory.h: Add missing ppu_setPageGhost function prototype
- NESCarts.c: Remove some warnings, and change the location of a validity test, now we shouldn't have crash when trying to load a non existing file
- Main: Change NMI/Frame timing (Now a NTSC frame have 262 scanline, with 2 dummy's one)
- Main: Temporaly force only NTSC mode
- Main: Set opcode read to read NOP when reading invalid memory page and not BRK
- Add new CPU from the Quick6502 Project, debug it, and add new test rom
2008-02-25: v0.30 part 3
- Update a bit the documentation
- Just a bit of cosmetic
- minors modifications on cycle count and update correct source file headers
- Update PPU to new version, correct a lot of bugs:
- Scanline counts was wrongPAL counts was wrong, correct some bugs in the plugins manager, remove a lot of warning during compilation
25/02/2008: V0.30 part 2
- Correct a bug in CPU emulation related with cycle count and the stupid R_FLAG
- Correct bugs in PAL emulation where VBlank line count was incorrect.
- Correct a bug with VBlank (it occured one line too late)
- Correct a bug with cart loading, if the file name was incorrect it crashed instead
- All mappers are remerged.
- Unix & Windows build are totaly broken...
- Sprite are back! There are some bad behaviour, but they will be corrected with next versions.
- New SVN repository (the disk where the old one was had crashed...)
- Iremh3100 is now active! (finaly)
- Savestate now work correctly (It was not loaded at the right time...)
- Mapper manager seems to work correctly ok
- [MACOSX] Builds options are better now
- [TODO] Remerge old PPU debug utilities in real plugin form
- [TODO] Change the make util. Maybe cmake ?
- [TODO] Remerge all mappers with the new manager
- [TODO] Rewrite UNIX Makefile for support new src organization.
- Start rewrite of mapper manager. The goal, like for plugin manager, is
to allow in the future to have plugins or mapper in external libraries.
- New sound layer using Allegro. Not really accurate, but more portable.
A lot of work has to be done on this (especialy because the actual sound
is really bad.)
- Started a new source organisation. Should be the good one this time!
03/05/2007 V0.30 part 1
- Started the process of PPU total rewrite.
- Bg seem to draw fine, sprite is under the way
- Add new test rom
- Blargg sprite_ram test pass sucessfully ^^
- Correct a lot of bug in implementation of a lot of things.
- Try to make it accurate as much as possible...
- All Blargg PPU test pass with success (in fact only timing is not good,
but it's enought good to let Battletoad work correctly... Maybe it's
- Totaly new memory manager
- Simple sound support (only on UNIX, but maybe Windows & DOS can support
- New plugin manager (a gamegenie plugin like is under development)
- New mapper manager
- Large bug correction on mappers (MMC3 now behave correclty)
- Large bug correction on larges things (like Signal handler now exit
correctly if a signal occure when in signal)
- Output now much simpler & readable
- New cart opening & internal strictures
- A very good speed boost with the new memory manager (it's incredible,
without speed limitation I can now go near 300/350fps!)
- Large part of code reorganisation (needed for the new memory manager and
- And an incredible number of modification/bug correction and more and
- Switch to SVN source control
- New command line parser (now it no more a stupid command line parser)
- Palette is no more externalized. (removing some path bad behaviour with
- Corrections on paddle emulation, now should work near perfect.
- Internal support for mapper #65 (Irem h3001) but not actually active.
- Some new debug options
02/19/2007 V0.27 Internal release
- Correction of a blocking bug in the memory module.
- The mapper MMC3 now work at nearly 99%. Only IRQ emulation is not as good as I want..
- Bug correction on 8x16 sprite support
- Now the crashdump generate a file instead of displaying on screen.
- The crashdump is more complete
- I've changed nothing, but now it's really fullspeed ! I can't understand why - MMC3 is nearly finished (need debugging)
- NEW - Signal interception for making bug reports. Don't hesitate to copy paste the whole thing and mail it to me
- Change on memory management.
- MMC1 is functional at 99% (no support for 1024Kb cart, but I can't find anyone..)
- 8x16 sprites are now OK
- Attribute tables, and color is now fully functional
- No more two pass on sprite display (speed improvement)
- A bit more slow :(
- NEW - MacOS X version !
- Source code reorganisation
- May be the lastest version of the actual PPU source code before total rewriting
- SMB1 support is always broken.. I can't understand why..
- Mirrors mode improved
- NEW - Save Ram support added !
- AOROM mappers added ! (nearly all RARE game) but timings are not good so..
Overall Rating: 4.0
- 0.26: Works with some games, but chokes on most others. Also doesn't look very good, there are no configuration settings and all the instructions are in French. Looks promising, but it needs more to deserve a better score...