Guía práctica de uso Action Replay de C64 (Monitor CM aún en desarrollo )

Avatar de Usuario
minter
Mensajes: 1982
Registrado: 22 Jul 2014 18:51
Agradecido : 1428 veces
Agradecimiento recibido: 592 veces

Re: Guía práctica de uso Action Replay de C64 (Monitor CM aún en desarrollo )

Mensajepor minter » 28 Sep 2018 19:34

Último mensaje de la página anterior:

En este juego si que me matan rápido. -507

Avatar de Usuario
minter
Mensajes: 1982
Registrado: 22 Jul 2014 18:51
Agradecido : 1428 veces
Agradecimiento recibido: 592 veces

Re: Guía práctica de uso Action Replay de C64 (Monitor CM aún en desarrollo )

Mensajepor minter » 29 Sep 2018 17:33

veamos, antes de que me petardee el ordenador...
Hay que mirar el registro del VICII en la dirección $D018 para ver donde apunta la memoria reservada a la pantalla.
Y apartir de ahí... Contar en que posición tienen que ir las barras de energía. Esto es a ojo contando.
Cuando tenga la posición, buscar alguna instrucción que deposite ahí el char de la barra. Y cuando encuentre esa instrucción/rutina, ver de que manera ver como funciona y de donde coge los valores para pintar esa barra.
Esto es la teoría que voy a hacer... A ver si acierto.
Primero... Ver si es verdad que la pantalla está bien apuntada por el VICII

Avatar de Usuario
Chema
Mensajes: 1978
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 1181 veces
Agradecimiento recibido: 391 veces
Contactar:

Re: Guía práctica de uso Action Replay de C64 (Monitor CM aún en desarrollo )

Mensajepor Chema » 29 Sep 2018 20:06

Yo tenía un colega que hacía esto para juegos de cinta de spectrum con un 48K. Los desprotegía (incluso los turbo de última generación), los guardaba por bloques separados (cargador, pantalla, juego), luego tiraba de MONS para trazar el ensamblador y buscar pokes. Sin hardware externo. A mí siempre me pareció magia.

Avatar de Usuario
kikems
Mensajes: 2643
Registrado: 30 May 2013 19:23
Agradecido : 620 veces
Agradecimiento recibido: 920 veces

Re: Guía práctica de uso Action Replay de C64 (Monitor CM aún en desarrollo )

Mensajepor kikems » 29 Sep 2018 21:18

Chema escribió:Yo tenía un colega que hacía esto para juegos de cinta de spectrum con un 48K. Los desprotegía (incluso los turbo de última generación), los guardaba por bloques separados (cargador, pantalla, juego), luego tiraba de MONS para trazar el ensamblador y buscar pokes. Sin hardware externo. A mí siempre me pareció magia.


Yo lo que no llego a entender es cómo podían hacer todos esos procesos son solo 48K.

Avatar de Usuario
minter
Mensajes: 1982
Registrado: 22 Jul 2014 18:51
Agradecido : 1428 veces
Agradecimiento recibido: 592 veces

Re: Guía práctica de uso Action Replay de C64 (Monitor CM aún en desarrollo )

Mensajepor minter » 29 Sep 2018 22:48

Yo lo que no llego a entender es como se les ocurría hacer un juego para spectrum! -507

Bueno, a lo que iba... no encuentro la posición de memoria donde apunta al VICII para el juego.
Creo que lo estoy buscando mal.
voy a mirar un tutorial de juegos, para ver como configura la pantalla. Pero por el momento encuentro basura sin sentido (normal) pero no tengo claro si es el charset o la pantalla.

BlackHole
Mensajes: 903
Registrado: 03 Ago 2011 23:07
Ubicación: Aluche, Madrid
Agradecido : 5 veces
Agradecimiento recibido: 116 veces

Re: Guía práctica de uso Action Replay de C64 (Monitor CM aún en desarrollo )

