[Consulta Técnica] Forma mas fidedigna de jugar a la SNES sin la SNES.

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 XD
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.


Eso está claro porque cuando yo miré algo sobre funcionamiento de FPGAs no había para nada todas esas IPs metidas para ayudar a los diseños, a ver, FIFOs o LIFOs quizás, pero todo esos multiplicadores y otros pues no me sonaban de nada.

Entiendo que sean distintos los DMAs a los usados por SNES, claro, pero si tiene un multiplicador o cualquier otro circuito que permita simplificar el diseño de una unidad de ejecución (bueno, no "trazarla completamente" en el FPGA como un circuito completo), pues digo yo que ahí se podrá simplificar.

Ahora, que esos bloques genéricos si los usas puede que estés metiendo imprecisiones a la simulación, ia veces no porque estén mal sino porque es el circuito que simulan el que no está bien. [+risas]

No será la primera vez en que un resultado bugueado acaba dando al traste a una emulación o simulación (cuando a veces los bugs se transforman en "características usadas" de las máquinas).

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.



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ó: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.


Ya, pero date cuenta que lo que muestran ahora en los vídeos de presentación sigue siendo lo mismo y no hacen mención explícita a que sea por la emulación del core de snes. Y de todas formas si tienes una cpu realmente potente y el sistema operativo no da demasiado por saco, se puede considerar que también es capaz de alcanzar zero lag. Amén de que en caso de duda una solución puramente por soft de emulación pero directa en el metal (o un sistema operativo minimalista monotarea o en tiempo real) sí tendría ese control fino de tiempos y podría garantizar ese zero lag.

Pero tal como lo dicen y por cómo muestran el vídeo dan a entender que zero lag es respecto a la experiencia con una SNES original, y es eso lo que me molesta, porque creo que hay intencionalidad en engañar a la gente. Lo peor es que ellos sí podrían implementar esto en la consola, en el mundo de la emulación NO (tema de salida digital y evitar retardo por ella).

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ó: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.
[/quote]

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.

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 XD) 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ó: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 ;)



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.

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.

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.

Pues esto es un bug del sistema original, creo que está bien recreado de todas formas, pero imagínate, sería perfectamente que hubieran implementado correctamente el algoritmo deseado y que esto afectara a la fidelidad de cómo se muestra un juego con problemas de sprites por scanline (aunque hasta pueda suponer una ventaja).

Creo que es mejor que la gente piense y asuma que no hay ninguna magia especial detrás del FPGA que garantice mejores resultados en la simulación del sistema, sólo porque se contraponga a emulación soft.

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).

Hay bugs no presentes en Higan pero sí en Super NT (el caso de Starfox y problema de mandos, un problema con la comunicación y respuesta desde la SNES a alguna rutina de test desde el SuperFX, de todas formas creo que ya está resuelto con un nuevo firmware), y hay bugs en ambos, emulador y simulación que no existen en el original. Algún bug está relacionado con el tema de las scanlines en modos entrelazados, y ambos modos de reproducir la SNES tienen un bug similar pero ligeramente mejor resuelto en Higan, pero similares en resultado final (y otros emuladores como el de la SNES mini lo hacen distinto y mal).

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.
Muchas gracias por el debate que estáis teniendo, yo no entiendo todo lo que decís cada uno, pero si que me quedo con parte de la idea, y es justo lo que buscaba con este hilo, tratar de contraponer la Analogue(FPGA) con Higan(Software puro).
A mi me interesa entender las posibles diferencias, y saber que es cada cosa.

Yo me posiciono un poco más del lado de @wwwendigo , a mi también me parece una sobrada brutal los de Analogue, y más cuando luego estamos viendo la compatibilidad y los bugs. El precio también me parece alto.

Si siguen mejorando la Analogue, creo que indirectamente puede ser muy bueno para los emuladores tipo Higan, para entrar en un pique a ver quien consigue mejor resultados. Espero que la gente con capacidad haga comparativas serias y las ponga al alcance de todos.
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.



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.


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.




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.


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 XDD 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...


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 XD) 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.


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.



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.


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 XD 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.


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.


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.




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).


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.



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.


Le echo un ojo más tarde, que tu post es tan largo que he llegado extasiado al final XD
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.
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.


Por 50 pavos me la compraba ya, por 100 me lo pensaría un poco bastante pero podría caer, pero por 190$ más un montón de gastos extras... prefiero hacerme con una original o un sistema basado en emulador.

La consola en sí no está mal, pero es difícil de "vender" con ese precio, aunque lo justifiquen por costes de FPGA, I+D, etc.


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.



Pues en los vídeos promocionales sí dan a entender esto. Sobre todo los reviewers de primer hornada que repiten exactamente las mismas frases una y otra vez. ;)

A ver, en la web en sí tienen algunos flecos que sin decir literalmente esto sí apunta en esa dirección, después todos los reviewers de primera hornada que han recibido el sistema (supongo que gratis y para ellos como mínimo, visto el descarado marketing realizado) dicen básicamente esto, de la misma forma en una review y en la otra, hablan de la magia del FPGA y de la simulación perfecta de cada chip de la SNES, lo cual no me gusta porque no puede ser cierto.

Si no me confundo además en uno de los canales potentes, no recuerdo si era Gamespot o IGN, se hace una entrevista en paralelo a la review (bueno, montaje en vídeo realmente XD) donde hablan del tema y sí se desprende eso de sus palabras. Hay que ver muchas reviews para darse cuenta del patrón que no puede ser espontáneo en cada reviewer, pero es más fácil, fíjate cómo ha entendido inicialmente la gente en este post el tema del FPGA y la simulación perfecta como si fueran los mismos chips, 100% accuracy (eso lo han soltado alguna vez los creadores en entrevistas, por cierto, y además juraría que lo ponía en la web antes, es posible que tras los primeros bugs hayan retirado de las descripciones del producto algunas aseveraciones demasiado lapidarias), cuando eso no se puede garantizar. Pueden hablar con eufemismos tipo 99% o 99,99% (más que nada es un eufemismo porque esa cifra es para dar una idea, no porque se pueda calcular dado que los fallos que puedan haber no son conocidos hasta que sale al mercado).

De todas formas, ya te digo que en la web ponen cosas que señalan en esa dirección (y creo que han recortado algunas cosas desde el lanzamiento):

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.




