Основная информация

LuaPlayerYT — современный LuaPlayer для PSP с открытым исходным кодом, ориентированный на расширяемость и широкий функционал.

Репозитории

Основной репозиторий → github.com/antim0118/LuaPlayer-by-YuliaTeam

Форки

1. Форк движка от entitybtw, ориентированный на кастомизацию. Создается для порта Minecraft: Story Mode для PSP [mcsm_portable]. Форк сохраняет все оригинальные ассеты и добавляет гибкую настройку экрана ошибок (звук, шрифт, изображение), для сборки используется скрипт build.sh.

Репозиторий → github.com/entitybtw/LuaPlayerYT-MCSM

Сборка

Основной репозиторий

1. Установите PSPSDK согласно официальной инструкции.

2. Склонируйте репозиторий:

git clone https://github.com/antim0118/LuaPlayer-by-YuliaTeam

3. Выполните сборку:

make clean && make

В репозитории настроена автосборка EBOOT.PBP при каждом изменении. Готовые сборки из актуального кода доступны в GitHub Actions .

Форк от entitybtw

1. Установите PSPSDK.

2. Склонируйте репозиторий:

git clone https://github.com/entitybtw/LuaPlayerYT-MCSM

3. Запустите сборку:

./build.sh

Форк также использует автосборку EBOOT.PBP. Актуальные сборки доступны в GitHub Actions .

Документация движка

LuaPlayerYT 0.5 beta 3 — документация основаная на LuaPlayerYT LLS от ильи' antim0118

Обновлено: 31 декабря 2025

buttons — Кнопки
ИмяЗначение
buttons.select1
buttons.start8
buttons.up16
buttons.right32
buttons.down64
buttons.left128
buttons.l256
buttons.r512
buttons.triangle4096
buttons.circle8192
buttons.cross16384
buttons.square32768
buttons.home65536

buttons.read() считывает состояния кнопок. (желательно вызывать перед вызовом остальных функций для чтения состояния)

buttons.Lx() считывает позицию стика по X, возвращает целое значение от -128 до 127

buttons.Ly() считывает позицию стика по Y, возвращает целое значение от -128 до 127

buttons.pressed(button) проверка на то, была ли кнопка нажата только что (не зажата!)

buttons.held(button) проверка на то, удерживается ли кнопка в данный момент

buttons.released(button) проверка на то, отпущенна ли кнопка в данный момент

Color — Цвет

Color.new(r, g, b, a?)

Color.get(color, channel?)

Image — Изображения

Выравнивание

КонстантаЗначение
Image.lUp (id: 0) ; положение сверху-слева (по умолчанию)0
Image.rUp (id: 1) ; положение сверху-справа1
Image.rDn (id: 2) ; положение снизу-справа2
Image.lDn (id: 3) ; положение снизу-слева3
Image.Center (id: 4) ; положение по центру4

Функции

Image.load(path) загрузка изображения в память (path - путь к изображению)

Image.unload(texture) выгрузка изображения из памяти (texture - предварительно загруженное изображение)

Image.W(texture) получение высоты изображения (texture - предварительно загруженное изображение)

Image.H(texture) получение ширины изображения (texture - предварительно загруженное изображение)

