Cette page a au moins 11 ans !
This page is at least 11 years old !
 |
Ces pages ne sont plus mises à jour !
Mais restent ici quand même. Attention: tout est vieux, et parfois faux.
Tout se passe maintenant sur la wiki
NeoGeo
Development Wiki |
|
Infos vérifiées plusieurs fois avec la source de MAME et de Raine.
Les bits marqués comme "?" sont soit inutilisés, soit
sans importance pour que les jeux fonctionnent.
Il faut toujours attendre un peu avant de lire la VRAM après avoir fixé
une nouvelle adresse, ou lors de nombreuses écritures séquentielles.
"Invalide" fait soit rien, soit redémarrer la console.
Adresse
|
Nom
|
Lecture
|
Écriture
|
$300000
(octet)
| REG_P1CNT
|
Etat des touches du joystick
1 (inversé)
7
| 6
| 5
| 4
| 3
| 2
| 1
| 0
|
D
| C
| B
| A
| Droite
| Gauche
| Bas
| Haut
|
|
?
|
$300001
(octet)
| REG_DIPSW
|
Dipswitches, AES et MVS
(inversé)
7
| 6
| 5
| 4
| 3
| 2
| 1
| 0
|
Freeze
| Freeplay
| Config multijoueurs
| Autofire
| Config monayeurs
| Mode (0:Test)
|
|
Remet le Watchdog à
zéro.
La plupart des jeux écrivent D0 dans ce registre à chaque
VBlank.
|
$300081
(octet)
| ?
|
Le bit 7 indique une demande
d'accès au menu du BIOS
|
Remet le Watchdog à
zéro ?
|
$320000
(octet)
| REG_SOUND
|
Lecture Z80
|
Commande audio (écriture
vers le Z80).
|
$320001
(octet)
|
REG_STATUS_A
|
Status hardware (inversé)
7
| 6
| 5
| 4
| 3
| 2
| 1
| 0
|
Status du calendrier
| ?
| Bouton de service
| Monayeur 2
| Monayeur 1
|
|
Aucun effet ?
|
$340000
(octet)
| REG_P2CNT
|
Etat des touches du joystick
2 (inversé)
7
| 6
| 5
| 4
| 3
| 2
| 1
| 0
|
D
| C
| B
| A
| Droite
| Gauche
| Bas
| Haut
|
|
Aucun effet ?
|
$380000
(octet)
| REG_STATUS_B
|
Etat des touches et de
la carte mémoire (inversé)
7
| 6
| 5
| 4
| 3
| 2
| 1
| 0
|
?
| Write protect de la carte mémoire
| Carte mémoire inserée
| Select J2
| Start J2
| Select J1
| Start J1
|
|
MAME: "io_control_w"
$380000 select_controller
$380030: set_output_latch
$380040: set_output_data
$380050: upd4990a_control_16_w
|
$380001
| ? |
?
|
Sortie ports joysticks
(inversé)
7
| 6
| 5
| 4
| 3
| 2
| 1
| 0
|
?
| Sorties port 2
| Sorties port 1
|
|
$3A0001
| REG_DISPENABL
|
Invalide
|
Activation de la sortie
vidéo (activée par le BIOS)
|
$3A0011
| REG_DISPDSABL
|
Invalide
|
Désactivation
de la sortie vidéo
|
$3A0003
| ? |
Invalide
|
Utiliser la table de
vecteurs du BIOS
|
$3A0013
| REG_SWPROM
|
Invalide
|
Utiliser la table de
vecteurs de la cartouche (par défaut)
|
$3A000B
| REG_BRDFIX
|
Invalide
|
Utiliser le tileset
fix de la console
|
$3A001B
| REG_CRTFIX
|
Invalide
|
Utiliser le tileset
fix de la cartouche (par défaut)
|
$3A000D
| REG_SRAMLOCK
|
Invalide
|
Protéger la SRAM
en écriture
|
$3A001D
| REG_SRAMULOCK
|
Invalide
|
Permettre l'écriture
en SRAM
|
$3A000F
| REG_PALBANK1
|
Invalide
|
Utiliser la banque de
palettes 1
|
$3A001F
| REG_PALBANK0
|
Invalide
|
Utiliser la banque de
palettes 0 (par défaut)
|
$3C0000
(word)
| REG_VRAMADDR
|
Lecture VRAM (pas d'auto-incrémentation)
|
Adressage VRAM
|
$3C0002
(word)
| REG_VRAMRW
|
Lecture VRAM (pas d'auto-incrémentation)
|
Écriture VRAM
|
$3C0004
(word)
| REG_VRAMINC
|
Lecture de la valeur
d'auto-incrémentation de l'adresse VRAM
|
Réglage de la
valeur d'auto-incrémentation de l'adresse VRAM (signé)
|
$3C0006
(word)
| REG_HBLANKCNT
|
15
|
14
|
13
|
12
|
11
|
10
|
9
|
8
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
Compteur de ligne vidéo (format ?)
|
?
|
1:50Hz
0:60Hz
| Compteur d'animation auto
|
$00F8-$00FF : Vertical sync
$0100-$010F : Top border
$0110-$01EF : Active display
$01F0-$01FF : Bottom border
Voir ce
diagramme.
|
15
|
14
|
13
|
12
|
11
|
10
|
9
|
8
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
Vitesse de l'animation auto
|
Recharger à
chaque HBlank
|
Recharger à
chaque VBlank
|
Prochaine interruption
HBlank dans x lignes
|
Int.HBlank activée
|
Désactiver l'animation
automatique
|
?
|
|
$3C0008
(word)
| REG_HBLANKPOS
|
Invalide
|
Position (pixels) à
laquelle l'interruption HBlank sera déclenchée (MSB)
|
$3C000A
(word)
| |
Invalide
|
Position (pixels) à
laquelle l'interruption HBlank sera déclenchée (LSB)
|
$3C000C
(octet)
| REG_IRQACK
|
Invalide
|
Interrupt Acknowledge.
Obligatoire, sert de prévention anti-nesting.
Toujours répondre correctement à la fin d'un interruption.
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
ACK VBlank |
ACK HBlank |
ACK IRQ3 |
|
$3C000E
$3C000F
|
?
|
Certains émulateurs
traitent cette adresse de la même façon que $3C000A.
MAME ne s'en occupe pas. Aucun jeu n'en dépend.
|
La même chose.
|
Sur NeoGeo CD uniquement (notes prises depuis la source de NeoCD):
Pratiquement tout l'espace mémoire qui commence à $FF0000 n'est
pas documenté et concerne le bloc CD ou le DMA...
Adresse |
Lecture |
Écriture |
$ff011c (word)
|
return 0xff | (region_code << 8);
|
|
0xff0002 (word)
| |
load_files:
Si commande = $0550:
Si RAM[0x115a06]>32 et < 127, neogeo_cdrom_load_files(&RAM[0x115a06]);
x0115A06: [0] à [15]: Nom du fichier terminé
par 0x00 ou ";".
Bank à [16] sur 2 bits (byte).
Offset à [18] (long, byteswapé). ReadLong68k()
Offset.l = 0x10f6a0 (?)
|
0xff0061 (byte)
|
|
upload_cmd_w
Si commande = $40:
int zone = RAM[0x10FEDA ^ 1];
int size = ReadLongSc(&RAM[0x10FEFC]);
Si size >0:
RAM[0x10FEDA ^ 1] = zone ^ 0x10; write_upload_word(0,0); RAM[0x10FEDA
^ 1] = zone;
Si size =0:
int upload_src = ReadLongSc(&upload_param[0]);
int upload_len = ReadLongSc(&upload_param[12]);
UINT16 upload_fill = ReadWord(&upload_param[8]);
UINT16 dma = ReadWord(&dma_mode[0]);
Si dma = 0xffdd: Palette (début), Memory card (début) ou
RAM (n'importe où).
Si dma = 0xfef5: Upload dans l'autre sens (palette seulement ?)
|
0xff0064 0xff0071 (word)
|
|
upload_param (que les premiers 16 octets d'utilisés
?)
[0]: source (long), [12]: longueur (long),
[8]: fill (word)
|
0xff007e 0xff008f (word)
|
|
dma_mode
|
0xff0105 (byte)
|
|
upload_type_w
|
0xff0111 (byte)
|
|
spr_disable
|
0xff0115 (byte)
|
|
fix_disable
|
0xff0119 (byte)
|
|
video_enable
|
0xff016f (byte)
|
|
disable_irq_w
|
0xff0183 (byte)
|
|
z80_enable
|
|