@Sogun @dirtymagic Pues fijate que a poco de tener el 64drive, hace años, se me dio por cargar todos los juegos al menos una vez y jugar un par de minutos, o algo asi, pero solo a una version de cada juego (excluyendo regiones y versiones de la ROM, con excepciones), y tengo cierto recuerdo de que en algun que otro juego, especialmente los "cutres" de de muchas terceras, en alguno vi efectos de banding bastante estridentes.
Por desgracia es un recuerdo vago y no podría decir que juego era, pero si, se notaba bastante. No tan brutal como en la comparativa esa del Unreal, pero si, podías ver claramente el limite, sin apenas suavizado.
Igual algun dia lo vuelvo a encontrar.
EMaDeLoC escribió:La única revista que seguía por entonces era la Nintendo Acción y he desempolvado un número, el de marzo del 99 creo, por curiosidad para ver qué material usaban y son todo capturas cutres por video compuesto que dan dolor de cabeza.
![potando [lapota]](/images/smilies/nuevos2/masvomitos.gif)
Para el 99, la consola ya estaba con medio pie en la tumba, muchas third parties ya habian abandonado el barco y ciertamente recuerdo que hubo un descenso en la calidad de las imagenes de las "previews" de juegos en desarrollo. Pero antes de eso, habia muchos ejemplos de lo que digo. Date un paseo por Unseen64 y rebusca juegos anteriores y ya verás como se ven imagenes muy nitidas. Sin ir mas lejos, GoldenEye, Perfect Dark, incluso los Zeldas, y otros tambien.
Yo insisto en que la mayoria de ellos salian de hardware N64, pero en esa etapa aplicaban menos filtrados y sacaban las imagenes directamente del framebuffer, en vez de capturar la salida analogica, ahorrandose la segunda capa de filtrado del VI y la degradacion analogica. Además de que, en muchos casos, tambien aprovechaban para renderizar a mayor resolucion que la que usaban en el producto final.
EMaDeLoC escribió:No sé si así el cálculo es correcto, la verdad, porque ver fracciones de byte por ciclo me chirría con mis conocimientos de informática. Además el RCP va a 2/3 de la velocidad del reloj y es con esa frecuencia con la que debería medirse la transferencia de datos.
La velocidad que interesa al programador es la de la CPU, que es donde se ejecuta el bucle principal de su programa, asi que lo que interesa a un programador es saber cuantos ciclos de CPU va a tardar en acabar la transferencia. Sabiendo que el RCP corre a una velocidad distinta a la CPU y que lo unico que la CPU puede saber del proceso de DMA es en que momento lo pidió y en que momento el RCP le dice "ya está", lo unico que puedes es hacer son muchas mediciones y luego aplicar tecnicas de estadistica, y con eso te va a salir decimales si o si xD. Fijate tambien en el grafico, que incluso haciendo varias peticiones de DMA de la misma longitud, no todas tardan lo mismo. Debe haber muchos factores coyunturales que influyen en el proceso. Pero a nivel estadistico, hay consistencia. En cada una de las longitudes hcs dice que le sale una media de 3.7, y concluye que hay una relacion lineal entre la longitud de la transferencia y el tiempo que tarda.
Supongo que se podría intentar hacer un programa en codigo del RSP que midiese la velocidad de transferencia de las distintas areas, al margen de la CPU, pero incluso si se pudiese hacer, no tendría mucha relevancia desde el punto de vista de la CPU.
Respecto a la velocidad final, yo me lavo las manos xD. Ni me hace ilusion ni me la deja de hacer que sean 165, 330, 660, o solo 5, la verdad. Son un hippie porrero y todo me resvala xDDDDDDDDD simplifica tioooo

