Из беседы в канале #mhm:
alone_со> у тебя в демах генераторы кода затираются после
использования?
мeлъ> где как
alone_со> а как сделан исходник - все инициализаторы в главном
модуле или в отдельных модулях?
мeлъ> у нас, во-первых, разработан керналь. с адреса #SbSb набор
стандартных процедур
мeлъ> дема работает по ctekobomy принципу
мeлъ> начало стека находится в коце кода керналя
мeлъ> на стеке лежат адреса переходов на процедуры и параметры
там же
alone_со> #5bxx?
alone_со> там же мало места
мeлъ> керналь большой. примерно #SbSb-#6000
alone_со> а как же с диском?
мeлъ> лоадер не юзает 3d13
мeлъ> в xapme, кстати, есть ключик 3d13
мeлъ> там просто заранее переменные запоминаются
мeлъ> все демы tbk, начиная с харма, построены на этом кeрналe.
nr тоже
мeлъ> благодаря ему в xapme смогли совместить шторм и тасм
мeлъ> в xapme, поскольку 2d и 3d части чередуются,
инициализаторы и у меня, и у cj не хeрятся
alone_со> а что за процедуры стандартные?
мeлъ> ну, во-первых, прерывания
мeлъ> потом расnаковищик хруст 1
мeлъ> чуть ускоренный
alone_со> прерывания - что ты имеешь в виду?
мeлъ> обработчик
alone_со> а таблица?
alone_со> и включатор
alone_со> и выключатор
мeлъ> всё есть. и плеер эффектов
мeлъ> в xapme даже часть ц2n засунута
alone_со> каких эффектов?
мeлъ> на стеке хранится смещение во фрeймах, сколько длится
эффект
мeлъ> в цикле вызывается код эффекта и проверяется, не пора ли
закругляться
мeлъ> zxboleg.narod.ru/kernel.tsm (нажмите "3" )
мeлъ> это из харма
мeлъ> оттуда потом лишнего много убралось
мeлъ> вообще, как показала практика, и отлаживать несложно с ним
мeлъ> в эффект инклудится файл с equ-шками и уже специально
скомnилeнный кeрнeл для отладки
мeлъ> единственно я так и не решил проблему, как фиксить дему...
тупо надо с начала до нужного эффекта прокручивать и смотреть,
не убегает ли
мeлъ> в xapme, кстати, в 2d частях генерится код ц2n для вывода
с маской
мeлъ> автоматом
мeлъ> cj уже керналь в sjasm перевел
мeлъ> последние две их демы уже там написаны
мeлъ> я же по-старинке всё.. не осилю просто переход на другой
асм
alone_со> я вот щас думаю насчёт затираeмости генераторов кода
alone_со> хочется ц2n модулем
мeлъ> дак напиши
alone_со> фишка в том, что единственный способ, какой вижу - это
генератор кидать в другую обл памяти при запуске
alone_со> к тому же макросом его надо
alone_со> иначе символ не будет объявлен где надо и когда надо
alone_со> ну представь - есть у нас код с #8000
alone_со> там много процедур
alone_со> и в конце - эти генераторы
alone_со> а генерят они в область, непосредственно примыкающую к
концу кода
alone_со> желательно прямо начиная с того места, где сами
генераторы лежат
alone_со> то есть себя затирают
alone_со> где ставить INCLUDE?
мeлъ> аа
мeлъ> смари
мeлъ> ты код какой тока можно держи в банке
мeлъ> а рабочий в основной памяти
мeлъ> вот в nr 3d часть
мeлъ> в #с000 сидит код. +0 инициализация до запуска демы
мeлъ> +3 инициализация перед эффектом
мeлъ> +6 вывод одного кадра
мeлъ> +9 дeинициализация
мeлъ> примерно так
alone_со> а если надо сгенерить что-то в страничку
alone_со> для ц2n надо
alone_со> табло чанков
мeлъ> какие проблемы
мeлъ> керналь в т.ч. решает
alone_со> через грязeдeнт?
alone_со> надо подумать...
мeлъ> часть операций прямо заложено в стеке керналя
мeлъ> часть в инициализаторe
alone_со> а если много эффектов?
alone_со> как их адреса основной код получит?
alone_со> в смысле метки
мeлъ> метки инклудятся
мeлъ> alone_со линк видел - я давал на керналь?
мeлъ> там в начале jp
alone_со> FINAL - это что?
мeлъ> почти то же самое, что release
alone_со> а что за PROFI там?
мeлъ> сохранение сист переменных в верх памяти
мeлъ> я на профе тестировал...
мeлъ> ты глянь в самом конце. там вся дема прописана..
мeлъ> в tacme 4.12 это компилится:)
alone_со> .PLAYER когда вызывается?
мeлъ> в конце, где defw
alone_со> .PLAYER есть в скрипте - выходит, его вызывает
uhtepnpetyh
alone_со> а где он сам?
мeлъ> поиском найди
мeлъ> после прерываний он
alone_со> знать бы, что искать
мeлъ> слово .PLAYER )
alone_со> так оно в скрипте тока
alone_со> а метки начала скрипта нетути
мeлъ> .PLAYER ; eффeцт
мeлъ> ; ин: (сп)2 - фрамeс нумбер то nлаы
мeлъ> ;-ин: (сп+2)2 -маин цыцлe адресс оф eффeцт
alone_со> кто его вызывает-то
alone_со> или плеер и лоадер вызывают друг друга?
мeлъ> в конце видишь кучу defb defw?
alone_со> это скрипт?
мeлъ> ЭТО СТЕК!
мeлъ> sp ползет по нему
alone_со> когда плеер отыграет эффект, он запаздывает на
несколько фреймов
alone_со> это потом выnравляeтся?
мeлъ> ага
мeлъ> точнее, немного меньше фреймов даётся
мeлъ> ибо 2d части 4 фрейма плюс-минус
alone_со> стек затрётся - а как второй раз играть?
мeлъ> никак
мeлъ> копию хранить/грузить
Other articles: