Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revisionBoth sides next revision
hardware:lcd_led_marquees [2022/02/07 11:13] – added scripting info about Pixelcade, added scripts from manually creating a PC + RPi4 combo marquee atarihardware:lcd_led_marquees [2022/06/17 04:56] – added note about this getting screwed over by upgrading to v34 atari
Line 25: Line 25:
   * Odroid N2+   * Odroid N2+
   * Theoretically, any aarch64/32 and/or x86_64 platform that supports Batocera **v33+**, but these have not been tested yet.   * Theoretically, any aarch64/32 and/or x86_64 platform that supports Batocera **v33+**, but these have not been tested yet.
 +
 +<WRAP center round important>
 +Pixelcade's software requires symlink and executable bit support in the filesystem it is installed to. This means you cannot install the software if the userdata is using FAT32, exFAT or NTFS.
 +</WRAP>
  
 Pixelcade offer their marquees in two delicious flavors. The installation instructions change depending on which you want to install for. Pixelcade offer their marquees in two delicious flavors. The installation instructions change depending on which you want to install for.
Line 34: Line 38:
 </WRAP> </WRAP>
  
-This is the lower resolution LED panel that's more suited to pixel-art display than full-color images. It's easy to tell this one from the LCD panel as it has a USB port on the back, while the LCD panel does not.+{{:hardware:20220218_150944_color_adjusted.jpg?400|}} {{:hardware:20220203_155232.jpg?400|}} 
 + 
 +This is the lower resolution LED panel that's more suited to pixel-art display than full-color images. It's easy to tell this one from the LCD panel as it has a USB port on the back, while the LCD panel does not. This panel comes in two sizes, pictured above is the smaller size next to an Xbox One controller. 
 + 
 +Installation is simple. Power on the Pixelcade panel and plug in its USB port into the Batocera machine: 
 + 
 +{{:hardware:pixelcade_back_usb_port.jpg?400|}}
  
-Installation is simple. Power on the Pixelcade panel, plug in its USB port into the Batocera machine, [[:access_the_batocera_via_ssh|SSH into Batocera]] and run the following:+Then [[:access_the_batocera_via_ssh|SSH into Batocera]] and run the following:
  
 <code bash> <code bash>
Line 54: Line 64:
 This is the higher resolution LCD panel that's suited to displaying full-color images. It supports Wi-Fi and sends its signals over the network instead of a USB cable. It is also possible to use an Ethernet connection in case a fully wired setup is preferred. This is the higher resolution LCD panel that's suited to displaying full-color images. It supports Wi-Fi and sends its signals over the network instead of a USB cable. It is also possible to use an Ethernet connection in case a fully wired setup is preferred.
  
-Installation uses a different command from the LED panel, so be careful. Power on the Pixelcade panel, plug in its USB port into the Batocera machine, [[:access_the_batocera_via_ssh|SSH into Batocera]] and run the following:+Installation uses a different command from the LED panel, so be careful. Power on the Pixelcade panel, FIXME (connect it to the Wi-Fi (how?)), [[:access_the_batocera_via_ssh|SSH into Batocera]] and run the following:
  
 <code bash> <code bash>
Line 106: Line 116:
 </file> </file>
  
-===== Using an x86_64 PC and an RPi4 =====+If you wish to simply see the events that are being fired off by Pixelcade's EmulationStation scripts as you're navigating the menus, run the following in an SSH terminal:
  
