My modified ROM loading process (launch images, bezel overlays, pause)
-
This project is still evolving and I am sure things can be done better. All input is welcome. :)
This is really designed for a kiosk-type arcade system where you don't want to have access to RGUI or the MAME menu. If you access the RGUI via a hotkey, the pause/overlay sequence gets out of whack. If you need access to anything in those menus, it is best to launch RGUI via the Retropie menu.
This is what I wanted to accomplish...
- Display the launch image until the game starts (not wait for the launch image to close before starting the game)
- Start the game paused and muted (some games don't pause fast enough and they make noise in the background (i.e. Defender))
- Display a bezel overlay that shows controls on first start while the game is paused/muted
- Allow the user to continue by pressing a key/button after they have reviewed the controls
- At that point, the game is unpaused, unmuted and the bezel overlay switches to a transparent one
- The user can press the pause button/key at any point again to pause the game and see the the controls (the overlay bezel is switched back to the controls one)
Here is a quick video to show you the final product.
Requirements:
- Disable the runcommand menu (currently non-functional with this solution)
/opt/retropie/configs/all/runcommand.cfg
- disable_menu = "1"
- Enable advanced menu settings in Retroarch:
- menu_show_advanced_settings = "true"
- Enable logging in Retroarch:
- log_to_file = "true"
- log_to_file_timestamp = "false"
- log_verbosity = "true"
- libretro_log_level = "1"
- frontend_log_level = "1"
- Enable network commands in Retroarch:
- network_cmd_enable = "true"
- network_cmd_port = "55355" <-- or whatever port you want to use
- As @Clyde has stated in another thread, launch images need to be in a separate folder (i.e ~/Retropie/roms/arcade/images/launching/mslug-launching.png)
- If they are in one of the two default locations where ES looks for launch images, this solution will not work
- Is there a way to completely disable the launch image function in RP so we can store the images with the rest?
Optional:
- Mute Retroarch:
- audio_mute_enable = "true"
- Disable Retroarch notifications and widgets:
- video_font_enable = "false"
- menu_enable_widgets = "false"
There are 2 scripts that are required:
/opt/retropie/configs/all/runcommand-onstart.sh
#! /bin/bash ARCH=$(uname -m) SYSTEM="$1" RACORE="$2" ROMPATH="$3" ROM_BN_EXT="${ROMPATH##*/}" ROM_BN="${ROM_BN_EXT%.*}" LAUNCHIMAGE="/home/pi/RetroPie/roms/$1/images/launching/$ROM_BN-launching.png" case $ARCH in armv7l) fbi -1 -t 0 -noverbose -a "$LAUNCHIMAGE" </dev/tty &>/dev/null & IMAGEVIEWER="fbi" ;; i386 | i686 | x86_64) feh -F -N -Z -Y -q "$LAUNCHIMAGE" & &>/dev/null & IMAGEVIEWER="feh" ;; *) ;; esac export RACORE export IMAGEVIEWER ( /opt/retropie/configs/all/pause.sh ) &
For now, you will need to comment/uncomment the appropriate lines to support launch images based on your platform (. The script above will run eitherfeh
for x86 orfbi
for RPI). I'll add code later to do this intelligentlyfeh
orfbi
to display the launch images based on your architecture. We capture a few variables to use for the launch image code and then we then write the value of the $2 variable and export it for use in the 2nd script which is called by the last line./opt/retropie/configs/all/pause.sh
#!/bin/bash case $RACORE in lr-flycast) searchstring="NAOMI GAME ID" ;; lr-fbneo) searchstring="successfully started" ;; lr-mame2003-plus) searchstring="Succesfully loaded ROMs" ;; lr-snes9x | lr-prosystem) searchstring="Loaded 1 program" ;; *) ;; esac timeout 5 tail -f /opt/retropie/configs/all/retroarch/logs/retroarch.log | while read LOGLINE do [[ "${LOGLINE}" == *$searchstring* ]] && pkill -P $$ tail done killall "$IMAGEVIEWER" sleep 1 echo -n "PAUSE_TOGGLE" | nc -u -w1 127.0.0.1 55355 | echo -n "MUTE" | nc -u -w1 127.0.0.1 55355
Basically what the above script does is tail the Retroarch logfile and look for the string that indicates that the ROM has completely loaded. It is different for different cores so that is why you see the case statement. New statements can be added to accommodate other cores. My immediate need was for only the Arcade cores. Once tail finds the correct string, the script kills it and the launch image viewer (
feh
). The last line sends pause and mute (unmute in this case) network commands to Retroarch.I should also mention that both scripts need to have execute perms for user
pi
. One of my other routines is to also rundos2unix
against both scripts as modifying them in Notepad (or even Notepad++) can cause ill effects and prevent them from running.dos2unix
can be installed like any otehr app:sudo apt install dos2unix
You will also need to have your bezel overlays and corresponding config files in order:
/opt/retropie/configs/all/retroarch/config/$system/
(accessible via Samba share \IP\configs\all\retroarch\config\$System). Below is an example for 19xx using FBNeo:/opt/retropie/configs/all/retroarch/config/FinalBurn Neo/19xx.cfg
overlay_directory = "/opt/retropie/configs/all/retroarch/overlay/ArcadeBezels/" input_overlay_enable = true input_overlay_hide_in_menu = true input_overlay = "/opt/retropie/configs/all/retroarch/overlay/ArcadeBezels/19xx.cfg" input_overlay_opacity = 1.0 input_overlay_scale = 1.0 input_overlay_next = "p"
input_overlay_next
is mapped to the same key/button as pause (p in this case)./opt/retropie/configs/all/retroarch/overlay/
(accessible via Samba share \IP\configs\all\retroarch\overlay). Below is an example for 19xx using FBNeo (I'm using The Bezel Project bezels):/opt/retropie/configs/all/retroarch/overlay/ArcadeBezels/19xx.cfg
overlays = 2 overlay0_overlay = 19xx-controls.png overlay1_overlay = 19xx.png overlay1_name = "19xx" overlay0_full_screen = true overlay1_full_screen = true overlay0_descs = 1 overlay0_desc0 = "overlay_next,400,460,rect,40,20" overlay0_desc0_next_target = "19xx" overlay1_descs = 0
If you did this right (or as long as I didn't forget a step), you should now have Retroarch running, the ROM fully loaded, the game paused and unmuted, and, displaying your controls bezel overlay. Pressing the pause key/button will unpause the game and switch to the normal bezel overlay that shows gameplay.
Adding additional cores to the case statement
Let's say that I want to add SNES to this workflow. The first thing I need to know is what key string in the
retroarch.log
indicates that the ROM has been loaded. In order to get this, I launch an SNES ROM, let it load and then exit. I then look in the/opt/configs/all/retroarch/logs/retroarch.log
for my my candidate for the key string:[INFO] RetroArch 1.8.8 (Git 9552f87) [INFO] Redirecting save file to "/home/pi/RetroPie/roms/snes/Aaahh!!! Real Monsters (USA).srm". [INFO] Redirecting save state to "/home/pi/RetroPie/roms/snes/Aaahh!!! Real Monsters (USA).state". [INFO] === Build ======================================= [INFO] CPU Model Name: Intel(R) Core(TM) i7-4785T CPU @ 2.20GHz [INFO] Capabilities: MMX MMXEXT SSE SSE2 SSE3 SSSE3 SSE4 SSE4.2 AES AVX [INFO] Built: Jul 2 2020 [INFO] Version: 1.8.8 [INFO] Git: 9552f87 [INFO] ================================================= [INFO] Loading dynamic libretro core from: "/opt/retropie/libretrocores/lr-snes9x/snes9x_libretro.so" [INFO] [Overrides] no core-specific overrides found at /home/pi/.config/retroarch/config/Snes9x/Snes9x.cfg. [INFO] [Overrides] no content-dir-specific overrides found at /home/pi/.config/retroarch/config/Snes9x/snes.cfg. [INFO] [Overrides] no game-specific overrides found at /home/pi/.config/retroarch/config/Snes9x/Aaahh!!! Real Monsters (USA).cfg. [INFO] [Environ]: GET_LANGUAGE: "0". [INFO] [Environ]: RETRO_ENVIRONMENT_SET_CORE_OPTIONS_INTL. [INFO] [Environ]: SET_CONTROLLER_INFO. [INFO] [Remaps]: remap directory: /opt/retropie/configs/snes/ [INFO] Redirecting save file to "/home/pi/RetroPie/roms/snes/Aaahh!!! Real Monsters (USA).srm". [INFO] Redirecting save state to "/home/pi/RetroPie/roms/snes/Aaahh!!! Real Monsters (USA).state". [INFO] [Environ]: GET_LOG_INTERFACE. [INFO] [Environ]: SYSTEM_DIRECTORY: "/home/pi/RetroPie/BIOS". [INFO] [Environ]: SET_SUPPORT_ACHIEVEMENTS: yes. [INFO] [Environ]: PERFORMANCE_LEVEL: 12. [INFO] Loading content file: /tmp/retroarch/Aaahh!!! Real Monsters (USA).sfc. [INFO] Did not find a valid content patch. [INFO] [Environ]: SET_INPUT_DESCRIPTORS: [INFO] [Environ]: RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY. [INFO] [Environ]: RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY. [INFO] [Environ]: RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY. [INFO] [Environ]: RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY. [INFO] [Environ]: RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY. [INFO] [Environ]: RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY. [INFO] [Environ]: RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY. [INFO] [Environ]: RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY. [INFO] [Environ]: RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY. [INFO] [Environ]: RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY. [INFO] [Environ]: RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY. [INFO] [Environ]: RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY. [INFO] [Environ]: RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY. [INFO] [Environ]: RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY. [INFO] [Environ]: RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY. [INFO] [Environ]: RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY. [INFO] [Environ]: RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY. [INFO] [Environ]: RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY. [INFO] [Environ]: RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY. [INFO] [Environ]: RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY. [INFO] [Environ]: RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY. [INFO] [Environ]: RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY. [INFO] [Environ]: RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY. [INFO] [Environ]: RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY. [INFO] [Environ]: RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY. [libretro INFO] "REAL MONSTERS" [checksum ok] LoROM, 16Mbits, ROM, NTSC, SRAM:0Kbits, ID:ANNE, CRC32:27FF5BA1 [INFO] [Environ]: SET_PIXEL_FORMAT: RGB565. [INFO] Skipping SRAM load.. [INFO] Version of libretro API: 1 [INFO] Compiled against API: 1 [INFO] [Cheats]: Load game-specific cheatfile: /home/pi/.config/retroarch/cheats/Snes9x/Aaahh!!! Real Monsters (USA).cht [INFO] [Audio]: Set audio input rate to: 31987.32 Hz. [INFO] [Video]: Video @ 1920x1080 [ERROR] [Wayland]: Failed to connect to Wayland server. [INFO] [GL]: Found GL context: x [INFO] [GL]: Detecting screen resolution 1920x1080. [INFO] [GLX]: Window manager is Openbox. [INFO] [XINERAMA]: Xinerama version: 1.1. [INFO] [XINERAMA]: Xinerama screens: 1. [INFO] [GLX]: Using Xinerama on screen #0. [INFO] [GLX]: X = 0, Y = 0, W = 1920, H = 1080. [INFO] [GLX]: Using windowed fullscreen. [INFO] [GLX]: Found swap function: glXSwapIntervalEXT. [INFO] [GLX]: glXSwapInterval(1) [INFO] [GL]: Vendor: Intel Open Source Technology Center, Renderer: Mesa DRI Intel(R) Haswell Desktop . [INFO] [GL]: Version: 3.0 Mesa 19.2.8. [INFO] [GL]: Using resolution 1920x1080 [INFO] [GL]: Default shader backend found: glsl. [INFO] [Shaders]: preset directory: /home/pi/.config/retroarch/config [INFO] [Shaders]: preset directory: /opt/retropie/configs/snes/ [INFO] [Shaders]: preset directory: /home/pi/.config/retroarch/shaders/presets [INFO] [Shader driver]: Using GLSL shader backend. [INFO] [GLSL]: Checking GLSL shader support ... [WARN] [GL]: Stock GLSL shaders will be used. [INFO] [GLSL]: Found GLSL vertex shader. [INFO] [GLSL]: Found GLSL fragment shader. [INFO] [GLSL]: Linking GLSL program. [INFO] [GLSL]: Found GLSL vertex shader. [INFO] [GLSL]: Found GLSL fragment shader. [INFO] [GLSL]: Linking GLSL program. [INFO] [GLSL]: Found GLSL vertex shader. [INFO] [GLSL]: Found GLSL fragment shader. [INFO] [GLSL]: Linking GLSL program. [INFO] [GL]: Using 4 textures. [INFO] [GL]: Loaded 1 program(s). [INFO] [GL]: Using GL_RGB565 for texture uploads. [INFO] [Joypad]: Found joypad driver: "udev". [INFO] [Font]: Using font rendering backend: stb-unicode. [INFO] [X11]: Suspending screensaver (X11, xdg-screensaver). [INFO] [Video]: Found display server: x11 [INFO] Found shader "/home/pi/.config/retroarch/shaders/bilinear.cgp" [INFO] Found shader "/home/pi/.config/retroarch/shaders/bilinear.glslp" [INFO] Found shader "/home/pi/.config/retroarch/shaders/nearest.cgp" [INFO] Found shader "/home/pi/.config/retroarch/shaders/nearest.glslp" [INFO] Found shader "/home/pi/.config/retroarch/shaders/old-stock.cg" [INFO] Found shader "/home/pi/.config/retroarch/shaders/slang-conversion-template.glsl" [INFO] Found shader "/home/pi/.config/retroarch/shaders/stock.cg" [INFO] Found shader "/home/pi/.config/retroarch/shaders/stock.glsl" [INFO] [PulseAudio]: Requested 24576 bytes buffer, got 18432. [INFO] [Menu]: Found menu display driver: "gl". [INFO] [Environ]: SET_SUBSYSTEM_INFO. [INFO] [LED]: LED driver = 'null' 0x560486560260 [INFO] [MIDI]: Initializing ... [INFO] [MIDI]: Input disabled. [INFO] [MIDI]: Output disabled. [INFO] [MIDI]: Initialized "alsa" driver. [INFO] bringing_up_command_interface_at_port 55355. [INFO] Loading history file: [/opt/retropie/configs/all/content_history.lpl]. [INFO] Loading history file: [/opt/retropie/configs/all/content_music_history.lpl]. [INFO] Loading history file: [/opt/retropie/configs/all/content_video_history.lpl]. [INFO] Loading history file: [/opt/retropie/configs/all/content_image_history.lpl]. [INFO] Loading favorites file: [/opt/retropie/configs/all/content_favorites.lpl]. [INFO] [GL]: VSync => on [INFO] [GLX]: glXSwapInterval(1) [INFO] Written to playlist file: /opt/retropie/configs/all/content_history.lpl [INFO] [Environ]: SET_GEOMETRY. [INFO] [Cheats]: Save game-specific cheatfile: /home/pi/.config/retroarch/cheats/Snes9x/Aaahh!!! Real Monsters (USA).cht [INFO] Content ran for a total of: 00 hours, 00 minutes, 07 seconds. [INFO] Unloading game.. [INFO] [PulseAudio]: Pausing. [INFO] Unloading core.. [INFO] Unloading core symbols.. [INFO] [Core Options]: Saved core options file to "/opt/retropie/configs/all/retroarch-core-options.cfg" [INFO] [XINERAMA]: Xinerama version: 1.1. [INFO] [XINERAMA]: Xinerama screens: 1. [INFO] [XINERAMA]: Saved monitor #0. [INFO] [Video]: Does not have enough samples for monitor refresh rate estimation. Requires to run for at least 4096 frames. [INFO] Removing temporary content file: /tmp/retroarch/Aaahh!!! Real Monsters (USA).sfc. [INFO] [Video]: Does not have enough samples for monitor refresh rate estimation. Requires to run for at least 4096 frames.
This is now trial and error. The first string I will try is...
[libretro INFO] "REAL MONSTERS" [checksum ok] LoROM, 16Mbits, ROM, NTSC, SRAM:0Kbits, ID:ANNE, CRC32:27FF5BA1
So I will add
[checksum ok]
to my case statement inpause.sh
and see if it works.case $RACORE in lr-flycast) searchstring="NAOMI GAME ID" ;; lr-fbneo) searchstring="successfully started" ;; lr-mame2003-plus) searchstring="Succesfully loaded ROMs" ;; lr-snes9x) searchstring="[checksum ok]" ;; *) ;;
That string didn't work since the game never paused. I move down the retroarch.log until I find one that does. I finally landed on
Loaded 1 program
case $RACORE in lr-flycast) searchstring="NAOMI GAME ID" ;; lr-fbneo) searchstring="successfully started" ;; lr-mame2003-plus) searchstring="Succesfully loaded ROMs" ;; lr-snes9x) searchstring="Loaded 1 program" ;; *) ;;
I now test with a few different SNES ROMs just to make sure the results are consistent and they were.
Just remember...whenever you modify the
pause.sh
file, you may need tochmod +x
it anddos2unix
it. After each attempt, you may need tops -aux
to see iftail
is still running. If so, kill it.Game is paused and muted behind this overlay. :)
Unpaused. :)
I welcome all feedback. Please be sure to point out any errors above as I typed this mostly from memory.
John
-
UPDATES
05JUL20:
- Added a timeout to the tail command to prevent it from running infinitely if a case is not found. The timeout value can be adjusted to suit your needs.
- Fixed launch image code.
- Added support for RPI launch images (previously x86 only)
- Use case to determine architecture and run either
feh
orfbi
. Also write it to an exported variable to kill the proper process.
-
RESERVED
-
Naomi (lr-flycast) - Marvel vs. Capcom 2 - New Age of Heroes
-
Does anyone know if RA has different runtime levels (if any at all)?
I'd love to trap a runtime rather than have to use
tail
to determine when a ROM is fully loaded. -
Looks like the code to show the launch image is not handling files with spaces very well. This is what is written to the runcommand logfile when I try to launch
Aero Fighters (USA).zip
pi@elitedesk:~$ cat /dev/shm/runcommand.log basename: extra operand ‘(USA).zip’ Try 'basename --help' for more information. feh: No loadable images specified. See 'man feh' for detailed usage information Parameters: Executing: /opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/lr-snes9x/snes9x_libretro.so --config /opt/retropie/configs/snes/retroarch.cfg "/home/pi/RetroPie/roms/snes/Aero Fighters (USA).zip" --appendconfig /dev/shm/retroarch.cfg tail: /opt/retropie/configs/all/retroarch/logs/retroarch.log: file truncated feh: no process found
I'll see if I can sort this out.
-
OK...now it is a complete mystery to me how this code even launches the images.
launchpic="$(dirname ${3})/images/launching/$(basename $3 .zip)-launching.png" feh -F -N -Z -Y -q "$launchpic" & &>/dev/null &
When I
echo "$launchpic"
, this is the response I get...pi@elitedesk:/opt/retropie/configs/all$ echo "$launchpic" /images/launching/.zip-launching.png
How in the world is
feh
even getting the correct path to show the image??? I even went as far as to manually set launchpic="0" and ran the script again. The value didn't change (still 0 as shown with aset
command) butfeh
still displayed the image.Soooooo confused!
-
Fixed the launch image code with this...
#! /bin/bash SYSTEM="$1" RACORE="$2" ROMPATH="$3" ROM_BN_EXT="${ROMPATH##*/}" ROM_BN="${ROM_BN_EXT%.*}" LAUNCHIMAGE="/home/pi/RetroPie/roms/$1/images/launching/$ROM_BN-launching.png" feh -F -N -Z -Y -q "$LAUNCHIMAGE" & &>/dev/null & ( /opt/retropie/configs/all/pause.sh ) &
OP has been updated.
-
Since I run RP on top of Ubuntu, I haven't been fully testing the RPI side of this. Right now the launch image code is foobar. Working on it.
-
@johnodon said in My modified ROM loading process (launch images, bezel overlays, pause):
Since I run RP on top of Ubuntu, I haven't been fully testing the RPI side of this. Right now the launch image code is foobar. Working on it.
This is now fixed. OP has been updated.
-
@johnodon said in My modified ROM loading process (launch images, bezel overlays, pause):
/opt/retropie/configs/all/runcommand-onstart.sh
Hi @johnodon, great job! Unfortunately, I did find an issue when using your script, it seems that while using it we're unable to use retropie launch game menu (the one that shows when pressing a key just before game loads). It shows but I'm unable to control it. I'm using a Rpi 3b+ FYI.
-
@svera said in My modified ROM loading process (launch images, bezel overlays, pause):
Hi @johnodon, great job! Unfortunately, I did find an issue when using your script, it seems that while using it we're unable to use retropie launch game menu (the one that shows when pressing a key just before game loads). It shows but I'm unable to control it. I'm using a Rpi 3b+ FYI.
I'll look into that but personally I turn off the runcommand menu as I have no use for it. I define per-game emulators in
/opt/retropie/configs/all/emulators.cfg
.John
-
This is an awesome project! Makes a cab so much slicker. Great job, @johnodon.
-
@WeirdH said in My modified ROM loading process (launch images, bezel overlays, pause):
This is an awesome project! Makes a cab so much slicker. Great job, @johnodon.
Glad you like it.
I have been hand selecting each and every ROM and building my overlays accordingly. I have been using BezelProject bezels but there are a LOT of issues with them if you have OCD like I do. I have been cleaning them up one-by-one. It's painstaking but I'm currently at 186 games completed. I'd like to land in the 400 - 500 range eventually.
John
-
How can I make the images launch using these as the image path?
LAUNCHIMAGE="/home/pi/RetroPie/roms/$1/downloaded_images/$ROM_BN_screenscraper_boxart_arrm.png"
it works if I do this.
LAUNCHIMAGE="/home/pi/RetroPie/roms/$1/downloaded_images/$ROM_BN-screenscraper-boxart-arrm.png"
I need to figure out to swap - for _
-
@johnodon, have you used RetroX for Android? It has a similar function to show a launch image during loading and pause the game prior to launch to show controls, which I really like. I was looking for a way to add that to my Retropie build and came across your project. It looks great, awesome job! Not sure I'd have the patience to add this to my games one by one though; maybe on a future, specialized arcade build.
-
@johnodon Awesome work! Have been looking for ways to up the game on a new cabinet and this looks amazing. Will work on it and report back with any issues.
What theme is that in the first video you posted? Looks like it's from Hursty, but I haven't found a good way to visually scroll throughall the 1000's he has to find a specific one, lol
-
@pillbug22 said in My modified ROM loading process (launch images, bezel overlays, pause):
@johnodon Awesome work! Have been looking for ways to up the game on a new cabinet and this looks amazing. Will work on it and report back with any issues.
What theme is that in the first video you posted? Looks like it's from Hursty, but I haven't found a good way to visually scroll throughall the 1000's he has to find a specific one, lol
Theme is from here (see the link at top of first post) but it is not a full theme and I adapted it for my needs: https://retropie.org.uk/forum/topic/10806/neo-geo-x-build
John
-
@johnodon perfect - thank you much!
-
@pillbug22 said in My modified ROM loading process (launch images, bezel overlays, pause):
@johnodon perfect - thank you much!
I'll go on record as saying that I have abandoned most of this approach...well...half of it. I still use the 2 different overlays but I don't pause the ROM at start. I switched around the gameplay-overlay and the control-overlay and just tell people to push the Play/Pause button at any time to pause the game and see the controls. But the ROM starts straight away as normal.
John
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.