Parchear juegos incompatibles con la gama plus.

Cualquier tema relacionado con la serie CPC+ y la consola Amstrad GX4000 que no esté englobado en otra categoría.
dragon131
Forum Addict
Forum Addict
Mensajes: 486
Registrado: Mar 08 Jun , 2010 12:36 pm

Parchear juegos incompatibles con la gama plus.

Mensajepor dragon131 » Vie 23 Oct , 2015 10:26 am

Haber si alguien me puede echar un cable que en cpcwiki pasan.

Estoy auto-aprendiendo como parchear los juegos incompatibles con el plus.

Hasta ahora he averiguado como parchear los juegos incompatibles con el ppi gracias al enlace que encontre en un hilo por aqui a la pagina de tom y jerry. Salvo porque no se como hacer para encontrar memoria libre para añadir codigo sin pisar lo que viene detras de la subrutina del teclado.

Pero lo que me intriga mas que eso,es la otra incompatibilidad de la gama plus que mencionan en el articulo de tom y jerry y que creo me he topado de bruces con ella y que no entiendo muy bien(la pagina esta en frances). En el juego hot rod parcheado por c.a.c.h.Que hace que al cargar el juego el plus se resete despues de ver la intro del hacker.

Segun creo el articulo dice que es un problema que se da cuando determinados hacker como c.a.c.h lanzan un programa en ensamblador que lanzan el juego en basic o algo asi. Y no estoy muy seguro como se hace la solucion que comentan.

No se si es que se refiere a que te hagas un programa en basic que llame a esas llamadas del firmware en vez de hacer un run o que.

http://tj.gpa.free.fr/html/coding/cpcplus.htm

¿Alguien sabe como se hace?.

Urusergi
Forum Addict
Forum Addict
Mensajes: 380
Registrado: Sab 25 Feb , 2006 5:45 pm

Re: Parchear juegos incompatibles con la gama plus.

Mensajepor Urusergi » Vie 23 Oct , 2015 3:39 pm

Yo si quieres le puedo echar un vistazo, a ver que me encuentro. Pásame el link del juego.

Para los "uníglotas" como yo :oops:
https://translate.google.es/translate?h ... pcplus.htm

dragon131
Forum Addict
Forum Addict
Mensajes: 486
Registrado: Mar 08 Jun , 2010 12:36 pm

Re: Parchear juegos incompatibles con la gama plus.

Mensajepor dragon131 » Vie 23 Oct , 2015 5:34 pm

Gracias urusegui, al final no hace falta parchearlo. Resulta que el hacker frances tiene un .bas con el nombre del juego que lanza el dibujo del crack, y otro.bin que lanza el juego, vamos que se puede lanzar sin usar el crack :mrgreen:

Era este:

http://cpcrulez.fr/GamesDL_arc/index.ph ... Hn28mIicbi

Ayuda con el ppi si me vendria bien. Se lo que tengo que hacer para que funcione,¿pero como consigues el espacio?.

Estoy mirando el breaktrouth (&03D5) y veo lo que esta mal, y se que hay que cambiar, pero no hay espacio para añadir un LD C ,&00 y un out sin cargarte lo que viene detras de la subrutina. En el simcity me paso igual, el juego funciona pero no deberia porque tuve que pisar una rst 18 que venia detras para poder meter el parche.

http://cpcrulez.fr/GamesDL_uncrack/inde ... 3MloDd4NI=

Lo he parcheado pero no funciona(en el plus quiero decir), y no se porque .
Adjuntos
Break Thru (UK) (1986).dsk
(190.32 KiB) Descargado 49 veces

Urusergi
Forum Addict
Forum Addict
Mensajes: 380
Registrado: Sab 25 Feb , 2006 5:45 pm

Re: Parchear juegos incompatibles con la gama plus.

Mensajepor Urusergi » Sab 24 Oct , 2015 9:13 pm

Estoy intentando reproducir el fallo en el emulador winape y no hay manera ¿seguro que el breakthru no funciona bien en los amstrad plus? :-k

He puesto CRTC 3 - CPC+ ASIC, activados Enable plus features y Plus PPI Emulation al igual que Enable Cartridge con la rom CPC_PLUS.CPR y el juego funciona de maravilla #-o

Para parchear imagino que tienes que buscar una zona "unused" y colocar un call en lugar de la subrutina de lectura del teclado para transladarla a esa zona y añadir lo que sea necesario.
En este juego veo una zona aproximadamente entre &19D2 y &1DAA aunque dependerá de la versión del juego que emplees (yo estoy usando la del ftp noruego).

