kano92-dir/Ultimate-Emulator

Lightweight libretro frontend for Windows with a controller-friendly game library, box art, rewind and CRT shaders

C

0

1 commits

updated Oct 3, 2026

See the code

See what people are saying

SourceMessageScoreDate

I made a small libretro frontend for Windows that you can use entirely with a controller (Open-Source) (r/SideProject)

RetroArch always felt like too much for me. I just wanted to pick a game with my DualSense and play, so I made my own little frontend. It uses the normal libretro cores, so the actual emulation is theirs, not mine. What it does: \- one \~350 KB exe, no setup. It downloads the cores itself the first…

1

Oct 3, 2026

README

Ultimate Emulator (v3.6)

An emulator that runs many consoles from a single .exe. The frontend is written in C: window, OpenGL video, audio, keyboard and controller input, save states and the core downloader. The consoles themselves are emulated by libretro cores, the open-source DLLs that RetroArch also uses. The app can download them for you with one click from its menu.

Download and install

Requirements: Windows 10 (version 1803 or newer) or Windows 11, 64-bit; a graphics driver with OpenGL 3.3 or newer; an internet connection the first time, to download the emulator cores.

  1. Go to the Releases page of this repository and download UltimateEmulator-v3.6-windows-x64.zip.
  2. Extract the ZIP (right-click > Extract All...). Do not run the exe from inside the ZIP; the program will warn you if you do.
  3. Put the UltimateEmulator folder somewhere you can write to, such as Documents or the Desktop. Do not use Program Files. The program keeps its cores, saves and settings next to the exe, so it can also be copied to a USB stick.
  4. Run UltimateEmulator.exe.
    • If Windows shows "Windows protected your PC" (SmartScreen), click More info > Run anyway. This appears because the exe is not code-signed.
    • If your antivirus flags it, that is a false positive caused by the unsigned exe. You can check the SHA256 checksum from the release page, or build it yourself from source (see below).
  5. Open a game with Ctrl+O, or drag a game file onto the window. When a system's core is missing, the app asks to download it (a few MB from buildbot.libretro.com). You can also get all of them at once with Cores > Download missing cores.

The download only contains the program. The folders cores\, system\, saves\, states\, config\, screenshots\, thumbnails\ and temp\ are created automatically on the first start, and every user's games, saves and settings stay on their own PC.

No games, ROMs or BIOS files are included. Use your own dumps. PS2 and Sega CD games need BIOS files from your own console (see Systems below).

Building (w64devkit)

  1. Download w64devkit and extract it: https://github.com/skeeto/w64devkit/releases
  2. Start w64devkit.exe, go to this folder and build:
    cd C:/path/to/UltimateEmulator
    make
    
    If w64devkit\bin is on your PATH, you can also double-click build.bat.
  3. The result is UltimateEmulator.exe. A prebuilt copy is already in this folder. You can move the folder anywhere you like.

First start

  1. Run UltimateEmulator.exe.
  2. Choose Cores > Download missing cores (or simply open a game; the needed core is downloaded on request). The cores for every system are downloaded from buildbot.libretro.com into the cores\ folder, using the tar.exe that ships with Windows 10/11.
  3. Open a game with Ctrl+O, or drag a ROM onto the window. The system is detected from the file extension. For ISO, BIN and CUE files the disc header is read too (PSP, PS1/PS2, Sega CD). If the system still cannot be determined, a menu asks you.
  4. Optional: choose File > Choose ROM folder to build your game library.

Archives (ZIP / 7z / RAR)

You can open .zip, .7z and .rar files directly, without extracting them first. The archive is extracted into temp\<archive name>\ and the game file inside is picked automatically. For multi-file discs such as CUE/BIN, the .cue is preferred. Opening the same archive again does not extract it a second time, which saves time with large PS2/PSP archives. To delete the extracted files, use File > Clear archive cache. Password-protected archives are not supported.

These folders are created next to the exe:

FolderContents
cores\Emulator cores
system\BIOS files
saves\In-game saves
states\Save states
config\Settings, recently played, favorites, play time
screenshots\Screenshots
thumbnails\Cached box art
temp\Files extracted from archives

Systems

