Karoshi MSX Community
05 de Julio de 2021, 11:27:35 am *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias:
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: 1 [2] 3 4
  Imprimir  
Autor Tema: Dudas varias sobre programación en MSX  (Leído 25105 veces)
0 Usuarios y 1 Visitante están viendo este tema.
Jon_Cortazar
Administrator
Karoshi Forum's God
********
Mensajes: 2777



WWW Email
« Respuesta #15 : 02 de Febrero de 2014, 10:57:22 am »

Bienvenido a la comunidad y muy buan pinta lo que nos has enseñado!

Y con respecto a lo que debas o no debas hacer, tira de tu propio instinto. Yo he hecho cosas sencillas y arriesgadas, y de todas sacas siempre lo positivo del aprendizaje: aunque yo también te recomiendo que utilices BIOS al principio para transferencias a VRAM, lectura de sticks, etc... ya tendrás tiempo de ir haciendo las cosas más hardcore (ojo, que en mi caso casi siempre tiro aún de BIOS para casi todo).

Un saludo y al hierro!!
En línea

Jon Cortázar Abraido (aka El Viejo Archivero)
RELEVO Videogames
[Dioniso: La cafeína está haciendo su trabajo; yo espero hacer el mío.]
[pitpan: Me sigue pareciendo más productivo jugar al SNAIL MAZE que seguir esta discusión.]
Metalbrain
Karoshi Fan
**
Mensajes: 92


Z80jutsushi


« Respuesta #16 : 09 de Febrero de 2014, 02:06:47 pm »

El MegaFlashRom SCC(60 EUROS) y el MegaFlashRom SCC+ SD(99 EUROS el mas barato). La diferencia de precio es considerable, pero supongo que poder meter las roms en una SD será infinitamente mas cómodo que tener que comprar una interface para poder conectar el cartucho al pc, no?

No sé si existe dicha interface, yo que lo que hago para manejar el MegaFlashRom SCC es grabar el contenido que quiero meterle junto con el programa de comunicación (opfx.com) y los archivos de MSXDOS en un diskette de 720kb desde el PC (sí, mi PC tiene diskettera, me aseguré de ello al renovarlo), y luego cargar el contenido usando dicho programa de comunicación desde un MSX2.

Por otra parte, creo que ahora mismo solo están disponibles las versiones SD.
En línea
Mr Matsusaka
Karoshi Newbie
*
Mensajes: 15


Email
« Respuesta #17 : 14 de Febrero de 2014, 11:34:12 pm »

Hola!

Gracias a vuestros consejos he avanzado un poco mas en la demo. Ahora tiene musica y enemigos (aunque muy primitivos)
Mirando otros foros he visto lo del megarom. Ahora creo que voy a poder meter todo el contenido que tenia pensado desde el principio!

http://www.youtube.com/watch?v=-TR_ShKubtw
En línea
mesiasmsx
Karoshi Hero
*****
Mensajes: 557



WWW Email
« Respuesta #18 : 16 de Febrero de 2014, 08:38:18 pm »

Bienvenido Mr Matsusaka!!

He visto el video y me he quedado muy gratamente sorprendido. Aqui hay usuarios con un muy buen nivel de programación y estaras en tu salsa.

Yo lo que si te puedo recomendar tambien encarecidamente que te hagas con la megaflash con SD . Sera infinitamente mas comodo para tí. Te olvidas de cintas,discos,wavs para los restos... Eso si con la de una ranura para la Micro Sd tienes mas que suficiente. La de los 512 KB no si si en MSX1 te puede servir para para ejecutar ROMS de mas tamaño.

Aqui un hilo del portal MRC donde podras resolver tus dudas al respecto.

http://www.msx.org/node/41958

Saludos y animos!
En línea
zilogZ80a
Karoshi Lover
***
Mensajes: 115



WWW Email
« Respuesta #19 : 17 de Febrero de 2014, 04:28:57 pm »

Siento llegar tan tarde al hilo.

Me encanta que con mis tutoriales te hayas animado a entrar a formar parte del grupo que se lanza a programar un juego en ensamblador.

El juego tiene una pinta muy buena, y se nota que ya has programado otros juegos en plataformas mas actuales.

Espero ver terminado tu proyecto y presentado a ser posible en esta edición de la MSXDEV14.

Un saludo.
En línea
Mr Matsusaka
Karoshi Newbie
*
Mensajes: 15