Decir que además de optimistas van un tanto de sobrados con lo que están asegurando ahí, esto es cómo venden el producto al cliente, sin el contexto que quieras darle de las explicaciones durante el desarrollo que dieran en foros u otros medios, pero... no se pueden usar esas declaraciones para justificar estas aseveraciones publicitarias con la excusa del contexo, oiga no, la mayoría de potenciales clientes o no han conocido el desarrollo y leído sobre él o simplemente no tienen los conocimientos técnicos para separar grano de paja, así que esto se puede entender como publicidad un tanto engañosa, además están tirando mierda a las alternativas básicamente llamándoles "plug'n'play toy" (lo cual es gracioso dado que es lo que la SuperNT es, una experiencia jugable (léase juguete de toda la vida) plug'n'play al no tener que hacer nada especial para usarla).

Recuerda esto, "with no compromises", eso es algo muy alto de asegurar y ya vemos que no es así.


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.



Lo cual no es cierto, ya se ha comprobado, aunque esté muy cerca de lograrlo. Pero es que insisten en el tema si cabe más:

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.

Absolute accuracy que ya sabemos que no es real. Trato despectivo a los sistemas basados en emulación, lo cual incluye, aunque seguramente no sea el principal señalado por Analogue, a los emuladores soft usados en PCs como Higan. Por algo saltó Byuu por este tema, no se sintió aludido así como así, y seguramente le habrá sentado mal cosas como ésta porque él sí estuvo hablando con Analogue y debatiendo de cómo hacer la mejor emulación o simulación de cada parte del sistema. Posiblemente la coincidencia en algunas disparidades entre Super NT e Higan con supernes tenga que ver con tomar soluciones muy similares a temas relacionados con, seguramente la circuitería analógica, y que parecen soluciones salidas de esas conversaciones.

La frase final es para mear y no echar gota (¿no respetan los demás sistemas o emuladores soft la historia del videojuego, Higan, MAME, etc? (a hombros de quiénes se han subido para su proyecto en Analogue si no?, incluso las consolas clónicas basadas en emuladores menos precisos lo intentan, esto es una falta de respeto hacia los rivales comerciales, nada más).

No sé si estás de acuerdo con esto o no, pero te lo digo para que entiendas mi punto de vista y veas que, fuera de que hayan comentado más correctamente el desarrollo de la consola durante éste, a la hora de lanzarla están haciendo las cosas ... tirando a un poco sucias al más puro estilo hombre de marketing.



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.



De temas de diseño de circuitos analógico o cómo implementarlos en un FPGA no te voy a discutir ni una coma, bastante me llega con entender la mitad de los tecnicismos que usas y hacerme una idea de lo que hablas (XD).

Pero vamos a ver, lo lógico sería no emular nada del tema analógico con el FPGA, simplemente intentar recrear la electrónica analógica de la consola original en una parte del PCB, que creo yo que el coste no puede ser tan alto porque las consolas tampoco eran caras de fabricar, y simplemente usar las distintas salidas de datos en formato digital (o mejor dicho, las salidas del sistema para generar la salida HDMI en sí), pues el audio antes de la fase de entrada en un DAC en la simulación y en el caso del vídeo la señal generada por los SPPUs para definir cada scanline antes de transformarse en una señal también analógica (que en la Super NT evidentemente tiene que está en formato digital para enviar al buffer mencionado, dando igual si los SPPUs generaban ya directamente la señal enviada al CRT para cada scanline o confiaban en electrónica analógica posterior, que supongo que será la última pero ya te digo que no lo sé a ciencia cierta).

Esto es, mantienes el funcionamiento digital actual de la consola, y simplemente demultiplexas la señal y etapa de procesado en la simulación donde se escriben las scanlines en el buffer de vídeo y otro tanto con la señal de audio, y envías una de las señales replicadas con la demultiplexación a una circuitería digital-analógica que permita tomar esta salida digital y generar la salida vía el formato que prefieras.

Creo que tu solución es más bien como matar moscas a cañonazos, la verdad. Que es por costes está claro que sí, pero que no tenían margen para meter señal analógica con ese precio... ya te digo que tener tienen. Entiendo que quieren ganar lo máximo posible por consola, pero no es muy de recibo lo de justificar la "enorme bajada de precio" contra la NT original sólo porque han quitado las señales analógicas (ojo, que ésta tenía un buen lote de distintos tipos de conectores, no es lo que yo pediría, sólo una alternativa a HDMI por precisión en la simulación, perdón, "implementación" :-P ), si me hablan de la carcasa de aluminio igual les creo más, o que bajan el precio porque cuentan vender más y así conseguir reembolsar el I+D necesario, etc.




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 XDD 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...



Te lo menciono en un momento del comentario (juraría que es el último), revisa a ver dónde está, pero ya te digo que es con StarFox 2, no StarFox 1. Lo que dices del consumo podría llegar a ser, pero excepto que los mandos inalámbricos de 8bitdo consuman más de lo que debieran de la consola SNES para mantener la conexión, que digo yo que no deberían pues están diseñados para funcionar con la SNES original (y de hecho funcionan, con este cartucho repro además), pues esto no debería pasar. Amén de que juraría que está probando la consola con sólo un mando conectado, y sin usar por supuesto el puerto de expansión.

Lo que está claro es que ese cartucho repro lo ha usado ya alguna vez, no es el típico material que encuentras en alguien que pruebe la Super NT con un cartucho original perdido entre un montón de cacharros sino material del típico "friki de turno" XD, el tipo que lo prueba se ve que es aficionado a conseguir los últimos productos vinculados a SNES (cartuchos recopilatorios de juegos, StarFox 2 reproducido con un cartucho con un SuperFX, etc). Y como se nota que lo ha usado porque espera que funcione correctamente, me da que ese problema le ha pillado en bragas mientras hacía el vídeo, que es algo que no se esperaba (o sea, que no le ha pasado antes con la SNES original, no tendría sentido comprar un cartucho de StarFOX 2 repro para usarlo en una Retron 5, ¿no XD?).

Y claro que consume más ese cartucho, pero con el MARIO como con los demás que llevasen algún superFX, otro asunto es que sea más que asumible para el sistema. xD

Sobre lo de Argonaut, fueron declaraciones sobre que Starfox corría básicamente en el superFX, de las misma forma que los propios desarrolladores del chip, como Jez San, han mencionado alguna vez que incluso se barajó la inclusión del chip como cpu principal en vez de la final de la SNES pero se descartó por precio (y particularmente, no me creo esta parte demasiado cuando se cita, más que nada porque la consola estaba más que terminada y a punto de salir al mercado si es que tenían negociaciones así de avanzadas ya en el 90, y por prometedor que fuera el chip de Argonaut como que eso rompería el desarrollo de todos los demás proyectos de otras marcas para la consola, así que no, quizás se habló algo de incluirlo en una posible expansión de la consola o segunda revisión, o se dijo algo no muy en serio y fruto más del entusiasmo, pero vería mucho más lógico el sustituir a la cpu original por el SA1, más que nada porque sí es compatible con la cpu original y no jodería a los demás desarrolladores con una cpu desconocida).

La verdad es que es difícil encontrar menciones del tema, es posible que sea una leyenda urbana, pero a mí me suena, sea una leyenda urbana de los medios o no (si lo he visto ha sido o en alguna revista de prensa o en algún canal de youtube pero digamos que de "buena calidad", tipo pixel2pixel o LaPociónRoja, no en otro lado tipo foro y comentario suelto o canal de youtube random sin mucha calidad). Es posible que simplemente se base en alguna declaración donde se exageraba el papel del superFX, pero lo que no debería haber duda es que computacionalmente en este juego tiene NO un papel relevante, es que es el que lleva la batuta de básicamente todo. XD

Bueno, la "batuta" no porque es cierto que la SNES se encarga de "arrancar y parar" al SuperFX en sus tareas (le da el control y acceso a código del pack ram y también lo detiene), pero es que en un juego como éste básicamente estaría haciendo todo incluida la IA. Técnicamente no llevaría la batuta, pero estaría haciendo el trabajo de burro de carga, y no me refiero sólo al render en 3D que esto seguro que lo hacía él al 100% (por ejemplo, la detección de colisiones, e IA general deberían correr en el superFX por pura conveniencia, al usar para ello un sistema de coordenadas 3D que seguramente se adaptaba mejor a los posibles de las instrucciones del FX, es que leches, es el mismo sistema de coordenadas que usarían para renderizar la pantalla, sólo que usado para detección de colisiones también).



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.


Y simular sigue siendo dado que el FPGA básicamente es la útima fase final ANTES de implementar un chip final. XD

Otro asunto es que Analogue se quede en la última etapa de diseño con esta solución mixta entre hard y soft y ya sea su solución final (o sea, "implementación" porque... ¡¡es el objetivo del proyecto!!, pero para otros proyectos esto sería aún sin ser la implementación real, sino una fase muy cercana al final de la validación y testeo antes de dar el visto bueno y empezar con la producción del chip final (y ahí ya testeo final) ;-) ).

