NGP Development Update / 1942/Higemaru for Pocket
🕑 Added 2023-12-22 10:16:00 +0000 UTC2023-12-29 NGP Development Update / 1942/Higemaru for Pocket
Español abajo
NeoGeo Pocket Update
The NeoGeo Pocket core is the worst time to market from my career. I have worked on and off on it for the last two years. During some months, it has been the main focus. I also tried to have three different developers work on test tasks on the system CPU and the whole core with little results. Sadly, after two years, the NGP core was crashing and we could not find the bug. I put the development on hold two months ago in order to reconsider it.
The complication with this core has been the Toshiba 900H CPU. This is a 16-bit CISC CPU that tries to be a hypervitaminated Z80. The instruction encoding is very diverse, going from 1 to ~8 bytes per instruction. And the operations these instructions perform are all but uniform. These two conditions translated to a very convoluted design, with lots of exceptions and long files. Each time I added a new feature to the CPU, I felt like I was less in control of the design. That was a bad feeling. The complexity also made it difficult to hop back and forth from this project to another one, as it took a couple of days to get my head around it each time I resumed it.
I decided to redesign it optimizing development time and debugability over FPGA resources. Normally, a hardware engineer would optimize for less resource usage. But in our case, it has no impact to the user whether 40% or 80% of their FPGA is used on a given core. I changed the CPU architecture to a microcoded one. This means that the CPU is built by combining a number of simpler hardware elements with a control logic that follows a sequence defined in software-like way.
Having microcode for each one of the CPU instructions reversed the feelings about the CPU. This time around, adding a new feature felt like I understood the design better and everything was coming together nicely. Many of the complex operations that required specific implementations before could be broken down into combinations of smaller operations in sequence, so the hardware became much easier.
The hardware simplification can be stated in terms of lines of code. The old design had 4.1k lines of Verilog, whereas the new one is about 1k. That's 4 times less! It's true that the new one also has 1k lines of microcode, of which 300 are instruction definitions and 700 are the instruction sequences.
After two weeks of work, all instructions are implemented in the new design. I am moving next to the test phase using the unit tests I had developed for the old design. Then I will connect it to the rest of the NeoGeo Pocket system. I will give another update in two weeks.
1942, Pirate Ship Higemaru and Vulgus for the Analogue Pocket
The updated JT1942 MiSTer core comes to the Pocket. This core supports three of the first CAPCOM games: 1942, Pirate Ship Higemaru and Vulgus. These games are the initial work that the old Konami developers made when they moved to CAPCOM. But from the three, only Fujiwara's Higemaru has some Konami flavour to it. Fujiwara had worked on Pooyan and Roc'N Rope in Konami, games with no scroll and cute characters where playability was the design goal. Higemaru also falls in that category.
The fourth starting title for CAPCOM is SonSon. I have not made a core for it yet. Every now and then I check whether there is a reasonably priced PCB available but have not been lucky yet. I hope we will get access to it soon.
I hope you enjoy your Christmas Eve.
Español
Noticias de la NeoGeo Pocket
El núcleo de NeoGeo Pocket es el proyecto con más retraso de mi carrera. He trabajado en él de forma intermitente durante los dos últimos años y durante algunos meses, ha sido la tarea principal. También intenté que tres desarrolladores diferentes realizaran tareas de prueba en la CPU del sistema y en todo el núcleo, con escasos resultados. Lamentablemente, después de dos años, el núcleo NGP se bloqueaba y no pudimos encontrar el fallo. Hace dos meses dejé en suspenso el desarrollo para reconsiderarlo.
La complicación con este núcleo ha sido la CPU Toshiba 900H. Se trata de una CPU CISC de 16 bits que intenta ser un Z80 hipervitaminado. La codificación de las instrucciones es muy diversa, yendo de 1 a ~8 bytes por instrucción. Y las operaciones que realizan estas instrucciones son casi uniformes. Estas dos condiciones se tradujeron en un diseño muy enrevesado, con montones de excepciones y archivos largos. Cada vez que añadía una nueva función a la CPU, tenía la sensación de controlar menos el diseño. Era una mala sensación. La complejidad también dificultaba alternar este proyecto y otro, ya que tardaba un par de días en entender el diseño cada vez que lo retomaba.
He decidido rediseñarlo optimizando el tiempo de desarrollo y la depurabilidad sobre los recursos de la FPGA. Normalmente, un ingeniero de hardware optimizaría para utilizar menos recursos. Pero en nuestro caso, no tiene ningún impacto para el usuario si el 40% o el 80% de su FPGA se utiliza en un núcleo determinado. He cambiado la arquitectura de la CPU por una microcodificada. Esto significa que la CPU se construye combinando una serie de elementos de hardware más sencillos con una lógica de control que sigue una secuencia definida de manera similar al software.
Tener microcódigo para cada una de las instrucciones de la CPU invirtió las sensaciones sobre ésta. Esta vez, al añadir una nueva función sentía que entendía mejor el diseño y que todo encajaba a la perfección. Muchas de las operaciones complejas que antes requerían implementaciones específicas podían descomponerse en combinaciones de operaciones más pequeñas en secuencia, por lo que el hardware se hizo mucho más sencillo.
La simplificación del hardware puede expresarse en términos de líneas de código. El antiguo diseño tenía 4,1k líneas de Verilog, mientras que el nuevo tiene alrededor de 1k. Es decir, ¡4 veces menos! Es cierto que el nuevo también tiene 1.000 líneas de microcódigo, de las cuales 300 son definiciones de instrucciones y 700 son secuencias de instrucciones.
Tras dos semanas de trabajo, todas las instrucciones están implementadas en el nuevo diseño. A continuación paso a la fase de pruebas utilizando las pruebas unitarias que había desarrollado para el diseño antiguo. Después, lo conectaré al resto del sistema NeoGeo Pocket. Dentro de dos semanas volveré a informar del progreso.
1942, Pirate Ship Higemaru y Vulgus para la Analogue Pocket
El núcleo actualizado JT1942 de MiSTer llega a la Pocket. Este núcleo soporta tres de los primeros juegos de CAPCOM: 1942, Pirate Ship Higemaru y Vulgus. Estos juegos son el trabajo inicial que hicieron los antiguos desarrolladores de Konami cuando se trasladaron a CAPCOM. Pero de los tres, sólo el Higemaru de Fujiwara tiene algo de sabor a Konami. Fujiwara había trabajado en Pooyan y Roc'N Rope en Konami, juegos sin scroll y con personajes simpáticos en los que la jugabilidad era el objetivo del diseño. Higemaru también entra en esa categoría.
El cuarto título de partida para CAPCOM es SonSon. Aún no he creado un núcleo para él. De vez en cuando compruebo si hay alguna PCB disponible a un precio razonable, pero aún no he tenido suerte. Espero que pronto podamos acceder a ella.
Espero que disfrutes de tu Nochebuena.
Comments
JOTEGO
I think that was a regression error introduced in v1.2.75. I'll update the files on Friday. Thanks.
Alina Marquardt
Excited for the NGP core when it comes out
Rob Steiner Jr.
I just noticed that the Ghost n' Goblins core has crackling audio. Was this there before? I don't recall it. I'm using the latest core, from the previous post.
Urban Knish
Thank you for the hard work of yourself and your team. Sorry to hear about the frustration with the NGP. I agree that leaving it alone for a while and getting results elsewhere is a good strategy. New experience, new strategies and new ways of looking at the problems will happen!
Steven S
My apologies I figured out how to acquire the beta key zip and now understand that if its in the root folder, it will do the work for you. Thank you for all your hard work and preservation! Merry Christmas to all!!!!!!
Salvador Perugorria Lorente
Gracias como siempre :-) . De Son Son hay un core antiguo que lleva unos años en MiST, el año pasado se actualizó por última vez. Igual puedes echarle un vistazo :)
Mat Azel
thanks for your detailed post, I sure appreciate it ! Merry Christmas to you, the team and loved ones!
Josh Parker
I got the 1942 core on my pocket; however, every time I try to get in the game, it says, "Error in framework Missing 'ROM' ID [1]". What should I do to fix this? I have this problem with some other arcade cores as well. Thank you for all you do!
Alex Hunter
Thanks for what you do! What does the timeline look like for Turtles in Time on the Pocket?
JOTEGO
It is on hold. But as you can see from this post, on-hold projects do get resumed eventually.
Benjamin Addison
Check out the interview on Pixel Cherry Ninjas YT channel. Jotego said due to the amount of work required for CPS3 he feels his time would be better spent on other things for now.
Dr. Manga
Gracias como siempre don José (y a doña Esperanza). Feliz Navidad y próspero año nuevo.
Adam Davis
See now ok that is awesome 🤩🙏🏼
Anthony
Is CPS3 development dead?
Mark Kilborn
Thanks for the update, and merry Christmas to you and the team!
Halla
I prefer the arcade cores myself since they never had their own console. The work Jotego has done is incredible and very much appreciated. Merry Christmas!! 🎄 🎅
JOTEGO
Luckily for all of us, this CPU is used in one or two arcade boards too.
Nifled
Feliz Fiestas Jose! 🎄 A ver si 2024 nos trae ese core de NGP!
Alejandro Fajardo
Gracias por el gran trabajo y la dedicacion jose, te mando un abrazo hermano, que tengas muy feliz navidad!
Gabriel S
Newer subscriber really enjoying reading about your efforts with ngp development. Really appreciate all your pocket cores as I don’t have a mister.
Tatton Partington
Thanks for this incredibly detailed update! I’m not surprised by the challenges that have come up with this core. The software emulators for NGP struggle and vary from the original hardware in different ways. I don’t have an engineering-level understanding like you all do but, from a neophyte perspective, it always felt like there was a lot of complexity in the hardware design under the hood of this little handheld. I’m looking forward to seeing if this core will be able to get closer to the original hardware. I’m sorry the NGP core has been such a difficult one to develop. Thank you so, so much for the detailed status update this week. Those of us who are super excited for this core couldn’t have asked for a better Christmas present. I can say enough how much I personally appreciate hearing more info about the work being done and the progress you’re making here. Thanks for all your hard work over this past year! I hope you all are getting to spend time with your friends and families over the holidays and having the opportunities to make some lovey memories.
ER
Really interesting to hear about the redesign and how much better it is working out. Thank you as always!
RobF228
The NeoGeo explanation was just amazing. Great work! Have a great holiday season!
a sandwich
All your work is very appreciated, thank you. Enjoy the journey, and have a great holiday!
Darren Newman
https://www.ebay.co.uk/itm/154513614627?mkcid=16&mkevt=1&mkrid=711-127632-2357-0&ssspo=XiTsBLxaSn-&sssrc=4429486&ssuid=5kcr7wzmtvc&var=&widget_ver=artemis&media=COPY
Adam Davis
Just me but personally I don’t care about the Pocket and hope that someday you can get back to focusing on arcade cores. I do appreciate what you do for this hobby. Thank you Jose. Merry Christmas
JOTEGO
The one in MiSTer is derived from emulation sources, which are derived from software-based reverse engineering. I want to get the board to extract the schematics and make a 100% accurate core based on it. I also want to understand how the CAPCOM hardware evolved from it to 1942, for which there are schematics available.
JOTEGO
Almost all CPUs have used microcode inside, including M68000, 8086. This is actually a hardware design technique, not software. The original microcode for some CPUs is actually known and "public". The CPS core uses a M68000 core that executes the original microcode, so the accuracy is spectacular!
JOTEGO
The updaters should work fine
Yeti X
These are manual install to the pocket? or can I get them with Pocket Updater?
none none
Use of microcode and software emulation is not the same. It's still a hardware implementation, but with a different cpu architecure, with all the advantages of fpga. Again, thank you so much for all your hard work, and best of luck with this approach Team!
Zichio
Thank you for the great work Jose and team👍🏻 Happy holidays😊
Darren Newman
JT has no core for it. But main mister does. I’d be surprised if he will bother with implementing it for pocket alone when someone has already beaten him to the punch.
RetroMister
It's for the Pocket.
Hama
So with all the new microcode / software emulation in fpga CPUs for easier development, do we still have advantages over the old software emulators on PC? Is there still any benefit doing this in fpga then? Could you not just run common software emulators on the Mister ARM cpu then?
Darren Newman
Son son already in main mister, Jose.
Kent Pendragon
... and a very merry Christmas to you!
Kent Pendragon
Great to hear from you again Jotego. Can't wait 'till you finish the Neo Geo Pocket nightmare. Not because I want the core, but because I hope it will free up more time for you to focus on arcade cores (sorry, but that is where my interest is). Must have been an incredible hard process for you to be stuck in. Glad you found a way forward.
Pixel Cherry Ninja
Many thanks, I hope you and the team have a good holiday season.