Mensajepor BlackHole » 29 Sep 2018 23:01

Pero... ¿estás usando un Action Replay en el emulador de Commodore 64 para poder pararlo y examinar la memoria, o estás intentándolo hacer todo a pelo?

Avatar de Usuario
minter
Mensajes: 1982
Registrado: 22 Jul 2014 18:51
Agradecido : 1428 veces
Agradecimiento recibido: 592 veces

Re: Guía práctica de uso Action Replay de C64 (Monitor CM aún en desarrollo )

Mensajepor minter » 30 Sep 2018 10:14

BlackHole escribió:Pero... ¿estás usando un Action Replay en el emulador de Commodore 64 para poder pararlo y examinar la memoria, o estás intentándolo hacer todo a pelo?


No, a pelo no, con el monitor del AR y a veces pongo el HesMon.
Pero me he dado cuenta de una cosa.
Cuando llamo al cartucho, resulta que el puntero de la memoria de la pantalla me cambia. Cosaa evidente que no me había percatado. Me pasa ese valor de la pantalla de juego a la pantalla que veo en ese mismo instante o del AR o del Hesmon, por eso me salía la de por defecto en la ... $0400 otra vez.
Lo que voy a tener que hacer es buscar la instrucción en el juego que configura el VICII.
Y luego comprobaré con el monitor del VICE a ver si acerté. Es una pequeña trampa/ayuda, pero así no voy dando palos de ciego, porque no se que instrucción o de que manera configura el VICII.

BlackHole
Mensajes: 903
Registrado: 03 Ago 2011 23:07
Ubicación: Aluche, Madrid
Agradecido : 5 veces
Agradecimiento recibido: 116 veces

Re: Guía práctica de uso Action Replay de C64 (Monitor CM aún en desarrollo )

Mensajepor BlackHole » 30 Sep 2018 12:26

A ver... yo eso lo saqué el viernes. Lo pongo por aquí porque veo que estás completamente atascado.
Lo primero, con el monitor del Action Replay por defecto vemos RAM y si mostramos la memoria en D000 nos saca la RAM que hay debajo de la zona I/O de puertos de entrada/salida. Incluso si cambiamos con el comando * (asterisco) para mostrar la ROM pues los valores que nos saca corresponden a la pantalla actual del monitor. Eso lo vemos enseguida porque el color del borde en D020 lo muestra como 6 (azul) en vez de 0 (negro). Otros valores que no deberían ser los que son, nos confirman que esa táctica no nos vale.

Lo que hay que hacer es usar el comando especial IO del monitor cuando hemos congelado el juego. Esto viene de pasada en el punto 13) de las instrucciones sobre el Monitor de Código Máquina que kikems pegó más arriba en el hilo, yo apenas me acordaba. Ahora que mostrará los valores reales del chipset en la memoria congelada. Lo primero que hay que ver es la CIA 2 (DD00-DD0F) y comprobar en cuál de los 4 bancos de 16K está el trabajando el VIC-II. En DD00 vemos que hay un 00, por lo que el VIC-II está trabajando en el banco 3 (C000-FFFF) de memoria. En D018 tenemos BD (%10111101) con lo que la pantalla está en B*400=2C00 y sumando la base del banco C000+2C00=EC00

Una página útil que explica todo esto es la del Wiki de programadores de C64: http://www.codebase64.org/doku.php?id=base:vicii_memory_organizing

Se supone que el comando "I EC00" del monitor del Action Replay nos sacaría la pantalla, pero entre que el juego de caracteres apunta a otra parte, y entre que saca los datos de 32 en 32 en vez de 40 en 40, es realmente complicado saber dónde están los marcadores (en este punto prefiero arrancar el monitor del VICE con Alt-M y utilizar el comando SC). Aún podemos usar el editor de pantalla del Action Replay y ver que la barra de energía empieza en la posición 19 del 3er renglón. 2x40+19=99=$63 + base de pantalla en $EC00 = $EC63

