Page Created: 1/9/2021   Last Modified: 1/18/2021   Last Generated: 4/4/2021

Playing Shenmue III on Linux using an 11-Year-Old CPU and Two Wii Controllers

(Click picture above to enlarge.)

(Please note that I have created this keymap for my own use only, providing information about it in the hopes it will be useful to others in some way. It might not be suitable for you, and I am not responsible for the correctness of the information and do not warrant it in any way.)

My Hardware

  • Intel Core i3-550 (dual-core, first-generation)
  • Nvidia GeForce GTX 750 Ti
  • Intel SSD 520 240 GB Solid-State Drive
  • 8 GB RAM
  • USB Bluetooth Adapter
  • Two Wii Controllers (preferably one a later model with gyro built-in for motion control)

My Software

  • Ubuntu 20.04.1 LTS (with hid-wiimote kernel driver and bluez preinstalled)
  • Nvidia Driver 455.38
  • libxwiimote
  • xwiimote
  • xserver-xorg-input-xwiimote (xf86-input-xwiimote)
  • Steam Proton 5.13-4 Compatibility Layer
  • Shenmue III PC Windows Version 1.06.01 (01798)

Shenmue III Twenty Years After the Dreamcast

Shenmue↗, by Yu Suzuki, which first appeared on the Dreamcast↗ in Japan on December 29, 1999, was the most expensive videogame ever produced at the time, and is one of my favorite videogames of all time. Shenmue and Shenmue II were the only games that actually made me a better person by playing them and gave me an appreciation of Japan and Hong Kong through the foreign, nostalgic lens of an acclaimed Japanese videogame designer. He teleported me through time and space into those 1980's neighborhoods and let me walk around them, into family dwellings, parks, restaurants, stores, shrines, temples, docks, hotels, apartments, arcades, and back alleys to encounter and speak with people of other cultures that were just doing their daily routines. It even reinforced my work ethic, all while teaching universal, philosophical lessons that should never remain foreign to anyone. It was something I never thought a videogame could do.

The main character, Ryo↗, was also learning similar lessons through the fictional storyline, being a foreigner himself to the many places that he traveled outside of his home neighborhood (and country). It poetically wove the player, the character, and the story into this recursive tapestry.

Shenmue II↗, released in September 2001, never made it to a US Dreamcast release. The Dreamcast was the only game console that I ever bought for myself, being discontinued that same year, giving me traumatic flashbacks of my TI-99/4A two decades earlier (it was my first computer, also discontinued in its prime). In the early 2000s, I remember driving to a remote videogame store just to buy a hard-to-find new European import of Shenmue II, but it was in Japanese with English subtitles only. Shenmue II managed to teach me one last lesson, though, even at its apparent demise, since I enjoyed its subtitled experience so much that it later led me to subtitled, Japanese-voiced anime, today one of my favorite storytelling forms, a form that even crossed into Shenmue↗, too.

Amazingly, almost two decades later, Shenmue III was released in November 2019, and it first became available on Steam a year later in November 2020. When Shenmue III, sometimes called Shenmue 3, was first announced, it became the highest-funded Kickstarter videogame project ever at the time in 2015, designed by the same creator, Mr. Suzuki, no less. The fans didn't forget.

In December 2020, I was finally able to buy the Windows PC version of the game on Steam using a Steam giftcard (that I received that Christmas for that very purpose) when it went on sale for over half-off. I didn't have a PlayStation 4 and couldn't afford to buy new hardware this time around just to play the game. I did, however, have an 11-year-old Intel Core i3-550 CPU, but it was both too slow to meet the minimum system requirements and wasn't running Windows (I ran Linux only). Yet I still held out hope that it would work through a compatibility layer like WINE at an acceptable frame rate. This was, of course, a gamble, like Ryo playing another round of Pachinko.

But it turned out that Shenmue III miraculously does run at an acceptable level (for me, at least) using Valve's Proton 5.13-4 (based on WINE and DXVK) even on that old PC (which has only 8 GB RAM and also runs my Wurm Unlimited server in the background), a testament to the design and reliability of those early Intel Core x86 CPUs, my previous i3-540 running 24 hours a day for the greater part of a decade. The 750 Ti videocard, a 7-year-old card at the time of this writing, also aged surprisingly well over the years, but it wasn't designed to handle games made in the 4K era.

I don't know if my version of the game contains any DRM, by the way, but DRM-free PC versions of Shenmue III are now available through at least one other vendor. At the time of this writing in January, 2021, I have no idea how well (or if) it would work on Linux using vanilla WINE and DXVK without Proton, but the idea is exciting. I'm just happy to play the game right now, but having something reminiscent of those timeless, self-contained boxes of Dreamcast GD-ROMS in my hands would be a true treasure.

Shenmue III, set in China, is beautiful on the PC using the Unreal Engine 4↗, the visuals improved in many ways from the old Dreamcast versions, running on my HDMI flat-panel LCD television instead of composite or S-Video on a raster-based CRT at 640×480. It's obvious that it's purposely stylized to the match the aesthetics of its turn-of-the millennium predecessors, like a long-awaited anime sequel, and the stiff English voice-acting and awkward 3D models are perfect, in my opinion, a reminder that this really is the old world of Ryo, a worthy member of the tripartite canon.

My videocard is too old to justify a serious attempt at 4K, so I didn't even try it, but it ran right away at 1920×1080 under the Very High graphics setting at lower frame rates, and I later lowered my PC display resolution to 1280×720 and set the game to Medium graphics to improve framerates. There was some minor screen tearing and low framerate regions, but I didn't really care as long as the intended playstyle of the game is intact, which it was.

