Y el CPC...?

Chit chat general. Habla con los MojonTwins y con los amigos de los MojonTwins. Reza a Vah-ka. Delinque. Aviso: está PROHIBIDO tirarse peos fuerte. Si les cortas el pescuezo, vale.

Moderador: na_th_an

Avatar de Usuario
na_th_an
Mensajes: 26413
Registrado: Vie, 09 Ene 2009, 12:18

Re: Y el CPC...?

Mensajepor na_th_an » Dom, 03 Nov 2013, 08:47

Pues lo primero que hay que hacer es enterarse un poco de como funciona CPCRSLIB... Si yo tuviese que ponerme ahora a portar un güego tendría que hacerlo, para refrescar, porque la verdad es que lo tengo super oxidado.

Luego hay que hacer de nuevo los gráficos. Las tres resoluciones del CPC son directamente compatibles, sobre todo trabajando con CPCRSLIB, que alinea (al menos alineaba, no sé si ahora) horizontalmente a nivel de bytes. Eso significa que el modo 0 la precisión es de dos pixels, en modo 1 de 4 y en modo 2 de 8, que son los pixels que entran en un byte en cada modo.

Elegimos un modo y pasamos los gráficos. En modo 0, los tiles y sprites deben ser de 8x16 en 16 colores, en modo 1 de 16x16 en 4 colores, y en modo 2 de 32x16 en 2 colores. Como he dicho, son intercambiables. Toma por ejemplo Sir Ababol, que está en modo 1. Cambiarlo a modo 0 implicaría sólamente cambiar los gráficos y una linea en el código, porque, como digo, los modos son 100% equivalentes. De hecho, podría hacerse el experimento rápido de buscar una paleta y directamente cambiar el modo en el código, que se verá medio decente. Dos píxels 00 01 se convertirían en el pixel 0001 del tirón.

Una vez terminados los gráficos se convierten usando diversos conversores. Tiles y Sprites, si mal no recuerdo, se pasaban por una utilidad de conversión de Augusto Ruiz. Las pantallas compeltas se pasaban por una utilidad francesa que creo que se llamana ConvImgCPC o algo así, y se comprimían con exomizer (porque viene integrado en CPCRSLIB).

Luego se pilla el código de la churrera y se pasa. En aquella época era relativamente sencillo porque, como digo, la Churrera 1.0 hacía muy pocas cosas y tenía pocos #defines de compilación selectiva. Ahora puede ser una pequeña pesadilla.

Pasar la Churrera consiste en:

1.- Cambiar la inicialización. Como dije, la CPCRSLIB de entonces tenía ciertos manejes que había que hacer a mano, como configurar un archivo en asm con el buffer de tiles adecuado al tamaño y posición de tu pantalla de juego. Esto creo que lo podéis aprovechar directamente de los juegos que hay pasados, porque la pantalla es la misma en todos los churreras.
2.- Cambiar las llamadas a splib2 por llamadas a CPCRSLIB: pintar tiles, mover sprites...
3.- Hacer el ajuste de coordenadas: como digo, CPCRSLIB funciona horizontalmente a nivel de bytes, por lo que hay que ajustar las coordenadas reales internas por coordenadas alineadas a byte antes de llamar a las funciones que mueven los sprites. Los güegos siguen funcionando internamente a 1/64 de pixel de precisión, pero externamente se alinea horizontalmente a byte y verticalmente a pixel.

Tiene su aquel, pero hecho el primero los demás se hacen rápido.

Al final el 99% del código es exactamente el mismo entre versiones, sólo cambia la parte de "interfaz".

El problema es que cuando empezamos el 4º juego de Churrera para Spectrum ya nos pusimos a engordar el motor más y más y... bueno.

UWOL2 tuvo más trabajo, no fue un port. Para ese decidimos hacerlo solo para CPC y aprovechar bien el ancho extra de la pantalla. Usamos las rutinas de la churrera como base, pero el motor es prácticamente específico para ese güego.
Como diría Rorshach: "Urm..."
Avatar de Usuario
D_Skywalk
Mensajes: 352
Registrado: Mar, 01 Oct 2013, 13:36

Re: Y el CPC...?

Mensajepor D_Skywalk » Dom, 03 Nov 2013, 12:47

La verdad es que visto el ababol, sólo veo que cambien inicialización, teclado y llamadas a la librería de CPC :)
Con añadir un define en la compilación en plan -DCPC ya tendríamos una forma sencilla de hacerla multiplataforma :D

Me iré poniendo esta semana a ratos a tocar este tema, me gustaría jugar con mi Justin en el CPC!
Por cierto, radastan, en el ababol de CPC tienes en gfx los gráficos del juego para que les eches un ojo...