Pero me temo que si buscamos por $EC63 en sus múltiples formas, no va a haber forma humana de encontrar nada de nada. La rutina que modifica esa zona de la memoria está tan enmascarada (quizás a propósito) que me fue imposible sin utilizar el VICE y por lo tanto técnicas del siglo XXI que no estaban disponibles en 1987. Solo tenemos que ver lo enrevesado del código para obtener la posición $EC63:

Código: Seleccionar todo

.C:9369  A5 0E       LDA $0E
.C:936b  48          PHA
.C:936c  A5 0F       LDA $0F
.C:936e  48          PHA
.C:936f  98          TYA
.C:9370  48          PHA
.C:9371  F0 02       BEQ $9375    ; Si entramos a esta rutina con el registro Y a 0
.C:9373  A9 28       LDA #$28     ; Ponemos EC63 como puntero en 0E/0F   
.C:9375  18          CLC          ; Si entramos con un registro Y diferente (posiblemente 1)
.C:9376  69 63       ADC #$63     ; ponemos EC63+28=EC8B en dicho puntero
.C:9378  85 0E       STA $0E      ; justamente la barra de energía del BOSS en la fila inferior
.C:937a  A9 EC       LDA #$EC
.C:937c  85 0F       STA $0F
.C:937e  B9 59 90    LDA $9059,Y  ; Dividimos esta posición entre 32
.C:9381  4A          LSR A
.C:9382  4A          LSR A
.C:9383  4A          LSR A
.C:9384  4A          LSR A
.C:9385  4A          LSR A
.C:9386  8D 8F 93    STA $938F
.C:9389  08          PHP          ; Guardamos el estado del procesador para luego
.C:938a  A0 00       LDY #$00
.C:938c  A9 FF       LDA #$FF     ; Imprimimos FF para mostrar 2 cuadros de energía
.C:938e  C0 00       CPY #$00
.C:9390  F0 05       BEQ $9397
.C:9392  91 0E       STA ($0E),Y
.C:9394  C8          INY
.C:9395  D0 F7       BNE $938E
.C:9397  28          PLP          ; Recuperamos el Carry por si la anterior división daba impar
.C:9398  90 05       BCC $939F
.C:939a  A9 FE       LDA #$FE     ; Imprimimos FE para mostrar 1 cuadro de energía
.C:939c  91 0E       STA ($0E),Y
.C:939e  C8          INY
.C:939f  A9 C0       LDA #$C0     ; Imprimimos C0 para mostrar un espacio
.C:93a1  C0 06       CPY #$06     ; hasta un máximo de 6 espacios
.C:93a3  F0 05       BEQ $93AA
.C:93a5  91 0E       STA ($0E),Y
.C:93a7  C8          INY
.C:93a8  D0 F7       BNE $93A1
.C:93aa  68          PLA
.C:93ab  A8          TAY
.C:93ac  68          PLA          ; Recuperamos los valores que teníamos en memoria
.C:93ad  85 0F       STA $0F      ; antes de entrar en la rutina de impresión
.C:93af  68          PLA          ; como si no hubiese pasado nada...
.C:93b0  85 0E       STA $0E      ; Así ocultamos nuestras trazas para el congelador
.C:93b2  60          RTS

Posteriormente he encontrado 3 rutinas que decrementan el valor (9059,Y) que controla las energías. Una para cuando te dan un puñetazo que resta el valor presente en la dirección $03 (que por defecto es 4), otra para cuando te dan una patada en tus partes que te resta un valor fijo de 8 y otra para cuando te agarran por detrás que te va restando de 1 en 1 simplemente. Pero las mismas rutinas controlan la energía de los enemigos, con lo cual no he logrado dilucidar cómo hacer que los enemigos tampoco sean inmortales... o eso o no sé cuántas docenas de enemigos tengo que matar antes de que se acabe el tiempo.