EMaDeLoC escribió:Mi opinión es que los errores de sonido no son producidos por no poder cargar los samples del cartucho. Creo seguir oyendo los samples de fondo entre el ruido. Me parece que el problema es que al no recibir el RCP respuesta del cartucho se generan microparones en el procesado del RCP y al estar todos sus elementos conectados internamente por el mismo bus, todos lo sufren, pero como el sonido por su frecuencia (44khz) es el más sensible a estos microparones es donde se produce la distorsión más evidente. La imagen no se ve afectada porque al ser 30Hz como mucho, los microparones no se perciben entre frame y frame. Dicho de otro modo, si los microparones son de 1 milisegundo, no lo notaras en la imagen porque es tan solo 0'03fps, mientras que en el sonido te has comido 44 muestras de sonido.
Os puedo decir con confianza que la mayoria de juegos comerciales usan soundbanks (la terminologia oficial del SDK, funcionalmente equivalente a los SoundFonts habituales en PC) y estos son leidos por el RCP directamente desde la ROM, sin cargarlos en RAM. La rutina de reproduccion MIDI se carga en RAM, obviamente, y por lo que se ve, tambien las secuencias/partituras, pero el soundbank con los samples, normalmente codificados en vADPCM, se leen directamente desde el cartucho a medida que se reproduce la musica. Eso es lo habitual, y es algo que he visto confirmado por diferentes fuentes a lo largo de los años de leer cosillas tecnicas de la consola, incluida una charla por IRC con marshallh. Sumando eso y la experiencia practica de lo que se ve en mi video, tengo bastante confianza de que es como he dicho. Yo en este momento no tengo la documentacion del SDK a mano, pero, estoy bastante seguro de que tambien ahi se dice algo similar. Si lo encuentras, ponlo aqui tambien

