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 - josepzin

Páginas: 1 ... 904 905 [906] 907 908 ... 912
13576
CC65 / Libreria Eightspriter para juegos C64
« en: Mayo 24, 2010, 14:54:58 »
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.

13577
CC65 / Libreria Eightspriter para juegos C64
« en: Mayo 24, 2010, 13:24:50 »
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...?

13578
CC65 / Libreria Eightspriter para juegos C64
« en: Mayo 24, 2010, 12:57:16 »
Cita de: "Dr.Fred"
Por curiosidad, ¿Cómo lo has hecho al final?


Tu funcion:
[code]void mueveSprite(int x, int y,int numSprite)
{
   int potencia=1, i=0, vc=4096*13, xm;

   //bucle para hallar la potencia (Sprite)
   for (i=1; i<=numSprite; i++)    
   {
      potencia *= 2;
   }

   if(numSprite==0)
      potencia=1;


   //Usamos el registro para la x mayor de 255
   if (x>=256)
   {
      //x=x-256;
      POKE(vc+16,PEEK(vc+16)|potencia);
   }
   if (x<256)
   {
      //POKE(vc+16,PEEK(vc+16));
      xm=255-potencia;
      POKE(vc+16,PEEK(vc+16)&xm);
   }

   POKE(vc+2*numSprite,x);
   POKE(vc+2*numSprite+1,y);
}
[/quote]


Y la misma optimizada:
[code]void MoveSprAbs(unsigned char sprite, int x, int y)
{
   unsigned short int offset, tmp;   
   unsigned char bit9 = 0x1;
   
      // Desplazar hasta el sprite a modificar
      bit9 = bit9 << sprite;
      
      tmp = PEEK(0xD010);
      if (x>256)
      {
         tmp = tmp | bit9;
      }
      else
      {
         bit9 = ~ bit9;
         tmp = tmp & bit9;
      }
      POKE(0xD010,  tmp);
         
      offset = sprite * 2; // FIXME eliminar esta multiplicacion
      POKE(0xD000 + offset, x);
      POKE(0xD000 + offset + 1, y);
}
[/quote]

La unica que me queda por optimizar es la multiplicacion del final, creo supongo con una tablita de datos se puede arreglar.
Los desplazamientos <<, OR y AND no tardan nada, en cambio las multiplicaciones tengo entendido que son "carisimas" para el 6502, que no tiene instrucciones para hacerlas.

13579
CC65 / Libreria Eightspriter para juegos C64
« en: Mayo 24, 2010, 11:52:51 »
Cita de: "Dr.Fred"
Puedes usar temporalmente la librería SLEEP en el bucle de juego, aunque seguro que no es lo más adecuado, te valdrá mientras sigues desarrollando.

He visto el sleep en tu código, voy a probarlo.


Cita de: "Dr.Fred"
Por curiosidad, ¿Cómo lo has hecho al final?

Sobre todo, reemplazando las multiplicaciones que hay en el MueveSprite.

En un rato copio el código asi ves las modificaciones. He intentado hacer el codigo lo mas parecido a como seria en Assembler, asi luego es mas facil convertirlo (y acelerarlo)

Por cierto, hice una wiki para ir anotando las funciones que llevo, ya voy a poner el enlace.

13580
CC65 / Libreria Eightspriter para juegos C64
« en: Mayo 23, 2010, 23:02:36 »
Wood: genial!!! Esto avanza :)

13581
General / Lego 64
« en: Mayo 23, 2010, 19:35:57 »
Joder.... y funciona????? :O

Increible!!!!!!!!!!!!!

13582
CC65 / Libreria Eightspriter para juegos C64
« en: Mayo 23, 2010, 18:21:30 »
He ido optimizando las librerias de mover sprites de Dr.Fred, para que no haga multiplicaciones ni nada que ocupe muchos ciclos, parece que dio resultado porque ahora todo se mueve demasiado rapido !!

?Hay alguna manera de hacer que todo vaya a una velocidad aceptable? Me suena a sincronizar con el barrido... puede ser?

13583
CC65 / Libreria Eightspriter para juegos C64
« en: Mayo 23, 2010, 16:45:25 »
Que bueno :)

13584
CC65 / Libreria Eightspriter para juegos C64
« en: Mayo 23, 2010, 09:48:46 »
Gracias por las explicaciones.

Sobre los tiles, segun recuerdo habias comentado que el Nanako usaba tiles en modo bitmap, verdad?

