NEO-C1 Reborn: Replacing SNK’s Custom Chip with a Modern CPLD
Après plusieurs semaines de travail, de schémas, de code, de mesures à l’oscilloscope et surtout beaucoup de tests sur de vraies consoles, mon projet de remplacement de la NEO-C1 est enfin fonctionnel.
La NEO-C1 est l’une des puces custom que l’on trouve sur les cartes mères des Neo Geo AES et MVS. Comme beaucoup de composants spécifiques conçus pour ces machines au début des années 1990, elle devient aujourd’hui difficile à remplacer lorsqu’elle tombe en panne.
L’objectif de ce projet était donc assez simple à définir, mais beaucoup moins simple à réaliser :
reproduire le fonctionnement de la NEO-C1 avec des composants modernes afin de pouvoir remplacer une puce originale défectueuse.
Pourquoi remplacer la NEO-C1 ?
Sur une Neo Geo, remplacer une RAM, un buffer logique ou un composant standard reste généralement possible. Les composants spécifiques SNK sont une autre histoire.
Ils ne sont plus fabriqués depuis des décennies et la principale source de pièces de remplacement reste malheureusement une autre carte Neo Geo.
C’est une solution qui fonctionne, mais qui consiste finalement à sacrifier une machine pour en sauver une autre.
L’idée de ce projet est différente : recréer les fonctions de la NEO-C1 dans un CPLD moderne, monté sur une petite carte reprenant les connexions nécessaires à la carte mère.
Le cœur du prototype utilise un Altera/Intel MAX 3000A EPM3128, qui dispose de suffisamment de logique pour reproduire les fonctions dont nous avons besoin.
Comprendre ce que fait la NEO-C1
Avant de pouvoir remplacer la puce, il fallait évidemment comprendre son fonctionnement.
Et sur ce point, le travail réalisé par Furrtek a été extrêmement précieux.
Ses reverse-engineerings et ses schémas des circuits custom Neo Geo m’ont fourni une base essentielle pour comprendre la logique interne de la NEO-C1. Sans cette documentation, le projet aurait été considérablement plus difficile.
La puce intervient à plusieurs endroits importants de la machine : décodage de différentes zones mémoire, gestion de certains signaux du bus 68000, communication avec le Z80, entrées des contrôleurs, palette, carte mémoire et génération de différents signaux de contrôle.
Autrement dit, même si la NEO-C1 n’est pas le composant le plus spectaculaire d’une Neo Geo, beaucoup de choses cessent de fonctionner correctement lorsqu’elle n’est plus là.
Du schéma au CPLD
La partie suivante a consisté à traduire cette logique en Verilog afin qu’elle puisse être synthétisée dans le CPLD.
Sur le papier, l’opération paraît relativement directe : observer les portes logiques du circuit original et reproduire leur comportement.
Dans la pratique, c’est beaucoup plus subtil.
Une simple inversion mal interprétée sur un signal peut suffire à empêcher complètement le 68000 de démarrer. Certaines fonctions dépendent également du timing du bus et ne peuvent pas être validées uniquement en regardant un schéma.
C’est pourquoi une grande partie du développement a été faite de manière itérative :
schéma → Verilog → compilation → programmation du CPLD → test sur une vraie Neo Geo → mesures → correction.
Et c’est réellement le hardware qui a eu le dernier mot.
Par exemple, certains problèmes n’ont pu être compris qu’en observant directement DTACK, AS, UDS, LDS, VPA ou les lignes d’adresse du 68000 avec un oscilloscope et un analyseur logique. Les tests ont notamment permis de corriger le comportement de DTACK et de VPA lors des cycles d’interruption du 68000.
Une petite carte à la place de la puce originale
Une fois la logique suffisamment avancée, j’ai conçu une carte dédiée autour du CPLD.
Le but était de conserver une architecture aussi simple que possible : le CPLD, son alimentation, les condensateurs de découplage nécessaires et les connexions correspondant aux signaux de la NEO-C1 originale.
Le CPLD fonctionne en 3,3 V en interne, tout en permettant l’interfaçage nécessaire avec la logique de la Neo Geo.
Le résultat est une carte qui peut prendre la place fonctionnelle de la NEO-C1 sans avoir besoin de récupérer une puce sur une autre console.
Le moment où la Neo Geo démarre
C’est évidemment la partie la plus satisfaisante du projet.
Les premiers essais n’ont pas donné immédiatement un écran avec le logo SNK.
Loin de là.
J’ai eu droit aux écrans remplis de pixels, aux couleurs étranges, aux resets du watchdog et à plusieurs situations où le 68000 semblait fonctionner… sans que la console arrive réellement à démarrer.
Mais ces échecs étaient également très utiles. Chaque nouveau comportement permettait de comprendre jusqu’où le système arrivait à fonctionner.
Une carte de diagnostic 68000 m’a notamment permis d’isoler un problème dans le décodage de la Work RAM. Une fois celui-ci corrigé, la console est allée beaucoup plus loin dans son démarrage.
Les tests sur matériel réel ont ensuite permis de corriger d’autres détails concernant la palette, les contrôleurs et la communication avec le Z80.
Finalement, la console a démarré normalement, les jeux fonctionnent et le son ainsi que les deux contrôleurs sont opérationnels.
Et voir un jeu fonctionner avec la NEO-C1 originale retirée de la carte mère est probablement la meilleure validation possible du concept.
Un projet de préservation
Au-delà du défi technique, c’est surtout cet aspect qui m’intéresse.
Nos Neo Geo ont maintenant plus de trente ans.
Les RAM, buffers, condensateurs et autres composants standards peuvent encore être remplacés. Mais chaque fois qu’une puce custom SNK meurt, le nombre de pièces originales disponibles diminue.
Pouvoir recréer progressivement ces composants avec du matériel moderne permet donc de réparer des cartes qui auraient autrement servi de donneuses de pièces.
Cette NEO-C1 moderne est une petite étape dans cette direction.
Il reste encore quelques situations particulières que je souhaite tester, notamment certains comportements liés aux accès cartouche et à la carte mémoire. Le développement et les tests vont donc continuer.
Mais aujourd’hui, le plus important est là :
une Neo Geo AES peut fonctionner avec ma NEO-C1 de remplacement à la place de la puce SNK originale.
Et ça, après toutes ces heures passées devant les schémas et l’analyseur logique, fait vraiment plaisir.
After several weeks of work, schematics, coding, oscilloscope measurements and — most importantly — a lot of testing on real hardware, my NEO-C1 replacement is finally working.
The NEO-C1 is one of the custom chips found on Neo Geo AES and MVS motherboards. Like many proprietary components designed for these systems in the early 1990s, finding replacements is becoming increasingly difficult when one fails.
The goal of this project was therefore easy to define, although considerably harder to achieve:
reproduce the functionality of the original NEO-C1 using modern components, allowing a faulty original chip to be replaced.
Why replace the NEO-C1?
Replacing RAM, a logic buffer or another standard component on a Neo Geo is usually still possible.
SNK custom chips are another story.
They haven’t been manufactured for decades, which means that another Neo Geo motherboard is often the only source for a replacement.
It works, but ultimately means sacrificing one machine to repair another.
This project takes a different approach: recreating the NEO-C1 logic inside a modern CPLD, installed on a small replacement board providing the connections required by the motherboard.
At the heart of the prototype is an Altera/Intel MAX 3000A EPM3128, providing enough programmable logic to reproduce the functions we need.
Understanding the NEO-C1
Before replacing the chip, I first had to understand what it actually does.
This is where the work done by Furrtek proved invaluable.
His reverse engineering work and Neo Geo custom-chip schematics provided an essential foundation for understanding the internal logic of the NEO-C1. Without this documentation, this project would have been considerably more difficult.
The NEO-C1 is involved in several important parts of the system, including memory address decoding, 68000 bus control signals, communication with the Z80, controller inputs, palette access and memory card control.
It may not be the most famous chip inside a Neo Geo, but quite a lot stops working when it isn’t doing its job.
From schematics to CPLD
The next step was translating that logic into Verilog, allowing it to be synthesized into the CPLD.
In theory, this sounds relatively straightforward: study the original logic gates and reproduce their behaviour.
In practice, things become much more interesting.
A single incorrectly interpreted inverted signal can be enough to prevent the 68000 from booting at all. Some functions also depend on bus timing and simply cannot be validated by looking at a schematic.
Development therefore became an iterative process:
schematic → Verilog → compile → program CPLD → test on real Neo Geo hardware → measure → correct.
And ultimately, the real hardware always had the final word.
Some issues could only be understood by directly observing signals such as DTACK, AS, UDS, LDS, VPA and the 68000 address lines with an oscilloscope and logic analyser. Testing on the real system notably helped identify problems involving DTACK generation and VPA during 68000 interrupt acknowledge cycles.
A small board replacing the original chip
Once the logic was sufficiently developed, I designed a dedicated PCB around the CPLD.
The objective was to keep the design as straightforward as possible: the CPLD, its power supply, the required decoupling capacitors and the connections corresponding to the signals of the original NEO-C1.
The CPLD operates internally at 3.3 V, while providing the required interface with the Neo Geo logic.
The result is a board capable of functionally replacing the NEO-C1 without having to harvest another original chip from a donor motherboard.
The moment the Neo Geo finally boots
This was obviously the most satisfying part of the project.
The first tests did not immediately produce a nice SNK logo.
Far from it.
There were screens full of random pixels, strange colours, watchdog resets and several situations where the 68000 appeared to be running without the system actually booting.
But every failure provided another clue.
A 68000 diagnostic cartridge, for example, eventually helped isolate an error in the Work RAM address decoding. Correcting it allowed the system to progress considerably further through the boot process.
Further real-hardware testing helped correct details involving palette accesses, controller inputs and communication with the Z80.
Eventually, the system booted correctly, games started running and sound and both controllers were working properly.
Seeing a game running with the original NEO-C1 physically removed from the motherboard is probably the best validation of the concept I could ask for.
A preservation project
Beyond the technical challenge, this is the part of the project that matters most to me.
Our Neo Geo systems are now more than thirty years old.
RAM, buffers, capacitors and many standard components can still be replaced. But every time a proprietary SNK chip fails, the available stock of original replacement parts gets a little smaller.
Being able to progressively recreate these components using modern hardware gives us another way to repair boards that might otherwise become donor machines themselves.
This modern NEO-C1 replacement is one small step in that direction.
There are still a few specific situations I want to investigate further, particularly some cartridge-access behaviour and memory-card handling, so development and testing will continue.
But the most important milestone has now been reached:
a real Neo Geo AES can run with my replacement NEO-C1 instead of the original SNK chip.
After all those hours spent staring at schematics and logic-analyser traces, that’s a pretty satisfying result.
Un projet de préservation… et maintenant une V2
Au-delà du défi technique, c’est surtout l’aspect préservation qui m’intéresse.
Nos Neo Geo ont maintenant plus de trente ans. Les RAM, buffers, condensateurs et de nombreux composants standards peuvent encore être remplacés. Mais chaque fois qu’une puce custom SNK tombe en panne, le stock de composants originaux disponibles diminue un peu plus.
Pouvoir recréer progressivement ces composants avec du matériel moderne permet donc de réparer des cartes qui auraient autrement servi de donneuses de pièces.
Cette première NEO-C1 de remplacement constitue surtout une étape essentielle : la preuve que le concept fonctionne sur du matériel réel.
Le CPLD Altera MAX 3000A EPM3128 utilisé pour ce prototype est cependant lui-même aujourd’hui obsolète. Il reste possible d’en trouver, mais ce n’est clairement pas une solution idéale si l’objectif est de produire à terme une petite série de cartes de remplacement.
En parallèle du développement et des tests de cette première version, j’ai donc déjà travaillé sur un nouveau design basé sur un CPLD actuel, plus facilement disponible et mieux adapté à une éventuelle petite production.
Et l’électronique ne sera pas le seul défi.
Il va également falloir travailler sérieusement sur le form factor de la carte. La NEO-C1 a été utilisée sur différentes révisions de cartes mères AES, avec des contraintes mécaniques qui ne sont pas toujours identiques. Et si l’on veut aller plus loin, il faudra également prendre en compte les différentes cartes MVS utilisant cette puce.
L’objectif serait évidemment d’arriver à une solution aussi universelle que possible, facile à installer et compatible avec un maximum de révisions sans modifications importantes.
Entre le choix du nouveau CPLD, le routage, les dimensions de la carte, son positionnement et les différentes révisions AES et MVS, ce sera certainement un nouveau challenge à part entière.
Mais la partie la plus importante est maintenant acquise : nous savons qu’il est possible de remplacer une NEO-C1 originale par une implémentation moderne et de faire fonctionner une vraie Neo Geo avec.
Le prototype fonctionne. Maintenant, il faut transformer le prototype en une vraie solution de remplacement.
Beyond the technical challenge, the preservation aspect is what interests me the most.
Our Neo Geo systems are now more than thirty years old. RAM, buffers, capacitors and many standard components can still be replaced. But every time a proprietary SNK chip fails, the available stock of original replacement parts gets a little smaller.
Being able to progressively recreate these components using modern hardware gives us another way to repair boards that might otherwise end up becoming donor machines themselves.
This first NEO-C1 replacement therefore represents an essential milestone: proof that the concept actually works on real hardware.
There is, however, another problem. The Altera MAX 3000A EPM3128 CPLD used in this prototype is itself now obsolete. Devices can still be found, but relying on an obsolete component is obviously not an ideal solution if the goal is eventually to manufacture a small batch of replacement boards.
So, alongside the development and testing of this first version, I have already been working on a new design based around a current CPLD, with better availability and therefore much better suited to a possible small production run.
And the electronics won’t be the only challenge.
A considerable amount of work will also be required on the physical form factor of the replacement board. The NEO-C1 was used across several AES motherboard revisions, and the mechanical constraints are not necessarily identical between them. Going further will also mean taking into account the different MVS boards using the chip.
Ideally, the final design should be as universal as possible, easy to install and compatible with as many board revisions as possible without requiring major modifications.
Between selecting the new CPLD, routing the PCB, reducing its dimensions, finding the right physical layout and dealing with the different AES and MVS revisions, this will certainly be a new challenge of its own.
But the most important milestone has now been reached: we know that an original NEO-C1 can be replaced by a modern implementation and that a real Neo Geo can run with it.
The prototype works. Now the challenge is turning that prototype into a proper replacement solution.
/image%2F0533879%2F20260831%2Fob_07be2a_img-1027.jpeg)
/image%2F0533879%2F20260831%2Fob_10c71b_img-1014.jpeg)
/image%2F0533879%2F20260831%2Fob_8bf4bb_img-1013.jpeg)
/image%2F0533879%2F20260831%2Fob_270b7b_img-1025.jpeg)
/image%2F0533879%2F20260831%2Fob_49a7f0_img-1032.jpeg)
/image%2F0533879%2F20260831%2Fob_2c79b7_img-0802.jpeg)
/image%2F0533879%2F20260831%2Fob_41d9b4_capture-d-ecran-2026-08-13-a-15-39.png)
/image%2F0533879%2F20260831%2Fob_1ac40b_capture-d-ecran-2026-08-13-a-15-22.png)