Frog : DEMO DESIGN - Frequently Asked Questions



� ���������� ��� ������ "demo" ����� ���������� demo, intro, diskmag � �.�.


����p�����:


0. H������ � demos, �� ����p�� demomaking'a � � �p�������.
1. ��p����, ������� �����p���������� ��������� � demomaking'y
2. ������ Demos/Intros/Diskmags, ��������� ����, ����� �� �������
3. ������ � �p����� � (�������) ����p�� demos/intros/diskmags
4. Commodore 64 ��� ������, �� ����p�� ���� �������� ������ demomaking'y
5. �����p�� ������p�� �������� ����p����� � ����p����� p������.
	5.1. ���������� �����.
	5.2. ��������p������.
	5.3. �p������.
		��p���� � �p�������
		��������� ��������p���
		�p��������� ����p����
	5.4. �������.
	5.5. X-Mode.
	5.6. Digital Difference ����p��� p�������� �����
	5.7. Digital Difference ����p��� p�������� ��p�������
	5.8. ������ ���������p���p�
	5.9. ������ ������� (flame)
	5.10. Dithering
	5.11. Sine generator
	5.12. ����p�� ���������� SQRT
	5.13. ����p��������
	5.14. Voxel'��� �������
	5.15. BSP (��p��p����)
	5.16. �������� True/Hi color.
	5.16. �������� ��p������ � SVGA
6. ����� ���������� ���p��� � ������.
7. �������� FTP, BBS ���.
8. ENLiGHT'95 Party � �����-����p��p��.
9. ENLiGHT'96 Party � �����-����p��p��.
10. DEMOS,INTROS,DISKMAGS, DEMO_REL, DEMO_SRC �������
11. �������p�����

���� �� ������ ��������� FAQ ��� ���-���� �p�������� - ������:

Peter Sobolev,
2:5030/84@fidonet
[email protected]
[email protected]



0.H������ � demos, �� ����p�� demomaking'a � �p�������.

����� ��������� ��������� � ��� ��� �p���������� �� ���� ��������� demo, ��� � ��� ������ �p��������� � ���� �� ������ ���� ������. H� �p������� �� ������ � ��������� ��������� ���� ��������� ��������� ������� � ����p�� � �p���� �p������� � ������� ����������� �p����� Commodore 64, Amiga, � ����p� PC demo scene.

����p�� ��������� ����� ��p���� ��� ����� p������� demomaking'a �� ������ �� �p�� ��p���������� ����� ����� ��p���������. �p���p�� ��� ��������� ���:

I.   1987..90 - Commodore 64
II.  1988..93 - Amiga
III. 1992..96 - PC

� ��p��� ����� ���������� � ������� demomaking, - ��� ��� �������� � �������� 'for fun'. Demos p��������� �� ������ �� party �� � �p���� ��� - ��� ����� � ������-���� ���������. ���������� fido/internet ����� (� ��� ��������� - ������������� ��p����� p������p������ ���������� � tools'��) ������� ������� �p������������ � ������ demo. ������������� ��p��p����� �������� ��������� ����p�� ��� �������. �� ����� demos ���� ����� ���������� �������� �������� ���������� �������������� ��������� (�p���������� �p�����, p��������� ��p�����, ����p����� ������� � ������� ������, �������� ���������� p�������� ������ � �������� ������ demo). � ����� ����� ����� ��������� ����� � PC ��p�� ���� ������������ � ��p����� �� ������ ��������. ��������� PC ����� �� ����p������ ������� �����p�����, ����p ������� ����� demomaker'�� ��� �� Amiga'y.

���p�� ����� - ����� p������� Amiga �������� � ���� ��� ���� ����� ������������ � ����� p������ �� ����������� ������ ����p�� �� ���� � C64. ��� � ��p��� ���p��� ���p���� � ������ ����������� ����p����� �����p��� ������� � p������� �p�����, � ����� ������� ����� ������ � ���p���� ����. Demos �p���p��� ����� ������� - ��� ����� ����� ����p���� ����� �����p��� 3d � 2d ����� (��p��� � �p�����), ��� �p����� � ��������� ��p��� ����p�����p�������� � �������.

��������� BBS ����� ������������ � ��p�� ���� ������������ ����p������. � ������ ����p����� ������� ��� ���p��� p���� ��p���������� p���. ������ � ������������� ��p����� p������� ����� �p�������� ��������� ����p������ ��� ����������. ��� � ���� �������� ������ - ��p�� ����������� Amiga'� ���� ��������� ����p���� � ������� ESCOM'om. ���� ��� ������ ������� ���������, �� ��� ������� ����� ������ ��p� �����p������ ��� ������, p����� ���������� ������� ������������ ����� � ��� ��������� ������� ����p��� � ������. ����, ����� ��p��� ����� ���������� � ��p����� �� �p���� ������, ����p�� �� �������� ����� �p������. ���� ������� ����� PC.

�p���� ����� ������� demomaking �������� ����������. ��������� VGA � SB ���� ����� ������� ������ � ���� ���p�������. � ����� �� ��� ������ ���� ������� �� �p�������� ������, ����� p������������ �����. ����p� ����p������ �����p��� �������� ���p���� � ����� ������. ��������� �� ���� ��������� PC ���������� ��������� (� ������ ������) �� Amiga � ����� ���� �� C64, �� ��� ���������� � ������ ��������p������� ���p����� �����/�p������p�. ��� �� �� ���p���� ��p�����p����� demomaker'�� ��p���� ������� � ��������� �� 3d ������� ����� �p� ���������, �p������ ���. �������p� ��p���� p������p��������� PC, ����� �p��p����p����� ����� ��� ���, � ����� ������� - ��� �������� �� ���� ���������� �����, - ����� ������� ��� ������� ����p���p� ������� � BBS/FTP ��p��� p�������� ��������, ������� �� ������ � ��p������� �����. "����� demomaker'om..." ��� �p����� � ��������� ����������� ���������� ��������� ������������ ���������� ����� ����p�� �p���� ���� ������p��� �� �����, �� �� ��� �������� �� �� �p�����p� ������������. Party ����p� �p��p������� � ����� �����p������ ��p��p����� � ��������� �p�����. �� ���������� ����� p���� �p���p��������� ���������� �����. ���� ����� p������ ����� �p���� ���������� ���� �p�����p���, �� �� ��� �������. ����� ���������� �� �� party ������ p���� ���-�� �����������. ���������� ������p��� �� ftp.cdrom.com/pub/demos ����� ������� �������� � ������ �������� p����.

������ �������� �� p������ � �� ������� ����. � ���� ��� �p������ ����� ������ �p����������. ������� ����p��� � demomaking'y ������� ����� "������" ����� � ���p�������� ������ ������� ����� ����� ������������ ����� ����p�� ����� ����������� ���� ��� ���� ���� ����p�� �� ��������� � ����������. ����� �������� ��� ��� �p�������� :)

��� ��� ����� ��� �������� "� ���". ���� ������p�� ������ ������� ��� ��� ��� ������� �������� ����� ��������� ������. ���� p����� ����� � xUSSR �� ������� ������ �������, ������� �� ����� �p���������� ����� ����p����� p�����.

� ��p��� ���p��� ����� �������� ��� demo ��� � ��p��� ���p��� �p���������� ���������. ������ ����������� ���� ��� demo �������, �������� �� ����� �p��� ����� ������� �� �p��p����p������. � ���� ������ ����� ������� ������� �p������� demos � ������������ (� ���� � �.�.�p������ :)). ���� ����� ��������� � p������ �� ������ �������� �p������ � �� �p�������������. ����� � � demos - ���� �� ������ �� ��p��� �p������ ������, �� ��� �� ���� p���� ����� ��p���� ����� ��������? ����� p������ �������� �� � ���� xor ax,ax ������ mov ax,0 ��� ���? �������, �� ��� ��� �p����������. H��p���p ��p��� ����� �������� ������������� � ������ ��� ���������� ������ �������� (pure animation). � ���� ������ ����� ��p������ ���� ����������� ������� ���������, ��������� � �p��p������� - ����� ��������� � �������� �� ������������ ����p� ���p�� ��� ��� �� �����. � �p���� ���p��� p������� ��������� �������� ��p��� � ����� ������ ���������.


1.Glossary

(��p��������, ������ ����, �������, ��������� �p������������� � demo scene. � ������� ���� �����, �� ����p�� �p������� ��p���, ���� �p���� ��p���� ��p����)

Musician (music artist) - �������� - ������� ������� ������ ��� demos, intros, music disks � �.�.

Coder (code) - ���.. �p��p����p. � ���������� ����� ������ ����� ����� - ���������� � �������� ��������p.

Graphician (gfx artist) - �������� - p����� ��p�����, ����, �p���� � �.�.

Swapper (swap) - ���������� p������p������� ����� (����� �p���� ��� ��� - �� �����) ��p�� ������� (�� �����p�����) ����� (�������, ������ � �.�.)

Fixer (fix) - ���������� ���p�������� ����� � ����� ��� ��pp������ p�����. H��p���p ���p������ ����� ����, �p���� NTSC'���� ���� ��� p����� � PAL'������ ������ (Commodore 64)

Organizer (organize) - �p��������p, ������� ������������ ���-�� ;) �������.

Cracker (crack) - ���������� ������� ����� � ����� ������ ������/�����-���� ��p��������.

Crew, Group - ������� - �p���� ����� ������������ ����� (���� �p��������p��) ��� p��������� �����-���� �p�����(��) (���p���p ��������� demos, ������ / p������p������ ����� ��� ���� ���� ���).

Demo (� �����) - �p��p����, ���������� � ����� �������� ����������� ������� � �p��p����p������, �p�����, ������, �������. H� �p���������� ����� ����� ���������� �p�����.

����� �����:

demo (demonstration) - p����p ����� ~100k

intro (introduction) - p����p �� ����� 100k. ������� ����� p�������� ��:

1) Invitation intro - intro, ���������� � ����� ������� ��p�� �� �-���� party. ����p��� �������� ������� ��p���������, ������������� ���p��������, �p����, ����� �p�������� � �.�.

2) BBS intro - �p���������� ����� p������ BBS. ������ ���������� p����p�, � ��� ��� ���� �������� ������������ ������� � 1-2 ���������, � ������ ������� (����� Adlib'������). C�������� ��������� � ������, ���������� ����� BBS.

3) Crack intro - ���p�, ���������� � ����� ������ �p�����/cracker'om ����-����. � ��� ����� ������� �p��������� �� ��, ��� � � BBS intro

4) intro - �p��� ����p�, ��������� demo. ���, ���p���p, �� intros, ����p�� ��������� � competition'ax. ��p������ �����, �p��� p����p�, �� demo �� ����������

Trackmo (TRACKING deMO) - �� PC/Amiga - demo ��� intro, � ����p�� ��� �������� (�.�. ����p������) ������ �������� �� ������ ����� ��p����, ��� ����p���� �� ����� �������. ������ - ������ ����� ������� ����� ����p�����p�����). H� Commodore 64 ��� �������� demo, �� �p������� � �p������ ������ ������������� �������� (������� �p����� ��� �p��������� � �.�.)

Dentro (DEmo-INTRO) - demo preview. ���y������� � ����� �p��y���� ����p�� � �����, ����p�� ��� �� ������, �� ���������. ������ ����� ������ �p���� ����p ��p����� (slideshow) � �y����� � ��p��������� ��������, ����p�� ����� �y��� y������ � �����.

SlideShow - ��p����� (p��������� ��� p����p�����), ������������ (��� ������)

Music Disk - ����p �� ���������� ������� ���������/�� �p����, �p����� ���p������� ��p�������/���������/�������.

Diskmag (Disk Magazine) - �����p����� ��p���. ���������� �� �p���� ���������� ����� �������� ������/�p�����/�����-���� ������������� �.�. ������� ��� ��p���� �p��������� ����� �� �����, ��� � ��� ����p�����.

Logo - H�������� p������ (������ ��p���), �p������������ �� ���� ������/������� ����-����. ��� �p�����, ������������� �������� �������, ��� �p�����.

Compo (competition) - ��p���������/����������/�����p� (��. ����� 'Party')

Party - �p������������ � �����-���� ����� ���p��� ��p���. H��p���p, demo parties - � ����� �p�����p� demos, ����p�� ����� ����� ���������� � ����� ��������. �p�������������� ������ �����-���� �������� � �p���������� ������p��. H������� ����� parties �p�������� � ������������� ��p����. �� p�����p�� �p�������� demo party:

Assembly (��p��� ����� �������), TheParty (����p�), The Computer CrossRoads, Tribute, Camelot, etc.

�p��������� demo parties �p�������� �� ��������� �����:

Demo competition - ������������ p����p - ~4MB. ������ �������� (FLI'�� � �.�.) ���p�����.
64k Intro competition - ������������ p����p 64K
4k Intro competition - ����. p����p 4K, ������ ���p����� (�.�. ���� ����� ����������� ��-�p��� �p�����p�)
Graphics competition - ������������ p��p������ 640x480x256 �����p�������, � ����� ���������� �p� ������ p����p���� (3ds, � �.�.) ��p����� ���p�����.
4channel music competition \
8channel music competition / � ����� �� �����p������ ��p����� ���� .S3M,.MOD,.XM,.669,.STM � �.�.

��������p, ������ �p��������� ��� �������p����:
486DX2-66, 4MB RAM, VLB VGA (Tseng, Cirrus),
Sound: SBPro ��� GUS.

HQ/WHQ/RHQ/... (HeadQuarters, World HeadQuarters, Russian HeadQuarters) - "���� ���p��p�" (��p����/p���������/���) - ������ �������� BBS �������. H� ��� ����� ��������� p����� �p����, ��p�� ��� ����� ��������� � ����� �p�����.

Distribution Site (dSite, DistSite) - BBS (ftp), �� ����p�� ����� ������� ���/������ p����� ������(�) dSite'��, ����p��(��) ������ BBS ��������.

X-modes (tweaked modes) - p�����, ����������� �� ������p���� VGA (VGA256K) � ������p���� VGA ������p� �������� p��p������ ���� ������p����� (������)

��p��� p������p�����:
320x240x256c (����p����� �����, 3 ��p�����)
320x400x256c (2 ��p����� � ������� p��p������ - ����p����c)
360x480x256c (��� ���������� p��p������, ����p�� ����� ������� �� VGA �p� 256 ������)

256������� p����� � p��p������� �� ��p�������� >360 ����� ������������ �� ����� ������. ��� ����� ���� �� �� ���� VGA.

������ >400 ����� ����� �������� ���� �� SVGA ��p���. � ���������, �� p����� SVGA ��� �������� ���� ��-p������.

(�� ���� ��p���������� ������� ���������� VGA ������p� � 256k Video RAM)

Gradient Filling (������� �p��������) - ������� �����p� c ������� ���������� �p�����/�����.

Fractal (�p�����, �p���������) -

  1. ������������ ���������, ����p�� �p� ����� ���������� ��p����� ������� ����p������, �������� ��������� - �p���� ����, ������� ��p��������, ��������� ��������p���.
  2. ��������� ��������p���, ��� �������� ��������� ������� ������ � ���p�� �������� �����. ����������� � ������� ���p�� ������� ������������ ��p��������, ����p�p����� � ������� ���p�������� �p������ z(i) = z(i-1)*z(i-1) + c, ��� z - ����������� �����,� - ��p���� ���p����� ���������. ��� �p���������� ����� ��������� � ���p�������� (x,y) ��p���� ����������� ����� z, � ����p�� x - ������������, � y - ������ �����, p������p������� ��������� ���� ������������������ ��p�� ���������� ������� ���������� (n~100-1000) ���p����. H� ��������� p������� ����� (x,y) ������, ������ ��������� �� |z(n)|.
  3. ����� ��p�����/�������/����p������, ��� ��p��p������ ����p�� ������������ ����p���p ��������� �����, ���p���p: ������, ���������� ���������... ����, �� �������� �����, ��� ��� ���� � ��-�� ;))

Voxel (VOlume piXEL) - ������� ������������, �������� ������. ���������� ���������� ������������� ��������� ������������ �� ��������� �������� (������ ����������� ������������ OXY, OXZ, OYZ) � �������������� ���� ��������� ��� ����� ���������.

Texture Mapping - ����� ��������� ����p������/ �p��p�������/ ��p��������/��� �� ����p������, ��� �p������ p�������������.

Environment Mapping - ��������� ��p�� (map) ��p������� ���������� �p�������� � ����, ��� ��������� (��p�������) ������� �������� ��p����� ��� ���p�� ����. �p� ��������� ��������� �������, ��p������ ���� ����������, �������� ���� ������.

bump map - ����� �����������
glow map - ����� ��������������, ������, glow

Motion Blur, Delayed Vectors - p���������� �������. �� ���� ������ ���������� ����p������ �p� (����p��) ��������. ��p��� Delayed Vectors ���� �p��������� � WireFrame ��������.

Fading - ������� ��������� �p����� (�����)����p������. H� PC, ��� �p�����, ����������� ���������� R,G,B ��� ������� ����� � �����p�. H� C64(� ������ �� PC) - ���������� ���p������ ��� ������ ����� ����p������.

Shading (���������, ���p����) - ������, ����������� ����p��������� ������ ��-p������ � ����������� �� p����������� ���������� ���������.

Facet (flat) shading - �p��� ������p������ ���p��������� ������ ����� ������ � ������ �p�������� � �p���p������ �� ��������� � ��������� ����� � �����������. ������ �������� ������� �� �p������.

Gouraud shading (.. ��p�) - ����� ������������ ������� � �������� ��������� ��p�������: ��� ����� ������� ������p������ ����������� p�������� �����, � ����� �p�������� �� ����p������� � p����� ����p������.

Phong shading (.. �����) - ����� ������������ ���������, �p� ����p�� �p�������� ����p������� ��p���� � ����p������ ������p������, � ����� ���p��������, ��� ������� ������ ��p� ����� (�����) � ���� ����� ������������ ����p������, ��� ����� ��p�. (������ p�������, ��� �p�����, ��������� ���)

Nix Shading (.. Nix'a) - ���� ����� - p������������ Phong shading'a (����� N1, ����� 5.1), � ������p� ��� � ���� ������� 256x256. ������� ���� � ���, ��� ��p���� ����p����p����� �� � ����p��� ���p�������, � ������ � �����, ����p�� ��� ��������. ��� ����p������� ��� ����� �� ���p�������, ��� � � ����p��� ���p�������. H� ���� Nix p���� �p������ �p������ �������� �� ���� ���p��������: �p����� ��p���� � ����p����� �������, � �p���p��������� � ����p��� �����p��������� �p� ���p����.

Splines (�������) - ���� �������������� �������, ������������ ��� �p����������� ������� �p���� (�p�������� ��p�� �������� �����) Scaling (��������p������) - ���������� ��� ���������� (�����) ����p������ ��� �������.

Shade Bobs - ������, ���������� �p� �������� �� ��p���, �� �p���������� �p�����p�� �����p�� (���p. �p��� ��� ����p���), �p���� � ������ ����� ��������, �����p�� ���� ��� �p������������ � ������ � �����p�� ����p�p�� ��p���������. �p�����������, ���, ���� ��������� � ��p����� ���p�������, �� ��� �������� ����, �� �� ��p����� � ��p���� ��p���.

Wireframe - �p����������� ������� ����p������ � ���� "�p���������� ��p����" �� ������������� ��p�����.

Zoom (in/out) - ���������� (zoom,zoom in)/���������� (zoom out) �������.

Aspect Ratio - ��� ��������� ������ � ������ ����������� ������� (��� ������ � ������? � �� ������). ��� ������������ ��������, �������������� ������� ������ �������� ������� �� ������������� ����������, �.�. � ���������� 3:4, aspect ratio ������ ������� ����� ����� ������ 320x240, 640x480, 800x600, 1024x768, 1200x900, 1600x1200 � �.�. �������������� ��� ������������� �������� � ������������� ������ aspect ratio ��������� �� ��������� �������:

AspectRatio := ScreenHeight/ScreenWidth * X_Resolution/Y_Resolution;

��� AspectRatio -- ������� a.r.;
ScreenHeight � ScreenWidth - ������ � ������ ������ � ��. (��� ������, ����������� � �.�., ������� ���� � ���������� ��������);
X_Resolution � Y_Resolution - �������������� ��� ������ � ��������.

��������������, ����� ������� "�������� ����� aspect ratio N.NN", �� ��� ��������, ��� ��� ����� ��������� ��� ��� � �������� ��� ������ � ������ � a.r. ������ N.NN. H� � �������, ���� ���� ����� ��������������� �������� c aspect ratio ������ PictureAspectRatio ��� ����������� ������ �� ����������� �������� (� ����������� 3:4) � ������ X_Resolution �� Y_Resolution ��������, �� ������ ��������� �� �� ������ (��� �����, ���� ����� ������ ������� ���������) �

X_Ratio := PictureAspectRatio * 3/4 * X_Resolution/Y_Resolution;

���.

H�, ��� �� �� ����� ��������� � ������� (�� ������ ������), ������ �� � 1/X_Ratio ��� �������.

Transparency - �p��p�������.

Transparent Vectors - ����� ����p������ �p��p������ �������.

Morphing - ������� "�����������" ������ �������(�����������) � ������, ����� ������������ ������� ������������ ������������ ������� �������� ��������� �������(�����������) ��������� � �������� ��������� ���� � �����.

Morphing ������������ �� ���� ����� ���� ��������� ����������:

warping'�, tweening'� � dissolving'�.

Warping - ��� �������������� ����, � ������� �������� ����������� ������������� � ���������, ��� ����� ��� ����������� �� ������. Warping �������� ������� ��� �������.

Tweening, ���������� �� in-betweening, - ������������ ���� ����������� ��� ������������� ������� ��������. Tweening ������ ����������� ��� �������, ������� ��� ����������. Tweening ������ ������������, ���� � ���������� ���������� warping ������������ �� �����. Tweening'�� ��������� ����������� ����� ����� ������ ���������� ��������. ���� � ������� ������ warping'� � tweening'�, ����� ��������� ������������������ �������� ��������� ����������.

Dissolving, ��� cross-dissolving, - ��� �������� � ���������, ����� ���� ����� ���������, � �� ����� ��� ������ "���������". � �������� �������� ������� ����������.

���������� ���: ���� ��� ����������� ������� ������, �� warping �������� ����� ������� ����������������, tweening ������� �����, � dissolving �������� ������� �������� ������ ����������������.

����� ��� ��� ��� ������� ����������� ���������, ���������� morphing.

Raytracing - ����� ����p����� p������������ ����p������ ������� �� ��� ������p������� (��������������) ������. ��� ������� �������� ����p������ �� ����� ���������� �p���������� ������ ���, ����� ��p�������, ��� ����� ������ ������ ������ ����p����������� ��� ���� ����� �� �������. ��-�� ������������� ������� ���������� �p������ � �������� ������ ��� ��������� ����������� ����p������ (�� ������� ���� Amiga,PC). �p���p� �p��p��� p���������� ������ �����: Imagine (Amiga,PC), Caligari TrueSpace (Amiga,PC), RayDream, PovRay, Vivid. � 3D Studio ������ ����� H� ������������.

Rendering - �������� ����p������ �� ���� ��� ����� �p����������� ������� � �������������� ������ �� ������� ������� �������������� ����������� (��������, Raytracing, Gouraud Shading) (����p����� � ����p������, �������� ��p����p��, ���)

Anti-aliasing - ���p������ ��p�������/������������� �����p� ����p������

Bump Mapping - ����� ����p������ ���p����� ����p������

Frame Buffer - ���������� ���������� ������� ������, � ����p�� ����p������ (���p) �p������ � ���� ������� ��� ������ �� ��p��

Clipping - ��������� ������ ����p������, ��������� �� �p����� �������

Modeling - �p����� �������� ��p��, �������� ������� � ��p����p� ��� ����p������

Sprite (����) - ��������� (����������� ������ ��p���) �p��������� ������, ���p��p������� ����p���� ����p�� ����� �������/��p������� � ����� �p���������/��������� p�����. ����� �p������ �������� - ��� ����� �� ��p�� �������� �p��p����� ������, �� ����p�� ��p������ p������. ������ ������� ����� �p������ ��� ��p�������� ������������ ��p����� (sprite to sprite collision), ������������ ��p���� � ����p������� (sprite to background collision), ��p��� ����� ����� ���������� ��p�� ��� �� ����p������� ��� �p���� ��p����� (sprite priority). � ����������� ������ ���������� ��p�������� �� ���-�� ��p�����, ������� �� ��p��� �����p������. ��� ��p��������, ��� �p�����, �p��������.

������� �p��������:
���������� �������.
��������� ������ ����p������ �� �p����.
���������� p��p������/���������� ������ ����p������.
��p�������.

�� ��� �������� ��p������ �� PC - ����� � ���� ������ ���� ��, ��� ��� ���� ��������� �p��������� ������ :) ������� �� ��� - �p���� ��p�����. ��� ��������� ���� ���� p���������� �p��p����� � ��-�� ����� �����.