Email
« Respuesta #20 : 17 de Febrero de 2014, 08:02:03 pm »

Gracias por tu bienvenida mesiasmsx. Me temo que el cartucho lo tendré que comprar tarde o temprano. Habrá que ahorrar un poquito.

zilogZ80a, a ti te debo que me haya metido en esto, pues no recuerdo haber visto un tutorial de este tipo de computadoras antiguas tan bien explicado y directo. Es una pena que no lo continuases, se echa en falta algun capitulillo que explique los controles o el sonido en profundidad.

No se si me dará tiempo al MSXDEV14. Cuando es?
En línea
Mr Matsusaka
Karoshi Newbie
*
Mensajes: 15


Email
« Respuesta #21 : 06 de Abril de 2014, 11:56:30 am »

Buenas,
Vengo con unas preguntas mas.

Estoy a punto de implementar las balas enemigas.
El caso es que estoy pensando en añadir una colisión de sprites en medio de la pantalla para así poder reescribir la tabla de atributos de sprites y poder tener los 62 pixeles en pantalla en lugar de los 32 habituales.

Como el juego es de scroll vertical, no me queda mas remedio que crear un par de buffers para rellenarlos con atributos todos los frames con todos los sprites que necesite pintar. Cuando un elemento vaya a estar en la parte alta de la pantalla, lo incluiré en el buffer 1, y en el otro caso lo haré en el buffer 2.

Al final del ciclo volcaré los atributos del primer buffer en la VRAM, chequeo de la colisión, y volcado del segundo buffer.
Es esta aproximación correcta?

Por otra parte, he estado buscando tutoriales para detectar las colisiones de sprites, pero solo he encontrado código en BASIC o cosas que me cuesta mucho entenderlas. Alguien podría tener la amabilidad de explicarlo de tal modo que hasta un niño de 5 años entendería?

Por cierto, esta técnica no se vería arruinada si se producen otras colisiones de sprites anteriores a la que vamos a forzar en la mitad de la pantalla?

Gracias de antemano.

PD: Me compre el SDD+, y es una gozada verlo en el MSX autentico!
En línea
kabish
Karoshi Maniac
****
Mensajes: 470


caspaflims@hotmail.com
« Respuesta #22 : 06 de Abril de 2014, 09:59:41 pm »

Por otra parte, he estado buscando tutoriales para detectar las colisiones de sprites, pero solo he encontrado código en BASIC o cosas que me cuesta mucho entenderlas. Alguien podría tener la amabilidad de explicarlo de tal modo que hasta un niño de 5 años entendería?

Mira este tutorial, a ver que te parece.
http://web.archive.org/web/20131008220425/http://infinitemsx.com/index.php?option=com_content&view=article&id=27:collision-detection&catid=16:blog&Itemid=7

Por cierto, la pagina de infinite esta caida o desaparecida.  Roll Eyes
En línea
ARTRAG
Visitante
« Respuesta #23 : 11 de Abril de 2014, 07:44:28 am »

Buenas,
Vengo con unas preguntas mas.

Estoy a punto de implementar las balas enemigas.
El caso es que estoy pensando en añadir una colisión de sprites en medio de la pantalla para así poder reescribir la tabla de atributos de sprites y poder tener los 62 pixeles en pantalla en lugar de los 32 habituales.

Como el juego es de scroll vertical, no me queda mas remedio que crear un par de buffers para rellenarlos con atributos todos los frames con todos los sprites que necesite pintar. Cuando un elemento vaya a estar en la parte alta de la pantalla, lo incluiré en el buffer 1, y en el otro caso lo haré en el buffer 2.

Al final del ciclo volcaré los atributos del primer buffer en la VRAM, chequeo de la colisión, y volcado del segundo buffer.
Es esta aproximación correcta?

Por otra parte, he estado buscando tutoriales para detectar las colisiones de sprites, pero solo he encontrado código en BASIC o cosas que me cuesta mucho entenderlas. Alguien podría tener la amabilidad de explicarlo de tal modo que hasta un niño de 5 años entendería?

Por cierto, esta técnica no se vería arruinada si se producen otras colisiones de sprites anteriores a la que vamos a forzar en la mitad de la pantalla?

Gracias de antemano.

PD: Me compre el SDD+, y es una gozada verlo en el MSX autentico!


