mirror of
https://github.com/kalymos/PsNee.git
synced 2026-01-11 23:53:07 +00:00
179 lines
9.3 KiB
Plaintext
179 lines
9.3 KiB
Plaintext
Update:mars 2025
|
|
|
|
-Added led support for ATtiny
|
|
-Added card support to simplify fuse management
|
|
|
|
Update:july 2024
|
|
|
|
-Reimplementation of support for MUCs ATtiny25/45/85, Atmega32u4
|
|
|
|
-------------------------------------------------------------
|
|
|
|
Update: 9 oct 2023
|
|
|
|
-Added support by brill & postal2201 of the bios patch for japanese consoles https://github.com/postal2201/PSNee_V8
|
|
|
|
--------------------------------------------------------------
|
|
|
|
Update: 16 August 2017
|
|
|
|
-changed the timing for the PAL PM-41 patch to make it more reliable (I had it failing occasionally).
|
|
Also I added a warning for people not to use 5V.
|
|
|
|
--------------------------------------------------------------
|
|
|
|
Update: 16 July 2017
|
|
|
|
-The BIOS patch works!
|
|
For now it only supports Arduino boards (ATmega chips).
|
|
Also, the Arduino must either be powered on first or have no bootloader present (flashed using SPI) since I expect a signal ~1 second after power on.
|
|
8Mhz boards are also supported.
|
|
|
|
--------------------------------------------------------------
|
|
|
|
Update: 10 July 2017
|
|
|
|
- finished porting to ATtinyX5 (25,45,85 although the 25 has too little resources. for now.)
|
|
- store the licensing symbols in flash again, frees a lot of RAM
|
|
- bit retrieval code lifted from AttyNee (Nice work guys!)
|
|
- extra RAM allows SoftwareSerial debugging prints on an ATtiny45!
|
|
- nicer intro readme ;p
|
|
|
|
---------------------------------------------------------------
|
|
|
|
Update 9 July 2017
|
|
|
|
Sure. Consider it work in progress quality ;)
|
|
Main changes:
|
|
- figured out ATtiny pin assignments :p
|
|
- RAM use reduced by only storing the "SCE" part of the license string once. Using a somewhat farfetched method. Maybe someone can make it nicer, without the recursion and over engineering? :p
|
|
- tried getting debug prints but it doesn't look like it'll happen (on ATtiny45), too little RAM > the chip crashes
|
|
- SUBQ sampling timing reverted to sample while clock is low, instead of right after it goes high
|
|
|
|
-------------------------------------------------------------
|
|
|
|
Updat 29 June 2017
|
|
- final modchip function I / Os: SQCK, SCLK, data, gate_wfck
|
|
- hysteresis for injections, fixes anti-mod occasionally triggering when using worn drives
|
|
- optimized injection timing for multi-region, multi BIOS versions (Sony added more protection checks over time)
|
|
- first attempt to make it more portable to other Arduino variants
|
|
- auto console detection works reliably, with and without Arduino bootloader present
|
|
- pin assignments changed for practical / installation reasons (ICSP capability, wire routing)
|
|
- so many changes, it surely contains all new bugs ;)
|
|
|
|
Pin assignments are finalized. We can start producing final installation images / help!
|
|
As always, I appreciate code reviews and bug fixes. I'm sorry some of it got so messy ;p
|
|
psxdev
|
|
|
|
------------------------------------------------------------
|
|
|
|
Update 4 June 2017
|
|
- unified SCEX injection function / easier to read code
|
|
- PU-22+ now work without the WFCK wire (but depends on tight timings, tested on 8 and 16Mhz mcu)
|
|
- interrupts disabled while sampling SUBQ > much better performance capturing all events correctly
|
|
- now blinks the built-in LED on injections for debugging
|
|
psxdev
|
|
|
|
------------------------------------------------------------
|
|
|
|
Update 31st May 2017
|
|
|
|
- supports all motherboard versions except PU-41 (PAL) (will get to it!)
|
|
- WFCK modulated injection method for PU-22 and up, just like the last multimode 3 chips
|
|
- minimized CD controller interference: PsNee only ever speaks when it has to (also: full stealth)
|
|
- not relying on BIOS delays: perfect boot disregarding extension cards etc
|
|
- might not be bug free! I'm just one guy and testing on a dozen consoles takes time ;)
|
|
psxdev
|
|
|
|
-------------------------------------------------------------
|
|
|
|
Update 27th of May 2017
|
|
This version is compatible with 8Mhz and 16Mhz ATmega328 / Arduino boards.
|
|
It uses polling to grab the SUBQ packets. This works better than relying on interrupts.
|
|
I even have a few cycles to spare on a 8Mhz chip!
|
|
psxdev
|
|
|
|
--------------------------------------------------------------
|
|
|
|
Update 15th of May 2017
|
|
PSNee now watches the subchannel data and looks at the position information contained within.
|
|
This allows deterministic SCEX injections. It knows (almost) exactly when to inject the SCEX string.
|
|
Therefore it is now a stealth modchip :)
|
|
Required connections: GND, VCC, data, gate, SQCL, SUBQ
|
|
No more need to watch the PSX reset or lid open signals or any other typical modchip points (like "sync")
|
|
WIP! Only tested on PU-18 board. Should work fine on PU-7, PU-8, PU-18 and PU-20.
|
|
Will need adaption for PU-22 to PU-41 (SCPH-750x, 900x and PSOne).
|
|
Note: Once this is installed in a PSX, mind the Pin13 LED that many Arduino boards have. Do not upload new sketches while the PSX is on!
|
|
(If the PSX is on while uploading a sketch (making the LED blink), a voltage will be fed back into the SCLK pin on the HC-05 in the PSX.
|
|
This didn't break my PSX in testing but it does stun the chip and halt CD operation. I'm thinking of a better method to do this but for now I need Arduino pin13..)
|
|
Very much recommended to install a 3.3V chip!
|
|
psxdev
|
|
|
|
-------------------------------------------------------------
|
|
|
|
Update 7th of May 2017
|
|
Branched and tweaked for use with the Position 0 switch on a PSX laser.
|
|
(Requires a bit of sticky tape at the point where the switch touches the laser assembly.)
|
|
This allows deterministic SCEX injections, without relying on timing. Also gets rid of connection wires for LID and RESET.
|
|
WIP!
|
|
psxdev
|
|
|
|
--------------------------------------------------------------
|
|
New in this version! V6
|
|
--------------------------------------------------------------
|
|
A lot!
|
|
- The PAL SCPH-102 NTSC BIOS-patch works flawlessly! For speed reasons this is implemented in bare
|
|
AVR C. It is functionally identical to the OneChip modchip, this modchip firmware was disassembled,
|
|
documented (available on request, but written in Dutch...) and analyzed with a logic analyzer to
|
|
make sure PsNee works just as well.
|
|
- The code now is segmented in functions which make the program a lot more maintable and readable
|
|
- Timing is perfected, all discs (both backups and originals of PAL and NTSC games) now work in the
|
|
PAL SCPH-102 test machine
|
|
- It was found out that the gate signal doesn't havbe to be hooked up to a PAL SCPH-102 Playstation
|
|
to circumvent the copy protection. This is not tested on other Playstation models so the signal still
|
|
is available
|
|
- The /xlat signal is no longer required to time the PAL SCPH-102 NTSC BIOS-patch
|
|
- Only AVR PORTB is used for compatibility reasons (almost all the AVR chips available have PORTB)
|
|
|
|
-------------------------------------------------------------
|
|
A minor detail: The lid detection is missing its digitalRead() ;p
|
|
psxdev
|
|
|
|
-------------------------------------------------
|
|
VERSION 2! :D
|
|
-------------------------------------------------
|
|
What has changed?
|
|
- Thanks to TriMesh, the gate-pin is now also used to determine in which model of
|
|
Playstation PsNee is installed. The modchip algorithm thus can be optimized for
|
|
optimal performance on specific Playstation revisions. This works by monitoring
|
|
whether a clock signal is present on this pin - when there is one, the modchip is
|
|
installed in a PU-22, PU-23 or PSOne Playstation, else it is installed in an older
|
|
model Playstation. In this version of PsNee, nothing is actually done with this information.
|
|
- Thanks to -again- TriMesh, NTSC support for PAL SCPH-102 Playstations is added! This uses
|
|
the same method the OneChip modchip used for achieving this:
|
|
1. Monitor the XLAT signal from the CD mechanism controller chip. This requires
|
|
another connection to the Playstation. When this signal is 0, the first CD copy
|
|
protection is passed! After this, there is another one.
|
|
2. After this, watch the Address18-pin (pin 31) on the BIOS-chip. When this signal
|
|
is high, this means the second CD copy protection is about to run.
|
|
3. Wait a short time.
|
|
4. Pull the Data2-pin (pin 15) on the BIOS-chip to 0. This effectively blocks the
|
|
execution of the region check of the inserted disc.
|
|
5. The Playstation plays the inserted disc and doesn't care whether it's PAL or NTSC!
|
|
6. Release the 0 of the Data2-pin.
|
|
To correctly output a PAL video color signal for a PAL TV on a PAL PSOne with an NTSC disc
|
|
inserted, Pin 3 of IC502 must be grounded with an external switch. The modchip also could do
|
|
this, although we would need a device with more pins available.
|
|
- The outputted data signal is now "sliced up" to improve (or less distort) the tracking
|
|
signal from the CD mechanism: later Playstations use the CD tracking signal for transmitting
|
|
the SCEx-string to the Playstation instead of using a seperate connection, so when the modchip
|
|
forces a 0 on the data-pin, the tracking signal also is gone temporarily. By slicing the data-
|
|
signal up in little pieces at least some of the tracking signal remains and the Playstation can
|
|
read discs more easily.
|
|
- The two big for-loops are combined into one with an OR-statement describing the two conditions
|
|
modchip should be active: when flagFirstCycle = 0 or when flagFirstCycle = 1 and the lid is opened
|
|
and closed again. This makes code maintenance easier.
|
|
- The pin-out of the modchip is changed slightly to be able to use an interrupt for the PAL=>NTSC
|
|
BIOS-patch for PAL SCPH-102. Please use the revised pin-out found below with this code.
|
|
~TheFrietMan, The Netherlands
|