sergystepanov
3df6a24a0a
Skip video frames when they are late
2025-11-21 22:35:33 +03:00
sergystepanov
efa7a1d7b5
Update outdated Docker build
2025-11-21 20:44:27 +03:00
sergystepanov
5c6406c1e7
Implemented a busy loop for the emulation ticker.
...
This replaces the low-precision, OS-dependent time ticker with a CPU spin loop that performs continuous target frame time checks and corrections.
2025-11-21 20:13:27 +03:00
sergystepanov
3392251dda
Update dependencies
2025-11-20 00:36:13 +03:00
sergystepanov
bbad4539b1
Update libretro.h
2025-11-20 00:33:03 +03:00
sergystepanov
6b0d7c0ce1
Update Go to 1.25.0
2025-08-15 14:51:20 +03:00
sergystepanov
e03fbadcaa
Update dependencies
...
go: upgraded github.com/VictoriaMetrics/metrics v1.38.0 => v1.39.1
go: upgraded github.com/go-viper/mapstructure/v2 v2.3.0 => v2.4.0
go: upgraded github.com/klauspost/cpuid/v2 v2.2.10 => v2.3.0
go: upgraded github.com/knadh/koanf/v2 v2.2.1 => v2.2.2
go: upgraded github.com/minio/crc64nvme v1.0.2 => v1.1.0
go: upgraded github.com/minio/minio-go/v7 v7.0.94 => v7.0.95
go: upgraded github.com/philhofer/fwd v1.1.3-0.20240916144458-20a13a1f6b7c => v1.2.0
go: upgraded github.com/pion/logging v0.2.3 => v0.2.4
go: upgraded github.com/pion/rtp v1.8.19 => v1.8.21
go: upgraded github.com/pion/sdp/v3 v3.0.14 => v3.0.15
go: upgraded github.com/pion/turn/v4 v4.0.2 => v4.1.0
go: upgraded github.com/pion/webrtc/v4 v4.1.2 => v4.1.3
go: upgraded golang.org/x/crypto v0.39.0 => v0.41.0
go: upgraded golang.org/x/net v0.41.0 => v0.43.0
go: upgraded golang.org/x/sys v0.33.0 => v0.35.0
go: upgraded golang.org/x/text v0.26.0 => v0.28.0
2025-08-08 19:41:17 +03:00
sergystepanov
42b003db62
Verifies during startup if the system can run the emulator
...
This check can be disabled with the emulator.failFast = false config option. Right now it checks SDL2 video context creation.
2025-06-20 18:30:17 +03:00
sergystepanov
d8eed66a1d
Update dependencies
2025-06-20 18:30:17 +03:00
sergystepanov
8083ba086b
Use /usr/bin/env in the shebang line of shell scripts to ensure portability
2025-05-28 08:19:02 +03:00
sergystepanov
02210f1f8d
Remove unnecessary C bridge functions
2025-05-18 12:46:32 +03:00
sergystepanov
817a19c757
Fix the circle-pad's roundness
2025-05-16 12:15:37 +03:00
sergystepanov
36da07f277
Use the actual state size when loading ROMs
2025-05-03 16:35:21 +03:00
sergystepanov
83056bbf4f
Update dependencies
2025-05-03 15:57:41 +03:00
sergystepanov
37a4a80996
Use the save state size before each save/load call
2025-05-03 15:55:26 +03:00
sergystepanov
9d4256306e
Add missing C function header for Go debugger
2025-05-02 10:34:22 +03:00
sergystepanov
ddfc9249ec
Fix some user slot race conditions
...
In cases where HasSlot() and Reserve() operations are delayed, multiple users may incorrectly be granted a slot due to race conditions.
2025-05-02 10:06:23 +03:00
sergystepanov
a431b7050f
Update dependencies
2025-04-17 09:11:26 +03:00
sergystepanov
debd4b23df
Disable default static build
...
It is broken with SDL2 on Windows
2025-04-17 09:11:26 +03:00
sergystepanov
410610349b
Switch to UCRT toolchain in MSYS2
2025-04-17 09:11:26 +03:00
sergystepanov
3ac7a559df
Skip YUV test
...
It is broken on Windows
2025-04-17 09:11:26 +03:00
sergystepanov
7c878b1ee3
Update dependencies
2025-04-17 09:11:26 +03:00
sergystepanov
a1506d0f31
Add PGO with 1.24.0
2025-02-13 01:00:13 +03:00
sergystepanov
15ff2f3282
Update Go to 1.24.0
2025-02-12 14:17:43 +03:00
sergystepanov
ffb0abe4da
Update dependencies
2025-01-18 19:41:21 +03:00
sergystepanov
3dbf4f9b19
Update dependencies
2025-01-11 16:53:52 +03:00
sergystepanov
b02cd5c4f0
It is time to update the copyright year
2025-01-04 10:41:51 +03:00
Sergey Stepanov
0c768bb3d6
Add some notes on recording in regards to ffconcat
2024-12-21 01:37:42 +03:00
Sergey Stepanov
f78bcf3e4b
Allow config for the remote Libretro core repos
2024-12-20 01:32:20 +03:00
Sergey Stepanov
535e725618
Panic when dlib functions are missing
2024-12-19 21:40:14 +03:00
Sergey Stepanov
4aaeda3fbb
Move some RETRO_ENVIRONMENT vars into C
2024-12-16 23:28:14 +03:00
Sergey Stepanov
600243c87d
Update dependencies
2024-12-16 13:48:34 +03:00
Sergey Stepanov
82aebf6647
Fix Package 'libgl1-mesa-glx' has no installation candidate
2024-12-14 14:14:56 +03:00
Sergey Stepanov
89ae98b035
Why do we need samples
...
In an ideal scenario, the emulator generates a video frame and an audio chunk with its internal frame rate. For example, if the emulator runs a game at 60 FPS, it will produce 16 ms worth of audio and a video frame with each tick (or call of the run function). Then we need to send all this data to the user's browser, which becomes tricky with WebRTC audio.
The WebRTC standard supports only Opus-encoded audio for high-quality sound. The encoder and decoder (the audio player in the browser) have a limitation: they can only operate on fixed audio frames or predefined chunks of audio, which are 5, 10, 20, 40, or 60 ms in length.
Due to this limitation, we have to wait at least two ticks until the first whole audio chunk can be packed into predefined frames. If we have 16 ms of audio and one fixed buffer, we send 10 ms right away and have to wait for 4 ms to add to the remaining 6 ms. This will lead to a constant 6 ms delay between audio and video.
To mitigate this issue, we can set the smallest frame size as a buffer, i.e., 5 ms. This will decrease the latency to 1 ms, but we will send 3 packets of data in this manner for 16 ms.
A slightly better way is to create several buffers and dynamically select the next buffer so that the audio fits optimally, minimizing the number of network packets sent to users.
This frames thing essentially accomplishes that. In the options, we can select multiple (or one) Opus buffers to store audio and choose from. They should be defined from the largest to the smallest. And that's it.
2024-12-13 18:57:25 +03:00
sergystepanov
ed3b195b26
Dynamic audio buf
...
* Ugly audio buf
* Use dynamic Opus frames with config
2024-12-12 21:13:43 +03:00
Sergey Stepanov
f54089e072
Stretch samples a bit better with the GBA's 32768Hz
2024-12-07 00:47:27 +03:00
Sergey Stepanov
6bb82b2204
Allow 2.5ms Opus frame
2024-12-06 15:27:18 +03:00
Sergey Stepanov
d77d69a331
Remove pool from the audio stretcher
2024-12-05 13:50:39 +03:00
Sergey Stepanov
297ec9005c
Display video scaling info
2024-12-05 01:35:48 +03:00
Sergey Stepanov
5649d4410a
Remove pools from YUV conv
2024-12-05 01:11:02 +03:00
Sergey Stepanov
db32479c4e
Destroy rooms when the coordinator was lost
2024-12-05 01:10:16 +03:00
Sergey Stepanov
8fa53f4e32
Disable macos
2024-12-04 22:16:58 +03:00
Sergey Stepanov
a7acebc5d0
Try YUV without the mem pool
2024-12-04 22:09:51 +03:00
Sergey Stepanov
954bb23bb8
Add Reset with 0 key
2024-12-03 00:38:15 +03:00
Sergey Stepanov
7134782245
Enable frame duplication for Mupen64
2024-12-03 00:34:43 +03:00
Sergey Stepanov
5a42dc9857
Fail x2 on no coordinator connection
2024-12-01 20:26:29 +03:00
Sergey Stepanov
9caf45af78
Reset fail timer on success
2024-12-01 18:20:54 +03:00
Sergey Stepanov
56e3ce328e
Update Go to 1.23.3
2024-11-30 21:35:40 +03:00
Sergey Stepanov
6de1828ffe
Wait user click when autoplay fails
2024-11-29 14:51:33 +03:00
Sergey Stepanov
b2e275a6cd
Don't crash the app on http2 garbage
2024-11-28 23:24:35 +03:00