Urusergi
Forum Addict
Forum Addict
Mensajes: 380
Registrado: Sab 25 Feb , 2006 5:45 pm

Re: Parchear juegos incompatibles con la gama plus.

Mensajepor Urusergi » Dom 25 Oct , 2015 6:10 pm

Mira a ver si puedes comprobar el archivo adjunto en la máquina real, porque voy completamente a ciegas.

Lo que he hecho es mover este código dos posiciones hacia atrás (machacando dos NOPs), restar 2 al JP NZ,&0374 final y añadir el OUT (C),E aprovechando que BC=&F6 y E=0 en ese punto.

Código: Seleccionar todo

ORG &0365

LD BC,&F792
OUT (C),C
LD BC,&F640
LD HL,&07C8
LD E,&0A

L0372: PUSH BC
OUT (C),C
LD B,&F4
IN A,(C)
LD (HL),A
INC HL
POP BC
INC C
DEC E
JP NZ,&0372
OUT (C),E
Adjuntos
BreakThru.zip
(21.88 KiB) Descargado 45 veces
Última edición por Urusergi el Dom 25 Oct , 2015 6:26 pm, editado 1 vez en total.

dragon131
Forum Addict
Forum Addict
Mensajes: 486
Registrado: Mar 08 Jun , 2010 12:36 pm

Re: Parchear juegos incompatibles con la gama plus.

Mensajepor dragon131 » Dom 25 Oct , 2015 6:22 pm

Claro, al final hice eso ¿pero como sabes que una zona no se usa para nada?. Ves un monton de ceros y puede que sea una zona que no se usa o una zona de variables o algo que se usara mas tarde.

El winape es que es defectuoso, no controla el ppi del plus aunque el juego sea incompatible funciona por eso no puedes reproducir el fallo.

En el que estoy ahora(el colony) no encuentro nada de nada libre o al menos no encuentro relacion entre grupos de ceros libres y los mismos en la imagen del disco asi que al final tengo que pisar lo que viene antes y corromper un poco la pantalla. Pero bueno supongo que es mejor que nada :).

Al final parchear el ppi es facil a nivel de codigo, la unica complicación es a donde mandas la call.

Urusergi
Forum Addict
Forum Addict
Mensajes: 380
Registrado: Sab 25 Feb , 2006 5:45 pm

Re: Parchear juegos incompatibles con la gama plus.

Mensajepor Urusergi » Dom 25 Oct , 2015 6:55 pm

Yo me estoy dando cuenta que el código que se hacía en esa época no estaba todo lo optimizado que cabría esperar :-k y eso puede ser una ventaja para sacar esos tres o cuatro bytes necesarios para el parcheo.
Sin ir más lejos en el código que te he puesto del Breakthru tienes un JP NZ que se puede reemplazar por un JR NZ ganando un byte, y también me he encontrado más de un LD A,00 que puedes sustituir por un XOR A pero eso si, teniendo en cuenta el efecto de la modificación de los flags.

Lo de usar la zona de ceros es una lotería como bien dices, y en el winape estaba claro que la opción del PPI es un fake :cry: ¿no existe otro emulador del plus que sea más fiel? me interesa muchísimo.

Anda prueba el breakthru a ver si marcha en el plus, que estoy intrigado 8-[ y si quieres que te eche una mano con otros no tienes más que decirlo :wink:

dragon131
Forum Addict
Forum Addict
Mensajes: 486
Registrado: Mar 08 Jun , 2010 12:36 pm

Re: Parchear juegos incompatibles con la gama plus.

Mensajepor dragon131 » Lun 26 Oct , 2015 1:38 am

Pues es que,cuando yo empece con esto de parchear los juegos para la gx4000 ya sabia de ensamblador del cpc porque me habia desensamblado el super skweek hasta el menu +o menos linea linea. Y ya habia estudiado ensamblador de pc en la uni en su dia :), por eso sabia por donde iban los tiros mas o menos, pero no sabia como encontrar las cosas. Entonces tuve mucha suerte, porque arnoldemu en cpcwiki me mando un privado y me dijo que estaba desarrollando un emulador de cpc que me podía ayudar y me lo mando.

