mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-23 12:19:13 -05:00
feat: collect the tyrian files emuelec declares
EmuELEC declares 19 files of the Tyrian 2.1 distribution (setup.ini, netterm.int, the net*.pcx screens...) that bios/ did not hold. They resolved only at the data directory step, against data/opentyrian, the cache refresh_data_dirs.py fills from the opentyrian-data.zip asset. verify gave 544/572 in a checkout holding that cache and 525/572 in one without it, for the same commit. The 19 files are taken from the freeware tyrian21.zip (camanis.net, sha1 29827de9), each equal to the cached copy. netset.pcx and tyrset.pcx are the same bytes under two names, so the folder joins NODEDUP_DIRS. A test resolves every platform entry with the data directory caches present and fails on any that only a cache answers.
This commit is contained in:
1 parent
398ece6b75
commit
06e37b36f7
22 files changed
+126
-1
No files matched your search
Binary file not shown.
@@ -0,0 +1 @@
|
||||
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÙ Thank you for playing À¿³ ÄÄÄÄÄÄ Tyrian ÄÄÄÄÄÄ ³ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´³ This game is NOT shareware. Please enjoy it but don't copy it. ³³ ³³ If you want to see more great games from Epic MegaGames, visit us Online. ³³ ³³ If you have a CompuServe account just GO EPIC at any CompuServe Prompt. ³³ Here, you can get all of Epic's Shareware games, receive technical support, ³³ or engage in casual conversation about any Epic product with other ³³ CompuServe users. ³³ ³³ For all the latest Epic News, and links to Epic Distribution sites, visit ³³ our World Wide Web site at http://www.epicgames.com ³ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄH o w Ät o Äo r d e r ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´³ ³³ Write to: Call us: Visit us online: ³³ E p i c M e g a G a m e s 8 0 0 - 9 7 2 - 7 4 3 4 ( O r d e r s ) C o m p u S e r v e : G O E P I C ³³ 1 0 4 0 6 H o l b r o o k D r i v e 3 0 1 - 9 8 3 - 9 7 7 1 ( S u p p o r t ) B B S : 4 1 4 - 7 8 9 - 4 2 1 0 ³³ P o t o m a c , M D 2 0 8 5 4 U S A + 4 4 - 1 7 6 7 - 2 6 0 - 9 0 3 ( U K ) I n t e r n e t : ³³ 0 - 4 0 8 9 9 6 8 4 - 0 ( G D R ) o r d e r s @ e p i c g a m e s . c o m ³ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
|
||||
Binary file not shown.
@@ -0,0 +1,52 @@
|
||||
[MODEMS]
|
||||
|
||||
Data
|
||||
"Standard 9600 Baud Modem,9600,AT &F &C1 &D2 &Q5 &K0 S46=0",
|
||||
"Standard 14.4 Baud Modem,14400,AT &F &C1 &D2 &Q5 &K0 S46=0",
|
||||
"Acubit 14.4 fax v32,14400,AT &F &C1 &D2 %C0 \N1",
|
||||
"AT&T Data Port 14.4 FaxModem,14400,AT &F &C1 &D2 S41=3 \N0 %C0",
|
||||
"Boca 14.4 fax,14400,AT &F &C1 &D2 \N0 \G0 &K0 %C0 N0",
|
||||
"Cardinal 14.4 v32,14400,AT &F &C1 &D2 N0",
|
||||
"Cardinal 9600fax,14400,AT &F &C1 &D2 &Q6 &K0 %C0 \N0 N0",
|
||||
"Digicom Scout Plus 14.4 Fax,14400,AT &F &C1 &D2 *M0 *E0",
|
||||
"Gateway Telepath 14.4 fax,14400,AT &F &C1 &D2 B0 N0 \N0 %C0 &K0",
|
||||
"Gateway Telepath 550,14400,AT &F &C1 &D2 S27=32 S15=16 S13=64 &B0 &H2 &I1 &K0 &M0",
|
||||
"GVC 14.4 fax,14400,AT &F &C1 &D2 S46=0 N0 &K0",
|
||||
"GVC 14.4 MNP2-5 v42,14400,AT &F &C1 &D2 %C0 \N0 B8",
|
||||
"Hayes Optima 14.4 #1,14400,AT &F &C1 &D2 \N0",
|
||||
"Hayes Optima 14.4 #2,14400,AT &F &C1 &D2 S46=0 N0 &K0",
|
||||
"Hayes Optima 28.8,28800,AT &F &C1 &D2 &K0 &M0 &Q5 S46=136",
|
||||
"Hayes Ultra 14.4,14400,AT &F &C1 &D2 &Q5 &K0",
|
||||
"Identity Internal,14400,AT &F &C1 &D2 B8 %C0 \Q0 \N1",
|
||||
"Infotel 14.4,14400,AT &F &C1 &D2 &Q6 %C0 N0 &K0",
|
||||
"Intel 14.4,14400,AT &F &C1 &D2 \N0 \Q0 \J1 \V0",
|
||||
"Intel 14.4 ext,14400,AT &F &C1 &D2 \N0 /Q0",
|
||||
"Intel 14.4 fax,14400,AT &F N0 &D2 &C1 &Q6 &K0 S0=1",
|
||||
"Intel 14.4i,14400,AT &F &C1 &D2 B8 %C0 H0 \N0 \Q0",
|
||||
"Intel 14.4i fax,14400,AT &F &C1 &D2 \N0 \Q0",
|
||||
"MegaHertz C596FM,14400,AT &F &C1 &D2 \N1 \J0 %C0",
|
||||
"Rockwell 14400,14400,AT &F &C1 &D2 N0 S46=0 &K0 %C0",
|
||||
"Practical Perip 14.4FX v32,14400,AT &F &C1 &D2 &K0 &Q5 S46=0",
|
||||
"Redicard v.32 bis 14.4,14400,AT &F &C1 &D2 %C \N",
|
||||
"Smart One 1442F,14400,AT &F &C1 &D2 %C0 &K0 S95=44 S46=0",
|
||||
"SupraFax 14.4,14400,AT &F &C1 &D2 &Q6 &K %C0 \N1 S37=6 S0=1",
|
||||
"SupraFax 14.4 v32,14400,AT &F &C1 &D2 S46=136 %C0",
|
||||
"SupraFax 14.4 v32-,14400,AT &F &C1 &D2 S46=136 M1 Q0 D2",
|
||||
"Telebit Worldblazer 14.4,14400,AT &F &C1 &D2 S51=4 S180=0 S183=8 S190=0 L1",
|
||||
"Telepath 550,14400,AT &F &C1 &D2 &M0 &K0 S0=1",
|
||||
"USR Sportster 14.4 v32 fax,14400,AT &F &A0 &B1 &C1 &D2 &M0 &H0 &I0 &K0 S27=48",
|
||||
"USRobotics 14.4 fax,14400,AT &F &A0 &B1 &C1 &D2 &M0 &H0 &I0 &K0 S27=48",
|
||||
"USRobotics 14.4 v32 fax,14400,AT &F &A0 &B1 &C1 &D2 &M0 &H0 &I0 &K0 S27=48",
|
||||
"USRobotics Sportster 14.4,14400,AT &F &A0 &B1 &C1 &D2 &M0 &H0 &I0 &K0 S27=48",
|
||||
"Viva 14.4,14400,AT &F &C1 &D2 \N0",
|
||||
"Viva 14.4i fax,14400,AT &F &C1 &D2 \N0 \Q0 \J1 \VI",
|
||||
"VivaFax 14.4,14400,AT &F &C1 &D2 N0 \N1 %C0 &K0",
|
||||
"VivaFax 14.4,14400,AT &F &C1 &D2 \Q0 &M0 %C0 B8 \N1",
|
||||
"ZOOM 14.4,14400,AT &F &C1 &D2 &K0 &Q6 %C0 \G0 \N0 S46=136",
|
||||
"ZOOM 14.4 v32 v42 fax,14400,AT &F &C1 &D2 &K0 &Q6 %C0 \G0 \N0 S46=136",
|
||||
"ZOOM VFP 14.4,14400,AT &F &C1 &D2 &K0 &Q6 %C0 \G0 \N0 S46=136",
|
||||
"ZOOM VFX v32,14400,AT &F &C1 &D2 &K0 &Q6 %C0 \G0 \N0 S46=136",
|
||||
"ZOOM VXP 14.4 v42,14400,AT &F &C1 &D2 &K0 &Q6 %C0 \G0 \N0 S46=136",
|
||||
"Zoomfax VFP v32,14400,AT &F &C1 &D2 &K0 &Q6 %C0 \G0 \N0 S46=136",
|
||||
"ZyXel 14.4,14400,AT &F &C1 &D2 \N0",
|
||||
"ZyXEL U-1496 14.4,14400,AT &F &C1 &D2 S46=0 &K0"
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,6 @@
|
||||
[INFO]
|
||||
NETTYPE="4"
|
||||
MODEMPHONE=""
|
||||
LANGUAGE="English"
|
||||
LANG="1"
|
||||
LNG="INT"
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 766 B |
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -70,6 +70,9 @@ NODEDUP_DIRS = {
|
||||
# MAME's support trees (hash, plugins) are read by path as a whole, and
|
||||
# two MAME versions share most of their software lists byte for byte.
|
||||
"mame",
|
||||
# The Tyrian 2.1 distribution ships netset.pcx and tyrset.pcx with the
|
||||
# same bytes, and EmuELEC places both names under ports/opentyrian/.
|
||||
"opentyrian",
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
"""A platform's coverage does not depend on which data caches are on disk.
|
||||
|
||||
EmuELEC declares 19 files of the Tyrian 2.1 distribution that bios/ did not
|
||||
hold (setup.ini, netterm.int...). They resolved only through data/opentyrian,
|
||||
the cache refresh_data_dirs.py fills from a release asset, so verify gave
|
||||
544/572 in a checkout with that cache and 525/572 in a fresh worktree, for the
|
||||
same commit. A file a platform declares is collected in bios/; a data
|
||||
directory cache is not a collection.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
import sys
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
|
||||
REPO_ROOT = Path(__file__).resolve().parents[1]
|
||||
sys.path.insert(0, str(REPO_ROOT / "scripts"))
|
||||
|
||||
|
||||
class DeclaredFilesResolveWithoutDataCaches(unittest.TestCase):
|
||||
def test_no_platform_entry_rests_on_a_data_directory_cache(self):
|
||||
from common import ( # noqa: PLC0415
|
||||
build_zip_contents_index,
|
||||
list_registered_platforms,
|
||||
load_data_dir_registry,
|
||||
load_database,
|
||||
load_platform_config,
|
||||
)
|
||||
from packresolve import resolve_declaration # noqa: PLC0415
|
||||
|
||||
platforms_dir = REPO_ROOT / "platforms"
|
||||
registry = load_data_dir_registry(str(platforms_dir))
|
||||
caches = [
|
||||
entry["local_cache"] for entry in registry.values()
|
||||
if (REPO_ROOT / entry.get("local_cache", "")).is_dir()
|
||||
]
|
||||
if not caches or not (REPO_ROOT / "database.json").is_file():
|
||||
self.skipTest("no data directory cache on disk (refresh_data_dirs.py fills them)")
|
||||
|
||||
cwd = os.getcwd()
|
||||
os.chdir(REPO_ROOT)
|
||||
try:
|
||||
db = load_database("database.json")
|
||||
zip_contents = build_zip_contents_index(db)
|
||||
offenders = []
|
||||
for platform in list_registered_platforms(str(platforms_dir), include_archived=True):
|
||||
config = load_platform_config(platform, str(platforms_dir))
|
||||
for sys_id, system in config.get("systems", {}).items():
|
||||
for entry in system.get("files", []) or []:
|
||||
path, status = resolve_declaration(
|
||||
entry, db, "bios", zip_contents, registry, None, offline=True,
|
||||
)
|
||||
if status.startswith("data_dir"):
|
||||
offenders.append(f"{platform} {sys_id} {entry.get('name')}: {path}")
|
||||
finally:
|
||||
os.chdir(cwd)
|
||||
self.assertEqual(offenders, [], "\n".join(offenders))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
+1
-1
@@ -677,7 +677,7 @@ python scripts/refresh_stale.py --only platforms,targets --jobs 6
|
||||
| Script | Purpose |
|
||||
|--------|---------|
|
||||
| `common.py` | Shared library: hash computation, file resolution, platform config loading, emulator profiles, target filtering |
|
||||
| `dedup.py` | Deduplicate `bios/` (`--dry-run`, `--bios-dir`): byte-identical copies are deleted and one kept. Identical MAME sets under other names stay one file, named in `_mame_clones.json`. Trees addressed by path are left alone (`NODEDUP_DIRS`): BBK, Bungie, C-Dogs SDL, Ikemen GO, PinMAME, RPG Maker, ScummVM, Softdisk, TheXTech, splitwolf, Theme Hospital, c64-emu, tzdata |
|
||||
| `dedup.py` | Deduplicate `bios/` (`--dry-run`, `--bios-dir`): byte-identical copies are deleted and one kept. Identical MAME sets under other names stay one file, named in `_mame_clones.json`. Trees addressed by path are left alone (`NODEDUP_DIRS`): BBK, Bungie, C-Dogs SDL, Ikemen GO, PinMAME, RPG Maker, ScummVM, Softdisk, TheXTech, splitwolf, Theme Hospital, c64-emu, opentyrian, tzdata |
|
||||
| `identity.py` | One content filed under two identities: groups `bios/` by content and reports a group that crosses manufacturers outside `KNOWN_SHARED` (`--strict` exits 1, pipeline step 3a) |
|
||||
| `slots.py` | Destinations the platform and a core both claim, and how the pack settles each (`--platform`, `--include-archived`, `--target`, `--json`, `--strict`, and pipeline step 3b passes the run's own `--include-archived` and `--target`) |
|
||||
| `region_audit.py` | Confront every profile `region:` with the regions No-Intro names for the same dump (`--json`, `--db`, `--emulators-dir`). An opinion, never an authority: the code decides, and a disagreement is a line to read in the emulator's source |
|
||||
|
||||
Reference in new issue
Block a user