Karoshi MSX Community
05 de Julio de 2021, 07:32:06 pm *
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
  Imprimir  
Autor Tema: Tiles obstáculo  (Leído 12027 veces)
0 Usuarios y 1 Visitante están viendo este tema.
PAC
Karoshi Fan
**
Mensajes: 91


« : 08 de Septiembre de 2007, 08:03:16 am »

Aunque programar se me da bastante mal, hace bastante tiempo y ante mi propio asombro Huh
conseguí hacer un generador de mapas, lógicamente en KUN BASIC, usando tiles de 16x16. El
caso es que paso a paso iba consiguiendo avanzar más y más pero en mi cabeza siempre tenía la
misma pregunta. ¿Cómo iba a hacer que el sprite no atravesara las paredes? pues eso ¿Qué
técnica se usa para diferenciar los tiles que son obstáculo se los que no? El generador guarda
el mapa en la VRAM. Es algo a lo que le he dado mil vueltas y no encuentro solución. La verdad es que me gustaría terminarlo y usarlo algún día aunque quizás no sea lo suficientemente rápido en
un posible juego.  Grin

Gracias

En línea
nerlaska
Karoshi Excellent Member
******
Mensajes: 1102


Programador


WWW Email
« Respuesta #1 : 08 de Septiembre de 2007, 09:01:42 am »

Hombre .. no se lo que te dirán por aquí pero .. necesitas o bien:

1) SABES QUE TILES SON OBSTACULO: con lo que te permitiría tener los mapas clavados en VRAM y usar los ID de Tile para saberlo.
2) LA FORMA MAS HABITUAL: Esa información la guardas paralelamente con la VISUAL. Por ejemplo: EN otra matriz, como un flag, ...

Me hago entender?
En línea

MSX4EVER2GETHER
www.nerlaska.com
Sd-Snatcher
Karoshi Lover
***
Mensajes: 141


popolon@hotmail.com
Email
« Respuesta #2 : 08 de Septiembre de 2007, 10:39:25 pm »

No me parece muy practico guardar los mapas en VRAM, solo si la necesidad de RAM es muy acuciante, supongo que los guardas en una pagina que usas.

Lo mejor es que lo guardes en RAM es mas rapido acceder a ellos y se supone que vas a tener que acceder mucho si es el mapa de un juego.

De todas maneras el sistema es el mismo como te ha dicho Nerlaska, tendras una tabla o matriz con las IDS de las tiles y como van colocadas, puedes aprovecharla sabiendo que tipo de tile se puede atravesar o no, hay una manera muy rapida por ejemplo si das IDS de tile mayor de 127 a las que no se pueden atravesar solo tienes que mirar el primer bit para saber si se atraviesa o no.

Ejemplo:


128 128 128 128 128 128 128 128 128 128                      10000000 10000000 10000000 10000000 10000000 10000000 10000000 10000000

128 001 001 001 001 001 001 001 001 128                      10000000 00000001 00000001 00000001 00000001 00000001 00000001 10000000

128 001 001 001 001 001 001 001 001 128                      10000000 00000001 00000001 00000001 00000001 00000001 00000001 10000000

128 001 001 001 001 001 001 001 001 128                      10000000 00000001 00000001 00000001 00000001 00000001 00000001 10000000

128 001 001 001 001 001 001 001 001 128                      10000000 00000001 00000001 00000001 00000001 00000001 00000001 10000000

128 001 001 001 001 001 001 001 001 128                      10000000 00000001 00000001 00000001 00000001 00000001 00000001 10000000

128 128 128 128 002 128 128 128 128 128                      10000000 10000000 10000000 10000000 00000010 10000000 10000000 10000000

Aqui tienes una habitacion con una puerta. (tipo Zelda totalmente).

Para saber si una tile se atraviesa o no solo tienes que hacer un "and 128" si da 0 se puede atravesar si no, no.


