Presentaciones Usenix 2018

Hack para convertir Karateka a dos jugadores

  • August 18, 2018
  • tuxotron
  • Karateka 2 jugadores

    *Karateka 2 jugadores*

    Karateka fue un juego publicado en 1984 originalmente para Apple II. Más tarde el juego fue portado a muchos otros sistemas de la época como Commodore 64, Amstrad CPC, MSX, etc, así como a sistemas más modernos. Fue escrito por Jordan Mechner, creador también del mega popular Prince of Persia, Karateka era un juego donde el jugador tenía que luchar (Karate) contra sus enemigos para rescatar a la princesa Mariko del castillo de Akuma. Presta atención al detalle de el jugador, y digo esto porque esta es la miga de esta entrada, el juego era de un sólo jugador.

    A Charles Mangin hace un par años le llamó la antención la idea de una versión de Karateka con dos jugadores. Y tal y cómo ha publicado, dicha idea, la ha hecho realidad.

    Lo impresionante de esto, no es que éste haya reescrito el juego, sino que ha creado un parche de tan sólo 42 bytes para convertir el juego en multijugador.

    La imagen parcheada del juego la puedes descargar desde aquí (es la versión original para Apple II).

    Los controles son los siguientes:

    PLAYER 1 CONTROLS:

    • Q,A,Z puñetazo
    • W,S,X patada
    • C,V moverse/correr
    • SPACE cambia a posición de combate

    PLAYER 2 CONTROLS:

    • N patada
    • M puñetazo
    • < moverse a la izquierda

    Estas son las direcciones de memoria a cambiar:

    $6C11: D0 1C C5 21 D0 18 A9 00 85 29 A9 D7 -> AD 00 C0 C9 CD D0 02 A9 D7 8D 10 C0 (M to punch, clears strobe)
    $6C20: 20 95 6C C5 D7 B0 08 20 71 6C A9 C5 -> AD 00 C0 C9 CE D0 02 A9 C5 8D 10 C0  (N to kick, clears strobe)
    $6B9B: A6 33 E0 0C 90 03 4C 52 6C E0 07 B0 02 -> AD 00 C0 EA EA EA C9 AC D0 03 4C 52 6C  (<  to move player 2)
    
    $6EA9: 8D 10 C0 -> EA EA EA (keep from clearing keyboard strobe)
    
    $6e8e: 88 -> C3 (C to move left instead of ctrl-H/left arrow)
    $6e98: 95 -> D6 (V to move right instead of ctrl-U/right arrow)
    
    $b9a8: A5 C4 D0 00 -> A9 01 85 C4 (default to keyboard control, ignores joystick)
    

    Si quieres más detalles sobre el parche, no dudes en visitar en enlace original.

    ¡Esto es Hacking en su más puro estado!

Material DEF CON 26