Then I could run through the starting village at high speed with little to no problems. However, sometimes when I open up my inventory and close it again, the frame rates drop off and it gets really choppy, but this can sometimes be resolved if I then open up my menu pad and close it again. Other times, it seems like it lingers and then just goes away on its own. At the time of this writing, I'm not sure if this is an issue with the game version, or the compatibility layer version, or the video driver version, or the fact that my CPU is below minimum specs... But it's minor and has negligible impact on my gameplay.

The game has the same console-style design as the previous games so it doesn't display dense text or menus like those in Wurm Unlimited, a older-style 3D MMORPG/simulation/sandbox game that I play where much of the UI consists of clicking and dragging between tables of text like an office worker (still very fun, though) but has large screen elements that look okay even on a large screen at 1280×720, one of the few resolution combinations that my television will upscale. The game remembered that resolution and seemed to scale itself down even after I changed back to 1920×1080, but it was choppier and had more delays that way, so I decided to lower my display resolution before starting the game through Steam.

Around the same time I was playing the Dreamcast Shenmue, a 3D console-based game, I was also playing my first 3D MMORPG, Dark Age of Camelot, a PC-based game, on an overclocked AMD Duron 600 with a Riva TNT2 M64. But around 5 years earlier, in the mid 1990s, I was experimenting with VRML on a Diamond Stealth64 Graphics 2001 (a 2D card only) which used the fairly obscure ARK2000PV chipset that Windows stopped supporting early on, yet later found solace in the most unlikely of places with XFree86↗, early desktop Linux that still supported it. I could never afford the most-powerful hardware, often using lower-cost versions with restrictions, and I'd walk around virtual 3D polygonal spaces on the early Web at 1 FPS sometimes. So, for me, 3D framerates aren't as important as being able to enter the virtual world itself, and now I found the gateway back into the world of Shenmue.

But what does affect the intended playstyle are the default PC controls for the keyboard and mouse. Cutting down on the CPU and video specs does not impact Shenmue III gameplay as much as not using a game controller, in my opinion. Even my 1980's Commodore 64 version of Yie Ar Kung Fu↗ used joysticks, and I couldn't imagine playing it otherwise, an excellent pure fighter↗, the only 2D fighting game that I ever liked to play.

Note that upon entering the PC version of Shenmue III, the game says in big, white letters at the bottom of the start screen:

Playing Shenmue III with a controller is recommended

I should have heeded that warning.

In fact, it was this intense level of suffering that led me to scrutinize the controls and write this article. Here, Mr. Suzuki and his team meticulously crafted this game to appeal to fans of the series like me, only to have me squander it away on the mouse/keyboard, as if I'm watching my life lived through a ghost. What could life have been if I was just a real person that could interact with that physical world?

I've built and programmed my own user-interfaces since the 8-bit era (you had to back then since there was no GUI layer nor software API), even intentionally going minimalistic on a more recent project into Morse Code and lookup tables, and it becomes highly philosophical. The UI is the man-machine interface, the mysterious gap between the ghost and the corporeal. It has physical constraints around the kinematics of the articulated human body, often our hands, along with spatial geometric constraints of button orientation and spacing. But it also relates to how we think and feel about the world; there is a language in being human and inhabiting this bipedal form that I would expect any bipedal, alien life form in the universe would share. We are trapped inside a geometry, yet our mind finds pathways through this maze into the real world.

Do we rely on a language of consistency if it conflicts with ergonomics? Do we rely on efficient spatial geometries if they limit the generalized adaptability to more situations? How important is physical input speed versus the speed at which you can make the decision to enter that input? There are a dozen tradeoffs like this that come to mind in UI design, and the fascinating thing is that it is simply an art form--there is no right answer, only how you want the UI to influence or fit into your game.

The only consoles I have are the Atari 2600, Dreamcast, and Wii, as I tend to play few games, mostly mouse/keyboard games on the computer, only investigating new consoles if there is something truly special about them, which seems to occur in clumps around every 20 years (about every 1 human generation) for some reason. Around 1983, on my TI-99/4A, I remember typing in the free source code from a magazine to play a port of one of the most important (and first) videogames of all time, Spacewar!. It was a graphical game of spaceships, but it wasn't a game made for the PS1 at 640×480 on a color television, it was a game made for the PDP-1 at 1024×1024 on a Type 30 monochrome monitor--

--a computer invented in 1959!

I bought the Dreamcast for one reason alone, Soulcalibur↗, a game that I first saw at a toy store when I was 29 years old, watching the camera smoothly dolly around the fighters in a virtual ring (the "ring-out" concept is said to be pioneered by Yu Suzuki) while they orchestrated their moves with unbelievable fluidity, my first chance to own arcade-quality hardware (a console that shared many similarities with the Sega NAOMI arcade hardware). Namco's System 11↗ based Tekken, using similar hardware to the Sony Playstation, was perhaps the first time a home console accurately replicated an arcade fighting game in its prime, but the Soulcalibur port was not only as good as the actual Soulcalibur arcade game on the faster Namco System 12 arcade unit, it was better, smoother and beautiful, the first time that I knew of that a console game had surpassed the arcade version that was still new and popular.

This was in sharp contrast to the days a decade before when I'd run my feeble port of OutRun↗, the smooth, mind-blowing Ferrari Testarossa driving game that drew crowds in our of mall arcades in 1986 (also created by Yu Suzuki) on my 8-bit Commodore 64 home computer. It was a valiant conversion by 17-year-old programmer Martin Webb (the same age as myself at the time), but once you set foot in the arcade, there was no comparison. A 1 MHz 8-bit MOS 6510 CPU does not equal two 12.5 MHz 16/32-bit Motorola 68000's, not to mention its graphics hardware with sprite scaling, hardware that Yu Suzuki designed just for that game. It wasn't until 1996, an entire decade later, when the dual-CPU Sega Saturn↗ (the Dreamcast's predecessor that was also abruptly discontinued) could perform this feat gracefully.

