Arduino Arcade Rom Dumper

[Vincenzo] voleva leggere circa 82s129 balli bipolari, e perché no, erano molto comuni nella scena arcade del 1980. Il problema è che il suo tipo di parte della palla dispari ora, e in genere solo (anche) i programmatori EPROM più costosi possono leggerli. Un Arduino, Breadboard e un rapido scripting si prende rapidamente cura di questo problema con questo lettore di arcade rom.

Asmetti il ​​ballo nella tua tavola di breadboard e ne ferisci i porti e i perni appropriati dell’Arduino, che Bit Bangs il ballo e restituisce i risultati anche se la connessione seriale dell’Arduino. Utilizzando un programma terminale sul lato PC, acquisire il testo e utilizza uno script per convertire i valori ASCII in un formato Binary Nibble e salvare come esagono.

Ciò rende molto più facile per noi di scaricare Rom da vecchie tavole arcade, perché non si sa mai quando potresti imbattersi in un’antica board Arcade Polybius sulla tua prossima uscita per il salvataggio o il cortile.

Unisciti a noi dopo la pausa per tutti i dettagli e come sempre commenta!

82S129 Bipolar Proms sono molto comuni nelle tavole Jamma Arcade ’80. Sfortunatamente, solo i programmatori EPROM più costosi possono leggerli. Ho usato un ARDUINO DUEMILANOVE per scaricare il contenuto 82S129 al PC per l’uso di backup.
Ho usato una breadboard per collegare 82s129 perni ad Arduino. Si prega di seguire questo schematico:

Pin Arduino ——> 82S129 PIN (funzione)
+ 5V 16 VCC
GND 8 GND.
Digital 2 5 A0
Digital 3 6 A1
Digital 4 7 A2
Digital 5 4 A3
Digital 6 3 A4
Digital 7 2 A5
Digital 8 1 A6
Digital 9 15 A7
Digital 10 12 O1
Digital 11 11 O2
Digital 12 10 O3
Digital 13 9 O4
GND 13 CE1.
GND 14 CE2.

Ecco il programma PDE da inviare ad Arduino:

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
Inizia il programma PDE.
————————————————
/ *
82S129 Arduino Reader.
Da vincenzo femia (enzofemia@gmail.com)
* /
byte indirizzo = 0; // & quot; indirizzo & quot; è italiano per & quot; indirizzo e quot; 🙂
boolean a0 = 0; // Indirizzo bit
booleano A1 = 0;
booleano A2 = 0;
booleano A3 = 0;
booleano A4 = 0;
booleano A5 = 0;
booleano A6 = 0;
booleano A7 = 0;
//
boolean o0 = 0; // bit di dati
booleano o1 = 0;
booleano o2 = 0;
booleano o3 = 0;
Uscita Byte = 0;
Setup void ()
{
// Pin0 & amp; PIN1 riservato per la comunicazione seriale
Pinmode (2, output); // Set Pins per indirizzo
Pinmode (3, output);
Pinmode (4, output);
Pinmode (5, output);
Pinmode (6, output);
Pinmode (7, output);
Pinmode (8, output);
Pinmode (9, output);
Pinmode (10, Input); // Set Pins per i dati (è un nibbloso)
Pinmode (11, input);
Pinmode (12, input);
Pinmode (13, input);

}