Me mando la versión beta sin sonido,fallos graficos y demas cosas tipicas de herramientas en desarrollo.Pero el emulador para hacer cosas de estas es buenisimo porque va mucho mas alla de lo que puedes hacer con el winape. Ya no es que puedas hacer un breakpoint en una linea del codigo que ese este ejecutando, es que puedes hacer un breakpoint a qualquier chip del amstrad cpc. Por ejemplo para cambiar las teclas yo le pongo un breakpoint de lectura al registro A del puerto ppi que es cuando el programa lee el teclado, el emulador se para y entonces sigo el codigo hasta el buffer del teclado(si lo usan claro). Me apunto la dirección de memoria que se supone que va a leer para x tecla y pongo un breakpoint a la lectura de esa dirección de memoria. Cuando el programa la lee el emulador se para y entonces sigo el codigo haber que hace y modifico lo que haga falta.

Y claro esta respeta el ppi, si no funciona en el plus no funciona en el arnold emu que ademas te da opción de escojer el modelo normal,plus o gx4000.

Asi es como hago yo los parcheos, con el winape y con el arnoldemu a la vez y todo el escritorio lleno de ventanas con la tabla del teclado, instruciones del z80,numeros del teclado del cpc codigos ascii,firmware del cpc etc etc.. :mrgreen:

Pero reconoco que en ahorrar instruciones asi como has puesto estoy verde :), mañana te pruebo el breaktru en mi 6128 plus.

Un cable para el colony no me vendria mal,mi soluciión funciona, pero claro a costa de pisar el codigo y generar un pequeño defecto gráfico en la parte superior izquierda de la pantalla(se ve que ese cacho dibuja la pantalla).

La función empezaba en &2424 Le añadi el 0 de validación(que era lo que le faltaba) y ahora empieza en 2422, Asi que busque todos los CD 2424 y redirigi todas esas llamadas a al 2222.
Adjuntos
Colony (UK) (1987).rar
(25.01 KiB) Descargado 46 veces

dragon131
Forum Addict
Forum Addict
Mensajes: 486
Registrado: Mar 08 Jun , 2010 12:36 pm

Re: Parchear juegos incompatibles con la gama plus.

Mensajepor dragon131 » Lun 26 Oct , 2015 10:07 pm

Creo que tu parche funciona bien :).

Urusergi
Forum Addict
Forum Addict
Mensajes: 380
Registrado: Sab 25 Feb , 2006 5:45 pm

Re: Parchear juegos incompatibles con la gama plus.

Mensajepor Urusergi » Lun 26 Oct , 2015 10:40 pm

Pues es que,cuando yo empece con esto de parchear los juegos para la gx4000 ya sabia de ensamblador del cpc porque me habia desensamblado el super skweek hasta el menu +o menos linea linea.
Madre mía! :shock: menudo curro, tuvo que ser bestial ¿y ese código lo tienes disponible para descargar?
Y ya habia estudiado ensamblador de pc en la uni en su dia :), por eso sabia por donde iban los tiros mas o menos, pero no sabia como encontrar las cosas. Entonces tuve mucha suerte, porque arnoldemu en cpcwiki me mando un privado y me dijo que estaba desarrollando un emulador de cpc que me podía ayudar y me lo mando. Me mando la versión beta sin sonido,fallos graficos y demas cosas tipicas de herramientas en desarrollo.Pero el emulador para hacer cosas de estas es buenisimo porque va mucho mas alla de lo que puedes hacer con el winape. Ya no es que puedas hacer un breakpoint en una linea del codigo que ese este ejecutando, es que puedes hacer un breakpoint a qualquier chip del amstrad cpc. Por ejemplo para cambiar las teclas yo le pongo un breakpoint de lectura al registro A del puerto ppi que es cuando el programa lee el teclado, el emulador se para y entonces sigo el codigo hasta el buffer del teclado(si lo usan claro). Me apunto la dirección de memoria que se supone que va a leer para x tecla y pongo un breakpoint a la lectura de esa dirección de memoria. Cuando el programa la lee el emulador se para y entonces sigo el codigo haber que hace y modifico lo que haga falta. Y claro esta respeta el ppi, si no funciona en el plus no funciona en el arnold emu que ademas te da opción de escojer el modelo normal,plus o gx4000. Asi es como hago yo los parcheos, con el winape y con el arnoldemu a la vez y todo el escritorio lleno de ventanas con la tabla del teclado, instruciones del z80, numeros del teclado del cpc codigos ascii, firmware del cpc etc etc.. :mrgreen: Pero reconoco que en ahorrar instruciones asi como has puesto estoy verde :), mañana te pruebo el breaktru en mi 6128 plus.
Oye pues ese emulador me vendría genial y podría ayudarte con este tema que también me interesa bastante (fui el primero y creo que de momento el único que ha cargado juegos de cinta en una GX4000 \:D/ )
Un cable para el colony no me vendria mal,mi soluciión funciona, pero claro a costa de pisar el codigo y generar un pequeño defecto gráfico en la parte superior izquierda de la pantalla(se ve que ese cacho dibuja la pantalla).