Animation (��������) - ���������������� ����� �� ��p�� �p������ � ������/�� ����� ����������/�� ���������� ����p������. (�� ������p���� ��p����� ��� ���p���p .FLI,.FLC,.AVI,.MPEG) ���� ����p������ ��p��p����� ��p�� ���, ��� �������� �� ��p��� (���p������� �����-���� ����������, ���� �p���� �� �p���� ����p������) ��, ��� �p�����, ��� H� ��������.

Sound System - ����� demo, ������������ �p���p������� ����������� ������� (.MOD,.S3M,.HSC,.XM ���). ����� �p���������� ����� ��������� �p��p����, ����p�� �p����������� ������p�� API, ����������� �������� �p�������, ���p����� ������, ��p��� ���, ���������� ��p�, ������ ������� ����p�����/���� ���. ����� sound system ��������� ��� ��������� �� ��� ����. ��p�����, ����� ����� p�������� ��� S.S. �� ��� �p���� - FM � Digital.

��p��� �p���� (FM) ��p��� ������ ������������� �� Adlib ��� ����������� � ��� ��p�� (SB ��� GUS + �������p).

�p����������� ����� S.S. ��������:

  1. ��������� p����p ����� S.S. (0.5..3KB)
  2. ��������� p����p ������ (0.5..30KB)
  3. �p���� ������ �p�������� � ���p���� ��������p� (�.�. ��� S.S. ����� �������������� ��� ����������� �p������� �� �p����� �������� ���� p���p����)
  4. ����������� ���������� ����� �������� � p������p������ �������� � ������� �� digital S.S., ������������ ����p����� ������. � ��������� �� PC ���� �p��������� �� ����������.
  5. �p������ p��������� (�� �p������� � Digital S.S.)

��p���� �������: .HSC, .SAT, .CMF, .MID, .ROL, .S3M, .XM, .RAD, .EDL, .D00

�p���p - HSCPLAYER. ��p��� ������, ���������� � HSC Editor'e.

������� ���������, ����p�� ��������� � Asm, Pascal, C.

�p���� �p���p - RAD Tracker. �����p � ��p��� (.ASM). �������� .S3M(fm), .HSC, .RAD.

��� �p���p - EdLib. � ������� �� ���� �p�������� ����� ������ ��p����p� ����p������� � �p������ �� ����������. �� ���� ���� �p��������� �� �������� �������� ��� ��������� FM tracker'�. ������� player (.OBJ). ��p���� .EDL, .D00

���p�� �p���� (Digital) ��p��� ������ ���p������� ����p���������� ��p�� ��� �������. (�� SB, GUS)

�p����������:

  1. ����������� ������������ ����p������, ������� �� �������� � p�������, � ����� �p���� �p���������� �����.
  2. ���� ������������ GUS, �� �p�������� �� �.3 �p� FM., ���� SB, �� ��� �����p��

��p���� �������: .MOD, .XM, .S3M, .STM, .669

�p���p�: MIDAS, GusPlay, DemoVT

������� �p������� �p� ��������� ����������� Digital s.s. �������� ���������� ����p����� � p��������� ������p�� ��������. H� �p������ ��� ���������� � ��, ��� p����� s.s. ��p��� ���� � ��� �� ������ ��-p������. �p���� ����p� �����p��� ������������ p������ �� ���� :) H� �����������.

������:

FM s.s. ������ ������������ � ��������� intro'ax, noter'ax Digital s.s. - � demo, megademo, diskmag'ax



2. Demos, Intros, DiskMags, p������������ ��� ��p�����p������ �p�����p�

PC:

YO!				/FC			intro
Cronologia			/Cascada		demo
Wish				/Majic12 		demo
UnReal				/FC        	 	demo
Second Reality			/FC  			demo
Crystal Dreams II		/Triton 		demo
Show				/Majic12   		demo
HeartQuake			/Iguana  		demo
HellRaiser			/MegaBusters  		demo
Project X-Y-Z			/?        		trackmo
Ambience			/Tran   		demo
KUKOOO2				/TFL   			intro
Copper				/S!P         		demo
Verses				/EMF			demo
CyboMan2			/Complex        	intro64k
StarPort II			/FC         		intro
Luminati			/Tran   		demo
EXCURSION			/Vista Software		intro
WorldCharts I			/FC			diskmag
Imphobia			/Imphobia		diskmag

Commodore 64:

Red Storm 			/TRIAD			trackmo
Place In Space 			/TABOO   		demo
Legoland I,II,III 		/FairLight64 		demo
More Then Nops 			/Taboo   		demo
WonderLand 1..10 		/Censor 		Designdemo
Access Denied 			/Reflex   		demo
World Of Code III 		/ByteRapers  		demo
Red October 			/Triad  		trackmo
Emotional BreakDown 		/Offence		demo
Torture 1...4 			/Padua			demo
Light 				/Crest			demo
Coma Light 			/Oxyron   		demo
Courtesy of Soviet   					gfx collection
Propaganda (1-19) 		/G*P, F4CG		diskmag
Pulse 				/Regina			diskmag
Reformation			/FairLight64		diskmag
Domination 						diskmag

Amiga

State of the Art 		/SpaceBalls  		trackmo
Virtual Dreams			/Fairlight		trackmo
Technological Death		/Mad Elks		trackmo
Top Secret			/Majic12		diskmag

xUSSR projects (PC)

iNFUSED BYTES I,II 		/ROi  			diskmag
FireWork			/CodeWise		intro
Scene Side			/SST			diskmag
Never Land 1,2,3		/Crazy Coder		intro
Glitch by QMG Art Div.  				demo
ENLiGHT'95 party report 	/ROi			report
Painter				/HAX			intro
303				/QMG Art Div.		trackmo
Nosferatu			/Nephilims		demo
Hellizer			/QMG Art Div.		demo


3.������ � �p����� �p�������������� ��p����p� � ����p�� demos/intros/etc...

  1. ���� ���� demo ����� ��������� ������, �� ����������, ����� ��p���� � ��������� ����� ����� ���� �������� ������� (������ ESC), � �� ������ ���������� �� ����p�����. H� �������� ���:

  1. ������� ����� ����p��� ���� demo �� � ��p��� p�� - ������ �� ������ ������� ����� ��� �� �����?
  2. ����� � ���� p����� - ������� ���������� �������� ����p��� ��, ��� ��� �� �p������ (���p���p 10 �������� �p��������� ��� ;)
  3. �����-������ ����� ����� ������� �� ������ ����p�����.
  1. ���� sound system, ����p�� �� �����������, ��p���, ���p���p, ������ �� GUS, ��� ���� �� ����� ����p��� ���������� �p���� ��p� 'No GUS - No Demo'. ����� ������p�� ��� ����� - ��� �����? ;)
  2. ���� ���� demo �p� ������� ���� ��p������� �������� ��p��, �� ���������� ������ ������, � ������� ����p��� �����, ����� ������p��������, ������ ��������� ��p�� � (����������, �� �� �����������) - IRQ, DMA � �.�. ���� � ���, ��� ��� ������� ��p�������� ������p����� � ��p���� ���������.
  3. H� ����������� ����� ��������� ���� � ��� �� ������ �� ��p��� (�.1�)
  4. H� ��p��p��p����p���� ��p����������� p����p��� ��� ��������� ����� ��� 360'� �����. ��� - �p�������� ��������, �� ����p�� ��p��������� ������ - ����� p������� �� ����� ������ � �� p������� �� �p����. ��� ��p��������� p����p��� ������ �������� ��p�������� ���.
  5. H� �������� �������� � �p��� � ����� demo file_id.diz � �����-���� readme (��� noter � ����������� �������), ��� ����� ��p�������� �p�������� � ������, ���p�������� ������� � �.�.
  6. ���� �� �������, ��� ���� demo ������/ �� p������� ��� OS/2, Windows, DV - �� ��p�������� - ��� �������HH� �� ����� ��� ������������.
  7. ���p������ �� ����p����� ��������� �������. ��������� ���� - ���� ����p���� ����p��� � ���p����� demo ���� �����, ��� � � �p��������, �� �p����� �����? ���� ������ ������ �� �p������ � ������, - �������� �p���� �� ���� �������, ����� �������� ������ �����.
  8. ����p�����p���� �������� �� ��p��� � �������. ���p������ ��� ������ ��� ����� ����.
  9. ������, ��� ��� � demo �� �������! ����� ������� demo � ���������, ����p�� ���������� �p���� � p���������, �� �p�����. H� �������������� �� �����p�� � �� ������������. �����p������ p������p����� demo � �������������� ����� �p���� - �p������ ��p�����, ��������, �p����... ���� demo - � ��p��� ���p��� ��������� ������������ �����������, � ��� �� ���p�� �������� �p������ � ������� �p��p����p������.
  10. �� ����p����� demo ������� ������� �� ��p�� ANSi � ��������� ��������, ��� � ���� ��������� � �p���� ����p������...


4.Commodore 64 - �����, ����, �p������, ��p����

�p����:

Commodore 64 - ������, �� ����p�� �������� ��� ����� ��������� ����p� ������� ��� demo/intro/diskmag � ��� �p����.

��p����p������:

CPU: 6510 - 1MHz, 8 bit, RISC like instruction set (56 instructions), 13 addressing modes, pipeline, ~4-5 times faster than Z80 at same clock

Memory: 64K RAM, 20K ROM, standard expansion - 256K & 512K units

Video: Sprites, Raster IRQs, Text/Graphics modes at same time, 320x200x16 colors. With open borders - 512x256 horiz.,vert. scrolling

Sound: 3 Tone Oscillators
4 Waveforms per Oscillator: Triangle, Sawtooth, Variable, Pulse, Noise
3 Amplitude Modulators Random Number/Modulation Generator
3 Envelope Generators (Attack Rate, Decay Rate, Sustain Level,Release Rate)
Oscillator Synchronization
ing Modulation
Programmable Filters
Master Volume Control
External Audio Input

Ports: RS232, IEEE488 serial bus, Centronics, Two A/D inputs Video outputs: Composite video PAL, Monochrome video, RF Expansion Port

Peripherals: 2 Joysticks, Mouse, Light Pen 1531 tape datarecorder 1541,71,81 diskdrives (own ROM/RAM, CPU - 6502AD)


C64 �����

intro

- ��������� �p����� ��p���������� ��p���������/������������ ��p���������� + �p����� ��p��������� LOGO ����� ���� - logo ��� ����p��� ���� ��� �� ���� ������� �����, ���p���p.

LOGO ���������� �� ��p���� ������ ��p������������ p���p����� ���������. ������/���p��� ���� ���� �������� ������� - ���p���p, ���������� �� ��������� ��� ��p�����������.

������ ���� ���-�� � 70% ���p, ������ ����� � �������������. � ������� �� �����, �� ���� ������ �p��������������� � ������������� ������, ���p����� ��, ������, ��p����, �� �� � ���� ������ �� �p���� ���p� (!)

Intro ���� �� ����, ��� �p�����, �� ������������ - �� �p���������� � �����p���������/�p������� ������ � �p����� �����. ����� �� ��� ������������� �� �p�����, ����� ���� p�������������� (������ � �p���������� ����� video ram'a) � ����������� ��� ���� ��p����.

�����p ���p� ��������� � ����������� �� ����p��������� � ������� ������ ���-�� �� 5�� �� 20�� ������ (1.2-5kb). ������ ����� ������� ����p��������� ������� �� �������� ����� 8-15kb.

demos

��������� ����������� ����, ���������� ���� ��� �-���� party, ���� �p���� ��� (����������� ���� ���-�� 70%/30%, �� ��� ������, - ��� ������, ��� ������ �p�����p������� �� party).

�����p - ���-�� �� ����� 1�� ������p����� ����� (�.�. ��p���� 360kb)

Demo �������� �� ���������� ������ - ����� ����p�������. �� �p��� ����p���� (~10-25cek) ��p��� ������ � �p��������� �����-�� �p�����, �� ����������� ��������. �������� ������ ������� �� design, �p����� � ������. �������� ���� ������ �� ���������, ������ ��� ����� ���� ����� �� �64 �� ������ - ��� ����� �p���� ���� ����� ������� ������������. (H������ ��p��� � �p����� �� p������p�������, ������� ����� �� ����).

������� ���� � �����p�����, �� �������� p���� � ������ �� ���� � ������. � �������� ������p���� - ����� ������ �������, ����� ���� �� coder'�� Offence p�������� ������ �� Crest'a ����� ���� (����� �������� - ����� ���p�� ��� ��p�������� :). ��� ��� - Crest � �p����� ��p���� ��p������ �����, � ����p�� ���� ������������ ��� ����. ��� ����p����� ������ �������. Offence �� ��������� ����� �� �����, ��� �������, ����p���� ��p������ ���� �������, �� ����p��� � ����� �� ��p����� �������� :)

H� party ������������� �p���, ��� ����� ��������p�� ������ �� ����� �������p�, � ������� �� ����������� party, ��� ��p�� �p������ ��-�� $$$.

Noters

H�������� (1-6kb) �p��p�����, �p� ������� ����p�� �� ��p��� (������) ��p��� ���������� ����� �p���:

?????? NOTER v?.? by ?????
PRESS SPACE TO SEE ACTUAL NOTE
PRESS ANY ELSE TO EDIT NOTE

���� ��������� ����� ������, �p��� �p�����, �� ��� ������� � ����� �p��� �p������ ���������� p������p�, � ����p�� ����� �������� ����� ( � ���� ��p��� ������). �p���� ��� ������ ����� ������ ����, �������� ����� ��p������ ���. animated chars etc... � ������p�� ����p�� ��� ����� ������ - ��� �� ����� � ���� "p������p", � ��� ���������� ������� ������ (�������� ��p��p�, backspace,del,�������) ������������, ����� ����� �p� ������� ����p����������. ���������� ����� ���p��� - p������������� ��p����, ���p���������� ������ � �.�.. ��p���, ����� ����, ��� ��p������p���� - ��� ��� ������������ (� ������ ��������� ����� �� ����, ����p�� �p� ������� ����� ������ ��� ���� ����� (��������� ������/������), �� ������ ��� � ����� �������).

� ���� ��������� �p����, �� ���� ��� p�� � ������������ ��� ��, ��� ������� �p�������� ������� (�p�����, ��� ������ � �.�).

�������������� noter'� ������ ��p���. H��p���p:

  1. ����� ������� p������� ����, � �� �p������ ������p�� ���������, �� ��� ���p������� ��� p�� ����� ��p����. �������� ������ � ��p����, ��������p�� � crack'y, fix'y � �.�.
  2. H�����p�� ����p�����, ����p�� ������� ������ ������� �� �����. H��p���p, ��� ��� ��p������, ��� ��p������� ����� ����, ��� ��������� party � �.�.
  3. �p����p������� � bust'ax - ��p��������� ��p���, ����p�� ���������, ���� �� ����� ����p��� � �.�.
  4. ���� ���� swapper (��. swapper'� :) ������� ���� �� ����� �p�����, �� ������ ��������� ���� noter �� ������� warez'� �� ���� ����� � �p�������� �����������.
  5. �p���� � �������� ���� ��p����/������ ����p�����, � �� p���� �� ���� �������� :)

Scene

������ ������������� coder'��, graphician'��, musician'��, cracker'�� ���� ��� swapper'� ��� ���p������� ��p���� ����� ��������� ���� �������. ��� ���������� ��p������� � �p����� �p������/p�������� ������ �� ������ warez'��, � �p���� � ����� �� ����.

����� ���� ��� fixer'� - ��� ���������� ���, ��� ������� ���� � ������-��� p��������� �-���� ��p��� �����/��p�.

H��������� �������� ������������ ������ - �� PC ���������� �������� ������ �p����� ����� cracker'��� � demo maker'���. �����p�� � ������p�� �p��� ������ �� ���������� :) ��� ��� - �� c64 scene ����������� ������ ���������� ���� �p���. ��� ��� ����� ��� ����� ���-�� �p���p����� �������������, ��� �p����� � ����, ��� �� ����������� ���� �������� ���������� ���� � � ������ �� �p������ ������� �p��������� ���p� �� ������ ������ :(

��������� � �����������

99.99% ����� ������� �� ����, ���� ���������� C, BASIC, PASCAL, LOGO, FORTH, LISP ���.

������p���� kernel'������ ����p��p���� �����/������ ������ �� ������������ - ����� ����.

���� ��p����/����� �������������, �� ����� ������� ����� �p����� ���p������� �������p������ (�� �64 ����� � �������� ��������� � ��� ������������������, � ����p�� ��������)

������ �� ����p������ ����������, �� ������ ����p������ ��� ��� ���������� �� ��������� ���� :) ��� ������� ������ ���� ����, ����p�� � �� ���� �����p�����.

99.99% ��p���� �������. � �� ����� �� ����� ��p�, � ����p�� �� ���� �� ���p� ��� ���� �� ������� ��� fixed/cracked/trained by ??? :)

����������� p������p� ����p���� �� ���� tracker'��, ������ ������ ���� ���� - ����� ������ (������� order ���, �p���� � �����p��� �� ������� �� ������� ���� ������ �� ����� block'�, ����p����� ��������� ��p��� ���). ����p������ p������p����� � ����� tracker'� ������� ��������� ����p�� (ADSR, �����p�, ���������, ��p�� ����� � �.�.). ������ ����� tracker'� �p�����p����� �� �������� ���.. ������ ���, - ��������, ��� p������� ������ � ������. H��p���p, ��� �������� �� �p��� ��������� ������ ��p��������� ������� ����������, ����� ������ �� �p����� ����� �� ������� �p����� ���� �� p���p� �p������ �� �p���p������ ������. :)

���������� ��p� ��� (����p�� ����� � ������� ����������� ������ ��� ����� ����, ��� ��� ����� ����� ���� �������� :( ;)

�p��p���� ������� ���� � ������� assembler'a, ������ �������� �p����� ���p������ p������p, �/��� � ������� ���� ���������� monitor. ��� �p���������� �� ���� assembler/disassembler ��� ���������� ����� + ���� �������� ��� ���� transfer/fill/load/save/ascii-hex dump/search. ������p�� ���������� �������� �����, �� ��� ��� ������ �������� ������ � �������� 17 ������ (4.3kb) - ����� p����p ���������� ��������� p��������� � ������. ���������� ��p�p���� �� ���p������� ������p���/debugger'ami � �.�. (���� Final Cartridge III, Action Replay � �.�.)



5. �������� ����p���� � ����p����� p������

5.1.���������� �����.
[Andrew Zabolotny]

H� �p�������� ���������� ������ � ������ ����o������ �������� ��p������� ���p���� Phong`�. H��� � ����� p��������� �p��������� ������������ =) ���� �p�����p����� �����p��� �����p���� ���� ������ � ����� �p���� ��� �������� ����������. � �p��������� ��� �������� ����� ������p�� ������ �p��p����p������ 3D �p����� � ����� ��������p��� ������ �� �������� �����p� :-)

�������, ��� � ��� ����� p����, � ����p�� ����������� �����, ����p�� (����?) � ��� �� � ���� �p��� ���� �� �����. ������ � ��� ����� ��������� � ����� ��� ��:

  1. H������� �p�������� (� ������ - ��������� ������������� �p����������� ����p����)
  2. H������� ����p�� (� ��� �������� ��� p����)
  3. H������� ������� �� p������������ �� ������� ������ :-) ���p� � �p����� �� ��� �����p��� p��������� �� ����������� ����� �p����.

����� � ���� �������� ������� ��������� � ������� �����/���p� �� �p����� ��������� �� ����p���� p�����. ��-��p��� ������� �������� ��� ������ � ����p�������� �p���� _��p���������_ ������ ��� ������� �� �p������ p���������� :-( ��-���p��, �� ���� ��������� ������ ������������ �p� p�����, �� ����, ����p����. ������ � �� �����.

1-� � ����p�� ��� ������ ����� ��������. ����p������� ��������� �p����������� ��p���� � ����p��� ���p�������. H�p���� �p������������ ��������� �����p�� � ���p�������� ������������� ����� `����p����` ������ - Phi & Theta. ��� ����p������� ���� �����p�� ����p����p����� Phi & Theta, ����� �� ������� p����p�� 256x256 (64K) /Phi & Theta = 0..255/ ����p����� �������� ������������� �������� ����p������ � ������ ����� �p� ������ ��p���� � ����p������. ����� ����� ������ - �������������� �p������.

����� ����� 2 (���! � �� ����) �p����� ����������: ��-��p��� ���� ������ �p��������� �p����� - ����� ������ �p����� ��p���� ��p������� � ����p��� ���p������� (� ���� ���� �p�����, �� p�������� �������� ������������� ��� �����p (0, 90) ��������� � (180, 90)) � ��-���p�� - ���� ����� ����p�� ��� ��� ����p����p�� �����p� � ����p��� ���p������� �� �������� p�������� ������������ �� ���� ����p�� ���������� �p� ����p������� � ����p����� ���p�������. �p��� ����� ��� ������������ ���: �p�����p����p���� �������� �������������� ��� �����p�:

(0,90) -> (0, 0) �

(180, 90) -> (0,0)

� ����p����� ���p������� �� ������� ���������� p��������, � ����p��� - ��� � �����. ���p�� �����p ��������� �� ������� ���p���.

2-� ��������� ������� �� ��p���. �p����������� �����p� ���p������� ���p�������. ��� ���������� ���p������� ���p������ �� ����p���: � ����p��� Theta ��� ���� ����� �����p�� � ���������� OXY � � ���p������� - ���� ����� ���� OX � �p������� �����p� �� ��������� OXZ. H��������� � ����� ������ �� �� ��� � � ������ N1.

��p��� ��� ������ ����� �������� �� ���� ��� ������

  1. ���� �p������� ������������� ���p�� ��� Z (��� ������������ ��� ���p�� ����p�� ����� �p����� ��� �p��� ��p����). �������� �p���p�� ����� ������� matteus.exe.
  2. ���� �p������� �� "����" ���p�������� �� � ����� ��������� �p������. �p� ���� �������� ������� ���-�� ��� ��� ��������p�����, �� ���� ��� p���� ������ �� ����� ���� (bunny.exe)

3-� �����, ������� � ����� ��� �� �������, ����� ����� ��� ������ ���. H�p���� ����p����p����� � ����p����� ���p�������, �� �� ��� �p� (X,Y,Z) � ������ (Y,Z). H��p������� �����p� ����� ������ ��������� (��� �����) � ���� OX ����� �������� ��p����p ����p������� ��p�. ��� ��������� ������������� �� ���� ���p�������? ����� �p����: �p������������ ��� �p� �������� ����p������� ������ �����p� �������� �������� (�� ����� ���� ��� �� ���) � ����������� ��� ������ ��p� (Y, Z) ������� ������ ��� X ��������� �� ���p� � ��������� p�������:

X^2+Y^2+Z^2=1 => X=Sqrt(1-Y^2-Z^2). (1)

����� �� X,Y,Z ��������� ���� ����� N � L(�����p�� �����). �� ��� - ������������� (������ �� ������ ��������� Phong`�). ��� ��� ������������ � ������� p����p�� ����� �� 256x256.

H��������� ������:

  1. ������ ����� p������p����� ������ ���p���. ������? ������ ��� ��p������ (1)������������, �� ����� ���� X=+/- Sqrt(...). H� �p������ ��� ���������� � �� ��� ������ ����� ����� ����� �� ���� ��� � ���p���. Sux.
  2. ����p������ ������ ���� p������ �� ��� ����� ����� ������ ������� - ����� �� ����� �p��������� ������ ���������� �p����������� ��� �p� ����p������� ���� ���p����� ������ �������� ��������. ������ ��� �������� ���p���� ��p� �p� ��� �� ������� ���� ������ ������� � ����� p��������� :-) ���������� �������� ������ ����� ������� ����������� �p������ ������� �� ���� ���p��������.

� ��������� �p��� ��� ������� ����� ������������. �p��������� ��� ����� �������� �� ��� � ��������� �p��� ��� ����������. H��p���p:

animate.com (4K)
crshtst.com (4K)
loop01.com (4K)
BillG force (64K)
[...]

���������� ��� ���� "�����" ����p��, �������� ��, �������� �� ���� ����������� ������������� �������. ������ �� ����� ���� ������� ���������� ����p�� ��p��������� ��� ��������� `��������`: ��� �� Phong � ����� ����p������ Gouraud shading. �������� �p���p�� ����� ������� ���� PHONG.TXT �p��������� �� ��� ����� �� DEMO.DESIGN.UUE. ���� �� ���������, ��� �����������, �������� ��� ������� �� �� �� ��� ��� ����� :-) H� ������ ����� ��� ���p������� ��� ���� ����� ������������ � fboom.exe (what you can do with a torus) �p���� ����� ���������� ��� 'phong'. ����� ���������� �������p����� � ���� ������� �� ����� �����p� ���p���� ��� �p��� ������ ��� �������� ���p���� ��p�, �p���� ���� ���������� ����������� �� ������� �� �p����������� �p���� ����� ��������� ������������� (� Phong ��� ����� ������ �p����������). � �� ���� ����� �� ���-����� �� ��� �� �� �������� ������� � ����������� :-)

������ � �������: H� ����������� ����� ������������ ����, ������� ����p���� � ��p� �p� ������������� ��������, � �� �����p��, ������ ���������. H��p���p ����, � �������, ��������� drift.exe ����p��� ������������� �� ��p�, ������ ��� � �� ������. ������ ���� � ���� �������! :-) � ����� ��� ����� �p���� ����, � ��������� ��� ������ �p������ ��p� :-)

... ���� �������� H� �� �p����������� ����p����p����� �����p�� ����� ���p�������� ������ �p��. ����� ����, �����p � ���� ����p����p����� ����� :-)

�p�������� ���� ��������� ��p. �� ���p������� ����� ��p���� �����-�� ��������� �����p, �p��������� (1,0,0). ����p� �p�������� ���� ��������� p���������� ��p �� ��� ���������. ��� ������ p������p�� (���p���p) ��������� XOY. �p�������� ���� ��� ����p�� ����� ������ �p��p����� � (0,0,0) � �p���� ��������� �p�� ����� ����� p��p���, �� ���� � 0� ������������ �����p� ����� �� 360�. ����p� ��p����� �p���� ��������� ������������ � ������ ��p�� ����p�� �� �p������; ��� �����������:

     _--_
   /      \
 /          \
/            \           /
              \         /
                \     /
                 ~--~
--------------------------> angle
0                       360

���� �� �p���� �� ������� ��� ����� ��������� ����p�� �p������ ��p�� ��� OX. ����p� �p�������� ���� ��������� ����������� �� ��� OX �� 45�. ��� �� �������? �� �� ����������� ������ ��������� �� ����� �� 1 � cos(45�). ������� ��������� YOZ. ��� �� �����? ��������� 0.

�� ���� �� ����� ����� 90 �p������ ��������� ����� ����� ���� ���������� � �����p�� �����. �� ��� ���� ������ - ��� �� �� ����� ������ ��� ����� (������ �� ��p�������� ������ ����� :-)

� �p���� ���p��� �� ����� �������� � 360 �p������ ��� ����p��� ������ �����p� ��p���� � ��������� (�� ����� ���� 180 �� ����� �������� ��p��� ������� 360). ������� �p���� 360 �p������ �� 256 ������, ����� 90 �p������ ��� 64 �������, ������� �p������� pre-computed ������� � 16k.

����p� ���������� �p��������� ���� �p��������� ����p�� ��� ����� ���p����� �� �����. ����� �p� ��p���� � ��� ��p�����. ��p�� ����� ��� ��p���� ����� �p������ ��������� (��� ������� � ��������� ��p�� �p� �����; �� ��������� ��� �����p� ��p���� ����p����� � (0,0,0) � �� � ����� �p�����������). *���* �p����������� �����p� ������������ �p� ����p������� �����p�� ��p���� �� ����� ��������� � ���� ���������. ������� ����� ��� �����p� ������� ����p����p����� � ���� ���������; �� �� ���p������ ����� �p����� ���� ����� ��p����� � *�p�������* �����p� ����� �� ��� ���������.

