Forums Logo

Здравствуйте Гость ( Вход | Регистрация )

 
Reply to this topicStart new topicStart Poll

Каскадный · [ Стандартный ] · Линейный

> Программирование на Famicom/NES/Денди в IDE Nesicide, Программирование NES в асме CA65 и IDE Nesicide

aa-dav
post Четверг, 02 апреля 2020, 08:27
Отправлено #1


Фанат
***

Группа: Пользователи
Сообщений: 180
Регистрация: 20 апр. 2017
Пользователь №: 58 717





Давно уже я написал руководство по программированию на Game Boy Advance, скорее всего единственное на русском языке и как там писал присматривался и к денди, но не нравилась мне хардкорность программирования на столь древней системе.

Однако недавно я наткнулся на одну довольно интересную IDE — Nesicide https://knob.phreneticappsllc.com/nesicide/ которая сильно снизила для меня порог вхождения в это дело и... ретроэнтузиаст во мне проснулся и закипела работа над уроками по программированию на Famicom/NES/Денди в ядрёном ассемблере как завещали предки: http://hype.retroscene.org/blog/967.html

Уроки находятся в процессе написания и будут появляться новые.

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



Второй показывает работу с 64 возможными спрайтами на платформе — они выстроены в лесенку с перекрытием, а два летают свободно:



Второй показывает технику HBlank–отсечения с помощью zero–sprite–hit — то как в играх типа Super Mario или Bomberman реализовывалась неподвижная полоска игровой статистики с одного из краёв экрана:



Четвёртый урок демонстрирует возможности звукового драйвера FamiTone2 от известного в узких кругах ретроэнтузиаста Shiru:



Этот драйвер может воспроизводить музыку и звуки созданные в программе Famitracker, но в отличие от драйвера самого Famitracker заточен под игровое применение.

Пятый урок демонстрирует переключение банков памяти программы/данных в картридже с маппером MMC3 и когда на экране меняются строки - они находятся в разных страницах расширенной памяти картриджа (сверх 32Кб консоли без апгрейдов):



Урок шестой: перехват прерывания IRQ по счётчику сканлайнов при маппере MMC3 демонстрирует полноэкранную картинку (что нетривиально сделать в тайловой графике денди с ограничением 256 тайлов на стандартный кадр):
user posted image

Урок седьмой - полноценный перехват прокрутки по прерыванию от счётчика сканлайнов маппера MMC3:


Этого всего уже достаточно чтобы написать игру уровня Darkwing Duck, Contra Force и т.п.

В связи с вынужденными коронавыходными возможно у кого то из вас возникнет не только желание, но и время поковыряться в этих древних древностях и прикоснуться к ним так сказать вживую.

Стоит заметить так же, что на хабре существует перевод статьи про программирования на NES на языке C: https://habr.com/ru/post/348022/

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

Сообщение отредактировал aa-dav - Суббота, 25 июля 2020, 11:25
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
terek
post Четверг, 02 апреля 2020, 15:38
Отправлено #2


Новичок
*******

Группа: Пользователи
Сообщений: 4 220
Регистрация: 22 янв. 2006
Из: 80's
Пользователь №: 14 957





Просто хотел сказать - это круто что ты делаешь!
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
aa-dav
post Четверг, 02 апреля 2020, 18:13
Отправлено #3


Фанат
***

Группа: Пользователи
Сообщений: 180
Регистрация: 20 апр. 2017
Пользователь №: 58 717





QUOTE (terek @ Четверг, 02 апреля 2020, 15:38)

Просто хотел сказать - это круто что ты делаешь!
*


Спасибо. smile.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Boris
post Четверг, 16 апреля 2020, 16:20
Отправлено #4


Uphold the law
Group Icon

Группа: Супермодераторы
Сообщений: 1 008
Регистрация: 07 авг. 2006
Из: Bulltown
Пользователь №: 17 455





aa-dav
ваша доброта не знает границ, браво! Продолжайте в том же духе, я тоже хочу попробовать кодить для NES, ваши уроки как нельзя вовремя!


