16
Desarrollo / Re:Mini proyecto escuela
« en: Abril 12, 2022, 01:06:43 »
Creo que después me meteré con temas de raster, que de vez en cuando hay un parpadeo en los sprites.
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.
Estas son las rutinas de conversión que utilizo:Ahora viene lo bueno!
1-De (x,y) a (columna,fila) en la VRAM->
Fila = 3 LSR(Y-$32)
Columna = 3 LSR(X-$18)
2-De (columna,fila) a dirección de memoria en VRAM
DIR MEM = VRAM BASE + 3ASL (Fila) + 5 ASL (Fila) + Columna
mmmm. Muy interesante. Me lo apunto para probar. Parece más óptimo que lo que yo hago. Ya te contaréSólo hay que tener en cuanta una cosa.....que los sprites no sean muy rápidos, ya que podrías atravesar alguna pared)....en mi caso de miniproyecto todos los avances son pixel a pixel, por lo que está el control asegurado
-Como era una operación relativamente compleja y multiplicada por cuatro (cuatro puntos de colisión) por cada ciclo de gameloop tengo un par de truquillos.
1-Precalculo y almaceno los valores de la conversión en dos vectores. Uno para X y otro para Y de manera que luego se pueda hacer una simple suma para la conversión
Sprite.CharPos=(P0Y[E0.Y])+P0X[E0.X];
2.-Y en vez de hacer 4 cálculos con 8 tablas (4 para x y 4 para Y) Avanzo o retrocedo uno o dos caracteres (Dependiendo del tamaño del sprite) en la memoria de pantalla para calcular los 4 puntos de colisión
Sprite.P0=*((unsigned char*)ADDR_MATERIAL_RAM+Sprite.CharPos);
Sprite.P1=*((unsigned char*)ADDR_MATERIAL_RAM+Sprite.CharPos+1);
Sprite.P2=*((unsigned char*)ADDR_MATERIAL_RAM+Sprite.CharPos-40);
Sprite.P3=*((unsigned char*)ADDR_MATERIAL_RAM+Sprite.CharPos-39);
En fin,que parece que ni Dios me libra de hacer la rutina de conversión de filas/columnas a direcciones de memoria de la VRAM
Pues no te sé decir, la verdad, ya que hasta ahora siempre he usado la detección de colisión por hardware entre sprites (para sprites-chars aún no lo he necesitado). Cuando hablas de CHKIN, PLOT, CHRIN y OPEN ¿te refieres a funciones del kernal ROM?