Creando una aventura conversacional con GAC
Re: Creando una aventura conversacional con GAC
Bueno, los de INFOCOM leen desde disco, solucionando asi el tema memoria (más lento, claro) aunque este zxzvm se podría adaptar para 6128 según el código fuente (sólo habría que adaptar el interfaz del intérprete con el hardware) y da unas pautas para ello; e incluso aquí dan más ideas: http://www.csd.uwo.ca/Infocom/Articles/small.html
Por otro lado, el catálogo de juegos en castellano está bien, no se si serán todos compatibles: http://wiki.caad.es/Categor%C3%ADa:Aven ... %A1quina-Z
Por otro lado, el catálogo de juegos en castellano está bien, no se si serán todos compatibles: http://wiki.caad.es/Categor%C3%ADa:Aven ... %A1quina-Z
Re: Creando una aventura conversacional con GAC
Ya ya, si portar el zxzvm al 6128 no es muy complicado, a lo sumo un par de horas (añadir la paginación y usar llamadas al firmware para impresión, lectura y el manejo de disco... y eso si no funciona directamente en CPM+ la versión de PCW, que lo mismo no hay ni que despeinarse ), lo que entonces me echó para atrás fue lo de la velocidad... de todas formas intentaré echarle un vistazo durante la semana que viene, aunque no puedo prometer nada, que comienza la feria y no hay nada mejor para desestresarse
Otro hilo muy interesante acerca de las optimizaciones a los juegos para el caso del spectrum, lo puedes encontrar en este hilo de Utopian en el CAAD, además, échale un vistazo a este artículo suyo del Magazine ZX, que aparte de un análisis del zxzvm incluye algunos juegos y podrás ver como quedaría.
... Pero bueno todo esto era una nota, así que sigamos disfrutando de tu "diario de creación de una aventura en GAC"
Otro hilo muy interesante acerca de las optimizaciones a los juegos para el caso del spectrum, lo puedes encontrar en este hilo de Utopian en el CAAD, además, échale un vistazo a este artículo suyo del Magazine ZX, que aparte de un análisis del zxzvm incluye algunos juegos y podrás ver como quedaría.
... Pero bueno todo esto era una nota, así que sigamos disfrutando de tu "diario de creación de una aventura en GAC"
Re: Creando una aventura conversacional con GAC
¿A qué me toca desglosar el hilo otra vez (para "sorpresa" de Litos) ?
Re: Creando una aventura conversacional con GAC
Jajajaja, de verdad que no lo hago a posta... pero es que me ha reñio tantas veces ya, que me voy a tener que exiliar xDDD
Re: Creando una aventura conversacional con GAC
Bueno, tras unos días de asueto volvemos a la carga. Hoy vamos a empezar con las condiciones, que son instrucciones que nos van a permitir evaluar situaciones y actuar en consecuencia. El formato básico es el siguiente:
IF ( condición/es ) acción/es END
(nótense los espacios entre los paréntesis), por ejemplo:
IF ( VERB 12 AND NOUN 13 ) MESS 201 WAIT END
significa "si en la orden tecleada el VERBO es el nùmero 12 y el NOMBRE el 13, muestra el MENSAJE 201 y vuelve a ESPERAR una nueva orden".
Los números de Verbo, Nombre, Mensaje, etc deben ir también entre paréntesis. Aquí no los iré poniendo para más claridad, pero el compilador los añadirá por nosotros.
El GAC establece tres tipos de condiciones: de alta prioridad (que tendrán lugar al entrar en una ubicación antes de poder el jugador teclear nada), locales (que se evaluarán tras introducir el jugador su comando y afectan sólo a esa ubicación) y baja prioridad (también se evaluan tras introducir el jugador su orden, pero no están sujetas a esa ubiación concreta). Para nuestra aventura tendremos que crear condiciones locales con las situaciones de cada una de las ubicaciones, por ejemplo y siguiendo nuestro guión, vender el amuleto en la pantalla 4 o beber vino en la pantalla 2. Son acciones personalizadas para esas pantallas y se introducen con la opción Condition (LOCAL), que nos pedirá el número de ubicación y el número de condición (si le damos un número de condición que ya hayamos introducido, nos la mostrará permitiendo su edición). Como no tenemos los textos del juego vamos a ir metiendo las acciones necesarias para la aventura. Cuando ya tengamos los textos meteremos otras que puedan surgir del texto, como por ejemplo examinar objetos que se mencionen en la descripción de la pantalla y similares.
De momento he añadido algunas líneas más a Mensajes:
IF ( HERE 1 AND AT 1 ) MESS 20 GET 1 WAIT END
"Si está AQUÍ el objeto 1 (amuleto) y estamos EN la ubicación 1, mostrar el MENSAJE 20, COGER el objeto 1 y mostrar el prompt para ESPERAR la siguiente orden".
No parece difícil, ¿no?
Vamos a ver cómo haríamos las condiciones de la pantalla 4. Recordemos esta ubicación:
IF ( CARR 1 AND VERB 10 AND NOUN 1 ) 1 TO 0 19 TO 4 GET 19 MESS 10 WAIT END
"Si LLEVAMOS el objeto 1 (amuleto) y el VERBO es 10 (dar) y el NOMBRE 1 (amuleto), mover 1 (amuleto) A la ubicación 0 (una sala inaccesible que quitará el amuleto del nuestro alcance), mover 19 (monedas) de la ubicación 0 (donde comienza) A la 4, la que estamos, COGER el objeto 19 (monedas) mostrar el MENSAJE 10 y mostrar el prompt para ESPERAR la siguiente orden".
Bueno, sigue sin ser complicado, ¿no? Vamos a afinar un poco más:
Añadamos 50 CSET 1 a la línea anterior en la parte de acción, que "da el valor 50 al Contador 1" (y así probamos cómo funciona la edición de condiciones
El vaso de vino valdrá 10 monedas, el melón 12 y el espejo 35. La varita de la pantalla 4 no se podrá comprar.
2
IF ( CTR 2 = 0 AND CARR 19 AND VERB 84 AND NOUN 45 ) INCR 2 CTR 1 - 10 CSET 1 MESS 11 WAIT END
"Si LLEVAMOS el objeto 19 (monedas) y el CONTADOR 2 es 0 y el VERBO es 84 (beber) y el NOMBRE 45 (vino), INCREMENTAR el contador 2, RESTAR 10 al contador 1 (monedas) mostrar el MENSAJE 11 y ESPERAR nuevo comando".
Es importante saber que el parser analizará las condiciones de izquierda a derecha y además es recomendable poner las comparaciones en primer lugar (como bien dice el manual): yo no lo he estado haciendo así y casi me vuelvo loco con las respuestas del juego en las pruebas !!
IF ( CTR 2 = 1 AND CARR 19 AND VERB 84 AND NOUN 45 ) INCR 2 CTR 1 - 10 CSET 1 MESS 12 WAIT END
IF ( CTR 2 = 2 AND CARR 19 AND VERB 84 AND NOUN 45 ) INCR 2 CTR 1 - 10 CSET 1 2 TO 2 GET 2 MESS 13 WAIT END
Crearemos también una condición para cuando ya tengamos el licor:
IF ( CTR 2 = 3 AND CARR 19 AND VERB 84 AND NOUN 45 ) MESS 14 WAIT END
Y otra por si intentamos beber vino antes de conseguir la pasta:
IF ( ( NOT CARR 19 ) AND VERB 84 AND NOUN 45 ) MESS 15 WAIT END
Ahora haremos la compra del melón podrido en la pantalla 3:
3
IF ( CTR 1 > 12 AND CARR 19 AND VERB 16 AND NOUN 3 ) CTR 1 - 12 CSET 1 3 TO 3 GET 3 MESS 16 WAIT END
Aquí comprobamos primero que tengamos dinero suficiente (CTR 1 > 12 ). La siguiente condición es por si queremos comprar el melón cuando ya lo tenemos:
IF ( CARR 3 AND VERB 16 AND NOUN 3 ) MESS 19 WAIT END
Y estas dos por si queremos comprar sin dinero o sin el dinero suficiente. Como en el puesto el resto de frutas serán más caras que los 50 dirá que no tenemos sufiente para comprarlos
IF ( ( NOT CARR 19 ) AND VERB 16 ) MESS 16 WAIT END
IF ( CARR 19 AND VERB 16 ) MESS 18 WAIT END
Añadamos también la compra del espejo y las de no tienes dinero a la ubicación 4:
4
IF ( CTR 1 > 35 AND CARR 19 AND VERB 16 AND NOUN 4 ) CTR 1 - 35 CSET 1 4 TO 4 GET 4 MESS 17 WAIT END
IF ( ( NOT CARR 19 ) AND VERB 16 ) MESS 19 WAIT END
IF ( CARR 19 AND VERB 16 ) MESS 18 WAIT END
Y para rematar esta entrega podemos añadir la opción comprar donde bebíamos el vino, añadiendo un paréntesis en la parte de verbo y quedando ( VERB 84 OR VERB 16 ), pudiendo entonces escribir o COMPRAR VINO o BEBER VINO, y la de VENDER (creando un nuevo verbo) para usarla en vez de DAR AMULETO en la ubicación 4.
IF ( condición/es ) acción/es END
(nótense los espacios entre los paréntesis), por ejemplo:
IF ( VERB 12 AND NOUN 13 ) MESS 201 WAIT END
significa "si en la orden tecleada el VERBO es el nùmero 12 y el NOMBRE el 13, muestra el MENSAJE 201 y vuelve a ESPERAR una nueva orden".
Los números de Verbo, Nombre, Mensaje, etc deben ir también entre paréntesis. Aquí no los iré poniendo para más claridad, pero el compilador los añadirá por nosotros.
El GAC establece tres tipos de condiciones: de alta prioridad (que tendrán lugar al entrar en una ubicación antes de poder el jugador teclear nada), locales (que se evaluarán tras introducir el jugador su comando y afectan sólo a esa ubicación) y baja prioridad (también se evaluan tras introducir el jugador su orden, pero no están sujetas a esa ubiación concreta). Para nuestra aventura tendremos que crear condiciones locales con las situaciones de cada una de las ubicaciones, por ejemplo y siguiendo nuestro guión, vender el amuleto en la pantalla 4 o beber vino en la pantalla 2. Son acciones personalizadas para esas pantallas y se introducen con la opción Condition (LOCAL), que nos pedirá el número de ubicación y el número de condición (si le damos un número de condición que ya hayamos introducido, nos la mostrará permitiendo su edición). Como no tenemos los textos del juego vamos a ir metiendo las acciones necesarias para la aventura. Cuando ya tengamos los textos meteremos otras que puedan surgir del texto, como por ejemplo examinar objetos que se mencionen en la descripción de la pantalla y similares.
De momento he añadido algunas líneas más a Mensajes:
Y también una lista de Nouns, nombres de objetos, personas, etc que reconocerá el parser. Siguiendo el consejo de CECPC he dejado los primeros de la lista (1 al 19) para los objetos que se pueden coger. Estos tendremos que marcarlos también como objetos en la opción Objects del menú, donde se indica su número, descripción (el nombre que nos mostrará al teclear INVENTARIO), ubicación inicial y peso:Mensajes:
10
Entregas el amuleto al vendedor entregandote este a cambio 50 monedas.
11
Pagas al vendedor por un vaso de vino que apuras rapidamente. ¡Que rico!
12
No me viene mal otro vasito. Voy entrando en calor.
13
Cuando apuro el vaso el vendedor me entrega una botella: "Parece usted buen catador. Llevese este licor, seguro que sabra apreciarlo".
14
El vendedor dice: "Ya lleva usted suficiente en el cuerpo".
15
El vendedor dice: "Sin dinero no hay nada".
16
Pagas al tendero y te entrega el melon.
17
Pagas al tendero y te entrega el espejo.
18
No tienes suficiente dinero.
19
Ya tienes el melon.
20
El mago se va y no vuelve...
En el manual de GAC tenemos el listado de las diferentes condiciones y las acciones a realizar. Lo primero que haremos será establecer una condición de alta prioridad, opción H que nos dirá que el mago se pira y autocoge el amuleto:Nombres:
1 Amuleto
2 Licor
3 Melon
4 Espejo
5 Varita
6 Piedra
7 Junco
8 Anillo
9 Pocion
9 Pociones
10 Trampa
11 Raton
12 Sabana
13 Paja
14 Pluma
15 Bote
16 Queso
17 Llaves
18 Remedio
19 Monedas
20 Huecos
21 Soldado
22 Celda
23 Palanca
24 Grilletes
25 Mago
26 Gato
27 Jaula
28 Cadaver
29 Paredes
30 Pared
31 Agujero
32 Chimenea
33 Cama
34 Colchon
35 Calavera
36 Boca
37 Ventana
38 Antorcha
39 Muro
40 Matorrales
40 Raices
41 Socavon
42 Reja
42 Barrotes
43 Plantas
43 Juncos
44 Charco
45 Vino
IF ( HERE 1 AND AT 1 ) MESS 20 GET 1 WAIT END
"Si está AQUÍ el objeto 1 (amuleto) y estamos EN la ubicación 1, mostrar el MENSAJE 20, COGER el objeto 1 y mostrar el prompt para ESPERAR la siguiente orden".
No parece difícil, ¿no?
Vamos a ver cómo haríamos las condiciones de la pantalla 4. Recordemos esta ubicación:
4Un comprador de artículos mágicos. Le venderemos el amuleto (que, al examinarlo, sabemos que necesitaremos para volver).
IF ( CARR 1 AND VERB 10 AND NOUN 1 ) 1 TO 0 19 TO 4 GET 19 MESS 10 WAIT END
"Si LLEVAMOS el objeto 1 (amuleto) y el VERBO es 10 (dar) y el NOMBRE 1 (amuleto), mover 1 (amuleto) A la ubicación 0 (una sala inaccesible que quitará el amuleto del nuestro alcance), mover 19 (monedas) de la ubicación 0 (donde comienza) A la 4, la que estamos, COGER el objeto 19 (monedas) mostrar el MENSAJE 10 y mostrar el prompt para ESPERAR la siguiente orden".
Bueno, sigue sin ser complicado, ¿no? Vamos a afinar un poco más:
Para hacer el manejo de la cantidad de monedas usaremos el Contador número 1, que arrancará con 50 monedas (lo que nos dan por el medallón) y le iremos descontando con cada compra.Hay 128 contadores, numerados de 0 a 127. Son con frecuencia utilizados para almacenar el número de movimientos desde un suceso particular, (p.e. movimientos en la oscuridad). El contador 0 mantiene la puntuación y los contadores 126 y 127 llevan los turnos contados desde el principio del juego.
Añadamos 50 CSET 1 a la línea anterior en la parte de acción, que "da el valor 50 al Contador 1" (y así probamos cómo funciona la edición de condiciones
El vaso de vino valdrá 10 monedas, el melón 12 y el espejo 35. La varita de la pantalla 4 no se podrá comprar.
Para llevar las cuentas de las veces que tomamos el vino usaremos el Contador 2. Cada vaso de vino valdrá 10 monedas.Con ese dinero nos vamos al vendedor de vino y le pedimos, un vaso tras otro. Después del tercer vaso, nos regalará una botella de licor (mucho más fuerte) que guardaremos.
2
IF ( CTR 2 = 0 AND CARR 19 AND VERB 84 AND NOUN 45 ) INCR 2 CTR 1 - 10 CSET 1 MESS 11 WAIT END
"Si LLEVAMOS el objeto 19 (monedas) y el CONTADOR 2 es 0 y el VERBO es 84 (beber) y el NOMBRE 45 (vino), INCREMENTAR el contador 2, RESTAR 10 al contador 1 (monedas) mostrar el MENSAJE 11 y ESPERAR nuevo comando".
Es importante saber que el parser analizará las condiciones de izquierda a derecha y además es recomendable poner las comparaciones en primer lugar (como bien dice el manual): yo no lo he estado haciendo así y casi me vuelvo loco con las respuestas del juego en las pruebas !!
IF ( CTR 2 = 1 AND CARR 19 AND VERB 84 AND NOUN 45 ) INCR 2 CTR 1 - 10 CSET 1 MESS 12 WAIT END
IF ( CTR 2 = 2 AND CARR 19 AND VERB 84 AND NOUN 45 ) INCR 2 CTR 1 - 10 CSET 1 2 TO 2 GET 2 MESS 13 WAIT END
Crearemos también una condición para cuando ya tengamos el licor:
IF ( CTR 2 = 3 AND CARR 19 AND VERB 84 AND NOUN 45 ) MESS 14 WAIT END
Y otra por si intentamos beber vino antes de conseguir la pasta:
IF ( ( NOT CARR 19 ) AND VERB 84 AND NOUN 45 ) MESS 15 WAIT END
Ahora haremos la compra del melón podrido en la pantalla 3:
3
IF ( CTR 1 > 12 AND CARR 19 AND VERB 16 AND NOUN 3 ) CTR 1 - 12 CSET 1 3 TO 3 GET 3 MESS 16 WAIT END
Aquí comprobamos primero que tengamos dinero suficiente (CTR 1 > 12 ). La siguiente condición es por si queremos comprar el melón cuando ya lo tenemos:
IF ( CARR 3 AND VERB 16 AND NOUN 3 ) MESS 19 WAIT END
Y estas dos por si queremos comprar sin dinero o sin el dinero suficiente. Como en el puesto el resto de frutas serán más caras que los 50 dirá que no tenemos sufiente para comprarlos
IF ( ( NOT CARR 19 ) AND VERB 16 ) MESS 16 WAIT END
IF ( CARR 19 AND VERB 16 ) MESS 18 WAIT END
Añadamos también la compra del espejo y las de no tienes dinero a la ubicación 4:
4
IF ( CTR 1 > 35 AND CARR 19 AND VERB 16 AND NOUN 4 ) CTR 1 - 35 CSET 1 4 TO 4 GET 4 MESS 17 WAIT END
IF ( ( NOT CARR 19 ) AND VERB 16 ) MESS 19 WAIT END
IF ( CARR 19 AND VERB 16 ) MESS 18 WAIT END
Y para rematar esta entrega podemos añadir la opción comprar donde bebíamos el vino, añadiendo un paréntesis en la parte de verbo y quedando ( VERB 84 OR VERB 16 ), pudiendo entonces escribir o COMPRAR VINO o BEBER VINO, y la de VENDER (creando un nuevo verbo) para usarla en vez de DAR AMULETO en la ubicación 4.
Re: Creando una aventura conversacional con GAC
En hilos como este se echa de menos el del botón del Like del CPCWiki
Estupendo trabajo Miguel
Estupendo trabajo Miguel
Re: Creando una aventura conversacional con GAC
Hola!!!
Alguien puede volver a subir ese archivo?
Después de descargarlo,al abrirlo me pone un error como si el archivo estuviera dañado.
Gracias!
Alguien puede volver a subir ese archivo?
Después de descargarlo,al abrirlo me pone un error como si el archivo estuviera dañado.
Gracias!
Re: Creando una aventura conversacional con GAC
Sí parece que han corrompido... Este verano no he tenido tiempo de ponerme con esto, el verano que viene seguiremos con el tuto
He actualizado los archivos en el primer mensaje del hilo y he incluido un dsk con lo que llevamos de aventura.
He actualizado los archivos en el primer mensaje del hilo y he incluido un dsk con lo que llevamos de aventura.
- Megacorp_fan
- Lechoncillo
- Mensajes: 10
- Registrado: Jue 15 Dic , 2022 1:10 pm
Re: Creando una aventura conversacional con GAC
Subo este hilo porque el usuario CECPC (crack) me ha enviado una versión editable de las dos partes del Megacorp en formato ADV...
...y resulta que el GAC se me ha puesto tonto al editar los textos. Uno de los problemas es una incomodidad (gorda), pero el otro parece catastrófico a simple vista:
PROBLEMA 1) Cuando eliges editar algo en el menú, pulsas "O" para objetos o "M" para mensajes, etc., luego introduces el número de objeto/mensaje, etc. (empezando por el 0), y si te pide un número entre 1 y 9999, metes "1". Entonces ves ese objeto/mensaje/verbo... Hasta ahí bien. Ahora bien, ¿hay alguna forma "humana" de editarlo que no implique escribir el símbolo de flecha derecha o flecha izquierda cada vez que pulsas estas teclas para moverte por el texto? (Cada vez que cambio de carácter al de la derecha, se me escribe una flecha...).
EDIT: Vale, parece que esto solo es un problema en el WinAPE... ¡una cosa menos!
PROBLEMA 2) Cuando editas los textos desde el GAC, aunque el texto antiguo y el nuevo tengan los mismos caracteres o incluso aunque el nuevo texto tenga varios caracteres menos, el GAC te dice que ha bajado en 200-300 kb la memoria disponible. ¿Significa esto que es imposible editar un juego en ADV? ¿Cómo se podría liberar esa memoria?
...y resulta que el GAC se me ha puesto tonto al editar los textos. Uno de los problemas es una incomodidad (gorda), pero el otro parece catastrófico a simple vista:
PROBLEMA 1) Cuando eliges editar algo en el menú, pulsas "O" para objetos o "M" para mensajes, etc., luego introduces el número de objeto/mensaje, etc. (empezando por el 0), y si te pide un número entre 1 y 9999, metes "1". Entonces ves ese objeto/mensaje/verbo... Hasta ahí bien. Ahora bien, ¿hay alguna forma "humana" de editarlo que no implique escribir el símbolo de flecha derecha o flecha izquierda cada vez que pulsas estas teclas para moverte por el texto? (Cada vez que cambio de carácter al de la derecha, se me escribe una flecha...).
EDIT: Vale, parece que esto solo es un problema en el WinAPE... ¡una cosa menos!
PROBLEMA 2) Cuando editas los textos desde el GAC, aunque el texto antiguo y el nuevo tengan los mismos caracteres o incluso aunque el nuevo texto tenga varios caracteres menos, el GAC te dice que ha bajado en 200-300 kb la memoria disponible. ¿Significa esto que es imposible editar un juego en ADV? ¿Cómo se podría liberar esa memoria?
Re: Creando una aventura conversacional con GAC
La manera de crear la aventura que cito en el mensaje adjunto puede serte de ayuda. Creo que fue el propio CECPC quien contó que el GAC tenía pérdidas de memoria si había mucha edición. Creo que lo mejor es que metas la versión corregida directamente en una aventura en blanco.
Aquí tenemos acceso a los distintos parámetros de nuestra aventura. Para ir familiarizándonos, introduciremos los verbos que se usaron en la primera parte y luego iremos añadiendo o quitando según nos haga falta. La lista la he conseguido con la opción Verbs del menú de impresora P. En vez de picarlos a mano, con un emu que soporte entrada de texto (WinaPE, F5 o JavaCPC, F11) los pego y soluciono esto en un periquete
- Megacorp_fan
- Lechoncillo
- Mensajes: 10
- Registrado: Jue 15 Dic , 2022 1:10 pm
Re: Creando una aventura conversacional con GAC
¡Gracias, tío!
Pues nada, me voy mentalizando de "recrear" desde cero el Megacorp... ¡Pero por lo menos ahora tengo el código! (Y no tengo que hacer lo que han hecho miles de veces los programadores de videojuegos: mirar un juego en funcionamiento para hacer una conversión).
Estoy decidido a crear ambas partes del juego desde cero en inglés sin dibujos, ese proyecto no me lo quita nadie de la cabeza.
Ahora bien... ¿alguna sugerencia para añadir los gráficos después en base a los que ya están creados?
Pues nada, me voy mentalizando de "recrear" desde cero el Megacorp... ¡Pero por lo menos ahora tengo el código! (Y no tengo que hacer lo que han hecho miles de veces los programadores de videojuegos: mirar un juego en funcionamiento para hacer una conversión).
Estoy decidido a crear ambas partes del juego desde cero en inglés sin dibujos, ese proyecto no me lo quita nadie de la cabeza.
Ahora bien... ¿alguna sugerencia para añadir los gráficos después en base a los que ya están creados?
Re: Creando una aventura conversacional con GAC
Pues en este mensaje contaba yo algo sobre ello.
No recuerdo si el unGAC extraía los gráficos de la versión CPC. Si lo hace, hay mucho ganado; sino, habría que hacer la conversión. Tendría que buscar mi carpeta de trabajo de entonces a ver si hay algo de info recuperable porque aquel disco duro se corrompió.
No recuerdo si el unGAC extraía los gráficos de la versión CPC. Si lo hace, hay mucho ganado; sino, habría que hacer la conversión. Tendría que buscar mi carpeta de trabajo de entonces a ver si hay algo de info recuperable porque aquel disco duro se corrompió.
- Megacorp_fan
- Lechoncillo
- Mensajes: 10
- Registrado: Jue 15 Dic , 2022 1:10 pm
Re: Creando una aventura conversacional con GAC
Vale, ya estoy traduciendo el Megacorp al inglés. En unos días (o semanas si me da por traducir el manual con Photoshop) abriré hilo en CPCWiki con el proyecto terminado.
Este es el proceso para traducir cualquier juego programado con GAC:
1) LO MÁS DIFÍCIL: PASAR UN JUEGO COMERCIAL DE .BIN A .ADV
Esto me lo ha hecho el usuario CECPC, al cual he contactado por correo gracias a su perfil en este foro. El proceso sería este:
Para esto hay varios métodos: yo usé el Grackle para extraerlo, pero tuve que extraer los BIN con el CPCDiskXP (el Grackle no me funcionaba con snapshots SNA) y usar los comandos "grackle megacor2.bin dump" y "grackle megacor3.bin dump" (megacor1.bin es la pantalla de carga y hay que traducir cada parte por separado), lo cual me generó un montón de texto en la interfaz de línea de comandos de Windows 10 (a la que se accede con "cmd"). Después, tuve que sustituir algunos caracteres cambiados que extrañamente aparecían al final de algunas palabras (símbolos ASCII en lugar de letras o números). Otro procedimiento puede que más fácil sería ir directamente al paso 3 y ya con la aventura importada en el GAC, o bien imprimir los mensajes con la opción de "PRINTER" del GAC o bien ejecutar dos emuladores (uno con los mensajes sin editar y otro con los mensajes borrados para meter los nuevos y no agotar la memoria, ver paso 3).
3) LO FÁCIL: EDITAR EL ADV
Una vez tienes el ADV editable en el GAC, todo es sencillo y el único problema es la poca memoria, pero no tiene fallos de memoria: lo que pasa es que cuantas más palabras diferentes metas, menos memoria tienes. Y al cambiar de idioma, tienes los "un", "una" en español y los "a" y "an" en inglés, es decir, cada vez te acercas más a duplicar las palabras.
Para esto hay dos soluciones: 1) la más sencilla, que es borrar primero todos los mensajes del juego antes de volver a escribirlos para liberar muchísima memoria y 2) copiar el GAC a una cinta y ejecutarlo con el CPCE en modo 464 y con la opción "ROM_EXTRAS_DISABLE=1" desactivada en el INI, con lo cual tienes más del triple de memoria al no cargar el controlador de disco.
Este es el proceso para traducir cualquier juego programado con GAC:
1) LO MÁS DIFÍCIL: PASAR UN JUEGO COMERCIAL DE .BIN A .ADV
Esto me lo ha hecho el usuario CECPC, al cual he contactado por correo gracias a su perfil en este foro. El proceso sería este:
2) PASO OPCIONAL (O NECESARIO SI ELIGES LA OPCIÓN 2 EN EL PASO 3): VOLCAR LOS MENSAJES DEL JUEGO PARA TRADUCIRLOSEl cargador está desplazado en memoria. Si miras el BAS, y sigues el call, verás que el primer código ensamblador es el típico LD HL,xxx LD DE,xxx LD BC,xxx LDIR CALL
Eso es porque usa un cargador BASIC, y las direcciones del juego inferiores colisionan con el cargador.
Por tanto el final del juego incluye un pequeño código de ensamblador para relocalizarse antes de ejecutarse.
Lo cargué con WinAPE, y tras relocalizarse le puse un punto de ruptura. Luego usé el mecanismo de copiar la memoria del WinAPE (el fragmento desde 4000h hasta donde termina el LDIR) y, usando el CDTMASTER, ponerlo como contenido de un archivo y pasarlo a CDT
Para esto hay varios métodos: yo usé el Grackle para extraerlo, pero tuve que extraer los BIN con el CPCDiskXP (el Grackle no me funcionaba con snapshots SNA) y usar los comandos "grackle megacor2.bin dump" y "grackle megacor3.bin dump" (megacor1.bin es la pantalla de carga y hay que traducir cada parte por separado), lo cual me generó un montón de texto en la interfaz de línea de comandos de Windows 10 (a la que se accede con "cmd"). Después, tuve que sustituir algunos caracteres cambiados que extrañamente aparecían al final de algunas palabras (símbolos ASCII en lugar de letras o números). Otro procedimiento puede que más fácil sería ir directamente al paso 3 y ya con la aventura importada en el GAC, o bien imprimir los mensajes con la opción de "PRINTER" del GAC o bien ejecutar dos emuladores (uno con los mensajes sin editar y otro con los mensajes borrados para meter los nuevos y no agotar la memoria, ver paso 3).
3) LO FÁCIL: EDITAR EL ADV
Una vez tienes el ADV editable en el GAC, todo es sencillo y el único problema es la poca memoria, pero no tiene fallos de memoria: lo que pasa es que cuantas más palabras diferentes metas, menos memoria tienes. Y al cambiar de idioma, tienes los "un", "una" en español y los "a" y "an" en inglés, es decir, cada vez te acercas más a duplicar las palabras.
Para esto hay dos soluciones: 1) la más sencilla, que es borrar primero todos los mensajes del juego antes de volver a escribirlos para liberar muchísima memoria y 2) copiar el GAC a una cinta y ejecutarlo con el CPCE en modo 464 y con la opción "ROM_EXTRAS_DISABLE=1" desactivada en el INI, con lo cual tienes más del triple de memoria al no cargar el controlador de disco.
- Megacorp_fan
- Lechoncillo
- Mensajes: 10
- Registrado: Jue 15 Dic , 2022 1:10 pm
Re: Creando una aventura conversacional con GAC
Malas noticias: Sí es cierto que hay "fugas de memoria" al editar una aventura existente. No es posible traducir el Megacorp porque falta mucha memoria. Pensaba que arrancando en modo "puro 464" sin controlador de disco en el CPCE y eliminando todo el texto en español se ganaría la suficiente, pero parece que no es así.
Es más, ahora mismo no podemos descartar que programar la aventura desde cero (incluso redibujando los gráficos artesanalmente) solucione el problema porque es posible que Dinamic utilizara una versión diferente del GAC o tuviera acceso a más memoria.
Es más, ahora mismo no podemos descartar que programar la aventura desde cero (incluso redibujando los gráficos artesanalmente) solucione el problema porque es posible que Dinamic utilizara una versión diferente del GAC o tuviera acceso a más memoria.
- litos.net
- Loading, Please Wait...
- Mensajes: 5959
- Registrado: Mié 05 Oct , 2005 7:57 pm
- Ubicación: Madrid
- Contactar:
Re: Creando una aventura conversacional con GAC
Os recuerdo que Nicolás Lecuona utilizó una versión modificada del GAC para hacer Megacorp.
Si es CPC es en Color
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro
La Comunidad Española |