Bueno, como veo que el pesado de Free está más así de lo normal ;D vamos a ir anotando diversos fallos que veamos del modo7 para cuando Splinter tenga un ratillo allá por el 2024 :D
El caso del escalado de los sprites va a estar pendiente hasta que consiga hacer un port del Drajon Lol a DIV o a cualquier alternativa que funcione en los SO de los que dispongo.
De momento, el modo7 no funciona si se activa el SCALE_MODE con cualquier filtro. Cualquier otro gráfico sí va, pero nada que se relacione con el modo7.
Los gráficos exteriores no funcionan con cualquier tamaño, sé que tienen que tener unas medidas determinadas, creo que algo de potencias de 2, pero un mapa de 1024x128 no va. No es una pega demasiado gorda, pero si se usa un mapa de 64x64, por ejemplo, sólo dibuja el cuadrado entre (0,0) y (31,31).
La variable M7.FLAGS actúa sobre el render como si fuera un proceso, y no como debería (o al menos, según el manual de Osk):
1: repite el gráfico principal horizontalmente.
2: repite el gráfico principal verticalmente.
4: repite el gráfico exterior horizontalmente.
8: repite el gráfico exterior verticalmente.
Y no existen M7.FLAGS1 y M7.FLAGS2 que actúan como si fueran los flags de cada imagen (espejados, transparencias...). No, esto no lo tenía DIV, era una mejora de Fenix.
Aprovecho para comentar que si se usa el mapa 0 como mapa de origen con MAP_XPUTNP, el programa se cae con ventanazo de windows de error grave, en lugar de devolver el típico valor de error.
Si alguien tiene una versión de Bennu más moderna que la mía, que haga la prueba para confirmar todo esto oficialmente, que con el juego ando demasiado liado y le tengo que hacer un par de cosillas a Splinter mientras no pueda arreglar lo de los scroll cíclicos.
drumpi, el scale no va porque m7 solo trabaja en 8 bits, scale = 16bits.
lo de los fondos exteriores ni idea, tengo que revisarlo.
flags, solo hay 1 flag que afecta a la estructura global m7[], (nunca existio en fenix 2 flags para m7) los flags permitidos son:
B_VMIRROR
B_HMIRROR
B_TRANSLUCENT
te estas confundiendo con el scroll, que ese si tiene 2 flags.
es perfecto que trabaje sobre el render, para hacer lo que vos decis, que trabaje sobre los procesos deberian ser la flags normal que tiene el proceso (como cualquier proceso fuera del m7) y que segun veo en el codigo deberia funcionar.
si tienes un ejemplo de eso del map_xputnp lo pruebo.
no entendi el problema de los scroll ciclicos.
Pues me ha fastidiado a base de bien.
Necesitaba que el modo7 fuese cíclico para poder usar un gráfico de tamaño aceptable y reducir al máximo el uso de PUT, porque como tampoco funciona bien la repetición del gráfico exterior, tampoco puedo hacer uso del mismo para los niveles de tamaño estratosféricos que necesito.
Ahora sólo me quedan dos soluciones: recolocación, o uso y abuso de la memoria. La primera no me gusta, y la segunda puede ser una aberración (hablo de niveles de unos 6MB como poco).
el grafico solo deberia tener el tamaño del area que se repite.
me parece que deberia ser potencia de 2.
Te comento: un mapa puede tener tranquilamente del orden de 4096 pixels de ancho. Dado que del modo7 sólo se ven aproximadamente 1024, la idea era tener un mapa de 1024 pixels de ancho que se repitiese horizontalmente, de forma que por cada 16 pixels que avanzase, repintase 16 columnas de pixels del mapa con los que debería haber más allá de los 1024, de forma que, al llegar al final del mapa, y al repetirse, se vería la continuación del mapa de 4096 pixels.
Es un método que creo que ya comenté como posible mejora para el motor de tiles usando el scroll y un mapa del tamaño de la pantalla, que me ahorraría dibujar todos los pixels y mejorando el rendimiento (teóricamente).
Pero si no puedo hacer que el mapa se repita, mal vamos, no se puede usar, y repintar todo el mapa es imposible sin que caiga a 3FPS, así que o lo pinto todo de golpe (mapa gigante), o voy repintando a medida que avance y lo hago retroceder cuando esté a mitad del mapa.
la verdad que no te entiendo drumpi, los mapas se repiten a la perfeccion... puedes ver el ejemplo oficial de fenix, el antiquisimo que hizo cebrain, el suelo tiene un grafico chico que se repite eternamente, horizontal y vertical.
la verdad que estoy perdido, no logro entender a que te refieres.
Drumpi te sugiero que hagas unos dibujos chulos como hacia el desaparecido (de nuevo) DCElso, para explicarte mejor :)
pero soy el unico que no entiende?
Yo tampoco, queremos dibujos xD
Creo que quiere un scroll dinámico para un mapa.
Osea, que un mapa se repita ciclicamente como si fuese un Scroll, pero esto lo puedes hacer con un scroll mismo y actualizando el mapa usando en el scroll..
Lo que ya no se es si bennu puede actualizar los mapas de TOP y BACK una vez en marcha el scroll.
Quizá pueda servirte esto si bennu puede updatear en tiempo real los mapas para el scroll Drumpi.
Intentaré explicarme mejor:
Supongamos que tengo un nivel para un modo7 de este tamaño:
(http://forum.bennugd.org/index.php?action=dlattach;topic=2419.0;attach=2005)
Eso es enoooooooormente grande para tenerlo en memoria (imaginemos que unos 9MB). Sin embargo, si usamos un mapa de este tamaño:
(http://forum.bennugd.org/index.php?action=dlattach;topic=2419.0;attach=2007)
Sólo ocupa 1MB y el rendimiento es 2000 veces mejor. Lo suyo sería usar un mapa de ese tamaño. Si lo repetimos horizontalmente, se vería una cosa así:
(http://forum.bennugd.org/index.php?action=dlattach;topic=2419.0;attach=2009)
pero eso, de momento no nos importa.
Ahora supongamos que avanzamos en el mapa hasta la cruz azul, mientras dibujamos en el mapa lo que debería haber más allá del borde derecho del mapa en la parte izquierda:
(http://forum.bennugd.org/index.php?action=dlattach;topic=2419.0;attach=2011)
Cuando avancemos un monton de pixels, en el modo7 repetido se verá la siguiente imagen:
(http://forum.bennugd.org/index.php?action=dlattach;topic=2419.0;attach=2013)
Nosotros estaremos en la cruz azul, y veremos lo que hay dentro del cuadrado azul, sin embargo, en el mapa de 1MB lo que habrá dibujado y lo que se repite hasta el infinito es la imágen de dentro del cuadrado verde. De esta forma, desde el punto de vista del proceso cámara, el nivel parece que es infinito, cuando lo que realmente hacemos es modificar un pequeño mapa.
Espero que así quede un poco más claro.
joer eres profesor de alguna universidad? :P
veamos...
1) el rendimiento es el mismo, solo ocupa mas memoria.
2) que tiene que ver esto con modo7? modo 7 no dibuja scrolls, tiene piso, y cielo. (son texturas, no escenearios)
sigo sin entender.
1) No es el mismo rendimiento, porque para empezar ocupa menos memoria, y además, en el SBTime en WIZ hay una caida de rendimiento la primera vez que subes al piso más alto y tienes una panorámica de todo el nivel, que no sale cuando el suelo de dicho nivel tapa todo lo que hay delante.
2) La idea es montar un scroll sobre el mapa sin tener que repintar el mapa entero, sólo parte de él, como si fuera un buffer circular (es el mismo principio).
De todas formas, veo que la mejor manera de hacerlo de momento es usar un mapa el doble de largo, repintar, y recolocar al llegar al final. Al menos, hasta que se pueda hacer un scroll sobre un mapa o usar un mapa exterior de mayor tamaño que 32x32.
Quote from: l1nk3rn3l on June 18, 2011, 01:20:39 PM
joer eres profesor de alguna universidad? :P
¿Eso es bueno o malo? ^^U
el rendimiento es el mismo, la memoria no es rendimiento, es memoria.
que caiga el rendimiento cuando la vista se expande es logico, y no tiene que ver con el tamaño del mapa.
lo que no entiendo es si hablamos del modo7 o de scroll?
Siempre del modo7
Usar mapas de más de 1MB de RAM me parece una solución poco elegante y te limita el escenario, sobre todo, en aparatos limitados (lease consolas, netbooks, mp4...).
De todas maneras, acabo de cambiar el proceso de control y dibujado del modo7 y ahora ya no se nota el cambio de mapa, han habido que hacer unos cuantos cálculos más, pero con operaciones bitwise no se van a notar apenas. Ahora falta probarlo en la negrita, a ver si va.
Aun así, aun me queda mucho que hacer del juego, apenas llevaré la mitad.
Quote from: Drumpi on June 19, 2011, 11:58:47 AM
Siempre del modo7
Usar mapas de más de 1MB de RAM me parece una solución poco elegante y te limita el escenario, sobre todo, en aparatos limitados (lease consolas, netbooks, mp4...).
De todas maneras, acabo de cambiar el proceso de control y dibujado del modo7 y ahora ya no se nota el cambio de mapa, han habido que hacer unos cuantos cálculos más, pero con operaciones bitwise no se van a notar apenas. Ahora falta probarlo en la negrita, a ver si va.
Aun así, aun me queda mucho que hacer del juego, apenas llevaré la mitad.
tocaste el codigo C?
Splinter el efecto fog (niebla) esta implementado ?
Quote from: FreeYourMind on June 19, 2011, 03:31:51 PM
Splinter el efecto fog (niebla) esta implementado ?
jajajaja!
Lo pregunto en la total ignorancia ya ni me acuerdo de las features del modo 7 ;D
Pero responde
no, no hay niebla.
Quote from: SplinterGU on June 19, 2011, 03:29:25 PM
Quote from: Drumpi on June 19, 2011, 11:58:47 AM
Siempre del modo7
Usar mapas de más de 1MB de RAM me parece una solución poco elegante y te limita el escenario, sobre todo, en aparatos limitados (lease consolas, netbooks, mp4...).
De todas maneras, acabo de cambiar el proceso de control y dibujado del modo7 y ahora ya no se nota el cambio de mapa, han habido que hacer unos cuantos cálculos más, pero con operaciones bitwise no se van a notar apenas. Ahora falta probarlo en la negrita, a ver si va.
Aun así, aun me queda mucho que hacer del juego, apenas llevaré la mitad.
tocaste el codigo C?
Nop, me refiero a mi propio motor en código Bennu, ojalá pudiera meterle mano directamente al código C, pero no tengo ni idea de cómo va el modo7, porque mis conocimientos de 3D son prácticamente nulos.
Que pocas ganas de programar tengo hoy -.-U
no entiendo, tienes un modo7 que no usa el modo7 de bennugd?
por otro lado, y de esto dame detalles por mail no por publico, has visto lo que te mande por mail? lo has podido probar? yo carezco de hardware para hacerlo...
O yo me explico muy mal o no lo pillas:
Tengo un modo7, usando el modo7 de Bennu, pero me he creado una función que redibuja el mapa del modo7 de tal forma que, sumado a un proceso de control que reposiciona los objetos al pasar la mitad del mapa, dan la impresión de que es un escenario enoooorme, y sólo ocupa 1.5MB en memoria.
No, no he mirado el correo llevo un par de días que el poco rato que saco se lo dedico al juego del concurso, porque estoy que no llego. Tanto cambio de motor, y el programa para crear los niveles, que aun no lo he terminado, me ha llevado más de lo esperado, y me temo que al final sólo voy a sacar lo básico. Lástima, tenía planes para niveles especiales que...
Ah, bueno, en cuanto pueda, te lo miro, y lo que hablamos el fin de semana, también, que he visto un pequeño error en el código que te pasé.