Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <wiringPi.h>
- #include <mcp23017.h>
- int main(void)
- {
- printf("Sega rom dumper for raspberry pin");
- wiringPiSetup();
- mcp23017Setup(100, 0x20);
- mcp23017Setup(116, 0x21);
- mcp23017Setup(132, 0x22);
- resetSegaAddressBus();
- for (int i = 0; i < 16; i++) {
- pinMode(dataPins[i], INPUT);
- }
- //not actaly sure on this code
- for (byte i = 0; i < 8; i++) {
- writeAddress(0x90 + i);
- delay(5);
- word d = readData();
- byte d2 = d & 0xFF;
- byte d1 = (d & 0xFF00) >> 8;
- }
- }
- //Address pins
- int addressPins[23] = { 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 110, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122 };
- //Data pins
- int dataPins[16] = { 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138 };
- void resetSegaAddressBus()
- {
- for (byte i = 0; i < 23; i++) {
- pinMode(addressPins[i], OUTPUT);
- digitalWrite(addressPins[i], LOW);
- }
- }
- void writeAddress(long addr)
- {
- long mask = 1;
- for (int i = 0; i < 23; i++) {
- long test = (mask & addr) >> i;
- digitalWrite(addressPins[i], LOW);
- mask = mask << 1;
- }
- }
- word readData()
- {
- word d = 0;
- word mask2 = 0 b1;
- for (int i = 0; i < 16; i++) {
- int b = digitalRead(dataPins[i]);
- if (b == HIGH) {
- d = d | mask2;
- }
- mask2 = mask2 << 1;
- }
- return d;
- }
- long readLong(long addr)
- {
- writeAddress(addr);
- delay(50);
- word msb = readData();
- writeAddress(addr + 1);
- delay(50);
- word lsb = readData();
- long result = msb;
- result = (result << 16) | lsb;
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement