diff --git a/gamefiles/models/x360btns.txd b/gamefiles/models/x360btns.txd
new file mode 100644
index 00000000..27837c2f
Binary files /dev/null and b/gamefiles/models/x360btns.txd differ
diff --git a/src/core/ControllerConfig.cpp b/src/core/ControllerConfig.cpp
index dcc294c8..504b832c 100644
--- a/src/core/ControllerConfig.cpp
+++ b/src/core/ControllerConfig.cpp
@@ -2316,199 +2316,207 @@ int32 CControllerConfigManager::GetNumOfSettingsForAction(e_ControllerAction act
 	return num;
 }
 
-const char *XboxButtons[][MAX_CONTROLLERACTIONS] =
-{
-	{
-		"B",    // PED_FIREWEAPON
-		"RT",   // PED_CYCLE_WEAPON_RIGHT
-		"LT",   // PED_CYCLE_WEAPON_LEFT
-		nil,    // GO_FORWARD
-		nil,    // GO_BACK
-		nil,    // GO_LEFT
-		nil,    // GO_RIGHT
-		"X",    // PED_SNIPER_ZOOM_IN
-		"A",    // PED_SNIPER_ZOOM_OUT
-		"Y",    // VEHICLE_ENTER_EXIT
-		"BACK", // CAMERA_CHANGE_VIEW_ALL_SITUATIONS
-		"X",    // PED_JUMPING
-		"A",    // PED_SPRINT
-		"RS",   // PED_LOOKBEHIND
 #ifdef BIND_VEHICLE_FIREWEAPON
-		"B",   // VEHICLE_FIREWEAPON
+#define VFB(b) b,
+#else
+#define VFB(b)
 #endif
-		"A",  // VEHICLE_ACCELERATE
-		"X",  // VEHICLE_BRAKE
-		"LB", // VEHICLE_CHANGE_RADIO_STATION
-		"LS", // VEHICLE_HORN
-		"RS", // TOGGLE_SUBMISSIONS
-		"RB", // VEHICLE_HANDBRAKE
-		nil,  // PED_1RST_PERSON_LOOK_LEFT
-		nil,  // PED_1RST_PERSON_LOOK_RIGHT
-		"LT", // VEHICLE_LOOKLEFT
-		"RT", // VEHICLE_LOOKRIGHT
-		nil,  // VEHICLE_LOOKBEHIND
-		nil,  // VEHICLE_TURRETLEFT
-		nil,  // VEHICLE_TURRETRIGHT
-		nil,  // VEHICLE_TURRETUP
-		nil,  // VEHICLE_TURRETDOWN
-		"LT", // PED_CYCLE_TARGET_LEFT
-		"RT", // PED_CYCLE_TARGET_RIGHT
-		"LB", // PED_CENTER_CAMERA_BEHIND_PLAYER
-		"RB", // PED_LOCK_TARGET
-		nil,  // NETWORK_TALK
-		nil,  // PED_1RST_PERSON_LOOK_UP
-		nil,  // PED_1RST_PERSON_LOOK_DOWN
-		nil,  // _CONTROLLERACTION_36
-		nil,  // TOGGLE_DPAD
-		nil,  // SWITCH_DEBUG_CAM_ON
-		nil,  // TAKE_SCREEN_SHOT
-		nil,  // SHOW_MOUSE_POINTER_TOGGLE
-	},
-	{
-		"B",    // PED_FIREWEAPON
-		"RT",   // PED_CYCLE_WEAPON_RIGHT
-		"LT",   // PED_CYCLE_WEAPON_LEFT
-		nil,    // GO_FORWARD
-		nil,    // GO_BACK
-		nil,    // GO_LEFT
-		nil,    // GO_RIGHT
-		"X",    // PED_SNIPER_ZOOM_IN
-		"A",    // PED_SNIPER_ZOOM_OUT
-		"Y",    // VEHICLE_ENTER_EXIT
-		"BACK", // CAMERA_CHANGE_VIEW_ALL_SITUATIONS
-		"X",    // PED_JUMPING
-		"A",    // PED_SPRINT
-		"RS",   // PED_LOOKBEHIND
-#ifdef BIND_VEHICLE_FIREWEAPON
-		"B", // VEHICLE_FIREWEAPON
+
+#define CONTROLLER_BUTTONS(T, O, X, Q, L1, L2, L3, R1, R2, R3, SELECT)                                                                                         \
+	{{                                                                                                                                                         \
+	     O,      /* PED_FIREWEAPON */                                                                                                                          \
+	     R2,     /* PED_CYCLE_WEAPON_RIGHT */                                                                                                                  \
+	     L2,     /* PED_CYCLE_WEAPON_LEFT */                                                                                                                   \
+	     nil,    /* GO_FORWARD */                                                                                                                              \
+	     nil,    /* GO_BACK */                                                                                                                                 \
+	     nil,    /* GO_LEFT */                                                                                                                                 \
+	     nil,    /* GO_RIGHT */                                                                                                                                \
+	     Q,      /* PED_SNIPER_ZOOM_IN */                                                                                                                      \
+	     X,      /* PED_SNIPER_ZOOM_OUT */                                                                                                                     \
+	     T,      /* VEHICLE_ENTER_EXIT */                                                                                                                      \
+	     SELECT, /* CAMERA_CHANGE_VIEW_ALL_SITUATIONS */                                                                                                       \
+	     Q,      /* PED_JUMPING */                                                                                                                             \
+	     X,      /* PED_SPRINT */                                                                                                                              \
+	     R3,     /* PED_LOOKBEHIND */                                                                                                                          \
+	     VFB(O)  /* VEHICLE_FIREWEAPON */                                                                                                                      \
+	     X,      /* VEHICLE_ACCELERATE */                                                                                                                      \
+	     Q,      /* VEHICLE_BRAKE */                                                                                                                           \
+	     L1,     /* VEHICLE_CHANGE_RADIO_STATION */                                                                                                            \
+	     L3,     /* VEHICLE_HORN */                                                                                                                            \
+	     R3,     /* TOGGLE_SUBMISSIONS */                                                                                                                      \
+	     R1,     /* VEHICLE_HANDBRAKE */                                                                                                                       \
+	     nil,    /* PED_1RST_PERSON_LOOK_LEFT */                                                                                                               \
+	     nil,    /* PED_1RST_PERSON_LOOK_RIGHT */                                                                                                              \
+	     L2,     /* VEHICLE_LOOKLEFT */                                                                                                                        \
+	     R2,     /* VEHICLE_LOOKRIGHT */                                                                                                                       \
+	     nil,    /* VEHICLE_LOOKBEHIND */                                                                                                                      \
+	     nil,    /* VEHICLE_TURRETLEFT */                                                                                                                      \
+	     nil,    /* VEHICLE_TURRETRIGHT */                                                                                                                     \
+	     nil,    /* VEHICLE_TURRETUP */                                                                                                                        \
+	     nil,    /* VEHICLE_TURRETDOWN */                                                                                                                      \
+	     L2,     /* PED_CYCLE_TARGET_LEFT */                                                                                                                   \
+	     R2,     /* PED_CYCLE_TARGET_RIGHT */                                                                                                                  \
+	     L1,     /* PED_CENTER_CAMERA_BEHIND_PLAYER */                                                                                                         \
+	     R1,     /* PED_LOCK_TARGET */                                                                                                                         \
+	     nil,    /* NETWORK_TALK */                                                                                                                            \
+	     nil,    /* PED_1RST_PERSON_LOOK_UP */                                                                                                                 \
+	     nil,    /* PED_1RST_PERSON_LOOK_DOWN */                                                                                                               \
+	     nil,    /* _CONTROLLERACTION_36 */                                                                                                                    \
+	     nil,    /* TOGGLE_DPAD */                                                                                                                             \
+	     nil,    /* SWITCH_DEBUG_CAM_ON */                                                                                                                     \
+	     nil,    /* TAKE_SCREEN_SHOT */                                                                                                                        \
+	     nil,    /* SHOW_MOUSE_POINTER_TOGGLE */                                                                                                               \
+	 },                                                                                                                                                        \
+	 {                                                                                                                                                         \
+	     O,      /* PED_FIREWEAPON */                                                                                                                          \
+	     R2,     /* PED_CYCLE_WEAPON_RIGHT */                                                                                                                  \
+	     L2,     /* PED_CYCLE_WEAPON_LEFT */                                                                                                                   \
+	     nil,    /* GO_FORWARD */                                                                                                                              \
+	     nil,    /* GO_BACK */                                                                                                                                 \
+	     nil,    /* GO_LEFT */                                                                                                                                 \
+	     nil,    /* GO_RIGHT */                                                                                                                                \
+	     Q,      /* PED_SNIPER_ZOOM_IN */                                                                                                                      \
+	     X,      /* PED_SNIPER_ZOOM_OUT */                                                                                                                     \
+	     T,      /* VEHICLE_ENTER_EXIT */                                                                                                                      \
+	     SELECT, /* CAMERA_CHANGE_VIEW_ALL_SITUATIONS */                                                                                                       \
+	     Q,      /* PED_JUMPING */                                                                                                                             \
+	     X,      /* PED_SPRINT */                                                                                                                              \
+	     R3,     /* PED_LOOKBEHIND */                                                                                                                          \
+	     VFB(O)  /* VEHICLE_FIREWEAPON */                                                                                                                      \
+	     X,      /* VEHICLE_ACCELERATE */                                                                                                                      \
+	     Q,      /* VEHICLE_BRAKE */                                                                                                                           \
+	     SELECT, /* VEHICLE_CHANGE_RADIO_STATION */                                                                                                            \
+	     L1,     /* VEHICLE_HORN */                                                                                                                            \
+	     R3,     /* TOGGLE_SUBMISSIONS */                                                                                                                      \
+	     R1,     /* VEHICLE_HANDBRAKE */                                                                                                                       \
+	     nil,    /* PED_1RST_PERSON_LOOK_LEFT */                                                                                                               \
+	     nil,    /* PED_1RST_PERSON_LOOK_RIGHT */                                                                                                              \
+	     L2,     /* VEHICLE_LOOKLEFT */                                                                                                                        \
+	     R2,     /* VEHICLE_LOOKRIGHT */                                                                                                                       \
+	     nil,    /* VEHICLE_LOOKBEHIND */                                                                                                                      \
+	     nil,    /* VEHICLE_TURRETLEFT */                                                                                                                      \
+	     nil,    /* VEHICLE_TURRETRIGHT */                                                                                                                     \
+	     nil,    /* VEHICLE_TURRETUP */                                                                                                                        \
+	     nil,    /* VEHICLE_TURRETDOWN */                                                                                                                      \
+	     L2,     /* PED_CYCLE_TARGET_LEFT */                                                                                                                   \
+	     R2,     /* PED_CYCLE_TARGET_RIGHT */                                                                                                                  \
+	     L1,     /* PED_CENTER_CAMERA_BEHIND_PLAYER */                                                                                                         \
+	     R1,     /* PED_LOCK_TARGET */                                                                                                                         \
+	     nil,    /* NETWORK_TALK */                                                                                                                            \
+	     nil,    /* PED_1RST_PERSON_LOOK_UP */                                                                                                                 \
+	     nil,    /* PED_1RST_PERSON_LOOK_DOWN */                                                                                                               \
+	     nil,    /* _CONTROLLERACTION_36 */                                                                                                                    \
+	     nil,    /* TOGGLE_DPAD */                                                                                                                             \
+	     nil,    /* SWITCH_DEBUG_CAM_ON */                                                                                                                     \
+	     nil,    /* TAKE_SCREEN_SHOT */                                                                                                                        \
+	     nil,    /* SHOW_MOUSE_POINTER_TOGGLE */                                                                                                               \
+	 },                                                                                                                                                        \
+	 {                                                                                                                                                         \
+	     X,      /* PED_FIREWEAPON */                                                                                                                          \
+	     R2,     /* PED_CYCLE_WEAPON_RIGHT */                                                                                                                  \
+	     L2,     /* PED_CYCLE_WEAPON_LEFT */                                                                                                                   \
+	     nil,    /* GO_FORWARD */                                                                                                                              \
+	     nil,    /* GO_BACK */                                                                                                                                 \
+	     nil,    /* GO_LEFT */                                                                                                                                 \
+	     nil,    /* GO_RIGHT */                                                                                                                                \
+	     T,      /* PED_SNIPER_ZOOM_IN */                                                                                                                      \
+	     Q,      /* PED_SNIPER_ZOOM_OUT */                                                                                                                     \
+	     L1,     /* VEHICLE_ENTER_EXIT */                                                                                                                      \
+	     SELECT, /* CAMERA_CHANGE_VIEW_ALL_SITUATIONS */                                                                                                       \
+	     Q,      /* PED_JUMPING */                                                                                                                             \
+	     O,      /* PED_SPRINT */                                                                                                                              \
+	     R3,     /* PED_LOOKBEHIND */                                                                                                                          \
+	     VFB(O)  /* VEHICLE_FIREWEAPON */                                                                                                                      \
+	     X,      /* VEHICLE_ACCELERATE */                                                                                                                      \
+	     Q,      /* VEHICLE_BRAKE */                                                                                                                           \
+	     L3,     /* VEHICLE_CHANGE_RADIO_STATION */                                                                                                            \
+	     R1,     /* VEHICLE_HORN */                                                                                                                            \
+	     R3,     /* TOGGLE_SUBMISSIONS */                                                                                                                      \
+	     T,      /* VEHICLE_HANDBRAKE */                                                                                                                       \
+	     nil,    /* PED_1RST_PERSON_LOOK_LEFT */                                                                                                               \
+	     nil,    /* PED_1RST_PERSON_LOOK_RIGHT */                                                                                                              \
+	     L2,     /* VEHICLE_LOOKLEFT */                                                                                                                        \
+	     R2,     /* VEHICLE_LOOKRIGHT */                                                                                                                       \
+	     nil,    /* VEHICLE_LOOKBEHIND */                                                                                                                      \
+	     nil,    /* VEHICLE_TURRETLEFT */                                                                                                                      \
+	     nil,    /* VEHICLE_TURRETRIGHT */                                                                                                                     \
+	     nil,    /* VEHICLE_TURRETUP */                                                                                                                        \
+	     nil,    /* VEHICLE_TURRETDOWN */                                                                                                                      \
+	     L2,     /* PED_CYCLE_TARGET_LEFT */                                                                                                                   \
+	     R2,     /* PED_CYCLE_TARGET_RIGHT */                                                                                                                  \
+	     T,      /* PED_CENTER_CAMERA_BEHIND_PLAYER */                                                                                                         \
+	     R1,     /* PED_LOCK_TARGET */                                                                                                                         \
+	     nil,    /* NETWORK_TALK */                                                                                                                            \
+	     nil,    /* PED_1RST_PERSON_LOOK_UP */                                                                                                                 \
+	     nil,    /* PED_1RST_PERSON_LOOK_DOWN */                                                                                                               \
+	     nil,    /* _CONTROLLERACTION_36 */                                                                                                                    \
+	     nil,    /* TOGGLE_DPAD */                                                                                                                             \
+	     nil,    /* SWITCH_DEBUG_CAM_ON */                                                                                                                     \
+	     nil,    /* TAKE_SCREEN_SHOT */                                                                                                                        \
+	     nil,    /* SHOW_MOUSE_POINTER_TOGGLE */                                                                                                               \
+	 },                                                                                                                                                        \
+	 {                                                                                                                                                         \
+	     R1,     /* PED_FIREWEAPON */                                                                                                                          \
+	     R2,     /* PED_CYCLE_WEAPON_RIGHT */                                                                                                                  \
+	     L2,     /* PED_CYCLE_WEAPON_LEFT */                                                                                                                   \
+	     nil,    /* GO_FORWARD */                                                                                                                              \
+	     nil,    /* GO_BACK */                                                                                                                                 \
+	     nil,    /* GO_LEFT */                                                                                                                                 \
+	     nil,    /* GO_RIGHT */                                                                                                                                \
+	     Q,      /* PED_SNIPER_ZOOM_IN */                                                                                                                      \
+	     X,      /* PED_SNIPER_ZOOM_OUT */                                                                                                                     \
+	     T,      /* VEHICLE_ENTER_EXIT */                                                                                                                      \
+	     SELECT, /* CAMERA_CHANGE_VIEW_ALL_SITUATIONS */                                                                                                       \
+	     Q,      /* PED_JUMPING */                                                                                                                             \
+	     X,      /* PED_SPRINT */                                                                                                                              \
+	     R3,     /* PED_LOOKBEHIND */                                                                                                                          \
+	     VFB(R1) /* VEHICLE_FIREWEAPON */                                                                                                                      \
+	     nil,    /* VEHICLE_ACCELERATE */                                                                                                                      \
+	     nil,    /* VEHICLE_BRAKE */                                                                                                                           \
+	     O,      /* VEHICLE_CHANGE_RADIO_STATION */                                                                                                            \
+	     L3,     /* VEHICLE_HORN */                                                                                                                            \
+	     Q,      /* TOGGLE_SUBMISSIONS */                                                                                                                      \
+	     L1,     /* VEHICLE_HANDBRAKE */                                                                                                                       \
+	     nil,    /* PED_1RST_PERSON_LOOK_LEFT */                                                                                                               \
+	     nil,    /* PED_1RST_PERSON_LOOK_RIGHT */                                                                                                              \
+	     L2,     /* VEHICLE_LOOKLEFT */                                                                                                                        \
+	     R2,     /* VEHICLE_LOOKRIGHT */                                                                                                                       \
+	     nil,    /* VEHICLE_LOOKBEHIND */                                                                                                                      \
+	     nil,    /* VEHICLE_TURRETLEFT */                                                                                                                      \
+	     nil,    /* VEHICLE_TURRETRIGHT */                                                                                                                     \
+	     nil,    /* VEHICLE_TURRETUP */                                                                                                                        \
+	     nil,    /* VEHICLE_TURRETDOWN */                                                                                                                      \
+	     L2,     /* PED_CYCLE_TARGET_LEFT */                                                                                                                   \
+	     R2,     /* PED_CYCLE_TARGET_RIGHT */                                                                                                                  \
+	     O,      /* PED_CENTER_CAMERA_BEHIND_PLAYER */                                                                                                         \
+	     L1,     /* PED_LOCK_TARGET */                                                                                                                         \
+	     nil,    /* NETWORK_TALK */                                                                                                                            \
+	     nil,    /* PED_1RST_PERSON_LOOK_UP */                                                                                                                 \
+	     nil,    /* PED_1RST_PERSON_LOOK_DOWN */                                                                                                               \
+	     nil,    /* _CONTROLLERACTION_36 */                                                                                                                    \
+	     nil,    /* TOGGLE_DPAD */                                                                                                                             \
+	     nil,    /* SWITCH_DEBUG_CAM_ON */                                                                                                                     \
+	     nil,    /* TAKE_SCREEN_SHOT */                                                                                                                        \
+	     nil,    /* SHOW_MOUSE_POINTER_TOGGLE */                                                                                                               \
+	 }}
+
+#ifdef BUTTON_ICONS
+const char *XboxButtons[][MAX_CONTROLLERACTIONS] = CONTROLLER_BUTTONS("~T~", "~O~", "~X~", "~Q~", "~K~", "~M~", "~A~", "~J~", "~V~", "~C~", "BACK");
+#else
+const char *XboxButtons[][MAX_CONTROLLERACTIONS] = CONTROLLER_BUTTONS("Y", "B", "A", "X", "LB", "LT", "LS", "RB", "RT", "RS", "BACK");
 #endif
-		"A",    // VEHICLE_ACCELERATE
-		"X",    // VEHICLE_BRAKE
-		"BACK", // VEHICLE_CHANGE_RADIO_STATION
-		"LB",   // VEHICLE_HORN
-		"RS",   // TOGGLE_SUBMISSIONS
-		"RB",   // VEHICLE_HANDBRAKE
-		nil,    // PED_1RST_PERSON_LOOK_LEFT
-		nil,    // PED_1RST_PERSON_LOOK_RIGHT
-		"LT",   // VEHICLE_LOOKLEFT
-		"RT",   // VEHICLE_LOOKRIGHT
-		nil,    // VEHICLE_LOOKBEHIND
-		nil,    // VEHICLE_TURRETLEFT
-		nil,    // VEHICLE_TURRETRIGHT
-		nil,    // VEHICLE_TURRETUP
-		nil,    // VEHICLE_TURRETDOWN
-		"LT",   // PED_CYCLE_TARGET_LEFT
-		"RT",   // PED_CYCLE_TARGET_RIGHT
-		"LB",   // PED_CENTER_CAMERA_BEHIND_PLAYER
-		"RB",   // PED_LOCK_TARGET
-		nil,    // NETWORK_TALK
-		nil,    // PED_1RST_PERSON_LOOK_UP
-		nil,    // PED_1RST_PERSON_LOOK_DOWN
-		nil,    // _CONTROLLERACTION_36
-		nil,    // TOGGLE_DPAD
-		nil,    // SWITCH_DEBUG_CAM_ON
-		nil,    // TAKE_SCREEN_SHOT
-		nil,    // SHOW_MOUSE_POINTER_TOGGLE
-	},
-	{
-		"A",    // PED_FIREWEAPON
-		"RT",   // PED_CYCLE_WEAPON_RIGHT
-		"LT",   // PED_CYCLE_WEAPON_LEFT
-		nil,    // GO_FORWARD
-		nil,    // GO_BACK
-		nil,    // GO_LEFT
-		nil,    // GO_RIGHT
-		"Y",    // PED_SNIPER_ZOOM_IN
-		"X",    // PED_SNIPER_ZOOM_OUT
-		"LB",   // VEHICLE_ENTER_EXIT
-		"BACK", // CAMERA_CHANGE_VIEW_ALL_SITUATIONS
-		"X",    // PED_JUMPING
-		"B",    // PED_SPRINT
-		"RS",   // PED_LOOKBEHIND
-#ifdef BIND_VEHICLE_FIREWEAPON
-		"B",   // VEHICLE_FIREWEAPON
-#endif
-		"A",  // VEHICLE_ACCELERATE
-		"X",  // VEHICLE_BRAKE
-		"LS", // VEHICLE_CHANGE_RADIO_STATION
-		"RB", // VEHICLE_HORN
-		"RS", // TOGGLE_SUBMISSIONS
-		"Y",  // VEHICLE_HANDBRAKE
-		nil,  // PED_1RST_PERSON_LOOK_LEFT
-		nil,  // PED_1RST_PERSON_LOOK_RIGHT
-		"LT", // VEHICLE_LOOKLEFT
-		"RT", // VEHICLE_LOOKRIGHT
-		nil,  // VEHICLE_LOOKBEHIND
-		nil,  // VEHICLE_TURRETLEFT
-		nil,  // VEHICLE_TURRETRIGHT
-		nil,  // VEHICLE_TURRETUP
-		nil,  // VEHICLE_TURRETDOWN
-		"LT", // PED_CYCLE_TARGET_LEFT
-		"RT", // PED_CYCLE_TARGET_RIGHT
-		"Y",  // PED_CENTER_CAMERA_BEHIND_PLAYER
-		"RB", // PED_LOCK_TARGET
-		nil,  // NETWORK_TALK
-		nil,  // PED_1RST_PERSON_LOOK_UP
-		nil,  // PED_1RST_PERSON_LOOK_DOWN
-		nil,  // _CONTROLLERACTION_36
-		nil,  // TOGGLE_DPAD
-		nil,  // SWITCH_DEBUG_CAM_ON
-		nil,  // TAKE_SCREEN_SHOT
-		nil,  // SHOW_MOUSE_POINTER_TOGGLE
-	},
-	{
-		"RB",   // PED_FIREWEAPON
-		"RT",   // PED_CYCLE_WEAPON_RIGHT
-		"LT",   // PED_CYCLE_WEAPON_LEFT
-		nil,    // GO_FORWARD
-		nil,    // GO_BACK
-		nil,    // GO_LEFT
-		nil,    // GO_RIGHT
-		"X",    // PED_SNIPER_ZOOM_IN
-		"A",    // PED_SNIPER_ZOOM_OUT
-		"Y",    // VEHICLE_ENTER_EXIT
-		"BACK", // CAMERA_CHANGE_VIEW_ALL_SITUATIONS
-		"X",    // PED_JUMPING
-		"A",    // PED_SPRINT
-		"RS",   // PED_LOOKBEHIND
-#ifdef BIND_VEHICLE_FIREWEAPON
-		"RB",   // VEHICLE_FIREWEAPON
-#endif
-		nil,  // VEHICLE_ACCELERATE
-		nil,  // VEHICLE_BRAKE
-		"B",  // VEHICLE_CHANGE_RADIO_STATION
-		"LS", // VEHICLE_HORN
-		"X",  // TOGGLE_SUBMISSIONS
-		"LB", // VEHICLE_HANDBRAKE
-		nil,  // PED_1RST_PERSON_LOOK_LEFT
-		nil,  // PED_1RST_PERSON_LOOK_RIGHT
-		"LT", // VEHICLE_LOOKLEFT
-		"RT", // VEHICLE_LOOKRIGHT
-		nil,  // VEHICLE_LOOKBEHIND
-		nil,  // VEHICLE_TURRETLEFT
-		nil,  // VEHICLE_TURRETRIGHT
-		nil,  // VEHICLE_TURRETUP
-		nil,  // VEHICLE_TURRETDOWN
-		"LT", // PED_CYCLE_TARGET_LEFT
-		"RT", // PED_CYCLE_TARGET_RIGHT
-		"B",  // PED_CENTER_CAMERA_BEHIND_PLAYER
-		"LB", // PED_LOCK_TARGET
-		nil,  // NETWORK_TALK
-		nil,  // PED_1RST_PERSON_LOOK_UP
-		nil,  // PED_1RST_PERSON_LOOK_DOWN
-		nil,  // _CONTROLLERACTION_36
-		nil,  // TOGGLE_DPAD
-		nil,  // SWITCH_DEBUG_CAM_ON
-		nil,  // TAKE_SCREEN_SHOT
-		nil,  // SHOW_MOUSE_POINTER_TOGGLE
-	}
-};
+
 
 #if 0 // set 1 for ps2 fonts
 #define PS2_TRIANGLE "\""
 #define PS2_CIRCLE "|"
 #define PS2_CROSS "/"
 #define PS2_SQUARE "^"