Dependiendo de la cantidad de tile que uses puedes incluso ahorrar memoria metiendo en un byte mas de un tile usando los primeros 4 bits para uno y los 4 segundos para otro, vamos como los propios colores en la vram.


En línea
Jon_Cortazar
Administrator
Karoshi Forum's God
********
Mensajes: 2777



WWW Email
« Respuesta #3 : 09 de Septiembre de 2007, 06:09:41 pm »

Efectivamente, yo lo hago así. Es decir, tengo una matriz de datos en RAM que reflejan lo que realmente hay en VRAM. De esta forma puedes hacer chequeos rápidos.
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.]
PAC
Karoshi Fan
**
Mensajes: 91


« Respuesta #4 : 10 de Septiembre de 2007, 11:12:14 pm »

En principio los guardé en VRAM porque había visto algún juego que otro, véase No Name, que
almacenaba el mapeado ahí y supuse que era lo normal. Ya veo que en principo hay que saber
que tiles van a ser los obstáculos para luego agruparlos en las páginas de la VRAM de manera que sean identificables como, por ejemplo, me habéis comentado. Sólo una duda más, no tengo ni idea
de qué direcciones de la RAM son seguras a la hora de almacenar datos y no machacar el propio listado BASIC.

Ya os dije que programar nunca ha sido lo mío, se nota ¿no?. Aún así reconozco que poniéndose
acabas consiguiedo cosas que nunca esperabas. Gracias por la ayuda.
En línea
nerlaska
Karoshi Excellent Member
******
Mensajes: 1102


Programador


WWW Email
« Respuesta #5 : 11 de Septiembre de 2007, 04:29:41 am »

Eso lo mejor no será que te declares un ARRAY de BASIC y ya esta? quiero decir .. que uses las variables del BASIC para hacer esas cosas y asi no tienes que preocuparte por nada. De todos modos yo no soy experto en MSXBASIC, se programar en él pero igual la gente experta te dice que hay zonas de la RAM no usadas o que se pueden usar o yo que se .. el MSX esta lleno de TRUQUIS para programadores Smiley
En línea

MSX4EVER2GETHER
www.nerlaska.com
PAC
Karoshi Fan
**
Mensajes: 91


« Respuesta #6 : 14 de Septiembre de 2007, 09:28:41 am »

OK. Gracias
En línea
Jos'b
Karoshi Maniac
****
Mensajes: 262


« Respuesta #7 : 14 de Septiembre de 2007, 06:06:03 pm »

Hola Evpon,

En tu pregunta no dices si el programa es para MSX1 (supongo que si) o para MSX2, lo digo por el tema de haber usado KUN-BASIC, que normalmente está más preparado para la segunda generación.

En el primer caso, yo personalmente usaría la VRAM, ya que KUN-BASIC consume mucha RAM al generar código objeto junto con el código fuente cuando se está ejecutando el programa. Y por supuesto en VRAM también se puede usar el método propuesto por Sd-Snatcher, que es rápido de verificar.

Y si el programa es para MSX2, yo lo que estoy haciendo son mapas en páginas no activas de VRAM (seleccionando con SET PAGE), a cada title le asigno un color (p.e. en Screen 8 habría 256 colores, por tanto 256 titles difrentes) y luego compruebo simplemente con la instrucción POINT si es distinto de cero (por ejemplo) para saber si es un bloque atravesable  o no.

Para los modos de pantalla de menos colores, como Screen 5, se puede hacer lo mismo pero usando dos pixels, con lo que con la fórmula, " valor=16*point(x,y)+point(x+1,y) " obtienes la posibilidad de meter hasta 256 titles opacos. (o leyendo directamente con VPEEK, obtendrías directamente el valor).

Este metodo tiene la ventaja, de que por ejemplo en un ordenador de 128K de VRam, usando una sola página en Screen 5, te permite almacenar hasta 32K de información, más que el propio codigo fuente en BASIC.

Espero haber aportado otra idea que te pueda servir.
Un Saludo
En línea
nerlaska
Karoshi Excellent Member
******
Mensajes: 1102


