1. 30 Jan, 2020 10 commits
  2. 27 Jan, 2020 4 commits
    • Alexander Mikhaylenko's avatar
    • Alexander Mikhaylenko's avatar
      Add RetroMainLoopSource · 959da69d
      Alexander Mikhaylenko authored
      This is a custom GSource that supports more precise delays than
      GTimeoutSource, as it counts time in microseconds instead of milliseconds.
      
      Handle rounding error by inserting an extra microsecond when needed.
      
      Take extra care not to miss the ready time by setting the corresponding
      timeout in prepare(), and exit immediately if we've missed the time.
      
      In case we missed it after all, set ready time based on the previous ready
      time if it's available, not on current time.
      
      While this still isn't enough to make the timing 100% consistent, as other
      sources, as well as blocking code, can increase the delay between frames,
      it's an improvement over rounding the delay between frames to milliseconds.
      959da69d
    • Alexander Mikhaylenko's avatar
      c8534cc7
    • Alexander Mikhaylenko's avatar
      retro-core: Add missing property getters · 8ca26f4d
      Alexander Mikhaylenko authored
      'game-loaded', 'is-initiated', 'support-no-game' were marked as readable,
      but didn't have the corresponding logic in get_property().
      8ca26f4d
  3. 26 Jan, 2020 1 commit
  4. 25 Jan, 2020 1 commit
  5. 20 Jan, 2020 6 commits
    • Alexander Mikhaylenko's avatar
      environment: Return the played samples in on_audio_sample_batch() · c65b2de7
      Alexander Mikhaylenko authored
      From analyzing RetroArch, it seems this function is supposed to return
      the number of played frames, while we currently return 0 there. This
      breaks, in particular, the beetle-ngp core which enters an infinite loop
      trying to play audio.
      c65b2de7
    • Alexander Mikhaylenko's avatar
      602617a1
    • Adrien Plazas's avatar
      core: Use g_object_notify_by_pspec() everywhere · 41c10cee
      Adrien Plazas authored
      Replace the only call to g_object_notify_by_pspec() by a call to
      g_object_notify_by_pspec(), unifying the property notifications.
      41c10cee
    • Alexander Mikhaylenko's avatar
      retro-core: Don't allow negative speed rate · e4974879
      Alexander Mikhaylenko authored
      Having speed rate <= 0 currently stops the game. While it makes sense for
      0, it can be confusing with <0, so don't allow that.
      e4974879
    • Alexander Mikhaylenko's avatar
      retro-main-loop: Merge into RetroCore · 56d981ad
      Alexander Mikhaylenko authored
      There's no point in separating these 2 classes, as one core cannot have
      two main loops anyway. Additionally, RetroMainLoop contains very little
      amount of logic, and having just one object will simplify things later
      with subprocess.
      56d981ad
    • Alexander Mikhaylenko's avatar
      retro-core: Rework state and memory API · 5e7e4748
      Alexander Mikhaylenko authored
      When getting state or memory, don't return anything and instead write the
      result into a file. Similarly, when setting them, read them from a file.
      
      This will be important when the core runs in a separate process, as it will
      allow to only send the filename through IPC instead of the whole savestate,
      which can be fairly large for some cores.
      
      Since the get/set terminology doesn't make much sense anymore, rename:
      * retro_core_get_state() -> retro_core_save_state()
      * retro_core_set_state() -> retro_core_load_state()
      * retro_core_get_memory() -> retro_core_save_memory()
      * retro_core_set_memory() -> retro_core_load_memory()
      
      Throw errors for retro_core_load/save_memory() as well, not just for state
      functions.
      
      Use temporary files for tests, and similarly rename them.
      5e7e4748
  6. 19 Jan, 2020 10 commits
  7. 18 Jan, 2020 1 commit
  8. 12 Jan, 2020 2 commits
  9. 11 Jan, 2020 5 commits