SystemCoreBIOS
NES / Famicomfceumm– (disksys.rom for FDS)
SNESsnes9x–
Nintendo 64mupen64plus_next (OpenGL)–
Game Boy / Colorgambatte–
Game Boy Advancemgbaoptional gba_bios.bin
Nintendo DSmelondsdsoptional (built-in fallback BIOS)
Master System / Game Gear / Mega Drivegenesis_plus_gx–
Sega CDgenesis_plus_gxrequired: bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
32Xpicodrive–
PlayStationpcsx_rearmedoptional scph5501.bin (HLE BIOS otherwise)
PlayStation 2pcsx2 (LRPS2)required: PS2 BIOS files in system\pcsx2\bios\
PSPppsspp– (support files are downloaded automatically)
Atari 2600 / 5200-800 / 7800 / Lynx / Jaguar / STstella / atari800 / prosystem / handy / virtualjaguar / hatariLynx: lynxboot.img, ST: tos.img

BIOS files must come from your own console; they are not included. Cores > Open BIOS (system) folder opens the folder for you.

Game library

The start screen has three tabs:

  • Recently played: the last 15 games you opened, including ones opened from archives, with their system.
  • Favorites: select a game and press Insert, or Triangle / Y on a controller. Press it again to remove the game.
  • Library: choose the folder that holds your games once with File > Choose ROM folder. Every game in it and its subfolders is found, including ZIP/7z/RAR archives, and listed alphabetically. A .bin is not listed separately when a .cue with the same name exists.

Box art: when the window is wide enough, the cover of the selected game is shown next to the list, together with its system, total play time and favorite status. Covers are downloaded from the libretro thumbnail archive (thumbnails.libretro.com) and cached in thumbnails\. They are matched by file name, so they appear for files named the standard (No-Intro / Redump) way, such as Super Mario World (USA).sfc. A ZIP file's system is only known after you have played it once, so its box art appears after the first play. Downloading can be turned off under File > Download box art from the internet.

Play time: the time you spend playing each game is recorded and shown in the list.

You can navigate the list with the keyboard, the mouse or a controller:

Key / buttonAction
Up / DownSelect
Enter, Cross or double-clickPlay
Left / Right, L1 / R1 or TabSwitch tabs
Insert or Triangle / YAdd or remove a favorite
DeleteRemove from the list
LettersJump to a game by name (e.g. type mar for Mario)

In-game menu

During a game, press Esc, or tap the PS / Home / Xbox button on a controller. Controllers without such a button can use Start+Select together. The game pauses, and you can:

  • save or load a state (each slot shows when it was saved, or that it is empty), and change the save slot
  • change the video filter, aspect ratio and volume (with Left/Right)
  • turn fullscreen on or off
  • restart or close the game

The whole menu works with a controller: Cross confirms, Circle closes.

Resume and rewind

  • Resume where you left off: when you close a game, its state is saved automatically (states\<game>.auto). The next time you open it, it continues from there. To start over, choose Esc > Restart. You can turn this off in the Emulation menu.
  • Rewind: hold Backspace (or PS + L2 on a controller) to run the game backwards. The last few minutes are kept in memory. Rewind works for systems with small save states: NES, SNES, Game Boy/GBA, Sega, Atari and PS1. It is off for N64, DS, PSP and PS2 because their states are too large.

Controls

KeyboardController equivalent
Arrow keysD-Pad
Z / XB / A (PS: Cross / Circle)
A / SY / X (PS: Square / Triangle)
Q / WL / R
E / RL2 / R2
C / VL3 / R3
Enter / Right ShiftStart / Select
I J K LLeft analog stick
Numpad 8 4 5 6Right analog stick (N64 C buttons)
MouseDS touch screen

To change the keyboard bindings, edit config\ultimate.ini (Help > Edit key bindings).

Controllers

Up to 4 players are supported. Controllers are assigned to players 1, 2, 3 and 4 in order, and the keyboard is always player 1.

  • Xbox (XInput): plug and play, rumble works.
  • PS4 / PS5 (DualSense, DualSense Edge), Switch Pro and generic USB controllers (DirectInput): detected automatically, and the PlayStation and Switch layouts are built in. If any buttons are wrong, open Controllers > Button mapping. Press each button the screen asks for; Space skips a step and Esc cancels. These controllers have no rumble.
  • Connecting or disconnecting a controller is detected automatically and shown on screen. Controllers > Show connected controllers shows which controller belongs to which player.

Controller hotkeys. Tap the PS / Home / Xbox button to open the in-game menu. While you hold it:

ButtonAction
R1Save state
L1Load state
StartPause
SelectFullscreen
R2 (hold)Fast forward
L2 (hold)Rewind
Up / DownSave slot
Triangle / YScreenshot

Keyboard shortcuts:

KeyAction
EscIn-game menu
Ctrl+OOpen game
F2 / F4Save / load state
F6 / F7Save slot - / +
F8Reset
F9Next video filter
F3FPS counter
PPause
Tab (hold)Fast forward
Backspace (hold)Rewind
+ / -Volume up / down
MMute / unmute
F12PNG screenshot into screenshots\
F11 or Alt+EnterFullscreen

Image quality (Quality menu)

Video filters (shaders). Press F9 to cycle through them.

FilterBest for
Sharp pixels2D games: pixels scale up without blur or shimmering
Smooth pixel art (Scale2x)2D games: smooths jagged edges
CRT TVOld television look with scanlines and a shadow mask
CRT TV (curved screen)The CRT look plus curved glass and darkened edges
LCD gridPixel grid of Game Boy, GBA, DS and PSP screens
Sharpen + vivid colors3D games (PS1/PS2/PSP/N64): crisper textures, livelier colors

Aspect ratio and scaling. Choose between the core's own aspect ratio, 4:3, 16:9, fill the screen, or square pixels. With integer scaling on, all pixels are the same size.

Core graphics settings. While a game is running, the Quality menu lists that core's own settings, such as internal resolution, texture filtering and FXAA. For example:

  • N64: raise 43screensize to 1280x960 or higher.
  • PSP: set Internal resolution to 2x-4x.
  • PS2: raise the upscale multiplier.

Some settings only take effect after Emulation > Reset or after reopening the game. Every setting is available under Quality > All core settings. They are stored in config\<core>.opt.

Troubleshooting

ProblemSolution
"Windows protected your PC"Click More info > Run anyway. The exe is not code-signed.
Antivirus blocks or deletes the exeFalse positive on an unsigned exe. Restore it and add the folder to the exclusions, or build it yourself.
"started directly from inside the ZIP file"Extract the ZIP first, then run the exe from the extracted folder.
"cannot write to its own folder"Move the folder to Documents or the Desktop (not Program Files).
Core download failsCheck your internet connection or firewall. Requires Windows 10 version 1803+ (for the built-in tar.exe).
"The game could not be loaded"Check Help > Open log. PS2 and Sega CD need BIOS files in system\; PS2 BIOS goes in system\pcsx2\bios\.
"OpenGL could not be started" / black screen in 3D gamesUpdate your graphics driver. N64, PSP and PS2 need OpenGL 3.3+.
PS2 runs slowlyPS2 emulation needs a fast CPU. Lower the upscale multiplier in the Quality menu.
Very long folder paths cause errorsKeep the folder in a short location such as C:\Games\UltimateEmulator.

If something else goes wrong, check ultimate.log (Help > Open log).

Credits

  • libretro: src/libretro.h is a minimal re-declaration of the libretro API (MIT). The emulation itself is done by the libretro cores (FCEUmm, Snes9x, Mupen64Plus-Next, Gambatte, mGBA, melonDS DS, Genesis Plus GX, PicoDrive, PCSX-ReARMed, LRPS2, PPSSPP, Stella, Atari800, ProSystem, Handy, Virtual Jaguar, Hatari). These are downloaded from the libretro buildbot at runtime and are not distributed with this project.
  • Box art: downloaded at runtime from libretro-thumbnails and only cached locally.
  • Video filters: written for this project, based on well-known techniques: sharp bilinear scaling (as in the libretro sharp-bilinear shader), Scale2x / EPX, and contrast-adaptive sharpening (after AMD FidelityFX CAS).

Disclaimer

This project does not include, link to or help obtain games, ROMs, ISOs or BIOS files. Use only games and BIOS files that you have dumped from hardware you own. PlayStation, Nintendo, Sega, Atari and all related names are trademarks of their respective owners. This project is not affiliated with or endorsed by any of them.

License

The frontend source and original app resources are licensed under MIT. Libretro cores downloaded by the app are separate projects with their own licenses.

kano92-dir/Ultimate-Emulator

Lightweight libretro frontend for Windows with a controller-friendly game library, box art, rewind and CRT shaders

C

0

1 commits

updated Oct 3, 2026

See the code

See what people are saying

SourceMessageScoreDate

I made a small libretro frontend for Windows that you can use entirely with a controller (Open-Source) (r/SideProject)

RetroArch always felt like too much for me. I just wanted to pick a game with my DualSense and play, so I made my own little frontend. It uses the normal libretro cores, so the actual emulation is theirs, not mine. What it does: \- one \~350 KB exe, no setup. It downloads the cores itself the first…

1

Oct 3, 2026

README

Ultimate Emulator (v3.6)

An emulator that runs many consoles from a single .exe. The frontend is written in C: window, OpenGL video, audio, keyboard and controller input, save states and the core downloader. The consoles themselves are emulated by libretro cores, the open-source DLLs that RetroArch also uses. The app can download them for you with one click from its menu.

Download and install

Requirements: Windows 10 (version 1803 or newer) or Windows 11, 64-bit; a graphics driver with OpenGL 3.3 or newer; an internet connection the first time, to download the emulator cores.

  1. Go to the Releases page of this repository and download UltimateEmulator-v3.6-windows-x64.zip.
  2. Extract the ZIP (right-click > Extract All...). Do not run the exe from inside the ZIP; the program will warn you if you do.
  3. Put the UltimateEmulator folder somewhere you can write to, such as Documents or the Desktop. Do not use Program Files. The program keeps its cores, saves and settings next to the exe, so it can also be copied to a USB stick.
  4. Run UltimateEmulator.exe.
    • If Windows shows "Windows protected your PC" (SmartScreen), click More info > Run anyway. This appears because the exe is not code-signed.
    • If your antivirus flags it, that is a false positive caused by the unsigned exe. You can check the SHA256 checksum from the release page, or build it yourself from source (see below).
  5. Open a game with Ctrl+O, or drag a game file onto the window. When a system's core is missing, the app asks to download it (a few MB from buildbot.libretro.com). You can also get all of them at once with Cores > Download missing cores.

The download only contains the program. The folders cores\, system\, saves\, states\, config\, screenshots\, thumbnails\ and temp\ are created automatically on the first start, and every user's games, saves and settings stay on their own PC.

No games, ROMs or BIOS files are included. Use your own dumps. PS2 and Sega CD games need BIOS files from your own console (see Systems below).

Building (w64devkit)

  1. Download w64devkit and extract it: https://github.com/skeeto/w64devkit/releases
  2. Start w64devkit.exe, go to this folder and build:
    cd C:/path/to/UltimateEmulator
    make
    
    If w64devkit\bin is on your PATH, you can also double-click build.bat.
  3. The result is UltimateEmulator.exe. A prebuilt copy is already in this folder. You can move the folder anywhere you like.

First start

  1. Run UltimateEmulator.exe.
  2. Choose Cores > Download missing cores (or simply open a game; the needed core is downloaded on request). The cores for every system are downloaded from buildbot.libretro.com into the cores\ folder, using the tar.exe that ships with Windows 10/11.
  3. Open a game with Ctrl+O, or drag a ROM onto the window. The system is detected from the file extension. For ISO, BIN and CUE files the disc header is read too (PSP, PS1/PS2, Sega CD). If the system still cannot be determined, a menu asks you.
  4. Optional: choose File > Choose ROM folder to build your game library.

Archives (ZIP / 7z / RAR)

You can open .zip, .7z and .rar files directly, without extracting them first. The archive is extracted into temp\<archive name>\ and the game file inside is picked automatically. For multi-file discs such as CUE/BIN, the .cue is preferred. Opening the same archive again does not extract it a second time, which saves time with large PS2/PSP archives. To delete the extracted files, use File > Clear archive cache. Password-protected archives are not supported.

These folders are created next to the exe:

FolderContents
cores\Emulator cores
system\BIOS files
saves\In-game saves
states\Save states
config\Settings, recently played, favorites, play time
screenshots\Screenshots
thumbnails\Cached box art
temp\Files extracted from archives

Systems

SystemCoreBIOS
NES / Famicomfceumm– (disksys.rom for FDS)
SNESsnes9x–
Nintendo 64mupen64plus_next (OpenGL)–
Game Boy / Colorgambatte–
Game Boy Advancemgbaoptional gba_bios.bin
Nintendo DSmelondsdsoptional (built-in fallback BIOS)
Master System / Game Gear / Mega Drivegenesis_plus_gx–
Sega CDgenesis_plus_gxrequired: bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
32Xpicodrive–
PlayStationpcsx_rearmedoptional scph5501.bin (HLE BIOS otherwise)
PlayStation 2pcsx2 (LRPS2)required: PS2 BIOS files in system\pcsx2\bios\
PSPppsspp– (support files are downloaded automatically)
Atari 2600 / 5200-800 / 7800 / Lynx / Jaguar / STstella / atari800 / prosystem / handy / virtualjaguar / hatariLynx: lynxboot.img, ST: tos.img

BIOS files must come from your own console; they are not included. Cores > Open BIOS (system) folder opens the folder for you.

Game library

The start screen has three tabs:

  • Recently played: the last 15 games you opened, including ones opened from archives, with their system.
  • Favorites: select a game and press Insert, or Triangle / Y on a controller. Press it again to remove the game.
  • Library: choose the folder that holds your games once with File > Choose ROM folder. Every game in it and its subfolders is found, including ZIP/7z/RAR archives, and listed alphabetically. A .bin is not listed separately when a .cue with the same name exists.

Box art: when the window is wide enough, the cover of the selected game is shown next to the list, together with its system, total play time and favorite status. Covers are downloaded from the libretro thumbnail archive (thumbnails.libretro.com) and cached in thumbnails\. They are matched by file name, so they appear for files named the standard (No-Intro / Redump) way, such as Super Mario World (USA).sfc. A ZIP file's system is only known after you have played it once, so its box art appears after the first play. Downloading can be turned off under File > Download box art from the internet.

Play time: the time you spend playing each game is recorded and shown in the list.

You can navigate the list with the keyboard, the mouse or a controller:

Key / buttonAction
Up / DownSelect
Enter, Cross or double-clickPlay
Left / Right, L1 / R1 or TabSwitch tabs
Insert or Triangle / YAdd or remove a favorite
DeleteRemove from the list
LettersJump to a game by name (e.g. type mar for Mario)

In-game menu

During a game, press Esc, or tap the PS / Home / Xbox button on a controller. Controllers without such a button can use Start+Select together. The game pauses, and you can:

  • save or load a state (each slot shows when it was saved, or that it is empty), and change the save slot
  • change the video filter, aspect ratio and volume (with Left/Right)
  • turn fullscreen on or off
  • restart or close the game

The whole menu works with a controller: Cross confirms, Circle closes.

Resume and rewind

  • Resume where you left off: when you close a game, its state is saved automatically (states\<game>.auto). The next time you open it, it continues from there. To start over, choose Esc > Restart. You can turn this off in the Emulation menu.
  • Rewind: hold Backspace (or PS + L2 on a controller) to run the game backwards. The last few minutes are kept in memory. Rewind works for systems with small save states: NES, SNES, Game Boy/GBA, Sega, Atari and PS1. It is off for N64, DS, PSP and PS2 because their states are too large.

Controls

KeyboardController equivalent
Arrow keysD-Pad
Z / XB / A (PS: Cross / Circle)
A / SY / X (PS: Square / Triangle)
Q / WL / R
E / RL2 / R2
C / VL3 / R3
Enter / Right ShiftStart / Select
I J K LLeft analog stick
Numpad 8 4 5 6Right analog stick (N64 C buttons)
MouseDS touch screen

To change the keyboard bindings, edit config\ultimate.ini (Help > Edit key bindings).

Controllers

Up to 4 players are supported. Controllers are assigned to players 1, 2, 3 and 4 in order, and the keyboard is always player 1.

  • Xbox (XInput): plug and play, rumble works.
  • PS4 / PS5 (DualSense, DualSense Edge), Switch Pro and generic USB controllers (DirectInput): detected automatically, and the PlayStation and Switch layouts are built in. If any buttons are wrong, open Controllers > Button mapping. Press each button the screen asks for; Space skips a step and Esc cancels. These controllers have no rumble.
  • Connecting or disconnecting a controller is detected automatically and shown on screen. Controllers > Show connected controllers shows which controller belongs to which player.

