С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Принял, смотрю.
Музыкальный файл ты дизассемблировал полностью, чтобы без запарки иметь его в исходном файле.
Это рациональная идея. Только в следующий раз, когда будешь дизассемблировать, поставь галочку "в виде DEFB" (в EmulZWin "As Data Block"). Так будет надёжнее. Ибо кто его знает, вдруг попадётся код, синонимичный другому коду, и после туда-сюда-ассемблера, код изменится. Или недокументированная команда какая нибудь попадётся, которую дизассемблер не прожуёт...
Оказывается я ошибся, когда решил, что поставив метку LastAddr в конец кода, мы получим действительно конец кода. Дело в том что LikePascal после этой метки запишет свои внутренние подпрограммы. Так что метка LastAddr не будет нам показывать место, за которым свободная память. Сейчас я собираюсь переписать свой Im2Init, чтобы таблица прерываний лежала внутри тела программы.
И ты зря закомментировал asm(MUSINIT);. Он нужен конечно! Andrew771 тебе не глядя посоветовал, у него опыт работы с другим музыкальным редактором, так что в этом вопросе не полагайся на него.
- - - Добавлено - - -
Andrew771, В будущих версиях можно было-бы предусмотреть особую метку в конце программы, чтобы после неё выделять свободную память.
Ваще-та модуль так и сделан в виде DEFB
Асмом там сделан лишь плеер. Они же в разных адресах раскиданы.
- - - Добавлено - - -
Код всё больше разрастается, всё сложнее навигация в нём. Вспоминаю времена, когда фигачил свои ранние проекты в один main.cpp, при этом не юзая разделения на классы, после чего благополучно забрасывал проект, так как в нём чёрт ногу сломит. Щас уже исправился чутка. Стараюсь хоть как-то структурировать, в меру своих скудных возможностей.
Ещё и notepad++ с подсветкой синтаксиса лажает, когда в Паскале вдруг видит записи вроде ASM(Label);. Это ему ломает моск.
Сложно выискивать наименование той или иной процедуры (хорошо, когда помнишь название и через ctrl+f), обычно в IDE можно переключаться в выпадающем списке. А тут только ctrl+f выручает.
Наверное надо бы кейворды поиска прописать в самом начале файла.
Я уже писал Andrew771, что он в наглую использовал ранее зарезервированное ключевое слово паскаля. Надеюсь в следующей версии он исправит название, например на CallAsm. Тогда подсветка синтаксиса будет правильной.
Написал я новую Im2INIT, но хотел проверить и не смог. Музыка играет, IM 2 включён, а игра не фурычит. Подозреваю что дело в галочках. Опять-же Andrew771-ю я уже писал. Если-бы специфичные ключи проекта были-бы в тексте PRG, ты бы их мне не забыл прислать.
Ладно, пока что публикую IM2INIT без проверки.
Если так, то я ляпнул не изучивши.Код:IM2INIT ld a,Im2TabHi ld i,a im 2 ei ret Im2TabHi EQU ($+255)/256 Im2Tab EQU Im2TabHi*256 defs 257+(Im2Tab-$),Im2GoByte Im2GoByte EQU ($+256)/257 Im2Go EQU Im2GoByte*257 defs Im2Go-$ push af push hl push de push bc ex af,af' exx push af push hl push de push bc push ix push iy call MUSPLAY ld hl,FrameCounter inc (hl) pop iy pop ix pop bc pop de pop hl pop af ex af,af' exx pop bc pop de pop hl pop af ei ret
- - - Добавлено - - -
Написал BAT-ник с ключами -a -b -c -d -e, лучше стало. Но нажав "A", спрайт Алисы уехал влево. Думаю таково текущее состояние проекта.
Andrew771, Спасибо за исходники LikePascal!!! Перекомпилировал с небольшими изменениями, ибо он не мог найти файл "libasm.lib"
Добавил путь ExtractFilePath(Application.ExeName)+'libasm.lib', чтобы искал в той-же папке, что и exe-шник.
Да ещё-же, пока в отладку не вошёл, не понимал какой файл он не может найти.
Над обработкой исключений надо-бы тоже поработать.
Да, всё верно. Управление ещё в процессе. Но я её уже научил вправо перемещаться. Только вот диагонали ещё не работают.
Надо городить дополнительные IF-ы. А ведь это нет ещё IF-ов на определение коллизии с объектами, как и на их генерацию.
Вот почему мне и нужен был ультра-быстрый скролл. Навесив игровую логику он будет уже не таким быстрым.
Эту тему просматривают: 2 (пользователей: 0 , гостей: 2)