+#elif defined(BUTTON_ICONS)
+#define PS2_TRIANGLE "~T~"
+#define PS2_CIRCLE "~O~"
+#define PS2_CROSS "~X~"
+#define PS2_SQUARE "~Q~"
 #else
 #define PS2_TRIANGLE "TRIANGLE"
 #define PS2_CIRCLE "CIRCLE"
@@ -2516,199 +2524,22 @@ const char *XboxButtons[][MAX_CONTROLLERACTIONS] =
 #define PS2_SQUARE "SQUARE"
 #endif
 
+#ifdef BUTTON_ICONS
 const char *PlayStationButtons[][MAX_CONTROLLERACTIONS] =
-{
-	{
-		PS2_CIRCLE,    // PED_FIREWEAPON
-		"R2",   // PED_CYCLE_WEAPON_RIGHT
-		"L2",   // PED_CYCLE_WEAPON_LEFT
-		nil,    // GO_FORWARD
-		nil,    // GO_BACK
-		nil,    // GO_LEFT
-		nil,    // GO_RIGHT
-		PS2_SQUARE,    // PED_SNIPER_ZOOM_IN
-		PS2_CROSS,    // PED_SNIPER_ZOOM_OUT
-		PS2_TRIANGLE,    // VEHICLE_ENTER_EXIT
-		"SELECT", // CAMERA_CHANGE_VIEW_ALL_SITUATIONS
-		PS2_SQUARE,    // PED_JUMPING
-		PS2_CROSS,    // PED_SPRINT
-		"R3",   // PED_LOOKBEHIND
-#ifdef BIND_VEHICLE_FIREWEAPON
-		PS2_CIRCLE,   // VEHICLE_FIREWEAPON
+    CONTROLLER_BUTTONS(PS2_TRIANGLE, PS2_CIRCLE, PS2_CROSS, PS2_SQUARE, "~K~", "~M~", "~A~", "~J~", "~V~", "~C~", "SELECT");
+#else
+const char *PlayStationButtons[][MAX_CONTROLLERACTIONS] =
+    CONTROLLER_BUTTONS(PS2_TRIANGLE, PS2_CIRCLE, PS2_CROSS, PS2_SQUARE, "L1", "L2", "L3", "R1", "R2", "R3", "SELECT");
 #endif
-		PS2_CROSS,  // VEHICLE_ACCELERATE
-		PS2_SQUARE,  // VEHICLE_BRAKE
-		"L1", // VEHICLE_CHANGE_RADIO_STATION
-		"L3", // VEHICLE_HORN
-		"R3", // TOGGLE_SUBMISSIONS
-		"R1", // VEHICLE_HANDBRAKE
-		nil,  // PED_1RST_PERSON_LOOK_LEFT
-		nil,  // PED_1RST_PERSON_LOOK_RIGHT
-		"L2", // VEHICLE_LOOKLEFT
-		"R2", // VEHICLE_LOOKRIGHT
-		nil,  // VEHICLE_LOOKBEHIND
-		nil,  // VEHICLE_TURRETLEFT
-		nil,  // VEHICLE_TURRETRIGHT
-		nil,  // VEHICLE_TURRETUP
-		nil,  // VEHICLE_TURRETDOWN
-		"L2", // PED_CYCLE_TARGET_LEFT
-		"R2", // PED_CYCLE_TARGET_RIGHT
-		"L1", // PED_CENTER_CAMERA_BEHIND_PLAYER
-		"R1", // PED_LOCK_TARGET
-		nil,  // NETWORK_TALK
-		nil,  // PED_1RST_PERSON_LOOK_UP
-		nil,  // PED_1RST_PERSON_LOOK_DOWN
-		nil,  // _CONTROLLERACTION_36
-		nil,  // TOGGLE_DPAD
-		nil,  // SWITCH_DEBUG_CAM_ON
-		nil,  // TAKE_SCREEN_SHOT
-		nil,  // SHOW_MOUSE_POINTER_TOGGLE
-	},
-	{
-		PS2_CIRCLE,    // PED_FIREWEAPON
-		"R2",   // PED_CYCLE_WEAPON_RIGHT
-		"L2",   // PED_CYCLE_WEAPON_LEFT
-		nil,    // GO_FORWARD
-		nil,    // GO_BACK
-		nil,    // GO_LEFT
-		nil,    // GO_RIGHT
-		PS2_SQUARE,    // PED_SNIPER_ZOOM_IN
-		PS2_CROSS,    // PED_SNIPER_ZOOM_OUT
-		PS2_TRIANGLE,    // VEHICLE_ENTER_EXIT
-		"SELECT", // CAMERA_CHANGE_VIEW_ALL_SITUATIONS
-		PS2_SQUARE,    // PED_JUMPING
-		PS2_CROSS,    // PED_SPRINT
-		"R3",   // PED_LOOKBEHIND
-#ifdef BIND_VEHICLE_FIREWEAPON
-		PS2_CIRCLE, // VEHICLE_FIREWEAPON
-#endif
-		PS2_CROSS,    // VEHICLE_ACCELERATE
-		PS2_SQUARE,    // VEHICLE_BRAKE
-		"BACK", // VEHICLE_CHANGE_RADIO_STATION
-		"L1",   // VEHICLE_HORN
-		"R3",   // TOGGLE_SUBMISSIONS
-		"R1",   // VEHICLE_HANDBRAKE
-		nil,    // PED_1RST_PERSON_LOOK_LEFT
-		nil,    // PED_1RST_PERSON_LOOK_RIGHT
-		"L2",   // VEHICLE_LOOKLEFT
-		"R2",   // VEHICLE_LOOKRIGHT
-		nil,    // VEHICLE_LOOKBEHIND
-		nil,    // VEHICLE_TURRETLEFT
-		nil,    // VEHICLE_TURRETRIGHT
-		nil,    // VEHICLE_TURRETUP
-		nil,    // VEHICLE_TURRETDOWN
-		"L2",   // PED_CYCLE_TARGET_LEFT
-		"R2",   // PED_CYCLE_TARGET_RIGHT
-		"L1",   // PED_CENTER_CAMERA_BEHIND_PLAYER
-		"R1",   // PED_LOCK_TARGET
-		nil,    // NETWORK_TALK
-		nil,    // PED_1RST_PERSON_LOOK_UP
-		nil,    // PED_1RST_PERSON_LOOK_DOWN
-		nil,    // _CONTROLLERACTION_36
-		nil,    // TOGGLE_DPAD
-		nil,    // SWITCH_DEBUG_CAM_ON
-		nil,    // TAKE_SCREEN_SHOT
-		nil,    // SHOW_MOUSE_POINTER_TOGGLE
-	},
-	{
-		PS2_CROSS,    // PED_FIREWEAPON
-		"R2",   // PED_CYCLE_WEAPON_RIGHT
-		"L2",   // PED_CYCLE_WEAPON_LEFT
-		nil,    // GO_FORWARD
-		nil,    // GO_BACK
-		nil,    // GO_LEFT
-		nil,    // GO_RIGHT
-		PS2_TRIANGLE,    // PED_SNIPER_ZOOM_IN
-		PS2_SQUARE,    // PED_SNIPER_ZOOM_OUT
-		"L1",   // VEHICLE_ENTER_EXIT
-		"BACK", // CAMERA_CHANGE_VIEW_ALL_SITUATIONS
-		PS2_SQUARE,    // PED_JUMPING
-		PS2_CIRCLE,    // PED_SPRINT
-		"R3",   // PED_LOOKBEHIND
-#ifdef BIND_VEHICLE_FIREWEAPON
-		PS2_CIRCLE,   // VEHICLE_FIREWEAPON
-#endif
-		PS2_CROSS,  // VEHICLE_ACCELERATE
-		PS2_SQUARE,  // VEHICLE_BRAKE
-		"L3", // VEHICLE_CHANGE_RADIO_STATION
-		"R1", // VEHICLE_HORN
-		"R3", // TOGGLE_SUBMISSIONS
-		PS2_TRIANGLE,  // VEHICLE_HANDBRAKE
-		nil,  // PED_1RST_PERSON_LOOK_LEFT
-		nil,  // PED_1RST_PERSON_LOOK_RIGHT
-		"L2", // VEHICLE_LOOKLEFT
-		"R2", // VEHICLE_LOOKRIGHT
-		nil,  // VEHICLE_LOOKBEHIND
-		nil,  // VEHICLE_TURRETLEFT
-		nil,  // VEHICLE_TURRETRIGHT
-		nil,  // VEHICLE_TURRETUP
-		nil,  // VEHICLE_TURRETDOWN
-		"L2", // PED_CYCLE_TARGET_LEFT
-		"R2", // PED_CYCLE_TARGET_RIGHT
-		PS2_TRIANGLE,  // PED_CENTER_CAMERA_BEHIND_PLAYER
-		"R1", // PED_LOCK_TARGET
-		nil,  // NETWORK_TALK
-		nil,  // PED_1RST_PERSON_LOOK_UP
-		nil,  // PED_1RST_PERSON_LOOK_DOWN
-		nil,  // _CONTROLLERACTION_36
-		nil,  // TOGGLE_DPAD
-		nil,  // SWITCH_DEBUG_CAM_ON
-		nil,  // TAKE_SCREEN_SHOT
-		nil,  // SHOW_MOUSE_POINTER_TOGGLE
-	},
-	{
-		"R1",   // PED_FIREWEAPON
-		"R2",   // PED_CYCLE_WEAPON_RIGHT
-		"L2",   // PED_CYCLE_WEAPON_LEFT
-		nil,    // GO_FORWARD
-		nil,    // GO_BACK
-		nil,    // GO_LEFT
-		nil,    // GO_RIGHT
-		PS2_SQUARE,    // PED_SNIPER_ZOOM_IN
-		PS2_CROSS,    // PED_SNIPER_ZOOM_OUT
-		PS2_TRIANGLE,    // VEHICLE_ENTER_EXIT
-		"SELECT", // CAMERA_CHANGE_VIEW_ALL_SITUATIONS
-		PS2_SQUARE,    // PED_JUMPING
-		PS2_CROSS,    // PED_SPRINT
-		"R3",   // PED_LOOKBEHIND
-#ifdef BIND_VEHICLE_FIREWEAPON
-		"R1",   // VEHICLE_FIREWEAPON
-#endif
-		nil,  // VEHICLE_ACCELERATE
-		nil,  // VEHICLE_BRAKE
-		PS2_CIRCLE,  // VEHICLE_CHANGE_RADIO_STATION
-		"L3", // VEHICLE_HORN
-		PS2_SQUARE,  // TOGGLE_SUBMISSIONS
-		"L1", // VEHICLE_HANDBRAKE
-		nil,  // PED_1RST_PERSON_LOOK_LEFT
-		nil,  // PED_1RST_PERSON_LOOK_RIGHT
-		"L2", // VEHICLE_LOOKLEFT
-		"R2", // VEHICLE_LOOKRIGHT
-		nil,  // VEHICLE_LOOKBEHIND
-		nil,  // VEHICLE_TURRETLEFT
-		nil,  // VEHICLE_TURRETRIGHT
-		nil,  // VEHICLE_TURRETUP
-		nil,  // VEHICLE_TURRETDOWN
-		"L2", // PED_CYCLE_TARGET_LEFT
-		"R2", // PED_CYCLE_TARGET_RIGHT
-		PS2_CIRCLE,  // PED_CENTER_CAMERA_BEHIND_PLAYER
-		"L1", // PED_LOCK_TARGET
-		nil,  // NETWORK_TALK
-		nil,  // PED_1RST_PERSON_LOOK_UP
-		nil,  // PED_1RST_PERSON_LOOK_DOWN
-		nil,  // _CONTROLLERACTION_36
-		nil,  // TOGGLE_DPAD
-		nil,  // SWITCH_DEBUG_CAM_ON
-		nil,  // TAKE_SCREEN_SHOT
-		nil,  // SHOW_MOUSE_POINTER_TOGGLE
-	}
-};
 
 #undef PS2_TRIANGLE
 #undef PS2_CIRCLE
 #undef PS2_CROSS
 #undef PS2_SQUARE
 
