Best NES game?
Super Mario Bros 3
 71%  [ 32 ]
Metroid
 6%  [ 3 ]
Punch-Out!
 0%  [ 0 ]
The Legend of Zelda
 15%  [ 7 ]
Final Fantasy
 6%  [ 3 ]
Total Votes : 45

Hey everyone,

I had to take a couple months off but as of last week am back at it. Been working on an NES emulator from scratch in C/Assembly hybrid for Casio Prizm called NESizm. The goal is to play all of my childhood favorites through again. Because of the direct hardware key and display access, calculators are actually a better emulator device than most consoles or PC due to input/display lag that didn't exist in the 90's.

Off to a pretty good start! I've finished the first pass on the CPU interpreter and the PPU (NES on-board display chip) emulation. Donkey Kong is the "standard" ROM to get working as your first ROM when writing an NES emulator and I am happy to say it runs at full speed on Prizm now with a frame skip of 1 Smile

Next steps are to get Super Mario Bros. working, which will take a while because it actually uses a few fairly obscure NES features. Afterwards I'll do initial sound support. Larger and later games do more and more complex stuff, so I'll probably be at it for a while.

Full album of a couple shots of the game: http://imgur.com/a/wQaWQ

Oh, and the source code is available here: https://github.com/tswilliamson/nesizm

Latest version of NESizm available here: https://github.com/tswilliamson/nesizm/releases
You are a hero
This is amazing again.Laughing
I'm glad to see the progress of your new project.
I'm looking forward to the completion.
I think that this will be a driving force to attract new user of fx-CG50. Smile
I'm a member of planet casio (http://www.planet-casio.com/Fr/compte/voir_profil.php?membre=Aragorn) and I try to compilate Nesizm with the github code. However, I didn't succeed. Did you know how to do ?

Here is the error :
"D:/PrizmSDK-0.3/projects/nesizm/src/6502.cpp: In member function 'void cpu_instr_history::output()':
D:/PrizmSDK-0.3/projects/nesizm/src/6502.cpp:867:32: error: 'OutputLog' was not declared in this scope
D:/PrizmSDK-0.3/projects/nesizm/src/6502.cpp:870:33: error: 'OutputLog' was not declared in this scope
D:/PrizmSDK-0.3/projects/nesizm/src/6502.cpp:872:16: error: 'OutputLog' was not declared in this scope
make[1]: *** [6502.o] Error 1
make: *** [build] Error 2"

If someone succeed to compilate the program, could you share it please ? I'm going back to the boarding school in 3 days and I'd really like to install this program on my calculator before. Thank you in advance for the help bring.

Thanks to tswilliamson for prizoop. It works perfectly
Hi Aragorn, I can check this error later tonight when I am at home. NESizm is not complete however (probably ~60% compatibility at the moment) and only may work with one or two build configurations. I think it expects TARGET_PRIZM to be defined and RELEASE=1, DEBUG=0

Punch-Out and SMB3 work though Smile
Thank you for your answer. Prizoop is currently my favorite add-in and I am looking forward to Nesizm.
I have programmed some add-ins for monochrome calculators. So, I know the difficulty of development for calculator (and more particularly the difficulty of debugging). I wonder why Casio does not share its development tools. It would cost them nothing and allow us to develop programs for their machines more easily.
How do I put this on my calculator?
I've picked this back up and am working on compatibility. Over the past week I've gotten from about 60% compatibility to over 90%. Once DW3 and 4 work I am likely to spitshine it with an actual menu and options and post it, so hopefully will be able to drop a nice NES emulator for Prizm before the end of the year!
Oh this is pretty sweet, you are enticing me to get a Casio one of these days!
I have both the old cg20 and the new cg50! It's fun being able to do direct C and have a low latency LCD without a bunch of gotchas. Once I figured out how to do line by line DMA asynchronously and hit 60 FPS it's been off to the races.

... for the masochistic like me the RISC assembly is also super fun to optimize for the drawing routines. Being able to run a branch instruction and then specify another instruction to run in parallel while waiting for the branch results tends to be a really fun puzzle.
Still working on compatibility, if anyone is keeping an eye on my github. NES is finicky, lots of ways games exploited the system. My biggest problem is I have written the emulation to be as fast as possible (and allow for future assembly routines at obvious choke points). This means in order to have cycle accuracy for various game cart compatibility I have to handle a lot of edge cases.

I am up to ~94% based on my compatibility matrix of 170 games. My goal is to get that to 98% or so before moving on to actual features and a release. Experience has told me that I need to get to this level of compatibility to ensure other areas of each game that I haven't tested don't have unexpected, difficult to identify issues.
An update on Nesizm! I have started working on the menu and misc features so I can release an initial version. I've reached what appears to be approximately 95% compatibility with my final desired set of ROMs. Getting from 90 to 95% was actually really tough but it included some really important games. You can view the current compatible games here:

https://docs.google.com/spreadsheets/d/1TfgiU6doDaGvIzSMY3flPSmZviFKiysoxi9uwl-RlRY/edit?usp=sharing

Here's a mockup of the menu I'm building:

https://github.com/tswilliamson/nesizm/blob/master/gfx/art.psd

What needs to specifically get done before I release v 0.9:
- Menu integrated w/ basic options
- Save Game / State support

What I'll be working on after that:
- Last few games with issues (FF2, Shinob, Batman: Return of the Jokeri)
- Misc graphics features that are missing (emphasis bits)
- "Turbo" buttons, forced low emulation speed option for the twitchy difficult games
- Sound support
Happy to announce that the first release of Nesizm will be ready very soon, hopefully this weekend! Just finishing up adding options to customize controls and writing down instructions/FAQ.

Notable features for the initial release:
- Native speed: 60 FPS w/ SMB3 on the CG50 with no overclocking
- Full save state support, including inter-compatibility w/ popular PC emulater FCEUX so progress can be moved back and forth
- Support for over 90% of the NES library, including all Nintendo 1st part releases
First release uploaded to the archives on Cemetech! Also available in the releases tab on github:

https://github.com/tswilliamson/nesizm/releases
Amazing!! Laughing
That's a great achievement after Prizoop!
Congratulations!!
Yay!

How is it currently working with ROMs that use memory management chips? (MMC)
As you can read on https://github.com/tswilliamson/nesizm and https://docs.google.com/spreadsheets/d/1TfgiU6doDaGvIzSMY3flPSmZviFKiysoxi9uwl-RlRY/edit#gid=0 , 10 mappers are currently supported : Smile
  • NULL
  • MMC1
  • MMC2
  • MMC3
  • MMC6
  • UNROM
  • CNROM
  • AOROM
  • Camerica
  • Colour Dreams


And no less than 14 other mappers are planned : Very Happy
  • MMC5
  • AVE
  • Bandai
  • Namcot 106
  • FFE F4xxx
  • FFE F8xxx
  • Nanjing
  • Nina-1
  • Rambo-1
  • Sunsoft 5
  • SS8806
  • TC0190/TC0350
  • VRC2B
  • 74161/32
Critor did a thorough and impressive write up for French users on his website:

https://tiplanet.org/forum/viewtopic.php?p=251725&sid=2db034e03a0c72986568a3da9f31117f

I am stepping back for a week or two to play some NES games and then I'll probably add some of the more difficult mappers and sound support.
Thank you
Congragulation !
  
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 2
» All times are UTC - 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