UNPKG

igir

Version:

🕹 A zero-setup ROM collection manager that sorts, filters, extracts or archives, patches, and reports on collections of any size on any OS.

249 lines (248 loc) • 7.48 kB
import 'reflect-metadata'; import Disk from './disk.js'; import DeviceRef from './mame/deviceRef.js'; import Release from './release.js'; import ROM from './rom.js'; declare const GameType: { readonly AFTERMARKET: "Aftermarket"; readonly ALPHA: "Alpha"; readonly BAD: "Bad"; readonly BETA: "Beta"; readonly BIOS: "BIOS"; readonly CRACKED: "Cracked"; readonly DEBUG: "Debug"; readonly DEMO: "Demo"; readonly DEVICE: "Device"; readonly FIXED: "Fixed"; readonly HACKED: "Hacked"; readonly HOMEBREW: "Homebrew"; readonly OVERDUMP: "Overdump"; readonly PENDING_DUMP: "Pending Dump"; readonly PIRATED: "Pirated"; readonly PROGRAM: "Program"; readonly PROTOTYPE: "Prototype"; readonly RETAIL: "Retail"; readonly SAMPLE: "Sample"; readonly TRAINED: "Trained"; readonly TRANSLATED: "Translated"; readonly UNLICENSED: "Unlicensed"; }; type GameTypeValue = (typeof GameType)[keyof typeof GameType]; /** * "There are two 'semi-optional' fields that can be included for each game; * 'year' and 'manufacturer'. However, CMPro displays the manufacturer in the * scanner window so it isn't really optional! For the sake of completeness I * would recommend you include year and manufacturer." * * "There are two fields that relate to the merging of ROMs; 'cloneof' and * 'romof'. In MAME the 'cloneof' field represents a notional link between * the two games and the 'romof' field represents that the ROMs themselves * can be shared. CMPro actually ignores the 'romof' field and uses the * 'cloneof' value to determine how the ROMs can be shared. However, you should * use the MAME meanings of 'cloneof and 'romof' both for the sake of clarity * and to allow faultless conversions between CMPro and RomCenter formats. * If you don't use these fields correctly then you cannot guarantee that your * data file will work as expected in CMPro and RomCenter for all three merge * types." * @see http://www.logiqx.com/DatFAQs/CMPro.php */ export interface GameProps { readonly name?: string; readonly isBios?: 'yes' | 'no'; readonly cloneOf?: string; readonly romOf?: string; readonly release?: Release | Release[]; readonly roms?: ROM | ROM[]; readonly disks?: Disk | Disk[]; readonly categories?: string | string[]; readonly description?: string; readonly id?: string; readonly cloneOfId?: string; readonly isDevice?: 'yes' | 'no'; readonly manufacturer?: string; readonly deviceRef?: DeviceRef | DeviceRef[]; readonly genre?: string; } /** * A logical "game" that contains zero or more {@link ROM}s, and has zero or more region * {@link Release}s. */ export default class Game implements GameProps { readonly name: string; readonly isBios: 'yes' | 'no'; readonly cloneOf?: string; readonly romOf?: string; readonly release: Release | Release[]; readonly roms: ROM | ROM[]; readonly disks: Disk | Disk[]; readonly categories: string | string[]; readonly description?: string; readonly id?: string; readonly cloneOfId?: string; readonly isDevice: 'yes' | 'no'; readonly manufacturer?: string; readonly deviceRef: DeviceRef | DeviceRef[]; readonly genre?: string; constructor(props?: GameProps); /** * Create an XML object, to be used by the owning {@link DAT}. */ toXmlDatObj(parentNames: Set<string>): object; getName(): string; getCategories(): string[]; /** * Is this game a collection of BIOS file(s). */ getIsBios(): boolean; /** * Is this game a MAME "device"? */ getIsDevice(): boolean; getDeviceRefs(): DeviceRef[]; getGenre(): string | undefined; private getReleases; getRoms(): ROM[]; getDisks(): Disk[]; getCloneOf(): string | undefined; getRomOf(): string | undefined; getId(): string | undefined; getCloneOfId(): string | undefined; getRevision(): number; /** * Is this game aftermarket (released after the last known console release)? */ isAftermarket(): boolean; /** * Is this game an alpha pre-release? */ isAlpha(): boolean; /** * Is this game an alternate release? */ isAlternate(): boolean; /** * Is this game a "bad" dump? */ isBad(): boolean; /** * Is this game a beta pre-release? */ isBeta(): boolean; /** * Is this game an unlicensed bootleg? */ isBootleg(): boolean; /** * Is this game a "cracked" release (has copy protection removed)? */ isCracked(): boolean; /** * Does this game contain debug symbols? */ isDebug(): boolean; static readonly DEMO_REGEX: RegExp; /** * Is this game a demo? */ isDemo(): boolean; /** * Is this game an enhancement chip? Primarily for SNES */ isEnhancementChip(): boolean; /** * Is this game "fixed" (altered to run better in emulation)? */ isFixed(): boolean; /** * Is this game community homebrew? */ isHomebrew(): boolean; /** * Is this game MIA (has not been dumped yet)? * * NOTE(cemmer): RomVault indicates that some DATs include <rom mia="yes"/>, but I did not find * any evidence of this in No-Intro, Redump, TOSEC, and FinalBurn Neo. * https://wiki.romvault.com/doku.php?id=mia_rom_tracking#can_i_manually_flag_roms_as_mia */ isMIA(): boolean; /** * Is this game an overdump (contains excess data)? */ isOverdump(): boolean; /** * Is this game a pending dump (works, but isn't a proper dump)? */ isPendingDump(): boolean; /** * Is this game pirated (probably has copyright information removed)? */ isPirated(): boolean; /** * Is this game a "program" application? */ isProgram(): boolean; /** * Is this game a prototype? */ isPrototype(): boolean; /** * Is this game a sample? */ isSample(): boolean; /** * Is this game translated by the community? */ isTranslated(): boolean; /** * Is this game unlicensed (but was still physically produced and sold)? */ isUnlicensed(): boolean; /** * Is this game an explicitly verified dump? */ isVerified(): boolean; /** * Was this game altered to work on a Bung cartridge? * @see https://en.wikipedia.org/wiki/Bung_Enterprises */ hasBungFix(): boolean; /** * Does this game have a hack? */ hasHack(): boolean; /** * Does this game have a trainer? */ hasTrainer(): boolean; /** * Is this game "retail"? */ isRetail(): boolean; getGameType(): GameTypeValue; /** * Is this game a parent (is not a clone)? */ isParent(): boolean; /** * Is this game a clone? */ isClone(): boolean; getRegions(): string[]; getLanguages(): string[]; private getTwoLetterLanguagesFromName; private getThreeLetterLanguagesFromName; private getLanguagesFromRegions; /** * Return a new copy of this {@link Game} with some different properties. */ withProps(props: GameProps): Game; /** * A string hash code to uniquely identify this {@link Game}. */ hashCode(): string; /** * Is this {@link Game} equal to another {@link Game}? */ equals(other: Game): boolean; } export {};