А это уже есть. Функция ay_rendersongbuffer как раз заполняет пользовательский буфер. Осталось только сделать возможность инициализации без встроенных плееров, чтобы не было избыточности. Ну и в этом случае достаточно сделать сборку без встроенных плееров. Со временем так и сделаю, т.к. самому эта идея больше нравится, чем драйверы внутри библиотеки, которые фиг его знает как будут работать с конкретной программой.
Сначала напишу, зачем я все перевел в cpp - я все делаю в линуксе, и отладку в том числе, поэтому перед вызовом ./configure устанавливаю переменную окружения CXXFLAGS в "-O0 -g3". А чтобы и *.c файлы собирались с этими же флагами, нужно еще установить и CFLAGS, а я это всегда забываю.
Насчет копии - сначала я сделал линковку со внешней либой по тем же соображениям простоты обновлений и баг-репортов, пока дело не коснулось symbian-версии.. под симбу z80ex просто не собралась, т.к. в заголовочных файлах не были определены базовые типы для этой платформы. Поэтому пришлось изменить чуть-чуть исходники (файл z80ex_common.h) и включить код библиотеки в проект. Я как раз на этом этапе подумал написать тебе об этом, т.к. изменять пришлось совсем немного. Но.. Когда я начал собирать программу под платформу Symbian 8, начался полный бедлам. Как оказалось, процессоры arm < 9 серии (вроде как), не поддерживают изменяемые глобальные переменные (сначала поругался линковщик, а потом нашлось поджтвержнение этому на сайте компании ARM). В z80ex этих переменных и структур оказалось достаточно много, поэтому пришлось переписать некоторые участки библиотеки, загнав все глобальные таблицы в структуру _z80_cpu_context, а от глобальных переменных, которые были объявлены без const просто избавиться, благо такая переменная была всего одна (вроде как). Поэтому теперь будет достаточно проблематично сделать все правильно, если только boo_boo что-нибудь не придумает. В принципе, та реализация, что находится сейчас в ayfly имеет право на жизнь, но об этом лучше судить автору
. Да, кстати, я еще модифицировал все макросы таймингов, типа T_WAITUNTIL таким образом, чтобы они не выполняли никаких действий и не загружали процессор, и после этого плеер стал работать чуть быстрее
. Если бы все эти изменения (ну, допустим, кроме последнего) были бы сделаны в официальной версии, я бы отказался от локальной копии и сделал бы ссылку на хранилище z80ex с помощью svn extern, тогда при обновлении в кодах была бы самая последняя версия
![]()





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