Veo en este vídeo de Youtube un "longplay" del Renegade de C64 y el jefe sale pronto, así que habrá que buscar otra forma.

Avatar de Usuario
kikems
Mensajes: 2643
Registrado: 30 May 2013 19:23
Agradecido : 620 veces
Agradecimiento recibido: 920 veces

Re: Guía práctica de uso Action Replay de C64 (Monitor CM aún en desarrollo )

Mensajepor kikems » 30 Sep 2018 12:52

BlackHole escribió:.... Pero las mismas rutinas controlan la energía de los enemigos, con lo cual no he logrado dilucidar cómo hacer que los enemigos tampoco sean inmortales...


JAjjj, me apasiona este hilo, la de cosas que voy aprendiendo así con casos prácticos y paso a paso. -thumbup

BlackHole
Mensajes: 903
Registrado: 03 Ago 2011 23:07
Ubicación: Aluche, Madrid
Agradecido : 5 veces
Agradecimiento recibido: 116 veces

Re: Guía práctica de uso Action Replay de C64 (Monitor CM aún en desarrollo )

Mensajepor BlackHole » 30 Sep 2018 14:34

Por cierto, el resto de valores se encuentran fácilmente con el Action Replay:

Las vidas se almacenan en la posición $21 y la instrucción que las decrementa está en $A4CB
La posición $14 almacena cincuentavos de segundo.
La posición $15 almacena las unidades de los segundos.
La posición $16 almacena las decenas de los segundos.
La posición $17 almacena los minutos.
La instrución que decrementaría las unidades de segundo está en $A09A

Avatar de Usuario
minter
Mensajes: 1982
Registrado: 22 Jul 2014 18:51
Agradecido : 1428 veces
Agradecimiento recibido: 592 veces

Re: Guía práctica de uso Action Replay de C64 (Monitor CM aún en desarrollo )

Mensajepor minter » 30 Sep 2018 14:45

vaaaaleeee... era eso lo que me faltaba, que no sumaba la base y me quedaba buscando en $2C00, que era lo que sacaba del VIC y su BD.
Y me chinaba no encontrando nada.
Y he comprobado con el ICU y efectivamente es ahí.
Y me ponía con el AR en monitor y a veces me sacaba 00 y yo flipaba.
Con el HesMon me daba 15, banco ppr defecto. Y me metía en el Monitor de VICe y me salía el BD (189)
Este método piedra es muy duro XD.
Por cierto... he probado.lo del.Pokefinder... y porque le pone LDA?

BlackHole
Mensajes: 903
Registrado: 03 Ago 2011 23:07
Ubicación: Aluche, Madrid
Agradecido : 5 veces
Agradecimiento recibido: 116 veces

Re: Guía práctica de uso Action Replay de C64 (Monitor CM aún en desarrollo )

Mensajepor BlackHole » 30 Sep 2018 14:55

Bueno, es la técnica que tiene el POKEFINDER del Action Replay: reemplaza el DEC por LDA. Como apuntó Chema, esto podría tener efectos adversos si se necesita conservar el acumulador. Está bien para encontrar el byte, pero al menos en mi época de la escena yo luego en el trainer definitivo usaba BIT o NOPs (BIT no aguanta todos los modos de direccionamiento), incluso RTS si era una subrutina que no hacía nada más que decrementar el valor.

Avatar de Usuario
minter
Mensajes: 1982
Registrado: 22 Jul 2014 18:51
Agradecido : 1428 veces
Agradecimiento recibido: 592 veces

Re: Guía práctica de uso Action Replay de C64 (Monitor CM aún en desarrollo )

Mensajepor minter » 22 Oct 2018 02:51

Aprovecho para pedir el tercer juego.

El Super Pipeline,
Siempre me gustó este juego. Muy entretenido, muy de recreativa, pero en C64.

