A libretro frontend focusing on a native look and a smooth out-of-the-box experience.
Switch branches/tags
Nothing to show
Clone or download
Latest commit cdad8c4 Dec 6, 2017
Permalink
Failed to load latest commit information.
ico Forgot adding those. May 6, 2014
math Add some missing CRLFs. Remove some trailing linebreaks. May 14, 2015
msvc fix d3d9 on msvc by checking for a broken d3d9.h and disabling d3d9 e… May 8, 2016
scr Fixes #4 May 27, 2016
subproj More cppcheck fixes. Sep 28, 2015
.gitignore D3D9Ex is available on systems with non-broken headers. Also various … May 8, 2016
COPYING Initial commit May 6, 2014
Makefile (#6) Fix missing -std=c++98 Jul 26, 2016
Makefile.msvc Mess around with the input system some more. Feb 18, 2015
README.md Fixed table rendering issue May 7, 2017
array.h Make the multiint use exponential growth instead, and some other chan… May 14, 2015
atomic.h Clean out most cruft from host.h. Fis MSVC build. Sep 8, 2015
audio-alsa.cpp Add ALSA audio driver, closes #5 Jul 11, 2016
audio-directsound.cpp Bunch of XP build fixes. Oct 6, 2015
audio-pulseaudio.cpp Add some explainations to these ancient things. Apr 9, 2015
audio-wasabi.cpp Rename struct audio to caudio, and start creating a class audio repla… Mar 25, 2015
audio.cpp Add ALSA audio driver, closes #5 Jul 11, 2016
compat.cpp Stupid MSVC, do what I mean. Mar 1, 2015
configreader.cpp Rewrite a big bunch of stuff to make the hashmap more generic, and so… May 13, 2015
configreader.h Rewrite a big bunch of stuff to make the hashmap more generic, and so… May 13, 2015
configure Add ALSA audio driver, closes #5 Jul 11, 2016
configure.bat Whoops, better shut this one up. Oct 6, 2015
containers.h Rewrite a big bunch of stuff to make the hashmap more generic, and so… May 13, 2015
debug.cpp Clean out most cruft from host.h. Fis MSVC build. Sep 8, 2015
dylib.cpp Clean out most cruft from host.h. Fis MSVC build. Sep 8, 2015
endian.h Add signed endian swappers because why not. Mar 13, 2016
fifo.h Add a bit vector class, and throw out a memleak. May 14, 2015
file-posix.cpp Clean out most cruft from host.h. Fis MSVC build. Sep 8, 2015
file-win32.cpp More cppcheck fixes. Sep 28, 2015
file.h Fix a bunch of missing statics. Apr 7, 2015
function.h Rewrite the event handler system for the N+1th time. Still not happy … Apr 2, 2015
global.h Minor cleanups. Nov 11, 2015
hashmap.h Some minor fixes. Sep 28, 2015
host.h D3D9Ex is available on systems with non-broken headers. Also various … May 8, 2016
icon.cpp Only one file left until I can start using actual C++ instead of comp… Aug 24, 2014
image.h Fill in more of this. The input mapper is almost done now. Mar 16, 2015
imageconvert.cpp Fix build derp. Oct 6, 2015
inputcur-rawinput.cpp Add RawInput mouse driver, and some other random stuff. Jan 20, 2015
inputcur-w32message.cpp Copy dummy move() to the other three. (Okay, I don't need dummy for x… Jan 15, 2015
inputcur-x11.cpp Clean up this interface. Jan 15, 2015
inputcur-xrecord.cpp Some build fixes. Add some position-related functions, I'll need them… Jan 16, 2015
inputcur.cpp Refactor and fill in the remaining parts of inputmapper, plus whateve… Mar 24, 2015
inputkb-dinput.cpp More changes all over... I need to commit more often. Jan 30, 2015
inputkb-gdk.cpp Mess around with the input system some more. Feb 18, 2015
inputkb-rawinput.cpp Fill in more of this. The input mapper is almost done now. Mar 16, 2015
inputkb-udev.cpp Mess around with the input system some more. Feb 18, 2015
inputkb-win32keymaps.cpp Rearrange the driver handling code a bit. inputkb-related stuff belon… Dec 30, 2014
inputkb-x11-xinput2.cpp Mess around with the input system some more. Feb 18, 2015
inputkb-x11.cpp More changes all over... I need to commit more often. Jan 30, 2015
inputkb-x11keymaps.cpp Trim off some pointless function calls. Dec 30, 2014
inputkb.cpp Mess around with the input system some more. Feb 18, 2015
inputmapper.cpp fix crash due to incomplete reset when pressing key before loading rom May 8, 2016
inputmapper2.cpp Put back the new-interface input mapper, that part actually makes sense. Aug 31, 2015
inputtp-rawinput.cpp Rewrite the event handler system for the N+1th time. Still not happy … Apr 2, 2015
inputtp-wm.cpp Rewrite the event handler system for the N+1th time. Still not happy … Apr 2, 2015
intwrap.h Add signed endian swappers because why not. Mar 13, 2016
io.h Add ALSA audio driver, closes #5 Jul 11, 2016
libretro.cpp Update libretro.cpp Dec 6, 2017
libretro.h Update libretro.h. Nov 11, 2015
libretroinput.cpp Add some explainations to these ancient things. Apr 9, 2015
main.cpp There's only one way to wipe out the RegisterSoftwareDevice bug. May 19, 2016
memory.cpp Implement part 1 of the device manager setup, remove the hash cache, … May 8, 2015
minir.cfg.tmpl Fix some ancient typos. Jan 17, 2015
minir.h Nuke the new interface entirely, it's just an overengineered maze tha… Aug 26, 2015
minircheats-model.cpp Clean out most cruft from host.h. Fis MSVC build. Sep 8, 2015
minircheats.cpp Clean out most cruft from host.h. Fis MSVC build. Sep 8, 2015
minirconfig.cpp Clean out most cruft from host.h. Fis MSVC build. Sep 8, 2015
miniz.c Initial commit May 6, 2014
multiint.h Fill in the frame orderer. Jun 25, 2015
netteleport.cpp It is decided; I'll switch to C++. The main advantage is replacing ob… Aug 22, 2014
os.h turns out the futex threading is broken, switch to pthread Nov 10, 2017
pngdecode.cpp Fix a bunch of missing statics. Apr 7, 2015
pngencode.cpp More cppcheck fixes. Sep 28, 2015
rescompile.cpp Fix #6 Jul 25, 2016
rewind.cpp Add some explainations to these ancient things. Apr 9, 2015
sort.h Rewrite a big bunch of stuff to make the hashmap more generic, and so… May 13, 2015
string.h Put back the new-interface input mapper, that part actually makes sense. Aug 31, 2015
tests.cpp Clean out most cruft from host.h. Fis MSVC build. Sep 8, 2015
thread-linux.cpp turns out the futex threading is broken, switch to pthread Nov 10, 2017
thread-once.cpp Nuke rwlock properly. That kind of junk code is no fun, especially no… Sep 2, 2015
thread-pthread.cpp turns out the futex threading is broken, switch to pthread Nov 10, 2017
thread-split.cpp Clean out most cruft from host.h. Fis MSVC build. Sep 8, 2015
thread-win32.cpp Clean out most cruft from host.h. Fis MSVC build. Sep 8, 2015
todo.txt Fix an ancient segfault. Jan 21, 2015
utfstring.h Rewrite a big bunch of stuff to make the hashmap more generic, and so… May 13, 2015
video-opengl.cpp Let's use the debug functions too. Mar 7, 2015
video-shader-file.cpp Mess around with the input system some more. Feb 18, 2015
video-shader-translate-cgc.cpp Make some of the input drivers a bit more robust. Jan 1, 2015
video-shader-translate.cpp Fill in a little more of the Cg translator. Get started on a standalo… Dec 27, 2014
video-shader-var.cpp Split off file.h. Fill in 2/5 parts of the shader reader (file parser… Dec 5, 2014
video.cpp Rearrange the driver handling code a bit. inputkb-related stuff belon… Dec 30, 2014
videoc-d3d9.cpp There's only one way to wipe out the RegisterSoftwareDevice bug. May 19, 2016
videoc-ddraw.cpp Add some explainations to these ancient things. Apr 9, 2015
videoc-gdi.cpp Add some explainations to these ancient things. Apr 9, 2015
videoc-opengl-old.cpp Add some explainations to these ancient things. Apr 9, 2015
videoc-xshm.cpp Add some explainations to these ancient things. Apr 9, 2015
videothreader.cpp Futex the thread_once function. Sep 2, 2015
window-gtk3-inner.cpp D3D9Ex is available on systems with non-broken headers. Also various … May 8, 2016
window-gtk3-listbox.cpp D3D9Ex is available on systems with non-broken headers. Also various … May 8, 2016
window-gtk3-misc.cpp mutex2 works now. Aug 31, 2015
window-gtk3-shell.cpp Add some explainations to these ancient things. Apr 9, 2015
window-none.cpp Fix this to understand the latest headers. Jun 25, 2015
window-shared.cpp This header is too big. I'll split it. Dec 4, 2014
window-win32-inner.cpp Clean out most cruft from host.h. Fis MSVC build. Sep 8, 2015
window-win32-misc.cpp fix uninitialized memory access due to unterminated string list in wi… May 8, 2016
window-win32-shell.cpp More cppcheck fixes. Sep 28, 2015
window.h Fix a bunch of missing statics. Apr 7, 2015

README.md

minir

minir is a libretro frontend intended to complement RetroArch, by focusing on the usecases RetroArch is not focused on.

It's intended to match or exceed the power and usability of bsnes-qt (preferably exceed), both for beginners and advanced users. It does not intend to compete with RetroArch's feature set or portability; if you want the most advanced features, use RetroArch.

Screenshot Screenshot

Screenshot

libretro

The core of minir is a system known as libretro, which allows many different games and emulators to be built as shared libraries (known as 'libretro core'), which can then be used by several different libretro frontends.

The biggest advantage of libretro over standalone games/etc is that a feature (for example real-time rewind, or being ported to GameCube) can be written only once, and all the cores will benefit. While the feature would need to be implemented in multiple frontends, there are far fewer frontends than cores, and some features don't make sense in all fronts (while most features do make sense with most cores).

RetroArch

RetroArch was the first libretro frontend to be created, and still remains the main driving force behind libretro. While it is a powerful device, the author of minir does not share its design goals.

RetroArch minir
Prefered setup HTPC in fullscreen (many others supported) Desktop computers, windowed mode
Input method A gamepad (DualShock, Xbox, etc); use with keyboard and mouse is awkward Keyboard and mouse, gamepads not supported (yet?)
Menus Custom System native
Core support Full (limited by system hardware) Limited (currently)
Automatic core selection ? (it's been mentioned) Yes
Major features Real-time rewind, Dynamic Rate Control, user-defined shaders, netplay, low-latency fullscreen, ... Real-time rewind, maximally configurable hotkeys, (more to come)
(Note that this table is based on the minir author's views; the RetroArch authors' views may differ.)

List of features and planned features where the idea is from RetroArch:

  • libretro itself, of course
  • Dynamic Rate Control (unimplemented)
  • Real-time rewind
  • Rewind-based netplay (unimplemented)
  • Custom shaders (unfinished)

Compiling

Linux

./configure && make. Other Unix-likes are not supported.

On Debian, Ubuntu and derivates, you need the following: libgtk-3-dev libpulse-dev libgl1-mesa-dev mesa-common-dev

Windows - MinGW

The author recommends MinGW-w64, with CPU x86_64, threads Win32, any exception model and version, and these cores, to avoid requiring libwinpthread-1.dll nearby. This may require using an older version of MinGW, because Win32 threads are sometimes a few versions late.

Everything else is included with MinGW, at least the version I tried (5.2.0-rev0). If (and ONLY IF, don't do it "just in case") you get errors, see this (follow either the OpenGL or Direct3D sections depending on what errors are thrown). video-direct3d.cpp may also throw an error about IDirect3D9Ex and RegisterSoftwareDevice; see comments there for further instructions.

Once you've downloaded everything you need, use configure.bat then mingw32-make.

Windows - MSVC

To compile for Windows with MSVC, use mingw32-make -f Makefile.msvc from a MSVC command prompt (run any vcvars*.bat). MSVC 2008 and higher should work. configure.bat is not required. This configuration is considerably less tested than MinGW, and may be broken for extended periods of time.

Like older MinGWs, older (or possibly even less old) MSVCs may require some fixes to the header files. See MinGW instructions for further details.