Gift4DenisGrachev

Возвращаясь к традициям добрых гифтов, представители NOT Soft и ERA CG в порыве творчества создали скромный и достаточно качественный ролик широко известному Денису Грачёву!!!

Gift 4 Denis Grachev

Авторы идеи, графики и анимации — wbr (NOT Soft), Buddy (Era CG).
В гифте играет музыка — brd.xm.ye.olde.chiptune.=).cover by wbc (b-state).
Стихи — Борис Пастернак «Февраль».
Код создан в инструментальной среде Crazy Demo Maker (Nyuk).

16.02.2016


Смотреть

Oliver Twins вспоминают былое

Братья Oliver решили в очередной раз напомнить о себе видеороликами с геймлпеем своих старых игр с ZX Spectrum и Amstrad CPC.

На youtube канале OliverTwins доступны видео с комментариями авторов к 5 играм:

Dizzy (ZX)


Читать дальше →

Архив миксов: True Chip Till Death Podcast #006 — Russian ZX Spectrum Scene



Приветствую!

Итак, третьей подборкой спектрумовской музыки стал микс для подкаста новостного чиптюн-ресурса True Chip Till Death, который с 2012 года остается неактивным.

В подкасте TCTD, в отличие от BitJam, был настоящий ведущий — Random. Он попросил меня собрать коллекцию разноплановой спектрумовской музыки, а также дать базовую информацию по каждому из музыкантов. Итого получилось 27 треков и более часа по продолжительности.

Дата выпуска — 1 августа 2009.


(Ссылка на Soundcloud)

Треклист:

1. Davos – Cyberspace 4
2. Davos – Battletech, Way of the Clans
3. Andy Fer – Twister’s Dance Machine
4. Andy Fer – Don’t Stop That Dream
5. n1k-o – Hidden Threat in Squeak
6. n1k-o – I’m Scorn Oneself
7. Key-Jee – In A Game Style
8. Key-Jee – Minimal Space
9. Megus – Tryptomine Dream Soundtrack
10. Megus – Just A Tune
11. C-jeff – Island Reflections
12. C-jeff – Konami, Part 2
13. Riskej – Der Kleinen Jazz, Das Tote Metal
14. Riskej – Last Drop of Dew
15. Siril – Da Smiling Mouse Is On Your Head
16. Siril – Oxygen
17. Fatal Snipe – Fucking Life
18. Fatal Snipe – 4 Adventurer 13
19. Ironman – Trema
20. Ironman – Nu Loops
21. D-Juice – Internal Ocean
22. D-Juice – Club of Shadows
23. D-Juice – Syringez
24. MmcM – Dip Mistake
25. MmcM – Look in My Eyes
26. Imp – Extacy Megademo Pt. 10
27. Imp – Vibrations Theme 3

Подборка — C-jeff
У микрофона — Random

Архив миксов: BitJam Podcast #10.5 — Antique Toy Special



Приветствую!

Итак, вторым на очереди миксом спектрумовской музыки будет выпуск #10.5 все того же подкаста от Bitfellas. Выпуск посвящен музыке виртуального компо Antique Toy, в организации которого я принимал участие, и вышел прямо в период сбора работ к Antique Toy 2007.

Эпизод, к сожалению, получился не самым удачным, толком даже громкость не выровняли (особенно это заметно между треками от Gasman и Asi). Если не ошибаюсь, мы его тогда буквально впихнули в расписание BitJam, поэтому он и получил номер #10.5.


(Ссылка на Soundcloud)

Треклист:

01. Yerzmyey — Stuff Like That (0:14 − 3:49)
02. Key-jee — Das Problem (3:49 − 7:24)
03. C-jeff and n1k-o — Antique Toy Prezent (7:24 − 9:54)
04. Fatal Snipe — Dark Fusion (Ben Daglish) (9:54 − 11:12)
05. Miguel — Thy Dreams, Thy Dreadful Visions (11:12 − 13:37)
06. n1k-o — Heroquesters (13:37 − 16:38)
07. Key-jee — Der Flaum (16:38 − 19:16)
08. No.One.Ru — Trust No One (19:16 − 22:23)
09. Yerzmyey — Picturesque (22:23 − 24:26)
10. Andy Fer — Progrooze (24:26 − 25:39)
11. Fatal Snipe — Hocok 3k (25:39 − 29:21)
12. Gasman — Follin' Through Space (29:21 − 33:10)
13. Asi — Headlights (33:10 − 35:13)
14. C-jeff and n1k-o — Hbhbhbhbhbhbhbh (35:13 − 36:43)
15. Yerzmyey — F**k Off (36:43 − 40:00)

Сведение — Vincenzo
Джингл — by pOWL
Баннер — Zoom, при использовании логотипа Antique Toy от Asphyx и части работы Deadie
Подборка — C-jeff