I thought at the time that if Soulcalibur was the only game that I ever had for the Dreamcast, then I would be happy forever with that one purchase, a game that even today I consider to be the greatest fighting game ever created.

But then I found Shenmue. I didn't want it for its fighting engine alone, but for its beautiful 3D open world↗, both predating the notorious Grand Theft Auto III by two years while also doing it on less-powerful hardware, an underappreciated technological achievement. Both were 3D virtual worlds crafted from technological sorcery, but there was a profound and stark difference: Shenmue was heaven, teaching compassion, kindness, honesty, humility, patience, responsibility, and understanding; GTA III was hell.

There were now two games that I had to have forever on that Dreamcast: Soulcalibur and Shenmue.

It is no coincidence that the Shenmue videogames contain virtual arcade games within them, each with several games, and in the Pine Game Arcade inside Shenmue II, Ryo can even sit down and play a good port of OutRun itself! For the creator of Shenmue is known for creating popular 1980's Sega arcade games such as the Virtua Fighter series which influenced the fighting engine in Shenmue I and II, but there are some differences in Shenmue III. The Namco fighters, like Tekken and Soulcalibur (a Tekken-like game, although with weapons) were the Sega Virtua Fighters' rivals, as both Sega and Namco were actual rival companies in the video arcades of the time, and some of the Virtua Fighter creators left to create Tekken, a game I never really liked, yet was integral to creating Soulcalibur. There were nested levels of recursion throughout the games and the development, crossing between the virtual and real worlds. The fact that a Namco fighter was on a Sega machine before the end of the millennium was surely a sign of the end of days.

Ironically, the Shenmue series was never released for the famous Nintendo Wii↗, which seemed like a perfect fit for those games. The 2000s came and went, the 2010s came and went.

Coming from Soulcalibur, I could never quite understand the Virtua Fighter style, although I did greatly enjoy the Dreamcast Dead or Alive 2 fighting system, a Tecmo game that had grappling and counters, which, like Shenmue, was also influenced by Virtua Fighter. Ryo in Shenmue is said to be Akira from Virtua Fighter at one point in its early development. The style was enigmatic, and I could just barely hold on, mostly a button masher, unlike Soulcalibur where I could execute precise moves. Whilst defeat in Soulcalibur is reset every game, defeat in Shenmue had consequences in the virtual world, as it altered the storyline and you had to live with the shame that Ryo was that much farther from finding his father's killer. Even during those Dreamcast days, I realized that the Virtua Fighter series seemed to have a depth and philosophy to it that I didn't quite understand, and I'm noticing odd complexity in Shenmue III's fighting system, too, complexity that I didn't expect, especially on the PC.

Spacing and timing, patience and rhythm seem to be important, the same lessons the narrative adventure in the Shenmue series conveys both in and out of the dojo. There is no grappling, but I enjoy the food, health, and skill system so far. There is a kind of balance to the game that I didn't notice in Shenmue II, and I actually think he added some improvements in some ways. However, I decided to ramp up the difficulty setting from Recommended to Hard, just to ensure that the fighting mechanics aren't too easy for me, so that I have a chance to understand the new system this time around.

Other than Shenmue III, I don't play console-style games on the PC, so I don't own a conventional gamepad. My old Dreamcast controllers don't have enough inputs for the new layout, and they would need some sort of adapter electronics to connect to USB (which I don't have either), but I did have a few Wii controllers↗ that are supported by a Linux kernel driver along with a USB Bluetooth adapter. Would they work?

The primary problem with the keyboard is that Shenmue isn't just an adventure game but also incorporates that 3D fighter within it, and the most speed-critical inputs are during fighting and QTEs. The sheer cognitive load of encountering a mass of keysets for constantly-changing contexts, with varying consistency, is overwhelming. In Shenmue III, there are at least 23 keys used! It's like the matrix of featureless buttons on the original Star Trek control panels. Data could have handled it with ease, but Sulu and Chekov? Starfleet Academy must have had some pretty high standards in the 23rd century...

This is far more buttons than the 1999 Dreamcast version, and even the creators of the 1962 Spacewar! eventually invented a controller for their game, since the toggle switches just didn't cut it.

If you enter a dojo for sparring, for example, you suddenly lose all mouse input, along with the A/B buttons on the mouse and have to use keyboard keys, but a dojo fight scene is slightly different, adding the skill buttons. And an actual battle scene with multiple opponents is slightly different as well, adding snake power and switch opponent buttons, too. In fighting, when you lose mouse input for moving, you have to rely on WASD keys to move, but in some of the minigames, you also lose mouse input, but now you have to rely on some of the HBNM keys to adjust aim or steer, the main problem stemming from the lack of the two analog sticks that became standards on modern Xbox/Playstation gamepads and the sudden disappearance of mouse control.

There are 4 sets of 4 directional keys (16 keys), yet you never quite know which ones to put your hands on since the keyboard flattens the analog sticks, D-pad, and 4 action buttons into these directional sets. Then there are the left/right triggers, shoulder buttons, and stick buttons. There is some logic to it, and you can see that it was designed to keep both hands on the keyboard at all times, so the mouse just becomes problematic, and yet the mouse is the only form of analog camera position!

Without the mouse, it becomes even more detached and unnatural moving around, as you have to use keys to move the camera, too. I'm a touch-typist and don't need to look down to see the keys, but the problem is not knowing where the letters are, but the cognitive translation to the keyset for that context, and finally to the action at hand.

In Japanese martial arts anime, and in martial arts in general, there is a often a spiritual connection between the sword and the practitioner wielding it, and the keyboard severs this connection; it takes the soul out of Soulcalibur. It leaves Ryo's fists and feet flailing and turns him into an Initech office worker befuddled by PC LOAD LETTER. I can hear him saying, "I see", as he fumbles with the paper tray.

To save the soul of Ryo, a controller isn't just recommended, it is paramount!

Finding the Soul of the Control

