Out Run PR, CPS2 Pocket, CPS3 Customs
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またはパブリックアップデーターで入手できます。
Comments (34)
That's so cool. Thank you very much for your cps core. By the way, can I be the core of igs in the future?
Love the CPS2 cores. Been testing it today on the pocket and it plays PERFECTLY. Only issue is that it seems that 2 player support isn't there yet.
I agree, I tried to play some marvel vs capcom with my brother and we were having issues with remapping player 2 controls to his arcade stick as there wasn’t an option. This would be a great feature to add for some local multiplayer fun!
YES! to everything here.
JT... Stereo separation issue is fixed, as is the PCM volume. However, the extra percussion issue (drums & symbols) still remains. Very noticeable in Magical Sound Shower.
Does anyone else have a problem with Outrun on Mister when you bring up the OSD there's only the generic core settings? Seemed to start with the Saturday morning update that fixed audio.
I'm getting the same thing. I was here looking at comments to see if anyone else was noticing this too.
Thanks a million again for all your work in getting cps2 working! The only issue being with 19xx and Dimahoo being in the wrong orientation on the pocket itself. Flipping it on and off only makes it horizontal and not vertically right side up.
open the video.json file in notepad and change the screen rotation from 90 to 270 and it will rotate correctly
Thank you very much JT and team. Happy gaming everyone!
Hi Jotego, the Dimahoo core appears upside down and the rotate screen option turns it sideways, am I doing something wrong, this wasnt a problem before the latest update? Thanks
I’m seeing the same thing with Contra now. Flip screen in DIP switches doesn’t do anything (reboot to apply, confirm flip screen if ‘on’ where it was previously ‘off’ and the game is still upside down. Something is broken.
Thanks and congrats!
None of the new CPS2 games load on my pocket. Just a black screen and no audio. Please help. :)
Im in the same boat. I used a pocket updater and Im in the same boat. I think the roms in those repositories are the wrong roms. Let me know if you find an alternative.
Great!
Very sad day for MiST users. OutRun was running excellent. An so Turbo OutRun with non decrypted set using the. MRA created by Slingshot. I don't see the point in deleting the rbf.
It wasn't running well. The start screen had a lot of glitches and the sprites were 1 frame off and those things cannot be fixed in that machine because they require more memory than the available one. I cannot serve a partly broken core with no possibility of fixing. The source code for the core had also become incompatible with MiST at this point so I could not update it either. Sorry for the inconvenience. MiST will continue to receive cores as it is capable of holding most arcade games. It's just this one.
So glad to see this! Thank you for the all the work you’ve done to get here!
Fantasic update 🙌
Thanks for your work 🙇♂️
Congrats Jose and team huge milestone!
Just tried the latest OutRun core, which is much improved. However, in addition to the stereo separation issue I reported a while ago, I can also confirm that the Testarossa car sounds (engine/gear change/skidding etc.) are too quiet compared to original hardware? I own the original upright cab and can confirm that these sounds are MUCH louder. I'm also getting extra percussion sounds (drums & symbols) in the music? Oh.. the solid line is still present on the road, plus the OutRun logo (car bonnet) and car tail lights flicker?
Thanks for the hints about the PCM audio, the extra percussion sounds are a good hint! There's something funny going on there but I haven't been able to pinpoint at it. It shouldn't be hard to fix it.
Great to see progress on OutRun JT, keep up the great work, much appreciated!
Pocket users rejoice!
Did update all but Outrun freezes when booting, any ideas?
Try deleting the _Arcade/cores folder and updating again. It’s probably running an old version of the file
Awesome great work! When trying to use an auto updater for the .mra files to turn into .roms I am getting https timeouts for the CSP2 roms as of now.
same to me, I think updaters dont have these yet ready
Great work! Thank you very much!
Happy #JTFriday everyone! Looks like update all script will get a bit of a workout today haha. Thanks to Jose, the team and others working behind the scene on these projects. Nice to see you've promoted Outrun to public release, congrats on what I consider a milestone! The pocket getting a public release boost from the JTCOP additions and cps2 in beta is great news too. Churry.
Jotego and team, thank you very much. Have a nice weekend 😃
So I can at least play it now ?
