Comments (6)
On the esp32, if I overclock to 320Mhz I can achieve full speed (ntsc fs:1, so 30fps) in Sonic with YFM enabled and Z80 disabled.
But overclocking isn't as well documented as it is on the PICO, I have no idea what the average ESP32 chip can sustain. 280Mhz seems to be ok on all chips, 320 works on most of my devices, 360 on some, and 400Mhz always crashes.
I'll likely look into your NGPC port, I always wanted to support that in retro-go! I'll ping you when I get there, thanks again :).
Edit: BTW I tried a few other Z80 implementations, like the one from my smsplus fork that I optimized a fair amount. It helped but not that much. I tried other random Z80 but again it wasn't magical. Though in your case you might be able to find a Z80 implemented in thumb assembly!
from retro-go.
Thanks for tracking down the problem! I think the actual bug would be on line 539 PCE.VCE.reg |= V << 8
. Raiden probably uses a value greater than 1 because the value is already in a register, expecting the hardware to discard the upper 7 bits. The documentation says:
$0402 - Color table address (LSB)
$0403 - Color table address (MSB)
(Both are write-only, reads return $FF)
These two registers form a 16-bit value, of which the lower 9 bits are
used as an index into the color table for subsequent reads and writes
by the data register. The remaining upper 7 bits are ignored.
So changing line 539 to PCE.VCE.reg |= (V & 1) << 8;
should be the correct behavior, I think.
The other option would be to mask PCE.VCE.reg
every time it's accessed (eg instead of your return it'd be PCE.VCE.reg &= 0x1FF;
) but that's a bit cumbersome.
What do you think?
from retro-go.
Looks like discarding upper 7 bits from V would not broke anything and will have minimum performance impact.
Madnafen PCE emulator did the same:
Checked some other games after that patch and it seems theres no glitches or so on.
Btw, i have bunch of intersting emulators for RP2040 you might be intersting in.
For example Watara Supervision, Wonderswan Color, Neogeo Pocket Color :) May be you want to port them to retro-go :)
from retro-go.
Looks like discarding upper 7 bits from V would not broke anything and will have minimum performance impact.
Madnafen PCE emulator did the same:
Checked some other games after that patch and it seems theres no glitches or so on.
Thanks for testing. Since you did all the work do you want to create a PR to get credited as contributor? Otherwise I'll commit the fix in a few days/weeks when I get back to the project, we can keep this issue open until then.
Btw, i have bunch of intersting emulators for RP2040 you might be intersting in.
For example Watara Supervision, Wonderswan Color, Neogeo Pocket Color :) May be you want to port them to retro-go :)
I'll definitely check your ports, thanks!
How's your Gwenesis performance? I never could get my port to full speed with a reasonable frameskip despite trying so many things, but I believe the PICO is a fair amount faster (when running at equal clock).
from retro-go.
I'll definitely check your ports, thanks!
You're welcome :)
How's your Gwenesis performance? I never could get my port to full speed with a reasonable frameskip despite trying so many things, but I believe the PICO is a fair amount faster (when running at equal clock).
RP2040 not strong as you think, i belive ESP32 outplays RP2040 with raw cpu performance at same CPU speed. Also, there's only 256Kb ram. But, pico have great ability to overclock to >= x3.0 of stock CPU speed (125Mhz => 378Mhz stable for 99.99(9)% of SoC's and 416Mhz for 90%). Also Pico always has 2nd core overwhelming cause of software Video output (my ports have Composite TV, VGA, HDMI, TFT outputs)
Regarding Gwenesis (which is very cpu MHZ depended), the only way to achieve good performance (50 stable fps for UMK3) is
- 416Mhz
- Completly disable sound
- Frameskip every third frame
- Interlace scanlines between frames
Some games works greate with full sound enabled with Z80 disabled, but most of games requires Z80 to work. Maybe other Z80 engine will increase performance.
Platformers like Boogerman works good with overclocking, interlace and frameskip, but with sound.
from retro-go.
I'll likely look into your NGPC port, I always wanted to support that in retro-go! I'll ping you when I get there, thanks again :).
You're welcome to contact me directly. Site with contacts in my github profile.
Edit: BTW I tried a few other Z80 implementations, like the one from my smsplus fork that I optimized a fair amount. It helped but not that much. I tried other random Z80 but again it wasn't magical. Though in your case you might be able to find a Z80 implemented in thumb assembly!
It wouldn't do the magic, just 1-3 fps. Cause there is very limited usage of Z80, mainly for pushing samples to YM chip in a loop, nothing more.
Also, i dont think theres Cortext-M0 Z80 realisation :)
from retro-go.
Related Issues (20)
- Why update screen mode (FULL vs Partial) has been removed? HOT 4
- Support ZX-Spectrum HOT 3
- Add support for Neo Geo Pocket (Color) HOT 1
- Prboom(esp32-s3): External DAC crashes when system monitor task is enabled. HOT 14
- Requirements not satisfying when trying to build img for esp32s3 HOT 15
- panic with some roms HOT 2
- ST7789 Display Driver support? HOT 2
- Sinclair ZX Spectrum HOT 2
- Improve SDL compilation instructions HOT 5
- Duke Nukem 3D HOT 2
- Build workflow: Patching of IDF does not work HOT 2
- Networking isn't compatible with esp-idf 5.x HOT 4
- Support for compressed ROMs? HOT 15
- Doom crashes on retro-go built with ESP-IDF 5.2.2 (fine on ESP-IDF 4.8.8) HOT 2
- Updater download doesn't check for free storage space so could fill up the storage HOT 27
- Compilation failure due to sntp_stop() HOT 1
- Setting audio out to external DAC (which is not connected) causes constant right-arrow-like behavior HOT 5
- Upgraded hardware HOT 2
- ESP32 S3 can't build image HOT 7
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from retro-go.