Out Run PR, CPS2 Pocket, CPS3 Customs (Patreon)
Downloads
Content
Español abajo 日本語は以下
After much work, we finally have the line-based frame buffers working on both the MiSTer and the Pocket. As I explained before, most arcade games draw the sprites as the image lines are scanned. This gives about 64 microseconds to parse and draw the line pixels for each visible sprite. In games with many sprites or very large sprites, like CPS2 or Out Run, those 64us are not enough to draw all sprites. For the CPS2 case, I was barely able to get by without a frame buffer by using a 96MHz clock (rather than the original 16MHz) and a highly optimized sprite logic. But in the case of Out Run it was just too many giant sprites coming in and out. So I needed to implement the frame buffer.
In hindsight, it all looks rather straightforward, but learning how to interface with MiSTer’s DDR memory reliably has been a bit of an adventure. I’ve published some key learnings in the MiSTer’s wiki page so other developers can save some time in the future.
The ROM memories for the road layers also had to be moved from the SDRAM to the internal memory in the FPGA (the BRAM) in order to reduce SDRAM congestion once I took down the system clock from 96MHz to 48MHz.
Out Run is in a much better shape now and is promoted to public release. There are still three things to fix, from which the most annoying one is the sound of the passing-by cars. But these items do not represent big technical hurdles as the frame buffer did, so I am comfortable going out of the beta phase.
The Konami CPU is now designed and connected. We are writing test benches for it and have contacted the author of a popular open-source assembler to add support for it. That way, we will be able to use our test benches for development but even more important, we will be able to write fresh code to run on original arcade PCBs so we can test things on the custom Konami chips. The ETA for Haunted Castle is next Friday best case, but it may need one more week if we get very engaged with testing the CPU before hooking it to a game.
We have traced the first one of the CPS3 chips. You can see an image attached. The next phase is to extract the circuit from the traced die shot, for which we are contacting other developers from the scene for advice. We are also working on a schedule based on this initial work in order to estimate how long it will cost us. Tracing this chip took two full weeks (80 hours).
The JTCOP core (compatible with Robocop and other games) becomes a public release today too for the Pocket. This core was already public for the MiSTer and other machines.
The other Pocket update is that we finally have the full CPS2 library available. Please find all beta files for Pocket attached in a single zip below. The Out Run update for MiSTer is available via update_all. The Out Run update for Pocket is available on JTBIN or by using the public updaters.
Español
Después de mucho trabajo, por fin tenemos los frame buferes por líneas funcionando tanto en la MiSTer como en la Pocket. Como ya expliqué, la mayoría de los juegos de arcade dibujan los sprites a medida que se escanean las líneas de la imagen. Esto da unos 64 microsegundos para analizar y dibujar los píxeles para cada sprite visible. En juegos con muchos sprites o sprites muy grandes, como CPS2 o Out Run, esos 64us no son suficientes para dibujar todos los sprites. En el caso de CPS2, apenas pude arreglármelas sin frame búfer usando un reloj de 96MHz (en lugar de los 16MHz originales) y una lógica de sprites muy optimizada. Pero en el caso de Out Run eran demasiados sprites gigantes entrando y saliendo. Así que tuve que implementar el frame búfer.
En retrospectiva, todo parece bastante sencillo, pero aprender a interactuar con la memoria DDR de MiSTer de forma fiable ha sido toda una aventura. He publicado algunos aprendizajes clave en la página wiki de MiSTer para que otros desarrolladores puedan ahorrar algo de tiempo en el futuro.
Las memorias ROM para las capas de carretera también tuvieron que ser movidas de la SDRAM a la memoria interna en la FPGA (la BRAM) para reducir la congestión de la SDRAM una vez que bajé el reloj del sistema de 96MHz a 48MHz.
Out Run empieza a estar decente así que lo paso a core público. Aún quedan tres cosas por arreglar, de las cuales la más molesta es el sonido de los coches al pasar. Pero estos elementos no representan grandes obstáculos técnicos como sí lo hizo el frame búfer, así que me siento cómodo saliendo de la fase beta.
La CPU de Konami ya está diseñada y conectada. Estamos escribiendo las pruebas de funcionamiento y nos hemos puesto en contacto con el autor de un popular ensamblador de código abierto para que le añada soporte. De este modo, podremos utilizar nuestros bancos de pruebas para el desarrollo, pero lo que es aún más importante, podremos escribir código nuevo para ejecutarlo en las placas originales de las recreativas, de modo que podamos probar cosas en los chips Konami personalizados. La fecha prevista de entrega de Haunted Castle es el próximo viernes en el mejor de los casos, porque puede que necesitemos una semana más si nos dedicamos a probar la CPU bien a fondo antes de conectarla a un juego.
Hemos trazado las pistas del primero de los chips CPS3. Podéis ver una imagen adjunta. La siguiente fase es extraer el circuito a partir de la misma, para lo cual estamos contactando con otros desarrolladores de la escena para que nos asesoren. También estamos elaborando un calendario basado en este trabajo inicial para estimar cuánto tiempo nos costará hacer todos los chips. El trazado de este chip nos llevó dos semanas completas (80 horas).
El núcleo JTCOP (compatible con Robocop y otros juegos) se hace público hoy también para la Pocket. Este núcleo ya era público para la MiSTer y otras máquinas.
La otra actualización para Pocket es que por fin tenemos disponible la librería completa de CPS2. Encontrarás todos los archivos beta para Pocket adjuntos en un único zip más abajo. La actualización de Out Run para MiSTer está disponible a través de update_all. La actualización de Out Run y JTCOP para Pocket está disponible en JTBIN o usando los actualizadores públicos.
日本語
多くの作業を経て、ようやくMiSTerとPocketの両方でラインベースのフレームバッファを動作させることができました。前にも説明したように、ほとんどのアーケードゲームは、画像ラインをスキャンしながらスプライトを描画します。このため、各スプライトのラインピクセルを解析して描画するのに約64マイクロ秒を要します。CPS2やアウトランのように、スプライトの数が多かったり、非常に大きなスプライトを持つゲームでは、この64usではすべてのスプライトを描画することができません。CPS2の場合は、96MHzのクロック(本来の16MHzではなく)と高度に最適化されたスプライトロジックを使うことで、フレームバッファなしで辛うじて凌ぐことができました。しかし、『アウトラン』の場合は、巨大なスプライトの出入りが多すぎたんです。そこで、フレームバッファを実装する必要がありました。
しかし、MiSTerのDDRメモリとのインタフェースを確実に習得することは、ちょっとした冒険でした。MiSTerのWikiページにいくつかの重要な学習事項を掲載しましたので、他の開発者が将来的に時間を節約することができます。
また、システムクロックを96MHzから48MHzに落とすと、SDRAMの混雑を緩和するために、道路レイヤーのROMメモリをSDRAMからFPGAの内部メモリ(BRAM)に移動する必要がありました。
アウトランはだいぶ良い状態になったので、パブリックリリースとなりました。まだ3つほど修正すべき点があり、その中で最も気になるのは、通り過ぎる車の音です。しかし、これらの項目はフレームバッファのような大きな技術的ハードルではないので、安心してベータ段階を抜け出せそうです。
コナミのCPUは、現在、設計と接続を行っています。テストベンチを作成中で、オープンソースのアセンブラの作者にコンタクトを取り、サポートを追加してもらっています。そうすれば、テストベンチを開発に使えるようになりますが、さらに重要なのは、オリジナルのアーケードPCBで動作する新鮮なコードを書けるようになるので、コナミのカスタムチップでいろいろなテストができるようになります。悪魔城ドラキュラのETAは、最良の場合、来週の金曜日ですが、ゲームに接続する前にCPUをテストすることに没頭した場合は、もう1週間必要になるかもしれません。
CPS3チップの最初の1個をトレースしました。添付の画像を見てください。次の段階は、トレースしたダイショットから回路を抽出することで、そのために現場の他の開発者に連絡してアドバイスをもらっているところです。また、この初期作業からスケジュールを立てて、どれくらいの期間がかかるかを見積もっています。このチップのトレースには丸2週間(80時間)かかりました。
JTCOPコア(ロボコップなどに対応)は、本日からPocket用も公開になりました。このコアはMiSTerや他のマシンではすでに公開されています。
もう一つのPocketのアップデートは、CPS2ライブラリの完全版がついに利用可能になったことです。Pocket用のすべてのベータファイルは、以下のZIPに添付されています。MiSTer用のアウトランアップデートはupdate_allで入手可能です。Pocket用のアウトランアップデートは、JTBINまたはパブリックアップデーターで入手できます。