mirror of
https://github.com/kalymos/PsNee.git
synced 2026-05-07 08:06:39 +00:00
Wiki Update: Documenting V9 migration to Main
- Updated documentation to reflect V9 as the current stable version in main.
@@ -1,26 +0,0 @@
|
||||
# **General Description of the `BIOS_patching.h` File**
|
||||
|
||||
The `BIOS_patching.h` file is responsible for managing the patching process of the PlayStation BIOS. It contains functions and interrupt service routines (ISRs) that facilitate patching based on specific trigger events. The file includes configuration for handling interrupts and timing delays during the BIOS patching process, ensuring that it operates correctly for different consoles and patching scenarios.
|
||||
|
||||
## **Key Features**
|
||||
|
||||
### **Interrupt Service Routines (ISRs)**
|
||||
- **`PIN_AX_INTERRUPT_VECTOR`**: Used for the primary patching process. Once the defined impulse (`TRIGGER`) is reached, it performs the patching by toggling the state of `PIN_DX` and applying the patch.
|
||||
- **`PIN_AY_INTERRUPT_VECTOR`**: Used for the secondary patching process (if `HIGH_PATCH` is defined). It performs similar actions to the primary patching once the second impulse (`TRIGGER2`) is reached.
|
||||
|
||||
### **Patch Process**
|
||||
The patching procedure is divided into two stages:
|
||||
1. **First Stage**: When the first trigger condition (`TRIGGER`) is met, the firmware waits for the AX pin to change states, starts a timer, and performs actions at the defined `CHECKPOINT`.
|
||||
2. **Second Stage (if `HIGH_PATCH` is defined)**: A secondary interrupt handles the second stage of patching, with a separate trigger condition (`TRIGGER2`) and its own set of timing parameters (`CHECKPOINT2`).
|
||||
|
||||
### **Timer Functions**
|
||||
- **`Timer_Start` and `Timer_Stop`**: These functions are used to measure elapsed time in microseconds. The BIOS patching process relies on precise timing to complete the patching at the correct moments.
|
||||
|
||||
### **Region-Specific Settings**
|
||||
The patching behavior is controlled by various preprocessor directives:
|
||||
- **`LOW_TRIGGER`**: Determines whether the interrupt triggers on the falling or rising edge of the signal.
|
||||
- **`HIGH_PATCH`**: Enables the second patching stage.
|
||||
- **`BIOS_PATCH`**: Controls whether the BIOS patching is enabled for the specific console.
|
||||
|
||||
### **Patch Completion**
|
||||
The patching process is signaled by setting the `patch` variable, which is checked during the process to ensure that each stage of patching is completed before moving to the next.
|
||||
@@ -1,32 +0,0 @@
|
||||
# **General Description of the `settings.h` File**
|
||||
|
||||
The `settings.h` file is used to configure various console-specific settings for PlayStation models. It defines region-specific settings, BIOS patch configurations, and delay values for different PlayStation versions. The file is structured to customize behavior based on the selected console model, making it adaptable for different hardware configurations.
|
||||
|
||||
## **Key Features**
|
||||
|
||||
### **Console Selection**
|
||||
The file uses `#ifdef` preprocessor directives to select specific settings based on the PlayStation model. This allows the configuration of the firmware based on the specific console. Each model has unique settings tailored to its hardware.
|
||||
|
||||
- **Region Definitions**:
|
||||
- Different regions are defined through preprocessor directives (e.g., `SCEA` for North America, `SCEE` for Europe, `SCEI` for Japan).
|
||||
- This allows the firmware to adapt according to the console's region.
|
||||
|
||||
### **BIOS Patching**
|
||||
Some console models include a `BIOS_PATCH`, enabling specific patches for compatibility or system functionality. These settings modify the behavior of the firmware for certain consoles to ensure proper operation.
|
||||
|
||||
- **Delay Settings**:
|
||||
Each model has its own delay settings defined by `HOLD` and `PATCHING` values. These delays are used for operations that require precise timing, such as BIOS patching.
|
||||
|
||||
### **Console-Specific Configurations**
|
||||
Each PlayStation model in the file has its own specific parameters:
|
||||
|
||||
- **SCPH_102, SCPH_100, SCPH_7000_9000**: Models with specific BIOS patching and delays.
|
||||
- **Trigger Values**: Every model has unique `CHECKPOINT` and `TRIGGER` values that help control specific operations for the PlayStation's booting and patching process.
|
||||
|
||||
### **Error Handling**
|
||||
The file includes checks to ensure that only one console model is selected at a time, preventing conflicts during compilation.
|
||||
|
||||
- **Preprocessor Checks**:
|
||||
- If no console model is selected, or if multiple models are defined, compilation errors are triggered.
|
||||
|
||||
|
||||
92
Home.md
92
Home.md
@@ -8,43 +8,48 @@
|
||||
*Not compatible with the BIOS patch
|
||||
|
||||
## The oversimplified way to do it
|
||||
• Choosing your compilation options.
|
||||
• Compilation.
|
||||
• Configure fuses.
|
||||
* Choosing your compilation options.
|
||||
* Compilation.
|
||||
|
||||
| MCU family | High | Low | Extended |
|
||||
| :- | :-: | :-: | :-: |
|
||||
| ATmega 328/168 | DF | EE | FE |
|
||||
| ATmega 32u4 | DF | EE | FE |
|
||||
| ATmega 328PB* | DF | EE | F7 |
|
||||
| ATtiny 25/45/85 | DD | E2 | FF |
|
||||
|
||||
*Not recommended: Chinese Nano v3 Atmega328pb blue cards (clocking problem).
|
||||
> [!NOTE]
|
||||
> With the new BIOS patch implementation, specific fuse configurations are no longer a major issue. The timing is much more flexible than before.
|
||||
>
|
||||
> **The only critical setting to check is the Brown-out Detector (BOD), which should be set to 2.7V.**
|
||||
|
||||
• Injecting the code into the target.
|
||||
• Soldering the modchip according to the diagrams.
|
||||
|
||||
## Find out if my console needs a BIOS patch
|
||||
- When a BIOS patch is needed: All Japanese consoles, and the European SCPH-102 console (PS One).
|
||||
- Consoles that don't need the BIOS patch: All American consoles, all fat European consoles, and all SCPH-xxx3 models.
|
||||
The BIOS patch is required for certain models to bypass regional lockout and play import games.
|
||||
|
||||
## You can use USB injection in the following cases
|
||||
- All consoles that do not require a biopatch.
|
||||
• All American models SCPH-xxx1
|
||||
• All Asian models SCPH-xxx3
|
||||
• Fat European models SCPH-1002 -> 9002
|
||||
- If you are using an Arduino board with a bootloader.
|
||||
### Regional compatibility details:
|
||||
* **Japanese Models (SCPH-xxx0 NTSC-J):**
|
||||
* **BIOS patch REQUIRED** to play American (NTSC-U/C) games.
|
||||
* Cannot play European (PAL) games without additional hardware clock modifications.
|
||||
* **American (SCPH-xxx1 NTSC-U/C) & Asian (SCPH-xxx3 NTSC-J):**
|
||||
* Can play each other's games (NTSC J/U) **without** a BIOS patch.
|
||||
* Cannot play European (PAL) games without additional hardware clock modifications.
|
||||
* **European Models (PAL):**
|
||||
* **PS One (SCPH-102):** **BIOS patch REQUIRED** to play American (NTSC-U/C) and Japanese (NTSC-J) games.
|
||||
* **Fat Models (SCPH-7002, 7502, 9002):** With motherboards **PU-20, PU-22, or PU-23**, these can play NTSC-U/C and NTSC-J games **WITHOUT** a BIOS patch or clock mods.
|
||||
* **Older Fat Models:** Require a hardware **clock modification** to correctly run NTSC games.
|
||||
|
||||
## [Tutorial for injections via USB](https://github.com/kalymos/PsNee/wiki/Tutorial-for-injections-via-USB,-only-for-ATmega-without-biospatch!)
|
||||
|
||||
## You are required to use ISP injection in the following cases
|
||||
- When using ATtiny chips.
|
||||
- If your console requires a BIOS patch.
|
||||
• All Japanese models SCPH-xxx0
|
||||
• The European One SCPH-102
|
||||
> [!IMPORTANT]
|
||||
> If your console is a **Japanese SCPH-xxx0** or a **European PS One SCPH-102**, you **MUST** use the ISP method to inject the code. Standard USB upload cannot handle the BIOS patch.
|
||||
|
||||
## [Personal recipe to make a good PSNee via ISP ](Personal-recipe-to-make-a-good-PSNee)
|
||||
|
||||
## When can I use simple USB injection?
|
||||
You can use the direct USB injection method **ONLY** if:
|
||||
|
||||
1. **Your console does NOT require a BIOS patch:**
|
||||
* All American models (**SCPH-xxx1**).
|
||||
* All Asian models (**SCPH-xxx3**).
|
||||
* All European Fat models (**SCPH-1002** to **9002**).
|
||||
2. **AND you are using an Arduino board with a bootloader** (like a Nano or a Pro Mini with an FTDI adapter).
|
||||
|
||||
## [Tutorial for injections via USB](https://github.com/kalymos/PsNee/wiki/Tutorial-for-injections-via-USB,-only-for-ATmega-without-biospatch!)
|
||||
|
||||
## Pinout MCU & Arduino
|
||||
- [Pinout ATtiny25/45/85](Pinout-ATtiny25_45_85)
|
||||
@@ -77,26 +82,39 @@ To determine your BIOS version, which is essential for old Japanese models, the
|
||||
- [PIN_SWITCH](https://github.com/kalymos/PsNee/wiki/PIN_SWITCH)
|
||||
- [ISP gateway](https://github.com/kalymos/PsNee/wiki/ISP-gateway)
|
||||
|
||||
## PsNee modchip drawbacks
|
||||
Due to the extensive coverage of different PS1 models, there is no universal compilation.
|
||||
## PsNee Modchip Advantages
|
||||
The PsNee modchip uses AVR microcontrollers instead of the older PIC-based architecture. This allows for easier programming and the use of common Arduino boards as modchips.
|
||||
|
||||
## PsNee modchip advantages
|
||||
The greatest strength of the PsNee modchip is that it is much more modern than PIC-based modchips and supports all PS1 models. Using AVR chips makes programming a PsNee chip easier, and many people may already have an Arduino that can be used as a PsNee modchip.
|
||||
Using more powerful processors allows the modchip to work with American, European, and Japanese PlayStation 1 consoles with a single chip. It can even patch the BIOS. Note that this BIOS patch does not work with ATtiny chips.
|
||||
The increased processing power enables support for American, European, and Japanese consoles with a single code base. It also allows for BIOS patching to bypass regional lockouts on specific models (SCPH-102 and Japanese models).
|
||||
|
||||
## PsNee modchip source code
|
||||
It supports the following microcontrollers:These chips fall into two categories, ATmega based chips, and ATtiny based chips. ATmega chips cost more, but allow for BIOS patching. ATtiny chips cost less. ATmega chips are also considerably larger in size, making them more difficult to fit into a system when compared to the ATtiny chips.
|
||||
## PsNee Modchip Drawbacks
|
||||
Because of the diversity of PS1 motherboard revisions and regional requirements, the code must be configured and compiled specifically for each setup. There is no single universal pre-compiled file.
|
||||
|
||||
## Microcontroller Categories
|
||||
The supported chips are divided into two categories:
|
||||
|
||||
* **ATmega-based (e.g., ATmega328P, 168, 32U4):**
|
||||
* **Features:** Supports all features, including **BIOS patching**. Can be programmed via USB if a bootloader is present.
|
||||
* **Physicality:** Larger footprint, requiring more space inside the console.
|
||||
* **ATtiny-based (e.g., ATtiny25/45/85):**
|
||||
* **Features:** **No BIOS patch support.** Limited to standard modchip functions. Always requires an ISP programmer for code injection.
|
||||
* **Physicality:** Very small size, allowing for easier integration on the motherboard.
|
||||
|
||||
## PAL and NTSC incompatibility with your TV
|
||||
In North America, we have NTSC-U/C consoles and TVs, and in Japan, there are NTSC-J consoles and TVs. Meanwhile, Europe and some other regions use PAL consoles and TVs.
|
||||
On the PlayStation 1, the modchip unlocks the ability to output video for any region based on the game being played. However, not all TVs support all video formats.
|
||||
For example, if you insert a PAL game into your modded system and try to play it on an American TV, you might not get any video output.
|
||||
The PlayStation 1 output signal (PAL or NTSC) is determined by the region of the game being played. While the modchip unlocks the console's ability to run any game, it cannot change how your TV handles the signal.
|
||||
|
||||
This is primarily an issue with **CRT (cathode-ray tube) TVs**:
|
||||
- **North America & Japan:** Most CRT TVs only support **NTSC** signals. Running a PAL game will often result in no image, a rolling screen, or a black-and-white picture.
|
||||
- **Europe:** Many European CRT TVs (especially later models) support **PAL60**, allowing them to display NTSC games in color.
|
||||
|
||||
**Solutions:**
|
||||
- **Composite-to-HDMI converter:** These affordable devices convert the specific analog signal (PAL or NTSC) into a standard digital HDMI signal compatible with any modern flat-screen TV.
|
||||
- **RGB Scart Cable:** For CRT users, using a true RGB cable can often solve the black-and-white issue on compatible TVs, though it won't fix screen rolling if the TV cannot sync to the frequency (50Hz vs 60Hz).
|
||||
|
||||
To avoid this issue, I recommend buying a cheap composite-to-HDMI converter. These devices convert the unusual analog signal from a game of another region into a standard HDMI signal, ensuring compatibility with your TV.
|
||||
|
||||
## Japanese consoles and video glitches with PAL games
|
||||
Japanese consoles with specific clock signals can produce a bad video signal when playing PAL games. [A known solution](https://github.com/consolesunleashed/sony-playstation-multi-output-frequency-oscillator).
|
||||
|
||||
## Things just for curiosity
|
||||
- [List of motherboards by console version number](List-of-motherboards-by-console-version-number)
|
||||
- [PlayStation 1 modchip history](PlayStation-1-modchip-history)
|
||||
- [PlayStation 1 modchip history](PlayStation-1-modchip-history)
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
PsNee is a designer specifically to bypass the protection system of regions engraved in discs, and the protections in the bios.
|
||||
|
||||
Originally PsNee was only designed for the protection engraved on the discs. This protection was based on two specific elements. The first being a specific area of the CDs that is normally used for the calibration of the lasers, on which Sony has implemented a bit of binary code representing the different regions. The second is a specific instruction set, the control unit of the player sends to the laser controller, to go read the specific area. Very quickly the engines realized that it was possible to trick the controller of the player by sending instruction packs on the line between the controller of the player and the controller of the laser.
|
||||
The old modchip followed the evolution of this protection, first by sending without much regard the region code, then by adding specific clocks, to delay the sending.
|
||||
@@ -1 +0,0 @@
|
||||

|
||||
@@ -1,20 +0,0 @@
|
||||
# MCU.h: General Description
|
||||
|
||||
The MCU.h file is a crucial library for configuring and managing the microcontroller used in the PSNee modchip. It adapts the code based on the selected microcontroller model (ATmega32U4, ATtiny85, etc.) and ensures the proper functioning of the modchip’s core features.
|
||||
## Main Purpose
|
||||
|
||||
### Microcontroller Definition and Configuration:
|
||||
- Adapts the code to the chosen microcontroller model.
|
||||
- Defines the clock frequency and timer settings.
|
||||
|
||||
### I/O (Input/Output) Management:
|
||||
- Configures microcontroller pins for communication with the PlayStation console.
|
||||
- Activates or deactivates specific pins based on the modchip’s state.
|
||||
|
||||
### Timer and Interrupt Handling:
|
||||
- Uses CTC mode (Clear Timer on Compare Match) to generate precise signals.
|
||||
- Manages interrupts to process console signals in real time.
|
||||
|
||||
### BIOS Patch Compatibility:
|
||||
- Some microcontrollers support BIOS modifications, while others do not.
|
||||
- Compatibility checks prevent compilation errors.
|
||||
@@ -1,85 +0,0 @@
|
||||
# the expected console output from avrdude, for an injection on an ATmegy328p, option #define SCPH_xxx1, or #define SCPH_xxx2, and #define SCPH_103
|
||||
avrdude: Version 6.3-20190619
|
||||
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
|
||||
Copyright (c) 2007-2014 Joerg Wunsch
|
||||
|
||||
System wide configuration file is "/home/psnee/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino17/etc/avrdude.conf"
|
||||
User configuration file is "/home/psnee/.avrduderc"
|
||||
User configuration file does not exist or is not a regular file, skipping
|
||||
|
||||
Using Port : /dev/ttyUSB0
|
||||
Using Programmer : stk500v1
|
||||
Overriding Baud Rate : 19200
|
||||
AVR Part : ATmega328P
|
||||
Chip Erase delay : 9000 us
|
||||
PAGEL : PD7
|
||||
BS2 : PC2
|
||||
RESET disposition : dedicated
|
||||
RETRY pulse : SCK
|
||||
serial program mode : yes
|
||||
parallel program mode : yes
|
||||
Timeout : 200
|
||||
StabDelay : 100
|
||||
CmdexeDelay : 25
|
||||
SyncLoops : 32
|
||||
ByteDelay : 0
|
||||
PollIndex : 3
|
||||
PollValue : 0x53
|
||||
Memory Detail :
|
||||
|
||||
Block Poll Page Polled
|
||||
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
|
||||
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
|
||||
eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff
|
||||
flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
|
||||
lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
|
||||
hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
|
||||
efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
|
||||
lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
|
||||
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
|
||||
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
|
||||
|
||||
Programmer Type : STK500
|
||||
Description : Atmel STK500 Version 1.x firmware
|
||||
Hardware Version: 2
|
||||
Firmware Version: 1.18
|
||||
Topcard : Unknown
|
||||
Vtarget : 0.0 V
|
||||
Varef : 0.0 V
|
||||
Oscillator : Off
|
||||
SCK period : 0.1 us
|
||||
|
||||
avrdude: AVR device initialized and ready to accept instructions
|
||||
|
||||
Reading | ################################################## | 100% 0.02s
|
||||
|
||||
avrdude: Device signature = 0x1e950f (probably m328p)
|
||||
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
|
||||
To disable this feature, specify the -D option.
|
||||
avrdude: erasing chip
|
||||
avrdude: reading input file "0xfd"
|
||||
avrdude: writing efuse (1 bytes):
|
||||
|
||||
Writing | ################################################## | 100% 0.01s
|
||||
|
||||
avrdude: 1 bytes of efuse written
|
||||
avrdude: reading input file "0xdf"
|
||||
avrdude: writing hfuse (1 bytes):
|
||||
|
||||
Writing | ################################################## | 100% 0.01s
|
||||
|
||||
avrdude: 1 bytes of hfuse written
|
||||
avrdude: reading input file "0xee"
|
||||
avrdude: writing lfuse (1 bytes):
|
||||
|
||||
Writing | ################################################## | 100% 0.01s
|
||||
|
||||
avrdude: 1 bytes of lfuse written
|
||||
avrdude: reading input file "/home/psnee/.cache/arduino/sketches/2D0578E703384A013F1ED0F530AB97FB/PSNee_V8.6.ino.hex"
|
||||
avrdude: writing flash (888 bytes):
|
||||
|
||||
Writing | ################################################## | 100% 1.00s
|
||||
|
||||
avrdude: 888 bytes of flash written
|
||||
|
||||
avrdude done. Thank you.
|
||||
@@ -9,84 +9,108 @@
|
||||
|
||||
## Part 1:
|
||||
### Install the Arduino IDE
|
||||
Installing the Arduino IDE 2.x provides the necessary environment for the project, with the official tutorial serving as a key resource. The project, which utilizes ATmega 168 microcontrollers, is currently focused on the code injection phase.
|
||||
|
||||
https://docs.arduino.cc/software/ide-v2/tutorials/getting-started/ide-v2-downloading-and-installing/
|
||||
|
||||
|
||||
## Part 2:
|
||||
### In the Arduino IDE, select the MCU build chai for you ISP programmer, an check that everything works properly by injecting the Blink sketch:
|
||||
### Add a board with the Boards Manager
|
||||
This step is necessary for ATtinyX5 with ATTinyCore, and ATmega 168/328PB with MiniCore. I generally recommend using these cores as they provide more options and better performance.
|
||||
|
||||
These cores can be installed using the boards manager by following these steps:
|
||||
|
||||
For MiniCore
|
||||
- `https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json`
|
||||
|
||||
|
||||
1. File->Preferences on a PC, or Arduino->Preferences on a Mac, enter the above URL in "Additional Boards Manager URLs
|
||||
2. Tools -> Boards -> Boards Manager...
|
||||
3. Search for and select **"MiniCore by MCUdude"** or **"ATTinyCore by Spence Konde"**, then click **"Install"**.
|
||||
|
||||
For more details, visit the [Arduino support page] (https://support.arduino.cc/hc/en-us/articles/360016119519-Add-boards-to-Arduino-IDE)
|
||||
|
||||
|
||||
## Part 3:
|
||||
### In the Arduino IDE, select the MCU build chain for you ISP programmer, and check that everything works properly by injecting the Blink sketch:
|
||||
* Connect your board
|
||||
* File -> example -> 01. Basic -> blink
|
||||
* Tools -> Board -> Arduino AVR Board -> _your board (programmer)_
|
||||
* Tools -> Board -> Select the Core related to your target -> _your board (programmer)_
|
||||
* Tools -> port -> _select your board’s port (programmer)_
|
||||
* Tools -> Processore -> _your varient (programmer)_
|
||||
* Tools -> Processor -> _your variant (programmer)_
|
||||
* Tools -> programmer -> _Your card's programmer_
|
||||
* Sketch -> upload
|
||||
|
||||

|
||||
|
||||
For ATmega32U4 you can use this [diagram](https://github.com/kalymos/PsNee/wiki/PIN_LED), and modify the Blink sketch accordingly (Unlike normal Arduinos, these platforms do not have LED_BUILTIN and you have to add one)
|
||||
- Tools -> Board -> Arduino AVR Board -> **Arduino Yũn** (The corresponding core for ATmega32U4)
|
||||
- ATmega32U4 LED_BUILTIN -> PIN 10
|
||||
|
||||
* ATmega32U4 LED_BUILTIN -> PIN 10
|
||||
|
||||
## Part 3:
|
||||
## Part 4:
|
||||
### Convert an Arduino into an ISP programmer
|
||||
* File -> example -> 11.ArduinoISP -> ArduinoISP
|
||||
* File -> example -> 11.ArduinoISP -> ArduinoISP
|
||||
* Sketch -> upload
|
||||
|
||||
https://docs.arduino.cc/built-in-examples/arduino-isp/ArduinoISP/
|
||||
|
||||
## Part 4:
|
||||
### Install the PSNeecore
|
||||
* Install the PSNeecore directory in the arduino/hardware/ directory, If the hardware directory does not exist, it must be created.
|
||||
- Windows: C:\Users\{username}\Documents\Arduino\hardware
|
||||
- macOS: /Users/{username}/Documents/Arduino/hardware
|
||||
- Linux: /home/{username}/Arduino/hardware
|
||||
* reboot arduino
|
||||
|
||||
|
||||
## Part 4:
|
||||
### Connect your Arduino board or the MCU you want to use as a modchip, to your ISP programmer that you just created, following the schematics.
|
||||
## Part 5:
|
||||
### Connect your Arduino board or the MCU you want to use as a modchip, to your ISP programmer that you just created, following the schematics.
|
||||
|
||||
I introduced this test because even if avrdude tells you that it correctly injected the code, in reality it only knows that it was able to transmit it to the ISP programmer, and to know if there is no problem in the connections between the programmer and the target, the only way is to see a program running on the target.
|
||||
Here the bling test is less necessary with MiniCore, at the end of the injection it checks that the program has been injected correctly.
|
||||
|
||||

|
||||
Check if your iSP programmer can correctly inject the code into your target, by running the Blink test again
|
||||
* File -> example -> 01. Basic -> blink
|
||||
* Tools -> Board -> PSNeeCore -> _your MCU for the modchip (target)_
|
||||
* Tools -> Processor -> _your MCU varient for the modchip (target)_
|
||||
* Tools -> port -> the port of _ISP programmer_
|
||||
* Tools -> programmer -> Arduino as ISP
|
||||
|
||||
Check if your ISP programmer can correctly inject the code into your target, by running the Blink test again:
|
||||
* File -> example -> 01. Basic -> blink
|
||||
* Tools -> Board -> Select the Core related to your target -> your MCU for the modchip (target)
|
||||
* Tools -> Processor -> your MCU variant for the modchip (target)
|
||||
* Tools -> port -> the port of ISP programmer
|
||||
* Tools -> programmer -> Arduino as ISP
|
||||
* Sketch -> upload using a programmer
|
||||
|
||||
Normally your target should flash
|
||||

|
||||
For ATtiny, and ATmega32U4 you can use this [diagram](https://github.com/kalymos/PsNee/wiki/PIN_LED), and modify the Blink sketch accordingly (Unlike normal Arduinos, these platforms do not have LED_BUILTIN and you have to add one)
|
||||
For ATtiny, and ATmega32U4 you can use this [diagram](https://github.com/kalymos/PsNee/wiki/PIN_LED), and modify the Blink sketch accordingly (Unlike normal Arduinos, these platforms do not have LED_BUILTIN and you have to add one)
|
||||
- ATtiny LED_BUILTIN -> PIN 3
|
||||
- ATmega32U4 LED_BUILTIN -> PIN 10
|
||||
|
||||
## Part 5:
|
||||
### Troubleshooting (Common Errors)
|
||||
1. Error: avrdude: stk500_getsync() attempt X of 10: not in sync
|
||||
* Check your connections: A jumper wire might be loose.
|
||||
* Capacitor: If you are using an Arduino Uno as the programmer, you might need a 10µF capacitor between the Reset and GND pins of the programmer (after uploading the ArduinoISP sketch).
|
||||
* Wrong Port: Verify in Tools -> Port that you have selected the port of your programmer.
|
||||
|
||||
2. Error: avrdude: Yikes! Invalid device signature.
|
||||
* Target Power: Ensure your target MCU is correctly powered by the 5V (or 3.3V) and GND pins of the programmer.
|
||||
* Wrong Board selected: Double-check that you selected the correct target MCU in Tools -> Board (e.g., ATtiny85 vs ATtiny45).
|
||||
|
||||
3. The LED doesn't blink (Blink test)
|
||||
* Polarity: Check if your LED is connected in the right direction (Long leg is +).
|
||||
* Wrong Pin: Ensure you modified the sketch for ATtiny (Pin 3) or ATmega32U4 (Pin 10) as mentioned above.
|
||||
|
||||
|
||||
## Part 6:
|
||||
### Selecting options in the sketch.
|
||||
- Open the PSNee sketch on Arduino.
|
||||
- select the PSNee.ino file.
|
||||
Choose your target console in the first section, "Select your console," by uncommenting the appropriate line.
|
||||
|
||||
- Select the PSNee.ino file.
|
||||
- Choose your target console in the first section, "CONSOLE MODEL SELECTION" by uncommenting the appropriate line.
|
||||
* //#define SCPH_102 -> #define SCPH_102, for example.
|
||||
|
||||
In the second section, "Select your chip," choose the MCU that will become your modchip:
|
||||
* //#define ATmega328_168 -> #define ATmega328_168, for example.
|
||||
|
||||
To determine your BIOS version, use the [BIOS dumper](Just-what-you-need-to-know-to-know-your-BIOS-with-BIOS-Dumper-2.6.).
|
||||
|
||||
## Part 6:
|
||||
## Part 7:
|
||||
### Compile and inject the program.
|
||||
* Sketch -> upload using a programmer
|
||||
|
||||
Your PSNee should now be ready to install in your PlayStation.
|
||||
|
||||
## Part 7:
|
||||
## Part 8:
|
||||
### Install your PSNee in your console following the schematics available in the Wiki.
|
||||
If your console does not require a BIOS patch, ignore the AX, AY, DX, and RESET pins.
|
||||
If If your console requires a BIOS patch, follow the BIOS pin diagram for the AX, AY, and DX pins.
|
||||
**AY pin is only needed on machines with BIOS V1.0j or V1.1j.**
|
||||
If your console requires a BIOS patch, follow the BIOS pin diagram for the AX, AY, and DX pins.
|
||||
**AY pin is only needed on machines with BIOS V1.0j or V1.1j, SCPH-1000 SCPH-3000.**
|
||||
|
||||
LED activities during boot with BIOS patch:
|
||||

|
||||
Now you can enjoy your delicious pancakes hot off the burner on your PS1;P
|
||||
Now you can enjoy your delicious pancakes hot off the burner on your PS1 ;P
|
||||
|
||||
@@ -1,22 +1,24 @@
|
||||
## Understanding Disc Protections: Anti-Modchip vs. LibCrypt
|
||||
|
||||
- Regions & Origin
|
||||
### 1. Anti-Modchip Protection (Software)
|
||||
* **Mechanism:** Software code within the game that detects if a modchip is active after the initial boot.
|
||||
* **PsNee implementation:** PsNee is a stealth chip that uses precise timing for code injections. It stops sending data as soon as the console no longer requests it, preventing software detection.
|
||||
|
||||
NTSC-J: First to introduce protection in late 1998.
|
||||
PAL: Heavily adopted LibCrypt starting in 1999.
|
||||
NTSC U/C: Primarily relied on Anti-Modchip v2; LibCrypt was rarely used in this region.
|
||||
### 2. LibCrypt Protection (Physical/Data)
|
||||
* **Mechanism:** A 16-bit Digital ID stored in the Sub-Channel Q of the original disc. This is a data-level check, not a chip-level check.
|
||||
* **PsNee limitation:** PsNee cannot bypass LibCrypt checks.
|
||||
* **Solutions:**
|
||||
1. **ISO Patching:** Applying a PPF patch to the game image before burning.
|
||||
2. **Burning Speed:** Burning the disc at a low speed (1x to 4x) can sometimes preserve enough sub-channel data to pass the check without a patch, depending on the burner's quality.
|
||||
|
||||
- Anti-Modchip vs. LibCrypt
|
||||
### Regional Differences
|
||||
* **NTSC-J:** Protections introduced in late 1998.
|
||||
* **PAL:** Wide use of LibCrypt (LC1 to LC4) starting in 1999.
|
||||
* **NTSC-U/C:** Primarily used Anti-Modchip v2; LibCrypt is rare in this region.
|
||||
|
||||
Anti-Modchip: Software code that detects if a Mod-Chip is active. If found, it triggers an "error screen" and halts the game.
|
||||
LibCrypt: Uses a 16-bit Digital ID hidden in the Sub-Channel Q of the CD-ROM. It checks for a physical original disc, not the chip itself.
|
||||
|
||||
- Evolution (LC1 to LC4)
|
||||
|
||||
LibCrypt evolved through four versions (LC1-LC4). Each iteration made the mathematical link between the Sub-Channel key and the game's executable harder to crack or emulate.
|
||||
- Modern Stealth Chips (PSNee)
|
||||
|
||||
"Stealth" chips like PSNee can bypass Anti-Modchip by turning off after the console boots. However, they cannot bypass LibCrypt. If the 16-bit key is missing from the burned CD-R, the game will still fail or trigger in-game bugs.
|
||||
> [!TIP]
|
||||
> If a game boots but has bugs (such as the controller being disabled), LibCrypt is likely the cause.
|
||||
|
||||
Protected Games [PAL](https://github.com/kalymos/PsNee/wiki/Protected-Games-%5BPAL%5D)
|
||||
Protected Games [NTSC J](https://github.com/kalymos/PsNee/wiki/Protected-Games-%5BNTSC-J%5D)
|
||||
Protected Games [NTSC U/C](https://github.com/kalymos/PsNee/wiki/Protected-Games-%5BNTSC-U%7CC%5D)
|
||||
Protected Games [NTSC U/C](https://github.com/kalymos/PsNee/wiki/Protected-Games-%5BNTSC-U%7CC%5D)
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
Programming via ISP can be complex when you're not used to it (I can tell you from personal experience).
|
||||
Apart from the technique I explain in the tutorial, there are a multitude of other ways to use the ISP protocol to inject code, I will not talk about these other methods, because not mastering them myself or not knowing them, it would be a waste of time for me to dwell on them.
|
||||
|
||||
* The first thing you have to be careful about, especially when you are not used to the Arduino IDE, is to check carefully if you can inject a simple sketch on your target that you want to transform into an ISP gateway.
|
||||
Hence the first use in the tutorial of the blink sketch (which I personally use systematically when I have a doubt about the injection, because it is the simplest sketch, which must always work).
|
||||
P.S. At this point if you want to use a Pro Micro card it does not have an integrated LED, as is usually found on other cards, and to do this test you will have to add an LED. The best is to do it at Pin 10. This is because it is the same pin that is used to know if the region code is injected inside the Playstation.
|
||||
* The second thing to know is that when using the ISP protocol to inject code into a board, even if the Arduino IDE tells us that the injection was performed correctly, it can still be injected into a void! (Yes, it can't check if there's a board at the end of the chain).
|
||||
Hence a second use of the blink sketch in the tutorial, to once again verify that everything is working.
|
||||
@@ -1,50 +1,49 @@
|
||||
Game | ID (SLPS/SCPS) | Protection | Version
|
||||
-- | -- | -- | --
|
||||
PoPoRogue | SCPS-10065 | LibCrypt | LC1
|
||||
Ape Escape (Saru Getchu) | SCPS-10090 | Anti-Modchip | v1*
|
||||
Beat Mania Gotta Mix | SLPM-86227 | Anti-Modchip | v1*
|
||||
Biohazard 3: Last Escape | SLPS-02300 | Anti-Modchip | v1*
|
||||
Bust A Move 2: Dance Tengoku Mix | SLPS-01930 | Anti-Modchip | v1*
|
||||
Chocobo Racing | SLPS-01900 | Anti-Modchip | v1*
|
||||
Chrono Cross | SLPS-02440 | Anti-Modchip | v1*
|
||||
Cyberbots: Fullmetal Madness | SLPS-02180 | Anti-Modchip | v1*
|
||||
DDR 2nd ReMix | SLPM-86290 | Anti-Modchip | v1*
|
||||
Dancing Blade 2 | SLPS-02100 | Anti-Modchip | v1*
|
||||
Dino Crisis (J) | SLPS-02180 | Anti-Modchip | v1*
|
||||
Exceed My Corpse | SCPS-10088 | Anti-Modchip | v1*
|
||||
Final Fantasy VIII (J) | SLPS-01880 | Anti-Modchip | v1*
|
||||
Front Mission 3 | SLPS-02200 | Anti-Modchip | v1*
|
||||
Global Force | SLPS-01950 | Anti-Modchip | v1*
|
||||
Guitar Freaks | SLPM-86255 | Anti-Modchip | v1*
|
||||
Gungage | SLPM-86230 | Anti-Modchip | v1*
|
||||
Iwatobi Penguin | SLPS-01050 | Anti-Modchip | v1*
|
||||
Konami 80's Arcade Gallery | SLPM-86228 | Anti-Modchip | v1*
|
||||
Legend of Dragoon (J) | SCPS-10119 | Anti-Modchip | v1*
|
||||
Legend of Mana (J) | SLPS-02170 | Anti-Modchip | v1*
|
||||
Lord of Monsters | SCPS-10078 | Anti-Modchip | v1*
|
||||
Magical Tetris Challenge | SLPS-01828 | Anti-Modchip | v1*
|
||||
Marvel vs. Capcom: EX Edition | SLPS-02000 | Anti-Modchip | v1*
|
||||
Metal Gear Solid Integral | SLPS-02100 | Anti-Modchip | v1*
|
||||
Omega Boost | SCPS-10085 | Anti-Modchip | v1*
|
||||
R4: Ridge Racer Type 4 | SLPS-01800 | Anti-Modchip | v1*
|
||||
SaGa Frontier 2 (J) | SLPS-01990 | Anti-Modchip | v1*
|
||||
Silent Hill (J) | SLPM-86192 | Anti-Modchip | v1*
|
||||
Spyro the Dragon (J) | SCPS-10076 | Anti-Modchip | v1*
|
||||
Street Fighter EX 2 Plus | SLPS-02400 | Anti-Modchip | v1*
|
||||
Tokimeki Memorial Drama Vol.3 | SLPM-86210 | Anti-Modchip | v1*
|
||||
Wild Arms 2nd Ignition | SCPS-10089 | Anti-Modchip | v1*
|
||||
Yu-Gi-Oh! Forbidden Memories | SLPS-02450 | Anti-Modchip | v1*
|
||||
Arc the Lad III | SCPS-10106 | Anti-Modchip | v2*
|
||||
Breath of Fire IV (J) | SLPS-02820 | Anti-Modchip | v2*
|
||||
Chase the Express | SCPS-10118 | Anti-Modchip | v2*
|
||||
Dragon Quest VII | SLPS-02930 | Anti-Modchip | v2*
|
||||
Final Fantasy IX (J) | SLPS-02000 | Anti-Modchip | v2*
|
||||
Pop'n Music Animation Melody | SLPM-86590 | Anti-Modchip | v2*
|
||||
Resident Evil: Gun Survivor | SLPS-02550 | Anti-Modchip | v2*
|
||||
Robbit Mon Dieu | SCPS-10110 | Anti-Modchip | v2*
|
||||
Tales of Eternia | SLPS-03050 | Anti-Modchip | v2*
|
||||
Vagrant Story (J) | SLPS-02355 | Anti-Modchip | v2*
|
||||
Winning Eleven 2000 | SLPM-86580 | Anti-Modchip | v2*
|
||||
|Game | ID (SLPS/SCPS)
|
||||
|-- |
|
||||
|PoPoRogue | SCPS-10065
|
||||
|Ape Escape (Saru Getchu) | SCPS-10090
|
||||
|Beat Mania Gotta Mix | SLPM-86227
|
||||
|Biohazard 3: Last Escape | SLPS-02300
|
||||
|Bust A Move 2: Dance Tengoku Mix | SLPS-01930
|
||||
|Chocobo Racing | SLPS-01900
|
||||
|Chrono Cross | SLPS-02440
|
||||
|Cyberbots: Fullmetal Madness | SLPS-02180
|
||||
|DDR 2nd ReMix | SLPM-86290
|
||||
|Dancing Blade 2 | SLPS-02100
|
||||
|Dino Crisis (J) | SLPS-02180
|
||||
|Exceed My Corpse | SCPS-10088
|
||||
|Final Fantasy VIII (J) | SLPS-01880
|
||||
|Front Mission 3 | SLPS-02200
|
||||
|Global Force | SLPS-01950
|
||||
|Guitar Freaks | SLPM-86255
|
||||
|Gungage | SLPM-86230
|
||||
|Iwatobi Penguin | SLPS-01050
|
||||
|Konami 80's Arcade Gallery | SLPM-86228
|
||||
|Legend of Dragoon (J) | SCPS-10119
|
||||
|Legend of Mana (J) | SLPS-02170
|
||||
|Lord of Monsters | SCPS-10078
|
||||
|Magical Tetris Challenge | SLPS-01828
|
||||
|Marvel vs. Capcom: EX Edition | SLPS-02000
|
||||
|Metal Gear Solid Integral | SLPS-02100
|
||||
|Omega Boost | SCPS-10085
|
||||
|R4: Ridge Racer Type 4 | SLPS-01800
|
||||
|SaGa Frontier 2 (J) | SLPS-01990
|
||||
|Silent Hill (J) | SLPM-86192
|
||||
|Spyro the Dragon (J) | SCPS-10076
|
||||
|Street Fighter EX 2 Plus | SLPS-02400
|
||||
|Tokimeki Memorial Drama Vol.3 | SLPM-86210
|
||||
|Wild Arms 2nd Ignition | SCPS-10089
|
||||
|Yu-Gi-Oh! Forbidden Memories | SLPS-02450
|
||||
|Arc the Lad III | SCPS-10106
|
||||
|Breath of Fire IV (J) | SLPS-02820
|
||||
|Chase the Express | SCPS-10118
|
||||
|Dragon Quest VII | SLPS-02930
|
||||
|Final Fantasy IX (J) | SLPS-02000
|
||||
|Pop'n Music Animation Melody | SLPM-86590
|
||||
|Resident Evil: Gun Survivor | SLPS-02550
|
||||
|Robbit Mon Dieu | SCPS-10110
|
||||
|Tales of Eternia | SLPS-03050
|
||||
|Vagrant Story (J) | SLPS-02355
|
||||
|Winning Eleven 2000 | SLPM-86580
|
||||
|
||||
|
||||
*Note: Anti-Modchip versioning (v1/v2) is estimated based on release dates and publisher.
|
||||
Exact versioning is not officially documented.
|
||||
|
||||
@@ -1,29 +1,25 @@
|
||||
Game | ID (SLUS/SCUS) | Protection | Version
|
||||
-- | -- | -- | --
|
||||
Dino Crisis | SLUS-00922 | Anti-Modchip | v1*
|
||||
Resident Evil 3: Nemesis | SLUS-00923 | Anti-Modchip | v1*
|
||||
Resident Evil: Survivor | SLUS-01087 | Anti-Modchip | v1*
|
||||
Vandal Hearts II | SLUS-00951 | Anti-Modchip | v1*
|
||||
Wild Arms 2 | SLUS-00895 | Anti-Modchip | v1*
|
||||
Breath of Fire IV | SLUS-01138 | Anti-Modchip | v2*
|
||||
Cool Boarders 2001 | SCUS-94580 | Anti-Modchip | v2*
|
||||
Crash Bash | SCUS-94570 | Anti-Modchip | v2*
|
||||
Disney's The Emperor's New Groove | SLUS-01270 | Anti-Modchip | v2*
|
||||
Disney's Toy Story 2 | SLUS-00893 | Anti-Modchip | v2*
|
||||
Grind Session | SCUS-94458 | Anti-Modchip | v2*
|
||||
Legend of Dragoon | SCUS-94491 | Anti-Modchip | v2*
|
||||
MediEvil 2 | SCUS-94464 | Anti-Modchip | v2*
|
||||
MoHo (Lost World) | SLUS-01183 | Anti-Modchip | v2*
|
||||
NBA Shootout 2001 | SCUS-94576 | Anti-Modchip | v2*
|
||||
NCAA Final Four 2001 | SCUS-94582 | Anti-Modchip | v2*
|
||||
NCAA Gamebreaker 2001 | SCUS-94578 | Anti-Modchip | v2*
|
||||
NFL GameDay 2001 | SCUS-94574 | Anti-Modchip | v2*
|
||||
NHL FaceOff 2001 | SCUS-94581 | Anti-Modchip | v2*
|
||||
Spyro: Year of the Dragon | SCUS-94467 | Anti-Modchip | v2*
|
||||
Strider 2 | SLUS-01163 | Anti-Modchip | v2*
|
||||
The Grinch | SLUS-01168 | Anti-Modchip | v2*
|
||||
Tomba! 2: The Evil Swine Return | SCUS-94454 | Anti-Modchip | v2*
|
||||
|
||||
*Note: Anti-Modchip versioning (v1/v2) is estimated based on release dates and publisher
|
||||
(Sony SCUS titles post-1999 typically use v2). Exact versioning is not officially
|
||||
documented and may vary.
|
||||
|Game | ID
|
||||
|-- | --
|
||||
|Dino Crisis | SLUS-00922
|
||||
|Resident Evil 3: Nemesis | SLUS-00923
|
||||
|Resident Evil: Survivor | SLUS-01087
|
||||
|Vandal Hearts II | SLUS-00951
|
||||
|Wild Arms 2 | SLUS-00895
|
||||
|Breath of Fire IV | SLUS-01138
|
||||
|Cool Boarders 2001 | SCUS-94580
|
||||
|Crash Bash | SCUS-94570
|
||||
|Disney's The Emperor's New Groove | SLUS-01270
|
||||
|Disney's Toy Story 2 | SLUS-00893
|
||||
|Grind Session | SCUS-94458
|
||||
|Legend of Dragoon | SCUS-94491
|
||||
|MediEvil 2 | SCUS-94464
|
||||
|MoHo (Lost World) | SLUS-01183
|
||||
|NBA Shootout 2001 | SCUS-94576
|
||||
|NCAA Final Four 2001 | SCUS-94582
|
||||
|NCAA Gamebreaker 2001 | SCUS-94578
|
||||
|NFL GameDay 2001 | SCUS-94574
|
||||
|NHL FaceOff 2001 | SCUS-94581
|
||||
|Spyro: Year of the Dragon | SCUS-94467
|
||||
|Strider 2 | SLUS-01163
|
||||
|The Grinch | SLUS-01168
|
||||
|Tomba! 2: The Evil Swine Return | SCUS-94454
|
||||
|
||||
@@ -1,63 +1,62 @@
|
||||
Game | ID (SLES/SCES) | Protection | Version
|
||||
-- | -- | -- | --
|
||||
Wild Arms | SCES-01153 | Anti-Modchip | v1*
|
||||
UmJammer Lammy | SCES-01742 | Anti-Modchip | v1*
|
||||
Vib-Ribbon | SCES-02873 | Anti-Modchip | v2*
|
||||
Ape Escape | SCES-01928 | Anti-Modchip | v2*
|
||||
Legend of Dragoon | SCES-03043 | Anti-Modchip | v2*
|
||||
Barbie Race & Ride | SLES-02319 | LibCrypt | LC1
|
||||
Barbie Super Sports | SLES-03478 | LibCrypt | LC1
|
||||
Crash Team Racing | SCES-02105 | LibCrypt | LC1
|
||||
Eagle One: Harrier Attack | SLES-02450 | LibCrypt | LC1
|
||||
Final Fantasy VIII | SLES-02081 | LibCrypt | LC1
|
||||
Formula 1 99 | SLES-01980 | LibCrypt | LC1
|
||||
GTA London (1969) | SLES-01824 | LibCrypt | LC1
|
||||
MediEvil | SCES-00311 | LibCrypt | LC1
|
||||
Metal Gear Solid: Spec. Missions | SLES-02136 | LibCrypt | LC1
|
||||
Mission Impossible | SLES-01183 | LibCrypt | LC1
|
||||
Mulan | SCES-01538 | LibCrypt | LC1
|
||||
Overblood 2 | SLES-01878 | LibCrypt | LC1
|
||||
Radical Bikers | SLES-01931 | LibCrypt | LC1
|
||||
Soul Reaver: Legacy of Kain | SLES-02030 | LibCrypt | LC1
|
||||
Speed Freaks | SCES-01763 | LibCrypt | LC1
|
||||
Spyro 2: Gateway to Glimmer | SCES-02104 | LibCrypt | LC1
|
||||
Tarzan | SCES-01452 | LibCrypt | LC1
|
||||
Theme Park World | SLES-02161 | LibCrypt | LC1
|
||||
V-Rally 2 | SLES-01907 | LibCrypt | LC1
|
||||
Dino Crisis | SLES-02212 | LibCrypt | LC2
|
||||
Galerians | SLES-02328 | LibCrypt | LC2
|
||||
Gekido: Urban Fighters | SLES-02537 | LibCrypt | LC2
|
||||
Hogs of War | SLES-02773 | LibCrypt | LC2
|
||||
Jackie Chan Stuntmaster | SCES-01453 | LibCrypt | LC2
|
||||
MediEvil 2 | SCES-02544 | LibCrypt | LC2
|
||||
Mike Tyson Boxing | SLES-02766 | LibCrypt | LC2
|
||||
Resident Evil 3: Nemesis | SLES-02532 | LibCrypt | LC2
|
||||
Ronaldo V-Football | SLES-02381 | LibCrypt | LC2
|
||||
SaGa Frontier 2 | SLES-02349 | LibCrypt | LC2
|
||||
This Is Football | SCES-01948 | LibCrypt | LC2
|
||||
Tomba! 2 | SCES-02353 | LibCrypt | LC2
|
||||
Urban Chaos | SLES-02390 | LibCrypt | LC2
|
||||
Vagrant Story | SLES-02758 | LibCrypt | LC2
|
||||
Vandal Hearts 2 | SLES-02357 | LibCrypt | LC2
|
||||
Crash Bash | SCES-02834 | LibCrypt | LC3
|
||||
Disney Magical Racing Tour | SLES-02604 | LibCrypt | LC3
|
||||
Final Fantasy IX | SLES-02967 | LibCrypt | LC3
|
||||
Le Mans 24 Hours | SLES-02302 | LibCrypt | LC3
|
||||
Moho | SLES-02809 | LibCrypt | LC3
|
||||
Need for Speed: Porsche 2000 | SLES-02688 | LibCrypt | LC3
|
||||
Parasite Eve 2 | SLES-02562 | LibCrypt | LC3
|
||||
P.G.A. European Tour Golf | SLES-02806 | LibCrypt | LC3
|
||||
Spyro 3: Year of the Dragon | SCES-02835 | LibCrypt | LC3
|
||||
Sydney 2000 | SLES-02814 | LibCrypt | LC3
|
||||
UEFA Euro 2000 | SLES-02700 | LibCrypt | LC3
|
||||
Wipeout 3 | SCES-01909 | LibCrypt | LC3
|
||||
Formula 1 2000 | SLES-02720 | LibCrypt | LC4
|
||||
Formula 1 2001 | SLES-03485 | LibCrypt | LC4
|
||||
LMA Manager 2001 | SLES-03144 | LibCrypt | LC4
|
||||
TOCA World Touring Cars | SLES-02572 | LibCrypt | LC4
|
||||
|
||||
*Note: Anti-Modchip versioning (v1/v2) is estimated based on release dates and publisher.
|
||||
Exact versioning for LibCrypt (LC1-LC4) is confirmed by sub-channel data analysis.
|
||||
|Game | ID
|
||||
|-- |--
|
||||
|Wild Arms | SCES-01153
|
||||
|UmJammer Lammy | SCES-01742
|
||||
|Vib-Ribbon | SCES-02873
|
||||
|Ape Escape | SCES-01928
|
||||
|Legend of Dragoon | SCES-03043
|
||||
|Barbie Race & Ride | SLES-02319
|
||||
|Barbie Super Sports | SLES-03478
|
||||
|Crash Team Racing | SCES-02105
|
||||
|Eagle One: Harrier Attack | SLES-02450
|
||||
|Final Fantasy VIII | SLES-02081
|
||||
|Formula 1 99 | SLES-01980
|
||||
|GTA London (1969) | SLES-01824
|
||||
|MediEvil | SCES-00311
|
||||
|Metal Gear Solid: Spec. Missions | SLES-02136
|
||||
|Mission Impossible | SLES-01183
|
||||
|Mulan | SCES-01538
|
||||
|Overblood 2 | SLES-01878
|
||||
|Radical Bikers | SLES-01931
|
||||
|Soul Reaver: Legacy of Kain | SLES-02030
|
||||
|Speed Freaks | SCES-01763
|
||||
|Spyro 2: Gateway to Glimmer | SCES-02104
|
||||
|Tarzan | SCES-01452
|
||||
|Theme Park World | SLES-02161
|
||||
|V-Rally 2 | SLES-01907
|
||||
|Dino Crisis | SLES-02212
|
||||
|Galerians | SLES-02328
|
||||
|Gekido: Urban Fighters | SLES-02537
|
||||
|Hogs of War | SLES-02773
|
||||
|Jackie Chan Stuntmaster | SCES-01453
|
||||
|MediEvil 2 | SCES-02544
|
||||
|Mike Tyson Boxing | SLES-02766
|
||||
|Resident Evil 3: Nemesis | SLES-02532
|
||||
|Ronaldo V-Football | SLES-02381
|
||||
|SaGa Frontier 2 | SLES-02349
|
||||
|This Is Football | SCES-01948
|
||||
|Tomba! 2 | SCES-02353
|
||||
|Urban Chaos | SLES-02390
|
||||
|Vagrant Story | SLES-02758
|
||||
|Vandal Hearts 2 | SLES-02357
|
||||
|Crash Bash | SCES-02834
|
||||
|Disney Magical Racing Tour | SLES-02604
|
||||
|Final Fantasy IX | SLES-02967
|
||||
|Le Mans 24 Hours | SLES-02302
|
||||
|Moho | SLES-02809
|
||||
|Need for Speed: Porsche 2000 | SLES-02688
|
||||
|Parasite Eve 2 | SLES-02562
|
||||
|P.G.A. European Tour Golf | SLES-02806
|
||||
|Spyro 3: Year of the Dragon | SCES-02835
|
||||
|Sydney 2000 | SLES-02814
|
||||
|UEFA Euro 2000 | SLES-02700
|
||||
|Wipeout 3 | SCES-01909
|
||||
|Formula 1 2000 | SLES-02720
|
||||
|Formula 1 2001 | SLES-03485
|
||||
|LMA Manager 2001 | SLES-03144
|
||||
|TOCA World Touring Cars | SLES-02572
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
29
The-fuses.md
29
The-fuses.md
@@ -1,29 +0,0 @@
|
||||
The two main problems you can have with fuse problems.
|
||||
|
||||
* If you use an ATtiny and you put the wrong clock source you end up with a brick. (It is normally possible to get out of this problem by putting an external clock).
|
||||
|
||||
* If you use a bios patch, the mode once installed might appear to work according to the LED, but there is a greater chance that you will end up with a black screen. This is because to intervene at the right time the bios patch needs a fuse configuration, which allows it to intervene very early at the console startup, which the default configuration does not allow.
|
||||
|
||||
* Normally if you don't use a bios patch, or ATtiny the default fuse configuration doesn't really have a problem, on the other hand if you use the bios patches, or an ATtiny, it is necessary to have specific programming.
|
||||
|
||||
Fuse problems can sometimes be complicated to diagnose, and also tedious to program and explain how to do it for Arduino IDE.
|
||||
|
||||
To avoid all these problems, I created PSNeecore, which is simply a board management library, with the unique feature of automatically configuring fuses correctly. Regardless of the choice you made.
|
||||
As mentioned in the tutorials, you can simply install it in your arduino/hardware/ directory, if it does not exist create it on.
|
||||
|
||||
* Windows: C:\Users{username}\Documents\Arduino
|
||||
* macOS: /Users/{username}/Documents/Arduino
|
||||
* Linux: /home/{username}/Arduino
|
||||
|
||||
And once the Arduino iDE restarts you will be able to access it from. Tools -> Board -> PSNeeCore
|
||||
|
||||
For the record, I am giving you here the correct fuse configurations.
|
||||
|
||||
| MCU family | High | Low | Extended |
|
||||
| :- | :-: | :-: | :-: |
|
||||
| ATmega 328/168 | DF | EE | FD |
|
||||
| ATmega 32u4 | DF | EE | FB |
|
||||
| ATmega 328PB | DF | EE | F5 |
|
||||
| ATtiny 25/45/85 | DD | E2 | FF |
|
||||
|
||||
If you want to learn more about fuses, go see the [Fuse Calculator](https://www.engbedded.com/conffuse/)
|
||||
@@ -1,16 +0,0 @@
|
||||
### In this section I will try to explain as deeply as I can, the different elements of this project.
|
||||
|
||||
### **The PSNee_V**** folder contains all the essential files for the project.
|
||||
|
||||
The [**PSNee_V**.ino**](PSNee_V**.ino) file is the main file of the project, it contains all the basic algorithms of the project.
|
||||
The BIOS_patching.h file contains the algorithms specific to the BIOS patch.
|
||||
The MUC.h file contains all the library headers, and the specific pointers for each architecture.
|
||||
The Setting.h file contains the variables for the different compilation scenarios depending on the target PS1.
|
||||
|
||||
### The PSNeecore folder contains the board manager specific to this project.
|
||||
|
||||
The bootloader folder contains the bootloader.txt file which is empty, it is necessary for the board manager to work, but it is empty because it is not useful in the project.
|
||||
The variants folder contains the Arduino pointers for the different architectures.
|
||||
The boards.txt file contains the Arduino environment variables for the different MUCs supported by the project.
|
||||
The platform.txt file contains the global Arduino compilation and injection variants.
|
||||
|
||||
@@ -5,17 +5,36 @@
|
||||
* A little soldering wire
|
||||
* And thin cable (awg26-30)
|
||||
|
||||
> [!WARNING]
|
||||
> **This "direct upload" method only works for Arduino boards with a USB port or a pre-installed bootloader (like Nano or Pro Mini with a FTDI adapter). If you are using a bare ATtiny chip, you MUST use the ISP method.**
|
||||
|
||||
|
||||
## Part 1:
|
||||
### Install the Arduino IDE
|
||||
https://docs.arduino.cc/software/ide-v2/tutorials/getting-started/ide-v2-downloading-and-installing/
|
||||
|
||||
## Part 2:
|
||||
### In the Arduino IDE, select the MCU build chai an Check that everything works properly by injecting the Blink sketch:
|
||||
### Add a board with the Boards Manager
|
||||
This step is necessary for ATmega 168/328PB with MiniCore. I generally recommend using these cores as they provide more options and better performance.
|
||||
|
||||
These cores can be installed using the boards manager by following these steps:
|
||||
|
||||
For MiniCore
|
||||
- `https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json`
|
||||
|
||||
1. File->Preferences on a PC, or Arduino->Preferences on a Mac, enter the above URL in "Additional Boards Manager URLs
|
||||
2. Tools -> Boards -> Boards Manager...
|
||||
3. Search for and select **"MiniCore by MCUdude"**, then click **"Install"**.
|
||||
|
||||
For more details, visit the [Arduino support page] (https://support.arduino.cc/hc/en-us/articles/360016119519-Add-boards-to-Arduino-IDE)
|
||||
|
||||
## Part 3:
|
||||
### In the Arduino IDE, select the MCU build chain an Check that everything works properly by injecting the Blink sketch:
|
||||
* Connect your board
|
||||
* File -> example -> 01. Basic -> blink
|
||||
* Tools -> Board -> Arduino AVR Board -> _your board_
|
||||
* Tools -> port -> _select your board’s port_
|
||||
* Tools -> Processore -> _your varient_
|
||||
* Tools -> Processor -> _your variant_
|
||||
* Tools -> programmer -> _Your card's programmer_
|
||||
* Sketch -> upload
|
||||
|
||||
@@ -24,20 +43,19 @@ Arduino with blink sketches
|
||||
|
||||
For ATmega32U4 and ATtiny you can use this [diagram](https://github.com/kalymos/PsNee/wiki/PIN_LED), and modify the Blink sketch accordingly
|
||||
|
||||
* ATmega32U4 LED_BUILTIN -> PIN 10
|
||||
* ATtiny LED_BUILTIN -> PIN 3
|
||||
- ATmega32U4 LED_BUILTIN -> PIN 10
|
||||
- Tools -> Board -> Arduino AVR Board -> **Arduino Yũn**
|
||||
|
||||
## Part 3:
|
||||
- ATtiny LED_BUILTIN -> PIN 3
|
||||
|
||||
## Part 4:
|
||||
### Open the sketch and configure the options.
|
||||
* Open the PSNee.ino sketch in the Arduino IDE.
|
||||
|
||||
Choose your target console in the first section, "Select your console," by uncommenting the appropriate line:
|
||||
* //#define SCPH_xxxx -> #define SCPH_xxxx, for example.
|
||||
|
||||
Then in the second section "Select your chip" choose the MUC which will become your modechip.
|
||||
* //#define ATmega328_168 -> #define ATmega328_168, for example.
|
||||
|
||||
## Part 4:
|
||||
## Part 5:
|
||||
### Compile and inject the program.
|
||||
* Sketch -> upload
|
||||
|
||||
@@ -48,4 +66,4 @@ Follow the schematics available in the Wiki to install your PSNee in your consol
|
||||
You don't need to make the connections AX AY DX RESET.
|
||||
|
||||
LED activities during boot without BIOS patch:
|
||||

|
||||

|
||||
|
||||
@@ -35,7 +35,6 @@
|
||||
- [Optical drive maintenance](https://youtu.be/cnNTnlaD3rI?si=6wdzLPYjIcguxJIU) by TheRetroChannel.
|
||||
### Why it doesn't work!
|
||||
- [Programming via ISP](https://github.com/kalymos/PsNee/wiki/Programming-via-ISP)
|
||||
- [The fuses](https://github.com/kalymos/PsNee/wiki/The-fuses)
|
||||
- [PlayStation 1 Protection: LibCrypt & Anti-Modchip](https://github.com/kalymos/PsNee/wiki/PlayStation-1-Protection:-LibCrypt-&-Anti%E2%80%90Modchip)
|
||||
### The rest is for curiosity
|
||||
- [Table of different BIOS versions and associated models](https://github.com/kalymos/PsNee/wiki/Table-of-different-BIOS-versions-and-associated-models)
|
||||
|
||||
Reference in New Issue
Block a user