vault backup: 2025-04-21 22:24:44
This commit is contained in:
70
PERSONAL PROJECTS/PS1 DOCS/CD_Execute_Reading.md
Normal file
70
PERSONAL PROJECTS/PS1 DOCS/CD_Execute_Reading.md
Normal 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);
|
||||
}
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user