Содержание

Retrolang

Retrolang - свободный комплект разработки (SDK) под PlayStation и одноименный язык программирования, разработанные с полного нуля без зависимости от стороннего ПО. Включает компилятор, ассемблер, дизассемблер, систему автоматизации сборки, собственную стандартную библиотеку, утилиты для конвертации текстур и звуков.

https://github.com/gecko0307/retrolang

Особенностью проекта является стопроцентная юридическая чистота. SDK разработан полностью независимо, без использования дизассемблированного кода, и не включает материалы, защищенные авторским правом. Retrolang нацелен на замену всех устаревших утилит, особенно проприетарных, современными свободными аналогами.

Весь инструментарий Retrolang написан на языке D.

Язык

Retrolang - простой C-подобный процедурный язык, специально разработанный для выполнения программ в условиях крайне ограниченного объема памяти. Поддерживает базовые целочисленные типы int, short, char, uint, ushort, uchar, void, а также указатели на них. Поддерживается приведение типов. Поддерживаются статические массивы, строки, структуры. Реализованы все основные арифметические, логические и побитовые операторы. Операторы потока управления: if/else, while, do-while, for, break, continue, return.

Пример программы:

#import "retrolib.r"
 
void main()
{
    printf("Hello, World!\n");
}

В отличие от C, Retrolang реализует некоторые низкоуровневые возможности PlayStation в виде интринсиков - встроенных инструкций компилятора, которые разворачиваются не в обычные вызовы, а специальные блоки машинного кода. Это позволяет использовать функции BIOS и команды GTE без необходимости написания частей программы на языке ассемблера. Например, следующий код загружает в контрольные регистры GTE вектор смещения:

ctc2(GTE_TRX, tx);
ctc2(GTE_TRY, ty);
ctc2(GTE_TRZ, tz);

Язык, тем не менее, включает также и полнофункциональный встроенный ассемблер MIPS-I.

Для работы с BIOS есть готовый модуль «bios.r».

Библиотека Retrolib

Retrolang предоставляет системную библиотеку, которая облегчает работу с аппаратным обеспечением:

Инструменты

Хост-платформы

Все инструменты кроссплатформенны и могут быть собраны под любой хост-системой, для которой существует реализация компилятора D. В бинарном виде релизы Retrolang предоставляются пока только для Windows.