Home Artists Posts Import Register
The Offical Matrix Groupchat is online! >>CLICK HERE<<

Downloads

Content

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

Files

Comments

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

Anonymous

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

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.

Alina Marquardt

Excited for the NGP core when it comes out

JOTEGO

I think that was a regression error introduced in v1.2.75. I'll update the files on Friday. Thanks.