0.00
Рейтинг
6.44
Сила
авоткстате, есть еще примеры релизов с таким вот издевательством над каталогом тырдоса? до сих пор ни разу не попадалось
просто интересно, чтобы ты сказал о других классических биперах, как-то: cybernoid-2, last ninja, robin of the wood, sooty and sweep, hate, renegade, soldier of fortune, flying shark… для необразованного меня в те года все движки делились на два типа: «вхам» и «не-вхам» (и этот второй еще на две разновидности: «тихие» и «громкие»)))
удивлён, что не запомнился и не впечатлил Saboteur-2
мимо-то он точно пройти не мог
нифига не понял, списки траков по ссылкам разные
и как архив без телеграма скачать?
Так с машинной точки зрения между статическими и глобальными разницы нет.
разница может быть даже между глобальными и глобальными))

С фига ли? Семь байт на _сложение двух слов из стека с записью результата в стек_. По любому смещению.
Три байта у Z80 тут даже близко нет.
а я говорил — «с верхушки» и не говорил про запись — так будет три

У Z80 есть 16-битные операции. И загрузка и сохранение и арифметика. Но вот…
но вот не всегда они оправданы и нужны
Это когда пошли процессоры заточенные под стековую адресацию.
локальные переменные — необязательно стековые, могут быть ведь и статические, где можно

На MOS6502 адресовать стек легко невозможно. На Z80 даже вроде бы при наличии адресации через IX/IY+offset такие инструкции дают приличный пенальти на работу со словами. Поэтому максимально быстрый код писался на глобальных переменных.
максимально быстрый код для восьмибиток пишется с удобным размещением данных
собс-но, в идеале что для локальных, что для глобальных адресов часто только младший байт изменяется

Семь слов если на стеке (и загрязнение трёх регистров). Против четырёх слов без загрязнения регистров у глобальных переменных.
ну вот, а у z80 — три байтика)))

вообще выигрыш у тебя больше за счёт 16-битности там, где от z80 ты тоже требуешь 16-битных операций
а на байтовых (например, при обработке текста) уже не всё так однозначно с твоим отказом от байта
Пример: берём три глобальных переменных var1, var2 и var3 и прокручиваем с ними на Си операцию:
всё же чаще в прикладных полезных программах оперируют локальными переменными
а глобальные — компиляторы стараются группировать с одной базой и адресовать потом по смещению
так вот другой пример, на локальные — сложить два числа с верхушки стека, что будет здесь? ;)
пропущен этап «беру два оставшихся канала, складываю, получаю второй моноканал на той же амиге»
1. Означает. Абсурд — это утверждать, что один моно-канал лучше двух (которые на амиге очевидно получаются установкой одинаковой громкости в каждой паре левого-правого)
2. По ссылке вижу один пост страданий одного-единственного амижника с подключением амиги к чему-то-там. И не вижу каким образом несовершенство аудиосистемы амиги означает, что она хуже еще более несовершенного саундбластера.
3. Было сказано, что 16-битный звук на пц появился намного позже, а до этого б0льшую часть данной эпохи было 8 против 8 (и даже 8 против 14) при разнице по каналам минимум вдвое.
4. Так зачем же ты её начинал?
В моно и такого нет, тем и лучше; а если нужно моно, то имеем на амиге два моно-канала при равной громкости. И какого именно «эффекта» тут еще предполагается добиться «отдельными аппаратными микшерами»??
Когда эти четыре аппаратных канала жёстко разведены направо и налево, «превосходством над SB» это не назовешь, хоть сотню программных микшируй.

почему не назовёшь? всё равно это лучше чем один неразведённый моно, как ни крути

А 16-битный звук на Амигу когда подвезли? Я просто не знаю, не амижник, но SB 16 на РС появился уже в 92 году. Так что здесь по тексту всё верно.

не «уже», а "только лишь в 1992", аж через 7 лет после первой амиги
когда, собс-но, комодор уже загибался, потому амига и осталась с 8/14