Esto ya es un tema de dialéctica. Bien sabes que podrían pasar el diseño final (quizás con varios firmwares madurados) a un fabricante de semiconductores para obtener su propio chip 100% compatible con una snes y posiblemente bajando costes y consumos de forma importante. Yo me lo plantearía, quizás lo hagan para una Super NT 2 a un precio mejor, quién sabe. O una Super NT mini, ya en plan cachondeo. :-)

Lo que sí es que se perdería la flexibilidad de reprogramar al FPGA, lo cual no les conviene ahora ni tampoco para el otro potencial uso de esta consola (simular otras consolas y máquinas con otros firms).


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 XD 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.


Interesante, la cpu veo que es bastante simple pero tiene los principales ingredientes de una cpu RISC de 32 bits, así que supongo que no habría ningún problema con una CISC de 16 bits que es bastante minimalista (puede ser más jodido de simular en el FPGA de lo que parece, pues los primeros diseños RISCs ahorraban una barbaridad de transistores contra las cpus CISC existentes, amén de ser más rápidas, PERO como el 65c816 de por sí es una CPU CISC muy frugal en transistores.... pues no debería haber problema, es "pequeña" dentro de lo que cabe).

No, si los de Sony seguro que se enfadan si de alguna manera un producto suyo no parece tan original, pero lo que es, es, y lo siento pero la cpu integrada en el SPC700 es un 6502 pero de cajón, aunque no le quieran llamar.

Tiene página zero (igual que el 6502 y es algo MUY característico de esta familia de cpus), un único acumulador, dos registros de direccionamiento, y registros PC y SP, etc, me parece a mí que además como que el set de instrucciones se parece por no decir que es un calco, no me lo saco de la manga, mira:

https://en.wikipedia.org/wiki/Nintendo_S-SMP

"The Sony SPC700[3] is the S-SMP's integrated 8-bit processing core manufactured by Sony with an instruction set similar to that of the MOS Technology 6502"

Pero es que además si ves su estructura y funcionamiento en mil fuentes variadas, includo el SNES development manual y demás, es que se ve que es un 6502 adaptado para la tarea (o un clon de sony del mismo).

Es que tiene las mismas limitaciones de juego de instrucciones minimalistas, mismas latencias bajas x instrucción, fuera de los añadidos para la tarea a la que se dedica. No sólo la página cero del 6502, es que también usa la página uno a piñón fijo para la pila. Es que vamos... "si nada como un pato, y suena como un pato, es que es un pato". XD

O eso o Sony reinventó una cpu "distinta" pero que tiene una coincidencia monumental con el "mojo especial" del 6502, todas sus características y hasta instrucciones en ensamblador casi calcadas (generalistas, no hablo de las añadidas, si el opcode es el mismo ya es otra historia).

Que sí, que es una reencarnación del 6502, hombre. XD


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.


Yo ni siquiera estoy diciendo que sea peor, pero sí que tiene fallos muy similares a los de los emuladores como Higan. ¿Mucho mejor? Todo depende, también hay margen para mejorar la emulación por soft, en lo que es comportamiento en sí simulando los chips creo que no hay discusión que se puede hacer con la misma precisión en un sistema que en otro. Si hablamos de velocidad o mejor dicho, precisión de tiempos, pues coge un SoC a 2 GHz de una cpu medio potable aunque sea ARM, ponla en un sistema en tiempo real o la brutada pero efectiva solución de un sistema pelado minimalista, donde puedas garantizar predecir el tiempo exacto que te llevará hacer X sin variaciones por otras tareas en el s.o. y mostrarlo cuando toca al simular a la consola, y si la potencia es suficiente conseguirás el mismo resultado.

De momento todo esto da igual porque nos estamos comiendo un montón de lag que reduce a insignificante esos problemas, a base de usar salidas digitales y paneles de TV o incluso aunque sea monitores ultrarrápidos (que por cierto, le sacan una buena ventaja a cualquier cosa conectada a una TV en cuanto a retardo inducido por el panel de la misma), y sinceramente, ni siquiera ese lag está estropeando la experiencia (si se conecta una SNES a una tele moderna estamos en la misma, por cierto, excepto por el tema de crear la señal digital en un buffer en el caso de emuladores y Super NT, pero esto es un frame de retardo normalmente, casi despreciable y normalmente MENOS que el retardo que mete una tele entre que le llega una imagen y la muestra el panel de verdad).

