Corriendo código propio en el chip SVP de SEGA (Virtua Racing)

1, 2, 3
Andrómeda escribió:@Taiyou (Ojo) Una pregunta tonta [borracho] , un juego normal, y más específico, algún juego del catálogo con ralentizaciones del se podría usar ahí y mejoraría algo o el SVP no puede tratar esos gráficos 2D y darle ese soporte extra para acabar con los problemas de ese supuesta rom con ralentizaciones.


Mmm no soy un experto en gráficos, pero con el SVP se podrían hacer cosas como rotaciones o scaling the sprites perfectamente. El problema es el mismo que tenía Virtua Racing, hace falta pasar esos gráficos generados en el SVP a la memoria de video de la Mega Drive para que se puedan mostrar por la salida de vídeo. La Mega Drive tiene DMA pero no es tan rápido como podría parecer (por eso el dibujado de los framebuffers de Virtua Racing hace que el juego realmente corra a 15fps).

Al final es lo comido por lo servido. Seguro que se puede optimizar, Virtua Racing tengo claro que se hizo deprisa y corriendo (nunca mejor dicho lol). Pero vamos, si abandonaron el SVP en su momento por cosas como el 32X es por limitaciones como esta.


Por cierto, como el proceso de desensamblado de la ROM interna me va a llevar un tiempecillo (me estoy encontrando bugs en mi ensamblador del SVP y otras mierdas XD), voy a ir publicando cachillos poco a poco. Por si os interesa echar un vistacillo: https://github.com/jdesiloniz/svpdev/wiki/Internal-ROM

Taiyou
@Taiyou correcto el X7 o el Pro tienen soporte para el SVP, me refería al resto de gama del EverDrive, creo que el más básico soporta Rom de hasta 7MB.
Creation escribió:@Taiyou correcto el X7 o el Pro tienen soporte para el SVP, me refería al resto de gama del EverDrive, creo que el más básico soporta Rom de hasta 7MB.


Acabo de encargar una placa para poder usar un cartucho flash "normal" con el SVP tal como lo tengo montado. Por lo que me han dicho la gente de Plutiedev los everdrive no me van a ir (requieren más señales de las que espero)... pero bueno, hay otros cartuchos flash mas simples (con programadores externos) que creo que podrían funcionar así :D.

Taiyou

PD: acabo de actualizar la wiki con el desensamblado entero de la ROM esta que me he encontrado dentro del SVP. https://github.com/jdesiloniz/svpdev/wiki/Internal-ROM. Por si tenéis curiosidad :D.

PD2: Os juro que no vuelvo a hacer nada semejante, todo esto lo he sacado de 7 fotos a mi tele con numericos por todas parte, a manubrio... XD

Imagen
Bueno, entre una cosa y otra no es que haya habido muchas novedades en el tema del SVP, pero mientras espero a que me lleguen unas placas que me permitirán (si todo va bien) ejecutar movidas más rápidamente que ahora, me he puesto a investigar un poco sobre los timings dentro del chip.

Por una parte, me monté una especie de "benchmark" simple que ejecuta una de las rutinas de la ROM interna que me encontré el mes pasado pero desde las 3 fuentes de código posibles que hay: la IRAM (una memoria donde se pueden cargar dinámicamente instrucciones y saltar a ella en cualquier momento), la ROM externa y la ROM interna. Tras ver los resultados de cuántas ejecuciones de esta rutina se pueden hacer en 5 segundos desde cada una de las fuentes, parece ser que tanto la IRAM como la IROM ejecutan código aproximadamente un 70% más rápido que desde la ROM.

Aparte, he estado currando un poco en montarme un sistema para medir los timings de las instrucciones por separado. Tras intentar (en vano) arrancar el SVP fuera de la Mega Drive, al final lo que he hecho es buscarme las papas para poder parar el 68000 en seco desde la consola, dejando al SVP accediendo a sus movidas por sí solo. Con lo cual ya he podido ver esto en el osciloscopio:

Imagen

Con esto en teoría ya puedo ir viendo cómo cada instrucción rinde (desde la ROM, o en mi caso, la EPROM) comparada con las otras. Por ejemplo se sabe que la que sale en la foto de arriba (la de multiplicación) se ejecuta en un ciclo de instrucción (según el datasheet del DSP que lleva dentro el SVP), con lo cual podré saber si otras instrucciones se ejecutan en 2 o 3, o los que sean. Pero esto llevará un tiempo, ya que sólo podré hacer esto con EPROMs y es un coñazo enorme ir borrándolas y grabándolas XD.