+#undef CONTROLLER_BUTTONS
+#undef VFB
+
 void CControllerConfigManager::GetWideStringOfCommandKeys(uint16 action, wchar *text, uint16 leight)
 {
 #ifdef DETECT_PAD_INPUT_SWITCH
diff --git a/src/core/config.h b/src/core/config.h
index 9af75405..bdc5cd54 100644
--- a/src/core/config.h
+++ b/src/core/config.h
@@ -258,6 +258,7 @@ enum Config {
 #define ALT_DODO_CHEAT
 #define REGISTER_START_BUTTON
 //#define BIND_VEHICLE_FIREWEAPON // Adds ability to rebind fire key for 'in vehicle' controls
+#define BUTTON_ICONS // use textures to show controller buttons
 
 // Hud, frontend and radar
 #define HUD_ENHANCEMENTS	// Adjusts some aspects to make the HUD look/behave a little bit better.
diff --git a/src/render/Font.cpp b/src/render/Font.cpp
index d0b554dd..6aceaf4b 100644
--- a/src/render/Font.cpp
+++ b/src/render/Font.cpp
@@ -224,6 +224,11 @@ wchar foreign_table[128] = {
 	  0, 174, 165, 166, 167,   0, 168,   0,   0, 169, 170, 171, 172,   0,   0,   0,
 };
 
+#ifdef BUTTON_ICONS
+CSprite2d CFont::ButtonSprite[MAX_BUTTON_ICONS];
+int CFont::PS2Symbol = BUTTON_NONE;
+#endif // BUTTON_ICONS
+
 void
 CFont::Initialise(void)
 {
@@ -281,6 +286,31 @@ CFont::Initialise(void)
 	SetAlphaFade(255.0f);
 	SetDropShadowPosition(0);
 	CTxdStore::PopCurrentTxd();
+
+#ifdef BUTTON_ICONS
+	slot = CTxdStore::AddTxdSlot("buttons");
+	CTxdStore::LoadTxd(slot, "MODELS/X360BTNS.TXD");
+	CTxdStore::AddRef(slot);
+	CTxdStore::PushCurrentTxd();
+	CTxdStore::SetCurrentTxd(slot);
+#if 0  // unused
+	ButtonSprite[BUTTON_UP].SetTexture("up");
+	ButtonSprite[BUTTON_DOWN].SetTexture("down");
+	ButtonSprite[BUTTON_LEFT].SetTexture("left");
+	ButtonSprite[BUTTON_RIGHT].SetTexture("right");
+#endif
+	ButtonSprite[BUTTON_CROSS].SetTexture("cross");
+	ButtonSprite[BUTTON_CIRCLE].SetTexture("circle");
+	ButtonSprite[BUTTON_SQUARE].SetTexture("square");
+	ButtonSprite[BUTTON_TRIANGLE].SetTexture("triangle");
+	ButtonSprite[BUTTON_L1].SetTexture("l1");
+	ButtonSprite[BUTTON_L2].SetTexture("l2");
+	ButtonSprite[BUTTON_L3].SetTexture("l3");
+	ButtonSprite[BUTTON_R1].SetTexture("r1");
+	ButtonSprite[BUTTON_R2].SetTexture("r2");
+	ButtonSprite[BUTTON_R3].SetTexture("r3");
+	CTxdStore::PopCurrentTxd();
+#endif // BUTTON_ICONS
 }
 
 #ifdef MORE_LANGUAGES
@@ -329,6 +359,11 @@ CFont::ReloadFonts(uint8 set)
 void
 CFont::Shutdown(void)
 {
+#ifdef BUTTON_ICONS
+	for (int i = 0; i < MAX_BUTTON_ICONS; i++)
+		ButtonSprite[i].Delete();
+	CTxdStore::RemoveTxdSlot(CTxdStore::FindTxdSlot("buttons"));
+#endif
 	Sprite[0].Delete();
 	Sprite[1].Delete();
 	Sprite[2].Delete();
@@ -354,8 +389,34 @@ CFont::InitPerFrame(void)
 #endif
 	SetDropShadowPosition(0);
 	NewLine = 0;
+#ifdef BUTTON_ICONS
+	PS2Symbol = BUTTON_NONE;
+#endif
 }
 
+#ifdef BUTTON_ICONS
+void
+CFont::DrawButton(float x, float y)
+{
+	if (x <= 0.0f || x > SCREEN_WIDTH || y <= 0.0f || y > SCREEN_HEIGHT)
+		return;
+
+	if (PS2Symbol != BUTTON_NONE) {
+		CRect rect;
+		rect.left = x;
+		rect.top = Details.scaleY + Details.scaleY + y;
+		rect.right = Details.scaleY * 17.0f + x;
+		rect.bottom = Details.scaleY * 19.0f + y;
+
+		int vertexAlphaState;
+		RwRenderStateGet(rwRENDERSTATEVERTEXALPHAENABLE, &vertexAlphaState);
+		RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void *)TRUE);
+		ButtonSprite[PS2Symbol].Draw(rect, CRGBA(255, 255, 255, Details.color.a));
+		RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void *)vertexAlphaState);
+	}
+}
+#endif
+
 void
 CFont::PrintChar(float x, float y, wchar c)
 {
@@ -822,6 +883,15 @@ CFont::PrintString(float x, float y, wchar *start, wchar *&end, float spwidth, f
 		c = *s - ' ';
 		if (Details.slant != 0.0f && !IsJapanese())
 			y = (Details.slantRefX - x) * Details.slant + Details.slantRefY;
+
+#ifdef BUTTON_ICONS
+		if (PS2Symbol != BUTTON_NONE) {
+			DrawButton(x, y);
+			x += Details.scaleY * 17.0f;
+			PS2Symbol = BUTTON_NONE;
+		}
+#endif
+
 		PrintChar(x, y, c);
 		x += GetCharacterSize(c);
 		if (c == 0 && (!NewLine || !IsJapanese()))	// space
@@ -953,6 +1023,30 @@ CFont::GetStringWidth(wchar *s, bool spaces)
 				do {
 					while (*s == '~' || *s == JAP_TERMINATION) {
 						s++;
+#ifdef BUTTON_ICONS
+						switch (*s) {
+#if 0 // unused
+						case 'U':
+						case 'D':
+						case '<':
+						case '>':
+#endif
+						case 'X':
+						case 'O':
+						case 'Q':
+						case 'T':
+						case 'K':
+						case 'M':
+						case 'A':
+						case 'J':
+						case 'V':
+						case 'C':
+							w += 17.0f * Details.scaleY;
+							break;
+						default:
+							break;
+						}
+#endif
 						while (!(*s == '~' || *s == JAP_TERMINATION)) s++;
 						s++;
 					}
@@ -967,12 +1061,40 @@ CFont::GetStringWidth(wchar *s, bool spaces)
 		for (; (*s != ' ' || spaces) && *s != '\0'; s++) {
 			if (*s == '~') {
 				s++;
+#ifdef BUTTON_ICONS
+				switch (*s) {
+#if 0 // unused
+				case 'U':
+				case 'D':
+				case '<':
+				case '>':
+#endif
+				case 'X':
+				case 'O':
+				case 'Q':
+				case 'T':
+				case 'K':
+				case 'M':
+				case 'A':
+				case 'J':
+				case 'V':
+				case 'C':
+					w += 17.0f * Details.scaleY;
+					break;
+				default:
+					break;
+				}
+#endif
 				while (*s != '~') s++;
+#ifndef FIX_BUGS
 				s++;
 				if (*s == ' ' && !spaces)
 					break;
-			}
-			w += GetCharacterSize(*s - ' ');
+			} 
+#else
+			} else
+#endif
+				w += GetCharacterSize(*s - ' ');
 		}
 	}
 	return w;
