mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-21 03:09:08 -05:00
Profiles that read two repositories, a libretro port and its upstream, now prefix each citation with source or upstream, decided by which tree carries the cited value at its pin. The emulator pages use the word to tell libretro glue, emulator code as the port carries it, and the upstream emulator apart.
81 lines
4.0 KiB
YAML
81 lines
4.0 KiB
YAML
emulator: radio
|
|
type: utility
|
|
core_classification: pure_libretro
|
|
source: "https://git.libretro.com/libretro/libretro-radio"
|
|
upstream: "https://github.com/fpscan/libretro-radio"
|
|
author: "fpscan, gadsby"
|
|
profiled_date: "2026-09-17"
|
|
source_commit: "5d7d786ad1d8703a52184ff2ee39712c46ed67c9"
|
|
upstream_commit: "5d7d786ad1d8703a52184ff2ee39712c46ed67c9"
|
|
core_version: "1.1"
|
|
display_name: "Internet Radio (Radio)"
|
|
cores:
|
|
- radio
|
|
systems: []
|
|
|
|
notes: |
|
|
Streams internet radio and plays local MP3 and WAV files behind a tuner
|
|
display with five visualisers. The station list is built once in
|
|
retro_load_game, in this order: the content when it is given, then
|
|
radio_stations.m3u in the system directory, then the same name in the save
|
|
directory, then in the working directory, then the 100 most clicked
|
|
stations of the radio-browser.info API over plain HTTP, and last eight
|
|
SomaFM streams compiled into the core. Each step runs only while the list
|
|
is still empty, so the first source that yields a station wins.
|
|
ref: libretro-radio.c:2409-2488
|
|
|
|
Content is an .m3u or .txt playlist, or a single .mp3 or .wav file. A
|
|
playlist is read line by line: an EXTINF line names the next entry, any
|
|
other line that is not a comment is a stream URL or a local file path,
|
|
and a bare host gets http:// prepended. Up to 256 entries are kept and
|
|
each is given a fake FM frequency for the tuner. A playlist that parses to
|
|
zero entries counts as no content and the chain above continues, which is
|
|
what the zero-byte empty.m3u in the repository is for. Local audio is
|
|
opened from the path the playlist or the frontend gives, and a WAV must be
|
|
PCM or float with a fmt and a data chunk.
|
|
ref: libretro-radio.c:1965-1971, libretro-radio.c:37,
|
|
libretro-radio.c:2221-2291, libretro-radio.c:2419-2435,
|
|
libretro-radio.c:746-797, libretro-radio.c:800-871
|
|
|
|
Streaming is a hand-written HTTP/1.0 client over an AF_INET socket: the
|
|
URL scheme is stripped, an https:// entry is joined in clear on the port
|
|
it names or 80, ICY status lines are accepted and up to five redirects
|
|
are followed. No TLS library, certificate store or font file is read: the
|
|
8x8 glyphs are a table in the binary. MP3 decoding is libmad, compiled in
|
|
from the libretro-deps submodule.
|
|
ref: libretro-radio.c:517-548, libretro-radio.c:564-743,
|
|
libretro-radio.c:81, Makefile:30-45, .gitlab-ci.yml:13-17
|
|
|
|
The presets are the loaded list seen through the Active Preset core
|
|
option, which selects entries 1 to 100 by index, and a list longer than that
|
|
is still walked with up and down on the pad. retro_load_game accepts a
|
|
null game, but retro_set_environment only sets the pixel format and the
|
|
variables and never announces SET_SUPPORT_NO_GAME, so the frontend still
|
|
demands a content path and the .info supports_no_game only shows the
|
|
Start Core entry.
|
|
ref: libretro-radio.c:977-991, libretro-radio.c:1984-1999,
|
|
libretro-radio.c:2068-2073
|
|
|
|
The GitLab project is the copy the buildbot builds through its own CI,
|
|
from the same tree as the author's GitHub repository, and the Makefile
|
|
names the binary radio_libretro.
|
|
ref: .gitlab-ci.yml:10, Makefile:17
|
|
|
|
files:
|
|
- name: radio_stations.m3u
|
|
path: "radio_stations.m3u"
|
|
required: false
|
|
category: game_data
|
|
validation: [existence]
|
|
unsourceable: "station list the user writes, one stream URL or local audio path per line, with no name or entry the code expects"
|
|
description: "default station list, read when the content yields no station"
|
|
note: >-
|
|
Opened from the system directory, then from the save directory, then
|
|
from the working directory, each only while no station has been
|
|
loaded yet. Parsed like a content playlist and accepted once one entry
|
|
comes out of it. A missing or empty file hands over to the
|
|
radio-browser.info API and then to the eight built-in SomaFM streams.
|
|
A file put here replaces those two fallbacks for every start without
|
|
content.
|
|
source_ref: "source libretro-radio.c:2437-2461, source libretro-radio.c:2278-2291, source libretro-radio.c:2464-2481"
|