--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
aa-dav
post Четверг, 16 апреля 2020, 18:30
Отправлено #5


Фанат
***

Группа: Пользователи
Сообщений: 180
Регистрация: 20 апр. 2017
Пользователь №: 58 717





QUOTE (Boris @ Четверг, 16 апреля 2020, 16:20)

aa-dav
ваша доброта не знает границ, браво! Продолжайте в том же духе, я тоже хочу попробовать кодить для NES, ваши уроки как нельзя вовремя!
*


Спасибо опять за тёплые слова. smile.gif Буду рад если кому-то пригодится.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
dimm0505
post Пятница, 24 апреля 2020, 21:54
Отправлено #6


Console Addict
Group Icon

Группа: Супермодераторы
Сообщений: 28 575
Регистрация: 21 янв. 2007
Из: СПб
Пользователь №: 20 637





А вам так слабо? lol2.gif



--------------------
GBA SP/GB Micro/DSL/3DS/Switch/PSP Go/PS2/XB360/XBO/NESC/SNESC/PSC/Quest 2
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
aa-dav
post Суббота, 25 апреля 2020, 05:11
Отправлено #7


Фанат
***

Группа: Пользователи
Сообщений: 180
Регистрация: 20 апр. 2017
Пользователь №: 58 717





QUOTE (dimm0505 @ Пятница, 24 апреля 2020, 21:54)

А вам так слабо? lol2.gif
*


Хехе, между прочим про это будет следующий мой урок с которым я весьма затормозился с этим коронавирусом и рядом еще обстоятельств, хочу еще какую-нибудь красивую графику замутить и это требует времени разработать парочку утилит по созданию банков графики...
Так вот - третий урок демонстрирующий технику HBlank-отсечения посредством zero-sprite-hit и видео с ним выше является претдечей к тому как сделана эта демка.
Из коробки консоль может в одном месте видеоизображения поменять параметры прокрутки заднего фона и это чаще всего использовалось для создания неподвижных статус-панелей.
Но во первых это можно было сделать только 1 раз за кадр и во вторых эта техника сильно жрёт ресурсы процессора, т.к. ему нужно явным образом в цикле постоянно опрашивать видеочип не достиг ли тот обозначенного нулевого спрайта.
В результате когда в картриджи начали встраивать мапперы расширяющие возможности консоли то появился очень полезный механизм счётчика сканлайнов который позволяет сгенерировать прерывание по достижению определенного сканлайна - процессор по наступлению прерывания откладывает работу которой занимался до, перескакивает на код обработчика прерывания и потом возвращается обратно как ни в чём не бывало. В результате стало возможным менять параметры прокрутки заднего фона много раз за кадр и при этом намного более экономно использовать ресурсы процессора.
Но некоторые игры умудрялись подменять параметры скроллинга вообще в каждом сканлайне.
Например в игре Gun Dec переходный экран к боссу "расслаивался" на чётные и нечётные строки которые улетали в разные стороны. Каждая.
Или вот эффект парящего дыма у босса отхватывает солидный кусок экрана делая разную прокрутку в каждой строке:
user posted image
В общем это ключевой момент и демки Axelay - перехватывать параметры прокрутки в каждом сканлайне. Там можно еще порассуждать о том не используются ли еще дополнительные трюки чтобы успевать в очень узкое временное окно, но основная идея понятна.

Так вот и какую хитрую вещь демка делает - на самом деле задний фон просто прямоугольный кусок "текстуры" без каких либо искажений прокручиваемый сверху в низ. Но это в видеопамяти. А на экране прокрутка подменяется в каждой строке так что вверху экрана попиксельные строки "текстуры" пропускаются, проскакивают сразу на 2-3 вниз, а снизу экрана наоборот сканлайны как бы застревают на одной и той же строке "текстуры" несколько раз выводя одну и ту же строку. И да, это эквивалентно сжатию изображения по вертикали сверху и растяжению снизу - грамотно комбинируя эти отставания и опережения прокрутки чувак реально создал крайне нетипичный для NES эффект имитации перспективного искажения как будто мы в 3Д.