Si tenéis curiosidad lo estoy recopilando todo aquí: https://github.com/jdesiloniz/svpdev/wiki/Timings

Taiyou
Menudo crack estás hecho
danibus escribió:Menudo crack estás hecho


Gracias compi! Yo encantado de que esto ayude a alguien.

Lo he mencionado antes por Twitter, pero me he dado cuenta de que se pueden ver en GitHub quién enlaza a tus repos y wikis. Gracias a eso me he dado cuenta de que han usado parte de la información del proceso de boot-up que saqué de la ROM interna en cómo detecta el Genesis Plus GX si un juego es del SVP o no. Ya con cositas así dan ganas de seguir sacando más movidas :D.

Taiyou
@Taiyou

Ya te dije yo que lo que estabas haciendo tenía miga y saldrían interesados. [plas]
Genial trabajo 👏👏👏
Enhorabuena por tu trabajo, siento envidia sana por todo lo que haces y buscar soluciones a los problemas que encuentras. Como dice otro compi, menudo crack estás hecho!!!

Saludos y a seguir sacando info del SVP.
Muy interesante el hilo y gracias a el he descubierto que mi V.R no tiene la chapa del disipador tendre que hacer un apaño xD
kkdelavk escribió:Muy interesante el hilo y gracias a el he descubierto que mi V.R no tiene la chapa del disipador tendre que hacer un apaño xD


Hostia pues métele pasta térmica y un disipador pequeñito que te entre en la carcasa, porque los SVP cascan que da gusto con ese tema! Yo las pruebas las estoy haciendo sin disipador (tengo que cortar la carcasa para que me entre todo) y no dejo el cartucho encendido ni 1 minuto si puedo evitarlo XD.


Gracias a todos por el feedback! :D

Taiyou
Imagen

He aprovechado el IHS de cobre que tenía y la verdad que ha quedado bien, también lleva pasta termica xD
Yo no tengo ni idea de programacion, pero me encanta leer sobre este tipo de cosas jeje.

Impresionante el curro que te estas pegando! [plas]

Ojala esto anime a que alguien empiece a sacarle jugo al SVP [beer]
provocaran estos descubrimientos una revalorizacion en los juegos con SVP? [mad]














pd. lease en EL juego con SVP XD
kkdelavk escribió:Imagen

He aprovechado el IHS de cobre que tenía y la verdad que ha quedado bien, también lleva pasta termica xD


Hostia, esta qué versión del juego es? Al menos en la foto la carcasa parece gris no? Yo sólo tengo la europea, el disipador que lleva también es totalmente diferente.

OOQQ escribió:provocaran estos descubrimientos una revalorizacion en los juegos con SVP? [mad]


Uy, espero que no XD. Hablando en serio... lo dudo, no creo que nadie se plantee hacer un juego comercial a base de modificar cartuchos existentes. Por mucho que haya publicado las placas que estoy usando, modificar el cartucho requiere cierta (no mucha) maña. Lo puede hacer cualquiera con un soldador decente, pero lleva un rato.

Eso sí, como dice @7Force ojalá esto llevase a más gente haciendo cosillas homebrew. Pero ahora mismo veo la scene homebrew muy enfocada a vender juegos (ojo, lo veo normal), así que no sé. Yo seguiré trasteando igualmente :D.


No tengo muchas novedades que aportar, sigo liado con los timings de las instrucciones y otros detallitos. A ver si de una vez consigo cargar código de una manera más ágil que la actual (las EPROM son un dolor) y puedo hacer cosillas más "chulas" :D.

Taiyou
Increíble, me quedo por aquí
Taiyou escribió:Hostia, esta qué versión del juego es? Al menos en la foto la carcasa parece gris no? Yo sólo tengo la europea, el disipador que lleva también es totalmente diferente.


Seguramente sea la japonesa que es gris.

Imagen

También hay asiáticas y coreanas que son grises. (Lo acabo de ver en Sega Retro)
Imagen

Ya por ver algún cartucho más en negro, el USA y brasileño

Imagen

Imagen

En Sega Retro salen también los disipadores de USA y Europa y viendo la foto son distintos. Yo solo conocía el de la versión PAL

USA:
Imagen

PAL:
Imagen

A ver si se pueden aprovechar en cosas chulas tus investigaciones. [oki]
txefoedu escribió:A ver si se pueden aprovechar en cosas chulas tus investigaciones. [oki]


Gracias por las fotos!! Qué pena haber dejado escapar un VR japonés que vi por cuatro perras en Tokyo... ains. Se ve chulísimo el cartucho en gris. Y el logo del SVP japonés es precioso tb <3.

