Автор Тема: PSNee V8 - Ultimate PSX unlocker  (Прочитано 16204 раз)

0 Пользователей и 3 Гостей просматривают эту тему.

Оффлайн Skarfais

  • Пользователь
  • Сообщений: 1243
    • Steam
    • Просмотр профиля
PSNee V8 - Ultimate PSX unlocker
« Ответ #120 : 11 Июль 2023, 23:28:09 »
да

Оффлайн Pr1ha

  • Пользователь
  • Сообщений: 16
    • Просмотр профиля
PSNee V8 - Ultimate PSX unlocker
« Ответ #121 : 12 Июль 2023, 23:00:11 »
Skarfais, Спасибо, отличная новость!
Если не сложно, подскажете ссылку на руководство от куда был взят этот скриншот?
я так понимаю под ATtiny нужно немного поправить прошивку?
может у кого есть уже настроенный config.h с #define под ATtiny?
« Последнее редактирование: 13 Июль 2023, 00:10:38 от Pr1ha »

Оффлайн Pr1ha

  • Пользователь
  • Сообщений: 16
    • Просмотр профиля
PSNee V8 - Ultimate PSX unlocker
« Ответ #122 : 14 Июль 2023, 19:33:47 »
может кому тоже надо, нашел порт под 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

  • Пользователь
  • Сообщений: 3119
  • Пол: Мужской
  • Based Department
    • Просмотр профиля
PSNee V8 - Ultimate PSX unlocker
« Ответ #123 : 14 Июль 2023, 19:35:37 »
Pr1ha, ты тащишь в тему по V8 инфу по V7. Это совершенно разные вещи.

Оффлайн Pr1ha

  • Пользователь
  • Сообщений: 16
    • Просмотр профиля
PSNee V8 - Ultimate PSX unlocker
« Ответ #124 : 14 Июль 2023, 22:02:51 »
EVIL, Судя по коду это V8 из которого вырезали все лишнее

Оффлайн Умный

  • Пользователь
  • Сообщений: 440
  • Пол: Мужской
    • Просмотр профиля
PSNee V8 - Ultimate PSX unlocker
« Ответ #125 : 03 Август 2023, 09:30:51 »
Здравствуйте, с ps1 практически не сталкивался по этому прошу помощи в нюансах. Есть 2 тушки пс1. scph-1000 и scph-3500 . Обе не чипованы. Что можно максимально с ними сделать, чтоб можно было играть в игры с болванок разных регионов + пооучить минимум гемора , а так  же не понимаю , как будет обстоять дело с цветностью в пал играх евро региона и частотой кадров? Лучшее решение на данный момент какое? Спасибо

Оффлайн Nhisti

  • Пользователь
  • Сообщений: 953
    • Просмотр профиля
PSNee V8 - Ultimate PSX unlocker
« Ответ #126 : 07 Август 2023, 03:26:26 »
scph-1000 ... играть в игры с болванок
При помощи ловкости рук:
И без оной:

Оффлайн Умный

  • Пользователь
  • Сообщений: 440
  • Пол: Мужской
    • Просмотр профиля
PSNee V8 - Ultimate PSX unlocker
« Ответ #127 : 07 Август 2023, 07:27:51 »
При помощи ловкости рук:
И без оной:
Спасибо за подсказку , но это и так известный фокус, у которого то же есть нюансы некоторые, но это не человеческий метод, а скорее для обезьян. Я уже разобрался, чтоб все было чики чики. Биос установил от 7502 (по мне так самый) евро региона, установил чип на МК. Теперь все работает без вот таких мутарств, как на видео.

Оффлайн lossiel

  • Пользователь
  • Сообщений: 3
    • Просмотр профиля
PSNee V8 - Ultimate PSX unlocker
« Ответ #128 : 12 Сентябрь 2023, 22:15:07 »
доброго времени суток. Господа хорошие, необходим совет. Сконфигурировал фьюзы, в прошивке раскомментировал строчку с версией консоли (чек сумма биоса совпадает), прошил и припаял по инструкции адруино с чипом 168 на playstation 1 scph-5500 ntsc-j (switch не понял куда нужен, этот провод не паял). Приставка жует ntsc пиратку, а pal версии просто крутит и ничего не происходит. Я же правильно понимаю, что после установки чипа консоль становится мультирегионом и, по хорошему, должна работать с играми любого региона? Куда копать? Может что-то сделал не так? влияет ли длинна проводов на работоспособность чипа?
« Последнее редактирование: 12 Сентябрь 2023, 23:45:18 от lossiel »

Оффлайн EVIL

  • Пользователь
  • Сообщений: 3119
  • Пол: Мужской
  • Based Department
    • Просмотр профиля
