Login [Register]
Don't have an account? Register now to chat, post, use our tools, and much more.
I am currently working on an NES emulator for the TI-84+ CE. The project is available at https://github.com/Skyluker4/NES84.

The emulator will emulate the NES without any audio since there is no speaker (duh). The picture will be at full resolution since the screen's resolution is higher than the NES's in full color. As for speed, the calculator's CPU runs at a pretty decent speed of ~50MHz, but from what I've read its really more of ~15MHz due to wait times. However, since the NES runs under 2MHz, it should be fine. Input will be through the keypad and the emulator will eventually be configurable to map your own controls.

Right now, the CPU is written, but it doesn't do anything and I don't even know if it works correctly. I'm working on testing it with NESTEST right now, which means I have to figure out how to play ROMs. After that, it'll be the PPU, APU (if necessary), and then finally controls.

My goal is to get this done in a few months. I'm currently busy with school, so I don't have all the time I want to work on it. I've never written an emulator before, so I'm still learning. If you have any experience or tips on how to do so, I would appreciate it.
Very interesting, the 6502 is a bit of an interesting beast to emulate on a z80/ez80 platform - In pure C i'm not sure how the speed will be though - you are correct about the wait states and such.

To start debugging you could include a NES binary as part of your program I guess?

I was wondering if you are porting an existing emulator across or writing one from scratch?
Excellent!

I have contemplated the possibility of a NES emulator on the 84 CE for quite a while, even if it doesn't run smoothly for every game. While I practically never have time to program such complex ideas (and I lack experience), it's pretty cool that you are also interested in making this idea work.

As for advice, consider some caveats to emulating the 6502 and NES graphics engine that other members have advised me of here: https://www.cemetech.net/forum/viewtopic.php?t=14846&start=0
Good luck on your project! Very Happy
About how long do you think it will take to release a stable beta version?
Calcuon wrote:
Good luck on your project! Very Happy
About how long do you think it will take to release a stable beta version?

Never.
ROM sizes are kind of big like ~4mb and such. How will you circumvent this? With compression?
MateoConLechuga wrote:
Calcuon wrote:
Good luck on your project! Very Happy
About how long do you think it will take to release a stable beta version?

Never.


Please refer to this forum.
Calcuon wrote:
Good luck on your project! Very Happy
About how long do you think it will take to release a stable beta version?


Hopefully, I'll have it running in a few weeks, I'm planning sometime in February. This will be the first emulator I've written so it'll definitely take some time, but hopefully it'll be running soon.
xMarminq_ wrote:
ROM sizes are kind of big like ~4mb and such. How will you circumvent this? With compression?


Some ROMs are quite large, and won't be able to be stored on the calculator as is. Many games should be able to fit through, for example, Mario Bros. is 41kb, so at least that'll fit on the calculator. Compression could be supported but would be a feature added later once everything else is working. Maybe eventually I could make a program that could remove the parts of the ROM that have to do with sound to save some space, but I don't even know if that's possible and definitely wouldn't happen anytime soon.
I wish this could be done with TiBoy CE roms and stuff. Could save space if it were possible
Quote:
Maybe eventually I could make a program that could remove the parts of the ROM that have to do with sound to save some space, but I don't even know if that's possible and definitely wouldn't happen anytime soon.

This is probably impossible due to the way that machine code works. First off, without a disassembled version, there is no systematic way to tell data from code and sound code / data from non-sound code / data, as all are represented as bytes internally. Even if you could figure out which bytes to remove, removing a byte causes all subsequent bytes to shift over, so jumps and memory accesses would break. It would be just as difficult to fix the pointers.

Maybe for a small subset of ROMs that have disassemblies available, you could assemble versions with no sound code and offer patch files (to avoid legal issues). This would probably have minimal space benefits, though.
xMarminq_ wrote:
I wish this could be done with TiBoy CE roms and stuff. Could save space if it were possible

Actually, TI-Boy CE already trims off unused bytes at the end of each rom page. As for removing the sound data, that would make all my audio emulation code useless! Wink
Could it run with TiBoy Ce though? Where could I find such a speaker for sound anyways?
xMarminq_ wrote:
Could it run with TiBoy Ce though? Where could I find such a speaker for sound anyways?

Here is a random example, but anything that is a usb audio device will work, as long as it is not an audio adapter as those only work with special hardware found in certain cell phones. Often this must be paired with a usb otg adapter because they usually have normal usb plugs instead of mini usb plugs, with the notable exception of my first example for which you can just use the normal calculator-to-calculator usb cable in place of its included adapter.
Let's not derail this thread - I think audio support for this project could be considered ... however I think that should be further down the roadmap.
Is it being worked on still?
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 1
» All times are GMT - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement