Giter VIP home page Giter VIP logo

Comments (4)

Sanaki avatar Sanaki commented on July 24, 2024

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.

bslenul avatar bslenul commented on July 24, 2024

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.

Ryunam avatar Ryunam commented on July 24, 2024

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.

Ryunam avatar Ryunam commented on July 24, 2024

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:

  1. 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:
  1. 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:

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    šŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ā¤ļø Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.