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

Páginas: 1 [2] 3 4 5
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.


17
Desarrollo / Re:Mini proyecto escuela
« en: Abril 12, 2022, 00:53:12 »
https://youtu.be/UfkPOYDMRdQ

Ya he conseguido hacer que las colisiones con fondo funcionen bien!
Desistí de la técnica de leer en el fichero lógico de la pantalla y ahora todo va ok después de unos cambios!  ;D

Ahora,antes de meterme en el siguiente fregao voy a ordenar y simplificar todo un poco....creo que si guardo las coordenadas de la esquina superior izquierda e inferior derecha del collider box (y varío las coordenadas con las rutinas de movimiento) voy a ganar bastante espacio y velocidad.


18
General / Re:Nuevos juegos publicados
« en: Abril 04, 2022, 22:32:27 »
Anda! Haplo, mismo nick que el Máster de los WarGames!

19
Desarrollo / Re:Mini proyecto escuela
« en: Abril 04, 2022, 20:06:33 »
Estas son las rutinas de conversión que utilizo:
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
Ahora viene lo bueno!

DIR MEM = VRAM BASE  + 3ASL(3LSR(Y-$32)) + 5ASL(3LSR(Y-$32)) + 3 LSR(X-$18) =
              = VRAM BASE  + [(Y-$32) AND $F8] + 2ASL[(Y-$32) AND $F8] + 3 LSR(X-$18)

La operación queda bastante simple...dos restas y tres rotaciones
 Sólo  hay que tener en cuenta las limitaciones a meter (por ejemplo, si queréis tener el Sprite siempre totalmente visible....o si queréis que atraviese los borde tipo Pacman, etc)
 Lo que está claro con esta fórmula es que
          Y>= $32
          X>= $18,
ya que una X = $17 está en el borde izquierdo de la pantalla...esto no es muy complicado comprobando BCS tras las restas

20
Desarrollo / Re:Mini proyecto escuela
« en: Abril 04, 2022, 20:03:06 »
Espero que esto sirva de algo.
Salu2!

Gracias @darro99!

Toda ayuda es poca

21
Desarrollo / Re:Mini proyecto escuela
« en: Abril 04, 2022, 17:12:25 »
Cuando revise bien mis rutinas y las simplifique un poco y las ordene, a ver si cuelgo los SEQ files.....por ahora me da un poco de verguenza enseñar el caos organizado que tengo montado  ;D ;D ;D

22
Desarrollo / Re:Mini proyecto escuela
« en: Abril 04, 2022, 17:07:36 »
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

23
Desarrollo / Re:Mini proyecto escuela
« en: Abril 04, 2022, 17:00:33 »
Estas son las rutinas de conversión que utilizo:
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

Si pasara directamente de (x,y) a DIR MEM VRAM, la operación es muy sencilla ya que hay que hacer (y-$32) y quitarle los bits 0,1,2 y sumarlo a eso rotado dos veces a la izquierda y luego sumarle la columna ( 3 LSR(x-$18))....la verdad es que las matemáticas binarias me molan un montón!

24
Desarrollo / Re:Mini proyecto escuela
« en: Abril 04, 2022, 16:54:11 »
-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);


Yo uso otro "truquillo"....no me hace falta ver si hay algún CHAR bajo la totalidad del collider, sólo lo que entra por cada cara del collider en la dirección del avance.
Es decir, si el collider es rectangular, sólo necesito saber lo que entra por el lado derecho cuando voy a la derecha, el de abajo cuando voy hacia abajo, etc....
Como esto no es una operación demasiado pesada, me guardo sólo las coordenadas de la esquina superior izquierda del collider y aplicando la anchura y la altura, no es complicado hacer la conversión para dos vértices.
Además de los dos vértices a calcular, sólo necesito tres datos (ya que al ser el collider rectangular comparten una coordenada).Calculando la fila/columna común y restando la fila/columna distinta, ya tengo unas coordenadas de INICIO de la VRAM a rastrear y luego voy en un loop en saltos de 8 (tantos saltos como el resultado de la resta de fila/columna distinta)...
...jajajajaa!!! Esto es más difícil de explicar que de ver

25
Desarrollo / Re:Mini proyecto escuela
« en: Abril 04, 2022, 15:16:41 »
Va mejorando esto eh!

El otro que toca estos temas es @Dozznar pero ahora está subido al carro de la fama asi que no creo que responda.

 ;D ;D ;D Gracias de nuevo @josepzin!

26
Desarrollo / Re:Mini proyecto escuela
« en: Abril 04, 2022, 12:53:12 »
Cita de: SingletonJohn
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

Bueno....puede ser despiste de la modificación tras copiar-pegar....a ver si tengo tiempo y lo reviso!

Diossss!Que vicio le estoy pillando al ensamblador! ;D ;)

27
Desarrollo / Re:Mini proyecto escuela
« en: Abril 04, 2022, 02:35:24 »
@darro99 seguro que puede responder.
Gracias josepzin! Le preguntaré a @darro99

28
Desarrollo / Re:Mini proyecto escuela
« en: Abril 04, 2022, 02:33:47 »
https://youtu.be/UbsD0pWY6L8

Implementados los colliders y funcionan....a medias
Despues de volverme loco todo el día intentando leer los caracteres de la pantalla tratada como un fichero lógico me di cuenta de que si hago esto,tengo que poner la dirección de memoria $288 (high byte de la VRAM) en $48, ya que aunque cambies la ubicación en el VIC,esto no cambia y al abrir el fichero de la pantalla lo que estaba haciendo era leerme l pantalla en $0400

Por lo demás va bien,salvo que el muro de la derecha lo atraviesas....creo que es porque en vez de detectar el char de la pared,CHRIN me está devolviendo un retorno de carro ;D....algo así debe estar pasando porque miro la memoria en $4800 y está l pared con el CHAR correcto.No le veo otra explicación,aunque soy todavía un novato en esto y lo más seguro es que se me esté pasando algo más ...
Me refuerzo en esta teoría por otro detalle....si pongo al macaco en la esquina inferior derecha,la pantalla hace un scroll extraño.Creo que al tratar la pantalla como un fichero lógico,sigue avanzando aunque no hay nada más.
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

29
Desarrollo / Re:Mini proyecto escuela
« en: Abril 04, 2022, 00:25:15 »
Yeah! Vaya pintaza!Nada menos que el Street Fighter. 2....

Yo por ahora no aspiro a tanto.

Ya....entiendo que no necesitas interacción con fondo porque es de visión lateral y solo hay un suelo....te haría falta interacción con fondo si hubiera plataformas a las que subir y si no recuerdo mal el SF2 no las tenía.
Pero si las hubiera,entiendo que no te quedaría otra que comprobar el fondo....o hay otra manera y me estoy complicando la vida?

Saludos

30
Desarrollo / Re:Mini proyecto escuela
« en: Abril 03, 2022, 21:22:23 »
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?

Si, son las funciones del Kernal.

No te hace falta ver colisiones contra fondo? Y como haces paredes,suelos,platformas,etc?

Páginas: 1 [2] 3 4 5