Pero bueno, puestos a ser puristas se puede incluso avanzar y no poco con emuladores soft en... sistemas específicos pensados para garantizar tiempos en ellos. Y lo que puede de dar de sí la mejora del SoC usado en las clónicas de SNES, vamos. Que están usando Cortex A7 aún en la mayoría, una cpu "antidiluviana" ya y nada orientada al rendimiento ni siquiera dentro de cpus ARM.

Si sólo el cambio de Cortex A7 a A53 puede dar sensibles mejoras de todo el tema, no digo ya usar cores prestacionales tipo A57 o superiores (y aquí entroncaríamos con la emulación en PC y la calidad extra que puede dar, o fidelidad más bien). Y por el lado del s.o. usado, pues lo mismo, hay dónde mejorar si se quiere simulación del sistema 1:1 en tiempos.

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.


Mm... entonces las menciones que he visto a ese supuesto bug, ¿se refieren a que funciona al final de forma inversa a la esperable o es una mala interpretación del funcionamiento de cómo se renderiza cada sprite?

Si puedes elegir la forma en que se renderizan en el scanline (desde qué lado) y a su vez puedes elegir si el índice empieza de una u otra forma, todas esas menciones a ese bug supongo que se refieren a un comportamiento anómalo de lo que se espera pero en ambos casos.

Eso es, que si empieza en 0 como más prioritario, ¿es el descartado si hay más sprites a renderizar de lo que permite el índice por el hard? E igual si se pusiera al 127 como prioritario, claro. ¿Es eso lo que pasa con este ya digo mencionado bug? Ya te digo que lo he visto mencionado como comportamiento anómalo con los SPPUs.

Porque si descarta el sprite "128" siendo el 0 el prioritario, no hay ningún bug. El bug sería que no mostrar el 0 siendo el prioritario por mostrar el sprite 128.






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.


Ya, parpadearía ligeramente y aparecería algo borroso haciendo eso. Es algo parecido pero menos complicado que lo que dije de la sombra, que "creo" entender qué hace en la realidad (básicamente "apagar" en ciertos timings del scanline y unas cuantas scanlines por debajo del sprite del jugador el cañón de electrones, seguramente cada dos frames o más, y así dar esa sensación de sombra muy ligera y parpadeante que se ve en el original, no es que parezca que se muestra la silueta del avión en sí, sino una especie de ligero parpadeo y algo de sombreado (cañón apagado) a X altura de él).

La emulación digital en realidad queda mejor como sombra, aunque no se parece nada y se pierde la gracia del efecto, que es hasta demasiado sutil para lo complicado que es (o no es mi forma de pensar, que también puede ser, ya que no pienso en "analógico" a la hora de programar para generar imágenes y me parece muy de locos eso de usar los tiempos de scanline para modificarlo al vuelo XD). Bueno, teniendo en cuenta que lo de ese juego es todo hipótesis mía de cómo lo generan, el tema de la sombra. Sólo sé que hacen uso de un truco de timings muy justos con scanlines, y por observación de lo que parece verse como resultado final, no es seguro que sea ni remotamente lo que digo (XD).

Lo del sprite invertido cada 2 frames es más fácil de hacer para que quede similar, la verdad (si quieres metes el parpadeo también aunque es un tema un poco peliagudo con la mayoría de paneles, pero también puede venir "bien" la naturaleza de los TFTs ya que seguramente aparecerá difuminado si se conmuta un sprite entre aparecer y no aparecer en pantalla por el tiempo de respuesta del cristal líquido y su cambio de orientación, después el difuminado extra al usar un CRT pues... dithering vamos). Pero evidentemente no es el mismo proceso, aunque pueda parecerse. Además de que la forma en que parpadea un CRT como que es ... inimitable. xD (ojo, y no necesariamente como algo bueno).




Le echo un ojo más tarde, que tu post es tan largo que he llegado extasiado al final XD


Extenuado, querrás decir extenuado. XD
Menudos tochos imposibles de leer

Ahi va el mio... a mi me gusta mas snes9x
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?
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?


Pateate tu pueblo busca un.PC en algun.contenedor, armate un.cable vga a rgb, compra un pad original, uno usb, cambia placas, pon el emu que mas te guste, y a correr
theelf escribió:Menudos tochos imposibles de leer

Ahi va el mio... a mi me gusta mas snes9x

El problema de los emuladores es siempre el mismo,el input lag y en el caso de la emulación de snes es mas acrecentado aun que con otras consolas emuladas.
la Super Nt en input lag es la mejor después de la original conectada a un crt.

Super Nt Imput lag Test

Yo lo tengo claro, lo mejor es la original conectada a un crt, si esto no es posible para mi la super nt es la segunda mejor opción después de la original.
Pilláis una consola original por un lado, un emulador práctico y óptimo para vosotros por otro, comparáis ambas experiencias, y en base a las diferencias que notéis ya veréis si os vale la pena buscar un rendimiento teóricamente más cercano al original.

Si no tenéis una SNES, o no sabéis como funciona una SNES original, ni sus diferencias con respecto a la emulación, no sé hasta que punto valdrá la pena aventurarse.
theelf escribió:Menudos tochos imposibles de leer

Ahi va el mio... a mi me gusta mas snes9x



Cómo te pasas... [+risas] [+risas]

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?


De momento sí, con Higan en un buen PC igual (o casi igual, habría que demostrarlo, pero ambos tienen el mismo problema de algo de input lag por funcionamiento contra la snes original).

Hay lag, menos que con otras consolas, pero sinceramente, no vas a notar la diferencia contra otras opciones que usen un TFT para mostrar la pantalla (con salida digital o analógica), porque el paso más lento va a ser el panel TFT y su input lag (más en una TV que en un monitor de PC). Que tampoco es ningún drama, peroooo.... siendo puristas ahí pierde fuelle la "gracia" de la NT.

Aunque lo mejor es que pruebes si notas o no ese "lag pecaminoso", si tienes una SNES con un CRT y una snes mini ya tienes un par de puntos de comparación para interpolar. [+risas]

Si ves diferencias notables en lag pues seguramente notarías la diferencia entre NT y otras consolas. Aunque si no lo percibes o es demasiado sutil la diferencia entre SNES+CRT y una SNES mini/PC emulador/retroneitor 3000 entonces mejor ni te lo plantees (sería aún menor la diferencia perceptual).
Madre mia, este hilo es oro.
@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 [carcajad] [carcajad] [carcajad]

