• avatar Shiru
  • 1
Спасибо. Посмотрел, с наскока добавить не получится, нужно много переделывать (убирать паттерны, условную компиляцию, переформатировать многострочный код), так что добавлю позже.
Ммм, я не подумал про AY. Хорошо, я прикину как сделать другой вариант теста…
  • avatar Shiru
  • 1
Вариант с halt не будет работать в 1tracker, так как в AY-файлах не гарантируется ни работающий обработчик прерываний, ни наличие ПЗУ вообще, и движок сразу же виснет. Думаю, лучше просто убрать опрос Kempston, так как желания тратить время на поиск обходных путей нет никакого.
Вот ссылка на последнюю версию Octode XL: introspec.retroscene.org/beeper/octode_xl_v1.zip
Исходник модифицированного конвертора xm2octodexl.cpp лежит там в папке «other».
Тест кемпстона в старом октоде сделан вот так:

	in a,(#1f)
	and #1f
	ld a,OP_NOP
	jr nz,$+4
	ld a,OP_ORC
	ld (soundLoop.checkKempston),a

а собственно проверка — такая:

.checkKey
	in a,(#1f)
	and #1f
	ld c,a
	in a,(#fe)
	cpl
.checkKempston=$
	or c
	and #1f
	jp z,readNotes

Главная проблема с этим такая: на машине без кемпстона in a,(#1f): and #1f, как правило, не ноль, так что 5 из 8 линий клавиатуры исключаются из опроса. Что особенно противно, in a,(#1f) может ещё и читать атрибуты/пикселы с плавующей шины и разрешать опрос нужной клавиши, так что опрос часто всё ещё работает, но очень плохо предсказуемо. Наконец, на машине с плавающей шиной in a,(#1f): and #1f может запросто выдать Z (допустим на чистом экране залитом чёрным по чёрному с шины читается довольно много нулей). При таком неудачливом раскладе движок вообще будет считать что клавиатура нажата почти всё время (т.е. всё время, когда in a,(#1f) сбрасывает нужные нам биты).

В Phaser2 основная проблема устранена ( in a,(#1f): ld c,a: xor a ), но тест кемпстона всё ещё не вполне надёжен. В Octode XL я сделал вот так:

	ei
	halt			; must ensure that test is done during the border
	in a,(#1f)
	inc a
	jr nz,haveKempston
	ld (maskKempston),a
haveKempston:

и собственно опрос

	in a,(#1f)
	and #1f
maskKempston: EQU $-1
	ld c,a
	in a,(#fe)
	cpl
	or c
	and #1f

Проблем вроде пока не видел. Ещё в QChan была какая-то похожая проблема (столкнулся, когда собирал Dat Fuzz вместе с utz), но, емнип, там вообще опрос был немного редковат, так что там я просто развёл опрос клавиатуры и джойстика.

Я был бы очень рад если бы Octode XL появился в 1tracker. К сожалению, я слегка поправил там формат музыки (основное соображение было ничтожно ускорить переход от строки к строке и добавить ещё одну низкую ноту), так что совсем прямолинейная замена не получится. Но модификации очень простые, я даже сознательно не стал менять расчёт высоты нот, т.к. это убило бы старые октодовские треки, настроенные детьюном.
  • avatar Shiru
  • 4
Для тех, кто заинтересован разобраться во внутреннем устройстве биперных движков, utz недавно написал весьма подробный гайд на английском языке: randomflux.info/1bit/viewtopic.php?id=21
  • avatar Shiru
  • 2
Могу поправить, но с прямым указанием где и что изменить будет гораздо быстрее.

К слову, может быть заодно добавить и Octode XL?
  • avatar Nuts_
  • 0
а сколько видео здесь еще не выложено…
DenisGrachev , офигенная дема!
Жаль, в этом году выбраться не получилось, но по видео и продам — пати получилась замечательной, хоть уже не просто попойка :)
Ведущему — +100 в карму! :D
Быстрый вопрос: а почему было принято решение так жёстко связаться с конкретным движком? из-за числа каналов? Мне просто кажется, что некий промежуточный формат мог бы быть полезен, чтобы добавить возможность подбора ещё и движка, который бы давал наиболее подходящий звук.
  • avatar sq
  • 3
Я как заворожённый наблюдаю за каждой новостью о биперной музыке и как зачарованный слушаю каждый новый биперный трек. Для меня это — непостижимая магия. Всем, что связано со спектрумовским бипером, я восхищаюсь даже больше, чем некоторым кододрочерством в области эффектов.
Но я совершенно в этом не разбираюсь. Для меня загадка, как вы всё это делаете.
Поэтому просто спасибо.
Очень хорошая новость — я давно выцеливался сделать одну маленькую вещь в Phaser, но мне не хватало второго голоса в Phaser1, чтобы взять аккорд, и не хватало яиц, чтобы осилить Phaser2 в голом виде.

Вопрос по касательной — раз обновилась версия 1tracker, нет ли желания обновить движки немного? Дело в том, что тесты клавиатуры в нескольких движках (Phaser2, Octode) могут работать ненадёжно на машинах с плавающей шиной. Я могу сделать поправки в коде, там всё довольно тривиально в общем, просто чтобы потом не фиксить индивидуальные треки.
  • avatar tsl
  • 2
«Veel on aega päästke noored hinged...»
Никакой связи, просто слово вспомнилось. =)
  • avatar Nuts_
  • 1
Но не в такой же степени :)
Я бы скорее это назвал сатирой. Уподобление в таких случаях полюбому хоть какое-то должно быть.
  • avatar Nuts_
  • 2
ну если совсем точно то это не пародия, а уподобление плохим блогерам в еще более худшей форме
  • avatar Nuts_
  • 1
посмотрел все видео с пати (с другого источника :)

Мне особенно прайзгивинг понравился с получением дипломов «от первого лица»
и отличный ведущий

если честно то родилось куча стебов но они посвящены не самой пати а скорее некоторым критикам разных пати
Я сначала думал, что подойдёт. Но да, щас я понял, что тут больше просто о плохих блоггерах, чем о плохих блоггерах, обозревающих плохие игры.
Плюсую. brightentayle , извини, но это не совсем подходит для общего блога. Хотя, в принципе, тема интересная :)
  • avatar Shiru
  • 3
Мне кажется, это больше подходит для личного блога. Причём тут собственно игры?