emoemu 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.local.json +77 -0
- package/.node-version +1 -0
- package/CLAUDE.md +435 -0
- package/README.md +404 -0
- package/TODO.md +655 -0
- package/dist/index.cjs +25108 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +25085 -0
- package/docs/building-libretro-cores-arm-mac.md +237 -0
- package/docs/config-file-format.md +488 -0
- package/docs/cores-trd.md +425 -0
- package/docs/headless-hardware-rendering-trd.md +676 -0
- package/docs/libretro-cores-trd.md +997 -0
- package/docs/mupen64-software-rendering-trd.md +751 -0
- package/docs/n64-support-trd.md +306 -0
- package/docs/native-rendering-trd.md +540 -0
- package/docs/native-ui-rendering-trd.md +1195 -0
- package/docs/netplay-trd.md +665 -0
- package/docs/retroarch-netplay-docs.md +277 -0
- package/docs/save-state-format.md +666 -0
- package/eslint.config.js +111 -0
- package/icon/icon.png +0 -0
- package/icon/icon.pxd +0 -0
- package/package.json +63 -0
- package/pnpm-workspace.yaml +10 -0
- package/src/Emulator/consts.ts +14 -0
- package/src/Emulator/index.ts +2496 -0
- package/src/Emulator/saveState/index.ts +155 -0
- package/src/Emulator/screenshot/index.ts +160 -0
- package/src/Emulator/terminalDimensions/index.ts +79 -0
- package/src/Emulator/types.ts +83 -0
- package/src/cli/commands/consts.ts +10 -0
- package/src/cli/commands/index.ts +462 -0
- package/src/cli/parseArgs/consts.ts +17 -0
- package/src/cli/parseArgs/index.ts +457 -0
- package/src/cli/parseArgs/types.ts +61 -0
- package/src/cli/runEmulator/index.ts +406 -0
- package/src/cli/runEmulator/types.ts +7 -0
- package/src/consts.ts +19 -0
- package/src/core/button/consts.ts +35 -0
- package/src/core/button/index.ts +123 -0
- package/src/core/core.ts +300 -0
- package/src/core/index.ts +19 -0
- package/src/cores/libretro/api/index.ts +334 -0
- package/src/cores/libretro/api/types.ts +148 -0
- package/src/cores/libretro/callbacks/consts.ts +41 -0
- package/src/cores/libretro/callbacks/index.ts +456 -0
- package/src/cores/libretro/consts.ts +45 -0
- package/src/cores/libretro/coreOptions/consts.ts +36 -0
- package/src/cores/libretro/coreOptions/index.ts +222 -0
- package/src/cores/libretro/environment/consts.ts +118 -0
- package/src/cores/libretro/environment/index.ts +1095 -0
- package/src/cores/libretro/index.ts +937 -0
- package/src/cores/libretro/loader/index.ts +496 -0
- package/src/cores/libretro/pixelFormat/consts.ts +43 -0
- package/src/cores/libretro/pixelFormat/index.ts +397 -0
- package/src/cores/libretro/types.ts +339 -0
- package/src/frontend/AudioManager/index.ts +420 -0
- package/src/frontend/SettingsManager/index.ts +250 -0
- package/src/frontend/config/index.ts +608 -0
- package/src/frontend/config/tests.ts +354 -0
- package/src/frontend/config/types.ts +36 -0
- package/src/frontend/consts.ts +114 -0
- package/src/frontend/coreBuilder/index.ts +644 -0
- package/src/frontend/coreBuilder/types.ts +15 -0
- package/src/frontend/coreDownloader/index.ts +620 -0
- package/src/frontend/coreDownloader/types.ts +17 -0
- package/src/frontend/corePreferences/index.ts +69 -0
- package/src/frontend/coreRegistry/index.ts +276 -0
- package/src/frontend/directoryCache/index.ts +75 -0
- package/src/frontend/index.ts +79 -0
- package/src/frontend/notifications/consts.ts +14 -0
- package/src/frontend/notifications/index.ts +250 -0
- package/src/frontend/playlist/consts.ts +168 -0
- package/src/frontend/playlist/index.ts +899 -0
- package/src/frontend/playlist/labelFormatter/consts.ts +15 -0
- package/src/frontend/playlist/labelFormatter/index.ts +155 -0
- package/src/frontend/playlist/labelFormatter/tests.ts +153 -0
- package/src/frontend/playlist/reader/index.ts +559 -0
- package/src/frontend/playlist/sync/index.ts +511 -0
- package/src/frontend/playlist/systemLookup/index.ts +233 -0
- package/src/frontend/playlist/utils/index.ts +50 -0
- package/src/frontend/romScanner/consts.ts +348 -0
- package/src/frontend/romScanner/index.ts +1957 -0
- package/src/frontend/saveServices/consts.ts +2 -0
- package/src/frontend/saveServices/index.ts +313 -0
- package/src/frontend/serviceProvider/index.ts +108 -0
- package/src/frontend/serviceProvider/types.ts +13 -0
- package/src/index.ts +428 -0
- package/src/input/Controller/consts.ts +50 -0
- package/src/input/Controller/index.ts +81 -0
- package/src/input/GamepadManager/consts.ts +22 -0
- package/src/input/GamepadManager/index.ts +418 -0
- package/src/input/InputManager/consts.ts +86 -0
- package/src/input/InputManager/index.ts +593 -0
- package/src/input/InputMapper/consts.ts +33 -0
- package/src/input/InputMapper/index.ts +436 -0
- package/src/input/consts.ts +410 -0
- package/src/input/gamepadProfiles/index.ts +1100 -0
- package/src/input/index.ts +38 -0
- package/src/input/inputUtils/index.ts +31 -0
- package/src/netplay/FrameBuffer/consts.ts +2 -0
- package/src/netplay/FrameBuffer/index.ts +364 -0
- package/src/netplay/FrameBuffer/tests.ts +286 -0
- package/src/netplay/InputBuffer/consts.ts +7 -0
- package/src/netplay/InputBuffer/index.ts +347 -0
- package/src/netplay/InputBuffer/tests.ts +166 -0
- package/src/netplay/NetplayClient/index.ts +976 -0
- package/src/netplay/NetplayConnection/index.ts +536 -0
- package/src/netplay/NetplayDiscovery/consts.ts +41 -0
- package/src/netplay/NetplayDiscovery/index.ts +525 -0
- package/src/netplay/NetplayServer/index.ts +1407 -0
- package/src/netplay/SyncManager/index.ts +984 -0
- package/src/netplay/SyncManager/tests.ts +419 -0
- package/src/netplay/consts.ts +371 -0
- package/src/netplay/crc32/consts.ts +14 -0
- package/src/netplay/crc32/index.ts +97 -0
- package/src/netplay/crc32/tests.ts +40 -0
- package/src/netplay/index.ts +41 -0
- package/src/netplay/netplayLogger/consts.ts +30 -0
- package/src/netplay/netplayLogger/index.ts +345 -0
- package/src/netplay/protocol/consts.ts +86 -0
- package/src/netplay/protocol/index.ts +1280 -0
- package/src/netplay/protocol/tests.ts +606 -0
- package/src/netplay/protocol/types.ts +20 -0
- package/src/netplay/types.ts +395 -0
- package/src/rendering/KittyRenderer/index.ts +616 -0
- package/src/rendering/NativeRenderer/index.ts +279 -0
- package/src/rendering/NativeRenderer/tests.ts +133 -0
- package/src/rendering/TerminalRenderer/index.ts +770 -0
- package/src/rendering/consts.ts +401 -0
- package/src/rendering/fonts/CozetteVector.ttf +0 -0
- package/src/rendering/index.ts +26 -0
- package/src/rendering/nativeUi/NativeWindowManager/index.ts +158 -0
- package/src/rendering/nativeUi/NativeWindowManager/tests.ts +81 -0
- package/src/rendering/nativeUi/consts.ts +6 -0
- package/src/rendering/nativeUi/index.ts +20 -0
- package/src/rendering/postProcessing/consts.ts +38 -0
- package/src/rendering/postProcessing/index.ts +923 -0
- package/src/rendering/shared/ansi/consts.ts +12 -0
- package/src/rendering/shared/ansi/index.ts +104 -0
- package/src/rendering/shared/consts.ts +2 -0
- package/src/rendering/shared/fitToTerminal/index.ts +67 -0
- package/src/ui/AddRomsPrompt/consts.ts +13 -0
- package/src/ui/AddRomsPrompt/index.tsx +781 -0
- package/src/ui/App/consts.ts +2 -0
- package/src/ui/App/index.tsx +456 -0
- package/src/ui/AppCapabilities/index.tsx +67 -0
- package/src/ui/ConfigContext/index.tsx +56 -0
- package/src/ui/CoreManager/consts.ts +11 -0
- package/src/ui/CoreManager/index.tsx +779 -0
- package/src/ui/CoreSelector/consts.ts +2 -0
- package/src/ui/CoreSelector/index.tsx +251 -0
- package/src/ui/DialogContainer/index.tsx +42 -0
- package/src/ui/DialogOptionsList/index.tsx +61 -0
- package/src/ui/DuplicateCrcPrompt/consts.ts +5 -0
- package/src/ui/DuplicateCrcPrompt/index.tsx +146 -0
- package/src/ui/GamepadContext/consts.ts +15 -0
- package/src/ui/GamepadContext/index.tsx +295 -0
- package/src/ui/NativeDialog/index.tsx +120 -0
- package/src/ui/NetplayDisconnectedDialog/index.tsx +93 -0
- package/src/ui/NetplayPauseMenu/consts.ts +2 -0
- package/src/ui/NetplayPauseMenu/index.tsx +97 -0
- package/src/ui/RomBrowser/NetplayPanel/consts.ts +24 -0
- package/src/ui/RomBrowser/NetplayPanel/index.tsx +520 -0
- package/src/ui/RomBrowser/SettingsPanel/index.tsx +478 -0
- package/src/ui/RomBrowser/consts.ts +61 -0
- package/src/ui/RomBrowser/index.tsx +1164 -0
- package/src/ui/RomBrowser/settingsConfig/index.ts +320 -0
- package/src/ui/RomBrowser/types.ts +67 -0
- package/src/ui/SaveStateDialog/consts.ts +2 -0
- package/src/ui/SaveStateDialog/index.tsx +225 -0
- package/src/ui/WarningDialog/index.tsx +113 -0
- package/src/ui/consts.ts +27 -0
- package/src/ui/hooks/useClearTerminal/consts.ts +2 -0
- package/src/ui/hooks/useClearTerminal/index.ts +37 -0
- package/src/ui/hooks/useDialogNavigation/index.ts +99 -0
- package/src/ui/hooks/useGamepad/consts.ts +21 -0
- package/src/ui/hooks/useGamepad/index.ts +194 -0
- package/src/ui/index.ts +27 -0
- package/src/utils/buffer/consts.ts +17 -0
- package/src/utils/buffer/index.ts +129 -0
- package/src/utils/color/consts.ts +58 -0
- package/src/utils/color/index.ts +183 -0
- package/src/utils/compression/consts.ts +50 -0
- package/src/utils/compression/index.ts +101 -0
- package/src/utils/consts.ts +2 -0
- package/src/utils/crc32/consts.ts +22 -0
- package/src/utils/crc32/index.ts +83 -0
- package/src/utils/ensureDirectory/index.ts +10 -0
- package/src/utils/format/consts.ts +8 -0
- package/src/utils/format/index.ts +53 -0
- package/src/utils/getErrorMessage/index.ts +10 -0
- package/src/utils/index.ts +113 -0
- package/src/utils/ini/index.ts +200 -0
- package/src/utils/kitty/consts.ts +13 -0
- package/src/utils/kitty/index.ts +181 -0
- package/src/utils/logger/consts.ts +35 -0
- package/src/utils/logger/index.ts +217 -0
- package/src/utils/paths/consts.ts +18 -0
- package/src/utils/paths/index.ts +151 -0
- package/src/utils/png/consts.ts +34 -0
- package/src/utils/png/index.ts +131 -0
- package/src/utils/readJsonFile/index.ts +16 -0
- package/src/utils/rotateLogFile/index.ts +44 -0
- package/src/utils/safeClose/index.ts +10 -0
- package/src/utils/terminal/consts.ts +8 -0
- package/src/utils/terminal/index.ts +102 -0
- package/src/utils/thumbnailRenderer/consts.ts +2 -0
- package/src/utils/thumbnailRenderer/index.ts +147 -0
- package/src/utils/typedError/index.ts +26 -0
- package/tsconfig.json +31 -0
- package/vitest.config.ts +13 -0
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// Playlist Format Constants
|
|
3
|
+
// =============================================================================
|
|
4
|
+
|
|
5
|
+
/** Current playlist format version (RetroArch 1.7.5+ JSON format) */
|
|
6
|
+
export const PLAYLIST_VERSION = '1.5';
|
|
7
|
+
|
|
8
|
+
/** Label display mode: default (0) shows filename without extension */
|
|
9
|
+
export const LABEL_DISPLAY_MODE_DEFAULT = 0;
|
|
10
|
+
|
|
11
|
+
/** Thumbnail mode: default (0) uses boxart */
|
|
12
|
+
export const THUMBNAIL_MODE_DEFAULT = 0;
|
|
13
|
+
|
|
14
|
+
/** Sort mode: alphabetical (0) */
|
|
15
|
+
export const SORT_MODE_ALPHABETICAL = 0;
|
|
16
|
+
|
|
17
|
+
// =============================================================================
|
|
18
|
+
// RetroArch Database Names
|
|
19
|
+
// =============================================================================
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Maps system IDs and file extensions to RetroArch database names.
|
|
23
|
+
* These match the .lpl filenames used by RetroArch for organizing playlists.
|
|
24
|
+
*
|
|
25
|
+
* Database names follow the format:
|
|
26
|
+
* "Manufacturer - System Name.lpl"
|
|
27
|
+
*
|
|
28
|
+
* Reference: https://github.com/libretro/libretro-database
|
|
29
|
+
*/
|
|
30
|
+
export const RETROARCH_DATABASE_NAMES: Record<string, string> = {
|
|
31
|
+
// NES / Famicom
|
|
32
|
+
'.nes': 'Nintendo - Nintendo Entertainment System.lpl',
|
|
33
|
+
'nes': 'Nintendo - Nintendo Entertainment System.lpl',
|
|
34
|
+
|
|
35
|
+
// Game Boy
|
|
36
|
+
'.gb': 'Nintendo - Game Boy.lpl',
|
|
37
|
+
'gb': 'Nintendo - Game Boy.lpl',
|
|
38
|
+
|
|
39
|
+
// Game Boy Color
|
|
40
|
+
'.gbc': 'Nintendo - Game Boy Color.lpl',
|
|
41
|
+
'gbc': 'Nintendo - Game Boy Color.lpl',
|
|
42
|
+
|
|
43
|
+
// Super Nintendo / Super Famicom
|
|
44
|
+
'.sfc': 'Nintendo - Super Nintendo Entertainment System.lpl',
|
|
45
|
+
'.smc': 'Nintendo - Super Nintendo Entertainment System.lpl',
|
|
46
|
+
'snes': 'Nintendo - Super Nintendo Entertainment System.lpl',
|
|
47
|
+
'bsnes': 'Nintendo - Super Nintendo Entertainment System.lpl',
|
|
48
|
+
'snes9x': 'Nintendo - Super Nintendo Entertainment System.lpl',
|
|
49
|
+
|
|
50
|
+
// Game Boy Advance
|
|
51
|
+
'.gba': 'Nintendo - Game Boy Advance.lpl',
|
|
52
|
+
'gba': 'Nintendo - Game Boy Advance.lpl',
|
|
53
|
+
'mgba': 'Nintendo - Game Boy Advance.lpl',
|
|
54
|
+
|
|
55
|
+
// Nintendo 64
|
|
56
|
+
'.n64': 'Nintendo - Nintendo 64.lpl',
|
|
57
|
+
'.z64': 'Nintendo - Nintendo 64.lpl',
|
|
58
|
+
'.v64': 'Nintendo - Nintendo 64.lpl',
|
|
59
|
+
'n64': 'Nintendo - Nintendo 64.lpl',
|
|
60
|
+
|
|
61
|
+
// Nintendo DS
|
|
62
|
+
'.nds': 'Nintendo - Nintendo DS.lpl',
|
|
63
|
+
'nds': 'Nintendo - Nintendo DS.lpl',
|
|
64
|
+
|
|
65
|
+
// Sega Master System
|
|
66
|
+
'.sms': 'Sega - Master System - Mark III.lpl',
|
|
67
|
+
'sms': 'Sega - Master System - Mark III.lpl',
|
|
68
|
+
|
|
69
|
+
// Sega Game Gear
|
|
70
|
+
'.gg': 'Sega - Game Gear.lpl',
|
|
71
|
+
'gg': 'Sega - Game Gear.lpl',
|
|
72
|
+
|
|
73
|
+
// Sega Genesis / Mega Drive
|
|
74
|
+
'.md': 'Sega - Mega Drive - Genesis.lpl',
|
|
75
|
+
'.smd': 'Sega - Mega Drive - Genesis.lpl',
|
|
76
|
+
'.gen': 'Sega - Mega Drive - Genesis.lpl',
|
|
77
|
+
'.bin': 'Sega - Mega Drive - Genesis.lpl', // Note: .bin is ambiguous
|
|
78
|
+
'genesis': 'Sega - Mega Drive - Genesis.lpl',
|
|
79
|
+
'picodrive': 'Sega - Mega Drive - Genesis.lpl',
|
|
80
|
+
|
|
81
|
+
// Sega 32X
|
|
82
|
+
'.32x': 'Sega - 32X.lpl',
|
|
83
|
+
'32x': 'Sega - 32X.lpl',
|
|
84
|
+
|
|
85
|
+
// Sega CD
|
|
86
|
+
'.iso': 'Sega - Mega-CD - Sega CD.lpl', // Note: .iso is ambiguous
|
|
87
|
+
'.cue': 'Sega - Mega-CD - Sega CD.lpl', // Note: .cue is ambiguous
|
|
88
|
+
'segacd': 'Sega - Mega-CD - Sega CD.lpl',
|
|
89
|
+
|
|
90
|
+
// PC Engine / TurboGrafx-16
|
|
91
|
+
'.pce': 'NEC - PC Engine - TurboGrafx 16.lpl',
|
|
92
|
+
'pce': 'NEC - PC Engine - TurboGrafx 16.lpl',
|
|
93
|
+
'mednafen_pce': 'NEC - PC Engine - TurboGrafx 16.lpl',
|
|
94
|
+
|
|
95
|
+
// Atari 2600
|
|
96
|
+
'.a26': 'Atari - 2600.lpl',
|
|
97
|
+
'atari2600': 'Atari - 2600.lpl',
|
|
98
|
+
|
|
99
|
+
// Atari 7800
|
|
100
|
+
'.a78': 'Atari - 7800.lpl',
|
|
101
|
+
'atari7800': 'Atari - 7800.lpl',
|
|
102
|
+
|
|
103
|
+
// Atari Lynx
|
|
104
|
+
'.lnx': 'Atari - Lynx.lpl',
|
|
105
|
+
'lynx': 'Atari - Lynx.lpl',
|
|
106
|
+
|
|
107
|
+
// Neo Geo Pocket
|
|
108
|
+
'.ngp': 'SNK - Neo Geo Pocket.lpl',
|
|
109
|
+
'ngp': 'SNK - Neo Geo Pocket.lpl',
|
|
110
|
+
|
|
111
|
+
// Neo Geo Pocket Color
|
|
112
|
+
'.ngc': 'SNK - Neo Geo Pocket Color.lpl',
|
|
113
|
+
'ngpc': 'SNK - Neo Geo Pocket Color.lpl',
|
|
114
|
+
|
|
115
|
+
// WonderSwan
|
|
116
|
+
'.ws': 'Bandai - WonderSwan.lpl',
|
|
117
|
+
'wonderswan': 'Bandai - WonderSwan.lpl',
|
|
118
|
+
|
|
119
|
+
// WonderSwan Color
|
|
120
|
+
'.wsc': 'Bandai - WonderSwan Color.lpl',
|
|
121
|
+
'wonderswancolor': 'Bandai - WonderSwan Color.lpl',
|
|
122
|
+
|
|
123
|
+
// Virtual Boy
|
|
124
|
+
'.vb': 'Nintendo - Virtual Boy.lpl',
|
|
125
|
+
'virtualboy': 'Nintendo - Virtual Boy.lpl',
|
|
126
|
+
|
|
127
|
+
// Vectrex
|
|
128
|
+
'.vec': 'GCE - Vectrex.lpl',
|
|
129
|
+
'vectrex': 'GCE - Vectrex.lpl',
|
|
130
|
+
|
|
131
|
+
// ColecoVision
|
|
132
|
+
'.col': 'Coleco - ColecoVision.lpl',
|
|
133
|
+
'colecovision': 'Coleco - ColecoVision.lpl',
|
|
134
|
+
|
|
135
|
+
// Intellivision
|
|
136
|
+
'.int': 'Mattel - Intellivision.lpl',
|
|
137
|
+
'intellivision': 'Mattel - Intellivision.lpl',
|
|
138
|
+
|
|
139
|
+
// PlayStation
|
|
140
|
+
'psx': 'Sony - PlayStation.lpl',
|
|
141
|
+
'playstation': 'Sony - PlayStation.lpl',
|
|
142
|
+
|
|
143
|
+
// PlayStation Portable
|
|
144
|
+
'psp': 'Sony - PlayStation Portable.lpl',
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Default database name for unknown systems.
|
|
149
|
+
* Used when no specific mapping exists.
|
|
150
|
+
*/
|
|
151
|
+
export const DEFAULT_DATABASE_NAME = 'Unknown System.lpl';
|
|
152
|
+
|
|
153
|
+
// =============================================================================
|
|
154
|
+
// Path Constants
|
|
155
|
+
// =============================================================================
|
|
156
|
+
|
|
157
|
+
/** Windows path separator */
|
|
158
|
+
export const WINDOWS_PATH_SEP = '\\';
|
|
159
|
+
|
|
160
|
+
/** Unix path separator */
|
|
161
|
+
export const UNIX_PATH_SEP = '/';
|
|
162
|
+
|
|
163
|
+
// =============================================================================
|
|
164
|
+
// File Extension Constants
|
|
165
|
+
// =============================================================================
|
|
166
|
+
|
|
167
|
+
/** RetroArch playlist file extension */
|
|
168
|
+
export const PLAYLIST_EXTENSION = '.lpl';
|