* 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.
A mi me encantan estas discusiones, son sanas, aunque no entienda nada jeje, el día de mañana a lo mejor entiendo nada y algo más. Siempre vienen bien
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".



Lo que quieras, pero creo que está claro qué quería decir, eh. Mira que byuu no está de acuerdo con tu definición de "emulación". ¬_¬


* 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.


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).

Tanto es así que tuvo descendientes como una familia de procesadores (sí, especializados) RISC de 32 bits. Minimalistas pero funcionales por sí mismos.


* 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.


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.

¿Trabaja el 6502 contra memoria directamente? Sí, de hecho lo incentiva con el uso de la página cero como ninguna otra cpu CISC existente, eso automáticamente le convierte en la cpu más CISC posible, a pesar de todo lo demás que apunta a principios cercanos a la filosofía RISC. Es que es la condición más importante para definir a una cpu RISC, las demás medio se pueden saltar un poco, pero no ésta. Por definición un procesador RISC mantiene bien separadas las operaciones aritmético-lógicas de las de memoria, las aritmético-lógicas sólo se aplican en los registros, JAMÁS existen opcodes de una instrucción trabajando contra una posición de memoria, ¿quieres cambiar un dato que está en memoria? pues no te queda más remedio que hacer LOAD-EXEC-STORE, no un EXEC contra memoria. Es que vamos a ver, esto hace que tengan longitud variable las instrucciones de la cpu, de paso, o sea, de RISC poco.

Que sean cpus con un juego de instrucciones mínimo dentro de las CISC no las define como RISC, en absoluto, y otras ideas de diseño recuerde a algunas de las que se aplicaban en RISC (intentar optimizar al máximo la ejecución de las instrucciones en latencias mínimas, no usar microcódigo). Éstas no son arquitecturas LOAD-STORE, para nada. Es que lo más gordo que define a RISC no lo cumplen.

Que sí, que son cpus que no tiran de microcódigo y eso recuerda a RISC también. Pero ya, más bien son cpus "hardwired" contra microcódigo. Un concepto más antiguo de diseño que el cisma CISC/RISC. Es que el tema del único registro general (acumulador) más trabajo directo contra memoria de forma sistemática es básicamente "antiRISC".

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. XD

Los mismos registros. Los mismos nombres y funciones. El registro de estado funciona con banderas iguales, en los mismos bits. El uso de página cero, el de la página uno para la pila, y que comparten curiosamente gran parte de los nemotécnicos de las instrucciones en ASM con latencias similares (he mirado que efectivamente, las operaciones sencillas contra acumulador tardan 2 ciclos y contra página cero 3, mismas latencias en ADC, y similares nemos en ambas cpus). Evidentemente hay diferencias, más dada la función especializada del SPC700. No coinciden los OPCODEs, eso sí (que eso será cosa de Sony el querer usar unos diferentes, por lo que sea), pero el diseño es evidentemente muy parecido, y es decir muy poco en este caso.

No hay otra cpu que comparta tantas similitudes con un 6502 en diseño y filosofía de funcionamiento (pero además de calle), y eso no es una coincidencia. XD

PD:

POR TU CULPA, POR TU CULPA, POR TU GRAN CULPA (XD) he revisado algunas instrucciones que fueran realmente equivalentes entre ambas cpus, con o sin el mismo nemotécnico (el opcode ya sabemos que no), y he revisado cuánto miden de longitud a ver si había en ese caso "diferencias". Y ambas cpus "calcan" cómo varía la longitud de la instrucción en cada nemotécnico según trabaja contra el acumulador, contra la página cero, contra X/Y, etc.

O sea, vamos... que se nota mucho el sablazo.

Aunque en el sentido estricto no son cpus compatibles por el tema de los OPCODES diferentes. Lo cual hace que el código de una no funcione en la otra (SONY, además de choriza del concepto en sí de la cpu, trapera XD).

PPD: OJO, ése 6502 que has puesto es la versión NMOS, la versión CMOS tiene cambios en las instrucciones, justo con el tema de instrucciones de tipo DEC que ya me extrañaba que no tuviera listado "DEA" (un dec para el acumulador). Sí la tiene al igual que el SPC700. Tiene huevos dado que se supone que son "la misma cpu" por la numeración, pero... no. El código de una funciona en la otra (en principio) pero no al revés. El SPC700 tiene más paralelismos con la versión CMOS, por otro lado lógico, hay muchos años (década y algo) entre el NMOS 6502 y el SPC700.



* 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 [carcajad] [carcajad] [carcajad]

* 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.


No te tires tantas flores XD, seguro que en estos temas de implementar circuitos analógicos en FPGAs te puedes poner medallas (aunque no lo sé, no te conozco :-P), pero no estamos hablando de eso exactamente.

Evidentemente la cabra tira al monte :-P, pero sí, lo lógico para mí es que si quieres fidelidad es implementar la tecnología a "lo retro" ya que se quiere un resultado lo más similar posible. No veo cuál es el problema. El producto tiene toda la pinta de nicho de mercado y está muy orientado al americano inicialmente (te apuesto a que venderán la mayoría de sistemas en EEUU vs el resto del mundo, pero con gran diferencia). Una forma de comenzar es poner como extra la salida analógica para NTSC.

Si se vende lo suficientemente bien se podría implementar en una segunda fase la circuitería analógica adaptada a cada región, de ver muy arriesgado hacerlo de primeras (y quienes quieran la máquina fuera de EEUU en un inicio, tendrían que pasar por el aro de usar digital o pasar por el aro de una TV retroamericana XD). Como mínimo contarían con la misma opción que ahora, y con suerte y paciencia con otra más "fiel" al sistema.

No veo problema por el generador de vídeo en el FPGA, digo yo que habría margen de sobra. ;-)

La cuestión es que podrían hacer esto y por lo menos asegurar a quien pudiera conectar adecuadamente la consola, que así lograría una recreación aún más fiel e imposible con los emuladores soft y demás máquinas actuales. Además del efecto publicitario y de veracidad extra a sus afirmaciones sobre fidelidad extrema si se desea.

PD: El vídeo de la simulación del circuito lo veo ahora, te lo juro. XD

Y ya mensajes más cortos, por favor. Que lo pida yo... pero es que tardo así mucho también en contestar. XD
¿Qué es un FPGA? :O
He leído algo del hilo pero de la mitad ni papa vamos. Por cierto, ¿me recomendáis Higan antes que Snes9x?
Entiendo que la SNES mini la descartáis como forma fiel de emulación de la SNES, no?
@joseupp

Ya te.digo que si usas XP+snes9x+ddraw+1ms usb polling+refresco de 60.098hz..

