Просмотр полной версии : Олд-программинг.
Где найти инфу по программированию под ДОС на borland c++ 3.1 ?
Работа с графикой , вывод спрайтов там всяких в VGA режиме 320*240*8bit. Может есть чё по полигональной графике или рейкастингу?
Где найти инфу по программированию под ДОС на borland c++ 3.1 ?
Работа с графикой , вывод спрайтов там всяких в VGA режиме 320*240*8bit. Может есть чё по полигональной графике или рейкастингу?
название темы поменяй на "программирование под PC-DOS" и раздел есть x86...
NovaStorm
18.09.2014, 14:12
ALKO, "Библиотека системного программиста" том 3 - "Программирование видеоадаптеров CGA, EGA и VGA", том 21 - "Программирование видеоадаптеров", того же издательства книга "Как написать игру типа Doom".
Но лучше на это забить =)
Под ДОС на борланде серьёзно никто не писал, писали на ваткоме под дос-экстендеры. На сегодняшний день ниже того же SDL опускаться смысла нет. Впрочем, это зависит от целей, какие они у тебя на этот раз?
На сегодняшний день ниже того же SDL опускаться смысла нет.
Пробовал. На перво-пне SDL медленно выводит пиксели. Простая заливка экрана 800*600 происходит со скоростью 4-5 кадров в секунду, и это без посторонних расчётов, лишь только два вложенных цикла.
того же издательства книга "Как написать игру типа Doom".
Скачал, но ещё не особо вчитывался.
denpopov
18.09.2014, 14:41
бормановский Turbo C++ можно скачать на торент-трекерах.
пишешь в программе:
asm
mov ax,13h
int 10h
end;
и получаешь режим 320x200, 256 цветов.
Если ставить точку, то можно использовать pokeb(0XA000, x*320+y,15), если читать данные, то нечто другое.
здесь 0XA000 - сегмент видеопамяти
x*320+y - смещение в сегменте
15 - цвет точки.
Готовый raycasting вряд ли найдется, придется перепиливать код под графику. Полигональную заливку - тоже.
есть интересный ресурс:
http://freespace.virgin.net/hugo.elias/graphics/x_main.htm#1
там описаны многие алгоритмы.
Под ДОС на борланде серьёзно никто не писал, писали на ваткоме под дос-экстендеры
https://github.com/keendreams/keen
The code is designed for Borland C++ 2.0
---------- Post added at 14:50 ---------- Previous post was at 14:46 ----------
Похоже что у ваткома нет интерфейса. То есть там нужно использовать сторонний текстовый редактор.
NovaStorm
18.09.2014, 14:56
>https://github.com/keendreams/keen
А то, что ID в своё время пяткой в грудь стучали, что сделали на EGA плавный скролл тебя не смущает? Да можно и на си писать, но асме в данном случае даже проще =)
>Похоже что у ваткома нет интерфейса. То есть там нужно использовать сторонний текстовый редактор.
Да, конечно.
Но можно и нужно взглянуть на djgpp.
>На перво-пне SDL медленно выводит пиксели.
Внезапно, оно везде так, на любом железе и софте. Надо выводить не пикселями, а либо кусками кратными регистру или сразу блитить, возможно с поддержкой железа.
Довольно давно я писал с SDL на P233MMX и меня скорость вполне устраивала.
или сразу блитить,
блит сюрфейс там тоже медленный.
NovaStorm
18.09.2014, 15:19
Линуксовым гамам хватает, много буковских квестов на Python/SDL сделаны и норм.
marinovsoft
18.09.2014, 17:30
13h видеорежим программировать легоко - бери да пиши, память-то линейная, что не писать :)
denpopov
18.09.2014, 18:03
блит сюрфейс там тоже медленный.
чо, даже movs* не успевает?
пишешь в программе:
asm
mov ax,13h
int 10h
end;
и получаешь режим 320x200, 256 цветов.
Если ставить точку, то можно использовать pokeb(0XA000, x*320+y,15), если читать данные, то нечто другое.
Там давно есть видеодрайвер BGI для этого режима, можно использовать родной бормановский интерфейс для работы с графиков.
чо, даже movs* не успевает?
что это такое ? я ламир. не понимаю о чём вы.
Andrey_Korabelev
18.09.2014, 23:21
Может заинтересует PC Game Programmer's Encyclopedia (http://bespin.org/~qz/pc-gpe/)
Пока искал вот еще попалось, мб пригодтсяThe Difference Engine (http://www.gamers.org/dEngine/)
SpecialistMK87
19.09.2014, 08:57
Я много писал на Watcom C++ 10.6, с 1997 до начала 2000-х. Для вывода графики в режиме 1280x1024x256 использовалась библиотека VBE2.0 - фактически BIOS видеокарты. Линейная адресация памяти. Использовал вместе с DosNavigator, его редактором, там отличная подсветка синтаксиса. Писал сам функции вывода текста векторными шрифтами *.chr ( их тогда много было, в том числе кириллица ).
Watcom считался профессиональным, основные достоинства - линейная адресация памяти ( никаких дурацких страниц по 64к ), в том числе при доступе к видеопамяти, надежность ( у борландовских поделок всегда были предсказуемые и не очень глюки ) и высокое качество самого компилятора ( ассемблерные вставки делать не было смысла, и так высокая скорость ).
Хорошие готовые графические библиотеки мне не попались, связку Watcom+VBE2 пилил сам. Из-за линейной адресации это было одно удовольствие. Отладчик у него был, но я почти не использовал, а потом вообще перестал.
В 2008 запускал свои программы под Linux в Dosemu, скорость на современном компе вообще сумасшедшая получалась.
https://github.com/keendreams/keen
---------- Post added at 14:50 ---------- Previous post was at 14:46 ----------
Похоже что у ваткома нет интерфейса. То есть там нужно использовать сторонний текстовый редактор.
IDE там есть - но на фоне ECLIPSe и др. "малость скуповата" - посему внешний редактор и makefile в придачу. Однако ватком компилирует на порядок быстрее чем gcc, да и код на выходе приличный. (речь за С).
PS: однако к его ИДЕ можно прикрутить внешний редактор.
SpecialistMK87
19.09.2014, 09:33
а borland - для студентиков и их преподов. Видел увлеченных C builder'ом, только у них не было ни одной надежной программы написано. Все всегда сбоило, на разных машинах по-разному.
denpopov
19.09.2014, 10:50
Там давно есть видеодрайвер BGI для этого режима, можно использовать родной бормановский интерфейс для работы с графиков.
BGI для слабаков:)
что это такое ? я ламир. не понимаю о чём вы.
это команды блочных пересылок(считай LDIR ;) )- пересылка
movsb - побайтно
movsw- словами
movsd - 32bit
NovaStorm
19.09.2014, 12:02
И стоит учесть, что простое mov reg,mem:mov mem,reg было чуть-чуть, но быстрее rep movs*.
denpopov
19.09.2014, 12:32
И стоит учесть, что простое mov reg,mem:mov mem,reg было чуть-чуть, но быстрее rep movs*.
какой reg?
и где были те времена, когда хором орали - "ты чо?777 пц-отстой!"
?
:)
NovaStorm
19.09.2014, 13:49
>какой reg?
Вроде любой кроме аккумулятора, 12-13 тактов туда-сюда, в то время как movsw 26t или 9+25/rep.
А костылей у ПЦ с AMD64 стало только больше =)
Разве что фанатизма поменело, и на пц, и на других архитектурах отстоя хватает.
denpopov
19.09.2014, 14:00
>какой reg?
Вроде любой кроме аккумулятора, 12-13 тактов туда-сюда, в то время как movsw 26t или 9+25/rep.
фейспалм.джпег
видел я разок подобное и обалдел от спектрумовских методов.. Хорошо, что не под виндой код писан..
вот эта книга гуд
http://www.burnlib.com/x/shikin-e-v-boreskov-a-v-komp-yuternaya-grafika-dinamika-realisticheskie-izobrazheniya/
NovaStorm
20.09.2014, 00:17
denpopov, ну а чё, для 8086 нормально, для двойки тоже. Они ж от Z80 не так далеко ушли.
>какой reg?
Вроде любой кроме аккумулятора, 12-13 тактов туда-сюда, в то время как movsw 26t или 9+25/rep.
А костылей у ПЦ с AMD64 стало только больше =)
Разве что фанатизма поменело, и на пц, и на других архитектурах отстоя хватает.
Ну дык mov reg, mem нельзя сравнивать с rep movsw. Последняя ведь эквивалентна целому куску кода:
label:
mov mem, reg
mov reg, mem
inc di; или dec di
inc si; или dec si
loop label
И мне сдается, всё это ну никак не будет быстрее, чем rep movsw... Хотя на спор утверждать не буду, сам не проверял, растактовку помню уже весьма смутно. На 8086 mov был кажись 8 тактов, movsw что-то около 20, сколько префикс повторения добавлял, в упор не помню.
NovaStorm
20.09.2014, 15:14
DrPass, никаких inc'ов, только DUP'ы =)
Я же написал растактовку для 8086. Понятно, что movs универсальнее, как и ldir, но в определённых условиях её можно и обставить.
denpopov
20.09.2014, 16:29
парни, вы 8086 никак не забудете штоль?
если и оффтоп, то я был удивлен, изучая 6809, зная 6502: как интересно поменялись набор инструкций и прочее.
NovaStorm
20.09.2014, 20:11
парни, вы 8086 никак не забудете штоль?
У меня Искра-1031 была кажется вторым после УКНЦ компьютером, за которым удалось поиграцца =)
Да и если уж пошла такая пьянка...
Просто на 8086 такие методы ещё прокатывали, а вот на сегодня(с sandy bridge кажется, хотя вроде ещё на nehalem'ах обещали) rep movsB (сюрпрайз!)опять _быстрейший_ метод для небольших блоков! Иначе - дрючить SSE/AVX, учитывать cache locality/throughput/ширину datapath для каждой архитектуры/конфига/размера данных...
Я много писал на Watcom C++ 10.6, с 1997 до начала 2000-х.
Как хотя бы хыллоу-ворлд написать на нём?
(это я зашёл в watcom->IDE)
http://i.piccy_.info/i9/93e8e7b902ddfbe6c6b8ac80fb470da0/1411246671/53381/768533/vatkom.jpg (http://piccy_.info/)http://i.piccy_.info/a3/2014-09-20-20-57/i9-7002419/640x591-r/i.gif (http://i.piccy_.info/a3c/2014-09-20-20-57/i9-7002419/640x591-r)
При инсталляции ставил галки напротив Dos, windows и winNT/Win98/Win386
для DOS прикольно писать на FORTH SMAL32 (http://www.forth.org.ru/~cactus/smal32.htm) , тот мало того что имеет встроенный экстендер памяти, дак еще и клевые графические библиотеки, я на нем тестовую систему когда то писал
http://igormaznitsa.com/gui/tstcop1.jpg
SpecialistMK87
21.09.2014, 11:43
У меня другая версия была. 10.6. Копировалась на диск c:, прописывались пути в autoexec.bat. Максимальная версия windows при которой запускалась компиляция - Win98. И никакого графического IDE там не помню.
Если поискать, могу найти архив для установки. И "скелетный" проект свой с графикой всякой под vbe2.
Копировалась на диск c:, прописывались пути в autoexec.bat. Максимальная версия windows при которой запускалась компиляция - Win98
Тут тоже автоэкзек автоматом прописался. Ставил на win98se.
SpecialistMK87
21.09.2014, 16:34
кстати версии Watcom сильно отличаются, 10.6 как раз типа лучшая... 11-я уже считалась отстоем
пробовал когда-то OpenWatcom, мои проекты вообще не компилились.
У меня другая версия была. 10.6.
Мой скрин тоже с 10.6,
WATCOM C/C++ Version 10.6 - README
----------------------------------
Welcome to WATCOM C/C++ version 10.6. This README provides helpful hints
found during testing as well as updated information that was not available
at the time the documentation was produced.
специально ту же версию и искал.
Мой скрин тоже с 10.6,
специально ту же версию и искал.
А почему собственно не посмотреть в сторону OpenWatcom ?
1) Исправлено много багов
2) Бесплатное
3) и др.
Как пользоваться ИДЕ - так там хелп был/есть в наличии.
Линуксовым гамам хватает, много буковских квестов на Python/SDL сделаны и норм.
На линуксе немного иначе устроен SDL, да и к тому же для квеста много и не надо.
А вот ради интереса попробовал не свои корявые проги запустить, а вот этот ремейк, сделанный полностью на SDL, безо всяких OpenGL-привязок.
на MMX-e адовый слоумошн. Пройти игру можно с лёгкостью, так как она превратилась из жанра "гонычки" в жанр "пошаговая стратегия"
http://www2.braingames.getput.com/roadf/
Lethargeek
24.09.2014, 00:42
Michael Abrash для желающих зарыться в ассемблер
например, Graphics Programming Black Book
Andrey_Korabelev
25.09.2014, 09:49
Андре Ламот. Программирование трехмерных игр для Windows. Советы профессионала по трехмерной графике и растеризации. 2005
По названию сложно догадаться, но в этой книге ни слова про аппаратное ускорение, Direct3D, OpenGL. Весь вывод на экран идет через функцию рисования пикселя(реализована через DirectDraw).
Так что основы софтового рендеринга рассмотрены очень подробно. Возможно пригодится для его реализации на старом железе.
Не путать эту книгу с ее предшественницей, того же автора. Вот в той немного про Windows есть;)
denpopov
25.09.2014, 09:52
Не знаю, какой Ламот. у него на сайте тьма скринов демоэффектов. Гоблин спросил в почте, как делается один, тот ответил, что не знает и засыпал письмами с вопросами об эффектах.
а для OpenGL есть популярные уроки NeHe, есть и перевод. Но компилировать примеры замаешься.
для желающих зарыться в ассемблер
меня больше интересует си (можно и с асмовскими подпрограммами).
Что-нибудь раритетное (типа турбо-си), и в то же время не сложное для новичка.
И вот с этим:
Так что основы софтового рендеринга рассмотрены очень подробно.
Мне в своё время понравилась книга
Роджерс Д. - Алгоритмические основы машинной графики
Здесь можно оглавление посмотреть.
http://rutracker.org/forum/viewtopic.php?t=3834428
denpopov
25.09.2014, 13:39
Что-нибудь раритетное (типа турбо-си),
QuickBasic тогда:)
Andrey_Korabelev
25.09.2014, 15:11
HX DOS extender (http://www.japheth.de). Позволяет запускать Win32-console и некоторые GUI приложения. Также возможно еще что полезного у автора сайта найдется
QuickBasic тогда
Васик интерпретатор же, медленная хрень.
Страдал им ещё будучи шкалатой (параллельно turbo-пасцалем и Дельфями[7]).
denpopov
26.09.2014, 11:12
Васик интерпретатор же, медленная хрень.
у меня никак не дойдут руки сравнить интерпретатор с компилятором. Кто знает, мож будет и быстрее?
а упомянул васик, птому что речь пошла о ретропрограмминге.
Кто знает, мож будет и быстрее?
Всё зависит от алгоритма, структуры программы. Можно и на ассемблере написать тормозную программу, аналогичная специализация которой на том же васике шпарила бы в разы шустрее.
NovaStorm
26.09.2014, 11:39
Васик интерпретатор же, медленная хрень.
qbasic - AOT, quick basic - компилятор.
Если честно, уже и запамятовал, как там происходило выполнение на запуск программы....
Но когда-то в конце 90-ых--начале 2000-ых страдал и КуВасиком и GW-васиком.
NovaStorm
26.09.2014, 11:50
AFAIR, q(uick)basic'и компилировали строку сразу после нажатия Enter. Запускали из памяти, но в qb можно было сделать и экзешник.
Одно время была даже демосцена на qbasic'е, некоторые творения потрясали =)
Были для них(и для MS BASIC Professional Development System) даже либы под SVGA и SB. Но ну нах...
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot