[Tutorial] CD-I Emulation in RetroPie via lr-mess (warning: slowdown, especially during FMV, but surprisingly playable)
-
I know this an old thread but still I found the way to load cdi games true es_systems.cfg on the windows version of es. it's documented here https://github.com/danyboy666/es_systems/blob/master/win/.emulationstation/es_systems.cfg
the bat script isn't needed use this instead in es_systems.cfg
<command>%HOME%.emulationstation\systems\retroarch\retroarch.exe -L %HOME%.emulationstation\systems\retroarch\cores\mame_libretro.dll %HOME%.emulationstation\roms\cdimono1%BASENAME%.txt</command>for linux there is no lr_mame.so core i'm not sure which core is equivalent to mame_libretro.dll version of windows but the syntax should be really similar for linux. I will most likely test a way fo linux sometime and update my git.
-
I followed the tutorial but the games do not start, they return to the selection screen.
I used lr-mess2016 and not lr-mess. as a folder I used ARCADE
have you already tried with lr-mess2016? where could I have been wrong? thanksMy specs:
Raspberry Pi 3B
RetroPie 4.4.2
No overclocking -
I have this error:
Parameters:
Executing: /opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/lr-mess2016/mess2016_libretro.so --config /opt/retropie/configs/arcadia/retroarch.cfg "/home/pi/RetroPie/roms/arcadia/hotmario.chd" --appendconfig /dev/shm/retroarch.cfg
[INFO] RetroArch 1.7.3 (Git b2ceb50)
[INFO] Redirecting save file to "/home/pi/RetroPie/roms/arcadia/hotmario.srm".
[INFO] Redirecting savestate to "/home/pi/RetroPie/roms/arcadia/hotmario.state".
[INFO] === Build =======================================
Capabilities: NEON VFPv3 VFPv4
Built: May 14 2018
[INFO] Version: 1.7.3
[INFO] Git: b2ceb50
[INFO] =================================================
[INFO] Loading dynamic libretro core from: "/opt/retropie/libretrocores/lr-mess2016/mess2016_libretro.so"
[INFO] [overrides] no core-specific overrides found at /home/pi/.config/retroarch/config/MAME 2016/MAME 2016.cfg.
[INFO] [overrides] no game-specific overrides found at /home/pi/.config/retroarch/config/MAME 2016/hotmario.cfg.
[INFO] Shaders: preset directory: /home/pi/.config/retroarch/shaders/presets
[INFO] Shaders: no game-specific preset found at /home/pi/.config/retroarch/shaders/presets/MAME 2016/hotmario.cgp.
[INFO] Shaders: no game-specific preset found at /home/pi/.config/retroarch/shaders/presets/MAME 2016/hotmario.glslp.
[INFO] Shaders: no parent-dir-specific preset found at /home/pi/.config/retroarch/shaders/presets/MAME 2016/arcadia.cgp.
[INFO] Shaders: no parent-dir-specific preset found at /home/pi/.config/retroarch/shaders/presets/MAME 2016/arcadia.glslp.
[INFO] Shaders: no core-specific preset found at /home/pi/.config/retroarch/shaders/presets/MAME 2016/MAME 2016.cgp.
[INFO] Shaders: no core-specific preset found at /home/pi/.config/retroarch/shaders/presets/MAME 2016/MAME 2016.glslp.
[INFO] Environ SET_VARIABLES.
[INFO] Remaps: remap directory: /opt/retropie/configs/arcadia/
[INFO] Remaps: no game-specific remap found at /opt/retropie/configs/arcadia/MAME 2016/hotmario.rmp.
[INFO] Remaps: no core-specific remap found at /opt/retropie/configs/arcadia/MAME 2016/MAME 2016.rmp.
[INFO] Redirecting save file to "/home/pi/RetroPie/roms/arcadia/hotmario.srm".
[INFO] Redirecting savestate to "/home/pi/RetroPie/roms/arcadia/hotmario.state".
[INFO] Environ GET_LOG_INTERFACE.
[INFO] Environ SYSTEM_DIRECTORY: "/home/pi/RetroPie/BIOS".
[libretro INFO] SYSTEM_DIRECTORY: /home/pi/RetroPie/BIOS[INFO] Environ CORE_ASSETS_DIRECTORY: "/home/pi/.config/retroarch/downloads".
[libretro INFO] CONTENT_DIRECTORY: /home/pi/.config/retroarch/downloads[libretro INFO] SAVE_DIRECTORY: /home/pi/RetroPie/roms/arcadia/[INFO] Environ SET_PIXEL_FORMAT: RGB565.
[INFO] Content loading skipped. Implementation will load it on its own.
[INFO] Environ GET_VARIABLE mame2016_boot_from_cli:
[INFO] disabled
[INFO] Environ GET_VARIABLE mame2016_mouse_enable:
[INFO] disabled
[INFO] Environ GET_VARIABLE mame2016_throttle:
[INFO] disabled
[INFO] Environ GET_VARIABLE mame2016_nobuffer:
[INFO] N/A
[INFO] Environ GET_VARIABLE mame2016_cheats_enable:
[INFO] disabled
[INFO] Environ GET_VARIABLE mame2016_hide_nagscreen:
[INFO] N/A
[INFO] Environ GET_VARIABLE mame2016_hide_infoscreen:
[INFO] N/A
[INFO] Environ GET_VARIABLE mame2016_hide_warnings:
[INFO] N/A
[INFO] Environ GET_VARIABLE mame2016_alternate_renderer:
[INFO] disabled
[INFO] Environ GET_VARIABLE mame2016_boot_to_osd:
[INFO] disabled
[INFO] Environ GET_VARIABLE mame2016_read_config:
[INFO] disabled
[INFO] Environ GET_VARIABLE mame2016_auto_save:
[INFO] disabled
[INFO] Environ GET_VARIABLE mame2016_saves:
[INFO] game
[INFO] Environ GET_VARIABLE mame2016_media_type:
[INFO] rom
[INFO] Environ GET_VARIABLE mame2016_softlists_enable:
[INFO] enabled
[INFO] Environ GET_VARIABLE mame2016_softlists_auto_media:
[INFO] enabled
[INFO] Environ GET_VARIABLE mame2016_boot_to_bios:
[INFO] disabled
[INFO] Environ GET_VARIABLE mame2016_write_config:
[INFO] disabled
[INFO] Skipping SRAM load..
[INFO] Version of libretro API: 1
[INFO] Compiled against API: 1
[INFO] Environ GET_VARIABLE mame2016_boot_from_cli:
[INFO] disabled
[INFO] Environ GET_VARIABLE mame2016_mouse_enable:
[INFO] disabled
[INFO] Environ GET_VARIABLE mame2016_throttle:
[INFO] disabled
[INFO] Environ GET_VARIABLE mame2016_nobuffer:
[INFO] N/A
[INFO] Environ GET_VARIABLE mame2016_cheats_enable:
[INFO] disabled
[INFO] Environ GET_VARIABLE mame2016_hide_nagscreen:
[INFO] N/A
[INFO] Environ GET_VARIABLE mame2016_hide_infoscreen:
[INFO] N/A
[INFO] Environ GET_VARIABLE mame2016_hide_warnings:
[INFO] N/A
[INFO] Environ GET_VARIABLE mame2016_alternate_renderer:
[INFO] disabled
[INFO] Environ GET_VARIABLE mame2016_boot_to_osd:
[INFO] disabled
[INFO] Environ GET_VARIABLE mame2016_read_config:
[INFO] disabled
[INFO] Environ GET_VARIABLE mame2016_auto_save:
[INFO] disabled
[INFO] Environ GET_VARIABLE mame2016_saves:
[INFO] game
[INFO] Environ GET_VARIABLE mame2016_media_type:
[INFO] rom
[INFO] Environ GET_VARIABLE mame2016_softlists_enable:
[INFO] enabled
[INFO] Environ GET_VARIABLE mame2016_softlists_auto_media:
[INFO] enabled
[INFO] Environ GET_VARIABLE mame2016_boot_to_bios:
[INFO] disabled
[INFO] Environ GET_VARIABLE mame2016_write_config:
[INFO] disabled
[libretro INFO] AV_INFO: width=640 height=480
[libretro INFO] AV_INFO: max_width=640 max_height=480
[libretro INFO] AV_INFO: aspect_ratio = 1.333333
[libretro INFO] AV_INFO: fps = 60.000000 sample_rate = 48000.000000
[INFO] [Audio]: Set audio input rate to: 48000.00 Hz.
[INFO] [Video]: Video @ 2559x1440
[INFO] [Video]: Starting threaded video driver ...
[INFO] [EGL] Falling back to eglGetDisplay
[INFO] [EGL]: EGL version: 1.4
[INFO] [EGL]: Current context: 0x1.
[INFO] [GL]: Found GL context: videocore
[INFO] [GL]: Detecting screen resolution 1920x1080.
[INFO] [EGL]: eglSwapInterval(1)
[INFO] [GL]: Vendor: Broadcom, Renderer: VideoCore IV HW.
[INFO] [GL]: Version: OpenGL ES 2.0.
[INFO] Querying EGL extension: KHR_image => exists
[WARN] [GL]: GLES implementation does not have BGRA8888 extension.
32-bit path will require conversion.
[INFO] [GL]: Using resolution 1920x1080
[INFO] [GL]: Default shader backend found: glsl.
[INFO] [Shader driver]: Using GLSL shader backend.
[WARN] [GL]: Stock GLSL shaders will be used.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] Shader log: Compiled
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] Shader log: Compiled
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] Shader log: Compiled
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] Shader log: Compiled
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] Shader log: Compiled
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] Shader log: Compiled
[INFO] [GLSL]: Linking GLSL program.
[INFO] Resetting shader to defaults ...
[INFO] [GL]: Using 4 textures.
[INFO] [GL]: Loaded 1 program(s).
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Video]: Graphics driver did not initialize an input driver. Attempting to pick a suitable driver.
[INFO] [udev]: Keyboard #0 (/dev/input/event1).
[INFO] [udev]: Keyboard #1 (/dev/input/mouse0).
[ERROR] [udev] Failed to open device: /dev/input/event1 (Invalid argument).
[INFO] [udev]: Mouse #0 (/dev/input/mouse0).
[INFO] [udev]: Plugged pad: Microntek USB Joystick (121:6) on port #0.
[INFO] [udev]: Pad #0 (/dev/input/event0) supports 0 force feedback effects.
[INFO] [Autoconf]: 2 profiles found.
[INFO] [autoconf]: selected configuration: /home/pi/.config/retroarch/autoconfig/Microntek USB Joystick .cfg
[INFO] [Joypad]: Found joypad driver: "udev".
[WARN] [udev]: Full-screen pointer won't be available.
[INFO] [Video]: Found display server: null
[INFO] Found shader "/home/pi/.config/retroarch/shaders/2xsal-level2-crt.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/2xsal.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/2xScaleHQ.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/barrel-distortion.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/barrel-distortion_lanczos4.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/barrel-distortion_phosphor.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/barrel-distortion_snes.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/Brighter-with_Contrast.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/bsnes_gamma_ramp.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/crt-pi-curvature-vertical.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/crt-pi-curvature.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/crt-pi-vertical.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/crt-pi.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/gameboy-screen-grid.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/gameboy.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/gameboy2.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/gba-color.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/hq2x&lcd3x.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/hq2x.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/hq2x2.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/hq2x_lcd3x.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/hq2x_phosphor.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/hq2xwaterpaint.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/hq2xwaterpaintscanline.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/hq4x.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/hq4x_lcd3x.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/nds-color.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/nds.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/nedi.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/palm-color.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/phosphor.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/psp-color.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/sharp-bilinear-2x-prescale.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/sharp-bilinear-scanlines.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/sharp-bilinear-simple.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/snes.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/snes2.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/snes_hq2x.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/snes_hq2xwaterpaint.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/snes_hq2xwaterpainthicontrast.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/snes_hq2xwaterpaintscanline.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/snes_lcd3x.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/snes_phosphor.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/snes_scanline.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/snes_waterpaint.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/stock.glsl"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/super-2xsai.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/super-eagle.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/vba-color.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/xbr-lv1-noblend.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/zfast_crt_curve.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/zfast_crt_curve_vertical.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/zfast_crt_standard.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/zfast_crt_standard_vertical.glslp"
[INFO] Found shader "/home/pi/.config/retroarch/shaders/zfast_lcd_standard.glslp"
[INFO] ALSA: Using signed 16-bit format.
[INFO] ALSA: Period size: 384 frames
[INFO] ALSA: Buffer size: 1536 frames
[INFO] [LED]: LED driver = 'null' 0x1f98cc
[INFO] Loading history file: [/opt/retropie/configs/arcadia/content_history.lpl].
[INFO] Loading history file: [/opt/retropie/configs/arcadia/content_favorites.lpl].
[INFO] Loading history file: [/opt/retropie/configs/arcadia/content_music_history.lpl].
[INFO] Loading history file: [/opt/retropie/configs/arcadia/content_image_history.lpl].
[libretro INFO] Starting game:/home/pi/RetroPie/roms/arcadia/hotmario.chd
[libretro WARN] Driver hotmario not found -1
[libretro ERROR] Driver not found hotmario
[libretro INFO] Game name: arcadia, Game description: Arcadia 2001
[libretro INFO] Creating frontend for game: hotmario
[libretro INFO] Softlists: 1"hotmario" approximately matches the following
supported software items (best match first):/opt/retropie/supplementary/runcommand/runcommand.sh: riga 1008: 1163 Errore di segmentazione /opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/lr-mess2016/mess2016_libretro.so --config /opt/retropie/configs/arcadia/retroarch.cfg "/home/pi/RetroPie/roms/arcadia/hotmario.chd" --appendconfig /dev/shm/retroarch.cfg
-
Congrats, now you can play the worst Zelda games ever made (yes, supposedly worse than Zelda II...)
-
I do not like Zelda
I was interested in the game "the apprentice" and others ...I also tried with the cdimono1 folder, but the problem persists :(
[libretro INFO] Starting game:/home/pi/RetroPie/roms/cdimono1/hotmario.txt
[libretro WARN] Driver hotmario not found -1
[libretro ERROR] Driver not found hotmario
[libretro INFO] Game name: cdimono1, Game description: CD-i (Mono-I) (PAL)
[libretro INFO] Creating frontend for game: hotmario
[libretro INFO] Softlists: 1"hotmario" approximately matches the following
supported software items (best match first):/opt/retropie/supplementary/runcommand/runcommand.sh: riga 1008: 2577 Errore di segmentazione /opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/lr-mess2016/mess2016_libretro.so --config /opt/retropie/configs/cdimono1/retroarch.cfg "/home/pi/RetroPie/roms/cdimono1/hotmario.txt" --appendconfig /dev/shm/retroarch.cfg
tnx :)
-
Here's a discovery I made that I was gonna put in my own lr-mess tutorial, but since that didn't really work out well I'm gonna put it here instead:
MESS works differently from a standard emulator, in that it can only load ROMs that are confirmed to be "authentic", instead of just taking any data you give it and reading it blindly. The way it checks this is by using a checksum located in a hash file. For example, let's say I wanted to load Breakout for the Atari 2600 in MESS. In the hash file for the Atari 2600, Breakout's entry looks like this:
<software name="breakout"> <description>Breakout - Breakaway IV</description> <year>1978</year> <publisher>Atari</publisher> <part name="cart" interface="a2600_cart"> <dataarea name="rom" size="2048"> <rom name="breakout - breakaway iv (paddle) (1978) (atari, brad stewart - sears) (cx2622 - 6-99813, 49-75107).bin" size="2048" crc="3037638c" sha1="8d473b87b70e26890268e6c417c0bb7f01e402eb" offset="0" /> </dataarea> </part> </software>
The important parts of this entry are the
<rom>
tag and<software name>
tag. The former is what's used for the ZIP's file name, and the latter is what's used for both the ROM dump and the checksum MESS checks.Because of this, the only valid ROM that MESS will accept is a ZIP file named
breakout.zip
, containing a file namedbreakout - breakaway iv (paddle) (1978) (atari, brad stewart - sears) (cx2622 - 6-99813, 49-75107).bin
with the CRC-sum of3037638c
and a SHA1-sum of8d473b87b70e26890268e6c417c0bb7f01e402eb
.What this means is that you can simply check the hash files to see if you have valid ROM files, as well as check whether or not a system can run on lr-mess. And if you don't? Well, you can just modify the hash files to match your file, or if the system isn't supported, drag in a new XML from a newer build of MAME/MESS.
I discovered this when I was trying to get the FM Towns version of Marble Madness to run on lr-mess, only to find that Marble Madness wasn't included in the
fmtowns_cd.xml
file, and that adding it allowed the game to load.The hash files are located in
/home/pi/RetroPie/BIOS/mame/hash
if you want/need to modify them. ;) -
I created a file hotmario.zip with inside hotel mario (1994) (philips) (eu) [!]. chd
corresponding sha1
same error :( -
@hermit Hrm, I'm looking at your logs and you appear to be using lr-mess2016. Have you tried with just plain-jane lr-mess instead? lr-mess2016 always breaks when I try to use it.
-
it does not allow me to install. tells me that I miss the gcc 5.0
-
@hermit The start of the topic specifically mentions Raspbian Stretch - so if you haven't upgraded to it (using the 4.4 RetroPie image), you won't be able to install
lr-mess
. -
I used the function to update everything, but nothing has changed
do I have to use any particular function? -
@hermit said in [Tutorial] CD-I Emulation in RetroPie via lr-mess (warning: slowdown, especially during FMV, but surprisingly playable):
do I have to use any particular function?
No, as I said, you need the new image based on Raspbian Stretch, updating from RetroPie-Setup will not get you the new OS. Or, if you feel adventurous, you could use
apt-get
to upgrade from Jessie to Stretch - https://retropie.org.uk/forum/topic/16145/retropie-upgrading-raspbian-jessie-to-stretch. Note that the recommended way is to install the image from scratchFor RPI users it is recommended to start from a fresh image with this update. It is possible to upgrade the system from Jessie to Stretch but there have been reports of issues by some people when doing so.
(from https://retropie.org.uk/2018/04/retropie-4-4-is-released)
-
the update was not successful :(
I'll try with a new image. I will update you :)
thanks for everyone for the help -
@victimrlsh There are some good games on CD-i. Lords of the Rising Sun was one of my favorites. The Space Ace port was probably the best I've seen, other than the new PC ones. Ceasar's World of Boxing was also pretty good. Burn Cycle is another one that saw a lot of play time. And I still remember my whole family playing The 7th Guest together. Those were good times.
I remember Chaos Control, Escape From Cyber City, and Mad Dog McCree being pretty fun. Although Escape from Cyber City was impossibly hard. The zelda games aren't the best, but they're not complete garbage either. They did something different, and I enjoyed them well enough as a kid. If you go in with a super negative opinion, the game may even surprise you. -
@liquiddivide My favorite laser disc game was Cliff Hanger, which was pieced together from the Lupin III movie The Castle of Cagliostro. I highly recommend both the movie and the game.
-
@victimrlsh I'll have to give that one a try. Never heard of it.
-
@liquiddivide Just make sure your suspension of disbelief is high enough to surpass the laws of physics...
-
@db666 what you posted for windows is same result as posted in the guide and works under ES and emulators.cfg
:-) -
Figured I should necro-bump this thread with a bit of an update: since the Pi 4 is now officially supported by RetroPie as of 4.6 (even if it's only considered in a beta phase), I decided to test lr-mess with CD-i and I can confirm it now runs full-speed, at least with Hotel Mario. :)
I should note that I did overclock to 1.75ghz, but I don't think that is necessary to achieve fullspeed CD-i emulation in lr-mess (though I've yet to test without an overclock).
-
Another way to run CD-i (cdimono1) with MAME standalone (like MESS without Lr)
go in /opt/retropie/configs/cdimono1
open your emulators.cfgadd:
mame-CD-i= "/opt/retropie/emulators/mame/mame -c -autoframeskip cdimono1 -cdrm %ROM%"
To set your "Input (general)" and "Input(this Machine), follow step 10 and 11 of this Tutorial.
Tutorial: Handheld and Plug & Play systems with MAMEYou can use .chd without specific MAME naming and without dummy file.
-
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.