crypt of decay - сложный вопрос залу [entries|archive|friends|userinfo]
ketmar

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

сложный вопрос залу [Sep. 20th, 2023|11:39 pm]
Previous Entry Add to Memories Tell A Friend Next Entry
кто-нибудь встречал эмулятор 286+ega/vga, который более-менее точно эмулирует растактовку, задержки вывода в видеопорты и медленную видеопамять? чтобы не «ну, примерно прикинули кое-как», а правильно циклы и тормоза считало.

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

dosbox нит, он в такое не умеет. и даже dosbox-x не умеет (или я так и не понял, как его правильно приготовить). а сам я пизданусь искать инфу по растактовкам и тормозам, чтобы свой эмуль запилить.

интересно попробовать несколько разных схем и посмотреть, что в итоге было бы быстрее. включая всякие извращения с генерацией шитого кода на лету.
Linkmeow!

Comments:
From:(Anonymous)
Date:September 21st, 2023 - 06:13 am
(Link)
DOSBox никогда и не претендовал на точность, там всё принесено в жертву скорости.
PCem смотрел? А больше и нет ничего.
[User Picture]
From:[info]ketmar
Date:September 21st, 2023 - 06:53 am
(Link)
dosbox-x пилят для более точной эмуляции как раз. но там тоже нужные тайминги из серии «прикинули на глаз кое-как». по крайней мере я так понял из документации, там опций, блядь, больше, чем нейронов во всём моём доме.

>PCem смотрел?
тоже не. беда в том, что замедление видеопамяти и портов видеоадаптера никто толком не эмулит. во-первых, это сложно (мы вплотную подходим к точной эмуляции таймингов вообще всей шины), а во-вторых, все авторы эмуляторов рассматривали это скорее как досадный недостаток, который в принципе не нужно эмулить: софт только лучше работать станет, даже подвязаный на тайминги. и они, в принципе, правы. но иногда хочется.
From:(Anonymous)
Date:September 21st, 2023 - 07:35 am
(Link)
Если ты не собираешься проделывать какие-то виртуозные трюки, а просто хочешь сделать платформер по типу апогеевских, вся эта точность и тайминги тебе не понадобятся. Как человек, кое-что делавший под 286/EGA, скажу так: основным ограничителем будет медленный процессор (даже на 16 МГц). В шину и видеопамять мы начинаем упираться, начиная с 386.
[User Picture]
From:[info]ketmar
Date:September 21st, 2023 - 10:54 am
(Link)
как раз трюки и хочу. я тоже пилил в своё время, и упирался в том числе в медленную видеопамять. поэтому мне как раз интересно померять выигрыши, которые я смогу получить от разных хитрых методов апдейта экрана.

с процессором как раз проблем нет, его с головой хватит. не проблема въебать кучу ручного асма: я на спектруме платформеры делал, хуле, у меня мешок трюков в запасе.

а вот вывод на экран — это как раз жопа. в отличие от спектрума, тут никакие трюки с блитом через стек, раскруткой кода и прочего особо не помогают, потому что тормозит сам видеоадаптер, зараза.
[User Picture]
From:[info]ketmar
Date:September 21st, 2023 - 11:03 am
(Link)
ну и да: щёлканье портами видеоадаптера тоже МЕДЛЕННА. во первых, сам по себе port i/o залочен на частоту шины, а не CPU (так что активная манипуляция с регистрами EGA/VGA адово тормозит, например). а во-вторых, там есть свои квирки: насколько помню, железо может тоже тормознуть, и или не обработать, если его быстро пинать, или неверные данные отдать.
[User Picture]
From:[info]dece
Date:September 21st, 2023 - 08:47 am
(Link)
На точности специализировался bochs, вроде, но 1) это было 20 лет назад 2) они, кажется, пилили только от 386-го.
From:(Anonymous)
Date:September 21st, 2023 - 09:05 am
(Link)
Bochs не cycle-exactly даже что касается процессора, а видеокарта там эмулируется вообще по остаточному принципу. Цели эмулировать железо там нет и не было.
[User Picture]
From:[info]ketmar
Date:September 21st, 2023 - 11:06 am
(Link)
им важна была точность эмуляции эффектов команд, а не времянка. чутка другая область.
[User Picture]
From:[info]mcm
Date:September 21st, 2023 - 09:14 am
(Link)
вот здесь суперточный для 8086+CGA https://github.com/dbalsom/martypc

на нём работают даже уникальные демы "8088MPH" и "Area 5150", прямо в браузере через WASM
From:(Anonymous)
Date:September 21st, 2023 - 10:35 am
(Link)
> WASM

фу блять
фу нахуй
[User Picture]
From:[info]ketmar
Date:September 21st, 2023 - 10:56 am
(Link)
спасибо. но к сожалению, мне нужен 286+vga. на крайний случай ega. а лучше ega+vga вообще.

идея такая, что мне хочется примерно то же железо, доступ к которому у меня в школе был. чтобы посмотреть, чтобы я теоретически мог сделать тогда, если бы имел достаточно знаний.
[User Picture]
From:[info]blackdoomer
Date:October 2nd, 2023 - 11:42 pm
(Link)
вот кстати поподробнее, если интересно: https://int10h.org/blog/2023/07/martypc-pc-xt-emulator-raising-the-bar/
[User Picture]
From:[info]hex_laden
Date:September 21st, 2023 - 09:44 am
(Link)
Старый софт я на DOSBOX как раз и запускал, там прямо в хоткеях было, как скорость понизить (этим поскакаль грешил, запускаешь игрушку, а она фигачит со скоростью пулемета, анализируешь экзешник, ога, турбопаскакаль).

Когда-то встречался TRUEMU, тру-эмо, бгг. На нем даже старый промышленный софт запускался, только беда, я видел версии под XP/NT, живое ли оно сейчас или нет, хз.
[User Picture]
From:[info]ketmar
Date:September 21st, 2023 - 11:00 am
(Link)
скорость тут совершенно не при чём, это вообще неважно. важна точная эмуляция таймингов самой виртуальной машины. это задача, которая имеет мало отношения к «чтобы просто работало».

проще говоря, нужно не «чтобы просто работало», а точная эмуляция целевого железа, со всеми внутренними задержками и прочим. если инструкция при работе с обычной памятью жрёт n тактов, а при работе с видеопамятью 2*n, например — то это должно эмулироваться. для «чтобы просто работало» такое в хуй не всралось, наоборот: там быстрая видеопамять только выигрыш даёт.
[User Picture]
From:[info]hex_laden
Date:September 21st, 2023 - 10:48 pm
(Link)
Значит тру-эмо самое оно, не знаю, закрытое оно или открытое, и живо ли вообще, но писалось, ЕМНИС, именно для древнего промышленного софта, а там всякие задержки иногда вылазят в полный рост. Поищу, может где-то валяется, хотя бы версию под NT/XP
[User Picture]
From:[info]hex_laden
Date:September 21st, 2023 - 10:56 pm
(Link)
А вообще у меня валяется 386-я в рабочем состоянии (только пропылесосить), если бы не все это говно, которое Хуйло учудило - отправил бы тебе в подарок, хотя... можно покумекать, как таки отправить, через Финляндию, например. Если актуально, подумаю.
[User Picture]
From:[info]ketmar
Date:September 22nd, 2023 - 07:16 am
(Link)
спасибо, но слишком новая. ;-) натурально, разница — земля и небо. на 386 уже можно успевать копировать цельный экран во flat 320x200x256 и не тормозить. а на 286 такой финт не выходил.

как правильно заметил анон выше — CPU тоже мощный лимитирующий фактор. ну и просто я хочу «как в школе было». с одноклассницами сейчас было бы совсем не увлекательно, а 286-я с тех пор совершенно не изменилась. ;-)
[User Picture]
From:[info]hex_laden
Date:September 23rd, 2023 - 04:45 pm
(Link)
Есть серверная мать на базе 286-й, но это сам хочу оживить, один косяк - там какой-то нестандартный коннектор для питания на матери, блок вроде был AT-шный, а коннектор - нестандартный, и да, два процессора (!)