The Wii controllers have motion sensing built-in that can emulate the mouse camera movement for the right analog stick, and two of them, one in each hand, contain 22 buttons, just enough for all of the keyboard keys except for 4 (as far as I can tell) that do not appear to be critical for gameplay: LB (E), Start (P), Quit Game (ESC), and F11 (Toggle between Full Screen and Windowed mode).

Interestingly, my keymap does match the the original Dreamcast games somewhat: Zoom is left trigger, Run is right trigger, just like Shenmue II (but opposite of Shenmue I), and it matches the feel of the intended controller fairly well since the right trigger, right shoulder button, and right stick button are on the right hand, still easily accessible. Having the left hand control the camera via motion control also feels good and matches the left position of the original Dreamcast analog stick. And having the hands separated feels good, too, since Ryo actually moves his right hand to reach out and pick up something, and you can mimic that movement given the freedom of separate controllers in each hand.

The gyro-based motion control works very well once the scaling is set, and the Plus, 1, and 2 buttons (and even the actual D-Pad) can reset or correct the camera angle back to where it should be if it gets off track. This happens occasionally when you use a gyro for relative motion and keep making turns in the same direction, say turning right, then right again, then right again, and your wrist will begin to twist in a circle. It doesn't happen the same way, however, with up and down, which is more like a sinusoidal wave, and you are always returning back to the original position again.

The only time the two controllers really need to be close together is when pressing the right analog stick buttons 1 and 2 spread across both controllers with only the right hand or with both thumbs while the left hand has to control the left analog stick (mapped to the actual left D-Pad in my mapping). Luckily this doesn't occur often and isn't too reflex-critical.

I was also lucky that all keys that I needed were represented relatively elegantly, including many sequences, and that I had found such a workable keymap. The first keymaps that I came up with had some significant drawbacks, but the drawbacks of this final map are surprisingly minimal considering what is being achieved, and some advantages even appeared. Note that my keymap is based on how I think the game will go, as I've only played near the starting village and haven't played the entire game through. It's possible there is some minigame or situation that uses the controls in a unique or unforeseen way, perhaps some surprises by Mr. Suzuki, but I won't know for sure until I complete the game. It may take a year or so before I do this, as I'm in no rush to blaze through the content and want to see what the game designer did.

Note that on January 12, 2021, three days after I first published this keymap article, the Shenmue III team pushed through a hotfix patch update on Steam that changed the version from 1.06.00 to 1.06.01 which now displays the keyboard key letters on the UI instead of the controller button letters if it detects that you pressed a keyboard/mouse button instead of a controller button at start. This seems to be a good thing for pure keyboard/mouse players, but it was a little bit confusing for me at first since my controllers (that emulate a keyboard) are detected as keyboard only. I was so used to seeing the A/B/X/Y letters on the screen instead of K/L/J/I that it interfered with my sparring and QTE training and had to get used to the colors and positions of the UI instead of the letters.

It's interesting that the long controllers, which look like remotes, are kind of like a fishing pole handle, and fishing was added to Shenmue III. Years before the motion control Wii controllers, there was actually an official fishing controller↗ with motion control for the Dreamcast, but Shenmue I and II did not include fishing nor take advantage of it. Soulcalibur, however, was one of the games that could be played using the fishing controller, using it to swing weapons not unlike later Wii games.

I experimented with holding the Wii controllers sideways, placing them next to each other, allowing the friction in the silicone jackets to hold them together--things you would never think of doing with conventional controllers--but there were some constraints that remained constant.

Constraints That Were Constant

  • I had to use a later model Wii controller with the MotionPlus gyro inside for motion sensing (not shown in the above photo) since the straight IR and accelerometer did not work once I entered the game--perhaps it doesn't like the absolute positioning, I don't know. The ones with the gyros inside look almost exactly the same except for text at the bottom explaining that it contains MotionPlus.
  • Fighting/dodging requires that the action (also called face) buttons be quickly pressable by one hand, since it took too long to move thumbs into awkward positions or across long distances, and having both hands on those buttons was not possible due to the need to move and/or block at the same time. The actual D-Pad was the only option due to the close spacing, and the dodge button had to be nearby.
  • Zooming, blocking, and dodging requires use of a trigger or a hand opposite the movement controls, since it must be able to be held down while moving/fighting, which ties up thumb on that hand.
  • Fishing requires all of the right stick HBNM buttons to be rotated clockwise for reeling while the WASD movement keys control the rod, and it has to be done rather quickly with good timing.
  • QTE, or quick time events, require controls for each hand be quickly pressable when the time comes, but they don't occur often enough in the game to justify an actual D-Pad, a precious resource.
  • Moving without using the motion sensing always requires the actual D-Pad, since it is the only way to move all diagonals with one hand. Using other buttons would require two hands to press two buttons simultaneously for diagonals, since the buttons are often far apart, which are not available since one hand is always needed for the fighting (action) buttons.
  • The reset camera option must be easily accessible to correct for camera/gyro misalignment which occurs fairly often.
  • The rarely used LB button (E key) can be excluded to save space since there are only 5 skills to toggle through during fighting, and this can be performed quickly enough (looping around) using only the RB button (which also serves dual purpose as inventory).
  • In the left hand, the Plus button is more easily accessible by the thumb, but in the right hand it is the Minus button instead. Otherwise all other buttons have approximately the same accessibility.

Once these constraints were satisfied, the rest is symmetry, availability, or just personal preference, but some surprising advantages emerged.

Keymap Advantages