Supongo que a la hora de hacer una funcion que pinte tiles habria que distinguir entre tiles graficos y de caracter.
Algo en plan PutBitmapTile, PutCharTile....

13585
CC65 / Libreria Eightspriter para juegos C64
« en: Mayo 22, 2010, 20:40:55 »
Wood, podrias decirme que hacen tus funciones? Voy a poner lo que yo creo.

bitmap_mode: activar el modo grafico
tile_mode: que hace??
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
c64_CreateSpr: crear un sprite
c64_SprMc: que hace??
c64_SprOnOff: por el nombre, desactiva un sprite.
c64_OnOff: que hace??
c64_SprEnable: : tambien activa / desactiva un sprite??
c64_SprColor: color del sprite
c64_SprXexpand: expandir en X
c64_SprYexpand: expandir en Y
c64_SprPattern: que hace??
c64_SprMcm: que hace??
c64_MoveSpr: mover un sprite, La SP1 tiene funciones especificas para mover de forma absoluta, relativa, pixel. Como se comporta esta?

Estas funciones mas o menos sospecho lo que hacen, pero tengo que refrescar conocimientos... cuando lo haga preguntare.
void init_irq:
set_vicBank:
set_bitmapPos
set_charmemPos
set_screenPos

13586
General / Mega VIC 20
« en: Mayo 22, 2010, 12:03:08 »
Tendria que informarme un poco sobre el VIC-20, mis conocimientos llegan hasta el C16 y nada mas

13587
CC65 / Libreria Eightspriter para juegos C64
« en: Mayo 21, 2010, 22:02:45 »
Cita de: "Rulas_International"
Animo Jose!!!

Gracias! Lo mismo para tu juego!

13588
CC65 / Libreria Eightspriter para juegos C64
« en: Mayo 21, 2010, 15:43:38 »
Cita de: "Dr.Fred"
En Stdlib.h de c, de toda la vida está la función rand(), para que genere números aleatorios se suele usar como semilla los milisegundos del SO.

Gracias por el aviso, he encontrado la documentacion de esa libreria:
http://www.cc65.org/doc/funcref-38.html


Cita de: "Dr.Fred"

Un consejo... empezad ya a usar funciones, que ese main empieza a crecer y a hacer daño a los ojos y vamos a terminar con un spaghetti code del que no se va a empapar ni Cristo.

Cristo quizas no, pero Chuck Norris si!! :D :D
Igual tambien empezare a ordenar ese "ejemplo.c"

Cita de: "Dr.Fred"

Por lo demás... me parece más aparatoso tener que usar esas funciones que lo que ya estaba en mi ejemplo, que eran 2 lineas y un array para manejar el joystick, y no se si es peor el remedio que la enfermedad. Aunque quizá esto sea más portable.

El uso de tu ejemplo es indiscutiblemente mas optimizado, pero si te fijas, con estas funciones se puede usar exactamente igual ya que al fin y al cabo lo que devuelve la funcion es el valor de  $DC01/2, luego con ese valor se puede indexar una tabla y mover el sprite (como lo habias hecho tu), o hacer los IFs y meter mas acciones al mover el joystick.


Voy a ir poniendo un listado de las funciones (en el primer comentario de este hilo), y el estado de cada una, a medida que vaya definiendo cosas.

Aunque estoy "verde", de a poco ire agregando cosas, mientras tanto las sugerencias/ayudas seran siempre bienvenidas.

13589
CC65 / Mi biblioteca de funciones para Sprites en cc65. V.01
« en: Mayo 21, 2010, 12:51:12 »
Cita de: "Wood"
La versión de C64 de nanako y Ilogicall estan programadas 100% en código máquina.

Y por esto tienes todo mi respeto!!!

13590
CC65 / Mi biblioteca de funciones para Sprites en cc65. V.01
« en: Mayo 21, 2010, 12:49:01 »
Cita de: "Dr.Fred"
A mi me gusta este foro tal y como está y como ha estado... No veo razón para cambiarse y menos cuando dentro de 2 meses volverá a estar desierto. (Ahora solo me falta cantar aquello del barco de Chanquete)

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.

Que pesimista!! :D :D

Lo del foro mas que nada es para poder controlarlo completamente, quitar la publicidad y demas, pero no es un tema importante tampoco. Lo que seia interesante es crear una seccion privada.

Páginas: 1 ... 904 905 [906] 907 908 ... 912