Действительно была бы такая игра в своё время она произвела бы много впечатлений. Но вот не припомню ничего такого. Самое близкое что можно припомнить - гоночные симуляторы с эффектом дороги уходящей вдаль и змеящейся влево-вправо, там скорее всего тоже подменой прокрутки в каждом сканлайне такое делается.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
dimm0505
post Суббота, 25 апреля 2020, 08:43
Отправлено #8


Console Addict
Group Icon

Группа: Супермодераторы
Сообщений: 28 575
Регистрация: 21 янв. 2007
Из: СПб
Пользователь №: 20 637





Хочу заметить, что на технике HBlank отсечения работают большинство всяких демок и это священный грааль всего недокументированного. Взять C64, Amiga, SNES и тп(где поддержка обработки прерываний аппаратная есть), даже на спектруме начали такие демки и игрушки появляться(но на нем гораздо все замороченней).


--------------------
GBA SP/GB Micro/DSL/3DS/Switch/PSP Go/PS2/XB360/XBO/NESC/SNESC/PSC/Quest 2
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
aa-dav
post Четверг, 25 июня 2020, 19:19
Отправлено #9


Фанат
***

Группа: Пользователи
Сообщений: 180
Регистрация: 20 апр. 2017
Пользователь №: 58 717





Готов следующий урок - перехват прерывания IRQ по счётчику сканлайнов при маппере MMC3: http://hype.retroscene.org/blog/1005.html

В видеочипе Famicom/NES/Денди есть принципиальное ограничение — в одном кадре разных тайлов того же фона на экране может быть только 256, а видимых клеток с тайлами на экране примерно 896. Т.е. ~70% тайлов фона должны повторяться, быть неуникальными.
Это ограничение приводит к забавным решениям о том как вывести на экране консоли графическую картинку максимально большого размера и есть отличная статья от Shiru о терниях на этом пути.
Вот и мы вступим на эту тропу и попробуем с помощью переключения видеобанков с тайлами вывести на экран картинку где каждый пиксель может быть уникальным.
Мы заполним экранную область монотонно нарастающими номерами тайлов — т.к. их 32 в строке, то получится что через 8 строк тайлов (64 сканлайна) тайлы начнут повторяться. Но мы перед этим сканлайном переключим банк видеопамяти с изображениями тайлов плиток фона на видеостраницу с другими изображениями тайлов и сделав это 3 раза за кадр получим полноценную картинку.

user posted image

Казалось бы несложно, но на немодифицированном железе Famicom/NES/Денди такое невозможно сделать.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
aa-dav
post Четверг, 02 июля 2020, 09:38
Отправлено #10


Фанат
***

Группа: Пользователи
Сообщений: 180
Регистрация: 20 апр. 2017
Пользователь №: 58 717