@@ -1026,9 +1148,11 @@ CFont::GetNextSpace(wchar *s)
 			if(*s == '~'){
 				s++;
 				while(*s != '~') s++;
+#ifndef FIX_BUGS
 				s++;
 				if(*s == ' ')
 					break;
+#endif
 			}
 	}
 	return s;
@@ -1036,7 +1160,7 @@ CFont::GetNextSpace(wchar *s)
 
 #ifdef MORE_LANGUAGES
 wchar*
-CFont::ParseToken(wchar *s, wchar*, bool japShit)
+CFont::ParseToken(wchar *s, wchar* ss, bool japShit)
 {
 	s++;
 	if ((Details.color.r || Details.color.g || Details.color.b) && !japShit) {
@@ -1056,13 +1180,37 @@ CFont::ParseToken(wchar *s, wchar*, bool japShit)
 		case 'r': SetColor(CRGBA(113, 43, 73, 255)); break;
 		case 'w': SetColor(CRGBA(175, 175, 175, 255)); break;
 		case 'y': SetColor(CRGBA(210, 196, 106, 255)); break;
+#ifdef BUTTON_ICONS
+#if 0 // unused
+		case 'U': PS2Symbol = BUTTON_UP; break;
+		case 'D': PS2Symbol = BUTTON_DOWN; break;
+		case '<': PS2Symbol = BUTTON_LEFT; break;
+		case '>': PS2Symbol = BUTTON_RIGHT; break;
+#endif
+		case 'X': PS2Symbol = BUTTON_CROSS; break;
+		case 'O': PS2Symbol = BUTTON_CIRCLE; break;
+		case 'Q': PS2Symbol = BUTTON_SQUARE; break;
+		case 'T': PS2Symbol = BUTTON_TRIANGLE; break;
+		case 'K': PS2Symbol = BUTTON_L1; break;
+		case 'M': PS2Symbol = BUTTON_L2; break;
+		case 'A': PS2Symbol = BUTTON_L3; break;
+		case 'J': PS2Symbol = BUTTON_R1; break;
+		case 'V': PS2Symbol = BUTTON_R2; break;
+		case 'C': PS2Symbol = BUTTON_R3; break;
+#endif
 		}
 	} else if (IsJapanese()) {
 		if ((*s & 0x7FFF) == 'N' || (*s & 0x7FFF) == 'n')
 			NewLine = true;
 	}
 	while ((!IsJapanese() || (*s != JAP_TERMINATION)) && *s != '~') s++;
