vault backup: 2025-04-19 23:55:44
This commit is contained in:
14
.obsidian/workspace.json
vendored
14
.obsidian/workspace.json
vendored
@@ -41,12 +41,12 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "markdown",
|
"type": "markdown",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "PERSONAL PROJECTS/PS1 DOCS/PS1 IRQ.md",
|
"file": "PERSONAL PROJECTS/P2EP/pseudoCode/Untitled.md",
|
||||||
"mode": "source",
|
"mode": "source",
|
||||||
"source": false
|
"source": false
|
||||||
},
|
},
|
||||||
"icon": "lucide-file",
|
"icon": "lucide-file",
|
||||||
"title": "PS1 IRQ"
|
"title": "Untitled"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -207,13 +207,17 @@
|
|||||||
},
|
},
|
||||||
"active": "dd912cc876184c4f",
|
"active": "dd912cc876184c4f",
|
||||||
"lastOpenFiles": [
|
"lastOpenFiles": [
|
||||||
|
"PERSONAL PROJECTS/P2EP/pseudoCode/RenderInterface.md",
|
||||||
|
"PERSONAL PROJECTS/P2EP/pseudoCode/Untitled.md",
|
||||||
|
"PERSONAL PROJECTS/PS1 DOCS/PS1 IRQ.md",
|
||||||
|
"PERSONAL PROJECTS/P2EP/pseudoCode",
|
||||||
|
"PERSONAL PROJECTS/PS1 DOCS/Untitled",
|
||||||
"PERSONAL PROJECTS/PS1 DOCS/fade calculation.md",
|
"PERSONAL PROJECTS/PS1 DOCS/fade calculation.md",
|
||||||
"PERSONAL PROJECTS/PS1 DOCS/PS1 Gamepad.md",
|
"PERSONAL PROJECTS/PS1 DOCS/PS1 Gamepad.md",
|
||||||
"PERSONAL PROJECTS/PS1 DOCS/PS1 Gpu-DMA.md",
|
"PERSONAL PROJECTS/PS1 DOCS/PS1 Gpu-DMA.md",
|
||||||
"PERSONAL PROJECTS/PS1 DOCS/PS1 Ordering table.md",
|
"PERSONAL PROJECTS/PS1 DOCS/PS1 Ordering table.md",
|
||||||
"PERSONAL PROJECTS/PS1 DOCS/PS1 DMA.md",
|
"PERSONAL PROJECTS/PS1 DOCS/PS1 DMA.md",
|
||||||
"PERSONAL PROJECTS/PS1 DOCS/PS1 MDEC.md",
|
"PERSONAL PROJECTS/PS1 DOCS/PS1 MDEC.md",
|
||||||
"PERSONAL PROJECTS/PS1 DOCS/PS1 IRQ.md",
|
|
||||||
"PERSONAL PROJECTS/PS1 DOCS/PSX code IRQ handling.md",
|
"PERSONAL PROJECTS/PS1 DOCS/PSX code IRQ handling.md",
|
||||||
"PERSONAL PROJECTS/PS1 DOCS/PS1 Geometry Transformation Engine.md",
|
"PERSONAL PROJECTS/PS1 DOCS/PS1 Geometry Transformation Engine.md",
|
||||||
"PERSONAL PROJECTS/PS1 DOCS/LZSS C++ Lib.md",
|
"PERSONAL PROJECTS/PS1 DOCS/LZSS C++ Lib.md",
|
||||||
@@ -240,8 +244,6 @@
|
|||||||
"My/Diet 2.md",
|
"My/Diet 2.md",
|
||||||
"My",
|
"My",
|
||||||
"WORK & PROJECTS/Mol/Планы и диаграммы/MOL _ План разработки.md",
|
"WORK & PROJECTS/Mol/Планы и диаграммы/MOL _ План разработки.md",
|
||||||
"WORK & PROJECTS/Mol/Планы и диаграммы/План СИЛА.md",
|
|
||||||
"WORK & PROJECTS/Mol/Планы и диаграммы/СМК.md",
|
|
||||||
"WORK & PROJECTS/Mol/Планы и диаграммы/Alfa Cloud",
|
"WORK & PROJECTS/Mol/Планы и диаграммы/Alfa Cloud",
|
||||||
"Структура объектов испытаний.png",
|
"Структура объектов испытаний.png",
|
||||||
"Схема связей юрлиц и адресов.png",
|
"Схема связей юрлиц и адресов.png",
|
||||||
@@ -249,8 +251,6 @@
|
|||||||
"WORK & PROJECTS/Mol/Документы для ТЗ ЛИМС/АФ-01 Альбом форм.pdf",
|
"WORK & PROJECTS/Mol/Документы для ТЗ ЛИМС/АФ-01 Альбом форм.pdf",
|
||||||
"WORK & PROJECTS/Mol/Серверы/Схема инфраструктуры.canvas",
|
"WORK & PROJECTS/Mol/Серверы/Схема инфраструктуры.canvas",
|
||||||
"WORK & PROJECTS/Ulab/Автобан/щебень 5-20.xlsx",
|
"WORK & PROJECTS/Ulab/Автобан/щебень 5-20.xlsx",
|
||||||
"WORK & PROJECTS/Ulab/Автобан/щебень 20-40.xlsx",
|
|
||||||
"WORK & PROJECTS/Ulab/Автобан/песок природный.xls",
|
|
||||||
"WORK & PROJECTS/Mol/Серверы/Alfa cloud prod.canvas",
|
"WORK & PROJECTS/Mol/Серверы/Alfa cloud prod.canvas",
|
||||||
"PERSONAL PROJECTS/P2EP/cdRead.canvas",
|
"PERSONAL PROJECTS/P2EP/cdRead.canvas",
|
||||||
"P2EP/cdRead.canvas",
|
"P2EP/cdRead.canvas",
|
||||||
|
|||||||
87
PERSONAL PROJECTS/P2EP/pseudoCode/RenderInterface.md
Normal file
87
PERSONAL PROJECTS/P2EP/pseudoCode/RenderInterface.md
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
``` c
|
||||||
|
#include <libgte.h>
|
||||||
|
#include <libgpu.h>
|
||||||
|
#include <libgs.h>
|
||||||
|
|
||||||
|
/* Константы */
|
||||||
|
#define SCRAM_ADDR 0x1F800000 // Быстрая память PS1
|
||||||
|
#define MAX_ELEMENTS 32 // Максимальное количество элементов интерфейса
|
||||||
|
|
||||||
|
/* Структура элемента интерфейса */
|
||||||
|
typedef struct {
|
||||||
|
GsCOORDINATE2 coord; // Система координат
|
||||||
|
u_short flags; // Флаги видимости/состояния
|
||||||
|
RECT clip; // Область отсечения
|
||||||
|
u_char texture_page; // Номер TPage
|
||||||
|
SVECTOR position; // Позиция (x,y,z)
|
||||||
|
SVECTOR scale; // Масштаб
|
||||||
|
u_short *sprite_data; // Данные спрайта
|
||||||
|
} InterfaceElement;
|
||||||
|
|
||||||
|
/* Главная функция рендеринга интерфейса */
|
||||||
|
u_long RenderInterface(GsOT *ot, InterfaceElement *elements, int count)
|
||||||
|
{
|
||||||
|
/* Инициализация буферов */
|
||||||
|
u_long *work_buffer = (u_long*)SCRAM_ADDR;
|
||||||
|
MATRIX local_matrix;
|
||||||
|
GsCOORDINATE2 *current_coord;
|
||||||
|
int i, processed = 0;
|
||||||
|
|
||||||
|
/* Сохраняем текущую матрицу */
|
||||||
|
GsPushMatrix();
|
||||||
|
|
||||||
|
/* Очистка рабочего буфера */
|
||||||
|
memset(work_buffer, 0, 0xD8);
|
||||||
|
|
||||||
|
/* Настройка матрицы проекции */
|
||||||
|
gte_SetGeomOffset(160, 120); // Центр экрана (320x240)
|
||||||
|
gte_SetGeomScreen(512); // Коэффициент перспективы
|
||||||
|
|
||||||
|
/* Основной цикл рендеринга */
|
||||||
|
for (i = 0; i < count; i++) {
|
||||||
|
InterfaceElement *elem = &elements[i];
|
||||||
|
|
||||||
|
/* Проверка видимости элемента */
|
||||||
|
if (!(elem->flags & 0x8000)) continue;
|
||||||
|
|
||||||
|
/* Установка локальной матрицы */
|
||||||
|
GsGetLs(&elem->coord, &local_matrix);
|
||||||
|
GsSetLsMatrix(&local_matrix);
|
||||||
|
|
||||||
|
/* Обработка спрайта */
|
||||||
|
if (elem->flags & 0x0001) {
|
||||||
|
/* Настройка TPage */
|
||||||
|
GsSortTPage(elem->texture_page, GetTPage(2, 0, 0, 0), ot);
|
||||||
|
|
||||||
|
/* Трансформация вершин */
|
||||||
|
gte_ldv3(&elem->position,
|
||||||
|
(SVECTOR*)((u_long)elem->position.vx + 8),
|
||||||
|
(SVECTOR*)((u_long)elem->position.vy + 8));
|
||||||
|
gte_rtpt();
|
||||||
|
|
||||||
|
/* Проверка видимости полигона */
|
||||||
|
if (gte_nclip()) {
|
||||||
|
/* Генерация 2D-координат */
|
||||||
|
POLY_FT3 *poly = (POLY_FT3 *)work_buffer;
|
||||||
|
setPolyFT3(poly);
|
||||||
|
|
||||||
|
/* Установка параметров */
|
||||||
|
poly->tpage = GetTPage(2, 0, elem->texture_page, 0);
|
||||||
|
poly->clut = GetClut(0, 0);
|
||||||
|
|
||||||
|
/* Расчет координат */
|
||||||
|
gte_stsxy3(&poly->x0, &poly->x1, &poly->x2);
|
||||||
|
|
||||||
|
/* Добавление в Ordering Table */
|
||||||
|
GsSortPrim(ot, poly);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
processed++;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Восстановление матрицы */
|
||||||
|
GsPopMatrix();
|
||||||
|
|
||||||
|
return processed; // Возвращаем количество обработанных элементов
|
||||||
|
}
|
||||||
|
```
|
||||||
0
PERSONAL PROJECTS/P2EP/pseudoCode/Untitled.md
Normal file
0
PERSONAL PROJECTS/P2EP/pseudoCode/Untitled.md
Normal file
Reference in New Issue
Block a user