libretrodb

A small reader for RetroArch databases

Usage no npm install needed!

<script type="module">
  import libretrodb from 'https://cdn.skypack.dev/libretrodb';
</script>

README

libretrodb

A small tool to read retroarch databases.

Download the rdb files and read them using this library.

This JS / TS library is a port from libretro-db based on the rarchdb code.

Installation

npm install --save libretrodb

or

yarn add libretrodb

Usage

import { Libretrodb } from 'libretrodb';
const db = await Libretrodb.from('file.rdb');

// get all database entries
const entries = db.getEntries();

// or seeach for a hash (crc, md5 or sha1)
const entry = db.searchHash('f25b77795db4204d282453184aa6c8363bd07c42');
console.log(entry);
{
  name: '007 Multispy (ZX-Guaranteed)',
  description: '007 Multispy (ZX-Guaranteed)',
  rom_name: '007 Multispy (1987)(ZX-Guaranteed).opd',
  size: 184320,
  crc: '017fa7e9',
  md5: '4c8249a291081522702f81e80f6dd333',
  sha1: 'f25b77795db4204d282453184aa6c8363bd07c42'
}

API

Libretrodb.from(path: string, options?: Options)

Load a database file.

  • path string path of the database file
  • options object
    • bufferToString boolean Convert binary buffers to hex strings (optional, default true)
    • indexHashes boolean Index crc, md5 and sha1 in order to search them using searchHash (optional, default true)

getEntries()

Returns the entries read.

searchHash(hex: string)

Returns the entry matching with the hash (as hex string).

Entry Results

The entries are records without any property short list. The TypeScript Entry definition is based on a full scan of the whole rdb file list.

export type Entry<BinType extends Buffer |string> = {
  name?: string;
  description?: string;
  rom_name?: string;
  size?: number;
  crc?: BinType;
  md5?: BinType;
  sha1?: BinType;
  serial?: BinType;
  genre?: string;
  franchise?: string;
  releasemonth?: number;
  releaseyear?: number;
  developer?: string;
  publisher?: string;
  users?: number;
  edge_rating?: number;
  edge_issue?: number;
  esrb_rating?: string;
  origin?: string;
  rumble?: number;
  edge_review?: string;
  famitsu_rating?: number;
  enhancement_hw?: string;
  elspa_rating?: string;
  analog?: number;
}

License

This project is licensed under the MIT License.