Как писать код, чтоб не сойти с ума и не впасть в депрессию

Часто возникает неприятная ситуация: некий сценер начинает писать код и в определенный момент впадает в панику от того, что код ведет себя не так, как ожидается. Код не из простых, слёту указать на проблему невозможно, а ничего внятного, кроме «нихера не работает!!1» кодер сказать не может. Помочь в этой ситуации удручающе сложно. Все смотрят с сожалением, испытывая тяжкие угрызения совести. Наконец самый ответственный профессионал просит сорец, понимая, что сейчас ему придется разгрести тонну интуитивно понятного, хорошо прокомментированного кода на асме. (В этот момент очень хочется, чтоб кто-нибудь написал плагин для редактора, который будет подсвечивать все баги в сорце красным цветом.)

Читать дальше →

Exact emulation of the Snow effect

At the beginning of this year I promised to publish details of the exact snow effect emulation after publication of a new version of my emulator. Well, I changed my mind, the publication of new version of the emulator is planned later, and the details of the exact snow effect emulation I publish now, along with the update of my emulator Spectramine (1.05), in which the correct emulation of the snow effect was first implemented, and my snow effect tests, which are modifications of the snow test with a tuning table.

The snow effect is caused by the interference of two processes — reading screen data by the ULA and memory regeneration by the processor. Under certain conditions, the bits 6..0 of the register R are picked up in the bits 6..0 of the screen memory address set by the ULA on the address bus. In the course of my research, another effect was revealed, determined by the same reasons. I called it the double effect — under certain conditions, the interference of reading ULA screen data and memory regeneration leads to the fact that ULA cannot read the data of the next bar of pixels, and instead displays a bar of pixels with the data read earlier. This effect is perfectly visible on the ULA128 test written by azesmbog/zebest.

And now the actual results of the research — the necessary information for exact emulation of the snow effect.

A prerequisite for the snow effect: at 16/48/128/+2 machines snow appears if register I contains a value that, if it taken by the high byte of address, points to an address in the slow memory. For Spectrum 16/48 these are addresses #4000..#7FFF, for 128/+2 these are also addresses #C000… #FFFF, if a slow memory page is paged there, for 128/+2 these are pages with odd numbers — 1,3,5,7 (not 0,2,4,6).

There is no snow/double effects on Amstrad's black machines (+2A/+2B/+3/...) and on any ZX Spectrum clones except maybe those that based on original ULA.

Additionally, it turned out that on some 128 machines the snow effect leads to a hang / reset of the computer, and on some — it works ok.

Now about the snow phases. Snow phase means how a 4-tacts operation code fetching cycle overlaps an 8-tacts screen drawing cycle by ULA.

So:
1) If the 4th cycle of the operation code fetching cycle coincides with the 3th cycle of the 8-tacts output cycle of 16 pixels, this leads to snow effect — in the pixels1/attributes1 addresses the bit 6..0 of address is replaced with the current contents of the bits 6..0 of register R (it should already be increased in this operation code fetching cycle). upd.: And page from where the snow bytes are fetched is that the register I pointed to.

2) If the 4th cycle of the operation code fetching cycle coincides with the 5th cycle of the 8-tacts output cycle of 16 pixels, then this leads to a double effect — the pixels2/attributes2 data will not be read, and the screen bar with pixels1/attributes1 data will be re-displayed.

3) For the remaining variants of overlapping the operation code fetching cycle with the ULA screen drawing cycle, the ULA works normal, without snow and duplicate.



I express my gratitude to Pheel (Alexander Filyanov) and balford (Brendon Alford), who, at my request, launched my tests on their machines, and shot the results in the videos. Also to NEO_SPECTRUMAN, TheMartian and Guesser, for help with a question of register R's participation in the snow effect.

My emulator Spectramine (1.05) with correct snow can be downloaded here: files.fm/u/r7cymnn9m

Snow tests, the old one and my modifications of it, and ULA128 test:
zx-pk.ru/attachment.php?attachmentid=77971&d=1666205428

Sorry for long wait and bad english)

(Snow.tap test is not entirely correct — under certain conditions there will be no running columns on the screen, which is due to the absence of alignment to the beginning of the frame. Try to load it with pressed Ctrl. Very fast running columns on the screen immediately after loading the tests are caused by an imperfect pause acceleration code between the tape blocks during loading).

