¡Próximamente, Abu Simbel Profanation para Commodore 64!
Pues bien, esa falta va a ser paliada próximamente, tras conocerse recientemente la noticia de que un programador español llamado Francis, o @Equinoxe_4 para más señas si queréis seguirle en Twitter, está gestando su propia versión del videojuego protagonizado por el aventurero Johny Jones, precisamente para los Commodore 64. Una gran noticia que los aficionados a este ordenador lo celebrarán por todo lo alto. No es tal una especie de «remake» con gráficos mejorados como algunos creen, sino un «port» que se hace del juego original para la máquina de Jack Tramiel. Lo que vale realmente es que, por fin, este Abu Simbel Profanation viene a cubrir un hueco que se ha mantenido abierto más de 30 años y lo ha hecho un programador español, de lo cual podremos congratularnos.
La iniciativa fue contada precisamente por su autor durante la grabación del podcast de Retro Entre Amigos (lo podéis escuchar íntegramente en ivoox) a la que fui invitado gracias a Ckultur y Radastan, quien tuvo la gran amabilidad de llevarme a Málaga para disfrutar de la misma. Los detalles sobre cómo se ha gestado esta nueva versión, ya los estaréis conociendo por boca de su autor si estáis escuchando dicho programa en este momento.
Retro entre amigos – Episodio 5×04 (Especial Navidad)
Ir a descargar
Hasta este momento, el desarrollo del Abu Simbel Profanation para C-64 está bastante avanzado y de hecho el mapeado está creado al 100%, con todos sus gráficos y sprites que respetan escrupulosamente los originales del Spectrum, salvando las distancias en cuanto a la paleta de colores se refiere. Aún queda algo de trabajo con la animación de los portales ó puertas que dan acceso a otras cámaras del palacio de Abu Simbel, así como otros detalles más por pulir y finalizar con la inclusión de la música, a cargo ésta de Ckultur. La inclusión de los controles desde el teclado es otro de los «asuntos pendientes» y sería lo deseable para los forofos del ‘pixel-perfect’ en la maniobrabilidad de los personajes y es de esperar que esté igualmente disponible, pues es la mejor forma de avanzar en este tipo de juegos con unos enemigos que están puñeteramente insertados en el juego en lugares estratégicos y harto complicados de evitar ó solventar.
No obstante, os avanzo una pincelada a modo de «hype»: en esta versión será algo más fácil avanzar y la dichosa gota pringosa de la primera pantalla no nos matará tanto como en otras versiones.
Se espera que junto con el archivo definitivo del juego que se pondrá en circulación como libre descarga para emuladores, aparezca seguidamente su lanzamiento en formato físico para los que gustan de coleccionar dichas ediciones. ¿Acabarán sorprendiéndonos con la portada, ó simplemente utilizarán la ilustración original de Alfonso Azpiri? ¡Quién sabe!
Para acabar, hagamos un inciso sobre el equipo encargado de su desarrollo:
– @Equinoxe_4 – no es el único hombre al frente de este proyecto, si bien es el encargado de la programación y los gráficos (él mismo reconoce que nunca ha aprendido ensamblador hasta bastante antes de comenzar este proyecto, habiéndolo estudiado a fondo para poder afrontarlo totalmente con la dificultad que representa programar en este ordenador);
– Ckultur – a quien conoceréis del grupo Retro Entre Amigos antes mencionado, es el autor de la música original ingame (he tenido la enorme ocasión de escuchar una pincelada de su banda sonora en su casa y, simplemente, me ha dejado bastante sorprendido);
– Como betatesters, varios miembros del mismo grupo.
Solo falta tomárnoslo con calma y esperar al lanzamiento de esta esperada versión y lo disfrutaremos como se merece, al poco rato de haberse publicado. Desde estas líneas, felicitamos a Francis por su arrojo y valentía con su proyecto.
¡Avisados estáis! Nos veremos después en el ICE-CLUB…
Fuente: Commodore Spain
Trasteando con POKEs #2: Abu Simbel Profanation (SPE) parte II
Primera parte: Trasteando con POKEs #1: Abu Simbel Profanation (SPE) parte I.
···
Continuamos con esta sección descubriendo algunos trucos más para Abu Simbel Profanation; concretamente, y tal como comenté al final del anterior artículo, los POKEs de vidas infinitas e inmunidad para ZX Spectrum. Quiero hacer notar que, aún con estos trucos, terminarse el juego requiere de una cierta habilidad, ya que algunas pantallas dependen de saltos muy precisos para los que no hay segundas oportunidades.
Para llevar a cabo esta tarea volveremos a utilizar las herramientas presentadas en el artículo anterior de esta serie, esto es, el emulador FUSE, sus herramientas internas y un editor hexadecimal externo. Recomiendo encarecidamente la lectura de dicho artículo antes de acometer este.
POKE #2: Vidas infinitas
Al final del primer artículo, buscando el POKE #1: Número de vidas inicial, descubrimos que la dirección de memoria 0x97a2 es la que contiene el número de vidas del jugador durante la partida. Por tanto, para conseguir vidas infinitas en el juego deberíamos empezar buscando la parte del programa que decrementa el valor almacenado en dicha dirección de memoria cuando nos matan.
Arrancamos FUSE, cargamos Abu Simbel Profanation e iniciamos una partida. Abrimos Machine/Debugger y ponemos un data breakpoint para la dirección de memoria 0x97a2 con el comando br w 0x97a2 para inspeccionar las escrituras en dicha posición de memoria. Perdemos una vida y el Debugger salta en la dirección 0xba4e, que como ya dije en el artículo que precede a este, es la instrucción posterior a la que disparó el data breakpoint, así que vamos a la anterior, y vemos que es LD (97A2), HL en 0xba4b. Esta instrucción significa escribe el contenido de HL en la posición de memoria 0x97a2.

