Так оператор BEEP же есть, вроде как аналог SOUND, или в MSX есть и BEEP? Может стоит в новом бейсике переделать оператор BEEP на таймер? или тоже добавить SOUND?
Так оператор BEEP же есть, вроде как аналог SOUND, или в MSX есть и BEEP? Может стоит в новом бейсике переделать оператор BEEP на таймер? или тоже добавить SOUND?
Здесь можно скачать актуальные версии Virtual Vector (VV)
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
В 2.5 BEEP играет через бипер и не позволяет точно задавать частоту, там очень грубая шкала значений.
В msx есть BEEP, но на msx1 он издает один предустановленный звук через AY, а на msx 2 можно выбрать из очень небольшого числа комбинаций. Т.е. это не музыкальный оператор и тем более не для звуковых эффектов. Он позволяет подать звуковой сигнал и потом загасить каналы AY, если до этого там что-то звучало.
Что касается SOUND на msx, то признаюсь, что забыл (посыпаю голову пеплом), там фактически SOUND и есть специализированный OUT для AY. И примеры, которые я привел ранее, можно считать именно повторением концепции использования SOUND на msx.
Если говорить про новые операторы и функции, то оглядываясь назад я бы кое-что добавил. Просто не думал, что будет написано несколько новых очень хороших программ/игр на бейсике, в которых эти операторы или функции могли бы использоваться. Как минимум надо было добавить функцию для прямого опроса клавиатуры без буферизации. Но не все так плохо, дополнительные возможности (в т.ч. и звуковые) в бейсик можно вводить и с использованием машиннокодовых подпрограмм.
Пользуясь случаем спрошу - чего сильно не хватает в бейсике (кроме скорости)?
Improver(06.06.2024), metamorpho(06.06.2024)
Сильно не хватает - нового Бейсика-компилятора
Конечно все дополнительные возможности в Бейсике можно сделать с использованием машиннокодовых подпрограмм.
Поэтому хотя сильной необходимости и нету, но было бы неплохо в состав команд существующего Бейсика внедрить что-то из следующего:
- опрос клавиатуры без буферизации [KEY]
- [SOUND] примерно как в MSX
- установка/сброс, инверсия,сдвиг, чтение битов переменной [BITS переменная,режим,(двоичное число наложения)]
- распаковщик (упаковщик вне Бейсика отдельной утилитой) [READZIP 2000:UNZIP адрес куда распаковать]
строка № 2000 "4jrfkfjwefjwofjowjfwjklf0t45kttg94jutg4w897854huh ...."
- запомнить кадр анимации с экрана [READKADR номер кадра,X,Y,размер по X, размер по Y,режим плоскостей(сколько использовать 1-4)]
- или инициализировать кадр анимации, чтобы при выводе кадр читался прямо из кода программы на Бейсике
например строка № 3000 "4194709328028935793574897893648972678934693485348 503458034...."
первые три байта строки: размер по X, размер по Y,режим плоскостей(сколько использовать 1-4)
[INITKADR номер строки, номер кадра]
- вывод покадровой анимации [ANIMATOR номер кадра,X,Y,режим вывода (с наложением и без)]
Последний раз редактировалось metamorpho; 06.06.2024 в 15:52.
Вектор-06Ц reboothttp://metamorpho-games.blogspot.com/p/blog-page.html
ivagor(06.06.2024)
Увы, это я не потяну. Самое близкое, что могу посоветовать из компиляторов (правда си), поддерживающих вектор - z88dk. Поддержка векторовского железа там очень ограниченная.
Для сильных духом еще есть микрософтовский BASCOM, но там придется всю векторовскую поддержку писать на асме самостоятельно.
От себя могу пообещать только еще чуть ускоренный интерпретатор, правда пришлось кое-чем пожертвовать.
Самое близкое, что сейчас есть - baskeysCorrected3. Встроенная в бейсик функция была бы удобнее, но функционально baskeys вполне заменяет.
Как уже упомянул в предыдущем своем посте, описанный здесь вариант использования OUT является функциональным аналогом SOUND в msx basic.
И, кстати, подобным образом можно играть и через AY, что уже будет являться полным аналогом msx.
Другое дело, что хотелось бы большей функциональности и большего удобства.
Если подгружать файл по BLOAD и потом запускать по USR, то можно использовать любой существующий для вектора распаковщик.
Для анимации можно написать небольшую процедуру на ассемблере. Само по себе это не сложно, но надо обдумать как удобнее организовать интерфейс с программой на бейсике.
metamorpho(06.06.2024)
Привет всём...
На Спектруме есть компилятор - MCoder2...
На нём даже коммерческие игры составляли
на Basic' e...
Atlantis Software, например...
И небольшой он, 5 - 7 кБ...
???
В первый раз пропустил этот пункт.
Установку/сброс, инверсию и чтение битов переменной можно делать с использованием AND, OR и NOT. Но будет не очень удобно и не быстро.
Вместо сдвигов начиная с 2.98 сделал очень быстрое умножение степеней двойки (в т.ч. дробных) на число и деление на степени двойки (включая дробные). В 2.996 с аналогичной скоростью можно и умножать на степени двойки. И отдельный оператор или функция тут не помогут, эти операции для чисел с плавающей точкой уже выполняются на максимальной скорости.
- - - Добавлено - - -
Уточню, что собственно степени любые целые (положительные и отрицательные), а результирующие числа при отрицательных степенях получаются дробные.
Например:
1) Cдвиг влево на один разряд 2*A. Через деление тоже можно, но через умножение тут быстрее.
2) Арифметический сдвиг вправо на один разряд .5*A или A/2 (2^-1=.5)
3) Сдвиг влево на 3 разряда 8*A
4) Арифметический сдвиг вправо на 4 разряда .0625*A или A/16 (2^-4=.0625; 2^4=16)
Improver(06.06.2024), KTSerg(08.06.2024), metamorpho(06.06.2024)
Сказал А про SOUND в MSX, надо и Б сказать. Можно найти примеры звуковых эффектов для AY с использованием MSX BASIC и их легко повторить на векторе (конечно при наличии AY).
Меняем
SOUND RN,DT
на
OUT21,RN:OUT20,DT
и вперед.
Из книги
Блэнд Г. Основы проограммирования на языке БЕЙСИК в стандарте MSX. Москва, "Финансы и статистика", 1989
взял пример со страницы 122.
Improver(07.06.2024), KTSerg(08.06.2024), metamorpho(08.06.2024)
Процедура двухцветной анимации. Я склонился к подходу Волкова (автора Специалиста). Трактуем всю память как графику, 256 столбцов высотой 256 точек. Вместо GET/PUT используем копирование прямоугольного фрагмента из источника в место назначения. Надеюсь что из описания и примера использования все станет понятно. Замечу, что можно как в примере рисовать исходные картинки на экране, а можно задавать их в памяти и вне экрана (через POKE или BLOAD). И конечно можно грузить в экран по BLOAD. В примере исходные картинки видны, но возможно в другой программе будет иметь смысл скрыть их палитрой в отдельной плоскости.
Рисование функции на базе статьи из журнала Байтик 91/3, стр. 4-6.
В примере использовал десятичные константы, но если хочется побыстрее и не важна совместимость с 2.5, то предпочтительнее шестнадцатеричные. Ну и в примере для наглядности константы типа 224+24, для скорости лучше использовать готовую сумму.
Можно сделать процедуру и для 4 цветов.
Для 16 или 8 цветов в бейсиках 2.9+ как мне кажется лучше использовать GET/PUT (для фрагментов с шириной кратной 8 точек).
Improver(08.06.2024), metamorpho(08.06.2024)
ivagor, заметил глюк в последних версиях бейсика (в 2.993 еще нормально), моя программка некорректно рисует овалы. Похоже в операторе CIRCLE есть ошибка.
Прикладываю саму прогу, ошибка возникает в строке 500, я прогу немного подправил чтобы сразу на кусок кода где ошибка выходила.
Здесь можно скачать актуальные версии Virtual Vector (VV)
ivagor(08.06.2024)
Вероятно дело в рисовании линий, постараюсь в понедельник разобраться.
- - - Добавлено - - -
Последняя версия, в которой правильно - 2.994, в крайнем случае на нее можно будет откатиться.
Эту тему просматривают: 2 (пользователей: 0 , гостей: 2)