Light Controller
Group File:
Ultimarc Group File Info
LED Hook: Strip Group File Info
RPEG Brooks Group File Info
Game/Default File:
Game/Default File Info
Ultimarc and RPEG Brooks Commands
LED Hook: Strip Commands
LED Hook: Strip Info is on it's Release Page
People's Light Controller Game Files:
Nathan's LED Hook: Strip Game Files with Ammo/Life Display Range - 2 Strips with P1 on Strip 0 Left and P2 on Strip 1 Right.
Nathan’s LED Hook: Strip Updated Game Files with 4 Strips. Strips 2 & 3 are P1 & P2 Back. Just updated on 7/28/2026
Rod's LED Hook: Strip Set-Up Tutorial
A 3 part tutorial. On how to build the hardware. Set-up the software for the Pico 2(W) and Hook of the Reaper. And finally, test things out. Also, my LED Hook: Strip overview & programming tutorial video (link right under this) is included in this guide, as video #4. Thank you very much Rod.
6Bolt's LED Hook: Strip Overview and Programming Tutorial
The tutorial has 4 parts. The first is going over supported RGB LED controllers. The second is a high level overview of how LED Hook: Strip and Hook of the Reaper works. The third is Group file programming. The last is Game/Default file programming.
KrisCoolMod's LED Hook: Strip Video
Light Controller
After writing out info on the light controller for Hook of the Reaper (HOTR), I noticed that I didn't include any information on the light controller with HOTR, or on the web site. So, this is to fully rectify (an ee joke) that problem. And give information about the light controller.
Since the first release of HOTR in mid February of 2025, the light controller feature has been widely requested. People would send me huge MameHooker INI game files with their light code they wanted to run it. But I wanted to complete that first 2 milestones of HOTR, before even touching the light controller. But, I knew that I wanted to keep the light controller separate from the light gun part of HOTR. As, I wanted separate game files for them. Also, I didn’t want huge game files too.
In mid May of 2025, I got the first milestone done for HOTR, which is the main light gun code completed. Then in December of 2025, or maybe January of 2026, I got the 2nd milestone completed, which was getting all the DeaultLG game files completed on the select emulators, and hosting them on the HOTR’s web site. After that, I started working on the light controller code. I first started with the Ultimarc’s light controllers, that supported 256 levels of intensity, to do RGB LEDs first. I started with Ultimarc’s light controllers, as the company gave me a Pac64LED for testing. They also offered a PacUltimateIO, but I turned it down, thinking the Pac64LED would be enough. I am now regretting my decision, as it would really help testing 2 light controllers.
Light Controller Architecture
When starting to code the light controller, I purposely didn’t look at the MameHooker implementation. I remember it a little from release, but not too much. I did this to make HOTR implementation its own, and not to just a copy what MameHooker did. I first thought of the same output signal’s value change, so did an action based on it’s value, used in the light gun code. It was easy to implement, as I had it already.
Next was the commands. The first thing that came to mind was just simple flashing of the lights. The arguments would be the color, time on, time off, and the number of flashes. After thinking about it, I came up with the random flashing, where only one light flashes. This is to make it look like someone is shooting an automatic weapon. Then I thought, it would be good to have a center color, and then have a different color for the sides. So it would make it look like bullet, with 2 colors, or a hole and surrounding color. Then added in flashing for reload and death, as they don’t have an output signal, but can be obtain by watching certain output signal’s value. Then the Sequence commands were easy to do, after the Flash commands. Then the Follower command was really easy to do, as it has no timers, and it not block if a command is running already.
Light Controller Tips
The best thing to do now is keep command times to the smallest possible time. For Flash commands, that is keeping the time on & off low. For example, if you have a Damage command, and it flashes red for 1 time. You can make the On time like 60ms, but then make the Off time 25ms or 30ms. During testing I found that off time is needed. Because command can happen right after, and then it looks weird. But it can be smaller than the On time. Even if you flash multiple times, where On time is 60ms, and Off time is 45ms. Of course, if you make it too small, it might look weird. But just some more tips on getting the most out of the lights.
For the Sequence commands, it is good to keep the delay small too. But if you are using many lights, it can make the command run a long time. For example, lets say you have 10 lights with a delay of 25ms. It would take 10 X 25ms, is 250ms to run the command. But if you break up the lights into 2 groups of 5, it would be then 5 X 25ms, at 125ms. That is half of the time, of the original command. Also, you can do other effect. Lets say it is 10 lights in a row. Then break into 2 groups, where the first group would be normal with 1 to 5. But the 2nd group, reverse the numbers, from 10 to 6. So when the command goes off, the both ends will light, and start moving towards the center. Or if you randomize the numbers in both groups, it would look like it is randomly lighting up the lights. You can get some cool effects with just how you order the groups.
Since the Follower command doesn’t use a timer, it is not blocked by the another command is running. Therefore you can run it with other signals. Mostly it is for the ‘Start’ signal for the players. You could use it with a recoil signal like 'P1_CtmRecoil. As the recoil is very fast, and then it doesn't block the damage or reload commands. However, a follower random is not available at the moment.
Use RGB Fast, when possible. It is a little faster than the normal RGB, as the light controller acts like the 3 lights are just one. This simplify things.
FAQ
When the Timer is Running, Why Can’t You do Another Command on the same pin or pins?
This is to keep commands with timers to not override each other. As then a reload sequence command can happen on player 1, and then damage flash command happen right after. So then some lights are turning green while flashing red. It would look really bad.
Is This Just for Light Gun Games? Will There be Commands for Other Types of Games?
I am focusing on light gun games, as I know them well, right now. Also, HOTR does force feedback for light guns. But the light controller code can be used on any game, as long as it has usable outputs. Most if not all of the commands can be used on any game. If you think of any new light command that you want, please file an ‘Issue’ on the HOTR’s GitHub Issues. Please give the all the details. And if possible, please link a video showing me what you want.
Man, Do You Really Hate Ultimarc and/or Ultimarc PacDrive SDK?
I might have been frustrated, but I don’t hate Ultimarc. Also, I understand too, as they are a small company. And, the PacDrive SDK is old, and seems to have problems with Qt6 with the ServoStik. I am probably the first person that has used the SDK in 5-8 years now. As, LED Blinky might have been the last to use it years ago. But no, I don’t hate them at all, just frustrated with the SDK. Like I said, if I knew about the SDK, I would have just did my own code. Also, Ultimarc was really nice to me and gave me test hardware. Also, they have done a lot of good for the Arcade scene. In the end, I do like the company, and will get over the frustration. Plus, I am sick and not the healthiest, which made thing worse for me.
What ALED Strips are Supported in LED Hook: Strip?
Any ALED RGB strip using the single wire Non Return to Zero (NRZ) protocol at 800KHz will work. The most notable are WS2811, WS2812, WS2813, and WS2815. Also, ALED RGBW strip support was put in v0.4 and later. It fully uses the W LED, when the RGB allows it. For example, if RGB values are all 128, then the code will make W 128 and RGB 0. But the Group file still uses just the RGB, and the W value is never used. Notable ALED RGBW are WS2814.
Recommended RGB
- WS2812B
- WS2812B-ECO
- WS2813
Works, But Not Recommended RGB
- WS2811 (Must be in Fast Mode 800KHz)
- WS2812
- WS2815