1.5 inch tft screen for Pi - omartek/linux_variePerLaboratorio GitHub Wiki

Guide installazione dal sito del produttore

https://Spotpear.com/index.php/index/study/detail/id/65.html

RetroArch configuration instruction

https://www.youtube.com/watch?v=rPomag2lf4M

Installazione ed utilizzo di Makecode arcade

https://retropie.org.uk/forum/topic/28719/makecode-arcade-games-in-retropie

Installare theme tft

https://github.com/anthonycaccese/es-theme-tft

Altra documentazione

https://github.com/omartek/linux_variePerLaboratorio/tree/master/wiki/retropie

Configurazione controller

Come da istruzioni

# Button mapping config
# Uses two inputs per controller, to map and convert from EV_ABS to EV_KEY in both directions
config = {
    # EV_ABS to EV_KEY mappings for 1st direction of controller 1
    (0, EV_ABS): {
        # X-axis initially towards less than/negative of center(normally left)
        ABS_X: {
            'type': (3, EV_KEY),
            'code': 0,  # Output key 'a'
            'value': 1
            # lambda calls function with joystick value dependent on if axis is inverted or not
        },
        # Y-axis initially towards less than/negative of center(normally up)
        ABS_Y: {
            'type': (3, EV_KEY),
            'code': 1,  # Output key 'w'
            'value': -1
            # lambda calls function with joystick value dependent on if axis is inverted or not
        },
        ABS_HAT0X: {
            # HAT0X-axis initially towards greater than/positive of center(normally right)
            'type': (0, EV_KEY),
            'code': 32,  # etc.
            'value': hat0Pos1  # Joystick value variable x is implied for function hat0Pos
        },
        # HAT0Y-axis initially towards greater than/positive of center(normally down)
        ABS_HAT0Y: {
            'type': (0, EV_KEY),
            'code': 31,
            'value': hat0Pos1
        }
    },
    # EV_ABS to EV_KEY mappings for 2nd direction of controller 1
    (1, EV_ABS): {
        # X-axis initially towards greater than/positive of center(normally right)
        ABS_X: {
            'type': (0, EV_KEY),
            'code': 32,
            'value': lambda x: digitizePos1(x) if not invertXLEFT1 else digitizeNeg1(x)

        },
        # Y-axis initially towards greater than/positive of center(normally down)
        ABS_Y: {
            'type': (0, EV_KEY),
            'code': 31,
            'value': lambda y: digitizePos1(y) if not invertYUP1 else digitizeNeg1(y)
        },
        # HAT0X-axis initially towards less than/negative of center(normally left)
        ABS_HAT0X: {
            'type': (0, EV_KEY),
            'code': 30,
            'value': hat0Neg1
        },
        # HAT0Y-axis initially towards less than/negative of center(normally up)
        ABS_HAT0Y: {
            'type': (0, EV_KEY),
            'code': 17,
            'value': hat0Neg1
        },
        # Start button conversion for some controllers without start button
        ABS_Z: {
            'type': (0, EV_KEY),
            'code': 1,
            'value': hat0Pos1
        },
        # Select button conversion for some controllers without select button
        ABS_RZ: {
            'type': (0, EV_KEY),
            'code': 59,
            'value': hat0Pos1
        }
    },
    # First EV_KEY to EV_KEY mappings for controller 1
    (0, EV_KEY): {
        BTN_DPAD_UP: {
            'type': (0, EV_KEY),
            'code': 17,
            'value': None
        },
        BTN_DPAD_DOWN: {
            'type': (0, EV_KEY),
            'code': 31,
            'value': None
        },
        BTN_DPAD_LEFT: {
            'type': (0, EV_KEY),
            'code': 30,
            'value': None
        },
        BTN_DPAD_RIGHT: {
            'type': (0, EV_KEY),
            'code': 32,
            'value': None
        },
        BTN_SOUTH: {  # (BTN_A synonym)
            'type': (1, EV_KEY),
            'code': 304,
            'value': 1
        },
        BTN_B: {
            'type': (1, EV_KEY),
            'code': 305,
            'value': 1
        },
        BTN_START: {
            'type': (1, EV_KEY),
            'code': 314,
            'value': 1
        },
        BTN_SELECT: {
            'type': (1, EV_KEY),
            'code': 315,
            'value': 1
        },
        BTN_MODE: {
            'type': (0, EV_KEY),
            'code': 60,
            'value': None
        }
    },
    # Second EV_KEY to EV_KEY mappings for controller 1
    (1, EV_KEY): {
        BTN_THUMB: {
            'type': (0, EV_KEY),
            'code': 29,
            'value': None
        },
        BTN_THUMB2: {
            'type': (0, EV_KEY),
            'code': 42,
            'value': None
        },
        BTN_BASE4: {
            'type': (0, EV_KEY),
            'code': 1,
            'value': None
        },
        BTN_BASE3: {
            'type': (0, EV_KEY),
            'code': 59,
            'value': None
        },
        KEY_HOMEPAGE: {
            'type': (0, EV_KEY),
            'code': 60,
            'value': None
        }
    },
    # Maps keyboard player 2 to WASD keys
    (2, EV_KEY): {
        KEY_A: {
            'type': (0, EV_KEY),
            'code': 105,
            'value': None
        },
        KEY_D: {
            'type': (0, EV_KEY),
            'code': 106,
            'value': None
        },
        KEY_W: {
            'type': (0, EV_KEY),
            'code': 103,
            'value': None
        },
        KEY_S: {
            'type': (0, EV_KEY),
            'code': 108,
            'value': None
        },
        KEY_LEFTCTRL: {
            'type': (0, EV_KEY),
            'code': 100,
            'value': None
        },
        KEY_LEFTSHIFT: {
            'type': (0, EV_KEY),
            'code': 57,
            'value': None
        },
        KEY_ESC: {
            'type': (0, EV_KEY),
            'code': 1,
            'value': None
        },
        KEY_F1: {
            'type': (0, EV_KEY),
            'code': 59,
            'value': None
        },
        KEY_F2: {
            'type': (0, EV_KEY),
            'code': 60,
            'value': None
        }
    }
}