La función empezaba en &2424 Le añadi el 0 de validación(que era lo que le faltaba) y ahora empieza en 2422, Asi que busque todos los CD 2424 y redirigi todas esas llamadas a al 2422.
Ok, me pongo a ello, a ver que tal se me da :-k

Urusergi
Forum Addict
Forum Addict
Mensajes: 380
Registrado: Sab 25 Feb , 2006 5:45 pm

Re: Parchear juegos incompatibles con la gama plus.

Mensajepor Urusergi » Lun 26 Oct , 2015 10:45 pm

Creo que tu parche funciona bien :).
Guai \:D/ ¿el defecto en el cpc+ del Breakthru era que se subía el coche hasta chocar todo el rato? me he encontrado con que el emulador MESS tiene ese comportamiento, pero lo curioso es que era emulando un 6128 clásico #-o

dragon131
Forum Addict
Forum Addict
Mensajes: 486
Registrado: Mar 08 Jun , 2010 12:36 pm

Re: Parchear juegos incompatibles con la gama plus.

Mensajepor dragon131 » Mar 27 Oct , 2015 2:20 am

Pues es que,cuando yo empece con esto de parchear los juegos para la gx4000 ya sabia de ensamblador del cpc porque me habia desensamblado el super skweek hasta el menu +o menos linea linea.
Madre mía! :shock: menudo curro, tuvo que ser bestial ¿y ese código lo tienes disponible para descargar?
Y ya habia estudiado ensamblador de pc en la uni en su dia :), por eso sabia por donde iban los tiros mas o menos, pero no sabia como encontrar las cosas. Entonces tuve mucha suerte, porque arnoldemu en cpcwiki me mando un privado y me dijo que estaba desarrollando un emulador de cpc que me podía ayudar y me lo mando. Me mando la versión beta sin sonido,fallos graficos y demas cosas tipicas de herramientas en desarrollo.Pero el emulador para hacer cosas de estas es buenisimo porque va mucho mas alla de lo que puedes hacer con el winape. Ya no es que puedas hacer un breakpoint en una linea del codigo que ese este ejecutando, es que puedes hacer un breakpoint a qualquier chip del amstrad cpc. Por ejemplo para cambiar las teclas yo le pongo un breakpoint de lectura al registro A del puerto ppi que es cuando el programa lee el teclado, el emulador se para y entonces sigo el codigo hasta el buffer del teclado(si lo usan claro). Me apunto la dirección de memoria que se supone que va a leer para x tecla y pongo un breakpoint a la lectura de esa dirección de memoria. Cuando el programa la lee el emulador se para y entonces sigo el codigo haber que hace y modifico lo que haga falta. Y claro esta respeta el ppi, si no funciona en el plus no funciona en el arnold emu que ademas te da opción de escojer el modelo normal,plus o gx4000. Asi es como hago yo los parcheos, con el winape y con el arnoldemu a la vez y todo el escritorio lleno de ventanas con la tabla del teclado, instruciones del z80, numeros del teclado del cpc codigos ascii, firmware del cpc etc etc.. :mrgreen: Pero reconoco que en ahorrar instruciones asi como has puesto estoy verde :), mañana te pruebo el breaktru en mi 6128 plus.
Oye pues ese emulador me vendría genial y podría ayudarte con este tema que también me interesa bastante (fui el primero y creo que de momento el único que ha cargado juegos de cinta en una GX4000 \:D/ )
Un cable para el colony no me vendria mal,mi soluciión funciona, pero claro a costa de pisar el codigo y generar un pequeño defecto gráfico en la parte superior izquierda de la pantalla(se ve que ese cacho dibuja la pantalla).