+#ifdef FIX_BUGS
+	if (*(++s) == '~')
+		s = ParseToken(s, ss, japShit);
+	return s;
+#else
 	return s + 1;
+#endif
 }
 #else
 wchar*
@@ -1083,6 +1231,24 @@ CFont::ParseToken(wchar *s, wchar*)
 		case 'r': SetColor(CRGBA(0x71, 0x2B, 0x49, 0xFF)); break;
 		case 'w': SetColor(CRGBA(0xAF, 0xAF, 0xAF, 0xFF)); break;
 		case 'y': SetColor(CRGBA(0xD2, 0xC4, 0x6A, 0xFF)); break;
+#ifdef BUTTON_ICONS
+#if 0 // unused
+		case 'U': PS2Symbol = BUTTON_UP; break;
+		case 'D': PS2Symbol = BUTTON_DOWN; break;
+		case '<': PS2Symbol = BUTTON_LEFT; break;
+		case '>': PS2Symbol = BUTTON_RIGHT; break;
+#endif
+		case 'X': PS2Symbol = BUTTON_CROSS; break;
+		case 'O': PS2Symbol = BUTTON_CIRCLE; break;
+		case 'Q': PS2Symbol = BUTTON_SQUARE; break;
+		case 'T': PS2Symbol = BUTTON_TRIANGLE; break;
+		case 'K': PS2Symbol = BUTTON_L1; break;
+		case 'M': PS2Symbol = BUTTON_L2; break;
+		case 'A': PS2Symbol = BUTTON_L3; break;
+		case 'J': PS2Symbol = BUTTON_R1; break;
+		case 'V': PS2Symbol = BUTTON_R2; break;
+		case 'C': PS2Symbol = BUTTON_R3; break;
+#endif
 		}
 	while(*s != '~') s++;
 	return s+1;