Ahora un poco de especulacion: Viendo lo que está en el video, y otras pruebas que hice que no están incluidas ahi, creo que, si bien casi/todos los juegos leen los soundbanks directamente de la ROM, ahorrandose ocupar la RAM con ellos, no todos lo leen de la misma manera. En pruebas que hice fuera del video, por ejemplo una del Zelda OoT en la casa de link, despues de volver a meter el cartucho, algunos samples tardaron en volver a la normalidad. En el momento que introduje el cartucho, habia notas que estaban aun sonando dese antes de meterlo, y esas notas siguieron sonando corruptas hasta que se volvio a cargar el mismo sample para volverlo a tocar. Otros juegos, sin embargo, como el pilotwings, el sonido se arreglaba instantaneamente en el momento de meter el cartucho de nuevo, aunque estuviese esa nota a la mitad de su duracion.
Esto me sugiere que algunos juegos leen los samples a pelo desde el cartucho y otros hacen cache temporal durante la duracion de la nota. Pero casi/todos se abstienen de cargar el soundbank entero en RAM.
Respecto a tu teoria de los micro-parones, creo que estas totalmente desencaminado:
Lo que dices que te parecen los samples "entre el ruido" es simplemente ruido "tocado" al son de la partitura.
Aqui meto otra micro-especulacion <<< Si bien antes he dicho que el soundbank se queda en la ROM, esto es verdad a medias. El soundbank tiene a groso modo dos partes: Un "indice" donde estan las definiciones de los instrumentos, con su ADSR y los indices de donde están los samples, y despues el bloque de samples. La tabla/indice probablemente se cargue en RAM, pero los samples definitivamente se quean en la ROM y se leen desde ahi, con o sin el cacheado que mencioné antes. >>>
Te puedo asegurar que si escuchases el sonido en vivo no tendrías dudas de que no hay nada del sample original ahi. De hecho, incluso sin mi conector en T, puedes hacer algo similar con el truco de inclinar el cartucho, que basicamente consigue lo mismo, mantener las patillas del CIC conectadas pero cortar, al menos, buena parte de las pistas de datos, impidiendo, al menos en parte, la lectura de la ROM.
Tambien con respecto a lo del sonido te tengo que corregir, y ya te adelanto que en esto tambien tengo confirmacion de marshallh, que algo sabría habiendo hecho el UltraHDMI, que se conecta al bus digital de audio que sale del RCP.
La N64 no tiene un sample rate fijo. De hecho, solo algunos juegos de Konami usan un samplerate de 44.1Khz, e incluso este ni siquiera es exacto, si no que, en NTSC al menos, son 44095Hz.
Cada juego tiene un samplerate diferente, y ninguno es exacto con respecto a ningun estandard, especialmente gracias a las frecuencias de reloj que maneja la consola. Como ejercicio te sugiero bajarte los sets USF y reproducirlos con foobar2000 y su componente USF, y verás lo que te encuentras. Y si, los samplerates que salen de ahi son representativos de lo que hace la consola real. Si bien el bus de video de la consola tiene una frecuecnia fija, el de audio no, si no que el RCP puede sacar la frecuencia que quiera y el DAC de audio la acepta sin problemas, claro que la calidad de la conversion no es precisamente como para echar cohetes, con un folding brutal cuando el samplerate es bajo. Si puedes, prueba a grabar audio de la consola al PC, por analogico, y mira el resultado en un espectrometro, y verás el folding/mirroring que se produce donde acaba la banda real y se produce el reflejo en las frecuencias altas.
Otra cosa que me chirria con tu teoria de los microparones es que, si realmente sucediese eso, si afectaria a la imagen aunque el microparon sea inferior a un refresco de pantalla. Como minimo tendría que verse basura a mitad de la pantalla, pero yo diría que hasta se perdería la sincronizacion de la imagen, dado que es el RCP el que le señaliza en tiempo real al al DAC donde meter los pulsos de sincronizacion. Esto lo puedes ver en la documentacion del mod RGB analogico de Tim Worthington.
http://etim.net.au/n64rgb/ http://members.optusnet.com.au/eviltim/ ... 64rgb.htmlDado que una linea dura unos 64microsegundos, un microparon de esos que teorizas de 1 ms se cargaria varias lineas con sus respectivos pulsos de sincronizacion, y a saber si no cae tambien en un pulso vertical. En fin, que de ser cierto lo que teorizas, el video se iria a la mierda. Y daría igual si el RCP continuase donde lo dejó antes del paron o se adelantase al momento en que deberia estar si no hubiese parón. En ambos casos la sincronia y la estabilidad del bus de video se irían a tomar por saco xD.
BMBx64 escribió:El audio lo gestionan los juegos como puede ser con un hilo independiente que sigue leyendo de la fuente (aún cuando el programa principal ha recibido una excepción), si falla la fuente y no se comprueba el buffer al final debe llenarse de basura, si el tracker sigue activo es probable que las notas de la canción sigan funcionando y aplicándose sobre esa información.
Yo avogo tambien por la teoria de la "basura", No se si es que hay un buffer que se llene de ella o como pasa todo eso, pero no me cabe duda de que el juego trata de leer los samples de la ROM y obtiene basura. Mas allá de eso no se decir si esa basura se almacena en algun sitio despues de su obtencion inicial o se obtiene basura nueva con cada nota que el secuenciador intenta reproducir. Pero tiene un inconfundible aroma que me dice, sin lugar a dudas, que es basura