No vas a tener input lag
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

Con vsync activado? No se yo...

Groovymame y retroarch tienen la opción "frame delay" que si consigue reducir mucho el input lag incluso sub frame, menos de 16.6 ms. Pero el vsync sin frame delay mete bastante latencia por lo que he leído.
@Vlad

Eso depende del vsync, porque dices eso?
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. XD


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+


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.
Muchas gracias por mantener un debate de tanto nivel técnico. Personalmente no lo puedo seguir porque mis conocimientos de programación son más básicos, pero se agradece.
La Super Nt me parece un producto muy interesante, pero por el precio actual no me convence. No lo digo porque lo encuentre caro, el precio está justificado, pero no quiero pagar unos 300€, casi lo que cuesta una consola actual, por una nueva SNES.
El día que que se distribuya en Europa y nos ahorremos 100€ entre envío y aduanas ya será otra cosa. Además prefiero esperar por si algún día sale una que incluya NES+SNES. Entonces pagar unos 200-250€ no me parecería tan mal.
theelf escribió:@Vlad

Eso depende del vsync, porque dices eso?

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.
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.


Hombre, toda cpu tiene una forma de inicializarse, si crees que la única forma de iniciar una cpu es con otra mal vamos.... XD Eso mismo se puede hacer sin necesidad de una cpu, llega con un microcontrolador o un aún mejor, un simple circuito para iniciado del sistema. Evidentemente la cpu no puede arrancar al libre albedrío nada más pinchar el cartucho, eso es una perogrullada que pensaba que no hacía falta aclarar (ningún chip montado en un cartucho arranca por sí sólo sin interacción del resto del sistema).

Una cpu también actualiza un par de registros (SP y PC) para poder arrancar mirando siempre a piñón fijo en ciertas direcciones de memoria (un método, puede y de hecho hubo otros) y cargando datos de ellas que le dicen desde dónde empezar a trabajar y cargar código (ya sea una BIOS u otras formas). Aquí de hecho se está diciendo que se toca el PC del superFX para iniciarla. Posiblemente el SP toma un valor por defecto y define un área fija en memoria donde trabajar, no es la primera cpu que lo hace.

Pensaba que estaría claro que en un cartucho enclaustrada y teniendo que interaccionar con el resto del sistema, esta cpu no podría arrancar por sí sola y sin control alguno del proceso por el resto del sistema. Esto no quiere decir que no se pueda arrancar SOLA en un sistema diseñado para ella, tan fácil como las soluciones dichas o más que seguramente formas no documentadas en caso de estar funcionando en un sistema autónomo y por sí sola.

Aunque sí, evidentemente esa forma de iniciar la cpu (además de pararla y pasar el control a otra) le dan carácter de coprocesador. Pero decir que no es un procesador porque le ponen una brida y forma de control desde el sistema es un argumento muy malo. Porque claro, actualizar el registro PC en una cpu no tiene nada que ver con arrancarla y hacer que empiece a ejecutar código. [beer]

¿Tiene el set de instrucciones suficiente para correr código autónomamente, es una máquina Von Neumann completa sí o no? Así de simple.

Por cierto el SA1, que es un 65c816 con hard extra y mejoras varias y demás blablases, se inicializa actualizando un registro mapeado en memoria que es el .... PC del 65c816. Hombre mira qué coincidencia. Y es un procesador que puede funcionar como un simple coprocesador para la SNES o como un procesador independiente y en paralelo. De hecho tiene bastantes más modos de configuración para lo último (varios) que para lo primero (uno). Y después hay también unos registros de control para la cpu de la SNES para forzar reinicios, paradas, etc, en caso de necesitarlo.

Que digo yo, que estas cosas no debería hacer falta aclararlas, que evidentemente es desde el sistema desde donde se inician y se les configura para hacer tareas o tomar el control a estos procesadores.

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.


Empezamos con un argumento de falacia del victimismo. Perdona pero eso no es cierto, yo no he inventado nada, te recalco lo que has 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.


¿? Tan claramente que primero dices que NO son CISC y segundo dices que están más cerca de RISC (o sea, "claramente" a caballo entre ambas, vamos [beer] ).

O sea, la wikipedia en inglés no te vale como documentación válida, pero sí te vale como argumentación válida lo que suelten aficionados anónimos por el mundo entero en un foro. Ajá. Y no, no dices que esté a caballo entre ambas, dices que es más RISC y que además NO es CISC. Ergo si no es CISC y si conoces DE DONDE VIENE EL ACRÓNIMO CISC, ya estás diciendo que es RISC. CISC es una forma de denominar a todas las cpus que no cumplían la filosofía RISC cuando se diseñaron las primeras arquitecturas siguiendo dicha filosofía, y es un cajón de sastre para "todo lo que no es RISC".

Y estas cpus no la respetan. Que no usen microcódigo no las hacen "más cercanas a RISC", en absoluto. No hay nada más contrapuesto a una máquina RISC que una cpu con un único registro generalista (lo mínimo necesario para guardar el resultado de operaciones en la propia cpu) y que está diseñada especialmente para hacer operaciones contra memoria fuera de un diseño LD/ST totalmente. Amén de que tiene tamaño variable de instrucciones, etc.

Un hilo de un foro no me dice ni me aporta nada al respecto (además no puedo alargar el debate leyendo ahí para algo que está más que claro).

Lo más importante de una cpu RISC es cómo opera contra memoria y contra registros, y hay una separación muy clara de qué se hace entre registros (ops de lógica y aritméticos, etc) y memoria (sólo LD y ST). Esta norma principal hace derivar la mayoría de las demás características (de ahí viene la longitud fija de instrucción al no necesitar instrucciones especialmente largas para hacer operaciones contra memoria directamente, etc), la eliminación de microcódigo al simplificar y separar bien el diseño de las instrucciones, pipelining natural y fácil de la cpu, etc. Todas estas cosas ya se practicaban antes en cpus "CISC", pero es esa clara separación entre memoria y registros y sus operaciones lo que marca la diferencia (y sí, existe alguna cpu previa clasificada como RISC por cumplir lo principal de su paradigma, pero no es ni se acerca en ningún grado el 6502).

El 6502 es todo lo contrario por su arquitectura y diseño de registros, trata justo al revés a la relación entre memoria y cpu, es una cpu diseñada para operar directamente, de hecho más que otras cpus CISC, usando ops contra memoria y no entre registros (si sólo tiene uno, por fuerza necesita usar operandos desde memoria también). Porque es que llega a algo tan radical como tener el número de registros mínimos contando que se va a operar sí o sí contra memoria, no haciendo LD/ST y después las operaciones aritméticológicas entre registros. No hay nada menos RISC que esto.

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. XD


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+