diff --git a/src/render/Font.h b/src/render/Font.h
index 51035601..be1eabed 100644
--- a/src/render/Font.h
+++ b/src/render/Font.h
@@ -63,6 +63,31 @@ enum
 #define FONT_LOCALE(style) (style)
 #endif
 
+#ifdef BUTTON_ICONS
+enum
+{
+	BUTTON_NONE = -1,
+#if 0 // unused
+	BUTTON_UP,
+	BUTTON_DOWN,
+	BUTTON_LEFT,
+	BUTTON_RIGHT,
+#endif
+	BUTTON_CROSS,
+	BUTTON_CIRCLE,
+	BUTTON_SQUARE,
+	BUTTON_TRIANGLE,
+	BUTTON_L1,
+	BUTTON_L2,
+	BUTTON_L3,
+	BUTTON_R1,
+	BUTTON_R2,
+	BUTTON_R3,
+	MAX_BUTTON_ICONS
+};
+#endif // BUTTON_ICONS
+
+
 class CFont
 {
 #ifdef MORE_LANGUAGES
@@ -77,6 +102,14 @@ public:
 	static CSprite2d Sprite[MAX_FONTS];
 	static CFontDetails Details;
 
+#ifdef BUTTON_ICONS
+	static CSprite2d ButtonSprite[MAX_BUTTON_ICONS];
+	static int PS2Symbol;
+
+	static void DrawButton(float x, float y);
+#endif // BUTTON_ICONS
+
+
 	static void Initialise(void);
 	static void Shutdown(void);
 	static void InitPerFrame(void);