Mini Padder

Free Mini Padder 3.10.4


  • Adjusted the position of sub buttons in M layouts so it looks less different to the actual joystick while keeping the buttons in a row.
  • The button row and the main area of the stick and face buttons are slightly distanced so there is a space for the start button between them, if someone wants to add it in the skin.
  • Sprites for a smaller button for joystick skins are added to the spritesheets.
An input fading right after being released makes it much easier to tell inputs that were just involved in the action a moment ago, and ones that are not involved in the action currently happening. I decided to make this a default set of values after using it for a while.

Time8, 16, 320, 8, 12
Opacity0.5, 0.1, 00.5, 0.1, 0

The button gap on the layout was based on the buttons' full size, including their frames. Since the other layouts referred to the moving part of the buttons, I tried to reposition this layout with the same standard. By the way, the vertical gap on the layout is still narrower than that of others.

This is a layout where face buttons are laid in the middle, and the buttons are close to each other.
While making this layout, I decided to represent the vertical position of buttons to the stick, and made the change to A layout as well. V layout didn't need it because it's already made with that in mind, so this change should've already been made to keep the consistency between joystick variations.

Most skin files had one line with the space indentation. I converted them to have the tab indentation, hence the big number of changed files in the commit log.

  • fix one error message being shown as [object Object]
  • adjust position in Joystick A layout
  • add Joystick M layout
  • convert space indentation of one line in most of skins to tab indentation
A browser capture can stop for a brief time and delay rendering of some frames in the time when it's previously hidden, or the computer briefly becomes busy. This update changes the behaviour of Error Log so it can log when delayed frames occur.
  • log 'warning' messages to Error Log
  • change timestamps in Error Log to local time string
  • warn when delayed frames occur
Do a Fuzzy Parry

There was a bug in 8-way dpad/stick skins where quickly moving from right/down to left/up will overwrite the new direction being active with the previous one being inactive.

It becomes noticeable when you try to do "fuzzy parry" in Tekken 7, where you mix down-forward with back or a back dash (d/f~b).
Low Parry and Back Dash.gif

It turned out each of the 4-directions in an 8-way stick are processed individually, and a change in the same axis processed later will effectively overwrite that in the opposite direction in the same frame. So if you move fast enough that the stick reaches the opposite direction in the duration of a single frame, the overlay stops at the neutral position.

This bug remained hidden the whole time, because gamepad skins, with a 4-way dpad, can't have the problem. It's okay for them to handle the 4-directions individually, as the rendering for them is also separated. And while joystick skins could have it, you can't move the stick fast enough to reach the opposite direction in a single frame.

So it was a job for players using a gamepad, who play games which don't intuitively show diagonal movements on the screen, to discover the bug. And I was practising Tekken 7 with a DualShock 4.

Joystick Skin Variations


Replacing the face buttons with their corresponding colours seem like common customization for a joystick, so I added variations going with it. Since these are not monochromatic, I also changed their stick colour to red.
Hide Unwanted Gamepads


There are cases where you want to not show some of the gamepads recognized, namely one of the two pairs coming when you're using a program like DS4Windows. One of them will show nothing, or show macro inputs instead of actual input you make.

Using the custom CSS option of the browser source, you can make a rule to hide gamepads associated with a specific gamepad VID/HID. Add this line as custom CSS, and replace 00000000 with an actual gamepad ID you want to hide.
#canvas-container > div[data-id="00000000"] { display: none; }
You can wrap the line with /* and */ to disable it while preserving it for future use. Just don't forget to turn it on when you need to show it again.
/* #canvas-container > div[data-id="00000000"] { display: none; } */
This info is available in this wiki page, along with other info that may help you if you experience a problem.

Hide Disconnected Gamepads

Also now a disconnected gamepad won't freeze with the last input it received, and instead will be disappeared. This was a behaviour I kept at first, being worried that having to prepare and discard drawing tools for a gamepad on each connection changes, especially when it's rapidly connecting and disconnecting due to a bad contact, would hurt the performance or needlessly drain resources.

But the last frame of a gamepad remaining after the disconnection would lead to a misreading, and I decided that's a more important concern to consider.

  • change placeholder texts for fade-out inputs
    When you empty the inputs, it won't put any other numbers. Now the placeholder texts when they're empty won't confuse users.
  • adjust triangle button label to fit with its active part
  • add data attribute of gamepadId to each gamepad canvas
    The hiding using a CSS rule is possible with this change.
  • remove gamepad slot on disconnection

I made some adjustments on the button space, because SFC gamepad face buttons are not laid on a 1:1 ratio diamond. I believe this change is pretty subtle beside on the face buttons.

I am being active on making small changes these days. Maybe I should set a weekday for making a release if I get to keep this level of activity.
  • fixed the button labels on disc skins looking sorta off on idle state
    Mainly I made the label border circular, and adjusted how the triangle button looks.
  • replaced dinput skin in open graph image with disc d button one

After making the disc dpad skin, the stick area of the joystick skins started looking too big. The size was decided to minimize overlapping areas between adjacent positions of the stick, in hope to make the moves clear in a tough encoding situation. But I was wondering if it's actually hurting the readability. I tried to decrease the stick area size to that of the disc dpad skin and made a gif from both versions to see the difference.

I felt like the smaller size is making it easier to read, but I can't really provide logical reasons. So I tried to stick to things I can measure:
  • While I can try to distance active positions from the neutral position, I can't change angles between them. This ended up the original size having a bigger overlapping between active positions than that between any active position and the neutral position.
  • With overall size decrease, the eyes now have a smaller area to track.
  • The smaller size has generally larger overlapping between positions, but the overlapping is more even.
Based on these matters, I decided to update the skins with the change.

  • change display names of disc dpad skins to keep the naming consistency between default skins
  • decrease stick area size of joystick skins