Список функций в конфигах

Список всех функций, которые пользователь может переопределить в конфигах для добавления поддержки новой игры

Для того, чтобы добавить поддержку новой игры в редактор, необходимо создать файл-конфиг, в котором будет описано, как именно загружать данные об уровнях игры. Файл-конфиг представляет собой обычный текстовый файл, который содержит код на языке C#.

Данный файл может быть открыт в редакторе CadEditor (требуется выбрать файл-конфиг и ROM-файл для редактирования). После этого редактор пытается скомпилировать код, содержащийся в файле, и в случае отсутствия ошибок, вызывать функции из этого файла в различные моменты своей работы.

Почти для всех функций в редакторе поддерживается реализация по умолчанию, и если игра использует формат карт, который читается функциями по умолчанию, их не нужно переопределять в файле конфига. За счёт этого, если игра имеет формат уровней, близкий к формату по умолчанию, то конфиг содержит лишь минимальное количество кода - чаще всего это просто адреса, по которым расположены данные об уровнях.

Для просмотра списка всех возможных функций, которые можно переопределить в файле-конфиге, используется утилита ConfigViewer. ConfigViewer

Список функций редактора, которые можно переопределить

Функции разделены на несколько категорий. Некоторые из функций взаимоисключающие, т.е. если определена одна из них, то другая более не имеет смысла. Список функций не окончательный, возможны изменения. Возможно, все функции одной категории будут переопределены в более общие, возвращаются структуры данных, описывающие формат более целостно, без разделения на мелкие элементы.

Категория ShowDump

public bool showDumpFileField()

Если функция возвращает true, то в редакторе при открытии будет отображено дополнительное поле выбора файл-дампа (используется для игр, где часть данных загружается из ROM-файла, а часть - из дополнительного файла-дампа). Значение по умолчанию false.

Категория Offsets

public OffsetRec getScreensOffset()

Функция возвращает описание смещений списка игровых экранов, доступных для редактирования. Структура OffsetRec описывает адрес первого элемента, количество элементов и расстояние между элементами (если элементы идут последовательно один за другим, то это расстояние равно размеру одного элемента).

public OffsetRec getVideoOffset()

Функция возвращает описание смещений банков видеопамяти, которые будут доступны в редакторе для отображения тайлов. Также существует возможность переопределить саму функцию загрузки банков видеопамяти getVideoChunkFunc и функцию вычисления адреса банка видеопамяти getVideoPageAddrFunc.

public OffsetRec getVideoObjOffset()

Функция возвращает описание смещений банков видеопамяти, используемых для редактирования игровых объектов. Используется в редакторе объектов.

public OffsetRec getBlocksOffset()

Функция возвращает описание смещений наборов блоков, доступных для редактора. Блоки составляются из тайлов видеопамяти и могут служить строительным элементов для более больших строительных единиц или же описывать игровые экраны.

public OffsetRec getBigBlocksOffset()

Функция возвращает описание смещений наборов макроблоков, доступных для редактора. В случае, если игра имеет более одного уровня макроблоков, существует возможность также определить функцию getBigBlocksOffsetHierarchy, с помощью которой можно описать смещений макроблоков нескольких уровней.

public OffsetRec getPalOffset()

Функция возвращает описание смещений наборов палитр, доступных для редактора. Также существует возможность переопределить способ загрузки палитр (например, из отдельных файлов), с помощью функций getPalFunc/setPalFunc.

Категория Levels count

public int getLevelsCount()

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

Категория Screen Params

public LoadScreensFunc loadScreensFunc

public LoadScreensFunc saveScreensFunc

Функции позволяют переопределить способ, которым будут загружены экраны, и как они будут сохранены редактором. Стандартный способ включает загрузку и сохранение всех экранов, которые указаны с помощью смещений в функциях getScreensOffset и getScrensOffsetForLevels.

public LoadPhysicsLayer loadPhysicsLayerFunc

public SavePhysicsLayer savePhysicsLayerFunc

Функции позволяют определить способ, которым будет загружен слой физики (коллизий) для каждого экрана, и как они будут сохранены редактором. Данные функции могут быть не определены, их определяют только для игр, в которых коллизии описываются отдельным слоем. Чаще всего коллизии задаются в свойствах блоков и нет необходимости описывать отдельный слой, указывающий на физические свойства блока.

public int getPhysicsBlocksCount

Функция позволяет ограничить количество блоков физики, используемых в игре.

public OffsetRec[] getScreensOffsetsForLevels()

Функция описывает массив структур OffsetRec, в которых указываются размеры экрана и последовательный массив экранов для каждого уровня.

public bool getScreenVertical()

Позволяет указать, описывается ли экран блоками слева направо (если функция возвращает false), или сверху вниз (если функция возвращает true).

public int getScreenDataStride()

Позволяет указать шаг между индексами блоков экрана, в случае, если они идут не последовательно.

