(С) CONSUL soft,
Старая Русса, 1995.
Привет, это ребята ид Старой Руссы! Мы предлагаем Вам некоторые наши проработки.
BOLLS
В последнее время в Российской литературе все чаще можно встретить различную информацию о музыкальном сопроцессоре. Предлагаю очень интересную процедуру. Я назвал ее "BOLLS". Она предназначена для вывода на экран (под музыку!) шариков или любых других спрайтов. Подобные эффекты очень часто можно встретить в "музыкал-ках", загрузчиках и т.д. "Знаменитые шарики", которые изменяются в размерах в зависимости от громкости звука на данный момент в каждом из каналов. Ну, словом, наберите - сами увидите.
1 ; (С) Андрей Загорец,
2 ; Старая Русса ' 1995
3 ;--------------------------
4 |
ORG |
60000 |
5 ADR |
EQU |
60200 |
6 |
ENT |
$ |
7 |
LD |
BC,#FFFD |
8 |
LD |
A,8 |
9 |
OUT |
(C),A |
10 |
LD |
BC,#FFFD |
11 |
IN |
A, (C) |
12 |
AND |
15 |
13 |
LD |
DE,#4000 |
14 |
CALL |
PRINT |
15 |
LD |
BC,#FFFD |
16 |
LD |
A,9 |
17 |
OUT |
(C),A |
18 |
LD |
BC,#FFFD |
19 |
IN |
A,(C) |
20 |
AND |
15 |
21 |
LD |
DE,#4002 |
22 |
CALL |
PRINT |
23 |
LD |
BC,#FFFD |
24 |
LD |
A,10 |
25 |
OUT |
(C),A |
26 |
LD |
BC,#FFFD |
27 |
IN |
A,(C) |
28 |
AND |
15 |
29 |
|
LD |
DE,#4004 |
30 |
|
CALL |
PRINT |
31 |
|
RET |
|
32 |
PRINT INC |
A |
33 |
|
LD |
В, A |
34 |
|
PUSH |
DE |
35 |
|
LD |
DE,#20 |
36 |
|
LD |
HL,ADR-32 |
37 |
Ml |
ADD |
HL,DE |
38 |
|
DJNZ |
Ml |
39 |
|
POP |
DE |
40 |
|
LD |
B, 2 |
41 |
LI |
PUSH |
BC |
42 |
|
PUSH |
DE |
43 |
|
LD |
В, 2 |
44 |
L2 |
PUSH |
ВС |
45 |
|
PUSH |
DE |
46 |
|
LD |
В,8 |
47 |
L3 |
LD |
A,(HL) |
48 |
|
LD |
(DE),A |
49 |
|
INC |
D |
50 |
|
INC |
HL |
51 |
|
DJNZ |
L3 |
52 |
|
POP |
DE |
53 |
|
INC |
E |
54 |
|
POP |
BC |
55 |
|
DJNZ |
L2 |
56 |
|
POP |
DE |
57 |
|
LD |
A,#20 |
58 |
|
ADD |
A, E |
59 |
|
LD |
E,A |
60 |
|
POP |
BC |
61 |
|
DJNZ |
LI |
62 |
|
RET |
|
Длина |
блока кодов 104 6af |
EA60 |
01 |
FD |
FF |
3E |
08 |
ED |
79 |
01 |
F4 |
EA68 |
FD |
FF |
ED |
78 |
E6 |
OF |
11 |
00 |
B9 |
EA70 |
40 |
CD |
9D |
EA |
01 |
FD |
FF |
ЗБ |
29 |
EA78 |
09 |
ED |
79 |
01 |
FD |
FF |
ED |
78 |
33 |
EA80 |
E6 |
OF |
11 |
02 |
40 |
CD |
9D |
EA |
06 |
EA88 |
01 |
FD |
FF |
3E |
OA |
ED |
79 |
01 |
IE |
EA90 |
FD |
FF |
ED |
78 |
E6 |
OF |
11 |
04 |
E5 |
EA98 |
40 |
CD |
9D |
EA |
C9 |
3C |
47 |
D5 |
37 |
EAA0 |
11 |
20 |
00 |
21 |
08 |
EB |
19 |
10 |
F8 |
EAA8 |
FD |
DI |
06 |
02 |
C5 |
D5 |
06 |
02 |
OA |
EAB0 |
C5 |
D5 |
06 |
08 |
7E |
12 |
14 |
23 |
09 |
EAB8 |
10 |
FA |
DI |
1С |
CI |
10 |
F1 |
DI |
2C |
EAC0 |
3E |
20 |
83 |
5F |
CI |
10 |
E5 |
C9 |
69 |
Сохраните файл с именем "рго-ced". Но это еще не все. Чтобы ее запустить, нужно по-крайней мере иметь музыку и набор выводимых спрайтов. Что касается музыки, то здесь можно воспользоваться, например, музыкальным редактором SOUND ^TRACKER. А вот с подготовкой спрайтов придется с полчаса потрудиться .
Один из наиболее рациональных способов изготовить спрайты нарисовать их в графическом редакторе ARTSTUDIO. Но данная процедура имеет дело не со спрайтами, конкретно выделенными стандартными средствами, а с символьным набором, содержащим те же самые спрайты. Разницы здесь практически нет.
пиксела (Define window), войдите в редактор шрифтов (Font editor) и, установив курсор на самом первом символе (пробел), скопируйте спрайты с экрана функцией Capture font. Затем повторите эту же операцию для второго вертикального столбца, только установите курсор на том символе, который расположен следом за скопированным фрагментом (в данном случае это будет символ "Р"). У Вас должно получиться что-то вроде того, что показано на рис.2.
Font Editor
+1 File I Character | Font | Misc. | Menu j»
ль " аъ ** аш ь с d e f g
hi jK imnopqrs tuvwxyz i I > " ©
Рис.2.
Теперь осталось выгрузить по.-лученный символьный набор. При желании его можно "урезать1':
LOAD "boll.fnt"CODE 60200 SAVE "bolls"CODE 60200,512
Рис.1.
На рис.1. изображен фрагмент подготовки спрайтов-шариков. Нарисуйте их с помощью ARTSTUDIO. Учтите: их размер фиксирован - 2 «а 2 знакоместа. Видимо удобно будет включить режим "сетка" {"Grid") размером 2x2 знакоместа. Расположите спрайты в два вертикальных ряда, точно так, как показано на рис.1. - сверху-вниз. Эсего должно получиться 16 спрайтов. Затем, предварительно отметив первый вертикальный столбец спрайтов окном размером 16x192
Ну вот и все. Приведенная ниже БЕЙСИК-программа демонстрирует работу полученного блока кодов. Допустим, что музыка у Вас откомпилирована под традиционный адрес 49152. Если Вы пользовались программой SOUND TRACKER, то музыкальный фрагмент имеет точки входа: 49152 И 49158.
5 BORDER 0: PAPER 0: INK 7: С LEAR 49151
10 RANDOMIZE USR 15619: REM : LOAD "proced"CODE 60000
20 RANDOMIZE USR 15619: REM : LOAD "boll.fnt"CODE 60200,512
30 RANDOMIZE USR 15619: REM : LOAD "SONG"CODE 49152
40 RANDOMIZE USR 49152
50 RANDOMIZE USR 49158: RANDOM IZE USR 60000: PAUSE 1: IF INKEY $s„u -pHEN GO TO 50 100 RANDOMIZE USR 49152
Некоторые комментарии к программе. Во-первых, адрес расположения блока шрифта-спрайтов может быть любым, он задается в строке 5 листинга на АССЕМБЛЕРЕ. Координаты печати спрайтов для всех трех каналов музыкального сопроцессора задаются в строках 13, 21 и 29 для каналов "А", ИВИ и "С" соответственно.
И последнее. Разумеется, вместо шариков, можно изобразить все, что угодно. Например, неплохо смотрятся звездочки или полосочки .
Что касается шариков, то вот дамп для их формирования (файл ,,bolls,,CODE 60200,512):
EB28 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
13 |
EB30 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
IB |
EB38 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
23 |
EB40 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
2B |
EB48 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
01 |
34 |
EB50 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
3B |
EB58 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
43 |
EB60 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
4B |
EB68 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
01 |
54 |
EB70 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
80 |
DB |
EB78 |
01 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
64 |
EB80 |
80 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
EB |
EB88 |
00 |
00 |
00 |
00 |
00 |
00 |
03 |
03 |
79 |
EB90 |
00 |
00 |
00 |
00 |
00 |
00 |
80 |
80 |
7B |
EB98 |
03 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
86 |
EBA0 |
80 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
0B |
EBA8 |
00 |
00 |
00 |
00 |
00 |
00 |
01 |
03 |
97 |
EBB0 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
80 |
IB |
EBB8 |
07 |
03 |
01 |
00 |
00 |
00 |
00 |
00 |
AE |
feBCO |
CO |
80 |
00 |
00 |
00 |
00 |
00 |
00 |
EB |
EBC8 |
00 |
00 |
00 |
00 |
00 |
00 |
01 |
03 |
B7 |
EBD0 |
00 |
00 |
00 |
00 |
00 |
00 |
80 |
CO |
FB |
EBD8 |
03 |
01 |
00 |
00 |
00 |
00 |
00 |
00 |
C7 |
EBE0 |
CO |
80 |
00 |
00 |
00 |
00 |
00 |
00 |
0B |
EBE8 |
00 |
00 |
00 |
00 |
00 |
01 |
03 |
07 |
DE |
EBF0 |
00 |
00 |
00 |
00 |
00 |
80 |
CO |
E0 |
FB |
EBF8 |
07 |
03 |
01 |
00 |
00 |
00 |
00 |
00 |
EE |
EC00 |
E0 |
CO |
80 |
00 |
00 |
00 |
00 |
00 |
ОС |
EC08 |
00 |
00 |
00 |
00 |
00 |
03 |
09 |
07 |
03 |
EC10 |
00 |
00 |
00 |
00 |
00 |
80 |
CO |
CO |
FC |
EC18 |
07 |
03 |
00 |
00 |
00 |
00 |
00 |
00 |
OE |
EC20 |
CO |
80 |
00 |
00 |
00 |
00 |
00 |
00 |
4C |
EC28 |
00 |
00 |
00 |
00 |
03 |
06 |
OD |
OF |
39 |
EC30 |
00 |
00 |
00 |
00 |
80 |
CO |
EO |
EO |
1С |
EC38 |
OF |
07 |
03 |
00 |
00 |
00 |
00 |
00 |
3D |
EC40 |
EO |
CO |
80 |
00 |
00 |
00 |
00 |
00 |
4C |
EC48 |
00 |
00 |
00 |
00 |
07 |
OD |
OB |
OB |
5E |
EC50 |
00 |
00 |
00 |
00 |
CO |
EO |
EO |
EO |
9C |
EC58 |
OF |
OF |
07 |
00 |
00 |
00 |
00 |
00 |
69 |
EC60 |
EO |
EO |
CO |
00 |
00 |
00 |
00 |
00 |
CC |
EC68 |
00 |
00 |
00 |
00 |
03 |
05 |
OB |
OB |
72 |
EC70 |
00 |
00 |
00 |
00 |
CO |
EO |
FO |
FO |
DC |
EC78 |
OF |
OF |
07 |
03 |
00 |
00 |
00 |
00 |
8C |
EC80 |
FO |
FO |
EO |
CO |
00 |
00 |
00 |
00 |
EC |
EC88 |
00 |
00 |
00 |
00 |
03 |
OD |
OB |
IB |
AA |
EC90 |
00 |
00 |
00 |
00 |
80 |
EO |
EO |
FO |
AC |
EC98 |
IF |
IF |
OF |
OF |
03 |
00 |
00 |
00 |
E3 |
ECA0 |
FO |
FO |
EO |
EO |
80 |
00 |
00 |
00 |
AC |
ECA8 |
00 |
00 |
00 |
03 |
OE |
09 |
19 |
IF |
Еб |
ECB0 |
00 |
00 |
00 |
CO |
FO |
FO |
F8 |
F8 |
2C |
ECB8 |
IF |
IF |
OF |
OF |
03 |
00 |
00 |
00 |
03 |
ECC0 |
F8 |
F8 |
FO |
FO |
CO |
00 |
00 |
00 |
3C |
ECC8 |
00 |
00 |
03 |
OD |
11 |
13 |
33 |
37 |
52 |
ECD0 |
00 |
00 |
CO |
FO |
F8 |
F8 |
FC |
FC |
54 |
ECD8 |
3F |
3F |
IF |
IF |
OF |
03 |
00 |
00 |
92 |
ECE0 |
FC |
FC |
F8 |
F8 |
FO |
CO |
00 |
00 |
64 |
ECE8 |
00 |
07 |
19 |
33 |
27 |
67 |
6F |
6F |
93 |
ECF0 |
00 |
EO |
F8 |
FC |
FC |
FE |
FE |
FE |
A6 |
ECF8 |
7F |
7F |
7F |
3F |
3F |
IF |
07 |
00 |
05 |
ED00 |
FE |
FE |
FE |
FC |
FC |
F8 |
EO |
00 |
B7 |
ED08 |
07 |
1С |
39 |
73 |
67 |
E7 |
C7 |
CF |
A8 |
ED10 |
EO |
78 |
FC |
FE |
FE |
FF |
FF |
FF |
4A |
ED18 |
CF |
DF |
FF |
7F |
7F |
3F |
IF |
07 |
15 |
ED20 |
FF |
FF |
FF |
FE |
FE |
FC |
F8 |
EO |
DA |