Controller hotkeys. Tap the PS / Home / Xbox button to open the in-game menu. While you hold it:

ButtonAction
R1Save state
L1Load state
StartPause
SelectFullscreen
R2 (hold)Fast forward
L2 (hold)Rewind
Up / DownSave slot
Triangle / YScreenshot

Keyboard shortcuts:

KeyAction
EscIn-game menu
Ctrl+OOpen game
F2 / F4Save / load state
F6 / F7Save slot - / +
F8Reset
F9Next video filter
F3FPS counter
PPause
Tab (hold)Fast forward
Backspace (hold)Rewind
+ / -Volume up / down
MMute / unmute
F12PNG screenshot into screenshots\
F11 or Alt+EnterFullscreen

Image quality (Quality menu)

Video filters (shaders). Press F9 to cycle through them.

FilterBest for
Sharp pixels2D games: pixels scale up without blur or shimmering
Smooth pixel art (Scale2x)2D games: smooths jagged edges
CRT TVOld television look with scanlines and a shadow mask
CRT TV (curved screen)The CRT look plus curved glass and darkened edges
LCD gridPixel grid of Game Boy, GBA, DS and PSP screens
Sharpen + vivid colors3D games (PS1/PS2/PSP/N64): crisper textures, livelier colors

Aspect ratio and scaling. Choose between the core's own aspect ratio, 4:3, 16:9, fill the screen, or square pixels. With integer scaling on, all pixels are the same size.

Core graphics settings. While a game is running, the Quality menu lists that core's own settings, such as internal resolution, texture filtering and FXAA. For example:

  • N64: raise 43screensize to 1280x960 or higher.
  • PSP: set Internal resolution to 2x-4x.
  • PS2: raise the upscale multiplier.

Some settings only take effect after Emulation > Reset or after reopening the game. Every setting is available under Quality > All core settings. They are stored in config\<core>.opt.

Troubleshooting

ProblemSolution
"Windows protected your PC"Click More info > Run anyway. The exe is not code-signed.
Antivirus blocks or deletes the exeFalse positive on an unsigned exe. Restore it and add the folder to the exclusions, or build it yourself.
"started directly from inside the ZIP file"Extract the ZIP first, then run the exe from the extracted folder.
"cannot write to its own folder"Move the folder to Documents or the Desktop (not Program Files).
Core download failsCheck your internet connection or firewall. Requires Windows 10 version 1803+ (for the built-in tar.exe).
"The game could not be loaded"Check Help > Open log. PS2 and Sega CD need BIOS files in system\; PS2 BIOS goes in system\pcsx2\bios\.
"OpenGL could not be started" / black screen in 3D gamesUpdate your graphics driver. N64, PSP and PS2 need OpenGL 3.3+.
PS2 runs slowlyPS2 emulation needs a fast CPU. Lower the upscale multiplier in the Quality menu.
Very long folder paths cause errorsKeep the folder in a short location such as C:\Games\UltimateEmulator.

If something else goes wrong, check ultimate.log (Help > Open log).

Credits

  • libretro: src/libretro.h is a minimal re-declaration of the libretro API (MIT). The emulation itself is done by the libretro cores (FCEUmm, Snes9x, Mupen64Plus-Next, Gambatte, mGBA, melonDS DS, Genesis Plus GX, PicoDrive, PCSX-ReARMed, LRPS2, PPSSPP, Stella, Atari800, ProSystem, Handy, Virtual Jaguar, Hatari). These are downloaded from the libretro buildbot at runtime and are not distributed with this project.
  • Box art: downloaded at runtime from libretro-thumbnails and only cached locally.
  • Video filters: written for this project, based on well-known techniques: sharp bilinear scaling (as in the libretro sharp-bilinear shader), Scale2x / EPX, and contrast-adaptive sharpening (after AMD FidelityFX CAS).

Disclaimer

This project does not include, link to or help obtain games, ROMs, ISOs or BIOS files. Use only games and BIOS files that you have dumped from hardware you own. PlayStation, Nintendo, Sega, Atari and all related names are trademarks of their respective owners. This project is not affiliated with or endorsed by any of them.

License

The frontend source and original app resources are licensed under MIT. Libretro cores downloaded by the app are separate projects with their own licenses.

Languages

C

99.5%