Pues en este juego me sucede que Actiom Replay no vuelve al juego. Es como si el juego estuviera protegido contra Frezers y monitores.

y cuando se llega a este punto... Que se puede hacer?
Digamos que seguimos con las herramientas de los 80.
Y que las hombreras se llevan, el pelo cardado es normal y naranjito apesta (porque en el fondo, Naranjito nunca moló. Eso es una cosa que nos quieren vender ahora como si no nos acordaramos. Naranjito sucks) -507

Avatar de Usuario
kikems
Mensajes: 2643
Registrado: 30 May 2013 19:23
Agradecido : 620 veces
Agradecimiento recibido: 920 veces

Re: Guía práctica de uso Action Replay de C64 (Monitor CM aún en desarrollo )

Mensajepor kikems » 22 Oct 2018 13:41

minter escribió:Aprovecho para pedir el tercer juego.

El Super Pipeline,
Siempre me gustó este juego. Muy entretenido, muy de recreativa, pero en C64.

Pues en este juego me sucede que Actiom Replay no vuelve al juego. Es como si el juego estuviera protegido contra Frezers y monitores.

y cuando se llega a este punto... Que se puede hacer?
Digamos que seguimos con las herramientas de los 80.
Y que las hombreras se llevan, el pelo cardado es normal y naranjito apesta (porque en el fondo, Naranjito nunca moló. Eso es una cosa que nos quieren vender ahora como si no nos acordaramos. Naranjito sucks) -507


Localiza una versión desde la que todos podamos partir y compártela aquí, que hay muchas subversiones por internet de estos juegos y las direcciones de memoria puede cambiar de unas a otras.

BlackHole
Mensajes: 903
Registrado: 03 Ago 2011 23:07
Ubicación: Aluche, Madrid
Agradecido : 5 veces
Agradecimiento recibido: 116 veces

Re: Guía práctica de uso Action Replay de C64 (Monitor CM aún en desarrollo )

Mensajepor BlackHole » 23 Oct 2018 02:19

No vi este mensaje... otros hilos han crecido tanto que éste se me quedó bien abajo en la pantalla.
Son las 2:20 del martes 23 de Octubre, pero le puedo echar un vistazo.

Estamos hablando del Super Pipeline (C) 1983 Taskset Ltd, ¿no? Porque luego hay un Super Pipeline II de 1985.
No tengo problema alguno con el Action Replay. ¡Si el juego salió 3 años antes que el cartucho!

Avatar de Usuario
minter
Mensajes: 1982
Registrado: 22 Jul 2014 18:51
Agradecido : 1428 veces
Agradecimiento recibido: 592 veces

Re: Guía práctica de uso Action Replay de C64 (Monitor CM aún en desarrollo )

Mensajepor minter » 23 Oct 2018 02:32

BlackHole escribió:Estamos hablando del Super Pipeline (C) 1983 Taskset Ltd, ¿no? Porque luego hay un Super Pipeline II de 1985.
No tengo problema alguno con el Action Replay. ¡Si el juego salió 3 años antes que el cartucho!


Imagen

El de Taskset! Me mola mucho.
Pero ahora toca localizar una versión sin trainer. Quizas un Tap.

BlackHole
Mensajes: 903
Registrado: 03 Ago 2011 23:07
Ubicación: Aluche, Madrid
Agradecido : 5 veces
Agradecimiento recibido: 116 veces

Re: Guía práctica de uso Action Replay de C64 (Monitor CM aún en desarrollo )

Mensajepor BlackHole » 23 Oct 2018 02:36

Habiendo buscadores de ficheros como éste no sé qué problema hay en encontrar TAPs.

Me da $6F5D,$AD (28509,173) para las vidas. Pero supongo que las colisiones son más importantes.


Kikems: ¿Dijiste al final del último Amiga Wave que tenías problemas con el Avenger? ¿Gremlin 1986 supongo?


Volver a “Hardware C64”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado