POKE de invulnerabilidad para Gaurodan

Foro dedicado a la programación en todo tipo de sistemas clásicos.
Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 54 veces
Contactar:

Re: POKE de invulnerabilidad para Gaurodan

Mensajepor mcleod_ideafix » 04 Ago 2013, 13:02

jepalza escribió:
mcleod_ideafix escribió:La verdad es que me divierto más buscando estas cosas que jugando al juego en sí, pero ahora por lo menos podré verlo entero y disfrutarlo, en lugar de frustrarme :)

Ya "semos" dos. Nunca he publicado trucos o "pokes", pero es algo que hago mucho, por que, como tú bien dices, soy un torpe en los juegos. >|
(no solo busco trucos a juegos, tambien a algunas cosillas de productividad, como un editor de textos del año de la polka, del 91,antiguo shareware, que me encanta, pero "estaba" limitado a solo 30 salvados de ficheros :twisted: )

También se pueden usar estas técnicas "para el bien". Hace ya casi 8 años, en es.comp.sistemas.sinclair salió el tema de que el software que acompaña al sistema de desarrollo cruzado P.D.S. tenía una "protección" por la cual el editor no arrancaba si no estaba presente el hardware en el bus ISA.

Resulta que tal protección no lo era, sino que era un fallo de programación: un salto que debería haber sido a otro sitio se ensambló incorrectamente (me recordó al "fallo" de la rutina NMI de la ROM del Spectrum). Total, que con el DEBUG de MS-DOS seguí la traza del programa, averigüé dónde estaba el bloqueo del programa y lo parcheé. Ahora el editor del PDS puede arrancar aunque no tengas pinchada la tarjeta ISA.

https://groups.google.com/d/msg/es.comp ... e0sDrL-tIJ

Código: Seleccionar todo

Yo con el DEBUG de MSDOS "detodalavida", he conseguido averiguar esto:

En determinado punto del programa, después de marearte redirigiendo la
interrupción 01 un par de veces, inutilizando así cualquier intento de
ejecución paso a paso con un debugger de modo real (el debug trabaja
así), me encuentro con una llamada a una rutina, que entre otras cosas,
redirige la interrupción de breakpoint (la 03), inicializa el contador 0
del 8254, y redirige las interrupciones 8 y 9 (esta última, la de
teclado) a rutinas propias suyas.

Después eso está lo más interesante: según el esquemático, los puertos
usados en el PC están del rango 300h - 31Fh, así que el programa se pone
a escribir valores en puertos dentro de ese rango, concretamente en los
puertos 306h, 302h y 304h. Cada OUT está seguido de 3 saltos para "hacer
tiempo" al bus ISA que es muy lento.

El último OUT es el interesante: mete el valor 8Bh en el puerto 302h, y
después de los 3 saltitos, hace un IN a ese mismo puerto y mira si el
valor leido es 8Bh. Si es así, sigue el programa. Si no...

... DEBERIA VOLVER A HACER IN A ESE PUERTO PARA SEGUIR CHEQUEANDO PERO....

... NO LO HACEEEEEEEEEEE!!!

Miren, miren:
1E6A:6BB9 EC            IN      AL,DX
1E6A:6BBA 3C8B          CMP     AL,8B
1E6A:6BBC 75FC          JNZ     6BBA

Esto parece ser un fallo: el JNZ debería haberse hecho a 6BB9, y no a
6BBA. Ni que decir tiene que si el primer "IN" no da el valor esperado
(8Bh), jamás lo dará!

Esta es la parte de rutina que hace estos IN y OUT's a la tarjeta, con
el IN dichoso al final:

1E6A:6B87 BA0603        MOV     DX,0306
1E6A:6B8A B098          MOV     AL,98
1E6A:6B8C EE            OUT     DX,AL
1E6A:6B8D EB00          JMP     6B8F
1E6A:6B8F EB00          JMP     6B91
1E6A:6B91 EB00          JMP     6B93
1E6A:6B93 B202          MOV     DL,02
1E6A:6B95 B0FF          MOV     AL,FF
1E6A:6B97 EE            OUT     DX,AL
1E6A:6B98 EB00          JMP     6B9A
1E6A:6B9A EB00          JMP     6B9C
1E6A:6B9C EB00          JMP     6B9E
1E6A:6B9E B204          MOV     DL,04
1E6A:6BA0 EE            OUT     DX,AL
1E6A:6BA1 EB00          JMP     6BA3
1E6A:6BA3 EB00          JMP     6BA5
1E6A:6BA5 EB00          JMP     6BA7
1E6A:6BA7 B08B          MOV     AL,8B
1E6A:6BA9 B202          MOV     DL,02
1E6A:6BAB EE            OUT     DX,AL
1E6A:6BAC EB00          JMP     6BAE
1E6A:6BAE EB00          JMP     6BB0
1E6A:6BB0 EB00          JMP     6BB2
1E6A:6BB2 803E801701    CMP     BYTE PTR [1780],01
1E6A:6BB7 7411          JZ      6BCA
1E6A:6BB9 EC            IN      AL,DX
1E6A:6BBA 3C8B          CMP     AL,8B
1E6A:6BBC 75FC          JNZ     6BBA
1E6A:6BBE EB00          JMP     6BC0

Bueno, pues lo que he probado es a cambiar ese JNZ 6BBA por 2 NOP's
monísimos, y lo que he conseguido es que me salga la ventana del editor,
con el cursor en rojo, y el teclado parece que responde, aunque de ahí
no he pasado...

Para conseguir esto, coged vuestro editor de ficheros binarios favorito,
y desplazarse hasta el offset 17CBCh : a partir de ahí, cambiad la
secuencia "75 FC" por "90 90" y grabad el resultado.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
mentalthink
Amiga 2500
Amiga 2500
Mensajes: 2840
Registrado: 11 Abr 2010, 15:06
Gracias dadas: 45 veces
Gracias recibidas: 14 veces

Re: POKE de invulnerabilidad para Gaurodan

Mensajepor mentalthink » 04 Ago 2013, 18:24

Re: POKE de invulnerabilidad para Gaurodan

Nota por mcleod_ideafix » Hoy, 12:02

jepalza escribió:

mcleod_ideafix escribió:La verdad es que me divierto más buscando estas cosas que jugando al juego en sí, pero ahora por lo menos podré verlo entero y disfrutarlo, en lugar de frustrarme :)


Ya "semos" dos. Nunca he publicado trucos o "pokes", pero es algo que hago mucho, por que, como tú bien dices, soy un torpe en los juegos. >|
(no solo busco trucos a juegos, tambien a algunas cosillas de productividad, como un editor de textos del año de la polka, del 91,antiguo shareware, que me encanta, pero "estaba" limitado a solo 30 salvados de ficheros :twisted: )



Esto como digo siempre es algo que CKultur debería tocar en el PodCast, yo lo veo interesante... porque dentro de ese grupo raro de gente con ordenadores a unos les dio por quemar el Joystick y a otros en estar cabilando cosas que en un principio no es que fueran a ser de gran ayuda en el futuro... A veces se ha comentado algo sobre el AMiga y ahí fué el punto de inflexión, pero yo al menos lo veo un tema curioso partiendo de la misma base, los mismos recursos, y mas o menos la misma clase social , porque unos son jugones y a otros nos gusta más el porque pasa eso?¿, no digo ni que sea mejor ni peor. Quizás sea algo más complejo y es el "psíque" de cada uno , no se...

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 54 veces
Contactar:

Re: POKE de invulnerabilidad para Gaurodan

Mensajepor mcleod_ideafix » 04 Ago 2013, 19:28

mentalthink escribió:Esto como digo siempre es algo que CKultur debería tocar en el PodCast, yo lo veo interesante... porque dentro de ese grupo raro de gente con ordenadores a unos les dio por quemar el Joystick y a otros en estar cabilando cosas que en un principio no es que fueran a ser de gran ayuda en el futuro...

Si mal no recuerdo, en uno de los (primeros) podcasts se habló de las dos "facciones": consoleros VS usuarios de microordenadores, y algo salió sobre ese tema que comentas. No era tema de portada, así que mirando las entradas de retroentreamigos.com no puedo saber en qué edición salió.

Consoleros VS usuarios de microordenadores: los primeros suelen ser eso, más jugones y menos cacharreriles, y los segundos, sobre todo si jamás tuvieron una consola, pues algo tendrían que cacharrear sí o sí. Yo soy de los segundos. Jamás tuve una consola de videojuegos, aparte de un típico PONG con varios juegos de futbol, tenis, frontón, etc, que le regalaron a mi hermano por su comunión. Supongo que nunca me acabó de picar el gusanillo del videojuego más allá de echar alguna partidita a algún juego en plan "casual" (vamos, lo mismo que ahora), y sí que me picó el tema programación (y gracias a Dios aún pica).

Por supuesto, nada de esto es matemático, y hay consoleros que han cacharreado a tope, y usuarios de microordenadores cuya experiencia en teclear comandos se redujo a un LOAD "", RUN "", CLOADM, Shift-Run/Stop o secuencia equivalente...
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
mentalthink
Amiga 2500
Amiga 2500
Mensajes: 2840
Registrado: 11 Abr 2010, 15:06
Gracias dadas: 45 veces
Gracias recibidas: 14 veces

Re: POKE de invulnerabilidad para Gaurodan

Mensajepor mentalthink » 05 Ago 2013, 02:00

Si creo que como comentás algo se toco el tema, lo que pasa yo personalmente no conocí a gente con consola en la época de los CPC y tal, bueno tampoco es que hubiera demasiada gente por no decir nadie con ordenadores...

Supongo que como comentas al final del parrafo, es algo dificil el saber porque o hacerse una idea, será más un tema personal de cada uno...

Personalmente cuando era crío los juegos me llamaban a voces, sobre todo las recreativas ver aquel surtido de colores y encima los muñecos eran muñecos no tenían precio, al llegar el Amstrad a mi casa el 1er año fué quemar el cassete de la de juegos que use, hasta que me dio por pensar, que incrédulo que yo podía hacer juegos, recuerdo estar 3 meses pensando en como hacer gráficos con el Symbol After con varios colores (y aún sigo con el tema :mrgreen: )... el problema ya no de ni conocer el ASM, eran los propios libros de Basic, que si el puerto tal, yo lo único que concía con la palabra puerto es dónde estaban los barcos y el caudal de tal, a mi me pillo creo que demasiao pequeño aunque logré hacer cosillas majas...

Lo del Amiga como he comentado y en el Podcast no sé quién lo ha nombrado varias veces, esa máquina es la que te decia, bueno no sabes pero puedes hacer cosas, con el Paint,los trackers de música, 3D (aquí el problema más que la máquina era el Inglés), pero en el Amiga si que recuerdo que los juegos aún teniendo infinidad, ya que descubrí la pirateria y se puede decir que a penas jugué con él.

Una idea para el Podcast, y esto creo que no se ha tocado, sería esté tema que es mucho más sencillo de abarcar... Que hubiese pasado si no hubiesen entrado al mercado Español (solo Español), ordenadores asequibles como el Spectrum o el CPC, con miras hacia el futuro, nuestra tecnología actual sería asi, o sería como en países como Sud-America en los que hay un retraso en temas tecnologicos?¿, ahí lo dejo, creo que sería interesante conocer impresiones sobre este tema... a veces me he hecho la pregunta si los ordenadores Dragón no hubiesen sido un proyecto fallido, España podría haber sido un centro neurálgico de tecnología en Europa, o la Korea del Sur de Europa?¿

Mike--Vk
Dragon 32
Dragon 32
Mensajes: 25
Registrado: 17 Mar 2013, 00:15
Sistema Favorito: Spectrum +2
primer_sistema: Spectrum +2
consola_favorita: Sega Genesis/Megadrive
Primera consola: Nintendo NES/Clónica

Re: POKE de invulnerabilidad para Gaurodan

Mensajepor Mike--Vk » 07 Sep 2013, 02:36

mcleod_ideafix escribió:Sorry... no tengo instalado Linux... :roll: Déjame que mire, a ver si el código generado es más o menos el mismo... mmmmm. No: para nada es el mismo. Probablemente esté usando GCC como backend, y eso genera un código muy diferente de loq ue estoy viendo en la versión de Windows.


McLeod, si has conseguido sacar ese "poke" para la versión Windows no te costará excesivo esfuerzo sacar uno parecido para su equivalente en Linux. Por supuesto que el código va a ser algo diferente, bastante diferente, o mogollón de diferente.

El simple hecho de que un sistema operativo como Linux gestione cosas como la memoria u otros recursos de forma totalmente diferente a Windows ya implica que en principio el código asm va a ser otro cantar diferente, pero aún así yo creo que a nivel estructural se pueden sacar cosas similares, me explico: si hay una barra que tiene que descender de 10 a 0, pues la hay igual pa un sistema que pa otro, y ahi quizás puedas detectar cosillas.

Por cierto, aun no lo he jugado estoy deseandito hacerlo. Anímate maestro y sácanos ese poki para Linux.


Volver a “Programación”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 11 invitados