The Triggers

  • All of the right trigger/stick buttons like RT, RS, and RB are represented in some way on the right controller. Keeping this consistent with the left-right orientation of a conventional gamepad helps to ensure no future conflicts in new contexts, and it also allows one hand to be placed on the keyboard if there is only one controller used (more on this below).
  • The most-often-used triggers LT/RT match the Wii controller triggers nicely and keep the left-right orientation for flipping though screens.
  • The RB inventory button is nice complement to RT, fitting controller ergonomics and allows the Wii controller A button to select a skill and B (the trigger) to use the skill during fighting. The Wii controller A button also works well for inventory, since the first action you make after inventory is often to press the action button A button (down on the actual D-Pad) to select food, which is right above the Wii controller A button.
  • The LS and RS buttons are next to each other in correct left/right order, but the LS is recessed and on the right controller. This seems to work nicely as it is rarely used for switching to another speaker, and you're more likely to need to use RS to reset the view.

The Analog Sticks

  • Motion control on the left controller allows more intuitive correction of camera misalignment than the right controller, and having the reset camera button on the right controller makes it easy to reset the camera while moving. Pressing up on the left D-Pad causes Ryo to walk forward, being steered by the camera, and pressing down will cause Ryo to turn around and face the camera. The reset camera button can be pressed immediately afterwards to turn the camera 180 degrees to match which is useful if you are up against an obstacle and need to turn around quickly.
  • Motion control on the left controller also feels more natural with both zoom and running, since you point and zoom with the left hand, then grab or open doors with the right hand. In running, you can relax both hands and steer with the left by gliding your wrist while simply pulling trigger with the right hand.
  • Luckily, the WASD keys do serve the same functions as the D-Pad during inventory and some other functions, so it is nice to have WASD on the actual D-Pad. This seems to be an intentional redundancy by the Shenmue III designers to improve usability.
  • If you need rapid, full HBNM camera control, you can temporarily shift both hands to the bottom of each controller to use the thumbs, and the left and right camera angle 2 buttons match the left and right controllers (but up and down do not). This is necessary for some minigames that tend to use left-right on the right stick.
  • An approximation of true cardinal directions for the HBNM right analog stick and camera controls can be achieved by inverting the right controller and then placing it against the left controller so the 1 and 2 and 2 and 1 keys are side-by-side, and then tilt both controllers slightly to the right. This will line up the buttons in a crude diamond pattern (similar to the A/B/X/Y action keys or face buttons on a conventional controller) to match the cardinal directions of the right analog stick, which may feel more natural in certain situations.
  • Having the camera angle down key N mapped to the right controller 1 button allows you to quickly target an opponent that might be behind you during a multiple-opponent battle. This can be done while blocking and moving with the left hand, and then the right trigger can quickly pressed to use a skill on that opponent. The other 1 and 2 buttons can also switch to opponents around you, but this one seems to be the most important.
  • The dodge button uses a double-tap of the left stick on the PS4 version, but this doesn't work with the PC version, and a separate button had to be mapped which interestingly more-closely matches the Dreamcast version. I mapped it to the right Minus button which allows quick thumb access during fighting. It is a little far away, but it was more advantageous to have the skill select and inventory button RB the closest, since it allows extremely fast skill selection and use (via trigger) during fighting for accurate timing. Dodging is usually used when pulling back when hands are not necessarily on action buttons. If you are already moving a direction, pressing this button will dodge. This function was so useful that I had to remove the 23rd LB button, which seems mostly redundant (but I won't know for certain until I finish the game), to make room for it.

Batting the Rim is Reel-ly Fun