Доделываю последний урок по мапперу MMC3 и полноценному скроллингу с панелью состояния игры - код и видео готовы, но эта техника самая сложная что я реализовывал и хотелось бы проверить на реальном железе.
Если кому нибудь не трудно, проверьте плиз.
По ссылке https://yadi.sk/d/_THxg1gxuCCVNw это последний седьмой урок. Образ в этой же папке лежит.
Изначально направления скроллят нижнюю зону экрана которая отсчитывается от позиции Y где находится спрайт.
Если зажать (A), то начинаем двигать сам спрайт быстро.
А если зажать (cool.gif, то спрайт двигается шажками для точного позиционирования.
Смысл вот в чём - чтобы поменять параметры скроллинга нужно выдержать правильную паузу и быстро выполнить запись в порты ввода видеочипа.
Код в качестве этой паузы берёт уже координату X спрайта и разные эмуляторы показывают разный диапазон допустимых значений.
Так FCEUX видео с которого я снял ниже показывает? что глитчи в линии со спрайтом (они гуляют если разные паузы делать) исчезают если координаты спрайта по X (верхнее отображаемое число) заключено в диапазоне 0C-10 (это шестнадцатеричная запись числа для простоты кода).
Но более щепетильный эмулятор Mesen (король отладки) заужает этот диапазон до 0D-0F.
Нужно аккуратно выставлять позицию спрайта и скроллить в разных фонах и направлениях проверяя не дёргаются ли пиксели с краёв экрана.
На видео я думаю всё прекрасно видно.
Насколько я знаю даже разное железо тоже по разному может реагировать (конечно разница между PAL/NTSC очевидна).
Посему очень интересно как реагирует настоящее железо - интересен сам диапазон валидных значений интересен.


Сообщение отредактировал aa-dav - Четверг, 02 июля 2020, 09:42
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
aa-dav
post Понедельник, 06 июля 2020, 19:55
Отправлено #11


Фанат
***

Группа: Пользователи
Сообщений: 180
Регистрация: 20 апр. 2017
Пользователь №: 58 717





Для меня это какая то мистическая загадка, если честно.
Вроде же гуглится, то Everdrive N8 для NES существует.
И где еще искать её обладателей как не здесь?
Более того - тут есть (я знаю) и люди которые распаяли всё это самолично и замутили мапперы эмулирующие всё что угодно. Перед их уровнем преклоняюсь и на самом деле такой пряморукий человек мне и помог и честь и хвала ему за это.
Но он с другого ресурса и то что здесь нет никакой реакции для меня прям загадка.
Неужели N8 это какой то невероятный китайский подвиг, что есть только у каждого двадцатитысячного?
Ну вот просто интересно. smile.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Oreanor
post Понедельник, 06 июля 2020, 22:20
Отправлено #12


старая тусовка
*******

Группа: Пользователи
Сообщений: 2 820
Регистрация: 15 мая. 2008
Из: Москва
Пользователь №: 26 741





бро, у меня есть, я хоть и не распаивал ничего, но давай проверю чо надо smile.gif

Вот смотри. Сразу оговорюсь, у меня не было времени особо разобраться, что там именно происходит, я просто попытался повторить то, что в твоем видео.

» Нажмите, для открытия спойлера «




Сообщение отредактировал Oreanor - Вторник, 07 июля 2020, 11:58


--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
aa-dav
post Вторник, 07 июля 2020, 06:12
Отправлено #13


Фанат
***

Группа: Пользователи
Сообщений: 180
Регистрация: 20 апр. 2017
Пользователь №: 58 717





QUOTE (Oreanor @ Понедельник, 06 июля 2020, 22:20)

бро, у меня есть, я хоть и не распаивал ничего, но давай проверю чо надо smile.gif
...

О, круто! Заранее спасибо!
Я тогда вкратце поясню что именно надо проверить, потому что не совсем то что надо на видео.

Верхнее число на экране - это координата X спрайта который синяя полоска и которым мы управляем зажимая кнопки. Кнопка B позволяет менять координаты пошагово с попиксельной точностью.
Та горизонтальная линия на экране где находится спрайт это вторая координата и в ней возникают глитчи при скроллинге если координата X (её код использует как задержку) выставлена неправильно.
Эмуляторами я уже сузил диапазон возможных значений координаты X до следующих:
0C
0D
0E
0F
10
Это шестнадцатиричные числа, поэтому идёт буквы по нарастанию, но так проще закодировать было.
По второму видео я вижу что реальное железо глючит на 0C - где дикие подёргивания происходят. Что интересно FCEUX этого не воспроизводит, но вот эмулятор Mesen именно так себя и ведёт. Именно такие же подёргивания.
А вот далее хотелось бы просто увеличивать координату X на 1 и проверять есть ли мерцания с боков экрана напротив спрайта или нет и понять какие из этих значений не вызывают частичных мерцаний или подёргиваний на настоящем железе. Там где они начинаются дальше уже смысла нет продолжать - мы нащупали порог глючности. Поэтому вопрос только в этих пяти значениях выше или на 1-2 дальше если глюков вдруг не будет на них. Но нижний порог у вас уже явно должен быть выше 0C.
Мерцание чаще всего частичное - буквально пара пикселей по краям экрана и возникает не постоянно, а при скроллинге, поэтому чтобы убедится что его нет надо скроллить во все стороны.
Есть опыт еще человека который сам распаивал собственноручный картридж по чертежам Кластера, у него получилось что допустимые значения это 0D-11. Эмулятор Mesen говорит что 0D-0F. Вот и хочется проверить что эти значения это железобетон.
Снимать видео не обязательно, важен сам факт только на каких значениях из списка выше не глючит.

Сообщение отредактировал aa-dav - Вторник, 07 июля 2020, 06:14
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Oreanor
post Вторник, 07 июля 2020, 11:57
Отправлено #14


старая тусовка
*******

Группа: Пользователи
Сообщений: 2 820
Регистрация: 15 мая. 2008
Из: Москва
Пользователь №: 26 741





на IQ-2000: совсем без глитчей только OD, OE и OF.
OC - экран потрясывает даже без скролла, на других значениях мерцают по несколько пискелов в ряду спрайта.

На фамике то же самое на тех же значениях, глючит немного иначе и сильнее (ну как на видео).


--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
aa-dav
post Вторник, 07 июля 2020, 15:36
Отправлено #15


Фанат
***

Группа: Пользователи
Сообщений: 180
Регистрация: 20 апр. 2017
Пользователь №: 58 717





QUOTE (Oreanor @ Вторник, 07 июля 2020, 11:57)

на IQ-2000: совсем без глитчей только OD, OE и OF.
OC - экран потрясывает даже без скролла, на других значениях мерцают по несколько пискелов в ряду спрайта.

На фамике то же самое на тех же значениях, глючит немного иначе и сильнее (ну как на видео).
*


Большое спасибо!
Значит точные допуски действительно 0D-0F как и показывает эмулятор Mesen.
Начинаю его уважать, он похоже реально очень дотошно пытается эмулировать железо.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Oreanor
post Вторник, 07 июля 2020, 16:19
Отправлено #16


старая тусовка
*******

Группа: Пользователи
Сообщений: 2 820
Регистрация: 15 мая. 2008
Из: Москва
Пользователь №: 26 741





пожалуйста! Если что-то еще надо будет потестить, пиши, можно и в личку.


--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
aa-dav
post Четверг, 16 июля 2020, 16:43
Отправлено #17


Фанат
***

Группа: Пользователи
Сообщений: 180
Регистрация: 20 апр. 2017
Пользователь №: 58 717





Уффф, всё, цикл моих статей о том как программировать на денди в IDE Nesicide на ассемблере CA65 завершён.
Последняя статья тут: http://hype.retroscene.org/blog/1006.html
Описывает как полностью без глитчей и полноценно подменять параметры скроллинга в середине кадра используя счётчик сканлайнов и прерывания маппера MMC3.
Видео тут приведено первое же что выше - но без описания будет даже непонятно и неинтересно что на нём происходит.
Спасибо Oreanor за тестирование, это помогло.

Ну всё, можно делать игру. xD
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
dimm0505
post Четверг, 16 июля 2020, 19:28
Отправлено #18


Console Addict
Group Icon

Группа: Супермодераторы
Сообщений: 28 575
Регистрация: 21 янв. 2007
Из: СПб
Пользователь №: 20 637





Серьезная работа! Сделал бы ты еще какую-нибудь pdf-ку типа справочника.


--------------------
GBA SP/GB Micro/DSL/3DS/Switch/PSP Go/PS2/XB360/XBO/NESC/SNESC/PSC/Quest 2
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Oreanor
post Четверг, 16 июля 2020, 20:19
Отправлено #19


старая тусовка
*******

Группа: Пользователи
Сообщений: 2 820
Регистрация: 15 мая. 2008
Из: Москва
Пользователь №: 26 741





Сколько ни смотрю на ассемблерный код, так и не могу понять, как заставить себя думать ассемблерными категориями - сдвиги, инкременты, декременты, все эти манипуляции с регистрами.
Это какой-то нечеловеческий подход, после ООПа. blush.gif

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


--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
aa-dav
post Пятница, 17 июля 2020, 03:29
Отправлено #20


Фанат
***

Группа: Пользователи
Сообщений: 180
Регистрация: 20 апр. 2017
Пользователь №: 58 717





QUOTE (dimm0505 @ Четверг, 16 июля 2020, 19:28)

Серьезная работа! Сделал бы ты еще какую-нибудь pdf-ку типа справочника.
*


Спасибо. Типа справочника в каком смысле?
В каком то смысле справочниками у меня являются тела самих модулей neslib.inc и mmc3.inc - я старался каждый порт и порт откомментировать так чтобы единожды прочитав всю статью легко было вспомнить всё просто пробежавшись глазами по текстам этих модулей всматриваясь в комментарии.
Если речь про то чтобы просто всё скомпоновать в offline-документ, то возможно займусь, но в принципе сохранить всё как HTML в offline-копию может каждый.

QUOTE (Oreanor @ Четверг, 16 июля 2020, 20:19)

Сколько ни смотрю на ассемблерный код, так и не могу понять, как заставить себя думать ассемблерными категориями - сдвиги, инкременты, декременты, все эти манипуляции с регистрами.
Это какой-то нечеловеческий подход, после ООПа. blush.gif

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


В основном это дело привычки конечно же.
В 40-50-х годах прошлого века, когда только начали появляться первые ЭВМ и такие люди как Алан Тьюринг писали для них инструкции вот по программированию было совсем интересно: http://hype.retroscene.org/blog/937.html
Ассемблеры типа того что в моих уроках для NES тут выглядят самим образцом читаемости. xD

У меня история примерно такая же - в детстве у меня был тоже спектрум и он мне дал импульс на то чтобы я стал в дальнейшем программистом, но на ассемблере в то время на спектруме я программировал очень мало. Можно сказать что и не программировал, а больше разбирал чужие примеры. А попытки что-то самому напрограммировать откровенно пугали и был своеобразный страх - т.к. на Z80 регистры было немало регистров и они конечно быстрее памяти, то всё время был страх что код перекладывающий значения в память и обратно неоптимален и можно всё переписать и ускорить правильно как в тетрисе сложив использование одних регистров с другими и получить оптимальный кусочек цикла.
Это сильно мешало и отталкивало.
Но вот сейчас далеко уже в возрасте у меня несколько лет назад возник импульс вернуться к этим древностям и вернувшись я обладая уже опытом разглядывания ассемблера который порождают компиляторы для современных процессоров Intel перестал "боятся" таких вещей и что спектрум, что вот сейчас NES - прикасаюсь к их ассемблерам и прям интересно и забавно.
Основное что помогает - это эдакое понимание что не надо пытаться всё запихать в регистры (а на MOS 6502 в NES это просто невозможно принципиально, поэтому этот процессор сразу воспитывает), а сам код надо упорядочивать внутри процедур на независимые фрагменты у которых неважно что на входе и что на выходе - они выполняют какую-то монолитную операцию соответствующую одной, допустим, строке программы на языке программирования высокого уровня. Обильно обсыпав такие фрагменты комментариями чтобы в будущем не забыть где этот фрагмент начинается и где заканчивается и что делает - мы резко всё структурируем и действительно в некотором смысле сводим к более привычному программированию, просто размазанному лапшой инструкций на несколько строк там где раньше была одна (в ЯВУ). И это получается просто "трансляция" привычной программы в более неплотное ассемблерное представление (и именно так компиляторы и работают) и как только это осознаёшь, то ассемблер теряет какой либо имидж чего то загадочного.

В общем мне нра.

Сообщение отредактировал aa-dav - Пятница, 17 июля 2020, 03:30
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 чел. читают эту тему (2 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
 

Упрощённая версия Сейчас: Чт., 28 мар. 2024, 18:10
Skin Designed (c) by Rooq.net, All Rights Reserved.