Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Iapetus

Páginas: 1 ... 8 9 [10] 11
136
CC65 / Libreria Eightspriter para juegos C64
« en: Mayo 26, 2010, 19:16:14 »
Cita de: "josepzin"
Una pregunta sobre C, estoy obteniendo el mensaje "Error: Too many local variables"... ?Que significa? Que he llenado la memoria para almacenar variables???


Uff, nunca me ha sucedido eso... hmmm

137
CC65 / Libreria Eightspriter para juegos C64
« en: Mayo 24, 2010, 17:43:25 »
Cita de: "josepzin"
Cita de: "Wood"
Pues yo uso de 0 a 255. Parte de esas coordenadas estan bajo el borde. no necesito de coordenadas negativas para que salga de la area visible.

Ostrassss... tienes razon! He dado por supuesto que el 0,0 de las coordenadas de los sprites era en la zona superior izquierda de la zona visible!!!

Ahora mismo lo cambio a unsigned char

?Como se puede agregar codigo assembler dentro de codigo C??

He probado con estas
[code]__asm   
...
__endasm;



Pero el CC65 no las reconoce.[/quote]

Tienes que poner linea a linea asi: asm ("codigo");

Ejemplo:

asm ("lda #$03");
asm ("sta $d000");
.
.
.

138
CC65 / Libreria Eightspriter para juegos C64
« en: Mayo 24, 2010, 15:19:23 »
Cita de: "josepzin"
Cita de: "Wood"
Ah vale, no sabia que intecionabas usar numeros negativos.

Sería lo lógico ¿no? Si quiero que el sprite se vaya por la parte de arriba de la pantalla debería poder poner números negativos, lo mismo para el lateral izquierdo.


Pues yo uso de 0 a 255. Parte de esas coordenadas estan bajo el borde. no necesito de coordenadas negativas para que salga de la area visible.

139
CC65 / Libreria Eightspriter para juegos C64
« en: Mayo 24, 2010, 14:12:18 »
Cita de: "josepzin"
Cita de: "Wood"
josepzin,
La coordenada Y no passa de 255 por eso puedes usar unsigned char.


No pasa de 255, pero puede ser negativo... ¿no? Quizás se pueda definir como short int...?


Ah vale, no sabia que intecionabas usar numeros negativos.

140
CC65 / Libreria Eightspriter para juegos C64
« en: Mayo 24, 2010, 13:19:19 »
josepzin,

La coordenada Y no passa de 255 por eso puedes usar unsigned char.

141
CC65 / Libreria Eightspriter para juegos C64
« en: Mayo 23, 2010, 21:59:02 »
Depués pongo aqui código de los chars y tiles. He decidido cambiar algo.

142
CC65 / Libreria Eightspriter para juegos C64
« en: Mayo 23, 2010, 21:57:49 »
Aqui tenes el codigo del programa que ha producido la pantalla que he postado antes:
[code]
#include "c64lib1.3.h"


extern unsigned int pCharsLo, pCharsHi,pTiles16x16Lo,pTiles16x16Hi;


void main(void){

unsigned int n;
char i,j,c;

   c=0;

   set_border(BLACK);
   set_background(BLACK);
   bitmap_mode();
   set_vicBank(VIC_BANK1);
   set_bitmapPos(BITMAP_POS0);
   hires_mode();
   set_screenPos(SCREEN_POS8);
      

   setCharsPointersLo(&pCharsLo);
   setCharsPointersHi(&pCharsHi);
   setTiles16x16PointersLo(&pTiles16x16Lo);
   setTiles16x16PointersHi(&pTiles16x16Hi);


   for(n=0; n<1000;n++)
      (*(unsigned char*) (0x6000+n)) = 0;



   for(i=0; i<=38; i=i+2)
   {
      paintTileBMP16x16(i,0,1);   
      paintTileBMP16x16(i,22,1);
   }

   j=0;

   for(i=2; i<=20;i=i+2)
   {
      paintTileBMP16x16(j,i,0);   
      j=j+2;
   }
   
   for(i=26; i<=34; i=i+2)
   {
      paintTileBMP16x16(i,10,2);   
   }
   

   Loop:
   
   goto Loop;
   
}[/quote]

143
CC65 / Libreria Eightspriter para juegos C64
« en: Mayo 23, 2010, 21:43:13 »
De momento la Librería permite:

- Usar sprites;
- Usar modo texto en hires como en modo mixto
- Usar modo bitmap tanto en hires como multicolor
- Leer el Joystick
- Pintar caracteres en modo texto como bitmap
- Pintar tiles de 2x2 caracteres en ambos modos
- Obtener números aleatorios entre 0 e 255
- Elegir banco de memoria del VIC
- Elegir donde poner la pantalla en memoria(tanto texto como bitmap)
- Elegir donde poner screenram (atributos) en memoria en caso de bitmap.
- Elegir donde poner el set de caracteres en memoria
- definir los colores de border, paper, multicolor1, multicolor2, color del sprite, colores multicolor1 y 2 para sprites
-
Lo del sonido es fácil, mismo que sea para sfx, se usa un sid y llamase cada sonido como si fuera una música. Es lo que hago en nanako.

¿Mas alguna idea para funcciones?

Nota: la rutina de movimiento de sprites solo usa coordenadas absolutas. Alguno problema con esto?


[code]
void init_irq(void);
void bitmap_mode(void);
void tile_mode(void);
void hires_mode(void);
void multicolor_mode(void);
unsigned char randomize(void);
void le_joystic(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__ setCharsPointersLo(unsigned int *);
void __fastcall__ setCharsPointersHi(unsigned int *);
void __fastcall__ setTiles16x16PointersLo(unsigned int *);
void __fastcall__ setTiles16x16PointersHi(unsigned int *);
void __fastcall__ createSpr(struct sprite *);
void __fastcall__ sprMc(unsigned char mc1, unsigned char mc2);
void __fastcall__ sprOnOff (struct sprite *);
void __fastcall__ sprEnable (struct sprite *);
void __fastcall__ sprColor (struct sprite *);
void __fastcall__ sprXexpand (struct sprite *);
void __fastcall__ sprYexpand (struct sprite *);
void __fastcall__ sprPattern (struct sprite *);
void __fastcall__ sprMcm (struct sprite *);
void __fastcall__ moveSpr(struct sprite *spr);
void __fastcall__ paintTile(unsigned char color, unsigned char x, unsigned char y, unsigned char tileNum);
void __fastcall__ paintTile16x16(unsigned char y ,unsigned char x,unsigned char tileNum);
void __fastcall__ paintTileBMP(unsigned char color3, unsigned char color1and2,unsigned char x, unsigned char y, unsigned char charNum);
void __fastcall__ paintTileBMP16x16(unsigned char x, unsigned char y, unsigned char tileNum);[/quote]

144
CC65 / Libreria Eightspriter para juegos C64
« en: Mayo 23, 2010, 14:40:32 »
Esta mañana he programado la rutina para pintar tiles 16x16 en Bitmap:


145
CC65 / Libreria Eightspriter para juegos C64
« en: Mayo 22, 2010, 21:45:09 »
bitmap_mode: activar el modo grafico
tile_mode: que hace??
Eso es modo texto.

hires_mode: activar el modo hires
multicolor_mode: activa el modo multicolor
set_background: color del fondo de la pantalla
set_border: color del borde de la pantalla
set_multicolor1: asignar color 1 de multicolor
set_multicolor2: asignar color 1 de multicolor
c64_PrintTile: me imagino que sera para poner un tile
exacto coloca uno char en la pantalla, pero no pinta color.

c64_CreateSpr: crear un sprite
c64_SprMc: que hace??
selecciona multicolor 1 y 2 para sprites

c64_SprOnOff: por el nombre, desactiva un sprite.
es un switch que permite activar/desactivar el sprite (llamando alternadamente la funccion)
c64_OnOff: que hace??
esta ya no existe
c64_SprEnable: : tambien activa / desactiva un sprite??
solo activa el sprite
c64_SprColor: color del sprite
c64_SprXexpand: expandir en X
c64_SprYexpand: expandir en Y
c64_SprPattern: que hace??
Es el puntero a los datos gfx del sprite
c64_SprMcm: que hace??
activa el modo multicolor para el sprite en cuestion
c64_MoveSpr: mover un sprite, La SP1 tiene funciones especificas para mover de forma absoluta, relativa, pixel. Como se comporta esta?
Solo mueve de forma absoluta

hoy he creado mas una funccion que pinta un tile de 8x8 pixeles(un char) en modo bitmap, incluyendo los colores.

Aqui esta una pantalla usando esa funccion:


146
CC65 / Mi biblioteca de funciones para Sprites en cc65. V.01
« en: Mayo 21, 2010, 12:40:08 »
Cita de: "Carlos"
Cita de: "Dr.Fred"

En fin, que está muy bien tener ilusiones y pensar en proyectos, pero la casa se empieza a construir por los cimientos, y aquí salvo Carlos, estamos todos más verdes en programación que un pepino.


Wood sabe más que yo de esto, es el autor del Nanako: http://www.youtube.com/watch?v=cC5zW4Np3b4


Pero mi experiencia con el cc65 no es muy amplia, solo he programado esas rutinas para la libreria y un programilla de test para testearlas. La versión de C64 de nanako y Ilogicall estan programadas 100% en código máquina.

147
CC65 / Libreria Eightspriter para juegos C64
« en: Mayo 20, 2010, 21:11:51 »
Cita de: "josepzin"
A ver si de todo esto sale algo interesante :)

Wood: no tengo idea si ya tiene algo para numeros aleatorios... quizas Carlos lo sepa, que lleva mas tiempo.