A few days after I first published my keymap, I realized that the 1 and 2 buttons that I used for right stick camera angle could be assigned such that the 1 buttons were Up and Down and the 2 buttons were Left and Right which provided an overwhelming advantage to the fishing system (which I hadn't experienced when I first published the keymap). The fishing controls are difficult to operate without a right analog stick, since this stick is needed to rotate in full clockwise cycles to reel in the line while the left analog stick (mapped to the actual left D-Pad in my case) is used to control the rod. Since I split the camera angle HBNM controls across both controllers, most 1 and 2 combinations make it difficult for both hands to reel fast enough while also controlling the rod.

But this particular combination works surprisingly well, considering the lack of options that I had left on the Wii controllers, since it allows the controllers to be placed next to each other, resting on my leg for stability, and then the left fingers can control the actual D-Pad (for the rod) while both thumbs can slide straight up across the 2 and 1 buttons on each controller, in rapid repetition (BHMN, BHMN, etc.) for Left, Up, Right, and Down, and then repeat, allowing very fast clockwise reeling without any interference from the silicone jackets.

Even though there is no right analog stick that can be rotated to mimic a crank, this two-thumb motion could be imagined to represent "batting the rim" of the under-hanging spool of a centrepin↗ reel, a type more common in England, using two thumbs on the top rim of the spool or drum. The thumb motion even matches the spool motion when reeling in the line, as opposed to casting. An actual centrepin fisherman might not deem it the best way to use one of those reels, but it's still a fun, imaginary analog to real-world fishing using only this keymap. It was a little difficult to quickly move the D-Pad for the rod while reeling with the thumbs, but after some practice, I found that it works well, and mastering it is surprisingly entertaining.

As a side note, I grew up using spincast reels with my grandfather, with the spool perpendicular to the rod, so it's interesting for me to virtual fish with spools that are parallel to the rod, like some of those reels shown in Shenmue III, and I enjoy building reeling mechanisms in my robotic projects.

The D-Pad

  • The D-Pad was mapped to a virtual one using the left controller buttons, and you just quickly drop your thumb to feel the recessed Home button, which is down, and keep it there, hovering on top, like a new home position until a direction is decided. It even mimics the inverted-T arrangement of the FXCV keys on the keyboard. Since your left thumb is already on the recessed button, pushing down is very fast, and the Minus and Plus buttons are also fast, being very close on each side, good for QTE events and the Jump System. The A button, however, is the slowest in a QTE, but it's the least-used during Jump System.
  • But the A button, being farther away, is big and close to the left analog stick (movement) D-Pad, which comes in very handy when drinking Snake Power during a fight, an elegant benefit that wouldn't be there if the D-Pad was just a D-Pad.
  • If there are two Jump Choices, they are usually horizontal, and you can just use the Minus and Plus buttons, if there are three, like a Cancel, it is at the bottom, and you just use Home button. There is less need to access the A button that is farther away.
  • The D-Pad is critical for controlling the Memo Pad, too, and Up, Down is needed to see all of the tabs, a game feature that can easily be missed, which I use often for viewing the map. It is also used, when slightly zoomed in, to move the camera position to center Ryo. These functions seem to work well using the virtual D-Pad buttons once I got used to them.

The Action Buttons

  • Luckily, the fight combos seem to use sequences that don't overlap. In other words, you don't see things like A + Y (combinations used heavily in games like the Dreamcast Soulcalibur which would be possible on buttons but impossible on that rocking D-Pad), but instead see things like A Y Y. This allowed me to move the wide action buttons to the faster D-Pad. Whew! Thanks, Mr. Suzuki.
  • The wireless controllers going through the translation layers through Linux were still fast enough to get accurate fighting timing without any noticeable lag, although I do have a slower than average setup and haven't played it on a fast PC to see the difference.

Keymap Drawbacks

  • The most glaring drawback is the same as the keyboard itself: the sheer lack of enough directional pads, specifically the two analog sticks, one more than Shenmue I and II on the original Dreamcast controller, along with the fact that the mouse/motion sensing is disabled in many modes. Motion sensing does solve the problem with the right stick, but only when walking around, and not in the other modes. So digital buttons/pads had to be used to approximate the function, which can be awkward, especially if you have to use the right stick HBNM in complex ways. The actual D-Pads had to be used for non D-Pad uses, and it would have been nicer to have real A/B/X/Y action or face buttons.
  • LB had to be excluded, adding a slight inconvenience when switching skills.
  • The LS/RS shoulder buttons aren't actually on the shoulders where they should be, but they are fairly close to the thumb.
  • The virtual D-Pad using the buttons on the left controller takes some getting used to, and is slower than an actual D-Pad.
  • The gyro tracking is smooth and enjoyable, but it has to be corrected for misalignment occasionally.
  • It would be nice to have the Dodge button a little closer to the top D-Pads where fighting occurs, as it is used often, but is still fairly close to the thumb.
  • Holding the triggers on the controllers while pressing other buttons with the same hand is not quite as easy as a conventional controller due to the long, vertical length of the controls and the fact that you don't have the other hand to stabilize it, but the controllers can be placed together during fighting since the motion sensing is disabled during this time.
  • There is a few-minute calibration time in Xwiimote before the gyro is ready to use.
  • There is risk of crashing the GUI right after the controllers are connected but before the game is loaded if there is any conflicting inputs, such as multiple keymaps or if the mouse or the controller with motion control are moved at the same time. So care has to be taken in the Linux configuration to prevent the multiple keymap situation, but there is a short window when the mouse is needed to launch the game (when it could crash). Once the game is loaded, only the controller should be used and the mouse should not be moved to prevent any crashing.
  • The recessed Home buttons are a little harder to press quickly, but they are easy to find.
  • There is no vibration feedback even though the kernel module supports it, and there is no VMU, of course!

Fascinating Fallback Combinations

This two controller keymap allows an interesting division of labor between the controllers with moving, blocking and selection mainly on left hand, and actions and fighting moves mainly on right hand, with some overlap.

It is possible to play with only one controller and use the opposite hand to control the keyboard, since almost all of the keys are accessible to that hand via touch-typing. The ASDF or JKL; home row↗ keys are where the hand would normally reside, but they have to slide diagonally down to new "home row" positions at ZXCV or BNM, for accessing the D-Pad or Camera keys FXCV and HBNM. This isn't too hard to do by touch if you first feel for the bumps on the F and J keys for orientation, but then you start to lose some of the benefits of the controllers. But there is one key where this is a problem: If only the right hand has the controller, the H key (right stick up) cannot be accessed via normal touch typing via the left hand. During zooming, this can compensated for by moving the motion control gyro function to the right controller. But in other modes, this doesn't allow all functions that depend on vertical camera angle (such as reeling). But luckily, H borders right next to the left-hand G key, and so the left hand could be trained to move over one key to reach them, and the vertical orientation of H and B matches nicely with the vertical orientation of the left controller.

It is also possible to play with two older Wii controllers and not the newer ones with the gyro sensing, since the 1 and 2 buttons on the controllers change the camera view. However, it is hard to access the 2 button on the left controller while walking to look left, but the Plus button on the right controller can reset the view.

They could also be separated between two people to achieve some benefits. A second person could use the right controller to perform all actions and fighting, while the person on the left controller could put both hands on the controller to walk around, controlling the Zoom and camera in real-time. Dividing the labor between two people also allows even faster virtual D-Pad control via the buttons, and is also fun, but problems occur when the HBNM right stick keys are needed in minigames or fishing, since they are split across both controllers. But a third controller could be configured, for example, with redundant buttons but arranged just for fishing and minigames, picked up when needed allowing full fishing control with two hands like the old Dreamcast controller.

There are all kinds of interesting combinations when you introduce more controllers and more people. You could get a group of multiple friends together to bring over multiple controllers and use different keymaps as j0, j1, j2, j3, and everyone could play the game together for the first time. One person could perform jumps and QTEs, one could manage inventory and exchanges, one could fish, one could enter fighting moves and dodge, etc.

It is interesting, too, that in this two-controller keymap, the navigation can be performed independently by each controller by itself, although rudimentary and poorly. If the controllers happen to be split between two people and one person leaves to go to the bathroom, the other person could still navigate using just their controller until the other person got back:

  • Using only the left-hand controller, full walking, turning, and zooming is possible, but not running, nor opening doors. This is even true to some extent if the left controller (without full horizontal camera control) doesn't have motion control, since the camera will move left, 360 degrees around the player, if you hold down the camera angle button 2 long enough. The camera will also auto follow if you walk left or right for a few seconds, then push forward, and then the camera will slowly drift around to where Ryo is facing. If you pay close attention, you'll notice that the game often varies in behavior when tapping the control versus holding it down, for several different functions. However, looking down while zooming to examine or pick up something is not possible without the motion control, since there is no down camera button on this controller.
  • Using only the right-hand controller, full running is possible, but walking and turning is rudimentary, and zooming is not possible. If you tap the right run trigger, it does walk briefly unless you hold it to run, but when running without pressing the forward walk button on the left controller, the character runs in huge arcs. You can steer right using the camera angle button 2 but cannot abruptly turn, nor turn around directly, nor turn left while running. But with some practice, you'll see that you can run right and steer and not get stuck if you keep running after you run into things. But there are some times when you might run into people or up against something flat and get stuck. Sometimes using the switch character button R or knocking on a door can get you out of a jam, but not always. But there is an interesting other technique: if you use the camera angle button 1 to look down at Ryo, you can then use camera angle button 2 to turn right a full 360 degrees to where you want to go, and then tap the trigger to run and he will step in that direction, something that only seems to occur when the camera is overhead. So, while difficult, you can still navigate around using only the right controller without motion control until the other person returns, but the overhead view limits what you can see until the camera eventually lowers behind you.

It's fascinating exploring the combinations possible.

Linux Configuration

I already installed steam, the Valve Steam Linux client, from the Ubuntu 20.04 repositories, which I then used to install Proton 5.13-4 and the PC Windows version of Shenmue III (after I purchased it). I spent a few hours playing the game using a keyboard and mouse before I decided to add the two controllers, and I set my display resolution to 1280×720 and set the game's graphics to the Medium setting since my system can be slow in high-density areas. Note that I run a dual-monitor setup on an Nvidia GeForce 750 Ti using the version 455.38 driver, and I set the default screen to the monitor I want before playing so that the game launches on the correct screen.

The Linux kernel driver, hid-wiimote, is already part of the official Linux kernel and does not need to be installed and will be automatically used when needed. The bluez Bluetooth tool, bluetoothctl, is also part of the default Ubuntu 20.04 installation and does not need to be installed.

I only needed to install two Ubuntu packages. The first was xserver-xorg-input-xwiimote, which simply installs the libxwiimote library and xf86-input-xwiimote (a default Xorg configuration file that it creates at /usr/share/X11/xorg.conf.d/60-xorg-xwiimote.conf). The second was the xwiimote package which adds the file /usr/share/X11/xorg.conf.d/50-xorg-fix-xwiimote.conf file to prevent controller conflicts. These are provided by the XWiimote project↗.

sudo apt-get install xserver-xorg-input-xwiimote xwiimote

Then, it was just a matter of adding whatever keymap I wanted to 60-xorg-xwiimote.conf which is just a simple text file based on the Xorg InputClass syntax↗ and the xf86-input-wiimote syntax.

However, if the xwiimote package is not installed to add the 50-xorg-fix-xwiimote.conf file, which looks like this↗ with Option "Ignore" "on", then an odd thing happens: the default keymap will conflict with the custom keymap, as if the keys are pressed at the same time, and I will get a jumble of the correct Shenmue III keys mixed in with incorrect default ones, along with frequent crashing of the GUI which logs me out of X-Windows. A similar thing happens with the mouse and motion control: once the controller takes over the mouse and auto-calibrates and stabilizes, I cannot use both the mouse and the controller with motion control at the same time or frequent crashes will occur. It doesn't seem to tolerate conflicting key presses or mouse movements coming in at the same time.


The 22 keys for my Shenmue III keymap and motion control settings were added to the file /usr/share/X11/xorg.conf.d/60-xorg-xwiimote.conf for Shenmue III on Ubuntu 20.04.1 LTS using xf86-input-xwiimote. Please note that my keymap arrangement below is freely usable; it's not executable code, but just a keymap configuration (an idea), and not an expression. The syntax is just a combination of the InputClass and Xwiimote syntax, both of which have very permissible open-source licenses.

The default file at /usr/share/X11/xorg.conf.d/60-xorg-xwiimote.conf that the xserver-xorg-input-xwiimote package installs on Ubuntu 20.04.1 looks like this↗, and there you can see that the first InputClass section is for the controller with Option "Ignore" "off", which is what I want.

I ignored the two other Sections for the Classic and Pro controllers, since I'm just using the normal controllers. But I first had to change the MatchDevicePath from "/dev/input/event*" to "/dev/input/js0". The js0 (or joystick 0) device is always the first controller assigned by Ubuntu 20.04.1 when connected via bluetoothctl so this is a way to ensure that the first controller connected gets the left key mappings. Otherwise all controllers will get the same mapping, which is not what I want.

Once it was changed to MatchDevicePath "/dev/input/js0", then it was just a matter of pasting in my key mappings (those Option lines) below into that Section.

Here is my mapping for the left controller, the one with the gyro inside:

Option "MapUp"               "KEY_W"
Option "MapDown"             "KEY_S"
Option "MapLeft"             "KEY_A"
Option "MapRight"            "KEY_D"
Option "MapB"                "KEY_LEFTCTRL"
Option "MapA"                "KEY_F"
Option "MapHome"             "KEY_C"
Option "MapMinus"            "KEY_X"
Option "MapPlus"             "KEY_V"
Option "MapOne"              "KEY_H"
Option "MapTwo"              "KEY_B"
Option "MotionSource"        "MotionPlus"
Option "MpNormalization"     "on"
Option "MPCalibrationFactor" "on"
Option "MPXScale"            "-2"
Option "MPYScale"            "2"
Option "MPZScale"            "2"

Note that I had to change the X direction, and ramp the scaling to 2 to put the camera in the correct orientation and make it less likely to get out of alignment due to the increased sensitivity and reduced range of motion (I didn't have to move my wrist as far, possibly truncating some of the range).

Then, for the right controller, I copied that entire section and pasted it underneath to create a new section, but again changed the MatchDevicePath, this time to MatchDevicePath "/dev/input/js1" and replaced the Option Map lines with the ones below. I also removed the MotionSource and MP lines in this section, as they are intended for motion control on the left controller only.

Here is my mapping for the right controller:

Option "MapDown"             "KEY_K"
Option "MapRight"            "KEY_L"
Option "MapLeft"             "KEY_J"
Option "MapUp"               "KEY_I"        
Option "MapB"                "KEY_RIGHTSHIFT"
Option "MapA"                "KEY_U"
Option "MapHome"             "KEY_R"
Option "MapMinus"            "KEY_SPACE"
Option "MapPlus"             "KEY_Y"
Option "MapOne"              "KEY_N"
Option "MapTwo"              "KEY_M"

Once those two Sections were edited, the file is saved, and a login and logout from X-Windows is needed before it picks up the changes.

Caution, however, that even minor errors or typos in this file can cause the GUI to fail to start, even after a reboot, and you could just get a blank screen when turning on the computer, in which case, you would need to know how to use command-line Linux and text-editors to fix it (either from accessing the TTYs, using SSH (a remote shell) from another computer if this was already configured, or booting into Ubuntu recovery mode. This is standard Linux administration, but if you aren't adept at this nor adept at the Linux command line, then you should probably refrain from editing your Xorg.conf files and would probably be better off just getting a conventional game controller that works with both Linux and Steam and then configure it with the graphical Steam tools.

After logging back in, I had to connect the two controllers via bluetoothctl in a certain order, first the left, then the right, to ensure the proper keymaps, and then the hid-wiimote kernel driver took over in combination with libxwiimote and they immediately started using the new keymaps. The left controller with motion control moves the mouse pointer, and the buttons on both controllers type those keys just like a keyboard.


If the computer has Bluetooth either built-in or via a USB adapter, typing bluetoothctl in the terminal provides a nice command line way of finding, pairing, and connecting Bluetooth devices. Once inside its sub-terminal, typing "help" shows you the commands.

I first typed "scan on", and then pushed the 1 and 2 buttons simultaneously on the controllers at the same time to find out what each of their MAC addresses were, and then typed "scan off" when done. Once they were known, it was just a matter of using the pair and connect commands for those MAC addresses to eventually connect to them, and then "exit" to quit. As soon as I pressed enter after one of those commands, such as "pair 12:34:56:78:90:12" or "connect 12:34:56:78:90:12" (example MAC addresses only), then I had to immediately press the 1 and 2 buttons for that controller, and this might take a few tries, since there is a very short window. When connecting, the LEDs will flash, and when connected, the left LED will stay on. Linux BASH aliases can also be created to simplify the connection process once they are paired and the MAC addresses are known.

Again, they have to be connected in a particular order, the left one first, the right one second, since Ubuntu 20.04.1 assigns the first one as device /dev/input/js0 and the second one as /dev/input/js1, and they need to get the correct keymap intended for them. If they are accidentally connected in the wrong order, the power buttons can be pressed on the controllers which turns off the LED and disconnects them from Bluetooth, and then bluetoothctl can be used to reconnect them again.

Note that I do not use Wii controllers that are already connected to an actual Wii console in Standard Mode (using the red SYNC buttons inside the console and controllers) as this would allow power control of the console which I don't want, since I just want the power buttons to disconnect them from the PC and not turn the Wii on or off. The controllers could still be used with a Wii in One Time Mode using the Wii settings menu along with the 1, 2 buttons, if needed.

After the controllers are connected to the PC, two odd things happen:

  • The mouse pointer quickly drifts to the left edge of the screen when the left controller is connected, and I can't use the mouse normally until I wait a few minutes for the pointer to gradually slow down and stop moving. This appears to be due to the Linux auto-calibration of the gyro-based system. I usually keep the controller stationary until this is done.
  • During that few-minute auto-calibration time, until the game is started and takes over the pointer, the mouse should be moved as little as possible to not conflict with the controller, as it is unstable and can spontaneously crash and require a login. So I don't move the mouse until the auto-calibration is complete, and then I quickly move it to start the game. But even during that brief time it can crash, so it might be ideal to later create a way of starting the game through Steam without using the mouse. During gameplay, it doesn't crash on me since I don't touch the mouse, and after I press ESC to quit the game, I make sure to quickly press the power buttons on the two controllers to disconnect them to avoid any crashing.

Final Thoughts

When I was playing Shenmue III using just my keyboard and mouse, it was as if I was just studying the new game mechanics as a curiosity, excited but frustrated, like watching a carnival ride that I wasn't allowed to board. But using PC keys appropriately mapped to the two Wii controllers allows me to finally enjoy the game in a way it was intended to be played, more reminiscent of the old Dreamcast, and it feels like I'm living in the world of Ryo again and no longer a ghost.

When you play the Shenmue series, you play non-linear, open-world cities and villages with 3D fighters and arcade games inside them that were created by the originator of these types of open-worlds, 3D fighters, and arcade games that defined new genres. The polygonal 3D fighter as we know it today, for example, didn't even exist until Mr. Suzuki and his team created it, as his Virtua Fighter↗ was the first one! And what teen in the 1980's arcades can forget about OutRun or After Burner? Both games often caused your jaw to drop the moment you stepped inside the mall arcade, reminding you and your friends why you went through the trouble to still go to the arcade even though you finally had a computer at home↗.

That was why.

Thank you, Mr. Suzuki, for creating a wonderful Shenmue sequel in 2019 along with all of those arcade games from my childhood.