плюс вопрос качества аудиотракта — дисциплина для отдельной олимпиады
но амиге меньше смешивать бы пришлось, а до 4 каналов вообще не нужно
да и не такая уж там и разница по камням во времена саундбластеров
Большим шагом вперёд, в плане звука на PC, стало появление Sound Blaster производства Creative Labs. Он проигрывал цифровой звук (поначалу — моно 8 бит, позднее — стерео 16 бит), меньше грузил процессор и, в целом, был вполне сопоставим по качеству со звуком на Amiga, а при некоторых программных ухищрениях и превосходил — например, по числу каналов.
Это как так? Насколько помню, у SB был один аппаратный канал цифрового звука, против четырёх амижных аппаратных каналов. Ну да, можно смешивать несколько программных каналов в один сэмпл для одного аппаратного, ну так и амига могла такое. Мощности амиге не хватало на сжатый звук.
да, [pc] конечно, что-то перемкнуло меня) главное, что ты понял верно

по сдвигам надо бы всё тщательно взвесить, одинарный сдвиг для быстрой арифметики маловато

насчёт асма, на мой взгляд, задятые достаточно заметно отделяют операнды (особенно на шрифтах фиксированной ширины), ну, и если хочется, никто же после них пробелы не запрещает! и второе, нужны ли вообще квадратные скобки? префикс в большинстве случаев лаконичней:

add [ 100 ] [ 20 ] [ 30 ]
add @100 @20 @30

скобки только для сложных выражений:

add @(label1+offset2) @(label2+offset3) @($1000/2)

хотя при наличии запятых необязательны и они, префикc действует на всё выражение:

add @label1+offset2, @label2+offset3, @$1000/2


также, void как по мне длинновато, может, применять какой-то другой значок или даже «пустое выражение»?

()

ну, или просто псевдами выражать (те же cmp, test...)
просмотрел очень бегло, но сразу же несколько замечаний и предложений:

1) куча пробелов выглядит хуже пары запятых и занимает больше места в исходнике
2) интересный вопрос, как устанавливаются флаги, когда приёмник — psw (как регистр) :)
3) не хватает прокрутки ЧЕРЕЗ перенос, а также сдвигов — для ускорения арифметики и возможной битовой графики
4) хорошо бы еще один регистр с автоинкрементами — для шитого кода (мб включать автоинкременты для регистров спецфлагами?)
5) зачем тратить опкод на отдельную команду cmp? когда можно принять запись в [psw] за игнор результата, и она появляется «бесплатно», так же как test и прочие логические аналоги (плюс тогда мб даже имеет смысл сделать сохраняющие результат обычные and/or/xor не устанавливающими флаги)
А вот я категорически не согласен с местами 1 и 2. На обеих лица неузнаваемы, потерялось именно характерное. Ящитаю, первые два места за 3 и 5 — даже несмотря на то, что к 5 таки есть за что придраться (изменена форма лица), всё равно она осталась самой похожей. Насчёт третьего места возможны варианты, но тоже не 1 и 2 скорее всего.

Не голосовал, есичо — как-то пропустил, завертевшись, хотя объявление раньше видел.
кошкин ёж, не тот код запостил во втором варианте, там должно быть

	ld de,$XX20☺
	add hl,de
	ld e,h
	ld a,(de)
	ld h,a

Хотя уже неважно, ведь оказалось, можно еще быстрее. Я как-то проглядел, что там же в аккумуляторе хранится исходный младший байт адреса! В связи с этим можно переписать:

		...
		ld a,l
		jp _loop3

_xrow1		ld b,8
_xrow2		add 32
		ld l,h
		ld h,$XX
		ld h,(hl)
		jp nc,_loop2
		ld h,l

_loop1		inc h
_loop2		ld l,a
_loop3		DUP...EDUP
		djnz _loop1

		dec c
		jp p,_xrow1
		ld l,a
		exa
		ld b,a
		ld a,l
		jr nz,_xrow2

		ld sp,0
		ret

«чистый» код down_hl (с _xrow2 по _loop1 включительно) на всю высоту экрана сожрёт 1493 такта
если жаба не задушит продублировать кусок _loop2...djnz — можно сократить заменой jp на jr до 1398
это с маленькой таблицей, а без таблиц у меня теперь получилось 1556 «чистых» тактов:

		...
_xrow2		add 32
		jr c,_loop1
		ld l,a
		ld a,h
		sub b
		ld h,a
		ld a,l

_loop1		inc h
		...
не заметил штоле две точки входа?
сравнивай длину, начиная с «ld de,$»

а как любые переменные пихают куда-нибудь, между процедурами, например?
кстати, там рабочую инфу по спрайтам можно хранить — снаружи цикла половина адреса уже в d
* $40ZZ/$41ZZ