PSNee V8 - Ultimate PSX unlocker
« Ответ #129 : 12 Сентябрь 2023, 22:42:07 »
влияет ли длинна проводов на работоспособность чипа?
Чтобы все работало, у того, кто шъет и устанавливает, должно быть все длинное, да.

Оффлайн lossiel

  • Пользователь
  • Сообщений: 3
    • Просмотр профиля
PSNee V8 - Ultimate PSX unlocker
« Ответ #130 : 12 Сентябрь 2023, 22:59:51 »
Чтобы все работало, у того, кто шъет и устанавливает, должно быть все длинное, да.

учту, спасибо=) а по остальным вопросам можете что-то подсказать?

Оффлайн EVIL

  • Пользователь
  • Сообщений: 3119
  • Пол: Мужской
  • Based Department
    • Просмотр профиля
PSNee V8 - Ultimate PSX unlocker
« Ответ #131 : 13 Сентябрь 2023, 13:53:53 »
Ты фото не приложил, откуда тому, кто тебе советы дает знать куда ты и что припаял.
Свитч нужен на японки, про то куда его паять я отвечал ранее в теме.
А ты, судя по всему, нихрена не припаял к микросхеме биоса, а надо

Оффлайн EVIL

  • Пользователь
  • Сообщений: 3119
  • Пол: Мужской
  • Based Department
    • Просмотр профиля
PSNee V8 - Ultimate PSX unlocker
« Ответ #132 : 17 Сентябрь 2023, 09:10:37 »
Диаграмма под NTSC-J LATE PU8
Все работает, кроме PAL
Самое главное рекламку кто-то оставил, а ресета нет.

Оффлайн EVIL

  • Пользователь
  • Сообщений: 3119
  • Пол: Мужской
  • Based Department
    • Просмотр профиля
PSNee V8 - Ultimate PSX unlocker
« Ответ #133 : 17 Сентябрь 2023, 20:30:44 »
Да, без ресета, т.к ставил для себя, в ресете необходимости у меня нет.
Ну а насчет рекламки да, ща трафик ко мне попрет, озолочусь (нет)
Ресет необходим. Т.к. иначе патчинг работает только при первом старте. Далее надо отрубать питание. Иначе его бы там небыло.
Если что-то предусмотренно изначальным дизайном, то не чтобы ты хлебало корчил и говорил, что нихочу-нибуду, а чтобы это выполняло определенную функцию.
Если ты несешь в массы инфу и делаешь инструкции, то будь добр делать правильно, или не делать вообще.

И чтобы подкрепить свое недовольство я бы тебе натурально хотел бы еще жопу показать, но учитывая твой юзерпик сделаю так
267138-0

Оффлайн postal2201

  • Пользователь
  • Сообщений: 345
    • Просмотр профиля
PSNee V8 - Ultimate PSX unlocker
« Ответ #134 : 18 Сентябрь 2023, 16:00:46 »
Salyaris, как правильно заметил EVIL точку RESET необходимо паять на ВСЕХ JAP_FAT (японках-толстушках, прости господи  :facepalm:) консолях. На это завязана логика прошивки. Иначе никакого патчинга не будет. А jap дики стартуют потому-что для них не нужен патчинг, достаточно отправить SCEI строку.

Оффлайн EVIL

  • Пользователь
  • Сообщений: 3119
  • Пол: Мужской
  • Based Department
    • Просмотр профиля
PSNee V8 - Ultimate PSX unlocker
« Ответ #135 : 18 Сентябрь 2023, 19:41:35 »
все работает
1)Нажми на этот самый ресет с диском другого региона, когда там все работает.
2)Жиденько обтекай.

postal2201, ты когда хотя бы признаешь наличие проблемы с зависонами в меню биоса, об исправлении речи не идет даже?
Может помочь чем? Мать там тебе найти для теста.

Оффлайн postal2201

  • Пользователь
  • Сообщений: 345
    • Просмотр профиля
PSNee V8 - Ultimate PSX unlocker
« Ответ #136 : 18 Сентябрь 2023, 21:16:01 »
postal2201, ты когда хотя бы признаешь наличие проблемы с зависонами в меню биоса, об исправлении речи не идет даже?
Может помочь чем? Мать там тебе найти для теста.

Когда она окажется у меня на столе :D

А если серьезно, как я уже говорил ранее у меня были только две реальные консоли. Слимка и фатка со старым процем, на которые по очереди я уже навешивал нужные мне биосы. Но так как метод патчинга очень завязан на тайминги и скорости ардуины там хватает прям впритык, то возможно отличия в топологии плат вносит такие приколы. Но и сами ардуины тоже нельзя исключать, так как неизвестно в каком подвале их собирал дядюшка Ляо ;)
Вот конкретно Вы пробовали только одну ардуину? Вполне может быть что на другом экземпляре все будет ок.