��� ��������� ��������� ��� �����-�� ����� � �����p� �����. ���� ���� ����� ��������� (���� �� ������ ��� �� ������ ������ �� ������). ��p�� ���� �� 64`� ������. ����� ������� ��� ���� ����� ��p������ � �p������� �����p� ����� �� ��� ���������. ��� ���� ���-�� �������� (�� ����� ������, �� ���-�� � ���� �����p���� ��������� - �, ��������! �������� �����p ����� �� �����p ��p���� � �������� �����p ��p���������p��� �� ����� ����p�� ��������� � ������ ���������; ���� ����� ��� � ������� �p������� p���� 90�). ����� ����p����p��� ���� ���� (��� ���� �����-�� ������ ������ ���� ��� ����p����p�����: "��p��� ������" ��� "����� ���p���") � ��p�� ������� �� �������.

H����� ����p������ �p������. ��� ����p������ ���������� ��������� ����� (��� p����������) ������� ���� �� ����p����� ��� �������� ��� ���� ���� ��� ������� �����, � ��� ��� ���� - ��� �������. �p� ���� ������ ���� �� ������p�� �� ������ ����� �� ����� ��������� ���p����� :-) �� ���� � ������ ������ ����������� (���� �p��� �� ��������� ��p��� ���� � �������� ������ �p�����). ������� �� �p������ �� ���� ����� �p��� ��������

(cos(A) * (FinColor - StartColor)) + (FinColor - StartColor)/2.


5.2.SCALING
[Oleg Homenko]

������� 2 c�c���� ���p�����:

  1. ��p�� -> (x, y)

  2. �������� p����p�� 256�256 -> (X, Y)

�p��c����� c���, ��� ������ ����p��� �� ���� Alpha �p���� ��c���� c�p��� ����c������� ��p��� (� ��c�� ��� �p�c���� ����p� ��p��� � ������� c��������, � ��c����� ���� c��������, �.�. ���� ��� ��������)

����� ����� ����� ��p���� ��p�����:

X=x*cos[]+y*sin[] ; Y=-x*sin[]+y*cos[]
x=X*cos[]-Y*sin[] ; y=X*sin[]+Y*cos[]

����� ��������� ��p�� c�p��� �� c�p����, �p� ���� ������c� c���� ���p���. ��������� p����p� ���c��� ��p�� x(pix) � y(pix). ����� :

horiz. loop:

x+=x(pix) ; y=const ; => X+=x(pix)*cos[] ; Y+= -x(pix)*sin[], ���

(��������, ��� x(pix), sin � cos ����� ����c���� ���� p�� �� ��c� ���p)

X+=ddx ; Y+=ddy

�� �c�� ��c������� �c��� ���� c������� �� ���c��! ����������:

vert. loop:

x=const ; y+=y(pix) ; => X+=y(pix)*sin[] ; Y+= y(pix)*cos[], ���, �����:

X+=d2x ; Y+=d2y.

�c�� ����p� ��������� � p�cc������ �� �������, �� ��p���� ���� c����� �������c�:

ddx = dist*cos[]
ddy = -dist*sin[]
d2x = dist*aspect*sin[]
d2y = dist*aspect*cos[], ��� aspect=y(pix)/x(pix) ; dist - ����� ��������, ��p����� p��� p�cc������. ����� ��p����, ���� p�� �� ���p ���� ����c���� 4 �p���������� (c���c� - �� �������), � ��� ����c���� X � Y, c������c������� ������ ��p����� ���� ��p���. � �c�!

��, ���. �c� ����c����� ��c������� �p��������� c ���c�p������� ������ 8.8 ���� ����� �p� ���c�������� ����������� ���� ���-�� 80% �� ��������� �p�������������c��, ���� p�c��� ����� �p�c���� ��p�����, ��� �p���� ������.


5.3.FRACTALS

������� � ���������
[Maxime Zakharov]

��p��� ������ - ��� �������� p����� �.�y��� �� ����� �.-�.�������, �.�.�����p "�p����� �p�������", ��p 1993. ����, ��� ����p��y���� �p�������� p�������y� ���� �� ������p���. ���p�� - ������p�� ��� ����� �� ���y ����p������� ��������

��������� ����� � ��������� ������������

��������� ����� ������������ ����������� � ��������� ������������ ���������� � ��������, ������� � �������������� ����� ������ ������������� ������, - �� ������������������� ���������� �����, ������������ �� �������� � ������� �����������:

Z(n+1) = Z(n)^2 + c, ��� c - ��� ����������� ����������.

��������� �������������� ������������������ ����� ������� �� ��������� c � ��������� ����� Z(0). ���� ������������� c � �������� Z(0) � ���� ����������� �����, �� �� ������� ��������� �����, � ���� ������������� Z(0) = 0 � �������� �������� c, �� ������� ��������� ������������. ���� ����� Z(0) ������ �� ����, �� ������������������ ����� ������ ��������� � �������������. ���, �������, ����� ����� � �����, ����� ����� Z(n) ��� ��������� n ��������� ������ �� ����. H� ���������� � ����� �������� Z(0), ��� ������� ������������������ (Z(n)) ������� �� ������ ������, � ������ �������� ������������. ��� �������� c ��� �������� �������� ����������� ��������� ����� Kc ��� �������� Fc:Z->Z^2+c. H�������� �� ��������� ����� ������� �� ��������� ����� Kc.

������ �����������, ��� ��� ��������� ����� ������� �� ������ ��������� c, �� �������� ��, ��������� ��� ����������� ������. �, ����� c, ����� �������� ����������� ������������ �������� �����: ���� �� ��� ������ �� ������� "�������" ����, ������ ���������� ������ ����� �������, ������ �������� ��� �����, ������� � ���� �� ����� ����������.

���� ��� �������� ���� ��������� �����: ��������� �� ��� �������� �������� (�� ������� ��������), � ������ ������������ ����� ������ �� ����� (�� �������� �� ����������� �����������). ��� ���������� ���������� ������� ����������� ������ ����� ��������� - ��������� �������� c, ��� ������� Kc ������. � ������ ��� ���������� ������������, ��� ��� ����� ����������� ��� ������ ��� ������� ��� ����������� � ������� ���������� � ������� ������ ��� ��������.

��������� ����� ����������� � ����� �������� ���������� ���������. ����������� �� ��� �����������. �������� �� ������� ������-���� ��������� Kc � ���������, �� ������ �������, �������, ��-������, ���� ������ �� ����, � ����� ����� �� �������, �, ��-������. ����� ����������� �� ���������� �� ���, ������� �� ������ � ��� ����������. � �� �� ����� ��������� ������������ � �� �������� ��������� �����������: ��, � ������������� �������� ����������� ����� ����� ����� ������ ����, �, �������������, � ����� �� ����� �� �� ��������� �� ������� � � ���������, �� ������ ��������� �� ����� ����� �. H� ��� ����� �������� � ���� �����, ��� ������� ����� ������ ������� �� ����, � ����� ����� ��������. ����� ����, ���� ������������� ��� ����� ���������� �������, �� ��������� ��������� ����� ���� � �� ������� ����� ������ �������� �� ������ �� �����, � ������� �� ���������, �� � �� ���������� ����������.

������������ ���������

������������ ������������ ������-���� �������������� ���������� ������ ����������� ���������, �� ������������ ��� ���� ��������������. ����� ������� �������� ����� ������� ������, ������������ ������������� ������������� �������������� f(x) = x^2 + b * x + c.

������ ���������� ����� �������� ������� �� ������� ��������������

f(x) = x^4 + 2 * Q * x^2 + E (*)

������� ������� �����-���� ���������� �������� ��� ���������� Q � E, ��������, Q = 0,13 + 0,4i, E = 0,08 - 0,5i ������� ���������� - �����������, ������� ��������� ���������� ��������:

iteration = 5000

H�������� ��������: X0 = 0

������� ��������:


X    = +/- SQRT(-Q +/- SQRT(Q^2 + X  - E))
 i+1           i

��������� (*) ����� � ����� ������ 4 �����. H�� ���� ������� ��� ������ �������� �����-���� ���� ������. ����� ����� ������������ ��������� �������. +/- �������� ���� ��� �����. ��� ���������� - ��� ������������ �������. ���� ��������� ������ Xi: ��� x - Re Xi, ��� Y - Im Xi ��� ������ �������� ����������, �� ���������� ������ ����� ���������� ������. ����� ���������� ������ ������� �� �������� ���������� Q � E.

���������� ����� ��������� ������, ������������ ������������ ������ ������� ��������������.


�H������� ��H���������
[Lenik Terenin]

/*
*   File: MANDEL.C
*
*  Mandelbrot set generator.
*  Uses iterative algorithm z(i) = z(i-1) * z(i-1) + c,
*  to determine the color of current (x,y).
*
*       DO NOT try to compile this using WCL386 !
*   Use "WCL -3" or Borland/C++ instead.
*
*   (c) Lenik Terenin, 1995
*/
    #include <dos.h>
    #include <math.h>
    #include <conio.h>

    #define LIMIT 100      // Increase LIMIT to get more exact picture

    #ifdef __BORLANDC__
 void SetVmode( short mode )
 {
     asm {
  mov    ax, [mode]
  push     bp
  int    10h
  pop    bp
     }
 }

 #define PutPixel13(x,y,c) pokeb( 0xA000, (x) + (y) * 320, (c))
 #else
 #ifdef __386__
 #error Can't run in 32-bit mode, sorry...
 #endif

 void SetVmode(short);
 #pragma aux SetVmode =       \
     "push        bp"        \
     "int        10h"        \
     "pop        bp"        \
 parm [ax]

 void PutPixel13( short x, short y, short c);
 #pragma aux PutPixel13 = \
     "push ax"        \
     "mov ax, 0a000h"        \
     "mov es, ax"\
     "pop ax"        \
     "shl bx,6"        \
     "add di,bx"        \
     "shl bx,2"        \
     "add di,bx"        \
     "stosb"        \
 parm [di] [bx] [ax] modify [es] nomemory
    #endif

    main()
    {
 int i, j, k;
 double z_i, z_r, c_i, c_r, tmp;
 double module;

 SetVmode( 0x13 );

 for( i=-160; i<160; i++) {
     c_i = ((double) i) / 100.0;
     for( j=-160; j<40; j++) {
  c_r = ((double) j) / 80.0;
  z_i = z_r = 0.0;
  for( k=0; k<LIMIT; k++) {
      tmp = z_r * z_r - z_i * z_i;

      z_i = 2 * z_r * z_i + c_i;     // z = z * z + c
      z_r = tmp       + c_r;

      module = z_r * z_r + z_i * z_i; // is |z| large enough?
      if( module > 1.0E16 ) break;
  }
  if( k<LIMIT) {
      PutPixel13( i+160, j+160, (k/15)*2+20);
  }
  else PutPixel13( i+160, j+160, 16);
     }
     if( kbhit() ) break;
 }

 getch(); SetVmode(3);

 return 0;
    }

��������H�� ������H��

����, ��� ������ ��p����� :)

         ..........
    0-�   .........      ....
      � ......     .
    ..�.     .   '    '   .   . '
         ..  �       ..
      ..   � '                .' .
    .  ..      .     .'
         .'  .  '.                       ' .
        .   .  . '                  ' .
       '    .  1    |       2         .'  .
     .'     '       '                '   .
    .    '.   .'             . '    .
    '          '.. .......   . '       .
   .    4  ...'''.         '.         .
   .   ..''       '.    3    .      .'
   . .'             ' ........'  ..'
   .'                     ....'''
   ''''''''.........''''''

���c� ���p�� 0 ��������� ������� ��c� (��� ����� ��p����� �����p� ����p������) 1, 2 � 3 - ������� �� p����p� ��c���, ���������� �� 0 ����p����, ��p���c�� � ��c�����p�������, � 4 - ��p����, ����p�� �� c���� ���� ���� ������� 0, �� c����� c��� � ����p����� ���p�������. ��c�� ������� ��c���� c������c������ p���� S1, S2, S3 � S4. �p���p�������� �������, ����p������� ��c� 0 � ���� �� ������� ��c����, ��������c� �������� � ����� ���:

x_new = a*x_old + b*y_old + c
y_new = d*x_old + e*y_old + f,

�.�. ������ �p���p�������� ������c� 6-� �������������� a, b, c, d, e, f, � ������ �������p���� �������� ����p������ �����c��� ������c� 24-�� ��p����p���. ��� ����� ����, ���p���p, ���p������ �p�� "��p���" ������� ��c��, ��� ��� ��p������ ����� �������� ������ � ����� ��c��, � ���c ��� ����� ��c��, �������� ��������� �� �����, c���������� ��� ������ � �����. ����� 4 c�c���� �� 6 �p������� c 6-� ������c����� ������, ����� ����� �c����� �p���� ��p����p�� a, b, c, d, e, f ��� ������� ��c��.

����� ���c����� ���p�������� �p���cc.

��p�� ����� ��������� ����� ����p� ��c�� 0. C ��p�����c���, �p���p���������� S1, S2, S3 � S4 ����p����� �� � ���� �� ������� ��c���, �������c� c������c������ ����� �� 4-� �p���p��������. �����, c���p��, � ����� ��c�� �������� ��c�� ������ ����� �����, ����p����� �� �����... H�c������� ��c�� ���p���� ������ �������, ����� ��p�� ���p��c� ������ ��p������.

H� �c�� p����� c�c���� �������� �p�������, �� ����� ���������� �p������ ��p��������� (� ����c������ c fixed point). ������� � c����� ����������� ��� compo c������ ����c���� 24 "�p�������" ������������, ���� �� � ���, � ������ �������� ��c�� ��� ��������c�. �.�. ����p����� ����� ���������� ��� �c��.

� �� ���� �� ������� ���������� ���� ������������ �������� "����������", �� ��� ��:

        		   //  a      b      c     d     e     f
float coeffs[4][6] = 	  {{ 0.00,  0.00,  0.00, 0.16, 0.00, 0.00,},   // 0
		          { 0.85,  0.04, -0.04, 0.85, 0.00, 1.60,},   // 1
		          { 0.20, -0.26,  0.23, 0.22, 0.00, 1.60,},   // 2
			  {-0.15,  0.28,  0.26, 0.24, 0.00, 0.44,},}; // 3
void fractal (unsigned char i,unsigned char c)
// i - number of chhosed line in coeffs[][]
// c - color of pixel
 {  // x(j+1) = x(j)*a + y(j)*b + e
    // y(j+1) = x(j)*c + y(j)*d + f
  float x1, y1;
  x1 = x * coeffs[i][0] + y * coeffs[i][1] + coeffs[i][4];
  y1 = x * coeffs[i][2] + y * coeffs[i][3] + coeffs[i][5];
  x = x1; y = y1;
  putpixel ((int)((x+4)*64), (int)(y*48), c);
 }

- ���������� �������� ���� ���������� ����������; :)

P.S. ���� �������� ����� b1 & c1 �� ���������������, �� �� ���������� �������, �� ���������� �������, ���� � ����� ����� �������� ;-)

P.S.S.S H� �������� ��������� ������� � ��������� FAQ ���������� �������� ��������� "�p�������" const ������������� ��� ���������� �������� ����� /��� ���� �� ����������, ��� � ������ ������/ :

znr = (zr + zi) * (zr - zi) + cr
zni = 2 * zr * zi + ci

� ���� ����� cr & ci;

IMHO ��� ���� ����� ��������� �.�. ��� �������� ������ ������� �� ���� ���� const.

�p���p p������� �p��p����:

#include <stdlib.h>
#include <dos.h>

float x = 0, y = 0;
long int xx = 0;
unsigned char mode, cl = 1;

void ifs (unsigned char, unsigned char);
void putpixel(int, int, unsigned char);

void main (void)
 {
  asm {
    mov ah,0fh
    int 10h
    mov mode,al
    xor ah,ah
    mov al,12h
    int 10h
  }
  int prb;
  unsigned int far *head = (unsigned int far *) MK_FP(0x0040, 0x001a);
  unsigned int far *tail = (unsigned int far *) MK_FP(0x0040, 0x001c);
  do {
    if (++xx > 20000L) {  // change color after XXXXXXL pixel's
      cl ++; xx = 0;
    }
    prb = random(1000);
    if (prb <= 10)
      ifs (0, cl);
    else
      if (prb <= 860)
 ifs (1, cl);
      else
 if (prb <= 930)
   ifs (2, cl);
 else ifs (3, cl);
   } while (*head == *tail);
  *head = *tail;
  asm {
    mov ax,0ff08h
    out dx,ax
    mov ax,0005h
    out dx,ax
    mov ax,0003h
    out dx,ax
    mov al,mode
    xor ah,ah
    int 10h
  }
 }

void putpixel(int x, int y,unsigned char color)
 {
  asm {
// skipped..
   }
 }
        //  a  b c     d     e   f
float paport[4][6] = {{ 0.00,  0.00,  0.00, 0.16, 0.00, 0.00,},   // 01%
        { 0.85,  0.04, -0.04, 0.85, 0.00, 1.60,},   // 85%
        { 0.20, -0.26,  0.23, 0.22, 0.00, 1.60,},   // 07%
        {-0.15,  0.28,  0.26, 0.24, 0.00, 0.44,},}; // 07%
void ifs (unsigned char i,unsigned char c)
 {
  float x1, y1;
  x1 = x * paport[i][0] + y * paport[i][1] + paport[i][4];
  y1 = x * paport[i][2] + y * paport[i][3] + paport[i][5];
  x = x1; y = y1;
  putpixel ((int)((x+4)*64), (int)(y*48), c);
 }

5.4.SPLINES

��� ��� �����:

��� ���� �� �������� ����p�������. ����� ��. Glossary

����:

���� �������� ������� � ������p�� ����p� ����� (����� ���� ���� �p���������, ���p�� �p���������, �� ����� ������� ��p���� ���������� ���������) � ���� �� ������. � �� ������ ��p���� (�����p�, ���� � �����p��� ������) �� i-�� �� i+1 ����� ��p����� ���� ����p����p����� ������� � ������ �������� ������.

H��p���p:

����:

X1, X2, X3 ���p������ �����.
Y1, Y2, Y3 �������� ������� � ���� �����
Y'1, Y'2, Y'3 ��p��� �p��������� � �����

������ ����p����p����� ������� �� ������ ������� ��������� 3-�� ��p���� � ����� ����� ���:

Y = A3 * X^3 + A2 * X^2 + A1 * X + A0

��������, �� ����� ��������� ������� ��� ��p���� ��p����. ������� �������:

Y1 = A3 * X1^3 + A2 * X1^2 + A1 * X1 + A0
Y2 = A3 * X2^3 + A2 * X2^2 + A1 * X2 + A0
Y'1 = 3*A3 * X1^2 + 2*A2 * X1 + A1
Y'2 = 3*A3 * X2^2 + 2*A2 * X2 + A1

�������� ������� �������� ������p����� �p������� ������������ A0, A1, A2, A3 �.�. ���� ����� ��������� ����p����� �������� X1, X2, Y1 � �.�. P���� ��� �������, �������� ������� ����������� ����p����p������ �������� �� ������ ��p����....

��� ��� p���������� �� �p������:

��� ��p���� �p���p:

{------------------------------------------------------------------------}
{    Catmull_Rom and BSpline Parametric Spline Program   			 }
{          											 }
{ All source written and devised by Leon de Boer, (c)1994   		 }
{ E-Mail:   [email protected]    					 }
{          											 }
{ After many request and talk about spline techniques on the  		 }
{   internet I decided to break out my favourite spline programs and  	 }
{   donate to the discussion.       						 }
{          											 }
{     Each of splines is produced using it's parametric basis matrix     }
{          											 }
{   B-Spline:         									 }
{	-1	3    -3	1	/     						 }
{	 3   -6 	3   	0     /						       }
{     -3    0     3     0     /  6                                       }
{      1    4     1     0     /                                          }
{          											 }
{   CatMull-Rom:        								 }
{	-1    3    -3     1     /						       }
{	 2   -5     4    -1     /     						 }
{     -1    0     1     0     /   2  						 }
{ 	 0   	2	0   	0     /      						 }
{          											 }
{    The basic differences between the splines:     				 }
{           										 }
{ B-Splines only passes through the first and last point in the  		 }
{   list of control points, the other points merely provide degrees of   }
{   influence over parts of the curve (BSpline in green shows this).     }
{          											 }
{ Catmull-Rom splines is one of a few splines that actually pass  	 }
{   through each and every control point the tangent of the curve as  	 }
{   it passes P1 is the tangent of the slope between P0 and P2 (The  	 }
{   curve is shown in red)       							 }
{          											 }
{ There is another spline type that passes through all the  		 }
{   control points which was developed by Kochanek and Bartels and if  	 }
{   anybody knows the basis matrix could they E-Mail to me ASAP.  	 }
{          											 }
{      In the example shown the program produces 5 random points and  	 }
{   displays the 2 spline as well as the control points. You can alter   }
{   the number of points as well as the drawing resolution via the  	 }
{   appropriate parameters.       							 }
{------------------------------------------------------------------------}

USES Graph;

TYPE
   Point3D = Record
     X, Y, Z: Real;
   End;

VAR  CtrlPt: Array [-1..80] Of Point3D;

PROCEDURE Spline_Calc (Ap, Bp, Cp, Dp: Point3D; T, D: Real; Var X, Y: Real);
VAR T2, T3: Real;
BEGIN
   T2 := T * T;           { Square of t }
   T3 := T2 * T;          { Cube of t }
   X := ((Ap.X*T3) + (Bp.X*T2) + (Cp.X*T) + Dp.X)/D;  { Calc x value }
   Y := ((Ap.Y*T3) + (Bp.Y*T2) + (Cp.Y*T) + Dp.Y)/D;  { Calc y value }
END;

PROCEDURE BSpline_ComputeCoeffs (N: Integer; Var Ap, Bp, Cp, Dp: Point3D);
BEGIN
   Ap.X := -CtrlPt[N-1].X + 3*CtrlPt[N].X - 3*CtrlPt[N+1].X + CtrlPt[N+2].X;
   Bp.X := 3*CtrlPt[N-1].X - 6*CtrlPt[N].X + 3*CtrlPt[N+1].X;
   Cp.X := -3*CtrlPt[N-1].X + 3*CtrlPt[N+1].X;
   Dp.X := CtrlPt[N-1].X + 4*CtrlPt[N].X + CtrlPt[N+1].X;
   Ap.Y := -CtrlPt[N-1].Y + 3*CtrlPt[N].Y - 3*CtrlPt[N+1].Y + CtrlPt[N+2].Y;
   Bp.Y := 3*CtrlPt[N-1].Y - 6*CtrlPt[N].Y + 3*CtrlPt[N+1].Y;
   Cp.Y := -3*CtrlPt[N-1].Y + 3*CtrlPt[N+1].Y;
   Dp.Y := CtrlPt[N-1].Y + 4*CtrlPt[N].Y + CtrlPt[N+1].Y;
END;

PROCEDURE Catmull_Rom_ComputeCoeffs (N: Integer; Var Ap, Bp, Cp, Dp: Point3D);
BEGIN
   Ap.X := -CtrlPt[N-1].X + 3*CtrlPt[N].X - 3*CtrlPt[N+1].X + CtrlPt[N+2].X;
   Bp.X := 2*CtrlPt[N-1].X - 5*CtrlPt[N].X + 4*CtrlPt[N+1].X - CtrlPt[N+2].X;
   Cp.X := -CtrlPt[N-1].X + CtrlPt[N+1].X;
   Dp.X := 2*CtrlPt[N].X;
   Ap.Y := -CtrlPt[N-1].Y + 3*CtrlPt[N].Y - 3*CtrlPt[N+1].Y + CtrlPt[N+2].Y;
   Bp.Y := 2*CtrlPt[N-1].Y - 5*CtrlPt[N].Y + 4*CtrlPt[N+1].Y - CtrlPt[N+2].Y;
   Cp.Y := -CtrlPt[N-1].Y + CtrlPt[N+1].Y;
   Dp.Y := 2*CtrlPt[N].Y;
END;

PROCEDURE BSpline (N, Resolution, Colour: Integer);
VAR I, J: Integer; X, Y, Lx, Ly: Real; Ap, Bp, Cp, Dp: Point3D;
BEGIN
   SetColor(Colour);
   CtrlPt[-1] := CtrlPt[1];
   CtrlPt[0] := CtrlPt[1];
   CtrlPt[N+1] := CtrlPt[N];
   CtrlPt[N+2] := CtrlPt[N];
   For I := 0 To N Do Begin
     BSpline_ComputeCoeffs(I, Ap, Bp, Cp, Dp);
     Spline_Calc(Ap, Bp, Cp, Dp, 0, 6, Lx, Ly);
     For J := 1 To Resolution Do Begin
       Spline_Calc(Ap, Bp, Cp, Dp, J/Resolution, 6, X, Y);
       Line(Round(Lx), Round(Ly), Round(X), Round(Y));
       Lx := X; Ly := Y;
     End;
   End;
END;

PROCEDURE Catmull_Rom_Spline (N, Resolution, Colour: Integer);
VAR I, J: Integer; X, Y, Lx, Ly: Real; Ap, Bp, Cp, Dp: Point3D;
BEGIN
   SetColor(Colour);
   CtrlPt[0] := CtrlPt[1];
   CtrlPt[N+1] := CtrlPt[N];
   For I := 1 To N-1 Do Begin
   Catmull_Rom_ComputeCoeffs(I, Ap, Bp, Cp, Dp);
     Spline_Calc(Ap, Bp, Cp, Dp, 0, 2, Lx, Ly);
     For J := 1 To Resolution Do Begin
       Spline_Calc(Ap, Bp, Cp, Dp, J/Resolution, 2, X, Y);
       Line(Round(Lx), Round(Ly), Round(X), Round(Y));
       Lx := X; Ly := Y;
     End;
   End;
END;

VAR I, J, Res, NumPts: Integer;
BEGIN
   I := Detect;
   InitGraph(I, J, '');
   I := GetMaxX; J := GetMaxY;
   Randomize;
   CtrlPt[1].X := Random(I); CtrlPt[1].Y := Random(J);
   CtrlPt[2].X := Random(I); CtrlPt[2].Y := Random(J);
   CtrlPt[3].X := Random(I); CtrlPt[3].Y := Random(J);
   CtrlPt[4].X := Random(I); CtrlPt[4].Y := Random(J);
   CtrlPt[5].X := Random(I); CtrlPt[5].Y := Random(J);
   Res := 20;
   NumPts := 5;
   BSpline(NumPts, Res, LightGreen);
   CatMull_Rom_Spline(NumPts, Res, LightRed);
   SetColor(Yellow);
   For I := 1 To NumPts Do Begin
     Line(Round(CtrlPt[I].X-3), Round(CtrlPt[I].Y),
       Round(CtrlPt[I].X+3), Round(CtrlPt[I].Y));
     Line(Round(CtrlPt[I].X), Round(CtrlPt[I].Y-3),
       Round(CtrlPt[I].X), Round(CtrlPt[I].Y+3));
   End;
   ReadLn;
   CloseGraph;
END.

5.5. X-Mode

��� ����� X-Mode?

��� ��������� �����p������, �����p�������� ����� ������p���� VGA 256K (�� ������p���� VGA ������p��) � ������� ������� p��p������ �/��� ���-�� ������, ��� ������p���� BIOS p�����.

����� ��� �����? H������ ������������ ������p���� p������?

��� ��������� �p����. � ������� �� ������p���� X-Modes ���������:

  1. ������������ ��������� �p��������� ��p���� � p������ 256 ������. (� �p��������������� ������p����� p����� 13h)
  2. ���������� ������������� �p��������� Video RAM, ����� ���� ���������� ~4-x �p����� ����p���� �p� ������ ����p������.
  3. H�����p�� �p���� ���������. (���� ��p�������)

����� �� VGA �����p������ X-Modes?

��, �p��������� ����� (� ���� �������� ��������� ������ � MCGA � PS/2-50) H� ��������� ������ ������ ��p����������� p��p������ >360 �����.

��� ���������� X-Mode?

��� �p�����p� ��������� X-Mode 320x200x256 (�������������� 4 ��p�����) �p���� p����� �p����� ��������� ��p����p�� p����p��� - ������� ��p����������� � �����p������p���� (������ �p��p����� TWEAK)

{ Set normal 320x200x256 mode }

	mov   ax, 0013h
	int   10h

{ Put the CHAIN4-mode of Sequencer off }

	mov   dx, 03C4h
	mov   ax, 0604h
	out   dx, ax
	
{ Clear the video memory (setting mode 13h clears only every fourth byte from each plane) }
	
	mov   ax, 0F02h
	out   dx, ax
	mov   dx, 0A000h
	mov   es, dx
	xor   di, di
	xor   ax, ax
	mov   cx, 8000h
	rep   stosw
	
{ Note: Parts 4 and 5 may need switching round, i.e. do part 5 first, then part 4... but it works anyway.... }
	
{ 4. Turn off the CRTC's LONG-mode }

	mov   dx, 03D4h
	mov   ax, 0014h
	out   dx, ax

{ 5. Turn on the CRTC's BYTE-mode }

	mov   ax, 0E317h
	out   dx, ax

��� ��p������� ����� � x-mode?

H��p���p ���:

	mov    bx,[x]  ; get X
	mov    ax,[y]  ; get Y
	mov    dx,320  ; for 320 pels wide
	shr    dx,1
	shr    dx,1
	mul    dx
	mov    cx,bx
	shr    bx,1
	shr    bx,1
	add    bx,ax
	mov    ax,102h
	and    cl,3
	shl    ah,cl
	mov    dx,3c4h
	out    dx,ax  ; set bit plane mask register
	mov    ax,0a000h  ; sreen segment A000
	mov    es,ax
	mov    al,[color] ; get color of pixel to plot
	mov    es:[bx],al ; draw pixel

5.6. Digital difference (DDA) ����p��� p�������� �����.

������ ����� p�c������ �p���� ����� �c����� �� �p�������� c ���c�p������� ������.

�p���������, ��� ��p�� ����� �p��������� 320�200, � ����� �c����������c� fixed point 16.16. ��c�� ����� ���� �p���� ���� c����-c��p�� ���p���-����, �p���� ������ �� ����� � ��p������, ��� � ��p��������.

      A
      |\
      |  \
      |    \
      |      \
      |        \
      |          \
      |____________\ B
     C

����� �� ������ ���� �� ������ ���c����c� �� 1 ���c�� ����, � �� |BC| / |AC| ���c��� ��p��� (��c������ ��c��, c��p�� �c���, �p�����). ��� ���c� � ���� � ���� ���c�p������� �����. ����p������c�� ��� �������� ���:

	xor ax,ax   	; ��c�� ���� �� �����������
	mov cx,|AC|   	; ���������� ����� �p����������
	mov di,screen_address_of_A
	vloop:
	add ax,65536 * |BC| / |AC| ; ��� ������� 16 ��� ����� c����
	adc di,320   	; c��p��� 16 ��� - ��� ��p�c � ��p���
	mov es:[di],something
	loop vloop
	end 			;-)

�c�� �������c� ���� �����, �� c������c������: sub, sbb

H������ c������, �c�� ����� ����� � ��p��������. ����� ���� ���-�� �p���: (�c�� ��� �p������� �����, ����� ��� �����, pls!)

	hloop:
	inc di
	add ax,65536 * |�������_�����| / |�������|
	jnc cont
	add di,320
	cont: mov es:[di],something
	loop hloop
	end

H�, � c��c�� ��c�� - ����� ���� p�c����� ����� � ����p p����p�� 256�256. ��� �c� 4 ��p����� ����� p�c����� ����� ��c��� ����!


5.7. DDA - ����p��� ����p����� ��p�������.

��������� �p���p:

	; Digital Difference Algorithm demonstration
	.386
	a  segment byte public use16
	  assume cs:a, ds:a
	  org 100h
	start:
	  mov ax,13h
	  int 10h
	  push 0A000h
	  pop es
	next:  mov di,281
	  sub di,word ptr R+2 ; screen addr starting
	;===== 8< ===========================================
	  xor ecx,ecx  ; y starting
	  mov ebx,R  ; x starting
	  mov bp,bx
	circ:  mov al,color
	  mov byte ptr es:[di],al
	  mov eax,ecx
	  cdq
	  shld edx,eax,16
	  div ebx  ; delta x
	  sub ebx,eax  ; next x
	  sub bp,ax  ; looking 4 CF
	  adc di,320
	  add ecx,10000h
	  cmp ecx,ebx
	  jb circ
	;===== 8< ===========================================
	  dec color
	  sub R,17935  ; just a number :)
	  ja next
	
	  xor ah,ah
	  int 16h
	  mov ax,3
	  int 10h
	  retn

	R  dd 281*65536
	color  db ?

	a  ends
	  end start

��� ��� ��������c�? ����� �p�c��. �p������� ��p����c��: y^2 + x^2 = R^2. ��p�� �p���������: (real coders don't afraid of math! :) ) dy/dx = 1/(2*sqrt(R^2 - x^2) * (-2*x) = -x/y (��� �� ��������c�, ��� ���c� sqrt ��������c� �� y). ����� �������� dy = delta_y, dx = delta_x. � �c�!

��������� �����c��. � ����� p��������� DDA c������ p�������� c�����, ����� ����� ���� ��� ������, �������� 45 �p���c�� ��� ��������. ����� �� ��p����� c��� �����, � ������ �p���p� p�c���c� ������ 1/8 ��p����c��, �c������� 7/8 ����� �������� ��p�������� ��p��������. ����� ������� ���� ������� �� 8 �����. �p� �c����������� �p�������� 8.8 �������� ����c����� p����c�� 1...127, � ���� �p���p� �c��������c� 16.16, ������� p����c ����� ���� 1...32767

P.S. H� c���� ���� ��� �� ��p����c��, �� ��� �������? :)))


5.8. ������ ���������p���p�

H�p��, � � ���� ��������c� �p������� � ���c����� ���� �� 2-� ������� ���c��c�� EGA/VGA ������� ���������p���p? � c��� ������ ������ ������ ��� �������� (�������� c�p���, � ����� �����p�� - ������).

  mov si,SetCRT_On
  call InitCRT

        ;[read/write chargen here]
        ;[ Character address is ]
        ;[   A000:CharCode*32 ]

  mov si,SetCRT_Off
  call InitCRT
  ret

InitCRT  proc near
  mov cx,2
  mov dx,3C4h
  call @@local
  mov cl,3
  mov dl,0CEh
@@local: lodsw
  out dx,ax
  loop @@local
  ret
InitCRT  endp

SetCRT_On db 2, 4, 4, 7, 5, 0, 6, 4, 4, 2
SetCRT_Off db 2, 3, 4, 3, 5,16, 6,14, 4, 0

������ ���� ��������� ��� �� �����p���� SetCRT_Off ������ ��������� ��������� �����: db ................. 6,10, 4, 0


5.9. ������ ������� (flame)

������, ��� ���� ������� - ��� ���������� ��� �������, ������ ������� ������� �� ������ �����: ������ ������, �������� ���������� ���.��� �� ����� ����� ���� �� ��� ���� ������ �������. ���������� 320x200 (64000 �����) �������, ������, ��� ��� ������ ����������� ��� ������������� ������ ������ � ������ 13h.

���������, ��� ���� ������� - ��� ���������� ����������� �������. ��� ����� ������ ��������� ����� ����� �����, �� � ���� ������ �������� ����� � ������/�������, ������� (���) � �������, � ������� ����� ������� � ��������.

������� ��� �������. ������� �� start buffer � screen buffer,����� �������� ��� ����������.������� ���� ��������� ���������� �������� start buffer. ��� ����� ����� ������� ��������� �����, ������� ���������� �������� ����� 0 � 199 (�.�. �������� ����� ������� 200). ��� ���� ������������ �������� ��� ��������� �����("hotspots"), ����� �������,������ ��� ������� ��� ������� �����,� ������������� ��� �������� ������ ����� start buffer �� ������������ �������� �����.

��� �������� ��������� ������. ��� ����� ���� ����������� start buffer, �������������� ��� � ��������� ��� � screenbuffer, ������� ��� "��������" (�������� �������/averading) ����� ���������� ��������.

������ ��� ����� ����������� ��� �������� � X,Y �����������.

���� ���� ��������� ��� ��������� �����...

      ��� startbuffer     		��� screenbuffer

    ----T---T---T---T---�       ----T---T---T---T---�
    �0,0�0,1�0,2�0,3�0,4� ���.. �   �   �   �   �   �
    +---+---+---+---+---+       +---+---+---+---+---+
    �1,0�1,1�1,2�1,3�1,4� ���.. �   �X,Y�   �   �   �
    +---+---+---+---+---+       +---+---+---+---+---+
    �2,0�2,1�2,2�2,3�2,4� ���.. �   �   �   �   �   �
    L---+---+---+---+----       L---+---+---+---+----

������ ��������� �������� ��� X,Y ( �������� ��������, ����� �������� ����� �������������� �� � 0,0, ��� ��� ���������� ��������� 8 ���������� ����� ��� ��������� ������ ��������, � � ����� ������ ����� ��� 8 ���������� �����), ���� ��� ��� ��������� - ��������� ������� �������� ���� ���������� �����, �.�. �������

(0,0 0,1 0,2 + 1,0 1,2 + 2,0 2,1 2,2)

� ����� ��������� ��������� �� 8, �� ���������� ��� ��������...

  1. ����� �������� �� ������ �����...
  2. ��� �������� �����
  3. ����� ������� �� �������/�������

������ ��� ���� ������� - ��������� ����� ���������. ��� ����� ������ �������. ��� ��� ���� ��� ����� - ����� ������� �������� �� �������� ����� ���� ��� ��� ������� �������� ������, ���� ����� ������� ����� ������ ������� �� ������� �����.�������� ����������� �������� ��� X,Y=1,1 �� ������������ �� ��� 2, 1 � �������� �� ����� 1,1

������ �������� �������� ����������� ������.������ � ����� ������� ����������� � ���, ����� ���������� ������ ����� � ���������...�� ������ 8 ���������� ����� �� ����������� �������� 2 (���� ���� � ���� ����) � ����� �� 2 ������ 8.������ - ������������� ��������� ������, ��� ����� ������������� ����� 4 ����� ������������, ��� ���������� ����� ���, ����� ����� ���� ������������ ����� ��������� �������.

������ �������� �������� ����� ���������� ����������� �������� �� ������� � ���������� ����� ��������.

=== Cut here ======
; tasm
; tlink
; as usual 8-)

.286
JUMPS
ASSUME CS:_Code,DS:_DATA,SS:_Stack

EXTRN _X_set_mode: FAR

_Stack Segment Para Stack 'Stack'
    db 2048 dup (?)
_Stack EndS

_Data  Segment Para Public 'Data'
       flames     db 32*64 dup (0)
       new_flames   db 32*64 dup (0)
       x     dw 0

y dw 0

_Data EndS _Code Segment Para Public 'Code' SetBorder Macro color mov dx,03dah ; Used for speed test in al,dx nop nop nop mov dx,03c0h mov al,11h+32 out dx,al mov al,color out dx,al EndM Intro Proc Far push ds xor ax,ax push ax ASSUME ds:_DATA mov ax,_DATA mov ds,ax mov ax,0013h int 10h mov dx,03c8h ; Set up palette, black -> red xor al,al out dx,al inc dx mov cx,8 @set_red: mov al,16 ; Some stupid comments sub al,cl shl al,3 ; Multiply al with 4 out dx,al xor al,al ; Xor al with al out dx,al out dx,al loop @set_red ; Loop this 16 times (nah...no more stupid comments) mov cx,16 ; Set red -> yellow @set_yellow: mov al,60 out dx,al mov al,16 sub al,cl shl al,2 out dx,al xor al,al out dx,al loop @set_yellow mov cx,16 ; set yellow -> white @set_white: mov al,60 out dx,al out dx,al mov al,16 sub al,cl shl al,2 out dx,al loop @set_white mov cx,208 ; Set remaing colors to white mov al,63 @whithey: out dx,al out dx,al out dx,al loop @whithey @WaitESC: SetBorder 200 ; Delete the speed test when used in a proggie push ds pop es cld lea di,flames mov si,di add di,64 add si,96 mov cx,61*16 rep movsw ; Scroll the array 1 step up inc di add di,5 mov cx,4 @put_hot_spots: push di push cx push di mov ax,20 ; Get a random x value for hotspot call random pop di add di,ax push di mov ax,190 call random pop di pop cx mov ah,al mov [di],ax ; Set the hotspot pop di loop @put_hot_spots ; Set 4 new hotspots mov word ptr x,1 mov word ptr y,1 @scanning_flames: ; Loop for calculate the new flame array mov di,y ; Interpolate the 8 pixels around the location we wanna calculte a new value for shl di,5 add di,x xor ax,ax xor bx,bx mov bl,flames[di-33] mov al,flames[di-32] add bx,ax mov al,flames[di-31] add bx,ax mov al,flames[di-1] add bx,ax mov al,flames[di+1] add bx,ax mov al,flames[di+31] add bx,ax mov al,flames[di+33] add bx,ax mov al,flames[di+33] add bx,ax shr bx,3 mov new_flames[di],bl ; Save this in the new array inc x cmp word ptr x,32 jb @scanning_flames mov word ptr x,1 inc y cmp word ptr y,64 jb @scanning_flames ; Do it for the whole "map" lea di,flames lea si,new_flames mov cx,64*16 rep movsw ; Move new "map" to old "map" array mov ax,0a000h mov es,ax lea si,flames mov di,320*100+100 mov bx,60 @plot_it: mov cx,16 rep movsw add di,320-32 dec bx jnz @plot_it ; Plot the flames SetBorder 0 ; Delete this speed test mov dx,03dah @bettan: in al,dx test al,8 je @bettan @bettan2: in al,dx test al,8 jne @bettan2 ; Wait for vertical retrace in al,60h cmp al,1 jne @WaitESC ; Wait until the user have pressed ESC mov ax,0003h ; Text mode and Leave the program. int 10h mov ax,4c00h int 21h Intro EndP ;------------------------------------------------------------------------------- RandSeed dd 0 Randomize Proc mov ah,2Ch int 21h mov Word ptr cs:[RandSeed],cx mov Word ptr cs:[RandSeed+2],dx ret Randomize endP ;------------------------------------------------------------------------------- ; In: AX - Range ; Out: AX - Value within 0 through AX-1 ; Destroys: All ?X and ?I registers Random proc mov cx,ax ; save limit mov ax,Word ptr cs:[RandSeed+2] mov bx,Word ptr cs:[RandSeed] mov si,ax mov di,bx mov dl,ah mov ah,al mov al,bh mov bh,bl xor bl,bl rcr dl,1 rcr ax,1 rcr bx,1 add bx,di adc ax,si add bx,62e9h adc ax,3619h mov word ptr cs:[RandSeed],bx mov word ptr cs:[RandSeed+2],ax xor dx,dx div cx mov ax,dx ; return modulus ret Random EndP _Code EndS END Intro

5.10 Dithering

����, ����p���.

���� ������ �p������ ������� (�p���� � �� ���� :) ������ �p��p����: ���� �� ��p������� ������ �p���������� ������, �� ���� ��� ���pp����p����� ��� �������� ��������. � ������������ � Alchemy ������� ������ �p� �p���� � ������ �������. ������� �������� ��� ��������� ��p����:

var
  ditherError:array [0..maxrowlen*3-1] of integer;

procedure initDithering;
var
  i:integer;
begin
  for i:=0 to maxrowlen*3-1 do
    ditherError[i]:=0; { ������� ������ ��� ������ }
end;

const
  errDiffCoef=0.3; { ����������� p���p���p������ ������ }

procedure ditherTrueColor(var arr;len:integer);
var
  tcPixels:array [0..maxrowlen*3-1] of byte absolute arr;
 { Pascal, ��������!     ^^^^^^^^^^^^}
 { ������, ���� �� ����� ������ p��������� }
  r,g,b, { ���� }
 i,  { ������ }
  pixc:integer; { ���� ����� }
 begin
  for i:=0 to len-1 do begin
    r:=tcPixels[i*3]; { ����� ���������� }
    g:=tcPixels[i*3+1];
    b:=tcPixels[i*3+2];
    r:=r+ditherError[i*3]; { �������� �������� (���p�� � �����) }
    g:=g+ditherError[i*3+1];
    b:=b+ditherError[i*3+2];

    pixc:=findClosest(r,g,b); { ������ ���������� � �����p�(��. ����) }

    r:=r-outPalette[pixc*3]; { �������� �� ��p������� �������� �p����������}
    g:=g-outPalette[pixc*3+1];
    b:=b-outPalette[pixc*3+1];

    r:=round(r*errDiffCoef); { ����� ����� ������������ fixed point }
    g:=round(g*errDiffCoef); { ��� � Alchemy (��� 12.4) }
    b:=round(b*errDiffCoef);

    inc(ditherError[i*3],r); { ��pp����p��� ������ ��� ������� ����� }
    inc(ditherError[i*3+1],g);
    inc(ditherError[i*3+2],b);
    inc(ditherError[(i+1)*3],r); { ����� ����� ������� Inc(), ����� }
    inc(ditherError[(i+1)*3+1],g); { ������ �� p���p���p�������, ������� }
    inc(ditherError[(i+1)*3+2],b); { p��������� ���������� }

    tcPixels[i]:=pixc;
  end;
end;

Alchemy (� � ����� �� ���) ��p��� ����������� �����p� ��� ����p����. ��p����� ��� ����� �p����:

const
  maxR=6; { �������� 0..maxR - ����� maxR ������� }
  maxG=8;
  maxB=3;
  maxColor=63; { ��� VGA �����p� }

var
  outPalette:array [0..255*3-1] of byte;

procedure makePalette;
var
  rc,gc,bc,
  r,g,b,i:integer;
begin
  for i:=0 to 255*3-1 do
    outPalette[i]:=0;
  i:=0;
  for rc:=0 to maxR do begin
    b:=round(bc*maxColor/maxR);
    for gc:=0 to maxG do begin
      g:=round(gc*maxColor/maxG);
      for bc:=0 to maxB do begin
 b:=round(bc*maxColor/maxB);
 outPalette[i*3]:=r;
 outPalette[i*3+1]:=g;
 outPalette[i*3+2]:=b;
 inc(i);
      end;
    end;
  end;
end;

����� findClosest �������� ��������� ��p����:

function findClosest(r,g,b:integer):integer;
begin
  findClosest:=round(r*maxR/maxColor)*(maxG+1)*(maxB+1)+
        round(g*maxG/maxColor)*(maxB+1)+
        round(b*maxB/maxColor);
end;

��� � ����� ��� �p����! �p���� - �p���. � ���� ���������� ������ �p���� p���������, ������� � ��������� ������� �������� ������. H��p���p, �� 5 ��� �� ������ ���� - 32K. H� ��� �� � �����, � ����� � ������. H� ��� �� �� ���� �����p����.


5.11. Sine generator

; sine & cosine generator by Karl/Nooon (40 byte version? Never seen one)
; optimized to 41 bytes by Beeblebrox/TMA
; 256 degrees, 8.24 fixed point
.386
a  segment byte public use16
  assume cs:a, ds:a
  org 100h
start:
;-----------------------------8<------------------------------------
 ; sin(x0+2*a) = 2*cos(a)*sin(x0+a)-sin(x0), a=2*pi/256
  mov di,offset sintable
  xor eax,eax
  stosd
  mov eax,64855h ; sin(2*pi/256)
  stosd
  mov ebp,0FFEC42h ; cos(a)
  mov cx,64+256-2
s0:  imul ebp  ; cos(a)*sin(x0+a)
  shrd eax,edx,24-1 ; 2*cos(a)*sin(x0+a)
  sub eax,[di-8] ; 2*cos(a)*sin(x0+a)-sin(x0)
  stosd   ; sin(x0+2*a)
  loop s0
;-----------------------------8<------------------------------------
  retn

sintable dd 64 dup(?)
costable dd 256 dup(?)

a  ends
  end start

����� ������, ��� ������� 16 ��� �� ����������� ������ - ������ ������������ ��, � ��� - � ��� ������


5.12. ����p�� ���������� SQRT

��� �������� �p� ������� ����p��� ���������� Sqrt:

  1. ����� H������:
  1. ��� ������� ����� A ������� �����-���� ��������� ���p��������� X0
  2. �p�������� ���� X(n+1) = (X(n) + A/X(n))/2 ���� X(n+1)-X(n)<=1.

demonstration of this we`ll leave as a exercice to the reader :-)

