Оберон-клуб «ВЄДАsoft» https://zx.oberon.org/forum/ |
|
Как подключить ресурсы (спрайты, шрифты, музыку)? https://zx.oberon.org/forum/viewtopic.php?f=10&t=208 |
Страница 1 из 1 |
Автор: | Zorko [ 27 июн 2014, 22:52 ] |
Заголовок сообщения: | Как подключить ресурсы (спрайты, шрифты, музыку)? |
Reobne писал(а): Изучаю ассемблер, и что-то не вижу, как вставить бинарник. Нашёл только директиву Вставить бинарные данные в формируемый бинарник наверное нельзя ни из ассемблера, ни из Си. Не нашёл ничего подобного директиве .incbininclude /string/ Которая включает ассемблерный файл. Это получается, что ресурсный файл со спрайтами придётся готовить в виде ассемблерных текстов с кучей .db .dw ![]() И как передать имя файла в ассемлер из оберона? Хотя есть вариант завести фиктивную переменную, а потом её имя в предпроцессоре Си использовать как строку. Вопрос 2. В том ли направлении я копаю по подключению ресурсов? Предлагаю подготавливать ресусры двумя способами. Способ 1: Оберон. Берём двоичный файл и перегоняем его в шестнадцатеричный подходящим способом. Для подобных целей я специально включил в XDev утилиту Bin/bin2c.exe, вызывается она так: usage: BIN2C <binfile> <cfile> <varname> Можно ещё проще: BIN2C binfile Она генерирует файл такого вида: Код: "C" unsigned char varname[2092] = { ![]() Код: "C" unsigned char varname[2092] = { Далее можно для удобства разбить этот массив данных на строки и подключить к Оберону с помощью конструкций из модуля Basic DEFDATA/DEFDATAREL и DATA*. Пример есть в DemoSpr.Mod: Код: "OBERON"
Вот. Изящнее пока не придумал. ![]() Способ 2: Си. Массив данных подготавливаем также с помощью утилиты bin2c. Получившийся файл отредактируем и будем использовать как реализацию Оберон-интерфейса. Пример есть в Lib/LaserSprite2B и в Lib/GrFonts: Код: "OBERON"
Код: "C" /* GrFonts.h */ Код: "C" /* GrFonts.c */ Код: "WINBATCH" @CALL ..\Bin\build-xdev.bat GrFonts Reobne писал(а): Так-же просмотрел ZXDev\Docu\sdccman.pdf пункт 3.14.2 и далее, там вроде как написано как стыковать сишные данные с ассемблерными вставками, но не впитал смысл с ходу. Много слов с двумя подчёркиваниями впереди, всё по неруски, и ассемблер для примера приводится не Z80, не так-то просто усвоить. Глаза боятся, а руки делают, разве нет? ![]() ![]() |
Автор: | Saferoll [ 30 ноя 2014, 12:35 ] |
Заголовок сообщения: | Re: Как подключить ресурсы (спрайты, шрифты, музыку)? |
А теперь для подключения ресурсов можно использовать константные массивы. |
Автор: | Zorko [ 27 июл 2015, 08:23 ] |
Заголовок сообщения: | Re: Как подключить ресурсы (спрайты, шрифты, музыку)? |
Ещё способ подключать ресурсы, опробован в ZX-клипе: Clip40Rsrc.c Код: "C" const unsigned char Rose2 [3079] = { ... }; Код: "OBERON"
2Saferoll: Олежек, покуда не сделаем экспорт — констатнтым массивам будет чего-то недоставать. Хотя вот в данном случае ими можно было бы обойтись (без уровня Си). |
Автор: | Yprit [ 13 авг 2019, 20:55 ] |
Заголовок сообщения: | Немного о создании и кодировании изображений |
Решил написать небольшую заметку-руководство в помощь тем, кто собирается создавать свои изображения для программ. Этот метод лучше всего подходит, когда нужно закодировать большие изображения, для меньших может быть удобнее использовать ручное кодирование UDG. Нам понадобятся: 1) Графический кросс-редактор (я пользуюсь ZX-Paintbrush, но, наверное, подойдут и другие); 2) утилита BinCo или аналогичная; 1. Создаем либо открываем изображение, содержащие нужные спрайты; 2. Выбираем выделение областями 8*8, т.е. по знакоместам; ![]() 3. Выделяем прямоугольную область так, чтобы пунктирная линия выделения находилась внутри нужных знакомест; ![]() 4. Экспортируем выделение (File —> Export file/selection as..., тип файла выбираем Binary files (*.bin)) в папку, где находится binco.exe. В окне, появившемся при этом, обязательно выбираем Block based output и, если не нужны атрибуты, убираем флажок в пункте "Include attributes in output"; если нужны, то ставим флажок в пункте "First all pixels, followed by all attributes"; ![]() ![]() 5. Запускаем в этой папке командную строку (для Win10: в адресной строке ввести "CMD", Enter); в ней вводим через пробел: "binco.exe (исходный файл с расширением, в этом примере rectangle.bin) (название итогового файла с расширением .cpp, rectangle.cpp)". ![]() 6. Открываем cpp-файл в текстовом редакторе. Нам нужны коды вида 0xNN. Копируем и вставляем их в текст программы, заменяя, если надо, "0x" на "0" и "," на "X,". ![]() |
Страница 1 из 1 | Часовой пояс: UTC + 2 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |