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
hardware:lcd_led_marquees [2022/02/24 11:06] – making the link more convenient atarihardware:lcd_led_marquees [2023/08/14 12:47] (current) – added installation instructions for LCD WiFi setup atari
Line 9: Line 9:
 ===== Pixelcade ===== ===== Pixelcade =====
  
-The premier digital marquee manufacturers! [[https://pixelcade.org/|Pixelcade]] has been integrated into Batocera since **v33**.+The premier digital marquee manufacturers! [[https://pixelcade.org/|Pixelcade]] has been integrated into Batocera since **v33**. Note that Pixelcade will still work with Batocera versions older than V33 with the limitation that Pixelcade will only update when a game has been launched vs. dynamically during scrolling through the Batocera front end
  
 {{:pixelcade_led_display.jpg?400|}} {{:pixelcade_led_display.jpg?400|}}
  
 <WRAP center round info> <WRAP center round info>
-Pixelcade themselves offer [[https://pixelcade.org/batocera/|installation instructions over on there website]], which might update at a quicker pace than the ones on this wiki page. If the commands on this page aren't working, check that page out.+Pixelcade themselves offer [[https://pixelcade.org/batocerav2/|installation instructions over on their website]]
 </WRAP> </WRAP>
  
Line 30: Line 30:
 </WRAP> </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 flavors, Pixelcade LED (8-bit, low-res) and Pixelcade LCD (high res). The installation instructions change depending on the model.
  
 ==== Pixelcade LED ==== ==== Pixelcade LED ====
Line 40: Line 40:
 {{:hardware:20220218_150944_color_adjusted.jpg?400|}} {{:hardware:20220203_155232.jpg?400|}} {{: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 imagesIt's easy to tell this one from the LCD panel as it has a USB port on the backwhile the LCD panel does notThis panel comes in two sizes, pictured above is the smaller size next to an Xbox One controller.+Pixelcade LED marquees are based on LED panels for a low-res 128x32 display suited for 8-bit, pixel art marquee artworkPixelcade and the community has created and updates the Pixelcade LED artwork which you can browse here https://github.com/alinke/pixelcade. While not every game has an associated pixel art marqueeyou'll find most of the iconic games and consoles have matching, pixel perfect artworkPixelcade LED comes in sizes https://pixelcade.org/mounting/ with mounts available for various arcade cabinets.
  
 Installation is simple. Power on the Pixelcade panel and plug in its USB port into the Batocera machine: Installation is simple. Power on the Pixelcade panel and plug in its USB port into the Batocera machine:
Line 48: Line 48:
 Then [[: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> 
-curl -kLO -H "Cache-Control: no-cache" https://raw.githubusercontent.com/alinke/pixelcade-linux/main/installer-scripts/setup-batocera.sh && chmod +x setup-batocera.sh && ./setup-batocera.sh+curl -kLO -H "Cache-Control: no-cache" https://raw.githubusercontent.com/alinke/pixelcade-linux-builds/main/install-scripts/setup-batocera.sh && chmod +x setup-batocera.sh && ./setup-batocera.sh
 </code> </code>
  
-After the downloading and installation is complete, you will see the 1941 marquee being displayed on the panel. Confirm the prompt and close it.+<WRAP center round info> 
 +In case that doesn't work, the latest instructions for the LED panel can be found at https://pixelcade.org/batocerav2/ 
 +</WRAP> 
 + 
 +After the downloading and installation is complete, the 1941 game marquee will be displayed on the panel. Confirm the prompt in the terminal and reboot.
  
-If the panel did not display the marquee, refer to the [[#my_pixelcade_led_lcd_panel_isn't working!|troubleshooting section]]. 
  
 ==== Pixelcade LCD ==== ==== Pixelcade LCD ====
Line 62: Line 65:
 </WRAP> </WRAP>
  
-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 for high resolution marquee artwork in 1920 x 360 resolution. It supports Ethernet cables or Wi-Fi and sends its signals over the network instead of a USB cable.
  
-Installation uses a different command from the LED panel, so be careful. Power on the Pixelcade panelFIXME (connect it to the Wi-Fi (how?)), [[:access_the_batocera_via_ssh|SSH into Batocera]] and run the following:+To set up the Pixelcade LCDplug its SD card into an already running OS (Batocera will do just fine) and then run the ''setupWifi.sh'' script from its root folder. For example, if doing this from a terminal and the SD card has mounted itself to ''/media/NO_LABEL'':
  
-<code bash>+<code
 +cd /media/NO_LABEL 
 +./setupWifi.sh 
 +</code> 
 + 
 +You will be asked a series of questions (FIXME what questions?). When the script is complete, safely remove the SD card and put it back into the Pixelcade LCD. 
 + 
 +Power on the Pixelcade LCD and if you see the Pixelcade retrowave banner then the Pixelcade has successfully connected to the WiFi network: 
 + 
 +{{:hardware:pixelcadegen3-logo-993x1024.jpg|Photo of the Pixelcade showing the mostly purple Pixelcade banner.}} 
 + 
 +Once confirmed, finish setting up Batocera's side by [[:access_the_batocera_via_ssh|SSH'ing into Batocera]] and running the following: 
 + 
 +<code - bash>
 curl -kLO -H "Cache-Control: no-cache" https://raw.githubusercontent.com/alinke/pixelcade-linux/main/installer-scripts/setup-batocera-lcd.sh && chmod +x setup-batocera-lcd.sh && ./setup-batocera-lcd.sh curl -kLO -H "Cache-Control: no-cache" https://raw.githubusercontent.com/alinke/pixelcade-linux/main/installer-scripts/setup-batocera-lcd.sh && chmod +x setup-batocera-lcd.sh && ./setup-batocera-lcd.sh
 </code> </code>
  
-If the panel did not display the marquee, refer to the [[#my_pixelcade_led_lcd_panel_isn'working!|troubleshooting section]].+<WRAP center round info> 
 +In case that doesn'work, the latest instructions for the LCD panel can be found at https://pixelcade.org/lcdgen3/ and https://pixelcade.org/batocera/ 
 +</WRAP>
  
 If you have both panels and want to use them at the same time, it is possible to install both these scripts at once. If you have both panels and want to use them at the same time, it is possible to install both these scripts at once.
  
-==== Pixelcade web UI ====+==== Pixelcade Companion Web UI ====
  
 A simple web interface can be used to upload new artwork to the panel's SD card. Visit http://batocera.local:8080 (if that doesn't work, use %%http://<IP of Batocera>:8080%%) to bring it up. A simple web interface can be used to upload new artwork to the panel's SD card. Visit http://batocera.local:8080 (if that doesn't work, use %%http://<IP of Batocera>:8080%%) to bring it up.
  
-{{https://pixelcade.org/wp-content/uploads/2020/03/webui.jpg|}}+{{https://pixelcade.org/wp-content/uploads/2023/07/companion-1-scaled-e1688411871110.jpg|}} 
 +{{https://pixelcade.org/wp-content/uploads/2023/07/companion-2-scaled-e1688411900637.jpg|}} 
 + 
  
 ==== Pixelcade advanced scripting ==== ==== Pixelcade advanced scripting ====
Line 116: Line 137:
 </file> </file>
  
-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:+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 commands below in an SSH terminal session on your Batocera device. This is also good for cases where artwork is missing for a particular game. Use the log output to know what specific filenames are being passed and then rename artwork accordingly following this guide for Pixelcade LED https://pixelcade.org/art/ and this guide for Pixelcade LCD https://pixelcade.org/lcdartwork/ 
 + 
 +For Pixlecade LED 
 + 
 +<code> 
 +curl localhost:8080/quit 
 +cd /userdata/system/pixelcade && ./pixelweb 
 +</code> 
 + 
 +For Pixelcade LCD
  
 <code> <code>
 killall java killall java
-/userdata/system/pixelcade/jdk/bin/java -jar -Dioio.Seriaorts=ttyACM0 /userdata/system/pixelcade/pixelweb.jar -b -e+/userdata/system/pixelcade/jdk/bin/java -jar /userdata/system/pixelcade/pixelweb.jar -b -e
 </code> </code>
  
Line 131: Line 161:
 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. 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. 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. +<WRAP center round important
- +This has broken on **v34** and higherStay on **v33** or lower if you intend to use this
-Place ''game.sh'' into ''system/configs/emulationstation/scripts/game-selected'' +</WRAP>
- +
-<file bash game.sh+
-#!/bin/bash +
-System=$1 #system name +
-Romname=${2%.*} #romname +
-rom=${Romname##*/} +
-/userdata/marquee.sh Gameselected $System "$rom" +
-</file> +
- +
-Place ''system.sh'' into ''system/configs/emulationstation/scripts/system-selected'' +
- +
-<file bash system.sh> +
-#!/bin/bash +
-System=$1 #System name +
-/userdata/marquee.sh Systemselected $System & +
-</file> +
- +
-Place ''marquee.sh'' in ''/userdata'' +
- +
-<file bash marquee.sh> +
-#!/bin/bash +
- +
-case $1 in +
-Start) +
-Romname=$3 +
-Gamepath=$2 +
-marqueeimage=$Gamepath/images/$romname-marquee.png +
-if [ -f "/userdata/roms/Marquee/videos/$Romname.mp4"+
-then +
-ffmpeg -i /userdata/roms/Marquee/videos/$Romname.mp4 -vf scale=1280:720 -sws_flags bilinear -pix_fmt rgb565le -f fbdev /dev/fb0 +
- +
-fi +
- +
-if [ -f "/userdata/roms/Marquee/hires/$Romname.jpg"+
-then +
-fbv /userdata/roms/Marquee/hires/$Romname.jpg -fer +
-elif [ -f "$marqueeimage"+
-then +
-fbv $marqueeimage -fer +
-else +
-fbv /userdata/roms/mame/images/mame.png -fer +
-fi +
- +
-;; +
-Gameselected) +
-System=$2 #system name +
-Romname=$3 #romname +
- +
-if [ -f "/userdata/roms/Marquee/$Romname.png"+
-then +
-fbv /userdata/roms/Marquee/$Romname.png -fer +
-elif [ -f "/userdata/roms/$System/images/$Romname-marquee.png"+
-then +
-fbv "/userdata/roms/$System/images/$Romname-marquee.png" -fer +
-else +
-fbv /userdata/roms/Marquee/mame.png -fer +
-fi +
- +
-;; +
- +
-Systemselected) +
-imagepath="/userdata/roms/sysimages/$2" +
-if [ -f "$imagepath.png"+
-then +
-fbv "$imagepath.png" -fer +
-else +
-fbv /userdata/roms/mame/images/mame.png -fer +
-fi +
- +
-;; +
- +
-esac +
-</file> +
- +
-Place ''script.sh'' in ''system/scripts'' +
- +
-<file bash script.sh> +
-#!/bin/bash +
- +
-case $1 in +
-gameStart) +
- +
-gamepath=${5%/*+
-romname=${5##*/} +
-/userdata/marquee.sh Start $gamepath ${romname%.*} & +
-;; +
- +
-gameStop) +
-killall ffmpeg +
-;; +
-esac +
-</file>+
  
 ===== Using two computers ===== ===== Using two computers =====
Line 232: Line 170:
  
 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. 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 422: Line 189:
 ~/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'' or ''ttyACM1''. If neither are present, then your machine has not detected the Pixelcade LED device.+  * If using Pixelcade LED (not Pixelcade LCD), run ''ls /dev'' and search for ''ttyACM0'' or ''ttyACM1''. If neither are present, then your machine has not detected the Pixelcade LED device
 + 
 +==== Further Pixelcade troubleshooting ==== 
 + 
 +Refer to [[https://pixelcade.org/howto/|Pixelcade's how to sections]] on resetting the firmware and visit [[https://pixelcade.org/forum/main-category/|the Pixelcade forums]].
  
  • hardware/lcd_led_marquees.1645697171.txt.gz
  • Last modified: 2 years ago
  • by atari