��� ��� ������� ��� ����p��:

  1. �������� BSR ������� ���p��� �������� ��� �����. � p��������� �������� ����� 0-31.
  2. �� ������� ��������� �� 32� �������� �� 32 ��p�������� ����p��p���� jump`��� �� ����p��p���� ��������������� ���p���� ��������� ����.
  3. � ������ �p��p���� �����p��� � �������� ��������� ���p��������� ����� �����, ����p�� �� �������� `�p����� ��p���` ��� ���� ����� ���������� � ������ ����p���. H��p���p ��� ����p��p���� ����p 15 (������ �� ����) �� �����:

    1. �������� ����� �� ����p��� ����p��� ����� ���� ��������� p���� 2^15..2^16-1.
    2. "�p�����" ��p��� ��� ����� ����p���� ����������(Sqrt(2^15) + Sqrt(2^16-1))/2 = (181 + 256) / 2 = 218.
    3. ������������ ���������� ���p���� ����p���� ���������� ����� ���p���� ��� �p����� ������� (2^15 �/��� 2^16-1)

��������� �� ������� �p��p����� � ������ p����p����� ���� � ��������������� ����������� ���p����. H��p���p:

 mov  ebx,Number
 mov  ecx,218  ; ��������� ���p���������
 @@1: mov  eax,ebx
 cdq
 div  ecx  ; A/X(n)
 add  eax,ecx  ; X(n) + A/X(n)
 shr  eax,1  ; (X(n) + A/X(n))/2
 mov  ecx,eax
 mov  eax,ebx
 cdq
 div  ecx
 add  eax,ecx
 shr  eax,1

       [�.�.�.]

� ����� �� � AX ����� ����p����� ��p���. ������ � AX � �� � EAX? ������ ��� Sqrt(0..2^32 - 1) = 0..2^16-1.

�������� ��� ��� ������� ����� ���p��� �������� ��� - ������� ��� ��p��� (�.�. A=1 ��� A=2) ��p��� ����� `���������` ����� �������� mov ax,1. H� ����� �������� � � ��� ��� A ����� ���� p���� 0 - � ����� ������ ������� bsr ���������� ���� ZF � ����� �� ���� ������ p�����������. �.�. ������ �p�����p� ������ ��������� �p���p�� ���:

iSqrt  proc
; H� ����� - EAX = �����
  bsr  ebx,eax
  jz   @@noBits
  shl  bx,1
  jmp  @@jumpTable[bx]

@@jumpTable:
  dw   offset @@bit0,offset @@bit1, offset @@bit2, ..., offset @@bit31

; ��p�������� ������:
@@bit0:
@@bit1:  mov  ax,1
@@noBits:
  ret

; ��� EAX=4..7
@@bit2:  mov  ax,2
  ret

; ��� EAX=8..15
@@bit3:  mov  ax,3
  ret

; ��� EAX=16..31
@@bit4:  mov  ecx,5
  cdq
  div  ecx
  add  eax,ecx
  shr  eax,1
  ret

; ��� EAX=32..63
@@bit5:  mov  ecx,(5+8)/2
  cdq
  div  ecx
  add  eax,ecx
  shr  eax,1
  ret

; ��� EAX=64..128
@@bit6:  mov  ecx,(8+11)/2
  cdq
  div  ecx
  add  eax,ecx
  shr  eax,1
  ret
[...]
; ��� EAX=32768..65535; ��� ��� ���������� ��� ����� (����� :-)
@@bit15: mov  ecx,(181+256)/2
  mov  ebx,eax
  cdq
  div  ecx
  add  eax,ecx
  shr  eax,1
  mov  ecx,eax
  mov  eax,ebx
  cdq
  div  ecx
  add  eax,ecx
  shr  eax,1
  ret

[��� ���]

  1. �������� ���������� ��p��. ��� ������ ��������� ��� ���������/������� �� ���� ���� ��������� �����p����� 16 p��. ����� ������ � ���������:
  2. function iSqrt(Val : Longint) : Word;
    var root,bitSqr : Longint;
    begin
     bitSqr := $40000000;
     root := 0;
    
     While bitSqr <> 0 do
      begin
       if Val >= bitSqr + root
       then begin
       Dec(Val, bitSqr + root);
       root := (root shr 1) or bitSqr; 
      end
        else root := root shr 1;
       bitSqr := bitSqr shr 2;
      end;
     iSqrt := Root;
    end;

    ��������p������� ������� ��p����:

    Function iSqrt(x : Longint) : Word; assembler;
    asm  db $66;mov cx,x.Word
      db $66;xor ax,ax
      db $66;mov bx,$0000; dw $4000
    
    @@LP1:  db $66;mov dx,cx  {edx = val}
      db $66;sub dx,bx  {val - bitsqr}
      jc @@LP2
      db $66;sub dx,ax  {val - root}
      jc @@LP2
      db $66;mov cx,dx  {val >= (root+bitsqr) -> accept subs}
      db $66;shr ax,1  {root >> 1}
      db $66;or ax,bx  {root | bitsqr}
      db $66;shr bx,2  {bitsqr>>2}
      jnz @@LP1
      jmp @@LocEx
    
    @@LP2:  db $66;shr ax,1  {val < (root+bitsqr) -> dont change val}
      db $66;shr bx,2  {bitsqr>>2}
      jnz @@LP1
    @@LocEx:
    end;
  3. H� � ������� ��������� ����� - ��p��� �� �������. H������ ��������� ��� �� ���� :-) ��� ���������� - � ��� ��� �p� �������� ���������� ��������� p��������� p����p ������� p����� ���������������. �� ���� ��� ����� p������ ������������ ���-�� �� iSqrt(0..2^16-2^18). ����� ������� ���������� ������ 1 � 3 - �������� �������� �p������� �� �� 32 ����� � �� ������, � ��������� ���p��������� �p��� �� �������. H� ��� � ����� �� ���� �����p����. ������ ���� ��� ��p��� ����� ����� �p���� ����������� �� ��p��� ����� ������� (����� ��������� ��p��� �� ������ ����p�����, �� � ��������, 4�, ��� �������). ���p�� ����p��� � �� ���� ����� ���, �� �������� ��� ���� ����� p����p��� ��� ���������� ��p�� ����� �������.

�p������� ��� ���-�� � D.D.UUE �p�����p�� ���������� Sqrt ( ������� �� AZ ).. ������p�� � �� ���, �������... � ������� ��� ���� ;) ������������� ���p������� - 0.05%, � ���p���� �� 70% ����...

��������� �� � TESTSQRT � ������� �� ����� ������ ����� (486SL/25) ����� p���������:

Timing Sqrt   3304.0 square root per second
...... iSqrt   46170.0
....newtonSqrt   59047.0
>... FastSqrt   95354.5  !!!

���� ���������� - ����� ��������� precomputation � 2 ���� ������....

=== Cut ===
{****************************************************************************}
{*    Fast Square root subroutine       						    *}
{****************************************************************************}
{*        Copyright (c) VAY, 1995   All Rights Reserved ;)     		    *}
{****************************************************************************}
type
  STable = array[0..1023] of Word;

var
  SqrtTable: ^STable;
  i: Word;

function FastSqrt( S: LongInt ): Word; assembler;
asm
       db 66h; xor si, si     { xor esi, esi }
       les si, dword ptr SqrtTable
       db 66h; mov bx, word ptr S   { mov ebx, S }
       mov dx, 11
       db 66h, 0Fh, 0BDh, 0CBh     { bsr ecx, ebx }
       sub cx, 9; jle @less
       shr cx, 1
       adc cx, 0
       sub dx, cx
       shl cx, 1
       db 66h; shr bx, cl     { shr ebx, cl }
@less:
       db 26h, 67h, 8Bh, 04h, 5Eh   { mov ax, es:[esi+ebx*2] }
       mov cx, dx
       shr ax, cl
end;

begin
  New( SqrtTable );
  for i:=0 to 1023 do
    SqrtTable^[i]:=Round(Sqrt(i)*2048);
end.

5.13. ����p��������

H������ ����p��... ���p��� � ��������� ��� ���� �p������� ��������� ������� �����, ����� �������� ���� FireWork �� Pentium 100 � Cirrus Logic. ��� � ����� ��� ���p���� - ��� ��p���, �� �� �� ����� �� ������� ! ��� ��p������ ��� �������, ����� ����� ����p��, ��� � ��� �p������� ��p��� ��p���� � �.�. �� ��� � p���������� - ������ ���� ������p���.. ;)

��� ����p�������� ����� ������������ �����p. �� '������' � �������� TimerFreq = 1193182 ��. ����� ����� ��� ���������� ��� ����� �����... � ��� ���� ������� GetTime, ����p�� ����p����� ������� �p��� � '�����'. !) ������� GetTime � ��� ����, � ������� ��� �������� ����, �������� �� ������ ���������. ���� �� � ������� ��� ��� '������� �����'...

�p���������, ��� �� ����� ����p����� ����� 3D-�����, ��������� �� ������������ ���������� �������� (������-�� ������ ����p���� ����� �p������� ��� ����� ����, �� ��� �p���p� ��� ������ ;)

�������� ����p����� ���� �������� Vector-Demo �������� ��������� ��p����:

WHILE NOT( ����� ������� ) AND NOT ( ����� ���� ) DO BEGIN

������ �������� ��������

������������ (�p�p������) �����

END;

� �p������ ��������� ����p������� �p� ������� ����p��������:

  1. ������ ��p���, ����� �p�����: ������� ������H�� �������� ��������� �� �p����� f(t). �p���p: ���������� ���. ������� ���-�� ����
  2.   StartTime := GetTime;
      WHILE (....) DO BEGIN
        Cube.Center.Z := Speed * ( GetTime - StartTime ) + Start;
          {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^������� �� �p�����}
        Cube.Draw;
      END;

    �������� ���������� ����� ������: ���� ��������� �������� �������� � �������� ������� ���, ���p���p, ����p��� �����p �����������, �� ��p������� ����� ������� ���H�_�����, � � ����������� ������� ����������. �����: SUXX !

  3. ������ ���p��, ����� �����: ��������� �����H�� �������� � ����������� �� �p�����, ���p�������� �� �p�������� ���p p������/�p�p������. �p���p: ���������� ���. ��������, �� ������, ����� �� ������� ��� ��p��������� �� p��������� Dist
  4.   Time:=0;
      WHILE (....) DO BEGIN
        T := GetTime;
        INC( Cube.Center.Z, Dist * Time div TimerFreq ); {������� �� �p�����}
        Cube.Draw;
        Time := GetTime - T;
      END;

    ��������, ���� ����� ����� ������, �� ��� �� ����������� �� ����������� ��������� ����������.

    ������ ������� FPS ( Frames Per Second ) - ������� ���������� ����p������.

  5. ������ �p����, ��� ���� ������� ;) ����p�����p��� ������� p������� - CPS ( Counts Per Second ), � �p�p��������� �����, ����� �������� ��������� �p���. ��p���, ����p��� ������� - �� ��p���, ��� ��� ���������� ;) � ���p��� ��� ��� ���� � ������� Timing, ����p�� ��p������� �p�����p� p������ � �p�p������, � ��� ��������� ��� ������ ���� !

����� �� ����� ���p���� 40 CPS (���������� ��� ����������� ���).

����� �p�������� �p���p ����� ��������� ��������� ��p����:

   CONST
     MyCPS = 40;

   PROCEDURE Count; FAR;
   BEGIN
     {������� � ���� ����� ���, ��� ��� ������� ;)}
   END;

   PROCEDURE Draw; FAR;
   BEGIN
     Cube.Draw;
   END;

   StartTiming( MyCPS );     { ������� ���� ���������� CPS ! }
   WHILE (....) DO
     Timing( Count, Draw );

OOOOOPS !!!!

�������� � ������� ����������� � ������� ����� ������ �� ���� �p�������� � ���, ��� �p�����p� Count ����� ������ ��� ��� ������, ���� �� ����� � �p����� !!! ����������� p������...

����� ����, ������ ��� ������ ����� �� ��������� ��� ���, � � � �� ����� ����� �������...

����p� �����p����� �� ������������� ������� Timing:

� ������ Count � Draw:

� Count �������� �� ��������, �� ������� ������������� ������� ��������� ������ ��������.

� Draw ��������� - ��� �������� ��������, �������������� ��������� ��� ����� ��������, ������ � �������� ������� � �.�.

������� ����p����� p�������� ���������� ����, ����p�� ���������� �p���������� ���p������ CPS. �������, ��� ���� p����� ���� ����������, �� ��� ������� �� ����� ��������� ��� ������� ���, ���p���p, 30 p�� � ������� ;)

CPS p������������ ����p��� �� ����� 40, �.�. � ������ ������ FPS = CPS, � ����� 30 ���p�� � ������� ������������ ���� �� ����p�������...

����, ��� ���������� ��������, 60 FPS ���-���� ��������� ����� ��� 30...

���� �� ����������� �����-������ music player, �� ����p���� ��p��p��p����p��� 0-� ����� �����p�. ����� �p������ ��p������� GetTime...

�p��� ����, � �� ����, ��� �� player'� ����p����� ��p������� ���p��� ��p�������� INT 8, ��� ���������� ��� �����p�������� ��������� ������ 0000:046C. ���� �����-�� player ����� �� ������ - ����� �� ����������� ��� - ���� �� INT 8 ��� ����� �����, ������� �p����p� � ��� ��p� ����� ���...

���� �� ������� ShadeBobs ��� ���-�� ��������, p�������� �p������ ������ � �p�����p� Count. H������, ������� ������ ?

������, � ����� ������ ����� ����� �p��������� � DOOM'�. ��� CPS = 35. ��� ������������� ������� �� ����, ��� ��� �� ������ Count �p�������� 4 ����� � LMP, � ���� �������� ��� ����� �� 4, � ����� �� �p��� ������... ����� �� ����������.

=������=

unit Syncro;

interface

const
  TimerFreq=1193182;    {������� �����p�}

type
  Proc = Procedure;

function GetTime: LongInt;   { ��������� �������� �p����� }
procedure Wait( N: LongInt );   { ����p��� �� N �����      }

procedure StartTiming( NCounts: Word );  { ��������� ��������� CPS    }
function Timing( Count, Draw: Proc ): Boolean; { ������� ����p��������      }
        { ^^^^^^^^^^^ ��������������, �p�����p� p������ � �p�p������  }
var
  CPS,      {������������� CPS  }
  NCount,     {���������� p�������  }
  NDraw: LongInt;    {���������� �p�p������  }

implementation

var      { t - ��� ����� (������) }
  tCount,     { t ���������� p������  }
  tDraw,     { t ��������� �p�p������ }
  tFrame,     { ����� t �� p�����  }
  tRest,     { ������� t   }
  tFree: LongInt;    { ������� t   }

function GetTime; assembler;
asm
       cli; mov dx,20h      {�� �����p� ������ ������� �����}
       mov al,0Ah; out dx,al
       mov al,00h; out 43h,al
       in al,dx; mov di,ax
       in al,40h; mov bl,al
       in al,40h; mov bh,al
       not bx; in al,21h; mov si,ax
       mov al,0FFh; out 21h,al
       mov es, Seg0040 {40h}     {�� 0000:046C ������ ���p��� �����}
       mov dx,es:[6Ch]; mov ax,si
       out 21h,al; sti; mov ax,di
       test al,01h; jz @done
       cmp bx,0FFh; ja @done
       inc dx; @done: mov ax,bx
end;

procedure Wait;
var T: LongInt;
begin
  T:=GetTime+N;
  while GetTime<T do;
end;

procedure StartTiming;
begin
  CPS:=NCounts;
  tRest:=0; tDraw:=0;
  NCount:=0; NDraw:=0;
  tFrame:=TimerFreq div CPS;   { ����� �� p����� }
end;

function Timing;
var Tmp: LongInt;
begin
  tCount:=GetTime; Count; Inc( NCount ); { �������, ����p�� �p��� p������.. }
  Tmp:=GetTime; tCount:=Tmp-tCount;
  Inc( tRest, tFrame-tCount );   { ����������� ��������� �p���..    }
  if tRest>=tDraw then begin   { ���� ���������� �p����� - p����� }
    Draw; Inc( NDraw );    { ����p��� �p��� �p�p������...     }
    tDraw:=GetTime-Tmp;
    tFree:=tFrame-tCount-tDraw;
    if tFree>0 then begin
      Wait( tFree );    {  ���� ������� ����p�� ������ -   }
      Dec( tRest, tFree );   {   ������� �p��� ;))     }
    end;
    Dec( tRest, tDraw );
  end;
  Timing:=tCount<tFrame;   {�p���p��� �p���������� ������� CPS}
end;

begin
  asm
       mov al, 34h; out 43h, al   {  ��������� p����� ������ �����p�  }
       xor al, al; out 40h, al   {�� ����� �p����� ����� �� �p�������}
       out 40h, al    { ������ -  �� ���� :(...      }
  end;
end.

====���������� �� Andrew Zabolotny===

AV> 3) ������ �p����, ��� ���� ������� ;)

����p�����p��� ������� p������� - CPS ( Counts Per Second ), � �p�p��������� �����, ����� �������� ��������� �p���. ��p���, ����p��� ������� - �� ��p���, ��� ��� ���������� ;)

� ����� (?) show3d � ����� ���:

  1. ��p�� ���p��� �����p-������� (� ���� ����p�����p������ tmr ch0 � vertical retrace). �������������� p�� � 1/70 ���. � ���� ������������� ��p������� vrCount.
  2. ����� ���:
procedure startFrame;
begin
 frameStartTime := vrCount;
end;

procedure finishFrame;
begin
 frameSpeed := frameStartTime - vrCount;
 While frameStartTime = vrCount do ;
 Inc(frameSpeed, byte(frameSped = 0)); {��� ��p����p ����p�� �����}
end;

[...]
frameSpeed := 1;
repeat
 startFrame;
 for Count := 1 to frameSpeed do
  begin
   {����� ������� ������� � ������ ���p�����}
  end;
 draw3Dobjects;
 finishFrame;
until [...]

5.14. Voxel'��� �������.

0. ����y���������.

���, ��� �������� y����� ����, ����� ������������� ����y���������� ������������ � �������� ������ �y���� �������� ������ ������� ������, ���������� ���� �� ����� ���������� ���������� ��������. ����� ������ �������� ������� �������� � ��y������� ������������. �����y �� ����� ������ �������y�� � ����� �����. ������������, ��� � ���y ������������, ���� ��� ���������� ��������� ������������ - ���������� � ����y���� ����� - Mike Shirobokov � Serguey Zefirov. (���������� � ���, ��� ������ ��� ���y� ����������, y ������ ���). ����������, ����y�� � ���������� ���������� � �������y ���y���� � ���� ����y ������������ ������������ ������ � ������������� �� ��������������.

1. ��������.

  --------------------------------------------------------------�

� � � -� � ----� � - ---- -� � ---_ --T-- ---\ ---- --� � \ -----\ --- (0OO)===-* -----\_---- ----� � - ------ \_ -----\ ' ` ------ ------� � - _ _ ----- ----- \ ------ ------- -� � -------- -- \ ------- ------------- --� � ------- -- --\ ----------- ------------ ---� � ___ -- ----\ --- \ ------- ---------- -----� � -----\ -- ---- \___--- --\ ---- -------- _--------� � ----- \------- - ---- \ --------- ---------- � � --- __ ----- \ -------- --------- � � -- __--- \_ ------ --------- -------- � � ____-------- --------- --------- -------- � � --------- ____------------- --------- � L--------------------------------------------------------------

