Neo Geo AES no booting cartridge game (Stephnoize)
Cher public, je vais te narrer l’histoire d’une Neo Geo qui a décidé, pour des raisons manifestement syndicales, de cesser toute activité et de ne plus lancer les jeux qu’on lui présente, en tout bien tout honneur.
Les symptômes de départ étaient simples : un écran bleu au démarrage.
Ce détail a son importance, car il indique déjà quelque chose d’essentiel : le BIOS a correctement effectué sa séquence de boot. La console n’est donc pas totalement morte, loin de là. Une partie du système fonctionne encore et passe les premières étapes de démarrage.
Autrement dit, la machine respire encore… mais refuse de travailler davantage.
Je vais donc t’expliquer, cher public, comment tout cela se passe à l’intérieur.
Sur une Neo Geo, le démarrage suit plusieurs étapes précises :
-
mise sous tension,
-
exécution du BIOS,
-
initialisation du matériel,
-
détection de la cartouche,
-
lancement du programme contenu dans le jeu.
Si l’écran bleu apparaît, cela signifie généralement que les premières étapes sont validées. Le processeur principal se réveille, le BIOS s’exécute, et la machine arrive jusqu’à un certain point logique du processus.
Le problème se situe donc souvent après cela :
-
communication avec la cartouche,
-
lecture de la ROM programme,
-
mémoire de travail,
-
bus de données,
-
ou logique d’adressage.
En résumé, la console s’allume, prend son poste… puis décide qu’elle n’en fera pas plus.
Le diagnostic peut alors commencer.
--------------------------------------------------------------------------
Dear audience, let me tell you the story of a Neo Geo that decided, apparently for union-related reasons, to cease all activity and refuse to launch any game inserted into it, in the most honorable sense of the phrase.
The initial symptom was simple: a blue screen at startup.
That detail matters, because it already tells us something important: the BIOS completed its boot sequence correctly. The console is therefore not completely dead, far from it. Part of the system is still functioning and passes the first startup stages.
In other words, the machine is still breathing… but refuses to work any further.
So let me explain, dear audience, how all of this works internally.
On a Neo Geo, startup follows several precise steps:
-
power on,
-
BIOS execution,
-
hardware initialization,
-
cartridge detection,
-
launching the game program.
If the blue screen appears, it usually means those first stages are successful. The main processor wakes up, the BIOS runs, and the machine reaches a certain logical point in the process.
The fault is therefore often located after that stage:
-
communication with the cartridge,
-
reading the program ROM,
-
work RAM,
-
data bus,
-
or address decoding logic.
In short, the console clocks in, takes its position… and then decides it will do no more work.
That is where the real diagnosis begins.
Mais à force d’allumer, d’éteindre, puis de rallumer encore, un nouveau symptôme apparaît : un magnifique écran fuchsia.
Et sur Neo Geo, ce changement de couleur n’est pas anodin. Il oriente cette fois vers un problème lié au BIOS, ou plus précisément à ce qui gravite autour de sa lecture.
Le bleu initial indiquait une séquence de démarrage partiellement valide. Le fuchsia, lui, suggère que quelque chose s’est déplacé dans la panne, ou qu’un défaut intermittent devient plus franc au fil des cycles de mise sous tension.
Parfait, car de toute façon il était prévu de poser un support BIOS. Ce sera l’occasion idéale de tester un autre BIOS, de vérifier si la ROM d’origine est corrompue, ou d’écarter définitivement cette piste.
Mais, honnêtement, mon petit doigt me dit que le vrai perturbateur se trouve ailleurs.
Mon attention se porte plutôt sur le NEO-E0.
Ce composant intervient dans la logique d’adressage et la distribution de certains signaux mémoire. En observant les entrées et sorties :
-
A22 / A23
-
A22Z / A23Z
le comportement paraît anormal.
On a l’impression que la puce adresse simultanément sur deux canaux qui devraient rester distincts ou correctement commutés.
En résumé simplifié : plusieurs chemins semblent parler en même temps.
Et lorsqu’un circuit d’adressage commence à envoyer des informations contradictoires :
-
la ROM n’est plus lue correctement,
-
les sélections mémoire deviennent incohérentes,
-
le BIOS reçoit des données erronées,
-
la console hésite… puis renonce.
La Neo Geo, ne comprenant plus rien à ce qu’on lui raconte, décide alors de ne rien faire du tout.
C’est souvent une réaction assez raisonnable.
-----------------------------------------------------------------------------
But after repeated power-on and power-off cycles, a new symptom appears: a beautiful fuchsia screen.
And on Neo Geo hardware, that color change is not trivial. This time it points toward a BIOS-related issue, or more precisely something affecting BIOS access.
The initial blue screen suggested that part of the boot sequence was still functioning. The fuchsia screen, however, suggests the fault has shifted, or that an intermittent problem has become more pronounced after repeated power cycles.
Perfect, because installing a BIOS socket was already planned anyway.
That gives an ideal opportunity to test another BIOS, verify whether the original ROM is corrupted, and rule out that possibility once and for all.
But honestly, my instinct says the real troublemaker lies elsewhere.
My suspicion turns toward the NEO-E0.
This chip is involved in address logic and routing of certain memory signals. While analyzing the inputs and outputs:
-
A22 / A23
-
A22Z / A23Z
the behavior looks abnormal.
It appears as though the chip is driving two channels at the same time when they should remain separated or properly switched.
In simplified terms: multiple paths seem to be talking simultaneously.
And when an address logic circuit starts sending contradictory information:
-
ROM reads become invalid,
-
memory selection becomes inconsistent,
-
the BIOS receives incorrect data,
-
the console hesitates… then gives up.
The Neo Geo, no longer understanding what it is being told, simply decides to do nothing at all.
Which, in fairness, is a fairly rational response.
Après remplacement du NEO-E0 et installation d’un UniBIOS 4.0, la machine redémarre enfin jusqu’au BIOS.
Premier progrès notable : on a quitté le stade du simple écran coloré sans vie. La console exécute désormais suffisamment de code pour atteindre une vraie phase de diagnostic.
Et là, elle m’accueille avec un message d’erreur.
Le 68000 tente donc d’exécuter une instruction qui n’existe pas dans son jeu d’opcodes. En clair, il lit quelque chose qui devrait être du code… mais qui n’en est pas.
Premier réflexe évident : incriminer la cartouche.
Mais non. La cartouche fonctionne parfaitement sur d’autres systèmes. On peut donc raisonnablement l’écarter de la liste des suspects.
L’erreur apparaît à l’adresse :
0x1008
Encore une fois, la machine m’indique précisément ce qui ne va pas… et encore une fois, je regarde sans voir immédiatement le vrai problème.
C’est souvent le paradoxe du dépannage : l’information est là, affichée noir sur blanc, mais tant que l’on n’a pas la bonne grille de lecture, elle reste muette.
Cette adresse est pourtant intéressante.
Un plantage aussi tôt dans l’exécution signifie généralement que :
-
le processeur démarre correctement,
-
le BIOS fonctionne,
-
une partie du code est bien lue,
-
puis une donnée incorrecte transforme une instruction valide en absurdité.
Autrement dit, on se rapproche souvent de :
-
bus de données défaillant,
-
ligne d’adresse fautive,
-
ROM mal lue,
-
RAM corrompue,
-
ou logique de sélection mémoire encore imparfaite.
La console parle. Il reste simplement à comprendre son accent.
-------------------------------------------------------------------------
After replacing the NEO-E0 and installing UniBIOS 4.0, the system finally booted into the BIOS.
That alone was real progress: we had moved beyond the stage of colored dead screens. The console was now executing enough code to reach an actual diagnostic phase.
And there it greeted me with an error message.
The 68000 was trying to execute an instruction that does not exist in its opcode set. In simple terms, it was reading something that should have been code… but was not.
The obvious first suspect would be the cartridge.
But no. The cartridge works perfectly on other systems, so it can reasonably be removed from the suspect list.
The error appears at address:
0x1008
Once again, the machine is telling me exactly what is wrong… and once again, I am staring at the clue without immediately seeing the real issue.
That is often the paradox of repair work: the information is right there in front of you, but until you have the correct way to read it, it remains silent.
That address is highly interesting.
A crash that early in execution usually means:
-
the CPU starts correctly,
-
the BIOS works,
-
part of the code is being read properly,
-
then bad data turns a valid instruction into nonsense.
In other words, this often points toward:
-
faulty data bus lines,
-
bad address lines,
-
incorrectly read ROM data,
-
corrupted RAM,
-
or memory selection logic still misbehaving.
The console is speaking. I simply still need to understand its accent.
Je sors alors mes cartes de test de continuité maison.
Ce n’est peut-être pas du matériel de laboratoire prestigieux, mais c’est terriblement pratique pour ce genre de panne. Lorsqu’il faut contrôler rapidement de nombreuses lignes entre le processeur et la cartouche, ce type d’outil fait gagner un temps précieux.
Je commence donc logiquement par le bus de données du 68000 vers le port cartouche.
Contrôle ligne après ligne.
Tout est correct.
Les données circulent bien, aucune coupure, aucun défaut évident. Le bus data sort donc provisoirement de la liste des suspects.
Je poursuis alors avec le bus d’adresses.
Et là : bim.
La ligne A12 est coupée.
Elle passe sous le connecteur cartouche, dans une zone peu visible et difficile à inspecter à l’œil nu. Sans contrôle électrique, le défaut pouvait facilement passer inaperçu.
On tient enfin quelque chose de concret.
Je réalise donc un patch de piste par le dessous de la carte, afin de rétablir la continuité.
Et c’est ici que tout devient limpide.
Pourquoi A12 provoquait exactement ce plantage
Chaque ligne d’adresse représente une valeur binaire.
-
A0 = 1
-
A1 = 2
-
A2 = 4
-
etc.
Donc :
-
avec A0 à A11 actifs, on peut adresser jusqu’à 0x0FFF
-
en ajoutant A12, on passe à 0x1FFF
Autrement dit, tant que le processeur lisait des instructions situées avant 0x1000, tout semblait fonctionner.
Mais dès qu’il devait accéder à :
0x1008
il avait impérativement besoin de la ligne A12.
Et comme cette ligne était coupée :
-
mauvaise adresse lue,
-
mauvaise donnée récupérée,
-
instruction incohérente,
-
Illegal Instruction immédiate.
Exactement ce que la console annonçait depuis le début.
La leçon classique du dépannage
Si j’avais été un peu plus malin, j’aurais dû suspecter immédiatement A12, simplement en observant l’adresse de plantage.
La machine donnait la réponse noir sur blanc.
Comme souvent en électronique, le matériel dit la vérité très tôt… c’est l’humain qui met du temps à l’écouter.
---------------------------------------------------------------------------------
I then pulled out my homemade continuity test boards.
They may not look like high-end laboratory equipment, but they are incredibly useful for this type of fault. When you need to quickly verify many lines between the CPU and the cartridge slot, tools like this save a huge amount of time.
So I logically started with the 68000 data bus going to the cartridge connector.
Line by line.
Everything checked out.
Data lines were fine, no breaks, no obvious faults. The data bus could be temporarily removed from the suspect list.
So I moved on to the address bus.
And then: there it was.
Address line A12 was broken.
It runs beneath the cartridge connector, in an area difficult to inspect and nearly impossible to see with the naked eye. Without electrical testing, the fault could easily remain hidden.
At last, a real cause.
I repaired it by adding a trace patch on the underside of the board, restoring continuity.
And at that point, everything became clear.
Why A12 caused this exact crash
Each address line represents a binary value.
-
A0 = 1
-
A1 = 2
-
A2 = 4
-
and so on.
That means:
-
with A0 through A11, the CPU can address up to 0x0FFF
-
once A12 is added, the range extends to 0x1FFF
So as long as the processor was fetching instructions below 0x1000, everything appeared normal.
But the moment it needed to read from:
0x1008
it absolutely required A12.
And because that line was broken:
-
wrong address selected,
-
wrong data read,
-
invalid instruction fetched,
-
immediate Illegal Instruction exception.
Exactly what the console had been telling me from the start.
The classic repair lesson
Had I been a little smarter, I should have suspected A12 immediately just from the crash address.
The machine had written the answer in plain sight.
As often happens in electronics, the hardware tells the truth very early on… it is the human who takes longer to listen.
Et c’est reparti.
Après réparation de la ligne A12, la console redémarre enfin normalement. Plus d’instruction illégale, plus de blocage absurde à 0x1008, plus de messages sibyllins affichés comme des indices laissés par une machine moqueuse.
Le jeu se lance.
Le système reprend vie comme si rien ne s’était passé.
Au final, cette panne résume parfaitement ce que sont souvent les réparations sur Neo Geo :
-
plusieurs symptômes qui brouillent les pistes,
-
de faux coupables très convaincants,
-
des composants remplacés parfois trop vite,
-
et au bout du chemin… une simple piste coupée.
Une unique ligne d’adresse invisible suffisait à immobiliser toute la machine.
Comme souvent, la panne semblait complexe. La cause, elle, était presque dérisoire.
C’est aussi ce qui rend ce genre de dépannage passionnant : derrière un chaos apparent se cache parfois un défaut minuscule, logique, presque élégant.
La console repart donc pour un nouveau tour de piste.
Jusqu’à la prochaine crise syndicale.
---------------------------------------------------------------------------
And off it goes again.
After repairing address line A12, the console finally boots normally. No more illegal instruction, no more absurd crash at 0x1008, no more cryptic error messages delivered like clues from a mocking machine.
The game launches.
The system comes back to life as if nothing had happened.
In the end, this fault perfectly summarizes what Neo Geo repairs often look like:
-
multiple symptoms hiding the real cause,
-
highly convincing false suspects,
-
components replaced too early,
-
and at the end of the journey… a single broken trace.
One invisible address line was enough to disable the entire machine.
As so often happens, the failure looked complex. The real cause was almost trivial.
That is also what makes this kind of repair so satisfying: behind apparent chaos there is sometimes a tiny, logical, almost elegant defect.
So the console lives again.
At least until the next union dispute.
/image%2F0533879%2F20260420%2Fob_73ebe9_img-0029.jpeg)
/image%2F0533879%2F20260420%2Fob_f04db3_img-9884.jpeg)
/image%2F0533879%2F20260420%2Fob_467abf_img-0030.jpeg)
/image%2F0533879%2F20260420%2Fob_10acdd_img-0014.jpeg)