PDA

Просмотр полной версии : Мегадемка в 256 байт



msm
29.09.2015, 13:44
Megapole by RSI (MS-Dos, 2015)

http://www.youtube.com

Исходники:
http://www.pouet.net/prod_nfo.php?which=66372

Интересно, если портировать на спектрум, сколько займет байт :).

jerri
29.09.2015, 14:00
пофиг сколько это займет.
как это рендерится?

http://www.pouet.net/img_ascii.php?nfo=66372&font=0

---------- Post added at 15:00 ---------- Previous post was at 14:52 ----------

и оттуда же только первое место

http://www.youtube.com

shurik-ua
29.09.2015, 23:43
Интересно, если портировать на спектрум
периписать в кодах z80 дело нехитрое, но в каментах пишут что тормозить начинает уже если запустить в VirtualBox.

CodeMaster
30.09.2015, 05:58
периписать в кодах z80 дело нехитрое, но в каментах пишут что тормозить начинает уже если запустить в VirtualBox.

Ну сейчас есть софт-ядра Z80 на сотню мегагеерц. Мне вот другое интересно, дема заявлена как "MS-DOS", в ней есть какие-то вызовы DOS или нет? И, вообще, для какого проца она написана для любого x86 на котором работает DOS (какая?) начиная с i8086?

Tronix
30.09.2015, 08:03
Мне вот другое интересно, дема заявлена как "MS-DOS", в ней есть какие-то вызовы DOS или нет? И, вообще, для какого проца она написана для любого x86 на котором работает DOS (какая?) начиная с i8086?

Используются вызовы BIOS int 10h - переключиться в граф режим 320x200x256 цветов и прерывание DOS int 21h - вывести строку (megapole). А так же используется адресация через FS-регистр, который появился только начиная с 486+ процов. То есть на XT, 286 и 386 запуститься не должно. Хотя можно переписать и на обычную DS-адресацию, только код разрастется на 6-8 байт, и уже будет не 256 байт.

jerri
30.09.2015, 11:15
Используются вызовы BIOS int 10h - переключиться в граф режим 320x200x256 цветов и прерывание DOS int 21h - вывести строку (megapole). А так же используется адресация через FS-регистр, который появился только начиная с 486+ процов. То есть на XT, 286 и 386 запуститься не должно. Хотя можно переписать и на обычную DS-адресацию, только код разрастется на 6-8 байт, и уже будет не 256 байт.

ты главное скажи.
как это работает?
на спек сделать можно?

фиг с ней с реализацией в 256 байт
на спеке вообще можно сделать в разрешении 64х24 главное чтобы вообще работало.

CodeMaster
30.09.2015, 13:53
можно переписать и на обычную DS-адресацию, только код разрастется на 6-8 байт, и уже будет не 256 байт.

Да это фигня, вопрос как она (с какой скоростью) будет работать на XT

char
30.09.2015, 22:04
это называется не мегадемка, а крутой воксельный эффект.
звука нет, последовательности частей нет, развития действия нет (как, капример, в работе, занявшей там 1 место)
эффект, да :)

shurik-ua
30.09.2015, 22:21
звука нет, последовательности частей нет, развития действия нет
256 байт, Карл )

jerri
02.10.2015, 08:47
так на спек можно перенести или нельзя?
а если можно то как оно работает?

shurik-ua
02.10.2015, 13:51
так на спек можно перенести или нельзя?
в спеке нет видеорежима "байт на точку" - поэтому скорее нет чем да.

jerri
02.10.2015, 14:06
shurik-ua, а там это обязательно?
а если разрешение использовать 64*24?
его хватит?

shurik-ua
02.10.2015, 15:33
дело не в разрешении - а в том как отобразить в одной точке 8 градаций яркости

Titus
02.10.2015, 16:00
shurik-ua, а там это обязательно?
а если разрешение использовать 64*24?
его хватит?

Имхо, нет никакого смысла портировать на спек этот эффект, ибо то, что хорошо затачивалось под специфический процессор, системные вызовы и размер, на спеке при повторении алгоритма "в лоб" будет тормозить хуже бейсика. А крупночанкового тормознутого (но гораздо более быстрого, чем получится здесь) 3д на спеке хоть отбавляй.

jerri
02.10.2015, 16:50
Имхо, нет никакого смысла портировать на спек этот эффект, ибо то, что хорошо затачивалось под специфический процессор, системные вызовы и размер, на спеке при повторении алгоритма "в лоб" будет тормозить хуже бейсика. А крупночанкового тормознутого (но гораздо более быстрого, чем получится здесь) 3д на спеке хоть отбавляй.

да там тема в том что я например не вижу тут ни объектов, ни текстур
а в демке вижу интересные 3д эффекты.
как они это делают?

Titus
02.10.2015, 17:02
да там тема в том что я например не вижу тут ни объектов, ни текстур
а в демке вижу интересные 3д эффекты.
как они это делают?

Ничего интересного особо, прямогуольники всякие и зум)
Я не знаю, как делают, я пц-шный асм особо не знаю, и не программлю на нем. А тут надо не просто его знать, а знать в нюансах, скорее всего, т.к. выжимают все что могут, дабы сэкономить место.

ivagor
02.10.2015, 20:50
Побаловался с исходником. Заменил cmovnz (теоретически теперь должно работать начиная с 386ых, только интересно с какой скоростью). Можно задать "начало скрипта" (mov bp,число от 0 до 255). Добавил выход по нажатию клавиши, раз уж про 256 байт речь не идет. Из любопытства заменил самомодифицирующийся фрагмент на "правильный". Автор крут

ivagor
02.10.2015, 23:08
Увлекся процессом разусовершенствования. Заменил некоторые специфичные x86 команды (stosb, aam, aad) на
более-менее общечеловеческие аналоги. Топорно, но убрал использование fs - в результате теоретически стало работоспособно на <386, но на практике теперь подтормаживает на i5 :)

Ewgeny7
03.10.2015, 00:13
ivagor, на x64 можно скомпилировать? :)

rasmer
03.10.2015, 01:02
но никто так и не ответил на вопрос "а каким болтом оно всё так красявишно `рендерится` в оченно мало байтов" :) .

shurik-ua
03.10.2015, 01:03
но никто так и не ответил на вопрос "а каким болтом оно всё так красявишно `рендерится`
пока неизвестно - но чувствую надо сделать на z80 или вообще на vhdl - тогда станет понятно )

Убран эффект "старой плёнки" - в комментах он так называется )

rasmer
03.10.2015, 01:32
Убран эффект "старой плёнки" - в комментах он так называется )Под DosBox у меня - самое известное произведение какогото Казимира...

CodeMaster
03.10.2015, 07:57
теоретически стало работоспособно на <386, но на практике теперь подтормаживает на i5

Вообщем, как и говорил Titus, в итоге будет тормозить хуже Бейсика. По аналогии переписав какую-то для Спека можно получить жуткие тормоза на более быстрой машине. Т.е. это всё в итоге сугубо специфично.

ivagor
03.10.2015, 11:50
на x64 можно скомпилировать?
Если речь о запуске в современных ОС, то тут писали, что в VirtualBoxe работает. У меня тоже так работает, но Virtual Box с winxp32 у меня установлен под winxp32 (так надо :) ), что мало кому интересно. Поэтому я еще попробовал dos box под win7x64 - мои rip-offы работают (в отличие от оригинала), но очень-очень медленно (можно видеть, как рисуются строки)
А если ты о переписывании под win и избавлении от наследия dos - несомненно можно, осталось только найти энтузиаста, который это сделает. Ну и это будет уже совсем не 256 байт.

UPD: Попробовал еще VirtualBox с winxp32 под 7x64 - работает нормально

ivagor
03.10.2015, 14:56
Думаю, что те, кому интересно, разобрались, но озвучу, что bp отвечает за ориентацию камеры. Можно ее зафиксировать, если закомментить add bp,[toadd] (я про "свои" версии). Только стоит изменить mov bp,0 например на 128, а то будет смотреть в правый нижний угол.
Если закомментить первый add bl,[si] то не будет "продвижения вперед".

---------- Post added at 17:56 ---------- Previous post was at 17:05 ----------

Рискну написать, что содержимое картинки фактически определяется координатами x y z. Направление показа камеры очевидно как изменяется. Движение вперед (изменение z) и движение "космических кораблей" задается изменением времени.

ivagor
15.10.2015, 11:30
Почистил от мусора версию без fs (старый вариант удалил) - стала меньше на 25 байт и снова не торомозит.
В dosbox если задать core=dynamic (и, конечно, cycles=max) то уже более-менее работает в режиме слайдшоу

shurik-ua
15.10.2015, 11:53
в каментах RTC - это что )

troosh
15.10.2015, 12:20
в каментах RTC - это что )

Если это вопрос, то это часы реального времени. По адресу 0x46c MSDOS счетчик времи накручивает по прерываниям.

ivagor
15.10.2015, 12:26
То, что автор демки обозвал RTC, относится к таймеру, все же в PC и настоящий RTC есть

shurik-ua
15.10.2015, 13:09
а какая частота этого таймера ?

ivagor
15.10.2015, 13:22
По умолчанию частота прерываний от таймера примерно 18,2 Гц (в принципе можно перепрограммировать)

ALKO
16.10.2015, 09:31
ни в дос-боксе, ни на реальной тачке с досом - не стартанула. (Megapole by RSI (MS-Dos, 2015))

ivagor
16.10.2015, 12:27
Оригинал в dosbox не работает (про это я уже писал). Реал для оригинальной версии нужен >586