public int getWordLen()

Размер слова, описывающего индекс блока. Чаще всего используются значения 1 (один байт на индекс), или 2 (два байта на индекс блока - часто встречается в играх для 16 битных консолей).

public bool isLittleEndian()

В случае слова размером в 2 байта, позволяет указать порядок байт в слове - старший или младший байт вначале.

public bool isBuildScreenFromSmallBlocks()

Функция может указывать, что игра не использует ни одного уровня макроблоков, и экраны строятся сразу из маленьких блоков.

Категория GameBoy graphics

public bool isUseGbGraphics()

Использовать ли плагин для построения графики для консоли GameBoy.

Категория Sega graphics

public bool isUseSegaGraphics()

Использовать ли плагин для построения графики для консоли Sega Mega Drive.

public bool isBlockSize4x4()

Использовать ли блоки размером 2x2 или размером 4x4 (2 доступных варианта для графики Sega Mega Drive 2).

Категория Level recs

public GetLevelRecsFunc getLevelRecsFunс()

Функция должна возвращать указатель на функцию, загружающую список записей об уровнях. Записи об уровнях включают описания списка экранов и списка объектов на уровне.

Категория Min/max object params

Задаёт ограничения для редактора объектов.

public int getMinObjCoordX()

public int getMinObjCoordY()

public int getMaxObjCoordX()

public int getMaxObjCoordY()

Функции позволяют ограничить минимальные и максимальные координаты X и Y объектов для редактора объектов. Используется для игр, в которых для расстановки объектов используется ограниченная зона (возможно размещение не по всему уровню).

public int getMinObjType()

public int getMaxObjType()

Аналогично предыдущим, функции позволяют задать ограничения на минимально и максимально допустимые номера объектов на уровне.

Категория Blocks param

public int getBlocksCount()

Возвращает количество блоков в наборе.

public GetBlocksCountFunc getBlocksCountFunc()

Возвращает функцию, определяющую количество блоков в каждом из наборов

public int getBigBlocksCount()

Возвращает количество макроблоков в наборе. В случае если игра использует несколько уровней макроблоков, следует использовать функцию getBigBlocksCountHierarchy.

public GetBlocksCountFunc getBigBlocksCountFunc()

Возвращает функцию, определяющую количество макроблоков в каждом из наборов

public int getPalBytesAddr()

public int getPhysicsBytesAddr()

В случае, если игра использует отдельный массивы описания бит палитры или физики для блоков, можно задать их адреса этими функциями. Следует отметить, что функции загрузки блоков по умолчанию не используют эти адреса, поэтому необходимо также переопределять функции загрузки блоков getBlocksFunc/getBigBlocksFunc так, чтобы они использовали адреса, возвращаемые этими функциями.

public GetPalBytesAddrFunc getPalBytesAddrFunc()

Возвращает функцию, определяющую адреса массивов описания бит палитры (можно задавать разный адрес для каждого из наборов)

public int getBigBlocksHierarchyCount()

В случае, если количество уровней иерархии макроблоков больше 1, определяет количество уровней иерархии макроблоков (Значение 2 означает что игра имеет макроблоки и макро-макроблоки, значение 3 - что игра содержит макроблоки, макро-макроблоки и макро-макро-макроблоки и т.д.)

public int getBigBlocksCountHierarchy(int hierarchyLevel)

Функция возвращает количество макроблоков на каждом уровне иерархии. В параметр hierarchyLevel приходит значение уровня иерархии, для которого требуется вернуть количество макроблоков.

public OffsetRec getBigBlocksOffsetHierarchy(int hierarchyLevel)

Функция, которая позволяет задать OffsetRec отдельно для каждого уровня иерархии макроблоков, заменяет функцию getBigBlocksOffset.

public string[] getBlockTypeNames()

Функция, позволяющая задать названия типов для редактора блоков в виде строк.

Категория View params

public GroupRec[] getGroups()

Функция позволяет описать группы параметров для различных уровней. Группы - это подсказки редактору, как переключать вид на конкретный уровень (первый номер экрана и параметры отображения - номер набора блоков, палитры, макроблоков и банка памяти, который испольется на уровне или подуровне). Данный параметр не влияет на редактирование рома, а лишь упрощает работу с конфигом игры в редакторе.

public float getDefaultScale()

Позволяет указать параметр масштаба, который будет выбран при открытии конфига в редакторе. Мастштаб можно переключить из меню редактора.

Категория BigBlocks funcs

public GetBigBlocksFunc getBigBlocksFunc()

public SetBigBlocksFunc setBigBlocksFunc()

public GetBigBlocksAddrFunc getBigBlocksAddrFunc(int blockId)

Функции, которые позволяют определить, как именно будут загружаться и сохраняться обратно в ROM макроблоки.

public GetBigBlocksFunc[] getBigBlocksFuncs()