Сейчас у меня на столе лежит 1000 jap на чиповку. Посмотрим какой будет результат.

А вообще STM32F103 кардинально решит проблему с патчингом. Но я не могу уделять столько времени хобби чтобы еще изучить STM32 для порта прошивки. Может ближе к пенсии... :wow: :lol:

Оффлайн EVIL

  • Пользователь
  • Сообщений: 3119
  • Пол: Мужской
  • Based Department
    • Просмотр профиля
PSNee V8 - Ultimate PSX unlocker
« Ответ #137 : 19 Сентябрь 2023, 22:13:11 »
Когда она окажется у меня на столе :D

А если серьезно,
Ты эт, осторожнее. А то я еще в плюс приеду, рядом встану и буду пилить тебя взглядом во время процесса.
Но и сами ардуины тоже нельзя исключать, так как неизвестно в каком подвале их собирал дядюшка Ляо ;)
Вот конкретно Вы пробовали только одну ардуину? Вполне может быть что на другом экземпляре все будет ок.
Всегда можно обвинить во всем китайцев. Давай для чистоты. На чем ты разрабатывал и тестил? Давай прям одинаковые найдем.

Оффлайн Rumata

  • Супермодератор
  • Сообщений: 24595
    • Просмотр профиля
PSNee V8 - Ultimate PSX unlocker
« Ответ #138 : 19 Сентябрь 2023, 22:37:34 »
Вот конкретно Вы пробовали только одну ардуину? Вполне может быть что на другом экземпляре все будет ок.
Устройство, требующее подбора микроконтроллеров, следует считать негодным.

Оффлайн postal2201

  • Пользователь
  • Сообщений: 345
    • Просмотр профиля
PSNee V8 - Ultimate PSX unlocker
« Ответ #139 : 20 Сентябрь 2023, 09:28:07 »
Устройство, требующее подбора микроконтроллеров, следует считать негодным.
Тут дело в чем. Во первых покупая у китайцев можно нарваться на некондицию(отбраковка, и прочее). Во вторых мы хотим от меги 16Мгц, а питаем её от 3.3в, что не очень хорошо. Безопасная зона для 16Мгц - 4.5в. Хотя полностью исправные чипы обычно без проблем работают на 16Мгц от 3.3в.
267164-0

По идее ничто не мешает питать мегу от 5 вольт. Микросхема биоса MSM534031E хоть и рассчитана на 3.3в, но Vhi позволяет до 6 вольт. Я не тестировал в таком режиме.

Всегда можно обвинить во всем китайцев. Давай для чистоты. На чем ты разрабатывал и тестил? Давай прям одинаковые найдем.
RobotDyn UNO R3.
267168-1

Оффлайн Rumata

  • Супермодератор
  • Сообщений: 24595
    • Просмотр профиля
PSNee V8 - Ultimate PSX unlocker
« Ответ #140 : 20 Сентябрь 2023, 10:43:26 »
На контрафакт нарваться можно покупая у кого угодно, увы
Вообще, конечно, слышал я про проблемы на 3,3, типа шьётся плохо, но лично с таким не сталкивался.
И конечно хотелось бы без всяких адурин :-\

Оффлайн EVIL

  • Пользователь
  • Сообщений: 3119
  • Пол: Мужской
  • Based Department
    • Просмотр профиля
PSNee V8 - Ultimate PSX unlocker
« Ответ #141 : 20 Сентябрь 2023, 11:11:05 »
postal2201,  не слишком ли толсто такое пихать в корпус? Ок. Ты предлагаешь сперва подтянуть другое питание?

Если хотя бы сойтись частично, то какой именно микроконтроллер должен быть на плате ардуины и кварц.

Оффлайн Rumata

  • Супермодератор
  • Сообщений: 24595
    • Просмотр профиля
PSNee V8 - Ultimate PSX unlocker
« Ответ #142 : 20 Сентябрь 2023, 12:05:07 »
А нельзя, кстати, тактировать от основной платы?

Оффлайн postal2201

  • Пользователь
  • Сообщений: 345
    • Просмотр профиля
PSNee V8 - Ultimate PSX unlocker
« Ответ #143 : 21 Сентябрь 2023, 09:49:02 »
EVIL, Это не в корпус, это то на чем я тестировал. МК ATmega328P-AU, главное чтобы не контрафакт. Кварц 16Мгц. Мне больше нравятся в мелком корпусе, а там главное чтобы не глючил.

Rumata, можно, а смысл от внешнего тактирования какой? Причем нужно найти частоту которая присутствует на всех ревизиях PS1 и pal и ntsc. Ну и думаю будет тонна сообщений в стиле "я снял кварц и теперь ничего не работает. Пмагите!!!"

С SCPH-1000 на реальной плате PU-7 c 40-SOP bios пока облом :( Во первых память считывается медленнее чем 32-SOP. Во вторых линия адреса A7 оказалась инвертирована. Нужно искать требуемый бит с помощью лог. анализатора и подбирать тайминги.
Кстати, может кто знает 40-SOP bios встречается только на SCPH-1000? Там еще вроде PU-7 бывает нескольких ревизий. Не в микросхеме биоса ли там отличия?


В общем покурив даташит на MSM534032E стало понятно  что в 8-битном режиме происходит смещение адресных линий. D15/A-1 становится A0, A0 это А1 итд.
Но вот я никак не могу вкурить что в 8-битном режиме происходит с линиями данных. BYTE у нас залочен на L, а вот A-1/D15 постоянно переключается между H и L. Как при этом должны себя вести линии D0-D7 и D8-D15. В упор не вкурю эту таблицу.
267183-0
« Последнее редактирование: 21 Сентябрь 2023, 13:47:17 от postal2201 »

Оффлайн Rumata

  • Супермодератор
  • Сообщений: 24595
    • Просмотр профиля
PSNee V8 - Ultimate PSX unlocker
« Ответ #144 : 21 Сентябрь 2023, 17:50:15 »
а смысл от внешнего тактирования какой?
Во-первых ,если не пихать адурину, то достаточно маленькой платки без дополнительных элементов. Во-вторых где-то может быть полезна синхронизация с внутренней тактовой (в теории)

В упор не вкурю эту таблицу.
А чего там вкуривать? Смещение адреса имеется абсолютно во всех микросхемах с переключением 8 / 16. При этом D15 становится "А минус 1". А Hi-Z обозначает состояние высокого импеданса, оно же третье.
BYTE у нас залочен на L, а вот A-1/D15 постоянно переключается между H и L.
Если /BYTE = 0, то микросхема в 8-битном режиме, D0-D7 - это выходы данных, D8-D14 в третьем, то есть их нет, а D15/A-1 - это младший разряд адреса, видимо по очереди считываются младший и старший байт слова.

Оффлайн EVIL

  • Пользователь
  • Сообщений: 3119
  • Пол: Мужской
  • Based Department
    • Просмотр профиля
PSNee V8 - Ultimate PSX unlocker
« Ответ #145 : 21 Сентябрь 2023, 19:35:21 »
главное чтобы не контрафакт.
267185-0
Не, ну это ты загнул, конечно, что я их нюхать буду или как монеты кусать?

Оффлайн Rumata

  • Супермодератор
  • Сообщений: 24595
    • Просмотр профиля
PSNee V8 - Ultimate PSX unlocker
« Ответ #146 : 21 Сентябрь 2023, 19:46:45 »
что я их нюхать буду или как монеты кусать?
А не поможет. Я тут с такими вещами борюсь периодически.

Оффлайн postal2201

  • Пользователь
  • Сообщений: 345
    • Просмотр профиля
PSNee V8 - Ultimate PSX unlocker
« Ответ #147 : 25 Сентябрь 2023, 17:20:59 »
С чиповкой 1000 японки никаких проблем ^_^
Единственное, я не учел что на 40-pin bios идет смещение адресных линий. Придется поправить мануал к прошивке...



Насколько я знаю существует несколько версий PU-8. Одно из основных отличий, это как раз смена микросхемы биос с 40-pin на 32-pin. Интересно в каких моделях плоек могут быть как 40-pin, так и 32-pin биосы? Просто хочется сделать более подробный мануал, чтобы люди не путались паяя чип.
« Последнее редактирование: 25 Сентябрь 2023, 19:03:39 от postal2201 »

Оффлайн Rumata

  • Супермодератор
  • Сообщений: 24595
    • Просмотр профиля
PSNee V8 - Ultimate PSX unlocker
« Ответ #148 : 25 Сентябрь 2023, 17:50:07 »
PU8 -11/-12 - 40 pin
PU8 -22/-23 - 32 pin

Оффлайн postal2201

  • Пользователь
  • Сообщений: 345
    • Просмотр профиля
PSNee V8 - Ultimate PSX unlocker
« Ответ #149 : 25 Сентябрь 2023, 20:06:59 »
Rumata, это понятно. Я имел ввиду в каких моделях SCPH могут стоять материнки с разными чипами bios. 3000? 3500?. Предполагаю что в 1000 были только 40-pin.