��������, ������ ������ ���y Comanche Maximum Overkill, ��� ����� y�������� �������� RAH-66. ��� ���� �� �������� "����������" ���y������� - � ��� �������y���� ��������� ���� �������, ��� � ��y��� ����� ��������� ����. ��� �������� � ���y, ��� ������ �������, ��� ���� ����� Nova Logic ������ ������������������ ���y �� ������ �������� ���y�����, �, ������, ���� ���������� � 3d �������. � ���������, �������� ���������� ������ ������� �������y���� � �����, � ���� ����� y�� �������� � �����. ����y���� ����� ���� Mars. ��� - �� ����, �� �� ����� �����, ��� �� ����� ������� ���y, � ����� �� ����y. H� �������� � ���y������ ����������. �����y Mars ��� �y��������� �y���� �������� �������� ���������� �������? ��� ������ ���� �� ������y���� ������������. � �����, �����y�, ����������� ������� ����� �������� ���������� � Magic Carpet'�. � ���, ��� ��������� ���, ����� ����� y����� �� ���� ������.

2. �������. ���������� �������.

Voxel - ����������� ����� �� Volume pixel - ��-�y���� ���������� "�������� �����". ��� ������ �������� �y�� ���� - ���������������� �����, � ������� �� ��������������, ����� ���y����� �����. � ��������� ����������� ����� �������, ��� ������� - ��� �y��� ���������� ������, ������� ���������� ������� ����� ������. ����� ���y� ���� ����������, ��������� �������. H�, ������ ������, ����y �y���� ������� ����� ����� �� ������. ��� ����� ���� � �����, � ��������, � ����� � ������ ���y�� ������������ ������.

��� ����� ������������� (���y����, ��� �� ������� ������ �� �y�����) ��������� ������ �������� ������ - ������ ������ ������ ������y�� �������� �������, ����������� ���������. ����������. �������, � ������y, ������ 100x100x100 �����, � ���������� ���������� ����� ������ ����� �������� � ��������� �� 0 �� 255 ������������. ����� ������, ��� �� ��� ������y���� 1.000.000 ����. ��� �����-����� ����������� �� ����������� ���� ������� ������ 4�� �� ������ ���� �� 4 (������) �������. � ��� - ��������, �����y� ���� ���-�� ������, ��� ����������� �� ����, y������ �� ����y���� ������� ������ ���y�������� ��������.

� ����� ��y����, ����� ������ ������ � ����� ���� ������� ��y������, ������ ��y� ���������� ������� ��y���.

  --------------------------------------------------------------�
  �        �
  �        �
  �    464222347886422467422246446  ���� ��� �� ������� ������. �
  � Q _____________________________    �
  �        --- -    6    �
  � -     -----    --     -  - 4 ��� ������ ���� ����y �
  �    ---   -------  ----   ----- 2    �
  � P _---------------------------_0    �
  �   |��������������������������|       | �
  �   _------------------------------------------------------_ �
  �    ------------------------------------------------------ �
  �    ------------------------------------------------------ �
  �    ------------------------------------------------------ �
  �   _------------------------------------------------------_ �
  �   |     |<----------������-------->| �
  �   ������� ������.  ��� �����y.   �
  �        �
  L--------------------------------------------------------------

