Приставки > 5 поколение
PSNee V8 - Ultimate PSX unlocker
Skarfais:
да
Pr1ha:
Skarfais, Спасибо, отличная новость!
Если не сложно, подскажете ссылку на руководство от куда был взят этот скриншот?
я так понимаю под ATtiny нужно немного поправить прошивку?
может у кого есть уже настроенный config.h с #define под ATtiny?
Pr1ha:
может кому тоже надо, нашел порт под ATtiny 10/13/25/45/85
https://gist.github.com/aleaksah/44b80c37c243891d1ec0cb4942668cdd#file-psnee-pu22-attiny10-c
--- Код: ---/**
* PSNee ported to ATTiny 10. Probably, the tinest PS1 modchip ever.
* Only for PU-22 mode.
* Fusebits: Configuration Byte 0=0xFE
* Pinout on lines 17-20
*
* Copiled OK with Microchip Studio 7.0, Optimization level -O1
*/
#define F_CPU 8000000
#include <util/delay.h>
#include <avr/io.h>
#include <stdint.h>
#include <avr/interrupt.h>
#include <avr/sfr_defs.h>
/*
* DATA PB0
* SQCK PB1
* SUBQ PB2
* WFCK PB3
*/
volatile uint16_t MicrosecCounter;
#define DATA_OUTPUT DDRB |= (1<<0);
#define DATA_INPUT DDRB &= ~(1<<0);
#define DATA_CLEAR PORTB &= ~(1<<0);
#define DATA_SET PORTB |= (1<<0);
#define SQCK_READ (PINB & (1<<1))
#define SUBQ_READ (PINB & (1<<2))
#define WFCK_READ (PINB & (1<<3))
//every 50 uS, every 20.000 clock cycles
ISR(TIM0_COMPA_vect)
{
MicrosecCounter += 50;
}
//Timing
const int16_t delay_between_bits = 4000; // 250 bits/s (microseconds) (ATtiny 8Mhz works from 3950 to 4100)
const int16_t delay_between_injections = 90; // 72 in oldcrow. PU-22+ work best with 80 to 100 (milliseconds)
uint8_t readBit(uint8_t index, const uint8_t * ByteSet)
{
return !!(ByteSet[index / 8] & (1 << (index % 8)));
}
void inject_SCEX(uint8_t region)
{
//SCEE: 1 00110101 00, 1 00111101 00, 1 01011101 00, 1 01011101 00
//SCEA: 1 00110101 00, 1 00111101 00, 1 01011101 00, 1 01111101 00
//SCEI: 1 00110101 00, 1 00111101 00, 1 01011101 00, 1 01101101 00
static const uint8_t SCEEData[] = {
0b01011001,
0b11001001,
0b01001011,
0b01011101,
0b11101010,
0b00000010
};
static const uint8_t SCEAData[] = {
0b01011001,
0b11001001,
0b01001011,
0b01011101,
0b11111010,
0b00000010
};
static const uint8_t SCEIData[] = {
0b01011001,
0b11001001,
0b01001011,
0b01011101,
0b11011010,
0b00000010
};
DATA_OUTPUT;
uint8_t bit_counter;
for (bit_counter = 0; bit_counter < 44; bit_counter++)
{
if (readBit(bit_counter, region == 'e' ? SCEEData : region == 'a' ? SCEAData : SCEIData) == 0)
{
DATA_CLEAR; // data low
_delay_us(delay_between_bits);
}
else
{
MicrosecCounter = 0;
TIFR0 = _BV(OCF0A);
sei();
do
{
if(WFCK_READ) // output wfck signal on data pin
{
DATA_SET;
}
else
{
DATA_CLEAR;
}
}
while (MicrosecCounter < delay_between_bits);
cli();
}
}
DATA_CLEAR; // pull data low
_delay_ms(delay_between_injections);
}
int main()
{
CCP = 0xD8;
CLKPSR = 0;
TIMSK0 = _BV(OCIE0A);
OCR0A = 400; //TOP=400, so OVF int at 8.000.000/400=20.000 Hz
TCCR0B = _BV(CS00) | _BV(WGM02); //timer clk = 8.000.000/1=8.000.000Hz, TOP=OCR0A
uint8_t hysteresis = 0;
uint8_t scbuf[12] = {0}; // We will be capturing PSX "SUBQ" packets, there are 12 bytes per valid read.
uint16_t timeout_clock_counter = 0;
uint8_t bitbuf = 0; // SUBQ bit storage
uint8_t bitpos = 0;
uint8_t scpos = 0; // scbuf position
while(1)
{
// start with a small delay, which can be necessary in cases where the MCU loops too quickly
// and picks up the laster SUBQ trailing end
_delay_ms(1);
do
{
// Capture 8 bits for 12 runs > complete SUBQ transmission
for (bitpos = 0; bitpos < 8; bitpos++)
{
while (SQCK_READ != 0)
{
// wait for clock to go low..
// a timeout resets the 12 byte stream in case the PSX sends malformatted clock pulses, as happens on bootup
timeout_clock_counter++;
if (timeout_clock_counter > 666)
{
scpos = 0; // reset SUBQ packet stream
timeout_clock_counter = 0;
bitbuf = 0;
bitpos = 0;
continue;
}
}
// wait for clock to go high..
while (SQCK_READ == 0);
if(SUBQ_READ)
{
bitbuf |= 1 << bitpos;
}
timeout_clock_counter = 0; // no problem with this bit
}
// one byte done
scbuf[scpos] = bitbuf;
scpos++;
bitbuf = 0;
// repeat for all 12 bytes
}
while (scpos < 12);
//looks like packets catching is OK
uint8_t isDataSector = (((scbuf[0] & 0x40) == 0x40) && (((scbuf[0] & 0x10) == 0) && ((scbuf[0] & 0x80) == 0)));
if (
(isDataSector && scbuf[1] == 0x00 && scbuf[6] == 0x00) && // [0] = 41 means psx game disk. the other 2 checks are garbage protection
(scbuf[2] == 0xA0 || scbuf[2] == 0xA1 || scbuf[2] == 0xA2 || // if [2] = A0, A1, A2 ..
(scbuf[2] == 0x01 && (scbuf[3] >= 0x98 || scbuf[3] <= 0x02))) // .. or = 01 but then [3] is either > 98 or < 02
)
{
hysteresis++;
}
else if (hysteresis > 0 && ((scbuf[0] == 0x01 || isDataSector) && (scbuf[1] == 0x00 /*|| scbuf[1] == 0x01*/ ) && scbuf[6] == 0x00))
{ // This CD has the wobble into CD-DA space. (started at 0x41, then went into 0x01)
hysteresis++;
}
else if (hysteresis > 0)
{
hysteresis--; // None of the above. Initial detection was noise. Decrease the counter.
}
if (hysteresis >= 14)
{
hysteresis = 11;
DATA_OUTPUT;
DATA_CLEAR; // pull data low
// HC-05 waits for a bit of silence (pin low) before it begins decoding.
_delay_ms(delay_between_injections);
// inject symbols now. 2 x 3 runs seems optimal to cover all boards
uint8_t loop_counter;
for (loop_counter = 0; loop_counter < 2; loop_counter++)
{
inject_SCEX('e'); // e = SCEE, a = SCEA, i = SCEI
inject_SCEX('a'); // injects all 3 regions by default
inject_SCEX('i'); // optimize boot time by sending only your console region letter (all 3 times per loop)
}
DATA_INPUT; // high-z the line, we're done
}
}
}
--- Конец кода ---
EVIL:
Pr1ha, ты тащишь в тему по V8 инфу по V7. Это совершенно разные вещи.
Pr1ha:
EVIL, Судя по коду это V8 из которого вырезали все лишнее
Умный:
Здравствуйте, с ps1 практически не сталкивался по этому прошу помощи в нюансах. Есть 2 тушки пс1. scph-1000 и scph-3500 . Обе не чипованы. Что можно максимально с ними сделать, чтоб можно было играть в игры с болванок разных регионов + пооучить минимум гемора , а так же не понимаю , как будет обстоять дело с цветностью в пал играх евро региона и частотой кадров? Лучшее решение на данный момент какое? Спасибо
Nhisti:
--- Цитата: Умный от 03 Август 2023, 09:30:51 ---scph-1000 ... играть в игры с болванок
--- Конец цитаты ---
При помощи ловкости рук:
И без оной:
Умный:
--- Цитата: Nhisti от 07 Август 2023, 03:26:26 ---При помощи ловкости рук:
И без оной:
--- Конец цитаты ---
Спасибо за подсказку , но это и так известный фокус, у которого то же есть нюансы некоторые, но это не человеческий метод, а скорее для обезьян. Я уже разобрался, чтоб все было чики чики. Биос установил от 7502 (по мне так самый) евро региона, установил чип на МК. Теперь все работает без вот таких мутарств, как на видео.
lossiel:
доброго времени суток. Господа хорошие, необходим совет. Сконфигурировал фьюзы, в прошивке раскомментировал строчку с версией консоли (чек сумма биоса совпадает), прошил и припаял по инструкции адруино с чипом 168 на playstation 1 scph-5500 ntsc-j (switch не понял куда нужен, этот провод не паял). Приставка жует ntsc пиратку, а pal версии просто крутит и ничего не происходит. Я же правильно понимаю, что после установки чипа консоль становится мультирегионом и, по хорошему, должна работать с играми любого региона? Куда копать? Может что-то сделал не так? влияет ли длинна проводов на работоспособность чипа?
EVIL:
--- Цитата: lossiel от 12 Сентябрь 2023, 22:15:07 ---влияет ли длинна проводов на работоспособность чипа?
--- Конец цитаты ---
Чтобы все работало, у того, кто шъет и устанавливает, должно быть все длинное, да.
lossiel:
--- Цитата: EVIL от 12 Сентябрь 2023, 22:42:07 ---Чтобы все работало, у того, кто шъет и устанавливает, должно быть все длинное, да.
--- Конец цитаты ---
учту, спасибо=) а по остальным вопросам можете что-то подсказать?
EVIL:
Ты фото не приложил, откуда тому, кто тебе советы дает знать куда ты и что припаял.
Свитч нужен на японки, про то куда его паять я отвечал ранее в теме.
А ты, судя по всему, нихрена не припаял к микросхеме биоса, а надо
EVIL:
--- Цитата: Salyaris от 16 Сентябрь 2023, 20:48:55 ---Диаграмма под NTSC-J LATE PU8
Все работает, кроме PAL
--- Конец цитаты ---
Самое главное рекламку кто-то оставил, а ресета нет.
EVIL:
--- Цитата: Salyaris от 17 Сентябрь 2023, 15:25:16 ---Да, без ресета, т.к ставил для себя, в ресете необходимости у меня нет.
Ну а насчет рекламки да, ща трафик ко мне попрет, озолочусь (нет)
--- Конец цитаты ---
Ресет необходим. Т.к. иначе патчинг работает только при первом старте. Далее надо отрубать питание. Иначе его бы там небыло.
Если что-то предусмотренно изначальным дизайном, то не чтобы ты хлебало корчил и говорил, что нихочу-нибуду, а чтобы это выполняло определенную функцию.
Если ты несешь в массы инфу и делаешь инструкции, то будь добр делать правильно, или не делать вообще.
И чтобы подкрепить свое недовольство я бы тебе натурально хотел бы еще жопу показать, но учитывая твой юзерпик сделаю так
postal2201:
Salyaris, как правильно заметил EVIL точку RESET необходимо паять на ВСЕХ JAP_FAT (японках-толстушках, прости господи :facepalm:) консолях. На это завязана логика прошивки. Иначе никакого патчинга не будет. А jap дики стартуют потому-что для них не нужен патчинг, достаточно отправить SCEI строку.
EVIL:
--- Цитата: Salyaris от 18 Сентябрь 2023, 18:50:09 ---все работает
--- Конец цитаты ---
1)Нажми на этот самый ресет с диском другого региона, когда там все работает.
2)Жиденько обтекай.
postal2201, ты когда хотя бы признаешь наличие проблемы с зависонами в меню биоса, об исправлении речи не идет даже?
Может помочь чем? Мать там тебе найти для теста.
postal2201:
--- Цитата: EVIL от 18 Сентябрь 2023, 19:41:35 ---postal2201, ты когда хотя бы признаешь наличие проблемы с зависонами в меню биоса, об исправлении речи не идет даже?
Может помочь чем? Мать там тебе найти для теста.
--- Конец цитаты ---
Когда она окажется у меня на столе :D
А если серьезно, как я уже говорил ранее у меня были только две реальные консоли. Слимка и фатка со старым процем, на которые по очереди я уже навешивал нужные мне биосы. Но так как метод патчинга очень завязан на тайминги и скорости ардуины там хватает прям впритык, то возможно отличия в топологии плат вносит такие приколы. Но и сами ардуины тоже нельзя исключать, так как неизвестно в каком подвале их собирал дядюшка Ляо ;)
Вот конкретно Вы пробовали только одну ардуину? Вполне может быть что на другом экземпляре все будет ок.
Сейчас у меня на столе лежит 1000 jap на чиповку. Посмотрим какой будет результат.
А вообще STM32F103 кардинально решит проблему с патчингом. Но я не могу уделять столько времени хобби чтобы еще изучить STM32 для порта прошивки. Может ближе к пенсии... :wow: :lol:
EVIL:
--- Цитата: postal2201 от 18 Сентябрь 2023, 21:16:01 ---Когда она окажется у меня на столе :D
А если серьезно,
--- Конец цитаты ---
Ты эт, осторожнее. А то я еще в плюс приеду, рядом встану и буду пилить тебя взглядом во время процесса.
--- Цитата: postal2201 от 18 Сентябрь 2023, 21:16:01 --- Но и сами ардуины тоже нельзя исключать, так как неизвестно в каком подвале их собирал дядюшка Ляо ;)
Вот конкретно Вы пробовали только одну ардуину? Вполне может быть что на другом экземпляре все будет ок.
--- Конец цитаты ---
Всегда можно обвинить во всем китайцев. Давай для чистоты. На чем ты разрабатывал и тестил? Давай прям одинаковые найдем.
Rumata:
--- Цитата: postal2201 от 18 Сентябрь 2023, 21:16:01 ---Вот конкретно Вы пробовали только одну ардуину? Вполне может быть что на другом экземпляре все будет ок.
--- Конец цитаты ---
Устройство, требующее подбора микроконтроллеров, следует считать негодным.
postal2201:
--- Цитата: Rumata от 19 Сентябрь 2023, 22:37:34 ---Устройство, требующее подбора микроконтроллеров, следует считать негодным.
--- Конец цитаты ---
Тут дело в чем. Во первых покупая у китайцев можно нарваться на некондицию(отбраковка, и прочее). Во вторых мы хотим от меги 16Мгц, а питаем её от 3.3в, что не очень хорошо. Безопасная зона для 16Мгц - 4.5в. Хотя полностью исправные чипы обычно без проблем работают на 16Мгц от 3.3в.
По идее ничто не мешает питать мегу от 5 вольт. Микросхема биоса MSM534031E хоть и рассчитана на 3.3в, но Vhi позволяет до 6 вольт. Я не тестировал в таком режиме.
--- Цитата: EVIL от 19 Сентябрь 2023, 22:13:11 ---Всегда можно обвинить во всем китайцев. Давай для чистоты. На чем ты разрабатывал и тестил? Давай прям одинаковые найдем.
--- Конец цитаты ---
RobotDyn UNO R3.
Навигация
Перейти к полной версии