Lo que sí necesitaria es un codigo para leer la/las tecla presionada, no termino de aclararme...


Tienes que poner en $dc00 linea de teclas del teclado que quieres averiguar después mira el valor en $dc01.

tienes que hacer esto 8 veces para averiguar todas las teclas. Por eso es que no se usa mucho el teclado en C64, come demasiado tiempo y ademas hay un problema en que no se puede leer ciertas teclas cuando precionadas al mismo tiempo.


Port B - $DC01
+-----+-----+-----+-----+-----+-----+-----+-----+
|Bit 7|Bit 6|Bit 5|Bit 4|Bit 3|Bit 2|Bit 1|Bit 0|
+-----+-----+-----+-----+-----+-----+-----+-----+-----+
|Bit 7| R/S |  Q  |  C= |SPACE|  2  | CTRL|A_LFT|  1  |
+-----+-----+-----+-----+-----+-----+-----+-----+-----+
|Bit 6|  /  | A_UP|  =  | S_R | HOME|  ;  |  *  |POUND|
+-----+-----+-----+-----+-----+-----+-----+-----+-----+
|Bit 5|  ,  |  @  |  :  |  .  |  -  |  L  |  P  |  +  |
+-----+-----+-----+-----+-----+-----+-----+-----+-----+
|Bit 4|  N  |  O  |  K  |  M  |  0  |  J  |  I  |  9  |
Port A +-----+-----+-----+-----+-----+-----+-----+-----+-----+
$DC00  |Bit 3|  V  |  U  |  H  |  B  |  8  |  G  |  Y  |  7  |
+-----+-----+-----+-----+-----+-----+-----+-----+-----+
|Bit 2|  X  |  T  |  F  |  C  |  6  |  D  |  R  |  5  |
+-----+-----+-----+-----+-----+-----+-----+-----+-----+
|Bit 1| S_L |  E  |  S  |  Z  |  4  |  A  |  W  |  3  |
+-----+-----+-----+-----+-----+-----+-----+-----+-----+
|Bit 0|C_U/D|  F5 |  F3 |  F1 |  F7 |C_L/R|  CR | DEL |
+-----+-----+-----+-----+-----+-----+-----+-----+-----+

C_L/R = Cursor left/right  ;  C_U/D = Cursor up/down
S_L = Shift, left  ;  S_R = Shift, right  ;  R/S = RUN/STOP
A_UP = Arrow up    ;  A_LFT = Arrow left

148
CC65 / Libreria Eightspriter para juegos C64
« en: Mayo 20, 2010, 20:29:03 »
Eso esta muy bien. Enhorabuena josepzin.

¿Falta alguna rutinilla para generar números aleatorios o ya existe en alguna libreria de cc65?

149
CC65 / Mi biblioteca de funciones para Sprites en cc65. V.01
« en: Mayo 20, 2010, 15:00:25 »
Cita de: "josepzin"
Wood, sobre los pasos a seguir...

Me imagino que tendras tus librerias hechas a tu gusto y optimizadas a tu manera de trabajar, y seguro tienes muchisimo mas nivel que yo!!

En cambio mi intencion seria crear una libreria basica para hacer juegos, algo como la Foursprites de los mojones, en nuestro caso seria Eightspriter :P Asi no entro en historias de multiplexar y demas para tener mas de 8 sprites.
Y al mismo tiempo que la libreria este basada en la SP1 de Spectrum, para poder portar algun juego mojono, que con 8 sprites creo que alcanzan bien.
Esta libreria tambien podria servir para los que quieran ir haciendo algun juego sin tantos requisitos.

El punto es que para mi hacer estas librerias tambien me serviria para retomar el tema C64, y tambien ir aprendiendo C.

Si tu puedes/quieres, podrias ver si se pueden optimizar las funciones que hacen lo basico. Y ademas ir opinando sobre lo que conviene o no hacer, que con tu experiencia seguro tienes cosas para aportar.

Esta es mi idea, pero si alguien quiere aportar algo o piensa que se puede hacer de otra manera, que lo diga :)


Estoy de acuerdo. :)

150
CC65 / Mi biblioteca de funciones para Sprites en cc65. V.01
« en: Mayo 20, 2010, 11:36:45 »
Cita de: "josepzin"
Ya casi tengo terminada la input.h (entrada desde joystick/teclado), que funciona de la MISMA manera que SP1. :)

Con respecto al foro, en principio Bo estaba de acuerdo, aunque estaba pendiente de ver si se podia mover toda la informacion de este foro.


¿Cómo hacemos entonces? ¿Terminas tu libreria à la SP1 y la pasas tambien a los Mojones(solo si necesitas te ayudo con algo)?

No tengo intención de usar estas librerias en mis proyectos para juegos pero puedo ayudar para que otros tengan esa herramienta.

Páginas: 1 ... 8 9 [10] 11