› Foros › Retro y descatalogado › Consolas clásicas
Depth buffer copy. 'The Legend of Zelda - Majora's Mask' uses many frame buffer tricks. One trick is related to Lens Of Truth (LoT). When Lens is activated, it reveals hidden objects. How it works? First, most of visible objects rendered as usual. When everything is ready, game copies depth buffer to another place. New 16bit color buffer allocated and depth buffer is rendered to it as texture, using BgCopy command. Then game renders fullscreen textured rectangle with Lens texture. That rectangle has minimal depth, so whole depth buffer should be filled with MIN_Z. However, Lens circle has zero alpha, so all its pixels discarded by alpha compare and depth buffer inside the Lens remained intact. Now game renders "hidden" objects. These objects discarded by depth compare outside of the Lens circle. By the way, any "nice" texture for LoT in texture packs breaks LoT functionality: LoT circle must be fully transparent. When rendering of "hidden" objects completed, game copies depth buffer from temporal buffer back to depth buffer, that is restores its state on the moment before Lens texture drawn. Now rest of geometry, which should be above the Lens, can be rendered. For example, show flakes.
EMaDeLoC escribió:inglés castizo
Conker64 escribió:Luego tal y como lo plantean, es un efecto que consume bastante memoria disponible
Conker64 escribió:Yo llegué a pasarme más de la mitad del templo de la sombra sin la lente, pensaba que el juego estaba roto
When everything is ready, game copies depth buffer to another place.
No se si felicitarte por el logro o darte una colleja por melón xDD
When everything is ready, game copies depth buffer to another place. New 16bit color buffer allocated and depth buffer is rendered to it as texture, using BgCopy command.
-se copia el frame y el z buffer con bgcopy
First, most of visible objects rendered as usual. When everything is ready, game copies depth buffer to another place. New 16bit color buffer allocated
Conker64 escribió:Según el texto de gonetz lo que dices es correcto, pero:-se copia el frame y el z buffer con bgcopy
Dónde copias el frame y el z-buffer? Eso serían 4 buffers (2 originales, 2 copias), el mismo número que he planteado en el texto de arriba, si se copia el z-buffer pero se reutiliza el framebuffer podrían ser 3 en total, donde pienso que daría problemas es intentando el efecto sin copia de z.
Conker64 escribió:Lo cual me lleva de nuevo al mismo texto:First, most of visible objects rendered as usual. When everything is ready, game copies depth buffer to another place. New 16bit color buffer allocated
- Copia z-buffer a otro lado
- Nuevo buffer de color
Eso serían 2 buffers extra, yo sinceramente no le daría muchas vueltas
Conker64 escribió:Las superficies opacas y las semitransparentes no se pintan a la vez, primero van las opacas, imagina que tienes una antorcha de luz que ilumina una plataforma invisible que acabas de revelar con la lente, en ese caso la plataforma invisible se renderiza antes que la luz de la antorcha, es decir no solo van los copos, la lente y los corazones en pantalla, también pueden ir algunos objetos semitransparentes.
Conker64 escribió:Los copos creo que él da por hecho que se entiende que van después del efecto gráfico de la lente, pero no del circulo rojo.
Me había olvidado completamente de ese detalle. La verdad es que no volví a tocar el Zelda despues de pasarmelo y completar todas las aventuras secundarias (skulltullas, mascaras, etc), y hacer el bug de la duplicacion de la botella.Conker64 escribió:Se me olvidó comentar algo del efecto de la lente, no solo revela lo oculto, también deja ver a través de los objetos.
Conker64 escribió:Lo que ahora me pregunto es si llegan a convivir ambos efectos a la vez
Conker64 escribió:Zelda MM lo tengo pendiente de pasármelo en 3DS antes de trastear
EMaDeLoC escribió:Y ya que estamos con Ocarina of Time, un vídeo de un angloparlante que se acuerda de lo putas que lo pasamos los españoles con el librito de traducciónes:
radorn escribió:EMaDeLoC escribió:Y ya que estamos con Ocarina of Time, un vídeo de un angloparlante que se acuerda de lo putas que lo pasamos los españoles con el librito de traducciónes:
Ja. Los yankies están flipando en colores con la situacion, mientras que los latinoamericanos, italianos, nordicos y europeos del este, están cagandose en nosotros porque ellos no tenian ni libritos xD
Entre otro abanico de opiniones y comentarios.
Sogun escribió:He estado viendo varios vídeos a saltos porque la jugabilidad es muy lenta y aburrida y tampoco me apetece descubrirla. Como digo, hay cosas que me han sorprendido bastante.
¿Alguien llegó a jugarlo en su día? ¿Le sorprendió técnicamente? ¿Se puede hacer algo sin el micrófono aunque sólo sea pasear por algunos escenarios? ¿Es un juego que diera problemas al emularlo? ¿Puede que use su propio microcódigo?
Sogun escribió:En el blog también hay un enlace a un artículo de olivieryuyu, quien realizó la ingeniería inversa al microcódigo de los juegos Indiana Jones and the Infernal Machine y del Battle for Naboo explicando detalles de cómo funciona dicho microcódigo. Es muy técnico y no logro interpretarlo, quizás alguien tenga interés y pueda explicarlo para la plebe.
¿Hay un buffer de color? ¿No es lo mismo que el framebuffer? ¿Se refiere a que se cambia la posición del buffer (allocated, redirecciona)? ¿Porqué sería necesario copiarlo o redireccionarlo?
Initialize the Z-buffer by setting the color image to point to the Z-buffer (Set_Color_Image) and filling with initial depth value.
EMaDeLoC escribió:Yo siempre había entendido que cuando decian carga de texturas en streaming del Indiana Jones se referian a que gracias al rápido acceso a datos se iban cargando partes de los escenarios conforme se progresaba. No se si hablais de cargar la textura del cartucho directamente a la TMEM del RCP, supongo que no os referis a eso porque el cartucho con solo 5MB/s no podría aportar los datos a tiempo ni de coña.
EMaDeLoC escribió:Y en cuanto a los juegos de Hey you! Pikachu!, tengo ambas versiones con sus respectivas unidades regionales, así que si quereis que los pruebe un ratillo ahora que vienen fiestas decidmelo ya.
Sogun escribió:Según tengo entendido hay varias cosas que se cargan directamente desde el cartucho que ocurre en todos los juegos, como código del juego, animaciones y la música.
radorn escribió:En ciertos niveles originales del juego es posible provocar corrupcion de texturas, por ejemplo, con el truco de todas las armas. Vas ciclando todas ellas y disparandolas, para asegurar que lleguen a usarse todas sus texturas, y al final, algunas acaban corruptas porque excedes la asignacion. Al menos esa es la teoría. Seguramente @Sogun pueda decir algo mas al respecto.
radorn escribió:Yo siempre había entendido que precisamente una de las novedades de ese microcódigo es que permitía al RCP leer texturas directamente desde el cartucho durante el renderizado, ahorrando ancho de banda en el bus de la RDRAM, que ya tiene bastante que con el programa, el framebuffer y el z-buffer... Aunque creo que Indi tambien usa alternativas a Z. ¿Sería imposible que Indiana Jones use chips ROM algo mas rapidos de lo habitual?
radorn escribió:La verdad es que lo del Pikachu me interesa mas a nivel tecnico que jugable. Si se te da bien o has avanzado y tienes lugares interesantes que mostrar y tal, me interesa ver, dado que yo no puedo hacer nada de nada. Pero si es para ver como interactuas con Ratachu mi interes es bastante bajo.
Dado que tienes los VRU/VRS's americano y japonés, si que me gustaría ver las tripas y si hay alguna diferencia. ¿Has visto los videos que puse donde se ve el uso con el juego de trenes (parche inglés) y el Majora (en este caso creo que hay que hacer hacking)?
PI (Parallel Interface)
More on the Peripheral interface.
The PI is the 16-bit parallel bus connection the N64 Game Pak or the N64 Disk Drive. The average transfer rate for the Game Pak is about 5 megabytes per second. (The peak performance is about 50 megabytes per second.) The PI uses DMA transfer to move information from the Game Pak or N64 Disk Drive to RDRAM (data accesses the ROM through the PI registers).
radorn escribió:Respecto a lo de la velocidad del cartucho, justo ahora acabo de encontrarme esto:
http://en64.shoutwiki.com/wiki/N64_Memo ... terface.29PI (Parallel Interface)
More on the Peripheral interface.
The PI is the 16-bit parallel bus connection the N64 Game Pak or the N64 Disk Drive. The average transfer rate for the Game Pak is about 5 megabytes per second. (The peak performance is about 50 megabytes per second.) The PI uses DMA transfer to move information from the Game Pak or N64 Disk Drive to RDRAM (data accesses the ROM through the PI registers).
Podría no ser imposible despues de todo. Quizá los de Factor5 (segun he leido por ahí, muchos de los programadores provenían de la demoscene alemana, o sea, expertos en exprimir hardware, con trucos y optimizaciones super ajustadas) encontraron la manera de optimizar los accesos a ROM directos desde el RSP de manera que aprovechasen esos picos de velocidad. Despues de todo, las texturas se siguen cargando secuencialmente en la TMEM y mientras se dibuja con una se va preparando el siguiente acceso o algo así.
Con picos de 50MB/s bien temporizados, no veo tan imposible hacer streaming de texturas tal como cuenta la leyenda. Despues de todo, ¿cuánta carga de texturas únicas tiene cada pantallazo realmente?
radorn escribió:Supongo que el mando especial ese le añadirá cierto aliciente, y hasta puede enganchar. Y creo que se supone que son lineas reales de Japon no? Supongo que para un japonés que se monte en esas lineas puede tener gracia extra, y pasar por algun sitio y reconocer la estacion donde se suelen subir o incluso reconocer su casa si está al lado de las vias. Si los graficos fueran mejores (la verdad, no son para tirar cohetes, y la distancia de dibujado tampoco es apoteósica) hasta podría encontrarle aliciente a ver los paisajes.
radorn escribió:No se. que es lo proximo, taxi? Patrulla de policia? Barrendero/basurero? Vigilante nocturno? Telefonista? Secretaria? Pero nada de situaciones humoristicas y de fantasía, no, todo profesional.
EMaDeLoC escribió:Pues lo gracioso es que era un juego lo bastante popular como para tener su versión también en PSX y Saturn y hasta continuanción en Dreamcast, PS2, PS3 y otro montón de plataformas.
Los japos, que estan locos.
EMaDeLoC escribió:Aún suponiendo que se pudieran alcanzar esos 50MB/s, sigue siendo 10 veces más lento que la RAM. No tiene sentido retrasar la rasterización cargando una o dos texturas del cartucho en cada frame dibujado (cada vez que se dibuja un frame se cargan texturas de nuevo) por ahorrarte unos KB de memoria. Es mucho mas ventajoso la rapidez de carga y acceso de la RAM que esos KB que ocupan las texturas.
EMaDeLoC escribió:con 200KB de memoria tienes para 50 texturas (recordemos que estan limitadas a 4KB de tamaño máximo)
EMaDeLoC escribió:El mito de la compresión de texturas es eso, un mito, la compresión venía de [...]
EMaDeLoC escribió:¿Y por qué se anunciaba a bombo y platillo lo del streaming? Primero, creo que el concepto de carga en streaming que pensabas es equivocado. La idea es dividir los datos en dos partes: los que se van usar continuamente y los que se iran usando solo en determinadas circunstancias. Por poner un ejemplo, si en Indiana Jones el prota empieza en una selva, pasa por una cueva y llega a un templo, es un desperdicio de RAM ocuparla en texturas y modelos del templo cuando el personaje se encuentra aún en la selva. Lo ideal es ir cargando las partes necesarias para que se puedan manejar continuamente e ir borrando las que no se vayan a usar, ocupando su espacio con carga nueva.
radorn escribió:Bueno, es que no se trata de ahorrar memoria, si no de ahorrar ancho de banda en el bus de la RDRAM, que tiene que soportar trafico bidireccional para darle de comer a la CPU, renderizar el framebuffer y el Z-buffer (con re-lecturas por cobertura y comparacion y para combinacion de colores, si corresponde), el buffer de audio, la lectura del displaylist, etc... Teniendo en cuenta que uno de los cuellos de botella de la N64 es precisamente el acceso simultaneo a una RAM unificada que tiene una latencia considerable, desplazar, si es posible, alguna de esas colas de trafico a otro bus, parece algo deseable, ¿no crees?
No es cosa de RAM si no de BUS.
EMaDeLoC escribió:En cuanto a la diferencia entre cachear y streaming... Practicamente no hay,
EMaDeLoC escribió:en el mismo tiempo que se cargaría una textura de 4KB desde un cartucho a la velocidad pico de 50MB/s, se habrían cargado al menos 11 texturas desde la RAM.
EMaDeLoC escribió:en el tiempo que cargas una textura del cartucho habrías podido cargar y procesar varias texturas desde la RAM
EMaDeLoC escribió:Por mucha latencia que tenga la RAM de la N64, no se compensa cargando datos directamente desde el cartucho al RDP.
EMaDeLoC escribió:La parte de raycasting la haría la CPU por software, ya que el RCP no esta preparado para ello
radorn escribió:@gran_borja V64 normal o Jr?
Así que tu tendrás esto, me imagino
Y el Jr es así:
Tambien tiene compartimento para pilas, para poder llevar una rom cargada a ferias, como alternativa a los caros cartuchos flash oficiales.
Aquí he querido que todas las texturas tengan la máxima resolución posible que permita filtrado trilinear y conservando los colores originales. Las paredes, la puerta y la montaña usan texturas de 32x64 a 16 colores y el suelo de 32x32 a 256 colores al igual que las cajas de madera. Las cajas verdes son texturas espejadas de 32x64 a 16 en los cuatro ejemplos. La textura del remate de los muros también es 64x32 a 16 colores en todos los ejemplos.
Esta configuración se ve muy borrosa a pantalla completa pero a pantalla partida a 4 jugadores debería de disimularse mucho (siempre hablando del hardware original). Tampoco va a tener el horrible pixelizado en texturas del resto de ejemplos y no haría daño a los ojos.
Aquí he aumentado las resolución de las texturas al máximo y tratando de conservar el mayor número de colores de las texturas originales cargándome en el proceso el filtrado trilineal. Las paredes, la puerta y la montaña son texturas de 32x64 a 256 colores y sinceramente no se ve apenas mejora. El suelo de 64x64 a 16 colores al igual que las cajas de madera y se ven mucho mejor que en el ejemplo anterior a pesar de la reducción de colores (las texturas originales son de 256 colores).
Esta configuración sería la más fiel al juego original, pero en el hardware real las texturas se pixelan y desluce mucho (es lo que ocurre en el juego The World is not Enough) sobre todo en las cajas de madera. A pantalla partida a 4 jugadores resultaría muy molesto.
Aquí he aumentado la resolución de las texturas de las paredes, la puerta y la montaña a texturas en escala de grises de 64x128 y 16 tonos (son las texturas más grandes que caben en la caché). De este modo se gana mucha definición pero el resultado queda muy desmejorado comparado con el colorido del original de las paredes (he intentado que quedase lo mejor posible). La puerta sí experimenta una mejoría notoria.
Aquí he sustituido las texturas del suelo y las cajas de madera de 64x64 a color por texturas de 64x64 en escala de grises para recuperar en ellas el filtrado trilinear pero deslucen muchísimo comparado con lo que había antes y no hay forma de que los colores se parezcan. No se puede tener todo.
Hice pruebas con texturas espejadas de 32x64 a 16 colores para las cajas de madera al igual que en las verdes, pero no queda bien (queda fatal con la caja de los listones en cruz).
EDIT:
Prueba con texturas espejadas para ganar más definición en las texturas y mantener el filtrado trillineal:
Imágenes del juego real buscando el mismo punto de vista (capturas de youtube):
Es como en una entrevista al compositor/programador de audio de PilotWings 64, que comentaba cómo la demanda de profesionales capaces trabajar con musica secuenciada en videojuegos, tanto la composición como el diseño del sistema de sonido y creación de los instrumentos, se redujo enormemente cuando se pasó a la 6ª generación. Incluso en PS1 y Saturn, aún siendo de CD, había bastantes juegos con música secuenciada, pero eso se redujo drásticamente la siguiente generación, quedando el tema prácticamente limitado a GBA y DS, con muy pocos juegos con musica secuenciada en cualquier otra consola.
http://www.nintendolife.com/news/2013/0 ... soundtrackNL: Eventually you decided to leave the video game industry? Would you mind giving us a bit of insight into why you left?
Hess: I gave up video game music development after F-1 World Grand Prix. The market became flooded with clueless soundtrack artists, who underbid the projects just to get the contracts and had no concept of the total process of integration. The result was that game developers became frustrated with soundtrack artists, who thought all they had to do was write music and took no responsibility for the installation of their music into the games. With DVD audio hitting the market soon after, my unique talent set of musician/sound designer/integrator became less valuable and I didn't pursue any more game soundtracks.