I made another bugfix release, addressing game freeze issues in some games like Donkey Kong Land. More info on the release here.

In the meantime, I've made some decent progress on my first step toward rewriting the emulator core to support a dynamic memory map, which will be essential for supporting both GB and GBC at the same time (and this rewrite also has a goal of improving the overall performance). Hopefully with the holidays coming up, I can get in some extra coding time, too!
Awesome work! This is looking incredible, and I can't wait for that GBC support to be released. Keep up the great work, and thanks for many class periods playing Donkey Kong Land 2.
I just made a new release which makes use of newly discovered LCD documentation to eliminate diagonal screen tearing in fullscreen mode! I'd definitely appreciate feedback on this release because it's a bit experimental. More info here.

This release also lays some important groundwork for future GBC rendering. Up until now I used 4 bits per pixel for fullscreen rendering so I could render two pixels at once in a single byte, but the GBC can display well more than 16 colors at once, so I'll need 8 bits per pixel for it. This means the framebuffers would have to be twice as large (and require twice as many writes to render to it), which would be bad for memory usage and performance.

With this change though, my framebuffers only need to be 160x240 pixels, so I can expand to 8 bits per pixel with no memory cost. Even for original Game Boy, this is an improvement just to get rid of special-casing for 4-bit or 8-bit rendering. With a 256-color palette, I was also able to greatly increase performance when rendering multiple sprite palette configurations in a single frame (which doesn't happen often, but it was a terrible edge case before).

With this release, hopefully I can go back to my emulator core rewrite for GBC support, which I stalled while working on these rendering updates.
Always good to see an update and getting rid of screen tearing, nice!

I'm pleased to see that there is actually a performance gain when switching to support a higher bpp to accommodate GBC Smile.
Yay, no more screen tearing! Always a pain while trying to play old zelda games... (lol like that would make a real difference)

Still, this is really cool. Does it affect the fps any?
darkwater4213 wrote:
Yay, no more screen tearing! Always a pain while trying to play old zelda games... (0x5 like that would make a real difference)

Still, this is really cool. Does it affect the fps any?

I believe it shouldn't really have any noticeable effect on the FPS (aside from the improvement I mentioned about sprite palettes, which I've only ever seen in the title screen of V-Rally Championship Edition). I'm still rendering the same number of pixel bytes per frame as before, they're just in a different format now. Though the emulator's size did shrink slightly since I was able to remove all the code for conditionally packing 4-bit pixels.

Edit: As for the performance on future GBC work, this is likely going to be a massive improvement for fullscreen rendering.

These are my current estimates for maximum theoretical render speed based on prototype GBC tilemap render code, including DMA cycle stealing (assuming background tilemap only, no sprites, no CPU emulation or anything else):

  • Original Game Boy, no scaling: 198 FPS
  • Original Game Boy, full screen with new hardware-based upscale: 135 FPS
  • Original Game Boy, full screen without hardware-based upscale: 135 FPS
  • Game Boy Color, no scaling: 120 FPS
  • Game Boy Color, full screen with new hardware-based upscale: 93 FPS
  • Game Boy Color, full screen without hardware-based upscale: 60 FPS

Yes, fullscreen would have literally more than halved the render speed without this upscaling trick. So, I'm feeling a lot better about potential GBC performance than I did before, though it likely will still require more frameskip on average due to other factors like having to emulate the CPU's double-speed mode.

Edit 2: It looks like I greatly overestimated the amount of time for DMA cycle stealing. Updated the numbers to be much more promising (but the point stands about full screen without hardware upscale being twice as slow).
I must confess that it took until yesterday before i finally try TI-Boy CE. I have now done so on my pre-A CE with Zelda and it ran quite smoothly. The interlacing is barely noticeable but I haven't tried scrolling games yet.
This is a great Game-boy emulator!
All the games I've tried work very good.

The only problem is the CE's lack of flash memory to store them on.
You need to carefully choose the best small sized games.

This is what I have on mine:
1 Burger Time with Pepper cheat - 64K
2 Kirby's Dream Land - 256K
3 Kirby's Pinball - 256K
4 Mario Land with Lives cheat - 64K
5 Q-bert - 64K (had to remap the buttons for easier diagonals)
6 Tetris - 32K

I also like that they all have some color and the save states.

Great work Calc84maniac !
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
» Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8, 9, 10
» View previous topic :: View next topic  
Page 10 of 10
» 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