Dado que la instrucción LD (97A2), HL que hemos encontrado en 0xba4b es la responsable de actualizar el número de vidas cuando perdemos una, podemos optar por eliminarla para obtener vidas infinitas.
Para ello, necesitamos saber cómo se codifica esta instrucción en memoria. Abrimos Machine/Memory Browser, buscamos la línea para la dirección de memoria 0xba4b y podremos ver que la instrucción está codificada como 22 A2 97.
La forma de evitar que se ejecute esta instrucción es reemplazándola por otra que no haga nada. El Z80 tiene una instrucción que hace precisamente eso, es decir, nada, y es la instrucción NOP, que codifica como 00.
Abrimos Machine/Debugger y evaluamos:
se 0xba4b 0
se 0xba4c 0
se 0xba4d 0
para sustituir los tres bytes ocupados por la instrucción LD (97A2), HL por tres instrucciones NOP consecutivas. Evaluamos también cl 0x97a2 para eliminar el data breakpoint y reanudamos la ejecución. Nos dejamos matar y… ¡no perdemos ninguna vida!
Nota: incluso disponiendo de vidas infinitas debemos jugar con cuidado, ya que al acceder a una pantalla en la que perdemos una vida antes de poder interactuar con el juego (por ejemplo, al caer a un foso con pinchos como el de la pantalla número 3, o al sumergirnos en el agua) entraremos en un bucle infinito del que no podremos salir, y en el que nuestro personaje morirá una y otra vez de la misma forma, sin perder ninguna vida y sin darnos la oportunidad de terminar la partida para volver al menú principal para intentarlo de nuevo. Para solventar este problema podemos escribir un cero en la dirección de memoria 0x97a2 con Machine/Debugger mediante el comando se 0x97a2 0 para que el siguiente chequeo de vidas falle y el juego crea que la partida ha terminado.
De rutinas y subrutinas
Es el momento de hacer un inciso acerca de cómo se organiza el código de un programa en memoria para comprender el siguiente POKE en su totalidad.
Las secuencias de instrucciones en un programa se organizan en bloques que llamamos rutinas. Cada uno de estos bloques tiene una finalidad concreta, por ejemplo dibujar la pantalla, actualizar la puntuación o la lógica de un enemigo. Las rutinas se llaman desde otras rutinas, que a su vez pueden ser llamadas desde otras, y así múltiples veces.
Una rutina puede llamar a otra de dos formas, la primera es mediante un salto; en este caso, la ejecución continua a partir de la dirección de memoria indicada. Esto se hace utilizando la instrucción JP (acrónimo de JumP). La segunda es mediante una llamada, lo que significa que desde la rutina actual llamamos a otra para que se ejecute, nos avise cuando termine y podamos así continuar ejecutando la rutina actual. Las llamadas se hacen utilizando la instrucción CALL (que significa precisamente llamar en inglés). La rutina que ha sido llamada retorna el control a la rutina que la llamó mediante la instrucción RET. Una rutina llamada con la instrucción CALL se llama subrutina. Las subrutinas tienen la ventaja de que no necesitan conocer de antemano quién las ha llamado, de forma que una misma subrutina puede llamarse desde distintas partes del programa, y al terminar su ejecución mediante la instrucción RET retornará el control a la rutina que la llamó de forma transparente para el programador.
Cuando la instrucción RET se ejecuta, el procesador necesita saber a dónde debe volver. ¿Y de qué forma lo hace? Pues consultando una lista de valores en memoria llamada pila. En la pila, los valores se añaden utilizando la instrucción PUSH, y se recuperan utilizando la instrucción POP (ambas instrucciones han aparecido justamente en la rutina analizada en el apartado anterior). Una pila es una forma de almacenamiento LIFO (acrónimo de Last In, First Out, o lo que es lo mismo, el último valor en entrar es el primero en salir), lo que significa que solo podemos recuperar los valores que hemos almacenado en el orden inverso en el que fueron apilados.
La instrucción CALL añade automáticamente a la pila la dirección de memoria inmediatamente posterior a ella, y la instrucción RET recupera dicha dirección de la pila para volver a la instrucción siguiente al CALL. Como la pila es LIFO, podemos anidar llamadas a CALL unas dentro de otras garantizando que el orden de retorno se respetará, ya que cada RET volverá inmediatamente a la rutina que contenía el CALL que realizó la llamada.
Para examinar la pila, FUSE nos ofrece la vista de pila, en Machine/Debugger, justo a la derecha de la lista de instrucciones en ensamblador. La pila crece hacia abajo en memoria (es decir, cuanto más alta es la dirección de memoria en que aparece un valor en pila, más tiempo hace que añadimos dicho valor a la pila). Por tanto, si queremos conocer el primer valor que se añadió a la pila miraremos la primera entrada en la vista de pila, y si queremos conocer el más reciente, miraremos la entrada al final de dicha vista.
POKE #3: Inmunidad
Como ya hemos descubierto la rutina que se encarga de restar una vida, debería bastar con tirar del hilo para descubrir qué provoca que se ejecute esta rutina y poder obtener así la ansiada inmunidad.
Iniciamos una partida, abrimos Machine/Debugger y nos movemos hasta la instrucción en la dirección 0xba4b (que es la dirección que modificamos en nuestro POKE de vidas infinitas). Vamos navegando por las líneas anteriores hasta encontrar la instrucción RET, que se corresponderá con la última instrucción de la subrutina inmediatamente anterior en memoria. La siguiente instrucción a RET marcaría, por tanto, el inicio de la rutina que se encarga de restar una vida al jugador. Esta dirección es 0xba38.
Ponemos ahora un breakpoint en 0xba38 evaluando el comando br 0xba38, salimos de Machine/Debugger y perdemos una vida. El programa se parará y podremos examinar el estado del programa. Eliminamos el breakpoint con cl 0xba38.
Lo que ha ocurrido es que algún punto del programa ha llamado a esta subrutina haciendo CALL BA38, y a tenor de lo que he comentado más arriba, podemos saber qué punto ha sido leyendo en la vista de pila el valor más recientemente apilado, es decir, el que aparece más abajo en la lista, que es concretamente 0xb0f5, y que representaría la instrucción inmediatamente posterior al CALL. Navegamos hasta esta dirección en la vista de instrucciones y encontramos que, efectivamente, la instrucción anterior a la dirección de memoria 0xb0f5 es CALL BA38 en la dirección de memoria 0xb0f2.
Dado que conocemos la posición de memoria del CALL (0xb0f2) y la de su instrucción siguiente (0xbaf5), podemos dedudir que el tamaño de la instrucción es de 3 bytes (0xb0f5 - 0xb0f2 = 3); además, hemos aprendido que la instrucción NOP se puede utilizar para sobreescribir instrucciones y evitar así que ocurran cosas que no queremos. Con toda esta información, parece factible conseguir la inmunidad que perseguimos sustituyendo CALL BA38 por tres NOP, cosa que podemos hacer evaluando los siguientes comandos en Machine/Debugger:
se 0xb0f2 0
se 0xb0f3 0
se 0xb0f4 0
Cerramos la ventana Machine/Debugger, jugamos un poco y ¡los enemigos nos tocan sin hacernos ningún daño! ¿¡Podremos por fin terminarnos el juego!? Como decía al iniciar el artículo, incluso con estos trucos resulta algo complicado terminarlo ya que algunos saltos requieren de mucha precisión, y cometer un error puede conducirnos a un callejón sin salida.
Nota: la inmunidad propuesta en este artículo plantea un problema con los elementos de escenario destinados a matarnos debido a cómo el juego procesa las colisiones: aunque el agua nos matará, los pinchos que hay en los fosos no lo harán, lo que puede terminar dejándonos en una situación en que estemos encerrados en una pantalla sin salida posible (como por ejemplo en el foso de la pantalla número 3).
Es el momento de dejaros jugando a Abu Simbel Profanation con los POKEs que hemos descubierto. En el próximo artículo cerraré la parte dedicada a este juego exponiendo POKEs alternativos para conseguir vidas infinitas e inmunidad, un truco para acceder directamente al final del juego sin necesidad de jugar, y también os contaré algunas curiosidades e interioridades del mismo en sus distintas versiones. Así que… ¡hasta la próxima entrega!
![]()
Sobre el autor
David Cañadas es programador de videojuegos, retroscener, demoscener y músico, ha colaborado en juegos retro publicados por Computer Emuzone y Retroworks, entre otros, y puesto música a remakes de PC como Abadía del Crimen Extensum, Capitán Sevilla o Go Bear Go.
Segunda parte de la entrevista a César Astudillo «Gominolas»
Por Fernán García.
Homebrew ZX Spectrum: Snake Escape (2016, Einar Saukas)
Entre las novedades reveladas a lo largo de estos últimos dias, a reseñar lo nuevo de Einar Saukas, el creador del ingenioso motor ó engine Nirvana: Snake Escape, un título que viene a reforzar el género de los puzles y donde vuelve a usar su asombroso engine para dar forma un videojuego mucho más vistoso de lo que normalmente estamos acostumbrados a ver. Basándose en el típico juego de la serpiente glotona, pero a su vez en el videojuego online Lime Rick de KissMaj7 y del cual toma su argumento y desarrollo, en Snake Escape tenemos que guiar a una pesada serpiente hasta su comida a través de diferentes y cada vez más intricados niveles.
Muchos niveles laberínticos han sido lógicamente mejorados respecto del juego original, a los que hay que sumar cuatro niveles nuevos hacia el final con una dificultad extremadamente alta, rozando lo demencial.
Nuestra glotona reptil sufre de cierto sobrepeso y no es capaz de reptar por las paredes, por lo que debe usar su propio cuerpo para alcanzar las elevadas cotas en las que se encuentra su premio (en niveles más avanzados), una deliciosa y jugosa fruta que aliviará su voraz apetito. En otros niveles, tendremos que resolver cómo alcanzar la fruta usando unas cajas, colocadas en lugares estratégicos. Cuando cae desde una plataforma, lo hace pesadamente y cuando trata de subir estirando su cuello hacia arriba, el esfuerzo dedicado lo vemos experimentado en su rostro. No podemos obligarla a subir más de tres unidades (en bloques de 2×2 celdas de caracteres) por encima de su propio cuerpo, por lo que tenemos que ingeniárnoslas para escalar ciertas paredes ó tocar superficies elevadas.
Cada pantalla supone un reto mental y la manera de moverse por ella va siendo cada vez más problemática, pero hay más de una solución en muchos casos. Cuando ya no podamos moverla más, o se haya quedado aprisionada sobre sí misma, pulsando SPACE reiniciamos el nivel desde el comienzo.
Einar Saukas se ha encargado de generar el código, mientras que los estupendos gráficos de la serpiente glotona más resto de escenarios han sido creados por Jarrod Bentley (BiNMaN). La música chiptune en modo 128 K es absolutamente grandiosa y hay que agradecer a su autor, MmcM, el esfuerzo de crear unas melodías que te llegan al oido y no se hacen machaconas con el tiempo. Además, la variedad de temas musicales tanto en la introducción, la simpática pantalla de opciones y durante el juego, hace que este Snake Escape gane muchos enteros. Lo sumamente agradable de este juego es la buenísima animación de la cabeza de la serpiente cuando repta, sube ó muestra signos de aburrimiento si abandonamos momentáneamente los controles (QAOP). Un muy buen juego para pasar un rato de lo más agradable, sin descargar tanta adrenalina, pero sí usar mucho la materia gris. ¿¿¿Te ves capaz de resolver todos los puzles???
En el foro de World Of Spectrum lo podéis localizar y descargar. Recomendable cargarlo en modo 128K. Y a consumir manzanas, que son tan sanas como las demás frutas. Y sobre todo digestivas… 🙂
Commodore 64: Enforcer (1992, Manfred Trenz / CP Verlag)
Para los que llevamos unos cuantos años en este mundillo y dan la importancia debida, por una serie de factores a tener en cuenta, a varios de estos semi-desconocidos del videojuego, es una gran oportunidad encontrarnos tal amalgama de videojuegos nuevos para nuestros ordenadores clásicos, declarados «obsoletos» por el mercado y la propia industria. Dentro de este enorme conducto de información que es la red de Internet, podemos descubrir videojuegos de todo tipo para ZX Spectrum, Amstrad, MSX, Commodore 64 y tantos otros. Buena parte de ese software forma parte ahora del universo Homebrew, pero otra parte del mismo aún seguía comercializándose incluso cuando la venta de estos ordenadores era casi inexistente. Como seguro que habéis tenido la oportunidad de leer recientemente, casos como el expuesto sobre la editorial alemana CP Verlag apenas se daban en otras naciones. Pero, que yo sepa, en España apenas se vivió esta circunstancia.
Y es precisamente desde Alemania donde procede el siguiente videojuego…
Enforcer (Fullmetal Megablast), llamado también Katakis 2, es un increible shoot’em-up espacial de scroll horizontal cuya autoría corresponde mayormente a Manfred Trenz (programa, diseño y gráficos), habiendo escrito dicho videojuego para la revista en disquette Game On editada por CP Verlag (mencionada en mi anterior entrada del blog), bajo el seudónimo «The Master». La distribución del mismo se hizo incluyendo el juego dentro del disquette correspondiente a la edición del nº 6/1992 de dicha revista.
En este videojuego bastante trepidante para un solo jugador, controlamos un planeador orbital a través de seis zonas diferentes con un nivel creciente de dificultad, lleno de enemigos de diferentes clases, naves alienígenas, bichos espaciales, meteoritos, misiles, cañones láser, estando liderado cada nivel por un jefe final al que hay que batir para acceder al siguiente. El último de ellos es un enorme alien de aspecto bastante inquietante y el responsable de toda la maquinaria de guerra desplegada contra estos sectores de la galaxia, que habrás de defender con uñas y dientes con tu propia nave.
Para embutirnos en la piel del piloto del Enforcer-Fullmetal-Megablast (EFM) nos hace falta tener muy buen temple con el mando de control y mano firme a la hora de disparar contra todos los enemigos que acuden ocasionalmente en bandadas contra nuestra posición relativa en pantalla, mientras otros lo hacen cíclicamente y en una sola dirección o desde una posición estática sobre el terreno. Partimos de inicio con un equipo básico consistente en un motor de energía de pulso de alto rendimiento y un bláster de plasma de fuego rápido. Además, el EFM posee un potente cañón de plasma, cuya potencia de fuego es suficiente para desintegrar enormes y pesados enemigos blindados.
La capacidad de defensa y disparo del EFM puede ampliarse y actualizarse de forma versátil, agregándose a la nave varios módulos, que aparecerán en el transcurso del juego gracias a cápsulas espaciales que al bombardearlas dejarán tras ellas los power-up correspondientes. Al principio del juego contamos con cuatro planeadores, equipado cada uno de ellos con tres bombas inteligentes. En cada zona hay uno ó más planeadores adicionales medio ocultos entre el escenario, que sólo atraparemos tan pronto como advirtamos su presencia. Al tocarlos, se contarán como una vida más. Cuidado de rozarnos con las paredes y rocas de los niveles ó perderemos una de nuestras naves.
Los power-up y su significado:
· Rojo – disparo de dispersión, cinco veces actualizable. Muy efectivo contra muchos enemigos débiles.
· Verde – láser, cinco veces actualizable. El láser tiene un mayor poder de penetración, por lo que es bastante eficaz cuando hay muchos enemigos al mismo tiempo.
· Láser de reflexión azul, cuatro veces actualizable. Cuatro rayos reflectores son liberados desde las esquinas del planeador y rebotan en las paredes. Muy eficaz contra muchos enemigos que se posicionan alrededor del planeador.
· Luz azul – escudo, puede sufrir hasta cinco impactos.
· Violeta – 1000 puntos
· Amarillo «P» – repone la energía del planeador.
· Marrón claro «S» – aumenta la velocidad del planeador.
· Marrón oscuro «S» – baja la velocidad del mismo.
· Blanco «B» – bomba inteligente. Destruye todos los enemigos que estén en pantalla. Muy eficaz como último recurso.
· Negro – activa 2 drones que rodean los planeadores y son imbatibles.
· Pequeña nave – planeador adicional (vida extra)
Una vez alcanzado el último de los seis niveles y derrotado al gran alien, el juego habrá terminado. Tanto si has logrado llegar al final, como si has muerto durante la partida, siempre que hayas alcanzado una alta puntuación en cada misión como para merecer tener un puesto de honor en la lista de los mejores, podrás introducir tu nombre en ella, quedando opcionalmente inmortalizado en el disco.
Controles:
· Nuestra aeronave se controla via joystick, enchufando éste en el puerto 2. Si mantenemos pulsado el botón de disparo, el rayo se cargará, dejando escapar toda su energía destructiva.
· La bomba inteligente se activa pulsando la tecla ESPACIO.
· Durante el juego se puede pausar el juego presionando la tecla CTRL y continuar presionando el botón de disparo.
Llegado a este punto, tenemos un arcade matamarcianos que en algunos aspectos puede ser perfectamente comparable al gran clásico de Irem Corporation R-TYPE como es en la capacidad de nuestra nave espacial de disparar un enorme rayo láser con la potencia que nosotros creamos conveniente, manteniendo pulsado el botón de disparo lo justo. Por lo demás, el aspecto más sobresaliente está precisamente en el scroll parallax del juego, donde hay varias capas de scroll que van a distinta velocidad para darnos la impresión de profundidad que el juego requiere. Otro aspecto considerable es el uso de gráficos en alta resolución en muchos de los fondos del mismo, mientras que el resto de elementos móviles como sprites, texturas, terrenos y el cuadro de puntuación y energía están diseñados en modo de baja resolución.
La banda musical y sonora de Enforcer, excelentemente ejecutada por Markus Siebold, ayuda a su magnífica ambientación. Si hablamos de jugabilidad, tras haber mantenido varias partidas, debo reconocer que es altísima. Atrapa enseguida al jugador por su elevado número de enemigos a batir y su gran variedad, así como por la velocidad en la que se desarrolla la acción. A la gran calidad a nivel gráfico y sonoro, y la suavidad del scroll, se suma la elevada dificultad de los niveles más avanzados. Lógicamente, tal despliegue solo puede condicionar que los datos de los niveles se tengan que cargar desde el mismo disco. Sobresaliente y sin apenas reparos que dar, salvo que fuese una pena que este juego no se hubiese dado a conocer a nivel mundial en su momento por una gran casa de software, y solo lo haya sido a través de una revista de software con un área de distribución más limitado.
Se pensó posteriormente en la producción de una secuela, Enforcer 2, pero tan solo pudo concretarse en una demo jugable, descargable desde varias páginas sobre Commodore 64.
Se merece que tenga una edición física de lujo y con una carátula más acorde a la calidad del juego. Y si no la ha tenido hasta ahora, ya va siendo hora.
Gracias a la iniciativa Retro Semana Retro de la página Commodore Spain de jugar cada semana unas partidas a un videojuego elegido por sorteo de entre una lista de títulos inscritos por los propios usuarios de la web a través de Twitter (bajo el tag #laretrosemana) o de la misma web, es como he podido conocer este sobresaliente arcade espacial del que solo tuve alguna noticia en el pasado, pero como que no le eché cuentas hasta justamente el inicio de esta misma semana que ya termina. La intención de esta iniciativa es justamente la de jugar con videojuegos tanto clásicos como modernos en nuestras plataformas de 8 y 16 bits preferidas, y compartir los retos adquiridos, altas puntuaciones y opiniones con el resto de aficionados. Cada semana proponen un juego retro y una plataforma (Commodore, Spectrum, Amstrad, Msx, etc) en la que jugar, tanto si es la máquina real como si es por medio de su emulador correspondiente. Por encima de todo, divertirnos jugando con nuestros ordenadores como en nuestros mejores tiempos, compartiendo estos grandes ratos de divertimento con amigos, vecinos o con otros miembros de nuestras familias.
Descarga gratuita de Enforcer: c64.com // GameBase 64.



