TheMartian's addition:
— Pixels and attributes are read in «bursts». First the RAS signal is asserted, and the raw address, (that's bits 6-0 of the video address), are set. Then the CAS signal is asserted twice, setting a column address (bits 13-7) which can point to a pixel byte and its attribute. The first CAS pulse is for the data byte, the second for the attribute, only bits 13-7 change.
— In RFSH cycles MREQ is asserted, and MREQ controls (is) RAS, and since MREQ is low in the first half of T4 it cancels contention, but it proceeds keeping fixed bits 6-0.
— So if it happens on this 3rd pixel cycle T-state, it's the first pixel/attribute burst, the RAS asserted the refresh address, so you get snow.
— If it happens on this 5th pixel cycle T-state, the RAS is kept low between the first and second bursts, so it keeps the bits 6-0 of the video address for the second burst. So, duplicate.
Also: www.zxdesign.info/dynamicRam.shtml

Update: Recently (04.2023) yet another snow peculiarity was open. When register I points to slow memory page on 128 machine, the page from where the snow bytes are fetched depends from: 1) on which slow page register I points; 2) what screen is active.
The table shows needed memory page for snow bytes fetching:
I-pointed page Screen 0(page 5) Screen 1(page 7)
1 1 3
3 1 3
5 5 7
7 5 7
In this table rows mean slow page number on which register I points to, columns mean active screen number, table cells mean from what page the snow bytes are fetched. Thanks to TheMartian, IceKnight and Richard Chandler for participation.

Recommendation for game writers — to avoid the snow effect you need to make sure that the register I does not point to slow memory, and the interrupt vector does not get into the slow memory. It is safer and easiest to place it in addresses $8000… $BFFF (register I within $80… $BF) — on machines with snow it's always fast memory page.

Диалектика разрядности

На размышления по теме меня сподвигла статья aa-dav под заголовком 8/16-битный компьютер мечты (процессор Simpleton). Статья, без дураков, замечательная. Понравилась своим рассудительным изложением материала. Мой особенный интерес вызвали мысли автора, оказавшись близкими по духу. Множество раз размышляя на подобную тему “с карандашом в руках” очень похоже изводил себя вопросами озвученными автором. Процесс созидания чего бы то ни было итеративный, наблюдения и заключения меняются по времени, в силу приобретения дополнительного опыта и знаний. Иногда достаточно попробовать сложившуюся на бумаге архитектуру “на зуб” написав в ней десяток другой строк кода и, казалось бы, с железобетонных утверждений приходится слезать. Неизменным всегда остается то, что любой вопрос, касающийся архитектуры, содержит в себе массу противоречий. По большому счету выбор решения в итоге заключается в том какие же из них являются меньшим злом. Так и в случае разрядности появляется масса вопросов и проблем. Для меня в итоге, при решении вопросов разрядности в разработке архитектуры (архитектуры мечты), потеря байта как единицы оперативной информации, оказалась болезненной.
Читать дальше →

Программирование для Famicom/NES/Денди в Nesicide+ca65: маппер MMC3 - HBlank+скроллинг (10) КОНЕЦ

Это будет последний урок в этой серии описывающий на практике последнюю технику которую нужно знать, чтобы написать крутую игру на Famicom/NES/Денди…
Ну хорошо, если призадуматься, то нюансов в программировании на денди есть еще порядком. Как организовать «бесконечный» скроллинг прокручивая две экранных области друг за другом и обновляя вновь появляющиеся с краёв тайлы в VRAM по ходу движения… Как организовать тайлы в метатайлы 2x2, а то и 4x4 для более краткого описания карт и удобного обновления видеопамяти (ведь атрибуты палитр назначаются сразу блоку тайлов 2x2 в экранной области, а один байт атрибутов покрывает 4x4 тайла)… Как воспроизводить оцифрованные DCPM звуки с помощью FamiTone2…
Впрочем, имхо, материалов и примеров изложенных в этих статьях хватит чтобы сообразить как это всё делается самостоятельно. Да и должно же быть какое то пространство и для собственного творчества. Здесь же я поставлю точку в этом цикле и, возможно, займусь какой-нибудь уже полноценной игрой исходники которой выложу, но это будет другая история.

Читать дальше →

Программирование для Famicom/NES/Денди в Nesicide+ca65: маппер MMC3 - страницы (8)

Итак на этот момент нам подвластны 32Кб кода/данных в PRG ROM и 8Кб графики в CHR ROM. Но когда этого перестало хватать в ход пошли мапперы — микросхемы встроенные в картриджи переключающие банки памяти. О них у меня есть отдельная обзорная статья. Одним из крайне популярных мапперов был MMC3 и кроме собственной популярности на его базе было создано огромное число производных чипов. В этой статье мы научимся использовать его для увеличения доступного для игры ROM картриджа.

Читать дальше →

Знаешь, ты мне не нравишься.

Дело в том, что ты напыщенный мудак.

Ты знаешь лучше — как должно быть.
Ты знаешь лучше всех — как должно быть написано/нарисовано/должно звучать, как правильно писать код/рисовать, где что не верно / старо / не в стиле / не та платформа, и какое место на компо должно быть у прода…
И при этом ты знаешь даже — кто в этом виноват.

Читать дальше →