Image.draw(texture, x, y, w, h, color, srcx, srcy, srcw, srch, rotation, alpha, alignMode, GU_LINEAR, GU_REPEAT) полная отрисовка изображения (texture - предварительно загруженное изображение, x - позиция изображения по X, y - позиция изображения по Y, w - ширина изображения (по умолчанию размер загруженного изображения, h - высота изображения (по умолчанию размер загруженного изображения), color - цвет изображения, srcx и srcy - координаты начала захвата рабочей области изображения (по умолчанию: 0), srcw и srch - координаты окончания захвата рабочей области изображения (по умолчанию: srcw = ширина изображения, srch = высота изображения)

Image.draweasy(texture, x, y, color, rotation, alpha, alignMode, GU_LINEAR, GU_REPEAT)

Image.drawCircleOnTex(texture, x, y, rotation, color) отрисовка окружности на изображении

Image.createPlaceholder() создает 'шахматную' текстуру как текстура-заполнитель

intraFont — Шрифты

Выравнивание

ALIGN_LEFT = 0 слева

ALIGN_CENTER = 512 по середине

ALIGN_RIGHT = 1024 справа

Скроллинг

SCROLL_LEFT = 8192

SCROLL_SEESAW = 8704

SCROLL_RIGHT = 9216

SCROLL_THROUGH = 9728

Функции

intraFont.load(path, size) загрузка шрифта в ОЗУ в форматах TTF и PGF(path - путь до шрифта, size - размер шрифта)

intraFont.setStyle(font, size, color, rotation, align) задает стиль шрифта (font - шрифт, size - размер, color - цвет, rotation - поворот, align - выравнивание)

intraFont.print(x, y, text, textColor, font, size, rotation, GU_LINEAR, align) отрисовка текста (x и y - координаты позиции шрифта, text - выводимый текст, textColor - цвет, font - шрифт, size - размер, GU_LINEAR - режим фильтрации (линейная или отключена), align - выравнивание)

intraFont.printBackground(x, y, text, textColor, bgColor, font, size) отрисовка текста с фоновой заливкой (x и y - координаты позиции шрифта, text - выводимый текст, textColor - цвет текста, bgColor - цвет фоновой заливки, font - шрифт, size - размер)

intraFont.printColumn(x, y, text, width, textColor, font, size, align, scroll) отрисовка текста колонной (x и y - координаты позиции шрифта, text - выводимый текст, width - ширина текста в пикселях, textColor - цвет, font - шрифт, size - размер,align - выравнивание, scroll - скроллинг)

intraFont.printContoured(x, y, text, textColor, contourColor, font, size, rotation) отрисовка текста с контуром (x и y - координаты позиции, text - выводимый текст, textColor - цвет текста, contourColor - цвет контура, font - шрифт, size - размер, rotation - поворот)

intraFont.printGradient(x, y, text, textColorStart, textColorEnd, font, size) отрисовка текста с градиентом (x и y - координаты позиции, text - выводимый текст, textColorStart - начальный цвет, textColorEnd - конечный цвет, font - шрифт, size - размер)

intraFont.printStriked(x, y, text, textColor, lineColor, font, size) отрисовка перечёркнутого текста (x и y - координаты позиции, text - выводимый текст, textColor - цвет текста, lineColor - цвет перечёркивающей линии, font - шрифт, size - размер)

intraFont.printShadowed(x, y, text, textColor, shadowColor, font, shadowRotation, lightDistance, size, rotation) отрисовка текста с тенью (x и y - координаты позиции, text - выводимый текст, textColor - цвет текста, shadowColor - цвет тени, font - шрифт, shadowRotation - угол падения света, lightDistance - расстояние тени, size - размер, rotation - поворот)

intraFont.printUnderlined(x, y, text, textColor, lineColor, font, size) отрисовка подчеркнутого текста (x и y - координаты позиции, text - выводимый текст, textColor - цвет текста, lineColor - цвет линии, font - шрифт, size - размер)

intraFont.reverseText(text) разворачивает строку задом наперёд (text - исходный текст)

intraFont.size(font, size) изменение размера шрифта (font - шрифт, size - новый размер)

intraFont.textW(font, text, size) вычисление ширины текста в пикселях (font - шрифт, text - текст, size - размер)

intraFont.textH(font) вычисление высоты шрифта в пикселях с учётом текущего размера (font - шрифт)

intraFont.unload(font) выгрузка шрифта из памяти (font - шрифт)

System — Система

System.rename(path, newName) переименование файла или папки (path - путь к файлу или папке, newName - новое имя)

System.removeFile(path) удаление файла (path - путь к файлу)

System.removeDir(path) удаление папки (path - путь к папке)

System.createDir(path) создание новой папки (path - путь к создаваемой папке)

System.isFile(path) проверка существования файла (path - путь к файлу)

System.isDir(path) проверка является ли путь папкой (path - путь к папке)

System.currentDir(path) смена текущей рабочей директории (path - путь к новой директории)

System.listDir(path) получение списка файлов и папок в директории (path - путь к директории)

System.OSK(text, desc, cleanBG, bgpath) вызов системной клавиатуры PSP (text - начальный текст, desc - описание поля ввода, cleanBG - очистка фона, bgpath - путь к фону)

System.message(message, mode, cleanBG, bgpath) вывод системного сообщения (message - текст сообщения, mode - режим окна, cleanBG - очистка фона, bgpath - путь к фону)

System.getBatteryPercent() получение текущего заряда аккумулятора в процентах

System.getBatteryLifeTime() получение оставшегося времени работы аккумулятора в минутах

System.getCPU() получение текущей частоты процессора

System.getModel() получение модели консоли PSP

System.getTime() получение текущего времени и даты, выставленных на консоли

System.getOSV() получение версии установленной официальной прошивки

System.GC() очистка оперативной памяти от LUA-мусора

System.buttonPressed() получение кнопки, нажатой в окне System.message()

System.getNickname() получение никнейма консоли

System.getLang() получение языка, установленного в системе

System.PowerTick() предотвращение перехода консоли в спящий режим и отключения экрана

System.getGameID() получение ID игры (например, UCJS10041)

System.getGameTitle() получение названия текущей игры

System.SaveData(saveData, subTitle, description, ebootpath, icon0path, cleanBG, bgpath) сохранение данных с выбором слота (saveData - данные, subTitle - подзаголовок, description - описание, ebootpath - путь к EBOOT.PBP, icon0path - путь к иконке, cleanBG - очистка фона, bgpath - путь к фону)

System.LoadData(cleanBG, bgpath) загрузка сохранённых данных с выбором слота (cleanBG - очистка фона, bgpath - путь к фону)

System.DeleteData(cleanBG, bgpath) удаление сохранения через системное окно (cleanBG - очистка фона, bgpath - путь к фону)

System.AutoSave(saveData, subTitle, description, ebootpath, AutoSaveFolder, icon0path) автоматическое сохранение данных без вызова интерфейса (saveData - данные, subTitle - подзаголовок, description - описание, ebootpath - путь к EBOOT.PBP, AutoSaveFolder - папка автосохранения, icon0path - путь к иконке)

System.AutoLoad(AutoSaveFolder) автоматическая загрузка сохранённых данных (AutoSaveFolder - папка автосохранения)

System.fileDumpCreate(file) загрузка файла в память и получение указателя (file - путь к файлу)

System.fileDumpGetLine(filePointer, pos) получение строки из загруженного файла (filePointer - указатель файла, pos - номер строки)

System.fileDumpRemove(filePointer, linesCount) выгрузка файла из памяти (filePointer - указатель файла, linesCount - количество строк)

System.Net() подключение консоли к сети

System.USB.activate() активация USB-режима

System.USB.deactivate() деактивация USB-режима

System.USB.getState() получение текущего состояния USB-режима

screen - Экран

screen.clear(color) очистка экрана перед отрисовкой кадра (color - цвет очистки экрана)

screen.flip() вывод изображения с виртуального экрана на реальный (обновление кадра)

screen.filledRect(x, y, width, height, color, rotation, alpha, alignMode) отрисовка заполненного прямоугольника (x и y - позиция, width и height - размеры, color - цвет, rotation - поворот, alpha - прозрачность, alignMode - режим выравнивания)

screen.drawLine(x1, y1, x2, y2, color) отрисовка линии (x1 и y1 - начало линии, x2 и y2 - конец линии, color - цвет)

screen.drawCircle(x, y, radius, color) отрисовка окружности (x и y - центр окружности, radius - радиус, color - цвет)

screen.drawTriangle(x1, y1, x2, y2, x3, y3, color) отрисовка треугольника (x1,y1 / x2,y2 / x3,y3 - координаты вершин, color - цвет)

sound - Звук

sound.cloud(path, channel, loadToRam) предзагрузка аудиофайла в канал (path - путь к .mp3/.wav/.ogg/.at3, channel - канал звука, loadToRam - загрузка в ОЗУ)

sound.play(channel, loop) воспроизведение загруженного аудиофайла (channel - канал звука, loop - зацикливание воспроизведения)

sound.info() получение ID3-информации из mp3 файла, загруженного в канал

sound.pause(channel) приостановка воспроизведения звука (channel - канал)

sound.volume(channel, volumeL, volumeR) изменение громкости воспроизведения (channel - канал, volumeL - громкость левого канала, volumeR - громкость правого канала)

sound.stop(channel) остановка воспроизведения звука (channel - канал)

sound.state(channel) получение состояния звукового канала (channel - канал)

sound.unload(channel) выгрузка аудиофайла из канала (channel - канал)

pmp - PMP видео

PMP.getFrame(pointer) проверка воспроизведения видео и обновление указателя (pointer - указатель на запущенный PMP, возвращает true, если видео играет)

PMP.getTimeCode() получение текущего времени воспроизведения видео в секундах

PMP.getSubs() получение текста субтитров текущего видео

PMP.pause() приостановка воспроизведения видео

PMP.play(path, getPointer, loop, subtitlePath, interruptButton, FPS) воспроизведение .pmp файла (path - путь к видео, getPointer - возвращать указатель, loop - зацикливание, subtitlePath - путь к субтитрам .srt, interruptButton - кнопка остановки, FPS - кадры в секунду, возвращает указатель если getPointer = true)

PMP.setVolume(volume) установка громкости воспроизведения видео (volume - громкость от 0 до 100)

PMP.stop(pointer) остановка воспроизведения видео (pointer - указатель на запущенный PMP)

PMP.Mp4_Info(path) вывод в консоль информации о MP4 файле (path - путь к файлу, функция вероятно устаревшая)

LUA - Базовые функции

LUA.print(x, y, text) вывод текста системным шрифтом на экран (x и y - координаты, text - текст для вывода)

LUA.getRandom(min, max) генерация случайного числа в диапазоне от min до max (включительно)

LUA.getRAM() получение доступного объёма оперативной памяти в байтах (погрешность ~512 КБ)

LUA.screenshot(path, width, height) создание скриншота экрана (path - путь сохранения, width и height - размеры изображения)

LUA.exit() выход в XMB

LUA.quit() выход в XMB

LUA.sleep(ms) пауза выполнения скрипта на указанное количество миллисекунд (ms)

timer - Таймеры

timer.create() создание нового таймера (возвращает объект таймера)

timer.start(timerInstance) запуск ранее созданного таймера (timerInstance - объект таймера)

timer.time(timerInstance) получение времени, отсчитанного таймером в миллисекундах (timerInstance - объект таймера)

timer.stop(timerInstance) остановка таймера (timerInstance - объект таймера)

timer.reset(timerInstance) остановка и сброс таймера (timerInstance - объект таймера)

timer.remove(timerInstance) удаление таймера (timerInstance - объект таймера)

Дополнительная информация

Проекты которые делают на LuaPlayerYT:

1. Minecraft: Story Mode [mcsm_portable]

2. Neighbours from Hell PSP

3. PortableTale

4. TouHou: Переполох в Сарае

5. Funkin engine

6. MikuPSP

7. UltraSimpleGameAPI

8. PocketDoors

9. Pocket Rooms

10. OneShot PSP

11. The Song of Saya PSP

12. Wolf Tails PSP

13. mod "Samantha" for Everlasting Summer PSP

14. Everlasting Summer PSP

15. CHYKHPYH AND PYNTYAU: NEW YEAR'S ADVENTURES

LuaPlayerYT LLS для vscode от antim0118

Установка

1. скачать расширение Lua (или Lua Language Server от sumneko)

2. распаковать архив с папкой LLS в удобное место (ССЫЛКА НА СКАЧКУ АРХИВА НАХОДИТСЯ НИЖЕ)

3. указать путь к распакованной папке LLS в настройках: File - Preferences - Settings - вкладка User. В поиске пишем Lua.workspace.library и в этом пункте вписываем путь.

Ссылка на архив текущей версии LuaPlayerYT LLS:

[LLS_v0.5beta3_2025-12-31.zip] 13.8KB

Справка

> движок сделан Иваном Kodilo

> данный вебсайт сделан entitybtw / исходный код

> LuaPlayerYT LLS сделан ильей' antim0118

> Основным репозиторием LuaPlayerYT владеет илья' antim0118

> спасибо cxplay_1465 за помощь с комментами для документации движка