› Foros › Retro y descatalogado › Consolas clásicas
magno escribió:wwwendigo escribió:Pues entonces NO seamos canelos (es broma ) y léete las especificaciones del Altera usado y párate en la parte que habla sobre IP Blocks de uso genérico (donde sí, se tiran de varias bloques genéricos, menciona explícitamente multiplicadores y otros para funciones de DSP, y no, yo no recordaba los FPGA siendo así de "completos" ni con tanto extra), que es una de las cosas que más te venden en ese FPGA y que no hace referencia precisamente al slice que es la parte básica que entendemos como FPGA (y que lo primero que miré es cuantos elementos básicos o celdas que decía poder simular, y no parecen suficientes). Evidentemente quieren que te ahorres implementar bloques como los mencionados en el slice, cuanto menos. Y me da que los necesitarían para este caso.
¿Quieres que me vuelva a leer las especificaciones de la Cyclone V otra vez? No me esclavices que ya lo hago todos los días en el curro
Es difícil que puedas seguir el ritmo de evolución de las FPGAs si no trabajas con ellas porque van a un ritmo espectacular. Yo estoy puesto al día con las UltraScale de Xilinx, pero no son la última generación tampoco, esto da vértigo.
Y no confundas lo de los IPs... Xilinx, Altera y Lattice, los fabricantes de FPGAs principales, siempre te proporcionan IPs o cores para que aceleres parte de tu diseño: FIFOs, BRAM, multiplicadores, DPLLs, filtros FIR, FFT/IFFT, etc... Y algunos de esos cores son de DMAs, por ejemplo. Pero esos DMAs no tienen nada que ver con los de una Super Nintendo, ni ninguno de los cores que tengan a su disposición con las applicaciones de Altera tienen que ver. Simplemente son atajos para hacer funciones más básicas.
wwwendigo escribió:Y sí, le llamo "emulador" porque no está intentando simular LOS CIRCUITOS de los chips, que es lo que te estoy diciendo y ellos afirman que están recreando al 100% los chips originaes, SIMULA su comportamiento, esto es, ellos se han creado un circuito propio y distinto que recrea lo que ellos piensan que es el bloque de X chip que hace. Que es EXACTAMENTE lo mismo que hacen los emuladores, sólo que en vez de implementarlo en un circuito lógico lo implementan en código soft.
Que ya no hacen los FPGA como se recuerdan (y sí, lo de los bloques de IPs extra para "ayudar" en el FPGA no es algo que yo me esperara de mis recuerdos de cómo funcionaban los FPGAs, que yo recordaba como slices puros y duros, pero así están las cosas hoy en día, por lo que parece, lo que tengo claro es que sin tener las IPs originales no puedes recrear fidedignamente su funcionamiento, se pongan como se pongan).
Puedes llamarle "emulación", pero no lo es; nadie en el mundo profesional usa ese término para referirse a una "implementación". Igual que acabas de usar la palabra "simular" y tampoco es el mismo concepto que se usa en este mundo: simular es contrastar el funcionamiento lógico esperado de la lógica de una FPGA sin llegar a la implementación, haciéndolo a través de una aplicación y no en la propia FPGA.
Y de nuevo insisto: sin tener las IPs originales puedes hacer una implementación que funcione igual que el original, puesto que si las entradas y salidas coinciden en tiempo y funcionalidad, el diseño es equivalente y no está emulado, está implementado de otra forma.
Fíjate lo absurdo que es si compraras un circuito 74LS139 (el decoder de toda la vida) a Hitachi y luego te quejas a Motorola porque el suyo no está implementado igual... Hitachi y Motorola hacían 75LS139 cada uno a su manera, por dentro los transistores eran diferentes y estaban diferentes, y durante 30 años nadie ha insinuado que uno estuviera "emulando" al otro. Simplemente eran diferentes implementaciones del mismo circuito, como en este caso.
wwwendigo escribió:Lo del HDMI por supuesto pasa igual en un PC, aunque fuera la señal por VGA, pero por la forma en que funciona el mismo, la única forma de solventarlo sería con hard dedicado a enviar señal analógica y un soporte directo del mismo con un driver, no usando la pipeline gráfica del sistema.
Pero son los de Analogue los que están presumiendo de zero lag, y eso no es posible contra la SNES cuando meten buffers por medio que se tienen que activar, sí o sí (por lo menos si la emulación es medio precisa como dicen), su funcionamiento cuando llega una señal de vsync (y entonces el sistema emulado, insisto, NO se usan las IPs originales para programar el FPGA, es cuando empezará a hacer lo que se supone que hace una SNEs y... el sistema tendrá que interceptar los scanlines y recrear la pantalla para crear una salida para el HDMI, en el ... siguiente vsync).
Cuando digo DOS bufferes no me refiero a que implementen doble buffer, que también (en la opción full buffered de la Super NT), sino a que dado que se reescala la salida a 1080p y se hace además aplicación de filtros de algún tipo (seleccionables y seguramente algunos que no pero activos por defecto), se necesitan dos buffers:
1.- El original a 256x224 de resolución, que es donde se guardaría la salida de la SNES.
2.- El buffer final reescalado desde el previo, a 1920x1080, y donde se aplicarían además los filtrados activos.
Aclaro que la SNES no usa ningún buffer, todo se hace al vuelo cuando llega el vsync, y en ese mismo vsync.
Puede que el tiempo en crear el segundo buffer sea mínimo, hasta puede que se pueda "anular" su peso si se hace muy rápido y en el "largo" tiempo que hay entre vsync y vsync, pero está ahí, y nada quita el problema de un buffer mínimo y la espera al siguiente vsync. Con la opción full buffered de esta consola se agrega aún más lag, hasta ellos lo reconocen. Y de hecho tienen una opción más rápida que parece que simplemente no respecta el vsync y envía el buffer que se está renderizando cuando llega la señal de vsync (supongo que haciendo el reescalado y filtrado al vuelo en ese momento, pero a tiempo). ¿Había tearing con la SNES? No, con esta opción sí. Incluso por defecto parece que podría haberlo.
¿En PC pasa lo mismo? No lo he negado, niego la mayor de Analogue al afirmar que es zero lag mientras en el mismo material de prensa dicen que los emuladores están cargados de lag. No señor, eso dependerá del PC y la potencia disponible, que por mucho que tengan que compensar otros temas, no dejan de usar cpus bastante más rápidas ahí sea un PC decente. Amén de que en PC puedes usar Vsync variable o una pantalla a muchos más Hz que 60 (aunque esto podría dar problemas en caso de usar vsync para sincronización del juego, aunque eso depende de cómo controle el tema el emulador usado, si simula o no los 60 Hz para el sistema y usa refrescos más altos simplemente para minimizar el lag, poder se puede hacer, pero como no tengo pantalla de 120 Hz por aquí disponible, pues no es algo que haya comprobado).
Claro, es lo que te comentaba antes: la SNES no usa ningún buffer extra, solo la VRAM para generar "al vuelo" la imagen. Pero como bien explicas, lo mismo pasa en un PC; o también en cualquier re-escalador que pongas a la salida de una SNES, y sin embargo, sigues jugando a la SNES real. El lag por salir a mayor resolución es inevitable, lo es también en SNES9x o Higan, pero eso no tiene nada que ver con la implementación de la SNES de Analogue.
Lo del Zero Lag, si has seguido el desarrollo, se refieren al core de la SNES, no a los "extras" que quedarían fuera de la consola real. Pero es un término muy comercial y lo usan, puesto que sí me creo que la parte que implementa a la SNES, desde la entrada del mando a la salida de RF, tenga el mismo lag que tenía la SNES original.
Lo que venga tras esa señal de video, también lo tendrás agregando resamplers de video a la SNES real.
[/quote]wwwendigo escribió:También niego la otra mayor de Analogue, ellos han dicho varias veces que los chips están perfectamente replicados en el FPGA, es que te están diciendo que son exactamente iguales, evidentemente no a nivel de transistor por lo que dices, pero dan a entender que tienen la misma funcionalidad al dedo, que cada unidad funcional está implementada a nivel de circuito, vaya.
Es que sí tienen la misma funcionalidad, no entiendo de dónde sacas que no. Y sí, cada unidad funcional está a nivel de circuito lógico, en slices, CLBs, DPS48, PLLs o lo que sea que lleve la FPGA que necesiten para hacer la misma tarea que en la SNES. No hay ninguna mentira en lo que dicen.
wwwendigo escribió:Y deberías saber que sin los esquemas de esos chips eso no lo pueden asegurar, que su solución es la ingeniería inversa típica que también usan los emuladores, excepto que realmente hayan destapado los chips y con microscopio los hayan analizado y sacado el diseño de cada circuito dentro de cada chip de la SNES original. Y de paso se hayan pasado por el forro de los xxx las IP (aquí por lo que significa literalmente, no para hablar de ningún bloque ni ASIC sino de la propiedad intelectual) de nintendo, sony, etc.
Qué manía con las IPs... De verdad que estás confundiendo términos... Pero vamos, que el esquema del 65C816 lo tenemos todos los que nos interesa un poco la electrónica y replicarlo al 100% es muy sencillo.
Replicar el SPC-700 es sencillo también porque está bien documentado y el DSP de audio también.
Lo que es más oscuro es la PPU, y se tiene suficiente información de qué salida da la PPU cuando cambia cada entrada como para poder hacer una implementación 100% idéntica en cuanto inputs/outputs.
Por cierto, que eso se hace a nivel profesional todos los días: cuando hay algún producto en el mercado que hace algo que el tuyo no, analizas cómo varían las salidas en función de los cambios en la entrada, y te ingenias un algoritmo que haga lo mismo. Eso no infringe ninguna patente porque es la implementación lo que se patenta, y la mía será 100% seguro diferente a la otra, pero 100% compatible.wwwendigo escribió:Que va a ser que no. Así que no es lo que pretenden, ni cero lag (de hecho no pueden asegurar que tenga menos lag que un PC potente, ¡puede que sea al revés!), ni están implementando los chips originales de la SNES en el FPGA porque simplemente no pueden excepto que se quieran comer un paquete en los juzgados (amén de que por lo que ponía en la ficha de Altera veo difícil que el slice tenga suficientes elementos para todos los chips de la SNES, mencionaba algo así como 100.000 elementos básicos, muy justo, de todas formas casi seguro necesitarían usar algunas de las funcionalidades como DSPs que ya incorpora el FPGA).
¿10000 elementos básicos muy justos? ¿¿cuántos años hace que no usas una FPGA, macho?? Si te digo lo que hago yo todos los días de estos últimos 15 años con 24000 slices FLIPARÍAS en colores. Transmisores de TV digital completos en 19000, un micrcontrolador en 500, un microprocesador completo en 1500...
Y tampoco hay que darle más vueltas al asunto... si tú quieres creer que está "emulando" la SNES, créelo, pero ya te he comentado lo que conocemos todo el mundo por emulación, nada que ver con lo que tiene la SuperNT en sus entrañas. Eres libre de creer lo que quieras
wwwendigo escribió:Ya, si entiendo porqué me dices eso, estrictamente un FPGA "simula" y es así como se habla de su funcionamiento, si hablo de emulación es como reacción a Analogue y la sobrada de decir que ellos han implementado en el FPGA los chips originales. Es lo que dan a entender, que son literalmente los diseños de cada chip trasvasado a un FPGA y eso no puede ser por lo que ya he dicho.
Sí, si sabes cómo funciona perfectamente un chip puedes simularlo (o emularlo por soft) de forma exacta aunque para ello diseñes un circuito que no es 100% como el del original, pero funciona igual y con los mismos tiempos. De la misma forma puedes implementar su funcionalidad en un algoritmo que emule perfectamente su funcionamiento, y los tiempos, si dispones de una cpu suficientemente rápida y control suficiente de los tiempos en el sistema host de la emulación, pues también.
Y sí, es lo que veíamos en un simple PC cuando comprábamos un am386 contra el "original" de intel, la cpu por dentro no tenía porqué ser igual, pero su comportamiento sí lo era.
De todas formas siempre se escapaban pequeños bugs (o lo contrario, la no presencia de ciertos bugs) en estos chips recreados entre fabricantes, como para no pasar aún más en este caso. Es lo que critico de Analogue, es que hay que ser muy prepotente para decir que emulan perfectamente una SNES y después ver que... no es así cuando se producen errores en varios juegos que además hasta son parecidos para más inri a los del emulador Higan (pequeños fallos que estarán basados posiblemente en bugs del hardware real más que en las implementaciones por soft o en el FPGA).
En la emulación también se implementa el funcionamiento de otra forma, la barrera no es clara excepto el ver el hard en un lado y que la otra solución es puramente soft (como mucho el gran problema de la emulación soft, que es el control fino de los timings de cada "chip" emulado y su entorno, pero bueno, cuando ya metemos tratamientos tan distintos de la salida y con latencias de ms añadidas suena un poco a coña que se hable de fidelidad extrema).
wwwendigo escribió:
Fuera de que el tema del FPGA garantiza unos timings internos fiables y sí, equivalentes al original (después llega todo el añadido de las salidas y es mi otro punto de crítica, si tanto quieren garantizar la experiencia original... ¿porqué no una salida analógica extra que además reciba los datos directamente de la etapa de salida de datos de los SPPUs antes de tener que recrear la imagen a pantalla en un buffer (bueno, y también en ese punto sincronizar con la salida de audio, pero vamos como en una SNES real, sin pasar x dicho buffer porque sino no sirve de nada usar la salida analógica).
Si hicieran esto su insistencia en la superioridad y garantía de la experiencia real original pues me pintaría mejor. Ojo, la consola tal y como está es de lo mejor para correr los juegos en cartuchos de los que dispongas si no tienes una SNES original o si no quieres usar sus salidas analógicas (que seamos realistas, queda mucho mejor con la salida digital de la Super NT, merece la pena el sacrificio de un poquito de latencia extra por esto, ni se va a notar al final). Es que tiran mierda contra el mundo de la emulación sin tener porqué, y más cuando en este mundillo saben y conocen a gente que están tan obsesionados en conseguir esa fidelidad.
wwwendigo escribió:Es que eso es lo que aseguran ellos, pero ya se ha demostrado en vídeos que no (los colgé en uno de los comentarios anteriores, estará perdido ya entre tantos.. xD), que de hecho les han ocurrido fallos típicos incluso en emuladores. Y un fallo concreto con StarFox (¿o era el Starfox 2? creo que el primero) donde salía un mensaje de error de "controlador no reconocido, coloque un controlador compatible con blabla" apunta a que hubo un problema de reconocimiento entre SuperFX (la cpu que se usa como principal para correr StarFox) y la de la SNES (dado que la cpu de la snes se usa como simple controlador de mandos, tal cual y así declarado por Argonaut).
Este tipo de fallo pinta a un fallo de las rutinas de comprobación o testeo con los mandos, y en concreto en la interacción entre el SuperFX (que es quien ponía ese mensaje al ser la que corría el programa) y la cpu de la SNES que daba un resultado no esperado por dicho juego.
Luego no están replicando al 100% el comportamiento del sistema.
wwwendigo escribió:Mira que es muy difícil garantizar el 100% de la no ya compatibilidad entre chips diseñados por gente distinta, sino de comportamiento en todo tipo de condiciones. Y por lo menos se ve que tienen problemas con algunas de las funciones gráficas de los SPPU (glitches de tipos gráficos, en la SNES los chips peor documentados son éstos y los dos de sonido, la parte "fácil" es la cpu principal). Eso y que el comportamiento errático de StarFox apunta a que el comportamiento de la SNES no es exactamente igual.
De hecho están sacando firmwares cada poco para arreglar algunos problemas menores (el de Starfox tan menor no es que no te deja jugar), lo cual en sí demuestra que no se está emulando (vale, simulando ) al 100% de perfección al sistema.
¿Puede lograrse en el futuro? Claro, pero también con emulación, por lo menos a lo que es el comportamiento en cuanto a entradas y salidas. Ya timings bajo s.o. modernos se garantiza menos control de grano fino, pero sinceramente, para los marcos de tiempo con los que trabajan estos emuladores y los juegos que corren, como que no es ése el problema. Más bien es lograr el 100% de fidelidad de emulación (o simulación en el caso de Super NT), lo cual no es fácil porque hasta los bugs no documentados tienes que llegar a emular (XD).
Piensa que no hay básicamente ninguna cpu compatible con otra cpu que no tenga sus propios bugs, y algún que otro comportamiento diferente.
wwwendigo escribió:Hombre, tienen que simular dos cpus completas (la principal y el SPC700 aka 6502 modificado para audio), dos coprocesadores gráficos y un DSP para sonido. Eso sin contar lo que necesiten usar para implementar un escalador, los distintos filtros aplicables (aunque tiren de algún bloque IP que venga bien), y todo lo que sea el tratamiento e implementación de soluciones ad hoc para conseguir reproducir algunos efectos vinculados con la señal analógica usada, que algo tendrán que gastar en eso, y que en realidad hablamos de 50.000 elementos (100.000 era uno de gama superior que había mirado, sorry por la confusión). Evidentemente no me dedico a usar FPGAs y menos a meter diseños de cpus completas y aún menos un sistema completo con todo lo que tenga. Pero a mí no me suena a que vaya tan sobrado. No sé qué cpu metes completamente con sólo 1500 celdas, la verdad es que me interesa saberlo para conocer qué complejidad de cpu se puede meter con esos elementos y ver si va o no sobrado el FPGA. No sé si estoy subestimando o sobrestimando la capacidad de un FPGA por número de elementos, a mí no me parecen tantos por lo menos.
wwwendigo escribió:No es una cuestión de creer. Es una cuestión de que Analogue está diciendo algo inexacto en el momento en que diferencia simulación de emulación poniendo en la picota la fidelidad de la emulación contra la simulación de cada chip, no ya en timings, sino directamente en el comportamiento.
Y eso no es así, ellos no pueden pretender decir que porque su FPGA simula el sistema entero de la SNES (aunque no tengan los planos de cada chip, lo cual complica la simulación fidedigna con bugs y comportamientos anómalos de cada chip) existe automáticamente una mayor fidelidad contra la emulación no ya en tiempos (y repito, tal y como han vendido lo de zero lag dan a entender a que se evitan los lags añadidos de la emulación, cuando el principal lag que sufre un emulador, que es la sincronía con la pantalla y el uso de un buffer para lograrlo, también se lo comen ellos).
Pero es muy simple, puedes comprobar que existen bugs y glitches con Super NT que no existen en el sistema original, no hablo de ninguna anomalía "extraña" creada por las etapas posteriores y finales del procesado donde se mete el tema ya mencionado de salidas, no. Hablo de no pintar correctamente tal sprite, desaparecer un menú, no arrancar un juego, etc.
Si tienen aunque sea un único bug en esa dirección ya no pueden pretender vender que su sistema es exactamente igual que la SNES en cuanto a funcionamiento interno, dado que los resultados nos dicen que no es así.
Si siguen trabajando y parcheando en el firmware es que no todos los bloques simulados están correctamente dando los resultados de la SNES, aunque paradójicamente puedan suponer dar visibilidad a bugs del sistema.
wwwendigo escribió:Por ejemplo está el tema del bug de los SPPUs que dibujan la cantidad máxima de sprites por línea permitida y los que pasan.... no los muestran (esperable) pero empezando por los de la izquierda (eso no esperable, por cómo está documentado el tema debería ser por el lado derecho o final del scanline donde deberían desaparecer los scanlines, a mí me huele a que alguien metió un sistema basado en FIFO en este tema en vez del esperado LIFO, para gestionar la lista de sprites a renderizar).
Entiendo que es un bug porque es "preferible" que desaparezcan sprites por la derecha que por la izquierda, al moverse los juegos normalmente de izquierda a derecha (scroll horizontal) o de arriba a abajo (scroll vertical), y así evitar la desaparición de sprites considerados más relevantes como los del personaje del jugador.
The second is the priority with relation to the other sprites. This is completely controlled by the sprite's index and the priority rotation setting.
wwwendigo escribió:Además, creo firmemente que han copiado los algoritmos de Higan para solucionar algunos de los problemas de emulación.
Por ejemplo para imitar algunos efectos que sólo se logran usando la parte analógica de la consola y el control fino de temporizadores del HSYNC dentro de cada scanline. ¿El F-15 Strike Eagle? (creo que así se llama) y el tema de la proyección de sombra haciendo uso del control y tiempos del scanline en el juego original, y la solución implementada en Higan y Super NT, son soluciones decentes en cuanto a visibilidad, pero que además de no estar "simuladas" seguro resulta que son pasmosamente iguales (esta parte es una emulación por soft sí o sí al no haber ninguna forma equivalente de simularla excepto con código específico, ya que en una simulación pura, al acabar todo en una salida digital este sombreado debería desaparecer al no existir ese control fino del HSYNC y del cañón de electrones).
wwwendigo escribió:Esto no puede llamarse una plataforma 100% fidedigna respecto a la SNES, no lo es, no más que algún emulador aunque sea de los más fiables de la industria. Hasta me sorprendió ver tantos bugs en un sistema que todo el mundo en reviews de youtube estaba loando como "perfecto" pero mientras lo loaban se les quedaba el sistema colgado (XD):
https://youtu.be/alQlBkjqsp8?t=1537
Hay que tener los huevos muy grandes para decir "looks beatiful, sounds great" justo antes de que se vaya al pedo el juego arrancado.
Sí, confirmo que es StarFox 2 el de los problemas con los mandos, no StarFox, y sí, es un "repro" (aunque técnicamente no lo es) y por tanto un título no oficialmente lanzado en cartucho y menos con ese PCB. Pero si ese cartucho no funciona con Super NT pero sí con la SNES original es que las cosas no son tan bonitas como dicen:
https://youtu.be/alQlBkjqsp8?t=1282
Ya te digo que esto huele a un problema en una rutina de comprobación contra el 5A22 de la SNES desde el superFX.
No deberían venderse como la panacea porque no lo es, tiene sus ventajas, pero creo que tienen necesidad imperiosa de justificar un precio por un producto "premium" que saben alto con una aureola de perfección de la que de momento no deberían de tirar.
Para mí esta consola sería buena si no fueran tan soberbios para asegurar una compatibilidad perfecta antes de tenerla, para eso debería correr perfectamente cualquier soft para SNES, sacado en su momento o ahora, y no es así. Y si tuviera un precio más adecuado, que creo que es el principal problema y lo que hay detrás de tanto hype que quieren generar creando expectativas mayores de las que deberían.
Y ésa es mi opinión, entiendo que es muy crítica y no "perdona" pequeños fallos de salida, pero ellos tienen la culpa por la campaña de marketing que están haciendo, que me parece un tanto sucia en formas y contenido. Por supuesto esto es subjetivo, pero creo que la gente tiene que saber que no es todo tan perfecto ni mágico con Super NT.
Saludos.
Vlad escribió:A mi la super nt me parece la mejor opción porque tiene el potencial de igualar a higan a un precio razonable, y además han anunciado un adaptador de video analógico para sacar 15 khz.
Si no cualquier pc core2duo de 3 ghz que cuestan 4 duros pueden ejecutar retroarch con el core bsnes accuracy sin problemas y si le pones una gráfica ati/amd puedes sacar 15 khz por euroconector con los drivers crt emudriver de calamity, y la única diferencia sería un pelín de más input lag que la consola original o la super nt.
Esta claro que a día de hoy mientras no pulan los bugs de la super nt lo mejor sería snes jr/mini con mod rgb y supercic, y un ossc o framemeister si quieres sacar por hdmi, pero sería sustancialmente más caro.
magno escribió:wwwendigo escribió:Ya, si entiendo porqué me dices eso, estrictamente un FPGA "simula" y es así como se habla de su funcionamiento, si hablo de emulación es como reacción a Analogue y la sobrada de decir que ellos han implementado en el FPGA los chips originales. Es lo que dan a entender, que son literalmente los diseños de cada chip trasvasado a un FPGA y eso no puede ser por lo que ya he dicho.
Sí, si sabes cómo funciona perfectamente un chip puedes simularlo (o emularlo por soft) de forma exacta aunque para ello diseñes un circuito que no es 100% como el del original, pero funciona igual y con los mismos tiempos. De la misma forma puedes implementar su funcionalidad en un algoritmo que emule perfectamente su funcionamiento, y los tiempos, si dispones de una cpu suficientemente rápida y control suficiente de los tiempos en el sistema host de la emulación, pues también.
Y sí, es lo que veíamos en un simple PC cuando comprábamos un am386 contra el "original" de intel, la cpu por dentro no tenía porqué ser igual, pero su comportamiento sí lo era.
De todas formas siempre se escapaban pequeños bugs (o lo contrario, la no presencia de ciertos bugs) en estos chips recreados entre fabricantes, como para no pasar aún más en este caso. Es lo que critico de Analogue, es que hay que ser muy prepotente para decir que emulan perfectamente una SNES y después ver que... no es así cuando se producen errores en varios juegos que además hasta son parecidos para más inri a los del emulador Higan (pequeños fallos que estarán basados posiblemente en bugs del hardware real más que en las implementaciones por soft o en el FPGA).
En la emulación también se implementa el funcionamiento de otra forma, la barrera no es clara excepto el ver el hard en un lado y que la otra solución es puramente soft (como mucho el gran problema de la emulación soft, que es el control fino de los timings de cada "chip" emulado y su entorno, pero bueno, cuando ya metemos tratamientos tan distintos de la salida y con latencias de ms añadidas suena un poco a coña que se hable de fidelidad extrema).
Esto es lo que trataba de explicar desde el principio, coincido contigo al 99%. Lo únic en que no coincido es que yo nunca entendí de lo que decía Analogue es lo que te he remarcado en negrita. Nunca leí que hubieran dicho que habían traspasado el diseño de los chips literalmente a la FPGA, desde el principio del desarrollo estaban haciendo implementaciones propias de esos chips, y en algunos foros se comentaba el desarrollo.
Engineered with an FPGA. No emulation. 1080p. Zero lag. Total accuracy. The Super Nt is not a plug n' play toy. It is the definitive way to explore Nintendo's 16-bit era. Compatible with the 2,200+ SNES and Super Famicom game cartridge library. Explore and re-live one of the greatest video game systems of all time with no compromises.
Unparalleled compatibility
The Super Nt uses an original-style cartridge slot and controller ports. This means it is compatible with the original SNES and Super Famicom game cartridges plus the original hardware and accessories. All the way from the Super Gameboy to Mario Paint.
The Super Nt has the same unparalleled compatibility as the Nt mini. The core functionality of the system is engineered directly into an Altera Cyclone V, a sophisticated FPGA. We spent thousands of hours engineering the system via FPGA for absolute accuracy. Unlike the knock off and emulation systems that riddle the market today, you’ll be experiencing the 16-bit era free of compromises. The Super Nt is designed to preserve video game history, with the respect it deserves.
Pues por caro, creo. Uno de los moduladores que he diseñado es de televisión analógica, y el filtrado de banda vestigial, los filtros de alias para la imbricación de 15625Khz y encima hacerlo PAL y NTSC consume una lógica tremenda. Para hacerte una idea, unos 15000 slices sólo para modular la señal de video en banda base hasta RF...
Además, físicamente en la placa es un coñazo porque necesitas un TXDAC de 1.6 Gsamples/s que es carísimo, en torno a los 100€... o puedes salir en los canales bajos de UHF (21, 22) y usar un DAC de 500 Msamples/s de 12 bits por unos 40€. El problema es que a menor frecuencia, más posibilidades de que la salida analógica interfiera con algo del circuito, tendrías que aislar masas muy bien... O peor, el reloj del sistema se te podría meter, porque funcionando en torno a los 200 MHz tienes el primer armónico cerca de los canales bajos de UHF.
No he visto el video que dices del error con el StarFox, pero me gustaría echarle un ojo; si lo tienes a mano, ¿te importaría linkarlo? Si ya lo has linkado en otro post, lo buscaré cuando tenga un rato.
Habría que ver quién está sacando ese mensaje de error que dices, porque StarFox tiene unas rutinas que comprueban si hay conectado algo en el segundo puerto de mandos de la SNEs y en el puerto de expansión por debajo. En el caso que haya otro mando, puede llegar a arrancar, pero si hay un multitap o mandos especiales que consuman mucho, sale un mensaje que dice que el juego no puede arrancar con multitap.
Si es ése el mensaje, no es un error de la FPGA, quizá tengan un bug en el hardware que conecta con los mandos. Y Star Fox hacía esto porque el chip MARIO (la primera versión del SuperFX) consume más que un cartucho normal y se podría exceder los 1.3A de consumo de la fuente si hubiera conectado más periféricos.
Y no, la SNES no queda para gestionar el mando en el StarFox D Eso no lo ha dicho Argonaut nunca, me he leído todos sus artículos sobre el desarrollo del juego, las reuniones con Nintendo en Kyoto, el inicio del primer prototipo de chip, etc... Además, la CPU es maestra del SuperFX, y éste sólo puede ejecutar las rutinas que le indique la SNES, luego la interrumpe y ésta recibe los datos calculados por el SuperFX (por ejemplo, blitting, relleno de polígonos, funciones trigonométricas...) y compone la imagen final, el audio, mandos, lógica de control, IA...
Es normal, siempre hay bugs en los desarrollos iniciales, pero eso no quiere decir que estén haciendo una implementación lo más cercana a la realidad posible, Y sí creo que en uin futuro será 100% compatible, como no lo era bsnes al principio y al final higan sí lo fue.
Y creo que me entendiste mal en mi otro post... Lo que hace Analogue NT no es "simulación" tampoco, es "implementación". Igual me expliqué mal: simulación es comprobar el comportamiento de un circuito electrónico sin pasar por el chip físico, comprobando la "descripción funcional" (es decir, el comportamiento del circuito) mediante primitivas y ecuaciones lógicas en un ordenador. Simular es coger tu código VHDL, pasarlo por Modelsim (por ejemplo, que es un simulador de circuitos Verilog, VHDL...) y comprobar que las señales internas conmutan en los tiempos que deben y se implementan las funciones deseadas.
La CPU es un Microblaze, es de Xilinx yestá bastante bien documentado por ahí.
Implementar un DSP en una FPGA es muy fácil, el 65C816 es muy conocido y hay tablas de WesternDigital con todos los timings de todas las instrucciones bien desglosadas en cada etapa del pipeline.
Y no, hombre, el SPC700 no es ni mucho menos un 6502 modificado Como te oigan en SOny te despellejan. el SPC700 es de Sony y es un micro que además tiene una arquitectura diferente al 6502, y está bastante enfocado al audio por el tipo de indirección indexada que usan algunas instrucciones, además de por su uso intensivo de las páginas directas para buffers circulares.
Además, el 6502 es de Western, nada que ver.
Bueno, quizá no sea ahora 100% igual que la SNES y sea peor que un higan, pero potencialmente es mucho mejor que la emulación software... Potencialmente un Maseratti corre más que mi Toyota Auris, pero si tiene un defecto en el acelerador y no se pudiera pisar a fondo, eso no lo convierte inmediatamente en peor coche que mi querido Auris.
wwwendigo escribió:Por ejemplo está el tema del bug de los SPPUs que dibujan la cantidad máxima de sprites por línea permitida y los que pasan.... no los muestran (esperable) pero empezando por los de la izquierda (eso no esperable, por cómo está documentado el tema debería ser por el lado derecho o final del scanline donde deberían desaparecer los scanlines, a mí me huele a que alguien metió un sistema basado en FIFO en este tema en vez del esperado LIFO, para gestionar la lista de sprites a renderizar).
Entiendo que es un bug porque es "preferible" que desaparezcan sprites por la derecha que por la izquierda, al moverse los juegos normalmente de izquierda a derecha (scroll horizontal) o de arriba a abajo (scroll vertical), y así evitar la desaparición de sprites considerados más relevantes como los del personaje del jugador.
Error, se puede empezar por la derecha o por la izquierda, dependiendo de la configuración de prioridad de los objetos OAM. De hecho, se descartan los de menos prioridad, y el más prioritario puede ser el sprite 0 o el 127, dependiendo de la configuración:The second is the priority with relation to the other sprites. This is completely controlled by the sprite's index and the priority rotation setting.
El sprite más prioritario siempre es el primero en dibujarse, pero puede estar a la izquierda o a la derecha.
Es que esos efectos de los que hablas los programadores de los juegos se las ideaban para que la combinación con una TV de tubo dieran un efecto elegante. Pasa con los sprites invertidos en Seiken Densetsu 3 para hacer el reflejo en el suelo en uno de los palacios al final del juego: el truco es no mostrar el sprite en los frames impares, de modo que en una TV de tubo da la sensación de difuminado y parece un reflejo, pero en cualquier emulador el efecto es más chapucero. Magias de los tubos catódicos y los fósforos de las pantallas.
Le echo un ojo más tarde, que tu post es tan largo que he llegado extasiado al final
Piz81 escribió:Resumiendo merece la pena gastarse las perras ? Jeje
Tiene lag, no tiene, es lo más fidedigno que hay que no sea una snes en un crt?
theelf escribió:Menudos tochos imposibles de leer
Ahi va el mio... a mi me gusta mas snes9x
theelf escribió:Menudos tochos imposibles de leer
Ahi va el mio... a mi me gusta mas snes9x
Piz81 escribió:Resumiendo merece la pena gastarse las perras ? Jeje
Tiene lag, no tiene, es lo más fidedigno que hay que no sea una snes en un crt?
magno escribió:@wwwendigo
Sí, la verdad es que se me está haciendo un poco largo los tochos que escribimos y leemos, así que creo que mejor dejar la conversación en este punto, porque estamos aburriendo a la gente y veo que tampoco entiendes muy bien lo que quiero decir, a pesar que de coincido en mucho de lo que comentas en tu último MEGA-post.
Sólo puntualizar unas cosas:
* Simular un circuito es esto, nada que ver con implementar. Simplemente compruebas que tu circuito va como debe según el código que has escrito y luego implementas. En el video usa ISE de Xilinx para implementar, que además, también tiene simulador, que son herramientas diferentes. igual te lié más intentando aclarar la diferencia entre los conceptos "emular", "simular" e "implementar".
* En StarFox la CPU de SNES hace mucho trabajo, te lo digo de verdad que he mirado el código tanto de lo que se ejecuta en el SuperFX como en la SNES. Eso sí, no va "agobiada", pero hace cosas, no solo gestionar mandos. La IA de cuándo dispara cada enemigo o las trayectorias que llevan los hace la CPU de la SNES.
* SuperFX se iba a incluir como coprocesador matemático, no como CPU de la SNES. Fíjate que su juego de instrucciones es muy limitado, no sirve como microprocesador, sólo como coprocesador.
* SPC-700 no es un 6502, por mucho que lo diga la wikipedia. Mira su juego de instrucciones y compáralo con el de 6502. Nada que ver. Tampoco el 6502 y 65C816 son CISC, más bien tiran a RISC, pero están a caballo entre ambos.
* Y no, te aseguro que mi solución a la salida analógica no es matar moscas a cañonazos. ¿Cómo lo harías? ¿Metiendo un codificador de video como el que tiene la SNES y luego modulando a RF? Eso implica de todas formas desde la FPGA hacer un generador de video con los sincronismos para PAL, otro para NTSC y otro para SECAM, si quieres vender tu solución en todo el mundo. Además, nadie en la industria usaría tecnología de hace 30 años hoy día, porque además nadie de los que trabajamos en este mundo lo hacemos. Ahora se sale "Direct-to-RF" o "Direct-to-IF", es decir, generas las muestras de video digitalmente y las conviertes en un DAC para salir en UHF o en frecuencia intermedia. Podría extenderme en los reconocimientos que mi diseño ha tenido en la industria de la TV, ya que hemos sidos los únicos en poder integrar todos los estándares analógicos en una FPGA, pero paso de ponerme medallas
* Y sí, estoy de acuerdo con lo de que la publicidad de SuperNT puede llevar a confusión a quien no tiene ni idea del tema.
Mejor dejemos de aburrir a la gente
EDITO: Umm.. no sé si he sonado seco o borde pero no es mi intención, que conste. Sólo quería abreviar porque entiendo que mucha gente vea esos tochazos que escribimos y se aburra. A mí me parece interesante intercambiar este tipo de opiniones, aunque entiendo que a los demás igual no.
theelf escribió:@joseupp
Ya te.digo que si usas XP+snes9x+ddraw+1ms usb polling+refresco de 60.098hz..
No vas a tener input lag
wwwendigo escribió:He visto su set de instrucciones y es suficiente para definir una arquitectura por sí sola, no es ningún coprocesador por tanto, tiene todo lo necesario. Me has hecho revisar a ver si le faltaba algo fundamental que no hubiera percibido, y no, hay cpus completas más simples que ésa en funcionalidad, es cierto que en algunos puntos es tosca y muestra una cierta orientación a "coprocesador" pero tiene su PC, el SP se define en un registro general como en una cpu RISC típica, instrucciones de memoria, lógicas, condicionales y aritméticas, lo mínimo asegurado. Que pudieran barajar meterlo de coprocesador (más lógico que sustituir al 5A22, la verdad) no quita que sea un procesador (otro asunto es su uso específico como coprocesador y que tenga incluso instrucciones muy orientadas a esto, para interaccionar con la cpu "maestra" o para realizar tareas muy específicas como pintar píxeles en pantalla).
The GSU is started by writing to its internal program counter (R15) from de SuperNES.
wwwendigo escribió:1.- Buff, pero hombre, eso sí que no, que NO son procesadores RISC (XD), ni un poco ni un mucho, para empezar porque el 6502 se diseñó antes de que se creara el concepto RISC y con ello se denominara a quien no cumpliera sus preceptos como CISC. Me extraña que alguien con tus conocimientos (quizás más en circuitos analógicos) no tenga claro este concepto. Sé que se puede confundir un poquito por el tema de ciertas decisiones de diseño que suenan un poco a RISC, pero en lo más importante el 6502 es una cpu CISC hasta las trancas, casi indecentemente diría.
magno escribió: * SPC-700 no es un 6502, por mucho que lo diga la wikipedia. Mira su juego de instrucciones y compáralo con el de 6502. Nada que ver. Tampoco el 6502 y 65C816 son CISC, más bien tiran a RISC, pero están a caballo entre ambos.
wwwendigo escribió:2.- Te invito a que revises los links con ojo crítico que has puesto y de paso otros, y mires qué registros arquitectónicos (los "registros" del S-DSP y similares ni cuentan ya que son el mapeado en memoria del DSP) tienen ambas cpus. Son los mismitos, eso para empezar es sospechoso.
AND A,(X) 26 1 NOP 1
AND A,[*+X] 27 2 NOP 1
AND A,#* 28 2 NOP 1
AND A,*+X 35 3 NOP 1
ANDZ A,*+X 34 2 NOP 1
AND A,*+Y 36 3 NOP 1
AND A,[*]+Y 37 2 NOP 1
AND A,* 25 3 NOP 1
ANDZ A,* 24 2 NOP 1
AND (X),(Y) 39 1 NOP 1
AND *,#* 38 3 CSWAP 1
AND *,* 29 3 CSWAP 1
MODE SYNTAX HEX LEN TIM
Immediate AND #$44 $29 2 2
Zero Page AND $44 $25 2 3
Zero Page,X AND $44,X $35 2 4
Absolute AND $4400 $2D 3 4
Absolute,X AND $4400,X $3D 3 4+
Absolute,Y AND $4400,Y $39 3 4+
Indirect,X AND ($44,X) $21 2 6
Indirect,Y AND ($44),Y $31 2 5+
magno escribió:wwwendigo escribió:He visto su set de instrucciones y es suficiente para definir una arquitectura por sí sola, no es ningún coprocesador por tanto, tiene todo lo necesario. Me has hecho revisar a ver si le faltaba algo fundamental que no hubiera percibido, y no, hay cpus completas más simples que ésa en funcionalidad, es cierto que en algunos puntos es tosca y muestra una cierta orientación a "coprocesador" pero tiene su PC, el SP se define en un registro general como en una cpu RISC típica, instrucciones de memoria, lógicas, condicionales y aritméticas, lo mínimo asegurado. Que pudieran barajar meterlo de coprocesador (más lógico que sustituir al 5A22, la verdad) no quita que sea un procesador (otro asunto es su uso específico como coprocesador y que tenga incluso instrucciones muy orientadas a esto, para interaccionar con la cpu "maestra" o para realizar tareas muy específicas como pintar píxeles en pantalla).
No, no creo que sepas bien cómo funciona el SuperFX si sigues insistiendo en que puede funcionar como CPU. Mira el "Developers Book" capítulo 5, y en "5.1 STARTING THE GSU" te explican por qué no. Y sí tiene que ver tanto con su juego de instrucciones como con su estructura de coprocesador. Ah, y está en la primer líena de ese párrafo, no hay que buscar demasiado:The GSU is started by writing to its internal program counter (R15) from de SuperNES.
Es decir, no puede arrancar desde el vector de RESET por sí sola, por tanto es un coprocesador, esclavo de uno principal.
Y hay más motivos relacionados con la arquitectura que verás si analizas las intrucciones.
wwwendigo escribió:1.- Buff, pero hombre, eso sí que no, que NO son procesadores RISC (XD), ni un poco ni un mucho, para empezar porque el 6502 se diseñó antes de que se creara el concepto RISC y con ello se denominara a quien no cumpliera sus preceptos como CISC. Me extraña que alguien con tus conocimientos (quizás más en circuitos analógicos) no tenga claro este concepto. Sé que se puede confundir un poquito por el tema de ciertas decisiones de diseño que suenan un poco a RISC, pero en lo más importante el 6502 es una cpu CISC hasta las trancas, casi indecentemente diría.
Se está volviendo un poco difícil seguir esta conversación cuando te inventas cosas que yo no he dicho.
magno escribió: * SPC-700 no es un 6502, por mucho que lo diga la wikipedia. Mira su juego de instrucciones y compáralo con el de 6502. Nada que ver. Tampoco el 6502 y 65C816 son CISC, más bien tiran a RISC, pero están a caballo entre ambos.
En ningún momento digo que sean RISC, de hecho he dicho claramente que están a caballo entre ambas. Este hilo confirma lo que digo.
wwwendigo escribió:2.- Te invito a que revises los links con ojo crítico que has puesto y de paso otros, y mires qué registros arquitectónicos (los "registros" del S-DSP y similares ni cuentan ya que son el mapeado en memoria del DSP) tienen ambas cpus. Son los mismitos, eso para empezar es sospechoso.
Gracias por la invitación, pero llevo desde 2000 programando para el 65C816 y desde el año pasado con el SPC700 para el Star Ocean de SNES. Creo que lo tengo bien trillado y no, por mucho que insistas la decodificación de instrucciones no es la misma, ni las instrucciones son iguales. Para el SPC700:AND A,(X) 26 1 NOP 1
AND A,[*+X] 27 2 NOP 1
AND A,#* 28 2 NOP 1
AND A,*+X 35 3 NOP 1
ANDZ A,*+X 34 2 NOP 1
AND A,*+Y 36 3 NOP 1
AND A,[*]+Y 37 2 NOP 1
AND A,* 25 3 NOP 1
ANDZ A,* 24 2 NOP 1
AND (X),(Y) 39 1 NOP 1
AND *,#* 38 3 CSWAP 1
AND *,* 29 3 CSWAP 1
Nada que ver con las del 6502:MODE SYNTAX HEX LEN TIM
Immediate AND #$44 $29 2 2
Zero Page AND $44 $25 2 3
Zero Page,X AND $44,X $35 2 4
Absolute AND $4400 $2D 3 4
Absolute,X AND $4400,X $3D 3 4+
Absolute,Y AND $4400,Y $39 3 4+
Indirect,X AND ($44,X) $21 2 6
Indirect,Y AND ($44),Y $31 2 5+
OPCODES
=======
In the below,
(N) means the byte (or word when used with YA) at N.
[N] means the word address at N.
d is a direct-page address.
a is an absolute address.
m.b indicates that the 16-bit operand specifies a 13-bit absolute address with
the high 3 bits indicating which bit of the addressed byte is to be
affected.
d.# indicates that only bit # of the byte at direct page address d is to be
affected.
Operands are encoded little endian, with multiple operands stored last to
first. For example, "OP A, B" is stored in memory as "OP B A". Mnemonics are
represented as "OP dest, src" where applicable. However, there are a few
exceptions:
* BBC, BBS, CBNE, and DBNZ all store the 'r' as the second byte. For example,
BBC $01.0, $02 would be stored as "13 01 02".
Mnemonic Code Bytes Cyc Operation
AND (X), (Y) 39 1 5 (X) = (X) & (Y) N.....Z.
AND A, #i 28 2 2 A = A & i N.....Z.
AND A, (X) 26 1 3 A = A & (X) N.....Z.
AND A, [d]+Y 37 2 6 A = A & ([d]+Y) N.....Z.
AND A, [d+X] 27 2 6 A = A & ([d+X]) N.....Z.
AND A, d 24 2 3 A = A & (d) N.....Z.
AND A, d+X 34 2 4 A = A & (d+X) N.....Z.
AND A, !a 25 3 4 A = A & (a) N.....Z.
AND A, !a+X 35 3 5 A = A & (a+X) N.....Z.
AND A, !a+Y 36 3 5 A = A & (a+Y) N.....Z.
AND dd, ds 29 3 6 (dd) = (dd) & (ds) N.....Z.
AND d, #i 38 3 5 (d) = (d) & i N.....Z.
AND1 C, /m.b 6A 3 4 C = C & ~(m.b) .......C
AND1 C, m.b 4A 3 4 C = C & (m.b) .......C
Vaya, que parece que sí que tardan lo mismo las operaciones equivalentes a tus datos aportados del 6502.
2 ciclos para modo inmediato, 3 para página cero, 4 para página zero con X, y en absoluto 4 en ambos, y +4 y 5 usando X e Y como índices, y así con toda equivalencia existente (incluido modo indirecto). Vaya vaya, que están diciendo que tardan lo mismo. Y los bytes de las instrucciones también son los mismos. Miden igual y tardan lo mismo cuando trabajan de la misma forma. Pero para nada tienen que ver, claro. xD
Por ser hasta son ambas cpus little endian, que puede parecer algo trivial, pero no lo es tanto dado que va en las cachas del diseño de la cpu, y en esa época fuera de intel pocos usaban little endian (años 70-80). Pero seguro que es (otra) coincidencia. xD
Obviamente, algunos modos de direccionamiento coinciden, como en todos los micros, pero la mayoría no; de hecho, no coinciden en el número de modos de direccionamiento tampoco. Pero es que tampoco coinciden en el timing.
Ni tampoco se puede en el 6502 hacer incrementos de palabras de 16 bits, ni activar desactivar flags, etc... Instrucciones específicas del SPC700 que no hay en 6502. De verdad que no hay por donde cogerlo aunque insistas. Y da igual que sea la versión nMOS y CMOS, las diferencias no son significativas para decir que el SPC700 deriva de uno de ellos:
Por mi parte terminamos aquí la conversación si te parece bien. Sé que quieres tener razón a toda costa, pero creo que no te voy a convencer de las cosas que creo que no tienes razón por mucho que lo intente. Y eso que se te nota que eres un tío técnico y que entiendes de esto, pero si hay cosas que no son verdad, pues tampoco hay que empecinarse, todos nos equivocamos. Yo llevo 18 años aprendiendo cosas sobre la SNES y eso implica que he estado muchos años equivocado con muchos conceptos y conclusiones a las que llegaba por mi cuenta, pero gracias a conversaciones de este tipo con gente que sí sabía, pude corregir esos errores y aprender más.
Vlad escribió:
El vsync activado mete más input lag que teniéndolo desactivado, pero sin vsync tiene tearing y se hace molesta la imagen en movimiento. Por eso es mejor un emulador que soporte frame delay.