Una duda que me asalta de la paleta del CPC en mode 1 ¿no puedo elegir el color que quiera?
El mode 2 se que es monocromo, pero el mode 1 no podemos elegir colores también? o sólo en mode 0...
Es que el mode 0 no me gusta, por aquello de los pixels rectangulares :barf:
Siempre buscaba juegos en mode 1 cuando iba a comprarlos al centro comercial ^^_

Un Saludo :muaka:
David Skywalker
Weblog: http://david.dantoine.org
Avatar de Usuario
na_th_an
Mensajes: 26413
Registrado: Vie, 09 Ene 2009, 12:18

Re: Y el CPC...?

Mensajepor na_th_an » Dom, 03 Nov 2013, 13:09

Se puede elegir cada uno de los cuatro colores de la paleta de 27 del CPC sin problemas. De hecho, en Sir Ababol se usa una paleta diferente para el piso de arriba y el de abajo. Este tipo de cosas puede dar más variedad al güego y es fácil de hacer.
Como diría Rorshach: "Urm..."
Avatar de Usuario
D_Skywalk
Mensajes: 352
Registrado: Mar, 01 Oct 2013, 13:36

Re: Y el CPC...?

Mensajepor D_Skywalk » Dom, 03 Nov 2013, 17:48

De hecho recuerdo en el pituka tener que emular hasta un cambio de "mode" en mitad de un scanline... eso lo hacían gryzor, Ghouls and Ghosts, Target Renegade...

Esas cosas en la librería de CPC se pueden hacer también? :boots:
David Skywalker
Weblog: http://david.dantoine.org
Avatar de Usuario
na_th_an
Mensajes: 26413
Registrado: Vie, 09 Ene 2009, 12:18

Re: Y el CPC...?

Mensajepor na_th_an » Dom, 03 Nov 2013, 18:37

Por la biblioteca no hay problema... El problema radica más bien en estar programando en C. Para cambiar de modo o de paleta en el scanline hay que hacerlo en el momento justo. No hay forma de programar una interrupción. Hay que calcular el tiempo a mano. Esto solo es posible si a) no se hace nada (se pierde el tiempo) con un bucle, lo que te deja poco tiempo de proceso, o b) si controlas a nivel de ciclo de reloj tus rutinas y haces cosas que duren siempre lo mismo y justo el tiempo que tarda el raster en alcanzar la posición adecuada para hacer el cambio.

O sea, que no :(
Como diría Rorshach: "Urm..."
Avatar de Usuario
artaburu
Mensajes: 15
Registrado: Mar, 16 Nov 2010, 11:38

Re: Y el CPC...?

Mensajepor artaburu » Dom, 15 Dic 2013, 12:28

Muy buenas.... navegando en un domingo medianamente ocioso me he encontrado con este temita y vengo a ofrecer toda la ayuda que necesitéis para entender la cpcrslib, ya que veo que hay cierto interés en hacer juegos a tutiplén.

Primero confirmar que las versiones nuevas de la libería son para SDCC que ha demostrado que genera un código mejor que z88dk. Quiero indicar también que las diferencias en las funciones de cpcrslib entre las dos versiones son mínimas así que se puede continuar desarrollando en C con el z88dk +cpcrslib+cpzwyzlib sin problemas.

Pues eso, me ofrezco a ayudar en lo que pueda también y cualquier cosa no hay más que comentar por los medios habituales: artaburu _at_ hotmail com que lo de los foros lo tengo un poco abandonado :|
Avatar de Usuario
D_Skywalk
Mensajes: 352
Registrado: Mar, 01 Oct 2013, 13:36

Re: Y el CPC...?

Mensajepor D_Skywalk » Dom, 15 Dic 2013, 13:15

Muy buenas artaburu! :)

Lo bueno de hacerlo por los foros es que aprendemos todos :?
Yo me apaño por el momento en compilar la churrera del Justin para el cpc, a ver si no se tuerce nada y me pongo la semana que viene ^^_

Un Saludo y estoy de acuerdo que el sdcc es muuuuuuucho mejor :wan:
David Skywalker
Weblog: http://david.dantoine.org
Avatar de Usuario
artaburu
Mensajes: 15
Registrado: Mar, 16 Nov 2010, 11:38

Re: Y el CPC...?

Mensajepor artaburu » Dom, 15 Dic 2013, 13:32

$this->bbcode_second_pass_quote('D_Skywalk', 'M')uy buenas artaburu! :)

Lo bueno de hacerlo por los foros es que aprendemos todos :?


Tienes más razón que un santo. No me importa postear en foro, el problema principal es que no se si me voy a enterar en un tiempo prudencial si se me pregunta algo.

Adelante con Justin medieval, a ver si lo compilas y lo vemos en CPC :D