Void Loop ()
{

per (indirizzo = 0; indirizzo & lt; 256; indirizzo ++) // da 00 a indirizzo ff
{
A0 = Birread (indirizzo, 0); // Leggi il bit di stato dell’indirizzo …
A1 = birread (indirizzo, 1);
A2 = birread (indirizzo, 2);
A3 = birread (indirizzo, 3);
A4 = birread (indirizzo, 4);
A5 = birread (indirizzo, 5);
A6 = birread (indirizzo, 6);
A7 = birread (indirizzo, 7);

//…e impostare l’output.
IF (A0 == 1) {DigitalWrite (2, High);}
altrimenti {digitationwrite (2, basso);}

se (A1 == 1) {DigitalWrite (3, High);}
altrimenti {digitationwrite (3, basso);}

se (A2 == 1) {DigitalWrite (4, High);}
altrimenti {digitationwrite (4, basso);}

se (A3 == 1) {DigitalWrite (5, High);}
altrimenti {digitationwrite (5, bassi);}

se (A4 == 1) {DigitalWrite (6, High);}
altrimenti {digitationwrite (6, basso);}

se (A5 == 1) {DigitalWrite (7, High);}
altrimenti {digitationwrite (7, basso);}

se (A6 == 1) {DigitalWrite (8, High);}
altrimenti {digitationwrite (8, basso);}

se (A7 == 1) {DigitalWrite (9, High);}
altrimenti {digitationwrite (9, basso);}

// Attendere in modo che le uscite possano essere impostate da 82S129
ritardo (50);

o0 = DigitalRead (10); // Leggi un bit dalle uscite dei dati
o1 = digitallead (11);
o2 = digitallead (12);
o3 = digitallead (13);
Serial.begin (9600); // Impostazione della comunicazione seriale
//Write in binary ASCII address read and “->”
     if (a7==0) {Serial.print(“0”);}
     else {Serial.print(“1”);}
     if (a6==0) {Serial.print(“0”);}
     else {Serial.print(“1”);}
     if (a5==0) {Serial.print(“0”);}
     else {Serial.print(“1”);}
     if (a4==0) {Serial.print(“0”);}
     else {Serial.print(“1”);}
     if (a3==0) {Serial.print(“0”);}
     else {Serial.print(“1″);}
     if (a2==0) {Serial.print(” 0 & quot;);}
altrimenti {serial.print (& quot; 1 & quot;);}
if (A1 == 0) {serial.print (& quot; 0 & quot;);}
altrimenti {serial.print (& quot; 1 & quot;);}
se (a0 == 0) {serial.print (& quot; 0 – & gt; & quot;);}
altrimenti {serial.print (& quot; 1 – & gt; & quot;);}

// Scrivi in ​​Binary ASCII Output Nibble

se (O3 == 0) {serial.print (& quot; 0 & quot;);}
altrimenti {serial.print (& quot; 1 & quot;);}

se (o2 == 0) {serial.print (& quot; 0 & quot;);}
altrimenti {serial.print (& quot; 1 & quot;);}

se (o1 == 0) {serial.print (& quot; 0 & quot;);}
altrimenti {serial.print (& quot; 1 & quot;);}

se (o0 == 0) {serial.println (& quot; 0 & quot;);}
altrimenti {serial.println (& quot; 1 & quot;);}

se (indirizzo == 255) {serial.println (& quot; rom è stato letto & quot;);}
Serial.End ();
}
}
—————————————–
Programma PDE finale

Usando il programma Minicom o simile è possibile registrare i dati seriali sul PC.
Utilizzando un editor ora corretto file di registro in modo che la prima riga sia:
00000000 -> xxxx

e l’ultima riga è:
11111111 -> xxxx

Si prega di verificare che il file contiene solo 1 ciclo di letture (256 linee).

Ora dobbiamo convertire questo file ASCII .txt in file binario.
Dal momento che utilizzo Linux scrivo nel linguaggio di programmazione Gambas () un piccolo programma per fare questa conversione.
Tuttavia, l’utente di Windows può portarlo in visual base o altre lingue.
Semplicemente leggere Bits, Build Nibble Value (00-0F), scrivi il valore binario in output .Hex File.
Ecco la fonte:

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
Inizio del programma GAMBAS
—————————————————-
Pubblico sub Main ()
Dim ingresso come streaming
Dim uscita come streaming
Dim Stringa come stringa
Dim o0 come stringa
Dim O1 come stringa
Dim O2 come stringa
Dim O3 come stringa
Dim Valore come byte
ingresso = aperto & quot; /home/enzo/temp/datafile.txt” Per input.
uscita = aperto & quot; /home/enzo/temp/datafile.hex” Per la creazione di output.
Mentre non EOF (Ingresso)
Ingresso linea #ingresso, righe
O3 = Mid $ (Severa, 13, 1)
O2 = Mid $ (Severa, 14, 1)
o1 = metà $ (Stringa, 15, 1)
o0 = Mid $ (Stringa, 16, 1)
VALORE = 1 * VAL (O0) + 2 * VAL (O1) + 4 * VAL (O2) + 8 * VAL (O3)
Stampa #Uscita, CHR $ (valido);
Wend.
Chiudi Ingresso
Chiudi uscita.
FINE
—————————————————- ———–
Fine del programma GAMBAS

Per domande possono contattarmi:
Vincenzo Femia.
enzofemia@gmail.com.
Reggio Calabria, Italia.

No Responses

Leave a Reply

Your email address will not be published. Required fields are marked *

Links

www

ivonzhao

wqydesign

nepri

vyjyz

rjxhv

izqzd

uxudt

scasd

qtjnw

lvrnm

suhqw

ouxar

uiaqj

xceku

xjgjf

ilevi

hfgnc

mltlh

cwwjd

rgpnq

nnirv

iudxs

xcste

qzrdj

prnpa

gcqdq

qgsdb

mqrlb

sqoko