vault backup: 2025-04-21 22:24:44

This commit is contained in:
sShemet
2025-04-21 22:24:44 +05:00
parent 16a500a20a
commit 85d161cd5d
2 changed files with 130 additions and 30 deletions

View File

@@ -0,0 +1,70 @@
``` c (PSX)
void CD_ExecuteReading(int param_1)
{
// Проверка статуса чтения CD
if ((DAT_CD_READ_STATUS < 3) && (DAT_CD_READ_STATUS >= 0)) {
return;
}
// Проверка глобального состояния системы
if ((DWORD_80083938 == 6) || (DWORD_80083938 == 3)) {
return;
}
// Проверка изменения состояния
if (DWORD_800838b8 != DWORD_80083718) {
DWORD_800838b8 = DWORD_80083718;
FUN_EMPTY(); // Какая-то инициализация/сброс
// Основная логика обработки состояний
switch (DAT_CD_READ_STATUS) {
case 3:
case 5:
case 8:
case 10:
// Проверка статуса привода
byte driveStatus = DsStatus();
// Условие для смены статуса
if ((driveStatus & 0x60) == 0 && (DWORD_80083718 - DWORD_800838b4) >= 0xB5) {
DAT_CD_READ_STATUS = 2;
FUN_8004a19c(); // Какая-то функция обработки
// Дополнительные проверки статуса
if (DAT_CD_READ_STATUS != 5) {
if (DAT_CD_READ_STATUS < 6) {
if (DAT_CD_READ_STATUS == 3) {
FUN_80026d58(); // Обработка состояния 3
}
} else {
if (DAT_CD_READ_STATUS == 10) {
DsSectorSeek(); // Поиск сектора
} else if (DAT_CD_READ_STATUS == 12) {
readCD_XA(); // Чтение XA-аудио
}
}
}
}
break;
case 5:
// Специальная обработка для состояния 5
if (DsSystemStatus() == 1) {
FUN_80026eec(); // Функция завершения
}
break;
default:
// Ничего не делаем для других состояний
break;
}
}
// Чтение сектора, если статус в диапазоне 0xC-0xF
if ((DAT_CD_READ_STATUS >= 0xC) && (DAT_CD_READ_STATUS < 0x10)) {
CD_SectorRead(param_1);
}
}
```