From d1cee29d086bf39fd7ece64b19bd947c2b3000b0 Mon Sep 17 00:00:00 2001 From: kalymos Date: Mon, 29 Dec 2025 21:07:19 +0100 Subject: [PATCH] BIOS patch obtimisation --- PSNee/MCU.h | 16 ++++++++------- PSNee/PSNee.ino | 11 +++++----- PSNee/settings.h | 52 ++++++++++++++++++++++-------------------------- 3 files changed, 39 insertions(+), 40 deletions(-) diff --git a/PSNee/MCU.h b/PSNee/MCU.h index a19b172..f7edaf3 100644 --- a/PSNee/MCU.h +++ b/PSNee/MCU.h @@ -184,7 +184,7 @@ static inline void optimizePeripherals(void) { #endif // Handling the BIOS patch - #if defined(SCPH_102) || defined(SCPH_102_legacy) || defined(SCPH_100) || defined(SCPH_7500_9000) || defined(SCPH_7000) || defined(SCPH_5500) || defined(SCPH_3500_5000) || defined(SCPH_3000) || defined(SCPH_1000) + #if defined(SCPH_102) || defined(SCPH_100) || defined(SCPH_7500_9000) || defined(SCPH_7000) || defined(SCPH_5500) || defined(SCPH_5000) || defined(SCPH_3500) || defined(SCPH_3000) || defined(SCPH_1000) // Clear the timer interrupt flag //#define TIMER_TIFR_CLEAR TIFR0 |= (1 << OCF0A) // Clear the Timer0 Compare Match A interrupt flag @@ -224,16 +224,18 @@ static inline void optimizePeripherals(void) { #define PIN_AY_INTERRUPT_FALLING (EICRA = (EICRA & ~(1 << ISC10)) | (1 << ISC11)) // Configure INT1 for falling edge trigger #define PIN_AY_INTERRUPT_VECTOR INT1_vect // Interrupt vector for INT1 (external interrupt) #endif + // Handle switch input for BIOS patch + #if defined(SCPH_7000) + #define PIN_SWITCH_INPUT DDRD &= ~(1 << DDD5) // Configure PIND5 as input for switch + #define PIN_SWITCH_SET PORTD |= (1 << PD5) // Set PIND5 high (enable pull-up) + #define PIN_SWITCH_READ (PIND & (1 << PIND5)) // Read the state of PIND5 (switch input) + #endif - // Handle switch input for BIOS patch - #ifdef PATCH_SWITCH - #define PIN_SWITCH_INPUT DDRD &= ~(1 << DDD5) // Configure PIND5 as input for switch - #define PIN_SWITCH_SET PORTD |= (1 << PD5) // Set PIND5 high (enable pull-up) - #define PIN_SWITCH_READ (PIND & (1 << PIND5)) // Read the state of PIND5 (switch input) - #endif #endif + + // #if defined(PSNEE_DEBUG_SERIAL_MONITOR) // #define DEBUG_PRINT(x) Serial.print(x) // #define DEBUG_PRINTHEX(x) Serial.print(x, HEX) diff --git a/PSNee/PSNee.ino b/PSNee/PSNee.ino index e1f873b..ad498bb 100644 --- a/PSNee/PSNee.ino +++ b/PSNee/PSNee.ino @@ -1,4 +1,4 @@ -// PSNee-8.7.1 +// PSNee-8.7 /*------------------------------------------------------------------------------------------------ MCU selection @@ -6,7 +6,7 @@ // MCU // Arduino //------------------------------------------------------------------------------------------------ -//#define ATmega328_168 // Nano, Pro Mini, Uno +#define ATmega328_168 // Nano, Pro Mini, Uno //#define ATmega32U4_16U4 // Micro, Pro Micro //#define ATtiny85_45_25 // ATtiny @@ -48,8 +48,9 @@ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX //#define SCPH_7500_9000 // DX - D0 | AX - A7 | | 4.0j - CRC EC541CD0 //#define SCPH_7000 // DX - D0 | AX - A7 | | 4.0j - CRC EC541CD0 Enables hardware support for disabling BIOS patching. //#define SCPH_5500 // DX - D0 | AX - A5 | | 3.0j - CRC FF3EEB8C -//#define SCPH_3500_5000 // DX - D0 | AX - A5 | AX - A4 | 2.2j - CRC 24FC7E17, 2.1j - CRC BC190209 -//#define SCPH_3000 // DX - D5 | AX - A7, AY - A8 | AX - A6, AY - A7 | 1.1j - CRC 3539DEF6 +//#define SCPH_5000 // DX - D0 | AX - A5 | AX - A4 | 2.2j - CRC 24FC7E17 +#define SCPH_3500 // DX - D0 | AX - A5 | AX - A4 | 2.1j - CRC BC190209 +//non-functional//#define SCPH_3000 // DX - D5 | AX - A7, AY - A8 | AX - A6, AY - A7 | 1.1j - CRC 3539DEF6 //#define SCPH_1000 // DX - D5 | AX - A7, AY - A8 | AX - A6, AY - A7 | 1.0j - CRC 3B601FC8 /*------------------------------------------------------------------------------------------------ @@ -423,7 +424,7 @@ void Init() { #ifdef BIOS_PATCH uint8_t Flag_Switch = 0; GLOBAL_INTERRUPT_ENABLE; -#if defined(PATCH_SWITCH) +#ifdef SCPH_7000 PIN_SWITCH_INPUT; PIN_SWITCH_SET; if (PIN_SWITCH_READ == 0){ diff --git a/PSNee/settings.h b/PSNee/settings.h index 6b7dcdd..a27c514 100644 --- a/PSNee/settings.h +++ b/PSNee/settings.h @@ -48,32 +48,41 @@ #define PATCHING 0.2 #endif -#ifdef SCPH_7000 -#define BIOS_PATCH +#ifdef SCPH_7000 //ok V8.7 //#define PATCH_SWITCH +#define BIOS_PATCH #define INTERRUPT_RISING -#define CHECKPOINT 74.5 // 75.3 +#define CHECKPOINT 75.2 // 75.3 #define TRIGGER 16 -#define HOLD 2.85 -#define PATCHING 0.1 +#define HOLD 2.8 +#define PATCHING 0.2 #endif -#ifdef SCPH_5500 +#ifdef SCPH_5500 //ok V8.7 #define BIOS_PATCH #define INTERRUPT_FALLING -#define CHECKPOINT 76.13 +#define CHECKPOINT 76.07 //75.99 - 76.14 #define TRIGGER 21 #define HOLD 2.8 -#define PATCHING 0.15 +#define PATCHING 0.2 #endif -#ifdef SCPH_3500_5000 +#ifdef SCPH_5000 // ok V8.7 #define BIOS_PATCH #define INTERRUPT_FALLING -#define CHECKPOINT 75.26 +#define CHECKPOINT 75.2 //75.12 - 75.27 #define TRIGGER 21 #define HOLD 2.85 -#define PATCHING 0.1 +#define PATCHING 0.2 +#endif + +#ifdef SCPH_3500 //ok V8.7 +#define BIOS_PATCH +#define INTERRUPT_FALLING +#define CHECKPOINT 75.2 // +#define TRIGGER 21 +#define HOLD 2.8 +#define PATCHING 0.2 #endif #ifdef SCPH_3000 @@ -92,12 +101,12 @@ #ifdef SCPH_1000 #define BIOS_PATCH -#define INTERRUPT_RISING_HIGH_PATCH #define CHECKPOINT 83 #define TRIGGER 92 #define HOLD 2.7 #define PATCHING 0.1 #define HIGH_PATCH +#define INTERRUPT_RISING_HIGH_PATCH #define CHECKPOINT2 27.28 #define TRIGGER2 71 #define HOLD2 2.88 @@ -108,21 +117,8 @@ Region Settings Section ------------------------------------------------------------------------------------------------*/ -// #if defined(SCPH_xxx1) // NTSC U/C | America. -// #define REGION_SETTING 1 -// #endif - -// #if defined(SCPH_102) || defined(SCPH_xxx2) // PAL | Europ. -// #define REGION_SETTING 2 -// #endif - -// #if defined(SCPH_100) || defined(SCPH_7500_9000) || defined(SCPH_7000) || \ -// defined(SCPH_5500) || defined(SCPH_3500_5000) || defined(SCPH_3000) || \ -// defined(SCPH_1000) || defined(SCPH_xxx3) || defined(SCPH_5903) // NTSC J | Asia. -// #define REGION_SETTING 0 -// #endif #if defined(SCPH_100) || defined(SCPH_7500_9000) || defined(SCPH_7000) || \ - defined(SCPH_5500) || defined(SCPH_3500_5000) || defined(SCPH_3000) || \ + defined(SCPH_5500) || defined(SCPH_5000) ||defined(SCPH_3500) || defined(SCPH_3000) || \ defined(SCPH_1000) || defined(SCPH_xxx3) || defined(SCPH_5903) #define INJECT_SCEx 0 // NTSC-J #endif @@ -202,13 +198,13 @@ void Debug_Inject(){ // Confirmation of region code injection #if !defined(SCPH_xxx3) && \ !defined(SCPH_102) && !defined(SCPH_101) && !defined(SCPH_100) && !defined(SCPH_7500_9000) && \ - !defined(SCPH_7000) && !defined(SCPH_5500) && !defined(SCPH_3500_5000) && !defined(SCPH_3000) && \ + !defined(SCPH_7000) && !defined(SCPH_5500) && !defined(SCPH_5000) && !defined(SCPH_3500) && !defined(SCPH_3000) && \ !defined(SCPH_1000) && !defined(SCPH_5903) &&\ !defined(SCPH_xxx1) && !defined(SCPH_xxx2) && !defined(SCPH_xxxx) #error "Console not selected! Please uncoment #define with SCPH model number." #elif !defined(SCPH_xxx3) ^ \ defined(SCPH_102) ^ defined(SCPH_101) ^ defined(SCPH_100) ^ defined(SCPH_7500_9000) ^ \ - defined(SCPH_7000) ^ defined(SCPH_5500) ^ defined(SCPH_3500_5000) ^ defined(SCPH_3000) ^ \ + defined(SCPH_7000) ^ defined(SCPH_5500) ^ defined(SCPH_5000) ^ defined(SCPH_3500) ^ defined(SCPH_3000) ^ \ defined(SCPH_1000) ^ defined(SCPH_xxxx) ^ defined(SCPH_5903) ^ \ defined(SCPH_xxx1) ^ defined(SCPH_xxx2) #error "May be selected only one console! Please check #define with SCPH model number."