� �������� ������ �� ����� ��������� �������� �������� ���y�������� ���������� ��������, ��� ������� �������y���� ����y���� y������: ������� ��������� ������������ �����, ������� �������� �� ��y� �� ���� ���������. ��y���� �������, ��� �������� ����y���� - ������� ����������� �����, ������� ��������� ��y�� ������������� ����������� (������� ��� ��������� P � Q), ��� �������, ���������, � ���� ����� ������� �� ������������ ����� ����������������, ������ ������� ����� ���������� ����y ��������������� �����������, ������ ��� ��������������� ���������� ��������� ���� ��y���y. ������� ������, ������� � ���y, ��� y ��� ���� �����-�� ������� (��������� P), ����������y���� ������� �������������� � ����� (�.�. ������� ����������� �������) � ����� (��������� Q), ����������� �� ������������� ������ � �����������, ��� ����� ������������� ��������. ������ y������, ������� ������������� �� ������� �����, ����������� ��y��� ����� ��������� ������ (��� ��������������� - �� ������y �����������): ��� ������ �����, ���������y������ �������������� ��������� (����� ������, ��� ������ "�����������" ����� - ����y� "������y" �����������) �y�����y�� ����� (��������������, �.�. 0-�� ������, �� ���y ������y �� ������� (� ������y "�����") ����� �������, ���������� � �����-�� ����, ������������� ��� ������ �����, � �� ��y�y� ������y (� ������y "����") - ���������� �������. ����� �������, ��� ���������� �����������.

����� ����������� ��������� y������� � ��� �� ����� ������ ���������� � ������� ������� ���������� ��������. ����������, ��� ����� ������ ������, y�������������� ���� y�������. ��� ����� "������������" ����� ��������� ������ ���� ���� ��������, ������� �������� ���������� ��� ����� �����, � ������������ "����� �������". ����� �������, �� �������� � ���� � �������� ��y� ��y������ �������� - ��� ����� � ������. � �����-��, ����� y�� ����������� � ��������� ���� ����� ������������ - ��� �������������� �����, �� ������� ������ �������� �������y���� ������ �����.

����� �������� ����� ������ �����������, �� ������� ����� �������� ���� � ����� �������, � ������� ��� ����������� � "������������" ������ ���� ���� ���� ���y ����y (������������ � ��� ���� � ����� �����). �����y ����������� ������ �����������y�� ��������� (�� � ��y���) �������.

3. ������������ ��������.

����� ������������ ����, ��� ����� ���������� ������� � ��� ��� ��������, ���������� ����� ����������� ������ �� ���y��������. ������������ ������ - ��� ���, ������� ��� ��������� � ���� Comanche �������������� ����� Nova Logic.

��� �������y���� ������������ ����������� ����������� �������, �.�. �����, ��� ���� ������� ����: ��� ����� - ������ � ����� (�������, �������� ��� ���� ��� ��y��� �����, � ���y��� ������ - ���y����������) � ��� �������� ���������� �y���.

��� ����, ����� ���y���� ����������� �� ������, �����y���� ����y����� ������: �������, ��� y�������, ��� �����, ������������ �������� ���������� ���y������, �������� �����. ���� �����������, ��� � �����, ��������� � �����-�� ����� ����� "��������� ����". ����������� �� ������ ���� ����������� �������� ����������� ������� �� ��������� ������, � ��� ���y����� ����� ����� �� ������ ���������� ������� �y�, ��������� �� ����� � �������������� �� ��������������� �����, �� ����������� � �����-���� ������������ ��������. ���� ��������� ������� � �y��� ������� ������.

��� ���� ��������� ������ ��������, ��������� � ������������� ������������� ����������� ����������� � y�����y��� ���� - ������������� ��������������. ����� ���������� ������ ���������� �����������.

�������� ����y���� ����������� �� ������������ ������ � "�������� ����" � ��� ����� �����, ������� ������������ ����� ����������y� ����� �� ���������������� ������ (�.�. �� � "�������� ����") - �y��� �������� ����� ����� � ���������� ������������� ����-������� - �������� ���y��������, ������������� � ������� � ������ ���� �������. ��y���� �������, ��� ��������, ��� ���������� ����������� ������������� ����� (� "�������� ����") ����� ���� ��������� ����y� �����-���� �� "������������" ����� ��� ����������� ������-����� (�� �� � ���). � ���������� �y��� ����������� ��������� ���������, ��� ��� y������ �y�y� ���������� �� �� �����, � ���� �� ���������, � ������� �� ���������.

������ � ���, ��� ���� ����� �����������. ����������, ��� ���������� ��� ���y�������� ����� ������������ ����-����� �� ������ �� ����� � ������� (��� ���� ��� ������ �������� �y��� �������, ��� ������ ����� ������������ ����-����� �� ������ �������� ������� � �� ������ ���� ����-����� � "�������� ����", � ��������� ��y��� ����� �������� ������� "����" � "���" � �������� �����������. ����, ������� �������������� ������ �����. ��� �������������� �� ������ ���������, �.�. ��������� ����������� �y�� ����-����� ������ ����� � "��������_����" � ��������� "���y����" ��������. H� ��� ��������� ��������� ����� �������y���� �����������, ������� �������� �� ��������� ������ � "�������� ����" � �� ������� �������. ���������� �������� ����� ����������� �y���, ������������ ������ � ������ �� �����, ������������� ��������������� ������������ ����-����� � ��������� �������������� � ����� y��������. ����� ������, ��� ��� ��� �������� ����� �� ����� ������. ������ ��� ���� ������������� ����� � ������������ ����-�����, ��� ������ �� �������� ����� ������������� �������� ����� ����������� ������� � �y��, ������������� ������ � ��������������� ������ ����������� ����-�����. ��� ��������� ������������ ����y���� ��������:

��� ������ ������������ �����

� ���������� ���������� "���y���" ����� ������� ����������� �����.

� ���������� "��������� ���������y�" ����y �� ���y ���� ����� ������

� ...����� ������������ ����-�����. (���������� ����������)

� ����� ������ �� ����� � ����y, ������� ����������y�� ������ �����

� ...��������� � "�������� ����". H������ ���� ������ "�������� �������".

� ������� "������y��y� ���������y" - ��� �� �� ��y� ��������������

� ...���������, ���������� "������� �������" �� ������� ������.

� H������������ ���� ������. (�������� ����y� �� ��� ��������� ��

� ...����y ������ �������)

� ��������� ���y������ ������ �� ��������y, ������� �y��� ����������

� ...�����������. (��� ������ ���������, ��� ���� �����������).

� ...�y�� ������ ���� ���y������ ������ �y��� "�������� �������".

� ��������� ���� ("��������� �����������" ����� ���� ����� �������

� ...����� ������������ ����-�����) � ������������ (���� �� ����������

� ...������� ����� ���).

� � ���� ���������� ������ "���y���" ����� ������, ��� ��������, ��������

� � ...����� �����, ����������y����� �������� "���y���" ����� ��

� � ������������y� ���������,

� � ��:

� � � �������������� ����y, �������������� ���������� ������� �������

� � � ...����������� "���y���" �����, � ���������� ������ ����� ��������,

� � � ...������ �� ����� ������ �� �����. (�� ����, ��� ���� ������� ����,

� � � ...����y��, ��� ��� �������� ������� �� �������������y� ����������y�

� � � ...����-�����). ���������� ���������� "���y���" ����� �������

� � � ...����������� ��������y���� �����.

� � � ��������� �� ������ ����� �� "��������� �����������" �� ��������� ��

� � � ...������y��� ���� ������, ������ �� �������� ����� ������,

� � � ...����������y����� �������� "���y���" ����� �� ������������y� ���������,

� � � ...� ������� ���������� "��������� �����������" ����� ������� �����������

� � � ...���� ����� (�.�. ��������� �� ������y��� ����)

� � � ����������� ���������y ������ "������� �������" - ��� ���� �������� �����

� � � ..."���y���" ����� � �����, ����������� �� ���������y "������� �������"

� � � ...�� "������y���� ����������" � ���������� �� �������� "������y����

� � � ...���������" "���y���" ����� � �����.

� � ����� y������.

� � ��������� �� ���� ����������� "���y���" ����� ��� ���������� "�������

� � ...�������".

� ����� ��y�������� �����.

����� �������� �����.

����������, ��� �������� ������� �������������� ��� ������������� ������������� ��������� ��� ���������� ���������� ��������. ����������� ������ ����� ����� �������������� ��y������� �����. � ������ ��y��� ��� ���� ������ ����� �� ���� (������ � �����), �����y� ���������� ���������� �� ������. ������ ���� ���� � ����y�� ���������������, � ���������, �������y��.

H��������� ������� ������ � ���, ��� ���� ��� ������������� ���� ����������� ���y������� ������� (����������� ������������� ��������������������� ������������ ���������������� ���) ������ ������� ��������� �������.

4. �������� �������������.

��� ������ � ���������� ����������� �� ������ ��y���� y����� y�y����� �������� � ��������� ��� ������ ������������� �������������. ����� �������, ��y�������� �������������, ��� y���������� ����, � ��������������� ��y��� �� ��� �������� ��������. ��������y���� �������� ��������������. � �����-��, ����� ������y���� � �� ����� ������� �������, �� ��� y�� ������� �� ������� ������ ������.

� Mars'� ������������� �������y���� ����y � ��y� ������. ��-������, ��� ����������� ��� ������ "���������" - ��� ����� �� ���������� ����, � ������ ����������� �� ���������� - � ������y��� ����� - � �������� - � ���y��� �����. � ��-������, ��� ����������� ������ � ����� �����, ���� ���������� ����� �������.

������ ������, �����y ����� ����� ���������� ������ ���� ������� �������� ������ ���� ����������, � ��y��� - �����. ��� ���������� ����� "������ �������" ��������y�� �� �� �����, ��� ��� ���� ������� � ������y��� �y����, � �� ���y�� ����� �� ���������, ������ �� ��� �� ���������, �������� ������� �� ���y�� ������, ��� ��� ���� �� ��������� ���y������� ������� ����� +1 ��� -1, � ������ �� ���y�� ������ �������. � ����������� ����� ����������� ������, ���y������ ����������� ���y������� ������� ������� �� �����y� ����� ������� ����� �� ��� �� ���������, ������� ���� ������� ������y����. ����� �������, ���y������ ��������� ����� � �� ������� ���� ����� ����� �����������, � ��� ������� ������� � ��� ����������� "������� �������".

  --------------------------------------------------------------�
  �   H     �
  � ------H11--------------H12--------------H13------- �
  �         --     �
  �   -     �
  � ------H21--------------H22--------------H23------- �
  �    -     �
  �    --     �
  � ------H31--------------H32--------------H33------- �
  �     --     �
  �      -     �
  � ------H41--------------H42--------------H43------- �
  �       -     �
  �       --     �
  � ------H51--------------H52--------------H53------- �
  � Y        --     �
  � .         -     �
  � � ------H61-------------�H62--------------H63------- �
  � L----.X        E     �
  L--------------------------------------------------------------

����� ������ H ����������� �� ����y���� ����y��:

H = H11 + (X - X11) * (H12 - H11) / (X12 - X11)

[..to be continued?..]


5.15. BSP trees

BSP trees, stands for [B]inary [S]pace [P]artitioning trees. ��p���� �p���������� BSP ��p���� � 3D �p�����, ��������� � ����, ���� �p��p������� �� �������������� ��p�� LucasFilm (����� ��� LucasFilm). ���� ��� ���� ���� � `84�. �p������� ��� BSP ��p���� ��� ����p���� 3D-����p������ ��� �p�������������� flight-simulator`��.

��� ����� BSP-��p���� ����� �p������ � �p����� ���� `��������� �p��p����p������` �����, � p������ �p� ��p��p����. ����� �� � ������ ���� ����p����� �p�������� BSP-��p����� � 3D-�p�����.

BSP ��p��� (����p���� � ������ �������� �p�����) - ��� � �������� ����� ��p����p� ������ ����p�� ������ ����p���� ���� p�� ��� ������p��� 3D ������� ��������� ����� ��� ������ ���p�� �p����� ��p��p����� �� ����������� ����p������ ����� 3D ������� �p� p������p���� ��� � p����� ����� �p����. �� �� ����� ���� �� ���� ��������� �� ������������ � ���������� ��p���� :-) ��p��� ��p����� ��������� ��p����: ������������ p���p������ ����p���.

:H�����

����p����� ��������� � "��p�����" �������. ��� "��p������" � ���p�������� �� ��� ������� �p���p�� ���������� ���������� ���������� ��� � ����� �� ���p��� ��� � � �p����. ��������� ����p�� ��p������� ���p����� p���������� �� ��� - ���� `��p���` � �p���� `�����`. ��������� ����� ���� ��������� ��p���. ����p� ����� ����p����� :-) ��� ��������� ����p�� `��p���` �p����p����� � ���� ���������, � ��� ����p�� `�����` - � �p����. ����� ����p��� ���������� p���p����� ��� ���� ���� �����������, � p�������p����� ��� ��p���� ������������ � ������� ���� ��� ��p���� ��p��� ����p�� `��p���` � ��p��� ����p�� `�����`.

��� ������ `��p�����` ������� (����?) �� ������� �p����� ����p���� �p��� ��� ������� ��p���p�.

��� ������������ ���� ��p����? �p��������� ��� ��� ����� ��p������� �p��-��p��� ����� ��������� �� ������ ��������� ��p���. ����� ��p��� ���� ��������� ��p����:

H������� � ��p�� ��p���. ���� �� ��������� `��p���` �� ��������� ����p�� ��������� � ������� ���� �� ������� ��� ��� �� ��� ��������� `�����` �� ���� ��������� ��������� ������, � �� ��� `��p���` - ����� ��� ��� ���������. ������ ��� ��p�������� ��������� � ��� ��������� �� �������� ��� p�� ����p��� p���p����� ��� ��p���� �����p��� ����p�� `��p���`. � ��� �����p����� ���� �� ������ �� ����� ��p���� � ����p�� ��� `�p�����` �����p���. ��� ��������� � ���� ������������. ������� �� ������ � ������� ��p��������� ������. �������� ��������� ����� �������. ���� ���� `�����` �����p���� �� ������� p���p����� �p�����p� ��� ���.

�p��������� � ��� ���� ������������� ������p��� ����� (��� � DOOM`�):

       A
-------------------

      |
     C|
      |
--------------
   B

����� A,B,C - �����, ��� ���p��.

����p��� ��� ��� BSP ��p���. ������� �� `�p�����` ����� C. ��� ����� ����� A � B �� A1,A2 � B1,B2 ��������������:

  A1      A2
------+------------

      |
      | C  * O
      |
------+-------
  B1  B2

BSP ��p��� ��� ����� `�������` ����� ��������� ���p��p ���:

      C
    / \
   A1 A2
  /  \ / \
 B1    B2

�p���p��� ����p��� ������ ������ ��p��� ���� �� ��������� � ����� O:

C->A2->B2(B2)->A2(A2)->C(C)->A1->B1(B1)->A1(A1)->C

�� ��� � �p����� ������� �������� `�������� � ������� ��p��������� ������` :-) ����� ��p���� ����� ������:

B2 A2 C B1 A1

� ���� �� ��p����� ����� � ��p����� ��p���� �� ������� ������ �����. ������� �p���p ������ ��p������� �� ���� ������� ������� :-)


5.16. �������� True/Hi color

True Color Emulation AKA `fake truecolor` ��� �������� ����� ��� 256 ������ � 256-������� p������. �p���� � ������� �� ���������� `truecolor` �����p����� ������ 256 ����� (256*1024) ������ ������ ��� ��� ����������� ��p�������� VGA �����p� � ����� ��� �� �������� ���������� (R,G,B �������� ������ ������ - ������������� ����. ���-�� ������ �� VGA = 2^6*2^6*2^6 = 2^18). ��� ���������� ����� ��������� � ���� ���� ��� �p����������� p����� ������:

  1. ���p����� �����. �� "�������" �p��������� �� ���� "����������" ������� � �p� p���� ������� �� �����-���� �������p����. �p� ���� �����p� ��������������� ����. ��p����: �� 64 ������� R,G,B (192 �����) � ��� 64 ����� �� ���� �����p����. H��p���p �������� ����� �������p����:
  2. ---T--T--T--T--T--T--T...
    �r0�r1�r2�r3�r4�r5�r6�...
    �g0�g1�g2�g3�g4�g5�g6�...
    �b0�b1�b2�b3�b4�b5�b6�...
    L--+--+--+--+--+--+--+...

    ����� p������ ��p������� "����������" �������. �� ���� ����� ��p������� ������ �� `����������` ���p������� (5,9) � R=10, G=63, B=5 � �p���� �������:

    PutPixel(5, 9*3+0, 10 + 64*0);
    PutPixel(5, 9*3+1, 63 + 64*1);
    PutPixel(5, 9*3+2, 05 + 64*2);

    ���� p������p����� ����� ��p����� � �������� p��������� ��� p���������� �� ��������� ��p����������� ����� �� ������ ����p���� �p�������. H��������� ����� ������ - � �p� p��� ������ p��p������ �� ��p������, �� ���� ������ p����� 320x240x256 ����� 320x80x256K. �p���� �� VGA ����� `�������` ��� �p����� ��p��������� p��p������ ��� ���� 320x160x256K ��� ��� �p�������.

    �������� ����� "���p��" ������ ���p������ p�����������, ���p���p �����:

    ------T--T-----T--T
    �r0 g0�b1�r2 g2�b3�
    �  ----  �  ----  �
    �b0�r1 g1�b2�r3 g3�
    +--+-----+--+-----+

    �p� ���� p��p������ ������ ����� p������p�� �� ��p������ � ��p��������, � p������ �������� ����� `����������`.

  3. ����� ������������ ��p��p���� �����p�. �p� ���� ������������ �p� ��p����� (������� ��������� ModeX � �� ����� ��� �p��� ��p�������) - �� ������ �� ��� p������� R, G � B ���������� p������. ����� ��������������� ��p������� �����p� �� ������� ��p����� p����p��� � �p� ������ ��p����� p����p��� a) ��p��p������� �����p� � b) ��������� ������� ��p�����. �p� ���� ������� ����� � ���� ��� ��� ���� ������ ��� ����� ����p�� ��� �p��� ��p����� p����p��� �������� ����. �������� ��� p������� �� ���� ���� ��� ��� ������������� ��p��p����� ��� 256 ������ � ������� ���� 64`�. �� ���� �p�����p� ��������� ������� � ��p����p��� R=10, G=63, B=5 �p��p������� �:

    SetPage(0); PutPixel(5, 9, 10);
    SetPage(1); PutPixel(5, 9, 63);
    SetPage(2); PutPixel(5, 9, 05);

    H��������� ����� ������ - ������� ��p��������� p����p��� ������ � �p� p��� � ��p�� �������� ��p����. ��� ����� p������������ ��-��p��� ������� p������� ������� ������ (������ VGA ������p� ��������� ��� ������, � ���� ������p�� ������� ��� ��������). �p���� ������� ��������� ��p����� ����� ���� ������������� �� �p�� � ������ ���� ��p����. �p� ���� �����p� �p��p����p����� ��� �� ��� "�������" ��� p����� � ������������ ��� ����� ������ ������ �� ��� ����� �p� �� "����������" ���������� ������ RGB �����. ��� ��� ����� ������� �p��������, �� p��������� ����� ����. H��p���p ����� (1 2 3) + (4,5,6) ����� �������� ���� (5,7,9). H���� �p������� ����� ������� ��������� ���������� ����p�� �������� ����p� p�������� ���� (r,g,b) �� ��� ������� � ����� �����p�� (���p�������� ��� ������ ����� ������ � ����� �����p� �� ���� �p���� ��� p����� ������� � ����� � ��� �� �����p�, �� ������ ��� ��� ����p��� 256K ������ �� ��������). ��� ���� ���� ����� ��p��� ���������� �� H�������p��� ������ ����� �p��p���� ��� �p�����p� TGA ������ �� ������� VGA (� ������ ����� ���� 286/12Mhz), � ���� ������� ���� ������ ���� �����p�.

    � ���� �p��� � �������� ��� ���� �����, ����������� ������������ ��p������ � �����p�� � 256 ������ � �����p������ �������� �p�����. ������������ �p���p - shading + texture mapping. shading - �p������� ������������, ������p� - �����p���� ��p�����. ���� ����� �p����. ��p���� �����p� �������� ��p����� � �� ��� ����p���� true color ��p����� 256x256, ��� �� ����� ���p������ - �p�����, �� �p���� - ����p �����. ������������ ��p����� �������� ��� ���-������ �������� ��p�������� � 256 ������ (p��������� �� ������������ ����p���, ���� ����� � ����p�����) � ������������ ��p����� (dithertable) 256x256x8 bit ������������ ��� ������� ��p�����p���� ����� ��p����:

    screen_color = dithertable[ texture_pixel ][ brightness ]


5.16. �������� ��p������ � SVGA.

�.�. ��������� ������/������ ����������� �� ����� ��p��� ��� ��p��������� ������, � ���������� 32-������ ������.

  1. ��� ��������� ������ VESA ��� ���-������ ���?
  2. ��� ��������� ������ ������ ����������� ����������. � ���������� svga kit ��p�� scitech software, ��� � ��������� ��� �� ��� ������, ������� ���� ����� �� �����. ���� ������ �� ������������� - �� ����� ������ � �������� ������, ������� �� ������������� �������� ����������� �����, ���������� ��� �������������. ��� ��������� � ��� ���������� exception, � ����������� �������� ������������� ���� � ���� ����� ������ ��������������� �� �����-������. �� ���� ������ �� �������� ���� ����� �������������� ����������� ���������� 386 ����������.

  3. H�������� ��������� ������ � ������, ��� � �������?
  4. ��� ������ �������. ������ ����, ��� ������� ���� ��� ����������� �������� ����� ���� ����� ������������ ������. ������ ��� �� ����� ������� �������� � ����� ���������. ���� ���������� ���������.

  5. ��� ��� ���� ������ �������� (���������, ��� ��)?

��� ���:

char* Screen = (char*)getLinearPointer(...);
for( int x=0; x<800; x++ )
  for( int y=0; y<600; y++ )
    Screen[ y*bytesPerLine+x ] = random(256);

�� ��� � ������������ ������� ����������, � ����������� ������ �� �����������.

references (BSP.FAQ):

 http://www.ddj.com/ddj/issues/j9507a.htm
 http://www.ddj.com/ddj/issues/j9507b.htm
 ftp://ftp.mv.com/pub/ddj/1995/1995.cpp/asc.zip
 ftp://metallica.prakinf.tu-ilmenau.de/pub/PROJECTS/GENERIC/generic1.1.tar.gz
 file://x2ftp.oulu.fi/pub/msdos/programming/theory/bsp_tree.zip
 http://www.dcs.qmw.ac.uk/~mel/BSP.html
 file://ftp.idsoftware.com/tonsmore/utils/level_edit/node_builders/
 file://ftp.cs.brown.edu/pub/sphigs.tar.Z


6.����� ���������� ���p��� � ������

����� �������� ��p����� ����� �p���p����, ����� ������� ������ �� ���� demos/intros etc..?

��������� ��p���� - ��� ��p�����: GUS(max/PnP) 512k-1MB � SB2.0(SB Pro). ����� �p��������������, �� ���� �p�������� - ������ GUS. ��� ��� �����, ���������� ����������� demos �����p������ GUS. � ������ - ������ GUS.

����������� ���p�� ���������� �������p�����?

� �� ����� ����������� CL5422/CL5428 (� ������ 5422). H� ������ demo parties ����� ���������� TSENG ET-4000, �� ���� ���������, ��� �� ���������� ������p�� ���������� (�p��� ����� - �p� ��� �� ����). �p� ����� ����p�� ��p����� ������� ������ �� ���� - �� �p������.

����� ���� ����� p�������� ��� �� ��������� ����� - ������ ������� DEMO.DESIGN.PIC, ����� ��� ��������� ����������?

H��, ����� ����� - ��� ��p�������� ��������� ��������� graphician'a, musician'a, coder'a,.. ��������� �� ����� ������. ���� �� �� �������� - � �p������ ���� �� SU.GRAPHICS, RU.STRACK ���...

����� ����p �p��p���/������, ����������� ��� �������� demo/intro?

���p���p: Deluxe Paint II, TASM, TP(BC!?:), Alchemy, Caligari TrueSpace/3DS, ST3.x/FT2.x/FM'��� tracker'�, p����� ������ �������, ������p�� �� ����p�� ��� ��� p���� �p������ ������ ������ :)

����� �p��������� p������p� �������� ����� ������������ �p� ��������� demos, intros ���?

H� PC - �� ��p��� �����, ����������, - Deluxe Paint IIe. (��������� ��p���, ��������� � ����, - 2.3). ��� ���� ����� ���� patches, ����������� p������� � xmode. �� ���p�� ����� - Autodesk Animator (Pro). � ����, ������, ���� �p����p� ��� p����� � xmode. � �������� �p�������� - Alchemy, for win: Fractal Painter, Photoshop 3.0, PhotoStyler 2.0

H� Amiga - Deluxe Paint II v4.5 (or >)

H� C64 - H���p ����� ��p�� - ��������� ������� ���������� ������ ������������ p������p���, ����p�� �� p������p�����. �� ��p��� p������p������� - Koala Painter, Art Studio, GunPaint ��������� logo editor'�, ����������� p������� � FLI,IFLI,AFLI (p�����, ���������� ��������� ���-�� ������/p��p������ > ������p�����)

�p��� p������p�� ����� ������������ ������������ renderer'�, ���-��: Caligari TrueSpace, Imagine, 3DS, Real3D ���.

����� ����� FM? ���� ������ - ��� ��� �p��� � ��p���� ������ ������ �� p������� ����p������!

�������p������� ������ :) ���� � ���� ����� - ��p��� ��� ��, ��� FM ������ �p����� ��p���� ������ ����� ��-�� ������ p����p� ����p�������. ���p�� - ��� �� ������� digital music ������p�����? � ������ p������� ����p������ ����������� ����� ��p�������? ����� ��p��� ������ ���� �� ����p�� FM'���� tracker'a (�� ����� coder/musician �� �=64):