Programador


WWW Email
« Respuesta #8 : 15 de Septiembre de 2007, 05:44:54 am »

Ya que estamos con el MSXBASIC ... el KUNBASIC consume muchos recursos? cuanto acelera la ejecución normal de un programa BASIC?
Y por otro lado ... además de las herramientas de NESTOR para poder editar MSXBASIC en archivos de Texto ... hay alguna otra?
Vamos, basicamente, para poder trabajar con MSXBASIC de la mejor forma posible y para poder sacarle el mayor partido, que cosas hay?
En línea

MSX4EVER2GETHER
www.nerlaska.com
kabish
Karoshi Maniac
****
Mensajes: 470


caspaflims@hotmail.com
« Respuesta #9 : 15 de Septiembre de 2007, 08:11:55 am »

En este foro se comento una serie de truquillos de programacion para acelerar lo mas posible los programas basic. Es lo unico q se me ocurre despues de lo q habeis comentado. Fue en un concurso de juegos en basic q se organizo.
Ya que estamos con el MSXBASIC ... el KUNBASIC consume muchos recursos? cuanto acelera la ejecución normal de un programa BASIC?
Y por otro lado ... además de las herramientas de NESTOR para poder editar MSXBASIC en archivos de Texto ... hay alguna otra?
Vamos, basicamente, para poder trabajar con MSXBASIC de la mejor forma posible y para poder sacarle el mayor partido, que cosas hay?

Yo no conozco nada mas.  Embarrassed
En línea
Jos'b
Karoshi Maniac
****
Mensajes: 262


« Respuesta #10 : 15 de Septiembre de 2007, 10:02:28 am »

Ya que estamos con el MSXBASIC ... el KUNBASIC consume muchos recursos? cuanto acelera la ejecución normal de un programa BASIC?
Yo te puedo hablar de lo que yo he podido comprobar.
En cuanto a recursos, consume toda la memoria que pueda, un programa hecho integramente en Kun Basic te deja tan solo 10k (aprox.) para el código fuente, frente a los 24k (aprox.) que te deja el MSX-BASIC original.
En cuanto a la velocidad, depende, en instrucciones graficas como son PUT SPRITE o COPY, son muy veloces, tanto que yo me he hecho un "cutre editor grafico para screen 8", y he tenido que ponerle un contador para mover el puntero del raton.
Otras como por ejemplo los FOR .. NEXT, son algo mas veloces que el MSX-BASIC, pero no mucho más. Hablo solo de mis impresiones.
Por ahí hay un juego el "Mr. HAWAII" que esta hecho integramente en KUN-BASIC, (no en NESTORBASIC), menos la música que esta hecha en CM, creo que es un ejemplo de lo que puede dar de si el lenguaje.
Y por otro lado ... además de las herramientas de NESTOR para poder editar MSXBASIC en archivos de Texto ... hay alguna otra?
Vamos, basicamente, para poder trabajar con MSXBASIC de la mejor forma posible y para poder sacarle el mayor partido, que cosas hay?
Yo no uso ninguna de estas herramientas, vamos que lo poco que hago lo hago directamente sobre el MSX, a la antigua usanza. Entre otras cosas porque la herramienta de NESTOR no es un editor de MSX-BASIC en si, sino un programa que pasa el código de un archivo de un editor de texto cualquiera a un archivo basic.

Por lo demás yo no conozco más herramientas para facilitar la programación en basic, si alguien conoce otras sería un detalle darlo a conocer.
En línea
nerlaska
Karoshi Excellent Member
******
Mensajes: 1102


Programador


WWW Email
« Respuesta #11 : 15 de Septiembre de 2007, 10:31:26 am »

Pues muchas gracias señores .. ha sido muy constructivo e interesante.
De todos modos además del "Mr.Hawaii" conocéis algún otro juego hecho en KunBasic en el que digas ... Ole la gracia morena de juego hecho en BASIC Smiley
Vamos .. algo que parezca increible o inusual . Sorprendente.