If I correctly understand, you are on the right way for screen split but there is a detail to make clear (sorry maybe it is only a problem of my comprehension of Spanish)
You need in VRAM two SATS, one for the upper half of the screen another for the lower part.
You can swap the two SATS by writing vdp register #5
E.g.  
set Vdp R#5 = 0x36  ;   SAT at 0x1b00 for upper sprites
set Vdp R#5 = 0x37  ;   SAT at 0x1b80 for lower sprites

To swap at a given raster line I suggest you poll not for collisions but for 5th sprite condition.
Just sacrifice the last 5 sprites from the upper SAT and set them transparent at Y = 128 (out of the active area of your game, eg. X = 255)
This means that the VDP will report in the status register 5th sprite condition for plane #31 (the last one)

At ISR the raster beam is at the very beginning of the lower border, so you can do something like this:

ISR:
set Vdp R#5 = 0x36  
do other stuff (eg. VRAM update for PNT and sprites, music ecc..): NB make sure this code always ends BEFORE the raster line is at Y = 128, or you will miss the split line

poll the status register and test for bit 6 (meaning 5th sprite condition) and for plane 31 (in the lower 5 bits)

1:  in  a,(0x99)
    and 0x5f
    cp  0x5F        ; plane 31 =0x1F
    jp  nz,1b

You need this to avoid other 5th sprite conditions that can happen in the upper part of the screen. If they happen, they will involve lower sprite planes, so you can skip them, as this polling loop will wait exactly for plane 31 being the 5th sprite on a line.

set Vdp R#5 = 0x37  (SAT at 0x1b80 for lower sprites)

do other things (if needed )
ret

I hope this helps
 Wink

About how to fill the two sats, you are on the right way: objects that need to appear in the upper half of the screen have to stay only in the first sat, objects that need to appear in the lower part of the screen have to stay only in the second sat

BUT

when an object moves across Y = 128 you have to put it in both SATs or it will partially disappear during the transition


« Última modificación: 12 de Abril de 2014, 02:46:57 pm por AR » En línea
Mr Matsusaka
Karoshi Newbie
*
Mensajes: 15


Email
« Respuesta #24 : 13 de Abril de 2014, 04:50:22 pm »

Hi Arturo!

Your answer is really apreciated. I also have a piece of code about this thread you sent me some weeks ago.
To be honest, I don't feel like I have the level to be able to implement this easily, not to mention to understand the code.
Anyway, if sometime in the near future I feel with strenght to go for it now I know where to look.

A couple of days after I posted my last message I decided to implement the second possibility you recomended me by mail, the flikering SAT reversal.
This technic is not as impresive than the other one, but definetely it's easier for me, and I have already implemeted on the code.

Thanks anyway for all your kindness!
En línea
Mr Matsusaka
Karoshi Newbie
*
Mensajes: 15


Email
« Respuesta #25 : 13 de Abril de 2014, 04:51:38 pm »

Por cierto, tengo una nueva demo con todos los avances hasta ahora

https://www.youtube.com/watch?v=PFHiyc_5Xrk
En línea
Dioniso
Visitante
« Respuesta #26 : 15 de Abril de 2014, 12:39:09 pm »

To swap at a given raster line I suggest you poll not for collisions but for 5th sprite condition.

Hi, AR. We had this discussion in 2006. I think the 5th SPRITE rule is not 100% MSX compatible: there some issues with some MSX1 (with 9928 and 9929).
En línea
ARTRAG
Visitante
« Respuesta #27 : 15 de Abril de 2014, 11:00:51 pm »

Sorry, I've forgotten our discussion (8 years ago...)
What was the issue ?
En línea
Dioniso
Visitante
« Respuesta #28 : 15 de Abril de 2014, 11:27:07 pm »

Sorry, I've forgotten our discussion (8 years ago...)
What was the issue ?

We, in this forum, without you.

If I remember well, not all the MSX1 will detect the 5th sprite. It works in every MSX2 or superior but not in all the MSX1. The 5th sprite detection didn't need to be implemented in all the MSX1. The were problems with this detection in MSX1 with the 9928 and 9929.
En línea
ARTRAG
Visitante
« Respuesta #29 : 16 de Abril de 2014, 07:43:18 am »

as the status register is well documented in official tms notes and all the above chips formally share the same specs are you telling that there are buggy chips in some msx machines ?
« Última modificación: 16 de Abril de 2014, 10:03:17 pm por AR » En línea
Páginas: 1 [2] 3 4
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.21 | SMF © 2013, Simple Machines XHTML 1.0 válido! CSS válido!