People begun to actually hate FM sounds. The arrival of GUS and AWE 32 made wavetable techniques very popular and indeed it sounds very good, but there are some things in the old FM standard that is unique. You can't fiddle with samples in the same way as you can with FM. I personally never quite liked sampling, I find it downright boring. With a FM chip it is like on a C64; you have a few parameters and everything you do has to be done within these parameters. These boundaries makes it funny to make music, to see howfar you can actually push AdLib. To do sounds on FM requires expertice but if you're good at it, almost any instrument can be reproduced properly, except perhaps drums.

����� � �� ��������...

��� ������� - ���������� �p���p� � EdLib'y.

��� ����� FTP (���� �� ���� ��� ����� ���������!)

����� ������� ��� ��� ������ �� BBS �� � ���� Internet. ��� ���� ����� ��������� ������ ����� �� ������ ����� ������ � online Internet'y (��� ��� �p����� ����� ����� ;) � �p������ ��� �������� � ���p������� UUCP �� �� �������� ����p��� �� �p��������.. �������� ������ ����� � RU.INTERNET, RU.NETWORKS

����� ��� ���-���� ���������� ��� �p��������� ��p���y� ����������� � svga p����� (101h � ���������) �������?

���� ���� �������p�� �� �����p������ ����� p���� �� ��� ��������-���� ���p�������� ���� � ��������. ���� ���p���� � ��������� ��������� Dmitry Skavish (5030/175). ��� ��������� �� ��� ���� �������� �� 5030/84 ��� ������ VIDEOMAP.ZIP (FREQ policy ��. ����). ����� ��. ������ �p� �������� ��p������

������� ����� � Mad Max'�� �� xUSSR demo scene?

��� ������� ���. �������� �� ����� �� ��������� ���� � handle'e:

Mike Shirobokov 2:5057/14 Mad Max / Queue Members Group
MaX Brashenko 2:5000/47 MaD MaX

��� ����� ��������: Saruman // fWG - ��� for Work Groups? ;-)

H����! FWG == Fire Wheels Group

��� ���������� DDT �� DDT Entertainment?

�py��� "Deep, Deep Trouble", ����py� ���������� Steel Rat ����� p����������. ����� �� ����� �p����� � TSR'��, ����������� �����p�� ����� �� DDT � �������� �����p������y� �y��y DDT Ent. (����� �� ��p����� ��������) �� ����� � Royal Ghost'��. � DDT �p��y �� p����������. � �p������, ������ ��� DDT ������ ���p��y�������� DDT Ent, �� ���-����, ��� �� ������, p������� ����. ������, ��� �������� DDT Ent, �� ��� � �������� ���������� ����������� �p������ Royal Ghost'a ��� �y�������.

�p� p��������� ��������� ���� �e ������e�c� �p��e��e ��e�� ���p�� �c� Z. B��p�� �c� X � Y �p�����c� ��p������, � ��� c Z ���p��c� ���-�� �e�����e...

�� ������� ��������� X, � ����� ��� ����������� ��� ���������� Y. � ���� ��������. �.�. ���

X := -X*SIN(A) + Y*COS(A);
Y := X*COS(A) + Y*SIN(A);

H������ � �����. H���� ������:

X1 := -X*SIN(A) + Y*COS(A);
Y := X*COS(A) + Y*SIN(A);
X := X1;

�������� �� ��p������ � ����������� ���p������� DMA?

��-�� ��������/�p���� p��������� DMA � ����������� �������� ��� ��� �p����� ����������. ��� ����� ��� ��� p���� REP MOVSD ����� ����������� ����p��.



7.FTP,BBS

Internet:

ftp.arosnet.se			/demo/demo
hagar.arts.kuleuven.ac.be	/pub/demos
ftp.eng.ufl.edu			/pub/???
ftp.funet.fi			/pub/amiga/demos	(Commodore Amiga)
ftp.luth.se        		/pub/msdos/demos
ftp.cdrom.com        		/pub/demos		(�������� ��������)
x2ftp.oulu.fi        		/pub/msdos/programming	(� �������� �� �p��p����p������)
pitel_lnx.ibk.hvu.nl       	/pub/c64		(Commodore 64 stuff)
utopia.hacktic.nl       	/pub/c64		(Commodore 64 stuff)
+>abel.pdmi.ras.ru		/pub/demos		(ENLiGHT'96 releases)

IRC channels:

#coders, #trax, #demos, #c-64 (Sharks' bot - Sharkbite), #amiga

xUSSR BBS/FREQs:

SkyNet Station - 2:5030/84 - Home of iNFUSED BYTES diskmagazine, ROi WHQ. some interesting sources and tiny intros. Mainly uuencoded in DEMO.DESIGN.UUE some time ago. FREQ 'FILES'. 9600+, 00.00-07.00msk No BBS, FREQ only. USR RC V32B-14400/HST-16800/RHST-21600/V32T-21600

Bulletin Board System Sysop: Mr. Byte Fidonet: 2:5100/33

Modem: 14400/V32b/V42b 24h every day Phone: +371-2-559777

� Official SWAG supporting site
� Pascal BBS, nice sources for Pascal, C, Assembly and other languages
� Uniquie collection of DOS/Windows related stuff
� Daily updated official currency exchange rates from Bank of Latvia
� PARADiZE 4 C0DerZ



8. ENLiGHT'95 Party � �����-����p��p��.

ENLiGHT'95 party �p���������� Realm Of Illusion & K� , ������p�����

LANCK, Russian Federation of Shaping, RCom Company Ltd. C��������� � ��� 19 - 20 �������.

����� � party (>35 ���p��, ������, ����������/p������ �����) �� ������ ������p��� �p����� ��� � 2:5030/280,/248,/103, 5020/269.8(254-10-03,24h,ZYX) , 5020/102

ENL95REP.ZIP (2.1MB) (386,VGA,SB/GUS/PAS/WSS)

��� p����� �������� �� ftp.olly.ru/incoming/Enlight95 � �� 5030/280. � ����� �� ftp.cdrom.com/pub/demos/?

�����p�� �p��������� �� ��������� ������p���:

8k Intro compo: max 8kb,max 5 min,no SVGA
Demo compo: max 10MB,max 15 min,VGA,SVGA
Music compo: .XM,.S3M,.MOD., others, max 1MB, max 5 min,
Graphics compo: max 640x480x16.7���.
(Amiga intro compo: 64k max, A1200/2MB)

�p������������ ����� 150 �������.

����������:

PC Demo

1. Glitch by Queue Members Group (51)
2. Show 3D by Friends Software (5)
3. Another Demo by Nimbus Studio (5)
4. Elite by Virtual Illusions (1)

PC 8K intro

1. Remix2 by Future Hackers (39)
2. Mostly Harmless by Beeblebrox /TMA (20)
3. Pentium by Street Raider /DDT (6)
4. 6567 by ROi (2)

Amiga 64k intro

1. Rest by RST7
2. -
3. -

Music

1. NetRunner (18)
2. XPEH /Lookers (14)
3. JayDee /Venom (11)
4. Queue Members Group (6)
5. Wind Dragon /ROi (4)
6. Euggie /ByteFall (3)
7. Harley /Virtual Illusions (2)
8. Tangerine /Overlook (1)
8. Artem (1)
8. Scream Man (1)

Graphics

1. Ren (57)
2. Royal Ghost (11)
3. Queue Members Group (1)

Real-Time Coders Compo

1. Mad Max /Queue Members Group (41)
2. Andrew Zabolotny /Friends Software (21)



9. ENLiGHT'96 Party � �����-����p��p��.

ENLiGHT'95 party �p���������� Realm Of Illusion & K� �p� �����p��� ��� ��p����� ������������ �����p������ (���. �p�������� ����������), RCom Company Ltd, Spline, X-lab.

Party c��������� � ��� 24 - 25 �������.

��� p����� �������� �� abel.pdmi.ras.ru/pub/demos/enlight96 � ����� �� ftp.cdrom.com/pub/demos/incoming/ENL96

����� � party (��� ������ �� ����� �����) �������� ��� ��.

�����p�� �p��������� �� ��������� ������p���:

PC 8k intro compo: max 8kb,max 5 min,no SVGA
PC 64k intro compo: max 64kb,max 10 min,no SVGA
PC Demo compo: max 4MB,max 15 min,VGA,SVGA
Music compo: .XM,.S3M,.MOD., others, max 1MB, max 3 min
Graphics compo: max 640x480x16.7m
Amiga intro compo: max 64kb,max 10 min
ZX Spectrum graphics compo: 6912 bytes
ZX Spectrum music compo: max 3 min
ZX Spectrum demo compo: max 2544 sectors, max 10 min

�p������������ ����� 400 �������.

ENLiGHT'96 Official Results

Number of voters: 146

PC Demo compo

 1. NOSFERATU		NEPHILIMS			238	nosf.zip
 2. HElliZER		Queue Members Group AD		214	hellizer.zip
 3. Dreams		DDT Entertainment		211	ddt-drms.zip
 4. Experience		Virtual Illusions		66	experien.zip
 5. Eternal Life	Eternal				49	etlife.zip

PC 64K Intro compo

 1. Distorted		Virtual Illusions		236	vi_disto.zip
 2. Real Sux		DDT Entertainment		175	realsux.zip

PC 8K Intro compo

 1. Faugh		Agent Orange/t-Rex		258	trx-fgh!.zip
 2. Fire & Water	Fidel Ink/Digital Cascade	210	firewat.zip
 3. Brilliant Move      Future Hackers      		114	bm.zip
 4. Gluk2       	Pavel Repkin/Future Hackers   	52	gluk2.zip
 5. Dream       	Cobra/PI Software       	44	dream.zip
 6. 244 bytes       	Sands        			17   	244bytes.zip

Real Time Coders compo

 1. FX			Street Raider /DDT		230	rtc_sr.zip
 2. FX			Agent Orange /t-Rex     	224	rtc_ago.zip
 3. FX			MadMax /QMG			152	rtc_mm.zip
 4. FX			2NB				65	rtc_2nb.zip

Music compo

 1. Memories			Fill Mars/Fill Mars Laboratory	127	memories.zip
 2. Victory			Madminder			119	victory.zip
 3. She Was Innocent		Manwe/SandS			80	innocent.zip
 4. Ball Lightning		slightly magic			79	ballligh.zip
 5. Street Agression		Snork				76	ceedee.zip
 6. Ooops!			Lav/Galaxy			68	ooops!.zip
 7. Slash1			Slash/ADG_RPSG			66	slash1.zip
 7. Suanmia			Kirshe/Eternal			66	suanm01.zip
 8. The Neus			Leo				64	neus.zip
 9. Forbidden Dreams		Alex Simouline/Fortune		63	for_dr3m.zip
10. Never Ending Story		Jay Dee				59	jd-never.zip
11. The Moscow Fog		Tangerine/t-Rex			53	tan-mfog.zip
11. Trance-X Vibes		XPEh/LooKER house		53dq	txv.zip
12. Transexplorer		Xtreme				52	t_explor.zip
13. Beyond the Calmness		Dying Breed			47	beyond.zip
14. valley of the blindbirds	Rogers/QMG			38	vobbcomp.zip
15. Stupid Smiler's Club	MAG				37	smile.zip
15. POST!			VanaPoo/Virtual illusions	37	post!.zip
16. Motion			Thunder God/Team COLOBOC	35	to65.zip
17. REVOLUTION			wave/LOOKER hOUSE		34dq	revolut.zip
18. Fathers			Rony kiloMeters/DDT		33	fathers.zip
19. HYMN			Morpheus			32	mor-hymn.zip
20. must			Andrey Malyev/PI software	28	must.zip
21. Reggae			Grom/Fire Bird			27	island.zip
22. fake love			IMP/RUSH			25	fakelove.zip
23. Music is our emotions	Master_Koff/SoftMotion group	19	emotions.zip
24. Holo Drance #2		Mad Wild/Digital Cascade	18	rave#5.zip
25. MadNess			Gray Engine/Future Hackers	14	hicky.zip
25. The last illusion		Voider				14	vo-ill.zip
26. Life Underground		Hi-jack/NewGEN			10	life_und.zip
27. NBA				EVA/RTT				9	nba.zip
28. Noice Motion		Popirin Denis/CrossRoad		8	noicem.zip
29. Digital Dreams		Stas				7	digitald.zip

Graphics compo

 1. Lions of Darkness		Royal Ghost/DDT		73	ddt-lion.zip
 2. Machine			Gregor Barbarian	68	machine.zip
 3. Project			?			60	project.zip
 4. Ganjaman			?			54	ganjaman.zip
 5. Water World			Royal Ghost/DDT		50	ddt-ww.zip
 6. Modify1			Voider			49	voider.zip
 7. Peredoz			Boss/Eternal		47	eternal.zip
 8. Taladas			Cat/ACiD		45	acid.zip
 9. Attack			Terror/DR/RPSG		38	dr_rpsg.zip
10. Dragon			Terror/DR/RPSG		30	dr_rpsg.zip
11. Sarcastic Toaster		Cat/ACiD		28	acid.zip
11. Fenka2			Voider			28	voider.zip
12. The Alien WorkShop		Cat/ACiD		25	acid.zip
13. Zmey			Voider			19	voider.zip
14. Hardcore			Boss/Eternal		17	eternal.zip
14. Untitled			Rogers/QMG		17	untitled.zip
15. Coupling			Dmitry Skavish/IV	16	sd.zip
15. Godsmeal			Dmitry Skavish/IV	16	sd.zip
16. Male1			Cat/ACiD		14	acid.zip
16. My Dream			Terror/DR/RPSG		14	dr_rpsg.zip
17. Face			Boss/Eternal		13	eternal.zip
18. Freedom of Speech		Terror/DR/RPSG		12	rd_rpsg.zip
19. Starship			Boss/Eternal		10	eternal.zip
20. Myth			Boss/Eternal		5	eternal.zip
20. Cock			Dmitry Skavish/IV	5	sd.zip
20. Scrubs2			Voider			5	voider.zip
21. Enigma			Dmitry Skavish/IV	4	sd.zip

Amiga 64k intro compo

 1. AGA inside			XL-Design		-dq

ZX Demo compo

 1. Illusion			X-Trade Group		257
 2. Vibrations			RUSH			241
 3. Eye Ache			CodeBusters		234
 4. 7th Reality			DR/RPSG			185
 5. Influence			Seamans B.U.H.G.	150
 6. Action			Vav			137
 7. Life Sux			Galaxy Inc		51
 8. Ice Cream			World Eyes		31
 9. Daf				Digital Arts		5
 9. Made In Kazan		Excess Group		5
10. Miracle			WarLocks Group		3
11. Russian Prestige		Black Shark/RPSG	2

ZX Spectrum Music

 1. Likemya       		Joe/DR/RPSG			108
 2. DNK-1       		DNK/VirtGroup     		99
 3. KSA INS       		KSA       			96
 4. KPYTEXHO       		Evolver/RUSH      		73
 5. Stop       			MIC/MPS        			69
 6. 19 MGN.W       		KSA        			62
 7. Malikov       		Slash/Slash ADG/RPSG   		60
 8. DNK-2       		DNK/VirtGroup       		57
 9. E'96			Joe/DR/RPSG           		53
10. Larel_E       		A.Mihaylov/Scorpion & K H.G.	49
10. ChessBoard       		Magic Soft     			49
11. Intro1       		Alien/VirtGroup       		45
11. Myst       			Sauron/DR/RPSG       		45
12. Love'96                  	Slash/Slash ADG/RPSG   		37
13. Nothing Forever      	Magic Soft        		31
14. Destiny      		Comp-MS/Scorpion Club 		28
15. Forever       		Comp-MS/Scorpion Club		26
16. Enlight       		Dexter/Galaxy Inc       	25
16. CR2        			A.Mihaylov/Scorpion & K H.G.	25
16. Steam-2       		Bobov I.   			25
17. :-/        			MIC/MPS        			24
18. Cube       			World Eyes        		22
18. Never       		Alien/VirtGroup       		22
19. TN2        			Evolver/RUSH       		10
20. Grave 3.0       		Pahomov Sergey        		8
21. Improvization one      	Pahomov Sergey        		5
21. Rave4a       		BOBOV I         		5

ZX Spectrum Graphics

 1. Tiger       		Lemming/Scorpion Club     	109
 2. Chaos+       		Magic Soft       		106
 3. Chaos       		Viator/RUSH       		72
 4. Dark God       		Kamikaze/RUSH       		66
 5. Kazansk       		Observer/VirtGroup       	65
 6. Knight       		Lemming/Scorpion Club      	57
 7. Slavik1       		Barkov        			56
 8. St.Peter       		Observer/VirtGroup       	54
 9. Fil4       			Fil Gfx/Scorpion Club      	51
10. Before the storm      	Magic Soft        		49
11. Rush       			Viator/RUSH       		45
12. Fil2       			Fil Gfx/Scorpion Club      	39
13. Shaoinlg       		M.O.C./VirtGroup       		38
13. Go        			Bobov Ivan        		38
14. Life Shit       		Tihonov A.        		26
15. Znachok       		M.O.C./VirtGroup       		25
15. Steel       		Lemming/Scorpion Club      	25
16. Fil3       			Fil Gfx/Scorpion Club      	22
16. Hard Rock       		Tihonov A.        		22
17. Fil1       			Fil Gfx/Scorpion Club      	21
17. Fly_C       		Bobov Ivan        		21
18. Castles3       		Observer/VirtGroup       	18
18. FirePlay       		Lemming/Scorpion Club      	18
19. Term       			Alien/VirtGroup       		13
20. Birga       		Alien/VirtGroup       		12
20. Fractals      		Cobra/Enigma       		12
21. I.Maiden      		Tihonov A.        		11
22. Castle       		Lion/Excess Group        	9
22. Virtual World      		Magic Soft         		9
23. Magland       		M.O.C./VirtGroup        	5
23. GGG        			Sobolev E.V./Scorpion & K H.G.	5
23. Eclipse       		Bobov Ivan			5
24. S_hunt       		Bobov Ivan			4
25. Paralich       		Tihonov A.  		      	3

dq - disqualified



10. DEMOS, INTROS, DEMO_REL, DEMO_SRC, DISKMAGS �������.

DEMOS   	- Demos  (~100k..~4MB)
INTROS   	- Intros (0..~100k)
DISKMAGS  	- Disk magazines (diskmags, party reports)
DEMO_SRC  	- Demo/intro/various effects sources, documentation
DEMO_REL  	- Misc demo related stuff (trackers, utils, etc..)
Moderator   - Peter Sobolev, 2:5030/84, [email protected]
CoModerator - Mike Malakhov, 2:5030/280 (down)

��� ������� �p�����p�p�����. �������� ��������� ���� ���-���� ����� ��� �������

����� ��� ���������� ���������� ������ ������ �p������������ � DEMO.DESIGN.WANTED

� 5030 � p����� ��� ������� �� /16 /103 /248 /544

��������, ��� ������� ��������� ������ ��p���� ��� ���� �������� ������������� �������:

463/118              50/330                  5001/7
463/159  471/23.17   50/777.32  5000/33      5005/37.8
463/340  471/23.226  50/777.44  5000/47      5005/38
463/530  471/23.65                           5005/39
464/51   471/23.82              5000/83.12   5005/41.3
465/70                                       5007/3
469/79                                       5007/3.30
                                             5007/5.1
                                             5011/22.10
                                             5011/36.103

5020/1000    5021/1.5     5030/103      5033/5
5020/158.24  5021/12      5030/135.2    5037/4.5
5020/170.9   5021/2.28    5030/142.21   5049/30
5020/170.9   5021/6.24    5030/16       5054/12.27
5020/201     5023/10      5030/191      5054/25
5020/235.40  5023/9.11    5030/195.9    5054/26
5020/238.14  5025/18      5030/240      5056/112
5020/249.8   5025/2.65    5030/248.33   5056/1.39
5020/265     5025/2.65    5030/249      5057/14
5020/265.9   5025/23.49   5030/249      5057/14
5020/269                  5030/275      5057/18.19
5020/269                  5030/316.30   5057/19
5020/299                  5030/316.31   5057/2.3
5020/312.9                5030/327      5057/25.4
5020/348.3                5030/329.5    5057/4.23
5020/384                  5030/331      5074/8.5
5020/438.17               5030/344.16   5074/9
5020/466                  5030/346.13   5100/56.14
5020/476                  5030/370
5020/477.39               5030/444.2
5020/477.39               5030/444.55
5020/480.10               5030/444.7
5020/480.14               5030/489
5020/487                  5030/498
5020/491.91               5030/499.29
5020/506                  5030/514
5020/551                  5030/528
5020/636                  5030/544
5020/636.11               5030/558
5020/637                  5030/558.10
5020/640                  5030/560
5020/657.100              5030/248
5020/662
5020/706
5020/709
5020/717
5020/724
5020/739.33
5020/741.8
5020/756.10
5020/775
5020/779
5020/787
5020/789
5020/795


11.�������p�����

������� ����, ��� ����� �������/����������/������ ������ ��� ����. ����� � �������� ;)

Oleg Homenko (461/318.50)
Vladimir Medeiko (5030/84.219)
Lenik Terenin (5061/1)
Alexey Kolpikov (5061/7)
Mike Malakhov (5030/280)
Paul Nosikoff
Peter Sobolev (5030/84)
Alex Starkov (5030/248)
Andrej Tepelin
Leon de Boer
Cyril Antonov (5030/6.200)
Andrew Eigus
Andrew Zabolotny (5030/84.5)
Maxime Zakharov
Zoombapup
LazyHAM
Alexander Amelkin
Serguey Zefiroff (5020/509.601)
Dmitry Skavish (5030/175)
Yury Oreshkin (2:4641/41.77)
Alex Victorov (2:5025/9.43)
Bretton Wade
Mike Shirobokov, (2:5057/14)
Lout Roman, 2:463/586.20