Habiendo mejores y más claras descripciones de las instrucciones del SPC700, ¿has buscado por alguna razón una forma especialmente críptica y sin explicar de esta instrucción?, aquí se ve más clara, y de paso pongo qué quiere decir cada columna (y aquí sí habrá timing de las instrucciones del SPC700):

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




Y ahora, sobre lo demás que dices aquí. Mmm... empezamos bien, usando la falacia del argumento de autoridad y además sin demostrar, y aquí es donde comienzan la teoría de juegos y donde yo me lo creo / no me lo creo y se abren árboles de posibilidades de nuevas opciones como "sentirse ofendido por la desconfianza" o "aportar los datos que demuestren la experiencia" o simplemente "qué tiene que ver que juegues con el 65c816 a nivel particular con que seas un experto en su antepasado y con el SPC700". Ya te he dicho que los nemotécnicos están cambiados o hay adiciones y que no coinciden los opcodes, pero te pido que mires más allá, y nada.... :-)

Yo lo que no entiendo es que si tanto dices programar contra estas dos cpus en concreto (mm.. actos de fe, siempre me piden actos de fe) es que no veas que son arquitecturas calcadas en funcionamiento, porque en eso son gotas de agua en su diseño general. Además, no sé porqué me hablas de tu experiencia con el 65c816 cuando estamos hablando del 6502, no son la misma cpu (y para ti debe haber un abismo total y cero similitud entre ambos XD). Y sí, sé que el 65c816 por arrancar hasta lo hace en modo 6502 y tal por defecto, pero dada tu sensibilidad a diferencias para renegar de parecidos entre cpus, pues... eso. XD

Te lo vuelvo a decir, una cpu con un único registro generalista, con dos de direccionamiento, y los registros de programa, pila, etc, hay muy pocas. Que se usen básicamente igual estos registros y hasta tengan las mismas flags pues otro tanto.

Si tanto programas para estas cpus deberías conocer su concepto especial de página cero en el SPC700 y de página directa en el 65c816, ¿sabes cómo se denomina esa página en el 6502? Página cero también (qué maravillosa coincidencia). Que la página 1 se use para la pila acaba de rematar el recochineo.

Está muy bien que me pongas esos datos pero falta en la del SPC700 la identificación de qué significa cada campo (ya lo he arreglado yo), y no están las latencias de las instrucciones. La longitud de bytes de las instrucciones es similar, sin embargo, que es lo que te he dicho. DE HECHO he revisado y comparado la longitud en varios modos de direccionamiento equivalentes en ambas cpus en el SPOILER previo que he puesto y comprobado que me daban la pu** razón, o sea, he estado perdiendo el tiempo con tus datos para acabar viendo que apoyaban lo que yo decía y no lo que tú decías (distintos timings y ninguna mención a la pasmosa misma longitud de instrucción).

Una forma más completa y ordenada de ver esto está en la wiki dedicada al desarrollo de la SNES (que supongo que tendrás como referencia, no sé porqué me linkas otra web más incompleta para estas consultas):

https://wiki.superfamicom.org/#toc-opco ... y-jwdonal-

Uppss... qué manía tiene la gente. Mira que intentar poner el juego de instrucciones de forma nativa y a "lo 65c816". Que sí, que sí, que eso no quiere decir nada y que tal y cual, pero para tener un juego de instrucciones tan distintos como que tienen mucha manía con buscar similitudes con cpus que son tan distintas. XD

Que digo yo que si no hubiera una cierta similitud en el juego de instrucciones y tipo de operaciones y demás, ni se molestarían en poner nemotécnicos a lo 5A22 por mucho que facilite verlos así al programador de la SNES.


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:


Evidentemente. Te repito de paso que el documento que tú citas no incluye todas las instrucciones ni combinaciones que puede hacer el CMOS 6502. Y el SPC700 es una cpu muy posterior. Si no tuviera cambios de cierta visibilidad sería lo extraño.

Los timings NO vienen especificados en el documento que citas en el caso del SPC700, así que no digas que no coinciden porque ahí no ponen nada sobre eso (y sí coinciden en los casos que ya te he citado, y POR ÚLTIMA VEZ he revisado y comprobado que coinciden en longitud de instrucción y ciclos las instrucciones equivalentes, no volveré a discutir esto dado que ya he demostrado DOS veces que para una instrucción equivalente son de misma longitud y misma latencia en ambas cpus). Curioso que cites los "incrementos de palabras de 16 bits" (yo le llamaría simplemente incrementar o hacer una suma (no sé a qué te refieres) un int y ya, como mucho un short int) dado que para ello en vez de implementar un acumulador de 16 bits (que se podría, expandiendo A a 16 bits, o ni eso dado que es un diseño "de novo")), se usa... Y+A, el registro de direccionamiento Y, en una clara chapuza incluso un poco peligrosa que se ve que viene de algo "heredado" (léase, arquitectura de registros de cierta cpu que estás negando como Pedro a Cristo en una fatídica noche, y reciclado de sus registros para poder hacer operaciones de 16 bits sin hacer escrituras a memoria intermedias).

Tú estás usando que usa opcodes distintos (muy fáciles de modificar entre cpus) y que la sintaxis de su ensamblador es distinta para decir que no son cpus similares, hablas de modos de direccionamiento y yo te digo que la sintaxis del ensamblador te la redefino yo cuando quiera, sólo me interesa el código máquina y por tanto qué instrucciones puede usar y contra qué y cómo. Los modos de direccionamiento como que tienen un buen lote de ellos totalmente comunes (PAGINA CERO merece especial mención, pues es algo que NO hay en otras cpus), iba a revisar si REALMENTE hay más modos de direccionamiento per se o simplemente más flexibilidad dentro de ellos (he mirado los comunes y equivalentes sólo), pero sinceramente, NO voy a revisarlo dado que ya me has colado que no coincidían timings cuando sí.

No voy a caer más en la trampa de que escupas datos mal documentados y digas que eso demuestra que no tengo razón y que X es falso cuando si se revisan esos datos se ve que X o no está definido o incluso dice que es CIERTO, una vez eliminada la ofuscación de meter a saco nemotécnicos y formas de referencia sin documentar claramente y liarla parda (una columna de datos o un [d] sin contexto explicativo no sirve de nada).



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.


Sí, y más que aprenderás con el tiempo. ;-)

