Login [Register]
Don't have an account? Register now to chat, post, use our tools, and much more.
Hey, so some of you already knew this, but I'm working on a TI-Boy iteration for the TI-84+ CE. Still Game Boy only and no Game Boy Color, at least for now, but I'm bringing in automatic colorization like when you play GB games on a real GBC.

Thanks to the extra RAM in this system I'm able to get all fancy with dynamic recompilation for the CPU and use caches to speed up graphics rendering, so the end result is an emulator that can actually hit fullspeed and 60 frames per second for some games, and fullspeed with frameskip for others. Not to mention, unlike previous versions of TI-Boy I'm implementing accurate cycle timing in the emulation, which is dramatically improving ROM compatibility.

I can get into more of the specifics of how it works under the hood in future posts, if you want to hear it. This thread could become a sort of development blog, I suppose.

As for remaining emulation features, I do want to implement Real Time Clock emulation for cartridges that support it, as well as basic emulation for the link port hardware that prevents games from freezing when attempting to start a transfer. There's also a bug in partial-frame sprite rendering that I need to address, and probably other things I haven't thought of yet.

On the user interface side, I still need to put in support for saving the current configuration (e.g. frameskip and palette settings), either on a global or per-game basis. Save states would be nice too, but I'm not sure if they need to be in the initial release.

At any rate, I've put up a preview video that you can view in glorious 60FPS Smile

No sound?? Razz

Excellent work. I've been patiently awaiting a progress report for months.
This is incredible work as always, calc84; I'm thrilled you have gotten far enough to share it now! Between this and Prizoop, users of modern color-screen graphing calculators everywhere now will get to emulate Gameboy games!
oldmud0 wrote:
No sound?? Razz

Excellent work. I've been patiently awaiting a progress report for months.


There's no audio output support planned (unless there's an extreme breakthrough in USB sound card interfacing), and trying to put music in my videos in the past just got confusing Razz
Amazing job, the game runs so smoothly, your efforts really pay off Smile
Congratulations, it looks amazing! I can't wait to be able to play pokemon gold on my calculator.
Completely awesome man, the speed is incredible!

Would love to know some of your best tricks Razz.
Wow, this is wonderful, I love seeing new projects like this that are much faster than their CSE counterparts. Great work! Smile
Looking good Smile

I was able to fix all of my ROM interrupt hangs related to the serial port by adding logic to the write to 0xFF02 (serial ctl). Just immediately reporting back FF to the data bit and disabling the enable flag and then triggering the serial interrupt.

You can see this code in case 0x02 in writeByteSpecial:
https://github.com/tswilliamson/prizoop/blob/master/src/memory.cpp
tswilliamson wrote:
Looking good Smile

I was able to fix all of my ROM interrupt hangs related to the serial port by adding logic to the write to 0xFF02 (serial ctl). Just immediately reporting back FF to the data bit and disabling the enable flag and then triggering the serial interrupt.

You can see this code in case 0x02 in writeByteSpecial:
https://github.com/tswilliamson/prizoop/blob/master/src/memory.cpp


Yeah, I'm pretty sure I did the same in previous emulators. Though I have the feeling I might have had to add in an appropriate transfer delay to keep some games from breaking. But unfortunately I don't have the gbc4nspire source code around to tell me whether I'm crazy or not Wink
I love your choice of game for demonstration Wink

will there be an easy way to convert ROMs to something your calc can read? how have you been getting them on there in your testing?
In the past, he had an application that recompiled the game with the emulator into a single application - however, since we don't have the signing key, maybe he will instead have something convert the gb(c) game to an appvar, then throw a separate program for emulation.

gahh, no gbc support yet? I suppose playing Infinity on the calc will have to wait then.
looks great!
Can't wait to try this. Though on the matter of GBC support is the reason for it not being included because there's no easy way to put it into the emulator or is there another issue altogether? Just wanted to really know why it's not here at launch or will it be coming in a future update?
Luxen wrote:
In the past, he had an application that recompiled the game with the emulator into a single application - however, since we don't have the signing key, maybe he will instead have something convert the gb(c) game to an appvar, then throw a separate program for emulation.

gahh, no gbc support yet? I suppose playing Infinity on the calc will have to wait then.


That's pretty much how it works, though in general the ROMs will have to be split into multiple appvars because there's a maximum size. Though the nice thing about this is you can update the emulator without having to repackage each of your ROMs.

Skeletal_Charizard wrote:
Can't wait to try this. Though on the matter of GBC support is the reason for it not being included because there's no easy way to put it into the emulator or is there another issue altogether? Just wanted to really know why it's not here at launch or will it be coming in a future update?


GBC support is definitely not a trivial feature to add, and it complicates things a good bit (at the very least requiring more memory and processing, but also added logic in other areas). It might come in a future update, but for now I'm prioritizing the primary Game Boy functionality.
calc84maniac wrote:

That's pretty much how it works, though in general the ROMs will have to be split into multiple appvars because there's a maximum size. Though the nice thing about this is you can update the emulator without having to repackage each of your ROMs.


This makes me happy, because that was a slightly annoying thing about the other iterations, where you had to have a separate app for each game Rolling Eyes Rolling Eyes
Wondering why there's been no sort of update on the projects progress in months. It has me concerned, and anxious for when some form of update is announced.
Most recently (within the last week or so) I've added support for save states. I've also been working on general bug fixes and performance improvements.

The major things remaining on my to-do list before the first release are:
  • Real-Time Clock support (currently in progress)
  • Saving emulator configuration (and maybe per-game config, but that could be postponed)
  • Fixing automatic frameskip (which doesn't work properly when skipping multiple frames)
  • Making sure the ROM splitting tool is usable

And whatever else comes up in the meantime, I suppose.

I might make another video soon that shows some of the emulator features like the save states and UI.
Random thing: I came up with a really simple auto frameskip algorithm. It may seem obvious to you but it's worth sharing. Simply subtract the expected frame time from the current frametime, and accumulate the result. When the result is over 0, you are behind and need to skip a frame.

Here it is in "action""

https://docs.google.com/spreadsheets/d/1YtqK5_gWIXS0V-gu3As8RAtfFc-Yc2LtptxYyPALbBY/edit?usp=sharing
My current method is a little simpler as far as the numbers go, since I'm just counting "expected" frames as reported by the LCD itself. There's probably a logic error in there somewhere because I tried to optimize it too much or something.
  
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 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