La función empezaba en &2424 Le añadi el 0 de validación(que era lo que le faltaba) y ahora empieza en 2422, Asi que busque todos los CD 2424 y redirigi todas esas llamadas a al 2422.
Ok, me pongo a ello, a ver que tal se me da :-k
El super skweek lo guarde en un txt no se si andara por aqui en algun disco duro, lo hacia con flechitas en plan &direcccion(bifurcación)-----
|
codigo |
& <- - |
Lo bueno es que al final no sirivio para nada porque el super skweek tenia editor de niveles incorporado, aunque descubri como se guardaban en disco.

El emulador te lo puedo pasar si quieres, pero es para que te lo guardes no para publicarlo en ninguna parte ¿vale?. Dejemos que arnoldemu lo públique cuando el quiera.

Yo ya tengo otro en el punto de mira uno que se llama frankie que lo puse y resulto que era incompatible en su dia. sobre el breaktrhu, pues yo creo que simplemente el coche funcionaba recto.

Urusergi
Forum Addict
Forum Addict
Mensajes: 380
Registrado: Sab 25 Feb , 2006 5:45 pm

Re: Parchear juegos incompatibles con la gama plus.

Mensajepor Urusergi » Mar 27 Oct , 2015 5:10 pm

Por supuesto! tengo claro que esa versión beta del emulador no se debe publicar, pero de momento nos puede venir muy bien para hacer los parcheos más rápidamente. Muchas gracias por pasármelo.

En cuanto al Colony la cosa está chunga y es que resulta que la pantalla está dividida en mode 1 arriba y mode 0 abajo y el defecto que ves es el resultado de una desincronización de la ruptura entre ambos modos #-o
El caso es que a mi me está generando un fallo aún peor y eso que he logrado optimizar un par de bytes pero no hay resultado :(
Aún tengo un par de ideas por intentar.

dragon131
Forum Addict
Forum Addict
Mensajes: 486
Registrado: Mar 08 Jun , 2010 12:36 pm

Re: Parchear juegos incompatibles con la gama plus.

Mensajepor dragon131 » Mar 27 Oct , 2015 9:24 pm

Si, el colony parace echo con encaje de bolilos :).

Urusergi
Forum Addict
Forum Addict
Mensajes: 380
Registrado: Sab 25 Feb , 2006 5:45 pm

Re: Parchear juegos incompatibles con la gama plus.

Mensajepor Urusergi » Mié 28 Oct , 2015 12:20 am

Te he mandado un MP con un problemilla con la descarga del emu :?

Pues no se si habrás arreglado el Frankie pero yo ya lo tengo \:D/
He conseguido rascar dos bytes sustituyendo las parejas:

AND &1F : XOR &1F
por CPL : AND &1F
y AND &B5 : XOR &B5
por CPL : AND &B5

y así tenemos espacio para meter el dichoso OUT (C),0
También he tenido que subir LD BC,#F40E:OUT (C),C para que se ejecute antes que LD BC,#F6C0:OUT (C),C
Aquí te dejo el parche:

Código: Seleccionar todo

ORG #45D4
LD BC,#F782
OUT (C),C
LD BC,#F40E
OUT (C),C
LD BC,#F6C0
OUT (C),C
DW &71ED
LD BC,#F792
OUT (C),C
LD BC,#F649
OUT (C),C
LD B,#F4
IN A,(C)
CPL
AND #1F
JR Z,L461C
LD BC,#0000
RRA
JR NC,L45FF
LD C,#01
L45FF: RRA
JR NC,L4604
LD C,#02
L4604: RRA
JR NC,L4609
LD B,#03
L4609: RRA
JR NC,L460E
LD B,#06
L460E: RRA
LD A,#09
JR C,L4614
XOR A
L4614: ADD B
ADD C
L4616: LD BC,#F782
OUT (C),C
RET
L461C: LD BC,#F645
OUT (C),C
LD B,#F4
IN A,(C)
CPL
AND #B5
JR Z,L4616
LD BC,#0000
RRA
JR NC,L4633
LD C,#01
L4633: RRA
RRA
JR NC,L4639
LD C,#02
L4639: RRA
RRA
JR NC,L463F
LD B,#03
L463F: RRA
JR NC,L4644
LD B,#06
L4644: RRA
RRA
LD A,#09
JR C,L464B
XOR A
L464B: ADD B
ADD C
JR L4616


¿Quién está conectado?

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


La Comunidad Española
ESP Soft, juegos para tu CPC Foro de Amstrad CPC Todos los juegos para CPC en un CD Web dedicada al Amstrad CPC (utilidades) Información útil para el CPC (talleres) Selección de juegos de Amstrad CPC Mundo CPC Pree Play then any Key CPC Basic