-It is possible to homebrew up a D.I.Ymarquee display using spare Raspberry Pi (RPi 4 was tested, but should work on any of them) connected to a display. [[https://forum.batocera.org/d/7129-dynamic-marquee-for-pi4-working|Link to the original forum post explaining this.]] Essentially, the Raspberry Pi acts as an additional framebuffer that Batocera itself can access directly.+<code> 
 +killall java 
 +/userdata/system/pixelcade/jdk/bin/java -jar -Dioio.Seriaorts=ttyACM0 /userdata/system/pixelcade/pixelweb.jar -b -e 
 +</code> 
 + 
 +Now you'll get the following debug output: 
 + 
 +{{:hardware:pixelcade_debug.png?600|}} 
 + 
 +===== Using the two HDMI outputs on RPi4 ===== 
 + 
 +<WRAP center round important> 
 +This has broken on **v34**. Stay on **v33** or lower if you intend to use this. 
 +</WRAP> 
 + 
 +It is possible to use the two HDMI outputs on an RPi4, with one displaying Batocera and the other displaying the dynamic marquee. [[https://forum.batocera.org/d/7129-dynamic-marquee-for-pi4-working|Link to the original forum post explaining this.]] Essentially, the Raspberry Pi draws images/videos directly to the framebuffer, which is still visible on the other display even though it's hidden by Batocera on the main display.
  
-Artwork needs to be sourced and placed in the appropriate ''Marquee'' and ''roms/Marquee'' folders first.+Artwork needs to be sourced and placed in the appropriate ''Marquee'' and ''roms/Marquee'' folders first. If you don't already have a marquee repository, [[https://mega.nz/folder/cgEgHBTb#5ZYNIZ9VKPYpCS2ujwghbQ|a sample pack is available here]]. Extract it to the root of your device.
  
 Place ''game.sh'' into ''system/configs/emulationstation/scripts/game-selected'' Place ''game.sh'' into ''system/configs/emulationstation/scripts/game-selected''
Line 205: Line 230:
 esac esac
 </file> </file>
 +
 +===== Using two computers =====
 +
 +[[https://forum.batocera.org/d/7269-dynamic-marquee-setup-for-all-platforms|Link to original forum post.]] [[https://www.youtube.com/watch?v=VLtqgMS90A0|Link to video demonstration.]]
 +
 +This can be done using Batocera installed onto a device and another computer/Raspberry Pi connected to a separate display. So far, this has been tested successfully using Batocera installed on an x86_64 computer/Raspberry Pi with another Raspberry Pi acting as the marquee.
 +
 +==== Setting up the Marquee computer ====
 +
 +  - If you don't already have a marquee repository, start downloading the [[https://mega.nz/folder/cgEgHBTb#5ZYNIZ9VKPYpCS2ujwghbQ|sample pack here]].
 +  - Install Raspbian OS on the Raspberry Pi to act as the marquee (referred to as Marquee from now on).
 +    - Set this up with a static IP to make things easier.
 +  - On the Marquee run the following: <code bash>
 +sudo apt-get update
 +sudo apt-get upgrade
 +sudo apt-get install ffmpeg git libjpeg9-dev libjpeg9 libpng16-16 libpng-dev
 +</code>
 +  - Now compile FBV on the Marquee using the following commands: <code bash>
 +sudo git clone https://github.com/godspeed1989/fbv.git
 +cd fbv
 +sudo ./configure
 +sudo make
 +sudo make install
 +</code>
 +  - Set up the Marquee to automatically start the appropriate software on boot. Open the text file with root privileges with the following: <code bash>
 +sudo nano /etc/rc.local
 +</code>
 +    - Then add the following right before the ''exit 0'' line: <code bash>
 +cd /home/pi
 +nc -vklp 5555 | /bin/bash &
 +</code> Save with ''Ctrl'' + ''S''.
 +  - Edit the bootup file: <code bash>
 +sudo nano /boot/cmdline.txt
 +</code>
 +    - Change the following line from: <code bash>
 +console=tty1
 +</code> to <code bash>
 +console=tty3
 +</code>
 +    - In that same file, add onto the end of the line: <code bash>
 +logo.nologo vt.global_cursor_default=0
 +</code>
 +    * For example, the resulting ''cmdline.txt'' might contain: <file - cmdline.txt>
 +console=serial0,115200 console=tty3 root=PARTUUID=692a6271-02 rootfstype=ext4 fsck.repair=yes rootwait logo.nologo vt.global_cursor_default=0
 +</file>
 +  - Add the following script to the ''/home/pi/'' folder named as ''marquee.sh'': <file bash marquee.sh>
 +#!/bin/bash
 +
 +case $1 in
 +GameStart)
 +Systemname=$2
 +Romname="$3"
 +
 +if [ -f "/home/pi/Marquee/hires/$Romname.jpg" ]
 +then
 +fbv "/home/pi/Marquee/hires/$Romname.jpg" -fel
 +elif [ -f "/home/pi/Marquee/$Systemname/images/$Romname-marquee.png" ]
 +then
 +fbv "/home/pi/Marquee/$Systemname/images/$Romname-marquee.png" -fel
 +else
 +fbv /home/pi/Marquee/default.png -fel
 +fi
 +;;
 +
 +Gameselected)
 +Systemname=$2 #system name
 +Romname="$3" #romname
 +if [ -f "/home/pi/Marquee/$Systemname/images/$Romname-marquee.png" ]
 +then
 +fbv "/home/pi/Marquee/$Systemname/images/$Romname-marquee.png" -fel
 +else
 +fbv /home/pi/Marquee/default.png -fel
 +fi
 +;;
 +
 +Systemselected)
 +imagepath="/home/pi/Marquee/sysimages/$2"
 +if [ -f "$imagepath.png" ]
 +then
 +fbv "$imagepath.png" -fel
 +else
 +fbv /home/pi/Marquee/default.png -fel
 +fi
 +;;
 +esac
 +</file>
 +
 +==== Setting up the Marquee folder ====
 +
 +  - If you downloaded the sample pack, simply extract it to the root of the drive and move onto the [[#setting_up_the_scripts_in_batocera|next section]]. Otherwise, read on.
 +  - On the Marquee computer, create a ''/marquee'' folder in the root of the drive.
 +  - In this folder, create/place the ''default.png'' image file you wish to display when no other image can be found.
 +  - Create a new folder in the ''/marquee'' folder named ''sysimages''. This folder will contain all of the system's generic marquees (for when you're on the system list before entering into the game list).
 +  - Then, for every game which marquee you want to display, create a system subfolder with the same name as the [[:systems|system shortname Batocera uses]] and place the marquee image with the name of the game itself inside of an ''image'' subfolder in that system.
 +  - In addition, any "high resolution" versions of the images can be put into a separate subfolder in ''marquee/'' named ''hires''.
 +
 +Here's an example of the final folder structure:
 +
 +<code>
 +/marquee/
 + ├─ 3do/
 + │  └─ images/
 + │     └─ Space Hulk - Vengeance of the Blood Angels (USA)-marquee.png
 + ├─ atari2600/
 + │  └─ images/
 + │     └─ Air Raid (USA)-marquee.png
 + ├─ daphne/
 + │  └─ images/
 + │     └─ ace-marquee.png
 + ├─ hires/
 + │  ├─ 1943.jpg
 + │  ├─ a51site4.png
 + │  ├─ Air Raid (USA)-marquee.png
 + │  └─ Space Hulk - Vengeance of the Blood Angels (USA)-marquee.png
 + ├─ mame/
 + │  └─ images/
 + │     └─ a51site4.png
 + ├─ nes/
 + │  └─ images/
 + │     └─ Super Mario Bros. (World)-marquee.png
 + ├─ sega32x/
 + │  └─ images/
 + │     └─ BC Racers (USA)-marquee.png
 + ├─ sysimages/
 + │  ├─ 3do.png
 + │  ├─ atari2600.png
 + │  ├─ daphne.png
 + │  ├─ fbneo.png
 + │  ├─ mame.png
 + │  ├─ nes.png
 + │  └─ sega32x.png
 + └─ default.png
 +</code>
 +
 +==== Setting up the scripts in Batocera ====
 +
 +<WRAP center round todo>
 +These scripts need revision.
 +</WRAP>
 +
 +Install Batocera on the main machine. This is only supported in Batocera **v33** and up.
 +
 +Navigate to ''/userdata/system/configs/emulationstation'' and create a folder named ''scripts''.
 +
 +Create the following scripts and download them to the mentioned location on the Batocera computer:
 +  * Create a folder named ''game-start'', save the following as ''01-marquee.sh'' (eg. ''/userdata/system/configs/emulationstation/scripts/game-start/01-marquee.sh''): <file bash 01-marquee.sh>
 +#!/bin/bash
 +Marqueeip=192.168.123.147 #enter your marquee computer ip address here.
 +case 1 in    gameStart)
 +        romname={5##*/}
 +        gamename=${romname%.*}      
 +echo ./marquee.sh GameStart $2 "\"gamename\"" | nc $Marqueeip 5555 >temp.log &
 +;;
 +gameStop)      
 +echo sudo pkill ffmpeg  | nc 192.168.123.147 5555 &   
 +;;
 +esac
 +</file>
 +  * In ''game-selected'' save the following as ''01-marquee.sh'' (eg. ''/userdata/system/configs/emulationstation/scripts/game-selected/01-marquee.sh''): <file bash 01-marquee.sh>
 +#!/bin/bash
 +
 +Marqueeip=192.168.123.147
 +System=$1 #system name
 +Romname=${2%.*} #romname
 +rom=${Romname##*/}
 +
 +echo ./marquee.sh Gameselected $System "\"$rom\"" | nc $Marqueeip 5555 >temp.log &
 +</file>
 +  * In ''system-selected'' save the following as ''01-marquee.sh'' (eg. ''/userdata/system/configs/emulationstation/scripts/system-selected/01-marquee.sh''): <file bash 01-marquee.sh>
 +#!/bin/bash
 +
 +Marqueeip=192.168.123.147
 +
 +System=$1    #System name
 +echo ./marquee.sh Systemselected $System | nc $Marqueeip 5555 >temp.log &
 +</file>
 +Once done, make all those scripts executable (''chmod +x <name of file>'' or right-click and check "Executable")
  
 ===== Troubleshooting ===== ===== Troubleshooting =====
Line 210: Line 412:
 ==== My Pixelcade LED/LCD panel isn't working! ==== ==== My Pixelcade LED/LCD panel isn't working! ====
  
-It could be that it's simply not plugged in correctly. Ensure that the USB cable on both ends is firmly secure in their ports. On the Batocera machine itself, it might be worth checking if it's functional on a different port (such as a USB 3.0 port if you were using a 2.0 port, or vice-versa).+Pixelcade takes a few more moments after ES has started before it "kicks in". 
 + 
 +If it's still not working, it could be that it's simply not plugged in correctly. Ensure that the USB cable on both ends is firmly secure in their ports (or if using the LCD panel, that it's paired to the same Wi-Fi network as Batocera). On the Batocera machine itself, it might be worth checking if it's functional on a different port (such as a USB 3.0 port if you were using a 2.0 port, or vice-versa).
  
 If it's still not working, try out the following: If it's still not working, try out the following:
Line 222: Line 426:
 ~/jdk/bin/java -jar pixelcade.jar -m stream -c mame -g 1941 ~/jdk/bin/java -jar pixelcade.jar -m stream -c mame -g 1941
 </code> </code>
-  * If using the LED panel (not the LCD one), run ''ls /dev'' and search for ''ttyACM0''. If not present, then your machine has not detected the Pixelcade LED device.+  * If using the LED panel (not the LCD one), run ''ls /dev'' and search for ''ttyACM0'' or ''ttyACM1''. If neither are present, then your machine has not detected the Pixelcade LED device.
  
  • hardware/lcd_led_marquees.txt
  • Last modified: 8 months ago
  • by atari