Lo primero es que no asumas que tienes tú razón ni pretendas ganar una discusión tirando del recurso fácil de "es que como tú quieres tener razón no atiendes a mis razones que son superiores a las tuyas", que son una falacia argumental de libro. Yo atiendo a razones, pero no voy a decir que una cpu no es CISC o es más RISC que CISC sólo porque pretendas usar la falacia de "autoridad" citando unos supuestos conocimientos muy avanzados de código, de los que en principio no tengo porqué dudar demasiado, pero que en el momento en que me empiezas a decir que no ves paralelismos arquitectónicos con el 6502 o me dices que éste es casi RISC, pues... sniff, sniff, ya no me huele a que la falacia de autoridad se sostenga, porque esas cosas yo las tengo claras.

Y coño, me has hecho perder el tiempo contando en las instrucciones equivalentes longitudes en bytes, ciclos, y al final para darme la puñetera razón LOS DATOS, no lo que tú digas y con documentación lanzada sin contexto para ofuscar, porque al final sí se dice donde se documenta lo que yo digo (que las instrucciones equivalentes en ambas cpus son iguales en formato por la longitud de las mismas y en ciclos de reloj necesarios, que nos habla de una etapa de decodificación MUY similar y de una de ejecución también similar).

Yo llevo muchos años programando pero con máquinas y lenguajes modernos, no necesito recurrir a decir que soy un experto en el uso del JarrFX del cartucho de SNES Pumuky's Quest porque he editado alguna línea de código de él para que haga pedorretas el personaje cada vez que golpea, para hacer uso de la falacia de autoridad. Mal vas si tienes que recurrir a decir algo así en vez de argumentar. A mí me despista un montón que cites esas cosas y después cometas errores garrafales como no medírsela bien a las instrucciones (la longitud o los ciclos, se entiende). A las equivalentes entre ambas cpus, algo que dejé claro al inicio de debatir sus similitudes.

No te voy a discutir nada de lo que me digas sobre circuitos analógicos, de hecho te creo de pe a pa cuando me hablas de tecnicismos en esa dirección, tranquilo.

Pero sí te voy a discutir y no dejo pasar que digas que el 6502 es una cpu más risc que cisc porque no es cierto (y joder, si diseñas FPGAs y metes cpus RISC aunque sea "pegar" un diseño ya existente, y programas cpus como el SPC700 o el 65c816, pues como que canta), creo saber porqué lo dices pero me parece un flaco favor repetir el error de mucha otra gente que no parece tener claro el concepto de risc. No lo es en absoluto porque tal como se ha gestionado la arquitectura y bajo qué premisas es todo lo contrario de risc. Una cpu que obliga a usar fuera del modo inmediato modos de direccionamiento contra memoria sí o sí para ops lógicas y aritméticas (fuera de alguna trampilla reciclando registros NO generalistas), NO es una cpu RISC, es una cpu ANTICRIST.. ehhh, digo ANTIRISC.

Y aunque en el sentido estricto ya te he dado la razón sobre que el SPC700 no es un 6502 porque es claramente incompatible (distintos opcodes, daría igual aunque fueran las instrucciones totalmente clavadas en ensamblador), deberías tener claro que es un diseño claramente ya no basado, sino calcado al 6502 pero para los intereses de Sony.

Evidentemente un diseño de una década y pico después que se basa pero evita cualquier compatibilidad a nivel de código máquina NO es una cpu compatible ni que se pueda llamar 6502 ligeramente modificado, si te place.

Pero.... negar el enorme calco arquitectónico y uso de las mismas técnicas en el SPC700 al 6502 ya es otro asunto.

Es como si estuvieras negando que el Z80 se basa claramente en el 8080 como punto de partida. Y hay bastantes más cambios arquitectónicos en el Z80 (para empezar en arquitectura de registros). El Z80 no es un 8080, pero negar que el Z80 bebe del 8080 y sus enormes paralelismos es un fallo garrafal (entre otras el Z80 sí buscaba la compatibilidad con los opcodes del 8080).

Y yo por mí dejo el tema también, porque gastar tanto tiempo en revisar tablas para comprobar que tenía razón al decir lo de "mismos timings, mismas longitudes", pues como que colmó el vaso. Lo siento pero no voy a andar repitiendo el esfuerzo de probar no ya mis argumentos, sino probar que tus datos no apoyan tus argumentos sino los míos.

Si no ves los parecidos claros entre ambas arquitecturas, y que una es base de la otra, no es mi problema, y no pienso explicarte otra vez porqué no es una cpu RISC algo tan claramente CISC como una cpu basada en un único acumulador, que eso es casi de primero, vamos (y agotador repetirlo). XD

Sonaré duro y dirás que no afirmaste eso categóricamente, pero a las pruebas me remito y además es que estamos hablando de una cpu muy alejada del principal paradigma de RISC, lo sugeriste bastante y me has estado mareando la perdiz con el tema de latencias en las instrucciones que es cosa mala, así que no sigo la discusión en esos puntos, si quieres pensar que es "un poco RISC" o "más risc que cisc" un 6502, pues es tu problema. Si no quieres ver que el SPC700 está basado en un 6502, me ignoras, ignoras la wiki, todas las menciones en esa dirección de otra gente, y hasta las similitudes arquitectónicas o en tiempos y longitudes de instrucciones, pues más de lo mismo, yo ya he aportado de sobra para que veas si quieres ver, si no, pues tampoco pasa nada pero no voy a volver a insistir en esa dirección.

sobre circuitos, FPGAs y cosas de las que me reconozco desconocedor aunque pueda conocer funcionalidad básica, no me importa que me documentes, pero no me líes la cabeza más con el tema del 6502/SPC700 y tal, por favor... :p ;)

Saludos, y nos vemos comentando pero ya en otro tema y no este disco rayado.
Vlad escribió:
theelf escribió:@Vlad

Eso depende del vsync, porque dices eso?

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.


Framedelay por lo que leo es otra cosa, no veo porque introducir algo que en la consola oroginal no existe, o al menos eso saco en claro leyendo lo que es

El vsync va a depender de la implementación, cada programador lo hace q su manera. Hay metodos que implican perder o repetir frames, otros cambiar la velocidad de emulacion, algunos general un buffer otros no, otros usan llamas estandar..

Incluso podrias usar el puerto paralelo si quisieras..

http://mjsstuf.x10host.com/pages/vsync/vsync.htm


Por ejemplo, el emulador de neogeo pocket que rescribi para PSP, lo que hice fue sincronizar los primeros segundos del juego al refresco, y luego ya asumo el refresco de la pantalla sera estable, asi que no sincronizo mas
73 respuestas
1, 2