Full-database audit — findings, verification method, and fix branches
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
Línea de trabajo
Empieza leyendo los informes de auditoría enlazados y las secciones metadat/ y cht/; después, acuerda con los maintainers una única rama centrada en un solo tema. Se considera terminado cuando se haya enviado como PR independiente un fix de alcance reducido y verificado de forma independiente; la evaluación más amplia y las decisiones sobre la ortografía siguen sin resolverse.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
I ran a full audit of this repo: all of metadat/ (660 dats, ~727k game blocks) and cht/ (28,301 files, 44 systems). Everything below is condensed — the full reports, per-class verification verdicts and the scanning scripts are at https://github.com/ArjunKdaf/lrdb-audit (MIT — take anything useful). Posting this before I start sending fixes, so the volume doesn't come as a surprise and you can tell me where to start.
Method. Fresh clone of master (6fd53f9). Every dat parsed with a quote-aware clrmamepro parser — naive paren-counting silently corrupts on titles like Odekake Lester - Lelele no Le (^^; (Japan), worth knowing for any tooling on your side. Metadata checked against the union of no-intro/redump/tosec per platform. Cheat suspects were verified against the parsers of the cores that consume the files (Genesis Plus GX, PicoDrive, Gearsystem, Beetle PSX, PCSX-ReARMed, SwanStation, RetroArch's cheat_manager), cited to file and line at pinned commits, plus published code lists, Datel docs and this repo's git history — nothing is reported from pattern-matching alone. I used AI agents (Claude) for the legwork, same setup as my earlier PRs here; it's faster than doing it by hand and I have API budget to spare this month.
Wrong metadata — 10,191 orphaned CRCs, 4,423 stale titles, 1,140 duplicate CRCs database-wide:
- ~7,800 of the orphans are already fixed on my fork: machine-verified resyncs of N64, NES, Mega Drive, GBA, SNES, GB, SMS, GBC, Game Gear and NDS, same method as #1691. Held back deliberately — they'll come as single-platform PRs at whatever pace works for review.
- Cheapest remaining win: Sega 32X — 840 stale titles, 0 dead CRCs, a pure rename pass. Then Famicom Disk System, PC Engine, Jaguar, SG-1000 (700–1,200 findings each).
- ~4,200 blocks are orphaned by filename alone: N64 "(ByteSwapped)"/"(BigEndian)" esrb/franchise files, "Magnavox - Odyssey 2"/"Microsoft - MSX 2" space variants coexisting with canonical spellings.
- Small mechanical fixes: one corrupt dat (lost-level-archive Arduboy — a doubled quote, 6 of 29 games unparseable, one-character fix), 4 invalid hashes, 180 dats missing the final trailing newline, 1,202 byte-identical duplicate blocks, ~230 name fields with invisible NBSP/trailing-whitespace.
- One gap in my own open PR: #1691 doesn't cover NGPC releasemonth and serial (89 findings). Fold into the branch or follow-up — your call.
Missing metadata:
- PS1/PS2/PSP: ~33k metadata blocks are serial-keyed with no crc fields, so none of it joins into the RDBs — this is why PSP shows zero metadata despite 7 populated dats. A serial→crc backfill (or serial-aware join in the build tooling) lights up three platforms at once.
- 69 of 122 platforms have no metadata dats at all. Flagging the scale only — that's authoring work, not fixing.
Cheats — 1,462 confirmed defects, every class verified against core source:
- Actively harmful, worth fixing first: 2 Ristar codes under Game Gear that Gearsystem misroutes into unvalidated emulated-RAM writes, plus 3 misfiled Genesis codes whose correct copies already exist in the Genesis file.
- 848 PSX "Game Buster" codes fragmented into 4-char
+-pieces — dead in all three PSX cores. Mechanical re-join into canonical 8+4 form verified safe for all 848. - 924 Game Gear Game Genie codes with
+where cores require-— dead in GPGX/PicoDrive. The codes themselves are genuine; fix is mechanical. - 179 individually bad codes (letter-O-for-zero batches, illegal Game Genie letters, float-mangled values like
8095000000.00, prose in code fields), plus 89 N64 codes hit by one systematic value/address rotation bug — reconstruction verified line-by-line against gamehacking.org. - Systemic: all 752 fMSX files share one conversion bug (conflicting duplicate key); 3 files are wholly Mednafen-format so RetroArch loads zero cheats from them; 406 unparseable lines; 59 files declare wrong cheat counts.
- ~30,600 blank-code entries trace to the Feb 2020 bulk import (7cd0d683 and siblings — #994 already noted the gamehacking.org translator left entries blank). Restorable from the source. The separate 24k desc-only NDS entries are intentional folder headers, untouched.
- Deliberately not touched: 2 odd-looking but legitimate published XplorerPro codes, 8 codes unverifiable against any source, and 1 defect that exists verbatim at its published source (upstream of this repo).
Your call before anyone writes a branch: the retired KA ESRB rating on 1,322 entries (keep as historical or migrate?); 264 developer/publisher spelling clusters (Koei/KOEI at 254-vs-79 is the largest — normalize or leave?).
Core-side note: smsplus-gx has an empty retro_cheat_set — cheats never apply in that core regardless of data quality. Filing that upstream separately.
Plan. Single-topic fix branches, one PR at a time, at your review pace. If you'd rather I start somewhere specific, say so.
- Lenguaje dominante
- Python
- Estrellas
- 1.5k
- Forks
- 889
- Merge medio
- 2 d 10 h
- PR fusionados (30 d)
- 24
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de libretro/libretro-database
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
libretro/libretro-database#1667 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
libretro/libretro-database#1658 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 30/100
libretro/libretro-database#1741 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
libretro/libretro-database#1688 · 4 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 55/100
libretro/libretro-database#1685 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de libretro/libretro-database
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
django-cms/djangocms-frontend#413 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
NanmiCoder/MediaCrawler#1004 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
facebookresearch/xformers#1417 ·
-
question
Dificultad 1/5 Menos de una hora Aptitud para principiantes 68/100
vllm-project/vime#524 ·
Los mantenedores suelen responder en 7 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 73/100
FinanceFlash/unvibecode#675 ·
Los mantenedores suelen responder en 1 día