Taiyou
@Taiyou si, es la version jap y como no tenia disipador le puse eso XD
como curiosidad este reciente video documental =

@Taiyou

En otro hilo he visto un video en el que te mencionan, creo: https://youtu.be/VL9doD-6Av8?t=62
gynion escribió:@Taiyou

En otro hilo he visto un video en el que te mencionan, creo: https://youtu.be/VL9doD-6Av8?t=62


Hostia, gracias tío! Matt me preguntó por Discord si pronunciaba bien mi nombre en un audio del vídeo que me mandó, pero luego no me mandó ni link ni nada XD. Lo acabo de ver, mola!

Por cierto, el reportaje que menciona @Creation es de lo mejor que he visto en YT en mucho tiempo.


Progresos por mi parte... poca cosa. He actualizado la wiki del repositorio con algunos detallitos del DSP y los registros externos que he ido sacando, pero de momento he estado líado con la placa que me debería permitir mandarle código al cartucho desde mi FPGA. La cosa es que de momento no funciona ni a tiros XD, me va a tocar debugar a tope porque estoy de las EPROM hasta no os digo dónde XD.

Taiyou
Buenas! Por mover un poco eso que parece que me he estado tocando los cataplines con el tema del SVP y todo lo contrario. Os comento un poco como ha ido la cosa estos días:

- Hice un intento (infructuoso) de cargar código desde la FPGA que tengo. No hubo manera, cargaba un poco y luego se iba todo a tomar por FAKS. Pero vamos, como era un poco por avanzar más rápido y ya llevaba 2 semanas intentándolo mandé la idea a tomar viento. Como alternativa me viene de camino un grabador de EEPROMs nuevo que soporta unas que hay de 2MB que en teoría deberían serme compatibles, lo cual pasaría de gastar 20 min en cargar código a tardar 1 min :D. Veremos a ver.

- En lo que respecta a la investigación del SVP he estado sacando cosillas guapas. Primero tenemos todo el registro de estado (ST) ya más o menos dominado, incluyendo todas las movidas que VR no usa. Luego también otros detallitos como todas las condiciones de salto que se han ignorado hasta ahora porque VR no las usaba tampoco. Finalmente conseguí demostrar que el chip genera interrupciones al DSP interno, una de ellas asociada a la señal HBLANK del cartucho (salta cuando el rayo de dibujado de la pantalla ha dibujado una línea) y otra tb de timing que probablemente está conectada al reloj del 68000. Todo esto está convenientemente documentado en mi wiki.

- Finalmente hoy he estado desensamblando una parte de la ROM de Virtua Racing que no se usaba y que me llamó la atención (porque es la única que parece usar las interrupciones). Pues resulta que es una colección de tests que prueba toda la circuitería extra que añadió SEGA al DSP. Lo guapo es que seguramente se hizo mientras el chip estaba en desarrollo, porque hay tests que se ejecutan una y otra vez cientos de veces. Ha estado curioso ver lo que seguramente es el origen de todo el desarrollo del juego. He comentado el código lo mejor que he podido aquí para darle sentido hasta dónde me llega el coco por si alguno tiene curiosidad.

Pues eso, a disfrutar!!

Un saludo,

Taiyou
Taiyou escribió:que se corren una y otra vez cientos de veces

Válgame Dios...
Pues eso, a disfrutar!!

Y tanto.
psicopompo escribió:
Taiyou escribió:que se corren una y otra vez cientos de veces

Válgame Dios...
Pues eso, a disfrutar!!

Y tanto.



Jajajaja me ha dado la manía de traducir run a lo basto XD. Corregido!
psicopompo escribió:
Taiyou escribió:que se corren una y otra vez cientos de veces

Válgame Dios...
Pues eso, a disfrutar!!

Y tanto.


[qmparto] [qmparto] [qmparto]

@Taiyou

Muy interesante lo de los tests. Pequeñas historias ocultas de los videojuegos. Debe ser genial ser el descubridor. Gracias por compartirlo.
Oye olvidad lo de "sin usar", me he dado cuenta justo cuando me iba a dormir de que esto realmente es el lado del DSP de los tests que se pueden arrancar en el cartucho (conectando un pad con todos los botones pulsados a la vez cuando enciendes la consola).

Pues bueno, al menos le he metido mano a esos tests de una vez para ver lo que hacían!

Taiyou
Mola mola, ya queda menos para que empiecen a sacar juegos como churros con el SVP [jaja]
Bueno, el firmware interno que me encontré en el SVP ya es parte del ROMset del MAME desde su versión 0.230. Contentísimo estoy de aportar mi granito de arena ahí :D.

Taiyou
Enhorabuena, excelente trabajo.
Gracias por tu aporte!
¡Qué maravilla de hilo! De refilón he aprendido por qué mi virtua racing tiene fallos gráficos, como le pasaba a otro forero. Gracias y enhorabuena. [oki]
@Taiyou Gran proyecto.

Como aportación para acelerar el desarrollo, sólo comentarte que existen simuladores de EPROM que conectando con un cable el zócalo de la eprom al PC puedes ir cambiando la ROM al vuelo desde el PC

Aquí hay uno, pero es para eproms más pequeñas

https://mygeekyhobby.com/2020/07/05/eprom-emulator/
Mil escribió:@Taiyou Gran proyecto.

Como aportación para acelerar el desarrollo, sólo comentarte que existen simuladores de EPROM que conectando con un cable el zócalo de la eprom al PC puedes ir cambiando la ROM al vuelo desde el PC

Aquí hay uno, pero es para eproms más pequeñas

https://mygeekyhobby.com/2020/07/05/eprom-emulator/


Gracias @Mil y @Bardeo!

Vi lo de los emuladores de EPROM en su momento pero al final me decidí por pillar un grabador que grabase EEPROMs más grandes y así no tener que andar líado con lo de borrarlas y demás.

De todos modos me metí tan a lo basto en el proyecto que acabé quemadísimo XDDD, y de todos modos he conseguido sacar mucho más de lo que pensaba así que en principio a corto plazo no creo que invierta tiempo en el proyecto. Pero si alguien se anima a intentar desarrollar algo que cuente conmigo para resolver dudas o lo que haga falta :))

Taiyou
No sabía de la existencia de este hilo. Es jodidamente interesante. Mil gracias por las molestias que te tomaste en investigar el tema @Taiyou
@Taiyou ¿Avanzaste algo más en esto? [beer]
Ya queda menos para ver un hilo de si sería posible un Shenmue con el chip SVP o ya ha sido creado?
Hola de nuevo! No os esperéis tampoco una locura ahora :D.

Hace unos meses contacté con un chaval alemán que, entre otras cosas, tiene equipamiento para decapar chips. Le mandé un SVP y hace unas semanillas me dijo que pudo decaparlo con éxito y ha estado trabajando en sacar unas panorámicas en HD del chip y aparte en sacar conclusiones de más o menos qué es cada parte.

Imagen
Imagen
Imagen

Podéis ver un resumen de lo que he sacado en claro gracias a su análisis en esta página de mi wiki.

Tampoco es que cambie mucho lo que ya sabíamos del chip, pero confirma ciertas cosas:

- Lo primero confirmar que el DSP que lleva dentro es un SSP1601S. Hubo meses en que pensé que no era el caso porque la documentación que tenía al respecto mencionaba cosas que no encajaban con lo que había probado experimentalmente con mi cartucho. Resulta que había dos variaciones (SSP1601M y S) y la documentación que yo tenía era de la versión "M" así que de ahí la confusión :D.
- El nombre en clave del SVP es SEGA160FS. Esa denominación ya se había visto en una etiqueta de un cartucho de desarrollo oficial que se ha vendido por ahí hace años (seguramente de cuando llevaron Virtua Racing al ECTS en el 94).
- No hay más ROM interna que la que encontré, que es una de las cosas que imaginé que podría ocurrir.

Otros detalles, como la función de alguna de la circuitería interna que se añadió al DSP por parte de SEGA, va a ser más complicado porque aunque sean una pasada las fotos no tienen resolución suficiente. Pero yo estoy super contento con cómo ha quedado todo! :D

Pensé que os molaría ver esto, así que ahí lo lleváis :D. Aparte de eso estoy trabajando en una cosilla relacionada, pero como está en ciernes (y con la vida adulta está complicado sacar tiempo) ya os la contaré llegado el momento :).

Un saludo!

Taiyou

PD: En un alarde de serendipia brutal, la misma semana que me pasaron las fotos estas, Furrtek publicó las primeras fotos de un decapado del chip Super FX, por si tenéis curiosidad en comparar :). https://twitter.com/furrtek/status/1504259740628623365
@Taiyou muy interesante, gracias por el aporte.
@Taiyou

Gracias crack. Es curioso, el SVP parece mucho mas sofisticado que el Super FX, siempre se ha dicho que el SuperFX era más versátil pero en las fotos parace un simple gate array enorme y el SVP parece *salvando las diferencias* un sistema en si mismo, con su propio clock, ram, dsp, etc. No me extraña que fuese caro, era demasiado ambicioso en mi opinión.
@Taiyou esto que nos enseñas es una locura. Para nosotros los curiosos, significa mucho, de verdad. Eternamente agradecido.

