diff --git a/PowerReplay.kicad_pro b/PowerReplay.kicad_pro index 7977a69..2bac32f 100644 --- a/PowerReplay.kicad_pro +++ b/PowerReplay.kicad_pro @@ -457,6 +457,7 @@ "single_global_label": "ignore", "unannotated": "error", "unconnected_wire_endpoint": "warning", + "undefined_netclass": "error", "unit_value_mismatch": "error", "unresolved_variable": "error", "wire_dangling": "error" diff --git a/README.md b/README.md index 92ab6b8..4337a74 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,76 @@ # PS1 Power Replay Datel clone - RE Notes +## DISCLAIMER + +Any use of this project is **under your own responsibility**. +You will be responsible of checking the correct construction and functionality of your board. +By using this project You will agree that I cannot be held responsible if it will destroy any of your devices, damage your computer, burn down your house or whatever. + ## Introduction -I found one of these cloned Datel cheat carts for PlayStation 1 in a box of junk at a flea market. -I decided to reverse engineer it just for fun, and maybe to build a better variant of it. +This board is a reconstruction (with a few improvements) of a clone of a Datel cheat cart for PlayStation. +This project builds upon the work I uploaded in [this repository](https://github.com/hkzlab/PS1_PowerDeplay_Datel_RE) repository regarding the reverse engineering and mapping of said clone. -![Screenshot of the traced PCB](pics/traced_board.jpg) +This device can be used with the original (provided) EPROM dump, or with [unirom](https://unirom.github.io/). + +I replaced the crappy zener-diode power regulation of the original clone with a proper linear regulator, plus the DB25 connector was replaced with an IDC connector. + +![Rev.0 assembled](pics/rev_0_assembled.jpg) + +### Support + +If you wish to support me in building new hardware and software for old machines, [throw a few euros at me with Ko-Fi](https://ko-fi.com/hkzlab) ☕! ## Hardware +The board was designed with [KiCad](https://kicad.org/) EDA. + +### Bill of Materials + +| Component | Qty | Type / Value | Notes | +| ---------------------- | --- | ------------------------------------------------------- | -------------------------------------------------------------------- | +| U1 | 1 | 29F010/29F020/39SF010/39SF020... DIP-32 | Either install this or U4 | +| U4 | 1 | 29F010/29F020/39SF010/39SF020... PLCC-32 | Either install this or U1 | +| U2 | 1 | GAL16V8 (tested 16V8B) DIP-20 | Either install this or U7 | +| U7 | 1 | GAL16V8 (tested 16V8B) PLCC-20 | Either install this or U2 | +| U3 | 1 | 74F245 DIP-20 | Either install this or U5 | +| U5 | 1 | 74F245 SOP-20 | Either install this or U3 | +| J2 | 1 | 2x10 2.54mm pinheader | | +| T1 | 1 | 78L05 TO-92 | | +| SW1 | 1 | SPDT switch | 3 pins. The pitch between the pins is roughly 2.8mm, [These](https://www.aliexpress.com/item/1005002278097696.html) or [these](https://www.aliexpress.com/item/1000007042312.html) can probably be adapted| +| R1 | 1 | 10K resistor, either THT or SMD (1206) | | +| C1, C2 | 2 | 100nF/16V capacitor, either THT or SMD (1206) | | +| C3 | 1 | 470nF/16V capacitor, either THT or SMD (1206) | | +| J1 | 1 | 68pin PlayStation PIO port connector | Solder this on the opposite side of the board in respect to other components. You can use [this](https://store.phenommod.com/?product=pio-connector) ready made connector, or adapt [this](https://eu.mouser.com/ProductDetail/571-1-1734101-7) by dremeling away the extra plastic at the side | + +Remember to program the GAL with the provided JED file. + +### Pinout + +``` +External I/O +.----.----.----.----.----.----.----.----.----.----. +| 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20 | +'----'----'----'----'----'----'----'----'----'----' +| 1 | 3 | 5 | 7 | 9 | 11 | 13 | 15 | 17 | 19 | +'----'----'----'----'----'----'----'----'----'----' + +1,3,5,7,9,11,13,15,17,19 - GND +2,4,6,8,10,12,14,16 - D0 through D7 +18 - Strobe +20 - ACK +``` + +### Ordering the boards + +You can order the board for this project at [PCBWay](https://www.pcbway.com/project/shareproject/TODO.html) and support me or download +the gerbers and have them printed wherever you like!!! + +## Notes + +The PCB was fully disassembled, scanned, and traced to reconstruct the schematic. +It's a simple dual-layer board containing a diode, a PLD, an EEPROM and a transceiver, plus a few passives. + ### Memory map and protocol Information on the protocol can be found [here](https://psx-spx.consoledev.net/cheatdevices/#cheat-devices-datel-io), but here is the basic memory map of this device: @@ -22,16 +84,6 @@ Information on the protocol can be found [here](https://psx-spx.consoledev.net/c 1F060008h W Comms Link data out (byte, pulses ACK to Comms Link) ``` -## Notes - -The PCB was fully disassembled, scanned, and traced to reconstruct the schematic. -It's a simple dual-layer board containing a diode, a PLD, an EEPROM and a transceiver, plus a few passives. - -### Power regulation - -While the PCB has provisions to fit a 78L05 voltage regulator plus filter caps, the actual regulation on -this board was cheaply hacked together using a 5.1V Zener plus a 150 ohm resistor for current limiting. - ### EEPROM size The EEPROM used on this board is a PLCC AM29F010, 128KB. The Board is wired in a way that a 29F020 can be installed and the a second bank of 128KB used. @@ -41,4 +93,4 @@ The EEPROM used on this board is a PLCC AM29F010, 128KB. The Board is wired in a A GAL16V8B provides signal decoding to enable the transceiver, EEPROM, read the state of the STROBE signal on the DSUB-25 connector and of the sliding switch. This IC was protected on my board, so I proceeded with an analysis of the signals and their combinations. -The results can be seen in the `PLD` directory, and **have not been tested yet**. Interestingly, while connected, the A20 line seems to be ignored in all the calculations performed by this PLD. +The results can be seen in the `PLD` directory. Interestingly, while connected, the A20 line seems to be ignored in all the calculations performed by this PLD. diff --git a/pics/assembled/closeup_1.jpg b/pics/assembled/closeup_1.jpg deleted file mode 100644 index ebe82ba..0000000 Binary files a/pics/assembled/closeup_1.jpg and /dev/null differ diff --git a/pics/assembled/closeup_2.jpg b/pics/assembled/closeup_2.jpg deleted file mode 100644 index ef54c1a..0000000 Binary files a/pics/assembled/closeup_2.jpg and /dev/null differ diff --git a/pics/assembled/full_board.jpg b/pics/assembled/full_board.jpg deleted file mode 100644 index 42fe81b..0000000 Binary files a/pics/assembled/full_board.jpg and /dev/null differ diff --git a/pics/assembled/full_board_no_connectors.jpg b/pics/assembled/full_board_no_connectors.jpg deleted file mode 100644 index fe94d45..0000000 Binary files a/pics/assembled/full_board_no_connectors.jpg and /dev/null differ diff --git a/pics/assembled/side_view.jpg b/pics/assembled/side_view.jpg deleted file mode 100644 index 16ab405..0000000 Binary files a/pics/assembled/side_view.jpg and /dev/null differ diff --git a/pics/rev_0_assembled.jpg b/pics/rev_0_assembled.jpg new file mode 100644 index 0000000..3b68278 Binary files /dev/null and b/pics/rev_0_assembled.jpg differ diff --git a/pics/scan/back_cleaned.png b/pics/scan/back_cleaned.png deleted file mode 100644 index 0a93761..0000000 Binary files a/pics/scan/back_cleaned.png and /dev/null differ diff --git a/pics/scan/back_cleaned_flipped.png b/pics/scan/back_cleaned_flipped.png deleted file mode 100644 index a593012..0000000 Binary files a/pics/scan/back_cleaned_flipped.png and /dev/null differ diff --git a/pics/scan/back_cropped.png b/pics/scan/back_cropped.png deleted file mode 100644 index 6b322a5..0000000 Binary files a/pics/scan/back_cropped.png and /dev/null differ diff --git a/pics/scan/both_layers.xcf b/pics/scan/both_layers.xcf deleted file mode 100644 index 0a277ad..0000000 Binary files a/pics/scan/both_layers.xcf and /dev/null differ diff --git a/pics/scan/front_cleaned.png b/pics/scan/front_cleaned.png deleted file mode 100644 index e15cc53..0000000 Binary files a/pics/scan/front_cleaned.png and /dev/null differ diff --git a/pics/scan/front_cropped.png b/pics/scan/front_cropped.png deleted file mode 100644 index 21e2d3b..0000000 Binary files a/pics/scan/front_cropped.png and /dev/null differ diff --git a/pics/traced_board.jpg b/pics/traced_board.jpg deleted file mode 100644 index ca1b49a..0000000 Binary files a/pics/traced_board.jpg and /dev/null differ