diff --git a/docs/output/tokens.md b/docs/output/tokens.md index 1aed1dfb5..e80c9a27e 100644 --- a/docs/output/tokens.md +++ b/docs/output/tokens.md @@ -78,6 +78,16 @@ You can use some information about the input and output file's name & location: - `{outputName}` the output file's filename without its extension - `{outputExt}` the output file's extension +## Console information + +You can use some information about the console: + +- `{consoleBrand}` the console brand name +- `{consoleName}` the console complete name +- `{consoleAbbrName}` the console abbreviated name + + + ## Specific hardware To help sort ROMs into unique file structures for popular frontends & hardware, `igir` offers a few specific tokens: diff --git a/src/modules/argumentsParser.ts b/src/modules/argumentsParser.ts index cdab0f0fe..05278f8f1 100644 --- a/src/modules/argumentsParser.ts +++ b/src/modules/argumentsParser.ts @@ -939,6 +939,10 @@ Advanced usage: {outputName} The output file's filename without extension {outputExt} The output file's extension + {consoleBrand} The console brand name (e.g. "Nintendo") + {consoleName} The console complete name (e.g. "Game Boy") + {consoleAbbrName} The console abbreviated name (e.g. "gb") + {adam} The ROM's emulator-specific /ROMS/* directory for the 'Adam' image (e.g. "GB") {batocera} The ROM's emulator-specific /roms/* directory for Batocera (e.g. "gb") {es} The ROM's emulator-specific /roms/* directory for the 'EmulationStation' image (e.g. "gb") diff --git a/src/types/gameConsole.ts b/src/types/gameConsole.ts index 51824b45a..5a165e8db 100644 --- a/src/types/gameConsole.ts +++ b/src/types/gameConsole.ts @@ -57,6 +57,12 @@ interface OutputTokens { // TWiLightMenu++ Roms go into the /roms subfolder on the 3DS/DSi SD card // @see https://github.com/DS-Homebrew/TWiLightMenu/tree/master/7zfile/roms twmenu?: string, + + // Console brand, name and abbrevited name + // @see https://wiki.no-intro.org/index.php?title=Systems + consoleBrand: string, + consoleName: string, + consoleAbbrName?: string, } /** @@ -74,14 +80,23 @@ export default class GameConsole { private static readonly CONSOLES: GameConsole[] = [ // Acorn new GameConsole(/Archimedes/i, [], { + consoleBrand: 'Acorn', + consoleName: 'Archimedes', + consoleAbbrName: 'archi', mister: 'ARCHIE', }), new GameConsole(/Atom/i, [], { + consoleBrand: 'Acorn', + consoleName: 'Atom', + consoleAbbrName: 'atom', batocera: 'atom', mister: 'AcornAtom', }), // Amstrad new GameConsole(/CPC/i, [], { + consoleBrand: 'Amstrad', + consoleName: 'CPC', + consoleAbbrName: 'cpc', adam: 'AMSTRAD', batocera: 'amstradcpc', emulationstation: 'amstradcpc', @@ -93,14 +108,23 @@ export default class GameConsole { twmenu: 'cpc', }), new GameConsole(/PCW/i, [/* unknown */], { + consoleBrand: 'Amstrad', + consoleName: 'PCW', + consoleAbbrName: 'pcw', mister: 'AmstradPCW', romm: 'amstrad-pcw', }), // Apple new GameConsole(/Apple.*I/i, [/* unknown */], { + consoleBrand: 'Apple', + consoleName: 'I', + consoleAbbrName: 'i', mister: 'Apple-I', }), new GameConsole(/Apple.*IIe?/i, ['.do', '.nib', '.po'], { + consoleBrand: 'Apple', + consoleName: 'II', + consoleAbbrName: 'a2', batocera: 'apple2', emulationstation: 'apple2', mister: 'Apple-II', @@ -108,12 +132,18 @@ export default class GameConsole { romm: 'appleii', }), new GameConsole(/Apple.*IIGS/i, ['.2mg'], { + consoleBrand: 'apple', + consoleName: 'a2gs', + consoleAbbrName: '2gs', emulationstation: 'apple2gs', retrodeck: 'apple2gs', romm: 'apple-iigs', }), // Arduboy new GameConsole(/Arduboy/i, ['.arduboy', '.hex'], { + consoleBrand: 'Arduboy Inc', + consoleName: 'Arduboy', + consoleAbbrName: 'Arduboy', batocera: 'arduboy', emulationstation: 'arduboy', jelos: 'arduboy', @@ -124,6 +154,9 @@ export default class GameConsole { }), // Atari new GameConsole(/800|8-bit Family/, ['.atr', '.atx'], { + consoleBrand: 'Atari', + consoleName: '8-bit family', + consoleAbbrName: 'a8', batocera: 'atari800', emulationstation: 'atari800', jelos: 'atari800', @@ -133,6 +166,9 @@ export default class GameConsole { romm: 'atari8bit', }), new GameConsole(/2600/, ['.a26', '.act', '.pb', '.tv', '.tvr', '.mn', '.cv', '.eb', '.ef', '.efr', '.ua', '.x07', '.sb'], { + consoleBrand: 'Atari', + consoleName: '2600', + consoleAbbrName: '2600', adam: 'A2600', batocera: 'atari2600', emulationstation: 'atari2600', @@ -146,6 +182,9 @@ export default class GameConsole { twmenu: 'a26', }), new GameConsole(/5200/, ['.a52'], { + consoleBrand: 'Atari', + consoleName: '5200', + consoleAbbrName: '5200', adam: 'A5200', batocera: 'atari5200', emulationstation: 'atari5200', @@ -157,6 +196,9 @@ export default class GameConsole { twmenu: 'a52', }), new GameConsole(/7800/, ['.a78'], { + consoleBrand: 'Atari', + consoleName: '7800', + consoleAbbrName: '7800', adam: 'A7800', batocera: 'atari7800', emulationstation: 'atari7800', @@ -169,6 +211,9 @@ export default class GameConsole { twmenu: 'a78', }), new GameConsole(/Jaguar/i, ['.j64'], { + consoleBrand: 'Atari', + consoleName: 'Jaguar', + consoleAbbrName: 'jaguar', batocera: 'jaguar', emulationstation: 'atarijaguar', jelos: 'atarijaguar', @@ -177,6 +222,9 @@ export default class GameConsole { romm: 'jaguar', }), new GameConsole(/Lynx/i, ['.lnx', '.lyx'], { + consoleBrand: 'Atari', + consoleName: 'Lynx', + consoleAbbrName: 'lynx', adam: 'LYNX', batocera: 'lynx', emulationstation: 'atarilynx', @@ -189,6 +237,9 @@ export default class GameConsole { romm: 'lynx', }), new GameConsole(/Atari.*ST/i, ['.msa', '.st', '.stx'], { + consoleBrand: 'Atari', + consoleName: 'ST', + consoleAbbrName: 'st', batocera: 'atarist', emulationstation: 'atarist', jelos: 'atarist', @@ -199,6 +250,9 @@ export default class GameConsole { }), // Bally new GameConsole(/Astrocade/i, [/* '.bin' */], { + consoleBrand: 'Bally', + consoleName: 'Astrocade', + consoleAbbrName: 'astro', batocera: 'astrocde', emulationstation: 'astrocde', mister: 'Astrocade', @@ -207,12 +261,21 @@ export default class GameConsole { }), // Bandai new GameConsole(/Super ?Vision 8000/i, [/* unknown */], { + consoleBrand: 'Bandai', + consoleName: 'Super Vision 8000', + consoleAbbrName: 'sv8k', mister: 'Supervision8000', }), new GameConsole(/RX[ -]?78/i, [], { + consoleBrand: 'Bandai', + consoleName: 'RX78', + consoleAbbrName: 'rx78', mister: 'RX78', }), new GameConsole(/WonderSwan/i, ['.ws'], { + consoleBrand: 'Bandai', + consoleName: 'WonderSwan', + consoleAbbrName: 'ws', adam: 'WSC', batocera: 'wswan', emulationstation: 'wonderswan', @@ -227,6 +290,9 @@ export default class GameConsole { twmenu: 'ws', }), new GameConsole(/WonderSwan Color/i, ['.wsc'], { + consoleBrand: 'Bandai', + consoleName: 'WonderSwan Color', + consoleAbbrName: 'wsc', adam: 'WSC', batocera: 'wswanc', emulationstation: 'wswanc', @@ -242,6 +308,9 @@ export default class GameConsole { }), // Bit Corporation new GameConsole(/Gamate/i, [/* '.bin' */], { + consoleBrand: 'Bit Corporation', + consoleName: 'Gamate', + consoleAbbrName: 'gamate', batocera: 'gamate', emulationstation: 'gamate', mister: 'Gamate', @@ -252,16 +321,25 @@ export default class GameConsole { // TODO(cemmer): CPS1, CPS2, CPS3 // Casio new GameConsole(/PV[ -]?1000/i, [/* '.bin' */], { + consoleBrand: 'Casio', + consoleName: 'PV-1000', + consoleAbbrName: 'pv1k', batocera: 'pv1000', emulationstation: 'pv1000', mister: 'Casio_PV-1000', retrodeck: 'pv1000', }), new GameConsole(/PV[ -]?2000/i, [/* '.bin' */], { + consoleBrand: 'Casio', + consoleName: 'PV-2000', + consoleAbbrName: 'pv2k', mister: 'Casio_PV-2000', }), // Commodore new GameConsole(/Amiga/i, [], { + consoleBrand: 'Commodore', + consoleName: 'Amiga', + consoleAbbrName: 'amiga', adam: 'AMIGA', emulationstation: 'amiga', jelos: 'amiga', @@ -272,6 +350,9 @@ export default class GameConsole { romm: 'amiga', }), new GameConsole(/Amiga CD32/i, [/* '.bin', '.cue' */], { + consoleBrand: 'Commodore', + consoleName: 'Amiga CD32', + consoleAbbrName: 'amigacd32', adam: 'AMIGA', batocera: 'amigacd32', emulationstation: 'amigacd32', @@ -282,6 +363,9 @@ export default class GameConsole { romm: 'amiga-cd32', }), new GameConsole(/Amiga CDTV/i, [/* '.bin', '.cue' */], { + consoleBrand: 'Commodore', + consoleName: 'Amiga CDTV', + consoleAbbrName: 'cdtv', adam: 'AMIGA', batocera: 'amigacdtv', emulationstation: 'cdtv', @@ -289,11 +373,17 @@ export default class GameConsole { romm: 'commodore-cdtv', }), new GameConsole(/Commodore C?16/i, [/* unknown */], { + consoleBrand: 'Commodore', + consoleName: 'C16', + consoleAbbrName: 'c16', jelos: 'c16', mister: 'C16', romm: 'c16', }), new GameConsole(/Commodore C?64/i, ['.crt', '.d64', '.t64'], { + consoleBrand: 'Commodore', + consoleName: 'C64', + consoleAbbrName: 'c64', adam: 'C64', batocera: 'c64', emulationstation: 'c64', @@ -304,17 +394,26 @@ export default class GameConsole { romm: 'c64', }), new GameConsole(/Commodore C?128/i, [/* unknown */], { + consoleBrand: 'Commodore', + consoleName: 'C128', + consoleAbbrName: 'c128', batocera: 'c128', jelos: 'c128', mister: 'C128', romm: 'c64', }), new GameConsole(/Plus.*4/i, [], { + consoleBrand: 'Commodore', + consoleName: 'Plus-4', + consoleAbbrName: 'plus-4', emulationstation: 'plus4', retrodeck: 'plus4', romm: 'c-plus-4', }), new GameConsole(/VIC[ -]?20/i, [], { + consoleBrand: 'Commodore', + consoleName: 'VIC-20', + consoleAbbrName: 'vic-20', emulationstation: 'vic20', onion: 'VIC20', retrodeck: 'vic20', @@ -322,6 +421,9 @@ export default class GameConsole { }), // Coleco new GameConsole(/ColecoVision/i, ['.col'], { + consoleBrand: 'Coleco', + consoleName: 'ColecoVision', + consoleAbbrName: 'colecov', adam: 'COLECO', batocera: 'colecovision', emulationstation: 'colecovision', @@ -335,6 +437,9 @@ export default class GameConsole { }), // Emerson new GameConsole(/Arcadia/i, [/* '.bin' */], { + consoleBrand: 'Emerson', + consoleName: 'Arcadia', + consoleAbbrName: 'arcadia', batocera: 'arcadia', emulationstation: 'arcadia', mister: 'Arcadia', @@ -343,6 +448,9 @@ export default class GameConsole { }), // Entex new GameConsole(/Adventure Vision/i, [/* '.bin' */], { + consoleBrand: 'Entex', + consoleName: 'Adventure Vision', + consoleAbbrName: 'adv-ision', batocera: 'advision', emulationstation: 'avision', mister: 'AVision', @@ -350,6 +458,9 @@ export default class GameConsole { }), // Epoch new GameConsole(/Super Cassette Vision/i, [], { + consoleBrand: 'Epoch', + consoleName: 'Super Cassette Vision', + consoleAbbrName: 'sc-vision', batocera: 'scv', emulationstation: 'scv', retrodeck: 'scv', @@ -357,6 +468,9 @@ export default class GameConsole { }), // Fairchild new GameConsole(/Channel F/i, ['.chf'], { + consoleBrand: 'Fairchild', + consoleName: 'Channel F', + consoleAbbrName: 'chan-f', batocera: 'channelf', emulationstation: 'channelf', jelos: 'channelf', @@ -368,11 +482,17 @@ export default class GameConsole { }), // Funtech new GameConsole(/Super A'?Can/i, [/* '.bin' */], { + consoleBrand: 'Funtech', + consoleName: 'Super A\'Can', + consoleAbbrName: 's-acan', emulationstation: 'supracan', batocera: 'supracan', }), // GCE new GameConsole(/Vectrex/i, ['.gam', '.vc', '.vec'], { + consoleBrand: 'GCE', + consoleName: 'Vectrex', + consoleAbbrName: 'vectrex', batocera: 'vectrex', emulationstation: 'vectrex', jelos: 'vectrex', @@ -385,17 +505,26 @@ export default class GameConsole { }), // Hartung new GameConsole(/Game Master/i, [/* '.bin' */], { + consoleBrand: 'Hartung', + consoleName: 'Game Master', + consoleAbbrName: 'g-master', emulationstation: 'gmaster', retrodeck: 'gmaster', }), // Interton new GameConsole(/VC ?4000/i, [/* '.bin' */], { + consoleBrand: 'Interton', + consoleName: 'VC 4000', + consoleAbbrName: 'vc4k', batocera: 'vc4000', mister: 'VC4000', romm: 'vc-4000', }), // Magnavox new GameConsole(/Odyssey 2/i, [/* '.bin' */], { + consoleBrand: 'Magnavox', + consoleName: 'Odyssey 2', + consoleAbbrName: 'ody2', batocera: 'o2em', emulationstation: 'odyssey2', jelos: 'odyssey', @@ -407,6 +536,9 @@ export default class GameConsole { }), // Mattel new GameConsole(/Intellivision/i, ['.int'], { + consoleBrand: 'Mattel', + consoleName: 'Intellivision', + consoleAbbrName: 'i-vision', adam: 'INTELLI', batocera: 'intellivision', emulationstation: 'intellivision', @@ -419,6 +551,9 @@ export default class GameConsole { }), // Microsoft new GameConsole(/MSX/i, ['.mx1'], { + consoleBrand: 'Microsoft', + consoleName: 'MSX', + consoleAbbrName: 'msx', adam: 'MSX', batocera: 'msx1', emulationstation: 'msx', @@ -429,6 +564,9 @@ export default class GameConsole { romm: 'msx', }), new GameConsole(/MSX2/i, ['.mx2'], { + consoleBrand: 'Microsoft', + consoleName: 'MSX2', + consoleAbbrName: 'msx2', adam: 'MSX', batocera: 'msx2', emulationstation: 'msx2', @@ -439,6 +577,9 @@ export default class GameConsole { romm: 'msx2', }), new GameConsole(/MSX2+/i, [], { + consoleBrand: 'Microsoft', + consoleName: 'MSX2+', + consoleAbbrName: 'msx2+', adam: 'MSX', batocera: 'msx2+', emulationstation: 'msx2', @@ -448,6 +589,9 @@ export default class GameConsole { romm: 'msx2', }), new GameConsole(/MSX TurboR/i, [], { + consoleBrand: 'Microsoft', + consoleName: 'MSX TurboR', + consoleAbbrName: 'msxturbor', adam: 'MSX', batocera: 'msxturbor', emulationstation: 'msx', @@ -457,6 +601,9 @@ export default class GameConsole { romm: 'msx', }), new GameConsole(/Xbox/i, [/* '.iso' */], { + consoleBrand: 'Microsoft', + consoleName: 'Xbox', + consoleAbbrName: 'xbox', batocera: 'xbox', emulationstation: 'xbox', jelos: 'xbox', @@ -464,30 +611,48 @@ export default class GameConsole { romm: 'xbox', }), new GameConsole(/Xbox 360/i, [/* '.iso' */], { + consoleBrand: 'Microsoft', + consoleName: 'Xbox 360', + consoleAbbrName: 'xbox360', batocera: 'xbox360', emulationstation: 'xbox360', romm: 'xbox360', }), // Mobile new GameConsole(/J2ME/i, ['.jar'], { + consoleBrand: 'Mobile', + consoleName: 'J2ME', + consoleAbbrName: 'j2me', emulationstation: 'j2me', retrodeck: 'j2me', }), new GameConsole(/Palm OS/i, ['.pqa', '.prc'], { + consoleBrand: 'Mobile', + consoleName: 'Palm OS', + consoleAbbrName: 'palm', emulationstation: 'palm', retrodeck: 'palm', romm: 'palm-os', }), new GameConsole(/Symbian/i, ['.sis', '.sisx', '.symbian'], { + consoleBrand: 'Mobile', + consoleName: 'Symbian', + consoleAbbrName: 'symbian', emulationstation: 'symbian', retrodeck: 'symbian', }), // Nichibutsu new GameConsole(/My Vision/i, [/* unknown */], { + consoleBrand: 'Nichibutsu', + consoleName: 'My Vision', + consoleAbbrName: 'm-vis', mister: 'MyVision', }), // NEC new GameConsole(/PC Engine|TurboGrafx/i, ['.pce'], { + consoleBrand: 'NEC', + consoleName: 'PC-Engine TurboGrafx-16', + consoleAbbrName: 'pce', adam: 'PCE', batocera: 'pcengine', emulationstation: 'pcengine', @@ -503,6 +668,9 @@ export default class GameConsole { twmenu: 'tg16', }), new GameConsole(/(PC Engine|TurboGrafx) CD/i, [/* '.bin', '.cue' */], { + consoleBrand: 'NEC', + consoleName: 'PC-Engine TurboGrafx-16 CD', + consoleAbbrName: 'pcecd', adam: 'PCECD', batocera: 'pcenginecd', emulationstation: 'pcenginecd', @@ -516,6 +684,9 @@ export default class GameConsole { romm: 'turbografx-16-slash-pc-engine-cd', }), new GameConsole(/SuperGrafx/i, ['.sgx'], { + consoleBrand: 'NEC', + consoleName: 'PC-Engine SuperGrafx', + consoleAbbrName: 's-grafx', batocera: 'supergrafx', emulationstation: 'supergrafx', jelos: 'sgfx', @@ -526,6 +697,9 @@ export default class GameConsole { romm: 'supergrafx', }), new GameConsole(/PC[ -]?88(01)?/i, ['.d88'], { + consoleBrand: 'NEC', + consoleName: 'PC-88', + consoleAbbrName: 'pc88', batocera: 'pc88', emulationstation: 'pc88', jelos: 'pc88', @@ -535,6 +709,9 @@ export default class GameConsole { romm: 'pc-8800-series', }), new GameConsole(/PC-98/i, ['.d98'], { + consoleBrand: 'NEC', + consoleName: 'PC-98', + consoleAbbrName: 'pc98', batocera: 'pc98', emulationstation: 'pc98', jelos: 'pc98', @@ -543,6 +720,9 @@ export default class GameConsole { romm: 'pc-9800-series', }), new GameConsole(/PC-FX/i, [], { + consoleBrand: 'NEC', + consoleName: 'PC-FX', + consoleAbbrName: 'pcfx', emulationstation: 'pcfx', onion: 'PCFX', retrodeck: 'pcfx', @@ -550,12 +730,18 @@ export default class GameConsole { }), // nesbox new GameConsole(/TIC-80/i, ['.tic'], { + consoleBrand: 'Nesbox', + consoleName: 'TIC-80', + consoleAbbrName: 'tic80', adam: 'TIC80', emulationstation: 'tic80', retrodeck: 'tic80', }), // Nintendo new GameConsole(/FDS|(Famicom|Family) Computer Disk System/i, ['.fds'], { + consoleBrand: 'Nintendo', + consoleName: 'Famicom Disk System', + consoleAbbrName: 'fds', adam: 'FDS', batocera: 'fds', emulationstation: 'fds', @@ -570,6 +756,9 @@ export default class GameConsole { romm: 'fds', }), new GameConsole(/Game (and|&) Watch/i, ['.mgw'], { + consoleBrand: 'Nintendo', + consoleName: 'Game and Watch', + consoleAbbrName: 'g-watch', adam: 'GW', batocera: 'gameandwatch', emulationstation: 'gameandwatch', @@ -580,6 +769,9 @@ export default class GameConsole { romm: 'game-and-watch', }), new GameConsole(/GameCube/i, ['.gcm', '.gcz'], { + consoleBrand: 'Nintendo', + consoleName: 'Nintendo GameCube', + consoleAbbrName: 'ngc', batocera: 'gc', emulationstation: 'gc', jelos: 'gamecube', @@ -587,6 +779,9 @@ export default class GameConsole { romm: 'ngc', }), new GameConsole(/GB|Game ?Boy/i, ['.gb', '.sgb'], { + consoleBrand: 'Nintendo', + consoleName: 'Game Boy', + consoleAbbrName: 'gb', adam: 'GB', batocera: 'gb', emulationstation: 'gb', @@ -602,6 +797,9 @@ export default class GameConsole { twmenu: 'gb', }), new GameConsole(/GBA|Game ?Boy Advance/i, ['.gba'], { + consoleBrand: 'Nintendo', + consoleName: 'Game Boy Advance', + consoleAbbrName: 'gba', adam: 'GBA', batocera: 'gba', emulationstation: 'gba', @@ -617,6 +815,9 @@ export default class GameConsole { twmenu: 'gba', }), new GameConsole(/GBC|Game ?Boy Color/i, ['.gbc'], { + consoleBrand: 'Nintendo', + consoleName: 'Game Boy Color', + consoleAbbrName: 'gbc', adam: 'GBC', batocera: 'gbc', emulationstation: 'gbc', @@ -632,6 +833,9 @@ export default class GameConsole { twmenu: 'gb', }), new GameConsole(/Nintendo 64|N64/i, ['.d64', '.n64', '.v64', '.z64'], { + consoleBrand: 'Nintendo', + consoleName: 'Nintendo 64', + consoleAbbrName: 'n64', batocera: 'n64', emulationstation: 'n64', jelos: 'n64', @@ -640,6 +844,9 @@ export default class GameConsole { romm: 'n64', }), new GameConsole(/Nintendo 64DD|N64DD/i, ['.ndd'], { + consoleBrand: 'Nintendo', + consoleName: 'Nintendo 64DD', + consoleAbbrName: 'n64dd', batocera: 'n64dd', emulationstation: 'n64dd', retrodeck: 'n64dd', @@ -647,12 +854,18 @@ export default class GameConsole { }), new GameConsole(/(\W|^)3DS(\W|$)|Nintendo 3DS/i, ['.3ds', '.3dsx'], { batocera: '3ds', + consoleBrand: 'Nintendo', + consoleName: 'Nintendo 3DS', + consoleAbbrName: '3ds', emulationstation: 'n3ds', jelos: '3ds', retrodeck: 'n3ds', romm: '3ds', }), new GameConsole(/(\W|^)NDS(\W|$)|Nintendo DS/i, ['.nds'], { + consoleBrand: 'Nintendo', + consoleName: 'Nintendo DS', + consoleAbbrName: 'nds', batocera: 'nds', emulationstation: 'nds', jelos: 'nds', @@ -662,12 +875,18 @@ export default class GameConsole { twmenu: 'nds', }), new GameConsole(/(\W|^)NDSi(\W|$)|Nintendo DSi([Ww]are)?/i, ['.dsi'], { + consoleBrand: 'Nintendo', + consoleName: 'Nintendo DSi', + consoleAbbrName: 'nds', emulationstation: 'nds', retrodeck: 'nds', romm: 'nintendo-dsi', twmenu: 'dsiware', }), // try to map DSiWare new GameConsole(/(\W|^)NES(\W|$)|Famicom|Nintendo Entertainment System/i, ['.fc', '.nes', '.nez'], { + consoleBrand: 'Nintendo', + consoleName: 'Nintendo Entertainment System', + consoleAbbrName: 'nes', adam: 'FC', batocera: 'nes', emulationstation: 'nes', @@ -683,6 +902,9 @@ export default class GameConsole { twmenu: 'nes', }), new GameConsole(/Pokemon Mini/i, ['.min'], { + consoleBrand: 'Nintendo', + consoleName: 'Pokemon Mini', + consoleAbbrName: 'p-mini', adam: 'POKEMINI', batocera: 'pokemini', emulationstation: 'pokemini', @@ -697,6 +919,9 @@ export default class GameConsole { romm: 'pokemon-mini', }), new GameConsole(/Satellaview/i, ['.bs'], { + consoleBrand: 'Nintendo', + consoleName: 'Satellaview', + consoleAbbrName: 'satella', batocera: 'satellaview', emulationstation: 'satellaview', jelos: 'satellaview', @@ -707,6 +932,9 @@ export default class GameConsole { romm: 'satellaview', }), new GameConsole(/Sufami/i, [], { + consoleBrand: 'Nintendo', + consoleName: 'Sufami', + consoleAbbrName: 'sufami', batocera: 'sufami', emulationstation: 'sufami', jelos: 'sufami', @@ -714,6 +942,9 @@ export default class GameConsole { retrodeck: 'sufami', }), new GameConsole(/(\W|^)SNES(\W|$)|Super (Nintendo Entertainment System|Famicom)/i, ['.fig', '.sfc', '.smc', '.snes'], { + consoleBrand: 'Nintendo', + consoleName: 'Super Nintendo Entertainment System', + consoleAbbrName: 'snes', adam: 'SFC', batocera: 'snes', emulationstation: 'snes', @@ -729,11 +960,17 @@ export default class GameConsole { twmenu: 'snes', }), new GameConsole(/Switch/i, ['.nca', '.nro', '.nso', '.nsp', '.xci'], { + consoleBrand: 'Nintendo', + consoleName: 'Switch', + consoleAbbrName: 'nsw', emulationstation: 'switch', retrodeck: 'switch', romm: 'switch', }), new GameConsole(/Virtual Boy/i, ['.vb', '.vboy'], { + consoleBrand: 'Nintendo', + consoleName: 'Virtual Boy', + consoleAbbrName: 'vboy', adam: 'VB', batocera: 'virtualboy', emulationstation: 'virtualboy', @@ -745,6 +982,9 @@ export default class GameConsole { romm: 'virtualboy', }), new GameConsole(/Wii/i, [/* '.iso' */], { + consoleBrand: 'Nintendo', + consoleName: 'Wii', + consoleAbbrName: 'wii', batocera: 'wii', emulationstation: 'wii', jelos: 'wii', @@ -752,6 +992,9 @@ export default class GameConsole { romm: 'wii', }), new GameConsole(/Wii ?U/i, ['.rpx', '.wua', '.wud', '.wux'], { + consoleBrand: 'Nintendo', + consoleName: 'Wii U', + consoleAbbrName: 'wiiu', batocera: 'wiiu', emulationstation: 'wiiu', jelos: 'wiiu', @@ -760,6 +1003,9 @@ export default class GameConsole { }), // Panasonic new GameConsole(/3DO/i, [/* '.bin', '.cue' */], { + consoleBrand: 'Panasonic', + consoleName: '3DO', + consoleAbbrName: '3do', batocera: '3do', emulationstation: '3do', jelos: '3do', @@ -769,11 +1015,17 @@ export default class GameConsole { }), // Philips new GameConsole(/CD[ -]?i/i, [/* '.bin', '.cue' */], { + consoleBrand: 'Philips', + consoleName: 'CD-i', + consoleAbbrName: 'cdi', batocera: 'cdi', emulationstation: 'cdimono1', retrodeck: 'cdimono1', }), new GameConsole(/Videopac/i, [/* '.bin' */], { + consoleBrand: 'Philips', + consoleName: 'Videopac+', + consoleAbbrName: 'videopac', batocera: 'videopacplus', emulationstation: 'videopac', jelos: 'videopac', @@ -784,10 +1036,16 @@ export default class GameConsole { }), // RCA new GameConsole(/Studio (2|II)/i, [/* '.bin' */], { + consoleBrand: 'RCA', + consoleName: 'Studio II', + consoleAbbrName: 'studio2', pocket: 'studio2', }), // Sega new GameConsole(/32X/i, ['.32x'], { + consoleBrand: 'Sega', + consoleName: '32X', + consoleAbbrName: '32x', adam: '32X', batocera: 'sega32x', emulationstation: 'sega32x', @@ -799,6 +1057,9 @@ export default class GameConsole { romm: 'sega32', }), new GameConsole(/Dreamcast/i, [/* '.bin', '.cue' */], { + consoleBrand: 'Sega', + consoleName: 'Dreamcast', + consoleAbbrName: 'dream', batocera: 'dreamcast', emulationstation: 'dreamcast', jelos: 'dreamcast', @@ -806,6 +1067,9 @@ export default class GameConsole { romm: 'dc', }), new GameConsole(/Game Gear/i, ['.gg'], { + consoleBrand: 'Sega', + consoleName: 'Game Gear', + consoleAbbrName: 'gg', adam: 'GG', batocera: 'gamegear', emulationstation: 'gamegear', @@ -821,6 +1085,9 @@ export default class GameConsole { twmenu: 'gg', }), new GameConsole(/Master System/i, ['.sms'], { + consoleBrand: 'Sega', + consoleName: 'Master System - Mark III', + consoleAbbrName: 'sms', adam: 'SMS', batocera: 'mastersystem', emulationstation: 'mastersystem', @@ -836,6 +1103,9 @@ export default class GameConsole { twmenu: 'sms', }), new GameConsole(/(Mega|Sega) CD/i, [/* '.bin', '.cue' */], { + consoleBrand: 'Sega', + consoleName: 'Sega CD - Mega CD', + consoleAbbrName: 'segacd', adam: 'SEGACD', batocera: 'segacd', emulationstation: 'segacd', @@ -848,6 +1118,9 @@ export default class GameConsole { romm: 'segacd', }), new GameConsole(/Mega Drive|Genesis/i, ['.gen', '.md', '.mdx', '.sgd', '.smd'], { + consoleBrand: 'Sega', + consoleName: 'Mega Drive - Genesis', + consoleAbbrName: 'smd', adam: 'MD', batocera: 'megadrive', emulationstation: 'megadrive', @@ -863,6 +1136,9 @@ export default class GameConsole { twmenu: 'gen', }), new GameConsole(/Saturn/i, [/* '.bin', '.cue' */], { + consoleBrand: 'Sega', + consoleName: 'Saturn', + consoleAbbrName: 'sat', batocera: 'saturn', emulationstation: 'saturn', jelos: 'saturn', @@ -870,6 +1146,9 @@ export default class GameConsole { romm: 'saturn', }), new GameConsole(/SG[ -]?1000/i, ['.sc', '.sg'], { + consoleBrand: 'Sega', + consoleName: 'SG-1000', + consoleAbbrName: 'sg1k', adam: 'SG1000', batocera: 'sg1000', emulationstation: 'sg-1000', @@ -883,10 +1162,16 @@ export default class GameConsole { }), // Sharp new GameConsole(/MZ/i, [], { + consoleBrand: 'Sharp', + consoleName: 'MZ', + consoleAbbrName: 'mz', mister: 'SharpMZ', romm: 'sharp-mz-2200', }), new GameConsole(/X1/i, ['.2d', '.2hd', '.dx1', '.tfd'], { + consoleBrand: 'Sharp', + consoleName: 'X1', + consoleAbbrName: 'x1', batocera: 'x1', emulationstation: 'x1', jelos: 'x1', @@ -895,6 +1180,9 @@ export default class GameConsole { romm: 'x1', }), new GameConsole(/X68000/i, [], { + consoleBrand: 'Sharp', + consoleName: 'X68000', + consoleAbbrName: 'x68k', batocera: 'x68000', emulationstation: 'x68000', jelos: 'x68000', @@ -905,6 +1193,9 @@ export default class GameConsole { }), // Sinclair new GameConsole(/ZX[ -]?80/i, [], { + consoleBrand: 'Sinclair', + consoleName: 'ZX80', + consoleAbbrName: 'zx80', emulationstation: 'zx81', mister: 'ZX81', onion: 'ZXEIGHTYONE', @@ -912,6 +1203,9 @@ export default class GameConsole { romm: 'sinclair-zx81', }), new GameConsole(/ZX[ -]?81/i, [], { + consoleBrand: 'Sinclair', + consoleName: 'ZX81', + consoleAbbrName: 'zx81', batocera: 'zx81', emulationstation: 'zx81', jelos: 'zx81', @@ -920,6 +1214,9 @@ export default class GameConsole { romm: 'sinclair-zx81', }), new GameConsole(/ZX[ -]?Spectrum/i, ['.scl', '.szx', '.z80'], { + consoleBrand: 'Sinclair', + consoleName: 'ZX Spectrum', + consoleAbbrName: 'zxs', adam: 'ZX', batocera: 'zxspectrum', emulationstation: 'zxspectrum', @@ -931,6 +1228,9 @@ export default class GameConsole { }), // SNK new GameConsole(/Neo ?Geo/i, [], { + consoleBrand: 'SNK', + consoleName: 'Neo Geo', + consoleAbbrName: 'ng', adam: 'NEOGEO', batocera: 'neogeo', emulationstation: 'neogeo', @@ -943,6 +1243,9 @@ export default class GameConsole { romm: 'neogeomvs', }), new GameConsole(/Neo ?Geo CD/i, [/* '.bin', '.cue' */], { + consoleBrand: 'SNK', + consoleName: 'Neo Geo CD', + consoleAbbrName: 'ngcd', batocera: 'neogeocd', emulationstation: 'neogeocd', jelos: 'neocd', @@ -951,6 +1254,9 @@ export default class GameConsole { romm: 'neo-geo-cd', }), new GameConsole(/Neo ?Geo Pocket/i, ['.ngp'], { + consoleBrand: 'SNK', + consoleName: 'Neo Geo Pocket', + consoleAbbrName: 'ngp', adam: 'NGP', batocera: 'ngp', emulationstation: 'ngp', @@ -963,6 +1269,9 @@ export default class GameConsole { twmenu: 'ngp', }), new GameConsole(/Neo ?Geo Pocket Color/i, ['.ngc', '.ngpc', '.npc'], { + consoleBrand: 'SNK', + consoleName: 'Neo Geo Pocket Color', + consoleAbbrName: 'ngpc', adam: 'NGP', batocera: 'ngpc', emulationstation: 'ngpc', @@ -976,6 +1285,9 @@ export default class GameConsole { }), // Sony new GameConsole(/PlayStation|psx/i, ['.minipsf', '.pbp', '.psexe', '.psf'], { + consoleBrand: 'Sony', + consoleName: 'PlayStation', + consoleAbbrName: 'psx', adam: 'PS', batocera: 'psx', emulationstation: 'psx', @@ -989,6 +1301,9 @@ export default class GameConsole { romm: 'ps', }), new GameConsole(/PlayStation 2|ps2/i, [/* '.bin', '.cue' */], { + consoleBrand: 'Sony', + consoleName: 'PlayStation 2', + consoleAbbrName: 'ps2', batocera: 'ps2', emulationstation: 'ps2', jelos: 'ps2', @@ -996,6 +1311,9 @@ export default class GameConsole { romm: 'ps2', }), new GameConsole(/PlayStation 3|ps3/i, ['.ps3', '.ps3dir'], { + consoleBrand: 'Sony', + consoleName: 'PlayStation 3', + consoleAbbrName: 'ps3', batocera: 'ps3', emulationstation: 'ps3', jelos: 'ps3', @@ -1003,6 +1321,9 @@ export default class GameConsole { romm: 'ps3', }), new GameConsole(/PlayStation ?Portable|psp/i, ['.cso'], { + consoleBrand: 'Sony', + consoleName: 'PlayStation Portable', + consoleAbbrName: 'psp', batocera: 'psp', emulationstation: 'psp', jelos: 'psp', @@ -1010,6 +1331,9 @@ export default class GameConsole { romm: 'psp', }), new GameConsole(/PlayStation ?Vita|psvita/i, ['.psvita'], { + consoleBrand: 'Sony', + consoleName: 'Playstation Vita', + consoleAbbrName: 'vita', batocera: 'psvita', emulationstation: 'psvita', retrodeck: 'psvita', @@ -1022,6 +1346,9 @@ export default class GameConsole { }), // Texas Instruments new GameConsole(/TI[ -]?99[ -]?4A/i, ['.rpk'], { + consoleBrand: 'Texas Instruments', + consoleName: 'TI-99-4A', + consoleAbbrName: 'ti99', emulationstation: 'ti99', mister: 'TI-99_4A', retrodeck: 'ti99', @@ -1029,16 +1356,25 @@ export default class GameConsole { }), // Tiger new GameConsole(/Game.?com/i, ['.tgc'], { + consoleBrand: 'Tiger', + consoleName: 'Game.com', + consoleAbbrName: 'gamecom', emulationstation: 'gamecom', retrodeck: 'gamecom', romm: 'game-dot-com', }), // Timetop new GameConsole(/GameKing/i, [/* '.bin' */], { + consoleBrand: 'Timetop', + consoleName: 'GameKing', + consoleAbbrName: 'gameking', pocket: 'game_king', }), // VTech new GameConsole(/CreatiVision/i, [/* '.rom' */], { + consoleBrand: 'VTech', + consoleName: 'CreatiVision', + consoleAbbrName: 'c-vision', batocera: 'crvision', emulationstation: 'crvision', mister: 'CreatiVision', @@ -1046,6 +1382,9 @@ export default class GameConsole { retrodeck: 'crvision', }), new GameConsole(/V\.Smile/i, [/* '.bin' */], { + consoleBrand: 'VTech', + consoleName: 'V.Smile', + consoleAbbrName: 'v-smile', batocera: 'vsmile', emulationstation: 'vsmile', retrodeck: 'vsmile', @@ -1053,6 +1392,9 @@ export default class GameConsole { }), // Watara new GameConsole(/Supervision/i, ['.sv'], { + consoleBrand: 'Watara', + consoleName: 'Supervision', + consoleAbbrName: 's-vision', adam: 'SUPERVISION', batocera: 'supervision', emulationstation: 'supervision', @@ -1065,6 +1407,9 @@ export default class GameConsole { }), // Wellback new GameConsole(/Mega Duck/i, ['.md1', '.md2'], { + consoleBrand: 'Wellback', + consoleName: 'Mega Duck', + consoleAbbrName: 'duck', batocera: 'megaduck', emulationstation: 'megaduck', jelos: 'megaduck',