Comments (4)
Tested and verified this problem as well. Using Mega Man ZX (Europe) as a tester on x86_64 Linux (289d544), software renderer:
Runahead off: 190 fps
Runahead on, two frames, second instance, no inputs being touched: 90 fps
Runahead on, two frames, second instance, inputs being mashed: 22 fps
Runahead on, two frames, single instance, no inputs being touched: 18 fps
Runahead on, one frame, single instance, no inputs being touched: 21 fps
from melonds.
Yeah same thing (Windows 64bit), it keeps spamming stuff like this in logs:
Resetting JIT block cache...
done resetting jit mem
done resetting jit mem
trying to create mapping 2000000, 400000 0 4 0
mapped mirror at 02000000-023fffff
trying to create mapping 3800000, 10000 0 9 1
mapped mirror at 03800000-0380ffff
trying to create mapping 3ff0000, 10000 0 9 1
mapped mirror at 03ff0000-03ffffff
trying to create mapping 2400000, 400000 0 4 1
mapped mirror at 02400000-027fffff
trying to create mapping 2000000, 400000 0 4 1
mapped mirror at 02000000-023fffff
trying to create mapping 2400000, 400000 0 4 0
mapped mirror at 02400000-027fffff
trying to create mapping 2400000, 400000 0 4 0
mapped mirror at 02400000-027fffff
every time you press/release a button or move the pointer with second instance, without it it's non-stop.
Tested with Aria of Sorrow: https://cdn.discordapp.com/attachments/466730940140617744/773229702306463774/2020-11-03_17-47-29.mp4
edit: Hm for me however it doesn't seem related to software renderer, as it's even worse with GL renderer, I can't even resume the game with second instance after enabling run-ahead š
from melonds.
I have done some more testing using Chrono Trigger DS as an example. What I noticed is that it spams these 3 specific lines over and over in the logs, even when everything JIT-related is set to OFF in the Core Options:
Resetting JIT block cache...
done resetting jit mem
done resetting jit mem
Resetting JIT block cache...
done resetting jit mem
done resetting jit mem
Resetting JIT block cache...
done resetting jit mem
done resetting jit mem
- With Runahead Single Instance mode these lines get printed constantly to the logs, with no interruption.
- With Secondary Instance active, the logs gets spammed only when pressing/mashing buttons.
from melonds.
One thing that occurred to me while revisiting this issue - which is unfortunately still present - is that the current implementation of the libretro core does not seem to do any of the following:
- avoid rendering video and audio at a core level if they're not needed, ie when using Runahead, by making use of the API call
RETRO_ENVIRONMENT_GET_AUDIO_VIDEO_ENABLE
.
See here how this is done in the snes9x core:
- https://github.com/libretro/snes9x/blob/d2e8fc044fcef5d61bd12959ba96f033253e6f99/libretro/libretro.cpp#L1898
- https://github.com/libretro/snes9x/blob/d2e8fc044fcef5d61bd12959ba96f033253e6f99/libretro/libretro.cpp#L2019
- https://github.com/libretro/snes9x/blob/d2e8fc044fcef5d61bd12959ba96f033253e6f99/libretro/libretro.cpp#L2034
- use the flag "Fast Savestates", which apparently is used for netplay and helps reduce overall savestate size. Again, see here for a mention of fast savestates in the snes9x libretro code:
- in
retro_serialize
: https://github.com/libretro/snes9x/blob/d2e8fc044fcef5d61bd12959ba96f033253e6f99/libretro/libretro.cpp#L2026` - in
retro_unserialize
: https://github.com/libretro/snes9x/blob/d2e8fc044fcef5d61bd12959ba96f033253e6f99/libretro/libretro.cpp#L2034
As explained in libretro/RetroArch#13498, these two elements seem to exhibit some oddities, but implementing at least the video/audio disabling part should yield a drastic improvement with regards to Runahead support.
No idea about that log spam though...
from melonds.
Related Issues (20)
- [Feature request] Allow to use custom .wav audio file as MIC input HOT 9
- Please revert Screen Gap changes HOT 1
- Is there a way to use melonds Wifi emulation in libretro? HOT 2
- melonds core for Retroarch on 3ds HOT 1
- Ds games slow on android tv box
- add ids/dsi/nds extension and BIOS
- NDS/3DS: All 14 Screen Layouts for rotating monitor / mobile devices (landscape/portrait)
- Debug builds fail on Windows/MinGW HOT 1
- "Communication error" when loading Pokemon Platinum after saving. Update to MelonDS v0.9.5 as fix. HOT 1
- Virtual buttons lock touch screen input HOT 1
- All 48 Possible Fullscreen NDS Screen Layouts for PC and Android
- no opengl renderer on android
- [Feature Request] Mirroring the mouse/touch cursor to the top/non-touch screen
- Update to latest version
- Terrible performance on S22 Ultra
- OpenGL Renderer in Core Options has a Rendering bug in Picross 3D
- OpenGL Renderer specular effects/ambient occlusion issue
- error: 'QOpenGLFunctions_3_2_Core' does not name a type
- MelonDS batocera V38 local multiplayer issue
- [Feature Request] Screen Rotation
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 melonds.