public SetBigBlocksFunc[] setBigBlocksFuncs()

public GetBigBlocksAddrFunc[] getBigBlocksAddrFuncs(int blockId)

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

Категория NES CHR funcs

public GetVideoPageAddrFunc getVideoPageAddrFunc()

Позволяет задать функцию рассчёта адреса для каждого CHR-банка по его номеру.

public GetVideoChunkFunc getVideoChunkFunc()

public SetVideoChunkFunc setVideoChunkFunc()

Позволяют задать произвольные функции загрузки и сохранения CHR-банков памяти (из ROM файла или отдельного файла).

Категория Sega blocks funcs

public GetSegaMappingFunc getSegaMappingFunc()

public SetSegaMappingFunc setSegaMappingFunc()

Версия функций считывания/сохранения блоков для игр Sega Mega Drive.

Категория Blocks funcs

public GetBlocksFunc getBlocksFunc()

public SetBlocksFunc setBlocksFunc()

public GetBlocksAddrFunc getBlocksAddrFunc(int blockId)

Функции, которые позволяют указать, как будут считываться/сохраняться наборы блоков.

Категория Pal funcs

public GetPalFunc getPalFunc()

public SetPalFunc setPalFunc()

Функции, указывающие, как будут считываться/сохраняться наборы палитр.

Категория Objects funcs

public GetObjectsFunc getObjectsFunc()

public SetObjectsFunc setObjectsFunc()

Функции, указывающие, как будут считываться/сохраняться списки объектов на уровня (для редактора объектов).

public SortObjectsFunc sortObjectsFunc()

Функция, позволяющая указать, как будут отсортированы объекты при нажатию на кнопку сортировки в редакторе объектов.

public GetObjectDictionaryFunc getObjectDictionaryFunc()

Функция, описывающая дополнительные параметры каждого объекта в списке объектов (помимо координат и типа объекта).

Категория Layout funcs

public GetLayoutFunc getLayoutFunc()

public SetLayoutFunc setLayoutFunc()

Функции, описывающие раскладку уровня (двумерный массив, содержащий индексы номеров экранов, из которых составлен уровень).

Категория Convert screen to tile funcs

public ConvertScreenTileFunc getConvertScreenTileFunc()

public ConvertScreenTileFunc getBackConvertScreenTileFunc()

Функции, описывающие формулы перевода считанного номера тайла в индекс тайла на экране и обратно.

public GetBigTileNoFromScreenFunc getBigTileNoFromScreenFunc()

public SetBigTileToScreenFunc setBigTileToScreenFunc()

Функции, описывающие способ считывания и записи номера тайла из ROM файла.

Категория Sega back funcs

public LoadSegaBackFunc loadSegaBackFunc()

public SaveSegaBackFunc saveSegaBackFunc()

Функции загрузки заднего фона (слоя B) для игр Sega Mega Drive, для плагина редактора заднего фона.

public int getSegaBackWidth()

public int getSegaBackHeight()

Размер заднего фона (слоя B), для игр Sega Mega Drive, для плагина редактора заднего фона.

Категория Render objects params

public DrawObjectFunc getDrawObjectFunc()

public DrawObjectBigFunc getDrawObjectFunc()

Функция позволяет переопределить, как именно будет отрисовываться объект в редакторе объектов.

public SelectObjectBigFunc getSelectObjectFunc()

Функция позволяет переопределить, как именно будет происходить выделение объекта (связано с тем, как объект рисуется функцией getDrawObjectFunc)

public RenderToMainScreenFunc getRenderToMainScreenFunc()

Позволяет задать функцию, которая будет добавлять отрисовку произвольных данных на главном экране редактора дополнительно к основной отрисовке блоков

Категория Editors enable params

public bool isBigBlockEditorEnabled()

public bool isBlockEditorEnabled()

public bool isEnemyEditorEnabled()

Включение/выключение модулей редактора, если для конкретной игры не исследованы форматы, или модули неактуальны.

Категория Icons hints

public string getObjTypesPicturesDir()

Позволяет задать имя директории, из которой будут браться иконки объектов для отображения в редакторе объектов

Категория Scrolls params

Отображение направлений скроллов (актуально только для игр Capcom)

public bool isShowScrollsInLayout()

Отображение направления скроллов в редакторе раскладок

public int getScrollsOffsetFromLayout()

Смещение массива скроллов относительно массива описания раскладок

public byte[] getScrollByteArray()

Считывание массива направлений скроллов

Категория Blocks pictures params

public string getBlocksFilename()

Задание имени файла картинки с изображением блоков, для варианта конфига, когда блоки загружаются из заранее подготовленных картинок

public int getPictureBlocksWidth()

Ширина одного блока на картинке в пикселах, для варианта конфига, когда блоки загружаются из заранее подготовленных картинок

TODO

Назад