El MSXBASIC mola porque es un lenguaje de alto nivel y enciendes el MSX y ya lo tienes .. eso es lo molón. Lo que pasa es que tiene sus inconvenientes malignos .. sobre todo cuando estas acostumbrado a currar en C/C++ y cosas de esas.
En línea

MSX4EVER2GETHER
www.nerlaska.com
Imanok
Karoshi Hero
*****
Mensajes: 626


« Respuesta #12 : 15 de Septiembre de 2007, 12:01:11 pm »

Citar
Y si el programa es para MSX2, yo lo que estoy haciendo son mapas en páginas no activas de VRAM (seleccionando con SET PAGE), a cada title le asigno un color (p.e. en Screen 8 habría 256 colores, por tanto 256 titles difrentes) y luego compruebo simplemente con la instrucción POINT si es distinto de cero (por ejemplo) para saber si es un bloque atravesable  o no.
Yo, en mis juegos en Nestorbasic, también guardaba los mapas en VRAM y luego los consultaba con VPEEK (al principio con POINT, que es más lento que su padre).

Citar
Ya que estamos con el MSXBASIC ... el KUNBASIC consume muchos recursos? cuanto acelera la ejecución normal de un programa BASIC?
El principal problema del kunbasic es que los turbo-bloques tienen un tamaño muy limitado (unos 8-9Kb). Sobre los truquillos de aceleración, básicamente tratan de que el kunbasic trabaja mucho más rápido con múltiplos de 2, tanto en cálculos como en copy's.

Citar
Yo no uso ninguna de estas herramientas, vamos que lo poco que hago lo hago directamente sobre el MSX, a la antigua usanza. Entre otras cosas porque la herramienta de NESTOR no es un editor de MSX-BASIC en si, sino un programa que pasa el código de un archivo de un editor de texto cualquiera a un archivo basic.

Yo usaba el editor AKID en el propio MSX para editar, y luego ejecutaba un .BAT que me había hecho, que me compilaba, me iba al basic y me ejecutaba el programa. Luego, tenía redefinida una tecla de función en el programa, para volver automáticamente al MSX-DOS2 y volver a editar el fuente. Automatizando todo lo posible!  Wink
En línea
PAC
Karoshi Fan
**
Mensajes: 91


« Respuesta #13 : 16 de Septiembre de 2007, 08:37:49 pm »

En tu pregunta no dices si el programa es para MSX1 (supongo que si) o para MSX2, lo digo por el tema de haber usado KUN-BASIC, que normalmente está más preparado para la segunda generación.
En el primer caso, yo personalmente usaría la VRAM, ya que KUN-BASIC consume mucha RAM al generar código objeto junto con el código fuente cuando se está ejecutando el programa. Y por supuesto en VRAM también se puede usar el método propuesto por Sd-Snatcher, que es rápido de verificar.

Es para MSX2 SCREEN5. Osea que no iba mal encaminado guardando datos en VRAM. Smiley Lo que hago es asignar con VPOKE's un pixel a cada tile según su posición X, Y en la página donde se guardan. Diría que es bastante rápido al regenerar los mapas en un posible juego lo que todavía no sé es como Kai metía hasta scroll en ellos. Gracias por vuestra ayuda!
En línea
PAC
Karoshi Fan
**
Mensajes: 91


« Respuesta #14 : 17 de Septiembre de 2007, 09:52:15 am »

Pues muchas gracias señores .. ha sido muy constructivo e interesante.
De todos modos además del "Mr.Hawaii" conocéis algún otro juego hecho en KunBasic en el que digas ... Ole la gracia morena de juego hecho en BASIC Smiley
Vamos .. algo que parezca increible o inusual . Sorprendente.

Hombre para mi por ejemplo el No Name de Kai Magazine es bastante sorprendente ya que
incluso usa scroll pero también te recomiendo los juegos de Imanok, tiene un buen surtido. Smiley
En línea
Páginas: [1] 2
  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!