Flash-Original escribió:Lo del mipmapping (si no lo he mal leido) hace una superposicion de una textura encima de otra
Cuando un juego aplica mipmapping sobre un poligono, se derivan de la textura original versiones de resolucion reducida (la mitad en cada dimension, resultando en una version que ocupa una cuarta parte de la original). Cada una de estas versiones, incluida la original, se denominan mip-maps, y tienen que caber todas de una vez dentro de la cache de texturas o TMEM del RCP para que el proceso las pueda usar. En casos especiales, como el cuadro de mario 64, se pueden generar los mipmaps a partir de varias texturas diferentes (en este caso 2), pero una vez finalizada la conversion, se opera de la misma manera. Todo el set de mipmaps aplicado a un poligono tiene que caber en los 4K de la TMEM, incluido el indice de colores si usas texturas paletizadas.
---------------------------------------------------------------------------------------------------------------------------------------------
En otro orden de cosas, y sin animo de desviar la conversacion actual, ciertas cosas que se han tocado me han recordado mi carpetilla de "investigaciones" de N64, donde almaceno diversas chorradas y datos que he sacado a lo largo de los años.
Aun no me he leido el hilo entero, asi que es posible que duplique algunas cosas de las que se han comentado ya. Pido disculpas por adelantado.
Empiezo con un hilo al que contribuí hace un tiempo en el foro de retroactive.be, la empresa de marshallh (64drive / UltraHDMI), donde se hablaba de juegos PAL a resolucion nativa.
https://retroactive.be/forum/viewtopic.php?f=9&t=36Resumiendo: Casi todos los juegos NTSC renderizan a una resolucion determinada y mapean 1:1 la resolucion vertical del framebuffer a las lineas de video NTSC correspondientes. Como es sabido, muchos juegos PAL, siguiendo la tradicion, se limitan a compensar la mayor resolucion vertical de PAL añadiendo barras negras arriba y abajo. Otras conversiones PAL con video a pantalla completa renderizan a un framebuffer de identicas dimensiones a la version NTSC del juego, y leugo el VI se encarga de escalar la imagen a la resolucion PAL. Esto suele introducir aun mas borrosidad de la que es habitual en N64.
Sin embargo, no todos los juegos encajan en este patron. Empiezo con lo mas interesante:
Confirmo personalmente, en contra de la creencia popular, que SI hay conversiones PAL con resolucion nativa y mapeado 1:1, pero yo solo he encontrado 4 y dudo mucho que haya mas, aunque no he probado todos los juegos PAL para poder asegurarlo con certeza:
GoldenEye 007, Perfect Dark, Diddy Kong Racing, y, para rematar, el prototipo de 40 Winks.
Estos 4 juegos en sus versiones PAL (o en el caso de 40 Winks, la unica version disponible, que es PAL) funcionan a 288p y mapean las lineas del framebuffer a lineas de video PAL a una ratio de 1:1. O sea, que es resolucion 288p real, sin reescalado.
Tengo algunas "pruebas fotograficas" para quien le interese, pero no cubren todos los juegos (aunque la comunidad de modding de GE y PD tiene esos dos bien cubiertos), pero cualquiera con un poco de ojo puede comprobar, especialmente con ayuda de una capturadora y un poco de inspeccion manual haciendo zoom sin resampleado.
Ademas de estas joyitas con 288p real, lo cierto es que el asunto de las resoluciones en N64 es muy curioso y hay todo tipo de variaciones salpicadas por ahi.
En GoldenEye, por ejemplo, a pesar de que todo el juego va a 240p y 288p en NTSC y PAL respectivamente, La introduccion con los logos y la galeria de personajes, y el menu principal son renderizados a un framebuffer de mucha mayor resolucion que el juego.
El primer juego de Goemon, la aventura 3D, es un caso bastante curioso tambien. La version USA, obviamente, va a 240p, mapeado 1:1 sin reescalado. La version PAL es a pantalla completa reescalando la resolucion original NTSC... Pero la version original Japonesa hace algo que solo he visto en algun que otro juego mas. El framebuffer está pensado para 240p, pero el modo de video de salida es 480i, y con interpolacion, produciendo un aspecto borroso totalmente innecesario. Para mi es un misterio por qué decidieron hacer algo asi.
La prueba del delito:
Goemon videomode.zipOtro caso interesante es Turok 2.
Como es sabido, este juego es compatible con el Expansion Pak y con el se puede activar un modo de alta resolucion en modo 480i o 576i. Sin embargo, ni la version PAL ni la version NTSC renderizan a un framebuffer de esas resoluciones. AMBAS VERSIONES del juego renderizan por debajo de la resolucion nativa de video y hacen reescalado. Esto es habitual en los juegos que hacen alta resolucion en modo entrelazado, tanto en PAL como NTSC. Para verlo hacen falta capturas de video, para ver como, a pesar de que en esos modos el juego no hace antialiasing ninguno, las lineas no son limpias, y cada cierta periodicidad hay patrones moire sutiles
El modo "Lo-Rez" del juego, tanto en su version NTSC como PAL, hace mapeado 1:1 de lineas, y en PAL, añade las infames barras negras.
Capturas por S-Video para demostracion:
Turok2 videomode.zipDejo aqui unso archivos con imagenes, que creo que es mejor darlas asi para facilitar que cada uno las inspeccione con un editor o visualizador de imagenes y poder hacer zoom, activar y desactivar filtros, etc, que si los pongo en una galeria web, no es lo mismo.
El primero son dumps del framebuffer de N64 que hice con un action replay conectado al PC por puerto paralelo, en consola PAL y con juegos mayormente PAL, excepto el Extreme G 2, que es una copia NTSC que heredé con la coleccion de un amigo que ya no queria la consola y de alguna manera compro eso de segunda mano en un rastrillo o algo asi...
N64 framebuffer AR captures.7z(NOTA: Las capturas del FB de Perfect Dark son de la version del juego sin EP, porque para hacer capturas hay que arrancar el juego con el "code generator", y este ocupa todo el EP, asi que el juego arranca como si no lo tuvieras. Aunque la version completa del juego tiene resolucion 288p real, la version reducida no, y va con barras negras)
El segundo son unas imagenes beta de GoldenEye, distribuidas por RARE en su momento, y que a mi me tienen todo el aspecto de ser dumps de framebuffer dadas las muchas aristas sin AA que se pueden ver en muchas de las imagenes. Como explique antes, las aristas "interiores" (las que conectan "fisicamente" con otro triangulo) generalmente las puede "AAizar" el RDP sin problema, pero las externas (las que son por superposicion, sin conectar con otro triangulo en la escena), mayormente las aplica AA (o no) cuando el VI las procesa junto con las pistas en el bit extra de la RDRAM.
Ademas de eso, viendo que la resolucion del framebuffer del juego final NTSC no son 240p completos y en las imagenes estas si, tengo que sospechar que haya reescalado final, aunque tambien podría no ser asi.
Para redondear la jugada, estan en JPEG, pero eso ya no depende de mi.
mundorare_ge_beta_ssAñado tambien una lista que compilé hace un par de años de las frecuencias de sampleo de los USFs disponibles, para ilustrar lo que decia antes. Hay dos frecuencias muy populares, que intentan aproximar las frecuencias estandard 22.050 y 32.000, y otras dos que aproximan la frecuencia del CD, pero ninguna es exacta... y las demas son de su padre y de su madre.
Y repito la confirmacion que me dio marshallh en su momento: Estas frecuencias son las que corren por el bus que llega al DAC de audio, sin resampleo.
-----------------------------------------------------------------------------------------------------------------
Perdon por el post gigantesco xD
Por cierto
¿alguien mas recuerda los nucleos de ferrita originales de los mandos, que venian con un tubo termoretráctil en vez de carcasa de plastico?
https://i.stack.imgur.com/nB5w9.jpghttps://cdn.instructables.com/FNL/436D/ ... .LARGE.jpg¿Y que me decís de los jumper paks con etiqueta de papel en vez de inscripcion en relieve en el molde?
https://duckduckgo.com/?t=palemoon&q=n6 ... &ia=imageslas cutres primeras versiones, oh yeah.
---------------------------------
Una curiosidad mas surgida de buscar lo del jumper pak con etiqueta de papel.
aacabé viendo informacion sobre rdram > la pagina de wikipedia sobre Rambus dice algo sobre que la n64 usa una version temprana, llamada "base rdram" > se da un enlace a un post de 2004 en "the rare witch project" (ahora TheRWP) donde se explica que por arreglar rambus el problema de la latencia de rdram para limpiar su nombre, como resultado, las nuevas n64 que sacaron con lardram revisada ya no tenian la propiedad que permitia a Banjo Tooie dejar datos en RAM durante 10 segundos despues de apagar la consola (se quedó en 2 segundos) y que Banjo Kazooie los pudiese leer... lo que se conoce como la mitica funcion "stop'n'swop". Así que se supone que la funcion aun existe en BK, pero fue eliminada (o convertida en inaccesible) en BT porque Rare, Ninty o ambas no querian tener crios torpes metiendo y sacando cartuchos a toda velocidad y por la fuerza en la consola.
Yo nunca habia leido esta version tan detallada antes, asi que lo dejo aqui tambien.
https://www.therwp.com/forums/showthread.php?t=881