Ace Combat 7: Skies Unknown by Bandai Namco Studios Inc.Bandai Namco Studios Inc. (エースコンバット7 スカイズ・アンノウン|バンダイナムコエンターテインメント)
『エースコンバット7』バンダイナムコエンターテインメント公式サイト

A jet next to a huge explosion in the sky. Two smaller images depict the perspective of the pilot and the player sitting inside a ViperPit playing the game with XR glasses.

Got some help carrying the from the basement into my man cave today and since I got the peripherals operational again already, and got Ace Combat 7 on a sale, which seemed to be a good fit, I decided to play that first:
https://makertube.net/w/wiKFYNPaKhhCmrrz3aGLYb / https://www.youtube.com/watch?v=HEPK0lHX_3s

Little did I know what a pain in the neck it would be to get this running. No, Linux wasn’t the problem. That was just Press Play, as usual.

There is however no settings menu for joysticks so any mapping has to be done by manually editing the `Input.ini` of the game in an text editor, which is a guessing game. Head tracking is also a no go. I pulled the old trick to map the head tracker to a virtual XBOX controller but the game comes with an annoying deadzone where the camera snaps to the center.

Ah well, got it all working okay-ish in the end and enjoyed some pew pew in the skies. There seem to be plenty of mods too so trying that will be next 🤘

🤓 Painted the button box, added more buttons and the LCD and set it to playing the DRADIS animation[1] of the Pegasus just for show:

Next is wiring everything up (and when that is done finishing the frame for the display) and add decals.

Same thing really to see how it feels:

[1] The Loop was created by David Gian-Cursio (https://www.gian-cursio.net/2016/07/battlestar-pegasus-dradis-screens/) for Diaspora: Shattered Armistice (a total conversion for the FreeSpace Open engine).

A lot happened since my last update on the simpit – under it’s hood. Function wise it changed not so much so the older demonstration video is still better for a quick demo. I still assembled a new video from clips of the first evening with the new hardware:

Quick trip from Armstrong Orbital over to the huge crater on HIP 117029-4 and back

So what changed? I got rid of the CY-822A USB joystick controller that, while good, was also limiting. Especially in inputs and how they would react. The Raspberry Pi, that I used to drive the status indicators, is also gone. This is all replaced by one single Arduino Mega that is connected via serial over USB.

A custom joystick daemon written in Rust is listening for data from the and feeds back the flags of Elite Dangerous to drive the blinken lights. I also extended the source to add me some rotary encoders (with push button function) and I’m very happy with the result of this. That makes a whopping amount of 48 buttons and 6 axis (where 2 axis make one hat). And it feels _so good_ to have e.g. self destruct or eject cargo save under a protective cover now 😀

The panel also got an external PSU with enough ampere to drive as many LED as I may imagine so I no longer abuse a phone charger for that or risk frying of the PCB / USB.

With all that in place I streamlined my pre-flight check-list quite a lot because way less hardware is involved and most of this is automated by now. It wasn’t all fun n giggles tho and while the new hard- and software “just worked” in e.g. it was that gave me a hard time to actually use most of the new buttons.

Getting all the precious buttons into Elite as well (okay, limited to 32 thanks to an old dinput library but who is counting at this point – will simply set the rest to keyboard macros instead)

Turns out it had no idea about the device and model identifiers reported by the joystick daemon and that the kernel assumed a gamepad based on declaring e.g. ButtonNorth via the more recent xinput system really didn’t help – because that limited the amount of read buttons via xinput severe! In the end I set it’s identifier to a “vJoy” device. That I found in the DeviceMappings.xml of Elite and since this could be basically anything I gave it a try (and removed all “offending” magic gamepad buttons from the code) and sure enough Elite started accepting the inputs as expected and from there it was smooth sailing – got even the hat working.

Oh and for everyone who is wondering what exactly they are seeing on the “MFD” when I’m playing Elite: That’s basically a Website using the FUI framework. Find a quick demo video here. Without the cardboard covering up parts of the screen it looks basically like this:

I also started doodles for a version 2 – now that I have an idea what I really want.

Plans for another based on a Valkyrie Cockpit