Это старая версия документа!
Содержание
Retrolang
Retrolang - свободный комплект разработки (SDK) под PlayStation и одноименный язык программирования, разработанные с полного нуля без зависимости от стороннего ПО. Включает компилятор, ассемблер, дизассемблер, систему автоматизации сборки, собственную стандартную библиотеку, утилиты для конвертации текстур и звуков.
https://github.com/gecko0307/retrolang
Особенностью проекта является стопроцентная юридическая чистота (clean-room дизайн). SDK разработан полностью независимо, без использования дизассемблированного кода, и не включает материалы, защищенные авторским правом. Retrolang нацелен на замену всех устаревших утилит, особенно проприетарных, современными свободными аналогами.
Весь инструментарий Retrolang написан на языке D.
Язык
Retrolang - простой C-подобный процедурный язык, специально разработанный для выполнения программ в условиях крайне ограниченного объема памяти. Поддерживает базовые целочисленные типы int, short, char, uint, ushort, uchar, void, а также указатели на них. Поддерживается приведение типов. Поддерживаются статические массивы, строки, структуры. Реализованы все основные арифметические, логические и побитовые операторы. Операторы потока управления: if/else, while, do-while, for, break, continue, return.
Пример программы:
void main() { bios_a(0x3F, "Hello, World!\n"); }
В отличие от C, Retrolang реализует некоторые низкоуровневые возможности PlayStation в виде интринсиков - встроенных инструкций компилятора, которые разворачиваются не в обычные вызовы, а специальные блоки машинного кода. Это позволяет использовать функции BIOS и команды GTE без необходимости написания частей программы на языке ассемблера. Например, следующий код загружает в контрольные регистры GTE вектор смещения:
ctc2(GTE_TRX, tx); ctc2(GTE_TRY, ty); ctc2(GTE_TRZ, tz);
Язык, тем не менее, включает также и полнофункциональный встроенный ассемблер MIPS-I.
Библиотека Retrolib
Retrolang предоставляет минимальный набор функций, которые помогают в написании программ для PlayStation:
Хост-платформы
Все инструменты кроссплатформенны и могут быть собраны под любой хост-системой, для которой существует реализация компилятора D. В бинарном виде релизы Retrolang предоставляются пока только для Windows.