PD: maldita vida de adulto [buuuaaaa]
@Taiyou, brutal como siempre, con muchas ganas de saber lo que tienes entre manos...

Gracias a ti, EOL hoy es un poco mejor que ayer.

Saludos
danibus escribió:@Taiyou

Gracias crack. Es curioso, el SVP parece mucho mas sofisticado que el Super FX, siempre se ha dicho que el SuperFX era más versátil pero en las fotos parace un simple gate array enorme y el SVP parece *salvando las diferencias* un sistema en si mismo, con su propio clock, ram, dsp, etc. No me extraña que fuese caro, era demasiado ambicioso en mi opinión.


Sí, el SVP es definitivamente más complejo. El Super FX es un RISC con una SRAM embebida. Por los timing que saqué la gente de Plutiedev decía que sobre el papel (y obviando el lado de la Mega Drive), el SVP es bastante más potente que el Super FX. De hecho con todo esto comentaban el otro día la posibilidad de hacer benchmarks y correrlos en ambos, pero claro... hay que escribirlos y ahí ya nadie se moja [sonrisa].

De todos modos el cuello de botella del DMA de la Mega Drive sigue estando ahí.


Yo acabo de empezar a montarme un emulador de desarrollo del SVP, básico pero que más o menos cumpla con los timings que he visto experimentalmente. Algo similar a lo que tendrían para desarrollar en su momento, para poder hacer debug y programar de manera más ágil porque ir cambiando EEPROMs en el cartucho cada vez que quieres probar algo es un dolor absoluto XD. Me gustaría poder hacer alguna demo 3D que use la librería interna que encontré dentro del chip como muestra, pero sin una herramienta así está jodido. A ver si saco tiempo y lo puedo hacer, que si no le doy cariño al chip yo no se lo da nadie :P.

Taiyou

PD: Gracias al resto por las felicitaciones y agradecimientos! Realmente en este caso no he hecho nada salvo desoldar el chip y mandarle un aporte económico al chaval :D. Pero al menos me ha servido para cogerle ganas de nuevo al proyecto e intentar cosillas nuevas :).
Gran investigación y aporte. Aplausos! [beer] [beer]
nada, nada, a montar una plataforma para "¡salvemos el SVP!" y que se animen programadores para ser los primeros en sacar algo para el SVP :)

A ver si al final tenemos Mega+CD+SVP+32X > Saturn!!! :D

En serio, gracias por tu fantástico aporte.
Cada vez va subiendo más el nivel de la investigación [tadoramo]
Naitguolf escribió:nada, nada, a montar una plataforma para "¡salvemos el SVP!" y que se animen programadores para ser los primeros en sacar algo para el SVP :)

A ver si al final tenemos Mega+CD+SVP+32X > Saturn!!! :D

En serio, gracias por tu fantástico aporte.



Gracias a todos!!

Hombre, yo quizás no soy objetivo... pero tengo claro que el SVP es clave para entender la historia de SEGA tal como la conocemos. El 32X es una respuesta directa a los problemas que tenía el SVP. Primero por el tema de que por lo visto los SVP cascaban a tope en el proceso de fabricación (alguien me comentó que el 15-20% salían defectuosos de fábrica) lo que motivó que Hayao Nakayama llegase a un acuerdo con Hitachi y de ahí el uso de los SH2 en 32X/Saturn y los SH4 en Dreamcast.

Aparte lo del 32X teniendo su propia salida de vídeo, con lo que se podían saltar el cuello de botella del DMA de la Mega Drive. También me consta de mínimo dos juegos que empezaron a hacerse para el SVP y acabaron en el 32X (uno porque su desarrollador me lo dijo expresamente, otro porque vi la cabecera de seguridad del SVP en una ROM beta de la versión 32X :P).

Pero como digo tampoco soy objetivo y para mí el SVP tiene un lugar muy grande en mi tecnocorazoncito :D.

Taiyou
Taiyou escribió:También me consta de mínimo dos juegos que empezaron a hacerse para el SVP y acabaron en el 32X (uno porque su desarrollador me lo dijo expresamente, otro porque vi la cabecera de seguridad del SVP en una ROM beta de la versión 32X :P).

Muy interesante. El SVP era un buen pepino en su época.
No hace falta que nos digas el pecador, pero ya me has dejado con la mosca del pecado. ¿Puedes contarnos que dos juegos se pasaron a 32X? ¿Sabiendo lo que sabes, técnicamente un Add-on SVP podría haber existido?
Imagen
113 respuestas
1, 2, 3