Página 1 de 4

Bases para crear una libreria de sprites para C64

Publicado: Mar, 18 May 2010, 21:14
por josepzin
Siempre estoy metiendo cania con las versiones de los juegos para Commodore 64, obviamente siempre lo he hecho en broma.

Y tambien esta la intencion de ponerme yo a hacer algun desarrollo en C64, pero siempre se viene postergando esperando "el momento", a este paso el momento nunca llegara, asi que de a poco quiero ir haciendo cosas y quizas algun dia pueda hacer algo decente, pero lo importante es empezar.

Si algo bueno tiene Spectrum (si, algunas cosas buenas tiene :P) es que hay varias librerias graficas para controlar sprites (incluida la vuestra Fourspriter), y aunque suene increible en C64 no he visto por ningun sitio nada parecido... :(

Mi idea seria hacer unas mini librerias basicas para poder gestionar sprites, y pensando (o dejando volar la imaginacion) en el futuro, seria muy interesante si esta minilib tuviera alguna similitud con librerias como splib2 o lo que usais vosotros, para poder portar algun juego (ciertamente, esto esta en el mundo de la fantasia todavia).

Y aunque esto no fuera posible, siempre seria muy interesante contar con los consejos de "gente experimentada" para poder sentar las bases de esta libreria...

En el foro de Commodore Manía hay un poco de movimiento, asi que quizás de a poco y entre varios de alli podamos hacer algo.

Espero que se haya entendido mas o menos mi intencion. No tengo preguntas concretas todavia sobre nada, pero quizas seria interesante tener una primer impresion vuestra sobre esto que planteo.

PD: Me olvidaba presentarme!! Me llamo Troy Maclure y quizas me habeis visto en otras paginas web como CEZ, Retroinvaders, blogs... :P

Re: Bases para crear una libreria de sprites para C64

Publicado: Mié, 19 May 2010, 10:06
por na_th_an
En realidad lo que abriría la caja de pandora para el C64 sería una biblioteca que pudiese usarse directamente desde un compilador cruzado de C para C64.

Los requerimientos son terriblemente sencillos. Lo mismo que ofrecen splib2, cpcrslib (por software) o la msxlib de utopian (por hardware):

1.- Definir un tile (en 1 bpp o 2 bpp-ladrillar).
2.- Pintar un tile (carácter) en el grid que representa la pantalla. Esto cubre definir el(los) color(es) de dicha casilla, su modo (1bpp o 2bpp ladrillar) y qué tile contiene.
3.- Definir un sprite (tamaño, color y bitmap)
4.- Modificar un sprite (cambiar el bitmap -animación-, color, o la posición -movimiento-).
5.- Leer teclado/joystick.
6.- Hacer sonar el SID, aunque sea para reproducir SFX.

Con eso y un bizcocho, sería "fácil" (que no directo, NUNCA es directo) portar juegos. Y crearlos específicamente también, por supuesto.

Re: Bases para crear una libreria de sprites para C64

Publicado: Mié, 19 May 2010, 13:44
por josepzin
Gracias nathan. A medida que vayamos avanzando sobre el tema podre hacer preguntas mas concretas.

A que te refieres con 1 bpp o 2 bpp? (bpp)

Re: Bases para crear una libreria de sprites para C64

Publicado: Mié, 19 May 2010, 13:55
por Wood
$this->bbcode_second_pass_quote('na_th_an', 'E')n realidad lo que abriría la caja de pandora para el C64 sería una biblioteca que pudiese usarse directamente desde un compilador cruzado de C para C64.

Los requerimientos son terriblemente sencillos. Lo mismo que ofrecen splib2, cpcrslib (por software) o la msxlib de utopian (por hardware):

1.- Definir un tile (en 1 bpp o 2 bpp-ladrillar).
2.- Pintar un tile (carácter) en el grid que representa la pantalla. Esto cubre definir el(los) color(es) de dicha casilla, su modo (1bpp o 2bpp ladrillar) y qué tile contiene.
3.- Definir un sprite (tamaño, color y bitmap)
4.- Modificar un sprite (cambiar el bitmap -animación-, color, o la posición -movimiento-).
5.- Leer teclado/joystick.
6.- Hacer sonar el SID, aunque sea para reproducir SFX.

Con eso y un bizcocho, sería "fácil" (que no directo, NUNCA es directo) portar juegos. Y crearlos específicamente también, por supuesto.


Yo ya tengo casi todo eso hecho(desde 2008) como una libreria para CC65, lo que falta es leer el teclado/joystick e la parte del sonido. Leer el Joystick es muy sencillo. Pensé que seria necesario mas cosas por eso lo he dejado porque no he tenido mucho tiempo.

Re: Bases para crear una libreria de sprites para C64

Publicado: Mié, 19 May 2010, 13:56
por Wood
$this->bbcode_second_pass_quote('josepzin', 'G')racias nathan. A medida que vayamos avanzando sobre el tema podre hacer preguntas mas concretas.

A que te refieres con 1 bpp o 2 bpp? (bpp)


1 bit per pixel = hires

2 bits per pixel = multicolor (pixel ladrillos)

Re: Bases para crear una libreria de sprites para C64

Publicado: Mié, 19 May 2010, 14:03
por josepzin
Nos vamos cruzando en los fotos jeje

Con tu experiencia con el Nanako seguro que esas librerias estan muy bien.

Re: Bases para crear una libreria de sprites para C64

Publicado: Mié, 19 May 2010, 15:23
por na_th_an
Pues sí. Y aunque no tenga soporte de sonido aún, bien podrían estar para ir empezando a hacer cosas. ¿Dices que son directamente usables desde cc65? ¿Podrías poner unas sencillas instrucciones de cómo se compilaría y ejecutaría en el emulador un programa sencillo?

Re: Bases para crear una libreria de sprites para C64

Publicado: Mié, 19 May 2010, 15:35
por Wood
Yo tengo un programilla de ejemplo del uso de la libreria.

Dejame añadir un par de cosas a la libreria y ya te daré mas información.
He visto que tengo la rutina de tiles pero solo para modo tile. Necesito programar una para modo bitmap.

las funcciones que hay por ahora son

$this->bbcode_second_pass_code('', 'void init_irq(void);
void bitmap_mode(void);
void tile_mode(void);
void hires_mode(void);
void multicolor_mode(void);
void __fastcall__ set_vicBank(unsigned char bank);
void __fastcall__ set_bitmapPos(unsigned char pos);
void __fastcall__ set_charmemPos(unsigned char pos);
void __fastcall__ set_screenPos(unsigned char pos);
void __fastcall__ set_background(unsigned char cor);
void __fastcall__ set_border(unsigned char cor);
void __fastcall__ set_multicolor1(unsigned char cor);
void __fastcall__ set_multicolor2(unsigned char cor);
void __fastcall__ c64_PrintTile(unsigned char x, unsigned char y, unsigned char TileNum);
void __fastcall__ c64_CreateSpr(struct sprite *);
void __fastcall__ c64_SprMc(unsigned char mc1, unsigned char mc2);
void __fastcall__ c64_SprOnOff (struct sprite *);
void __fastcall__ c64_OnOff (struct sprite *);
void c64_SprEnable (struct sprite *);
void c64_SprColor (struct sprite *);
void c64_SprXexpand (struct sprite *);
void c64_SprYexpand (struct sprite *);
void c64_SprPattern (struct sprite *);
void c64_SprMcm (struct sprite *);
void __fastcall__ c64_MoveSpr(struct sprite *spr);')

Re: Bases para crear una libreria de sprites para C64

Publicado: Mié, 19 May 2010, 15:53
por na_th_an
Genial :) Con eso ya se puede ir haciendo un Phantomas para la panera :D :) ;)

Re: Bases para crear una libreria de sprites para C64

Publicado: Mié, 19 May 2010, 16:10
por angel
Genial chicos! ;-)