Просмотр полной версии : Цветные линии
Самая первая версия. Заставка, король, заголовок, кнопки снизу банально не влезли в 12 Кб памяти. Нижние 32 Кб недоступны во время работы с экраном, остается лишь 12 Кб.
Анимация игрового поля сделана в полной мере.
Завтра (или чуть позже) подумаю как с этим быть.
http://s019.radikal.ru/i623/1212/38/22555135b029.png
Во вложении файл lines01.lvt
BIOS функции для проигрывания мелодий никуда не годятся. Частота задается 8 битным значением. И если на низких частотах погрешность еще допустима, то на высоких мелодия страшно лажает.
А в этой игре заставку надо играть на высоких нотах. Но я пока сдеал на низких.
---------- Post added at 01:34 ---------- Previous post was at 01:31 ----------
Почему то при выводе графики и текста через BIOS, компьютер издает звуки. Наверное воображает себя принтером.
vinxru,
Тут (http://lvovpc.ho.ua/forum/viewtopic.php?f=3&t=15) как раз обсуждается программирование звука. Где-то со второй половины темы Иван Городецкий балует нас всякими музыкальными движками, в том числе и с чистыми нотами. Рекомендую ознакомится.
Кстати, а спрайты Вы рисуете по точкам? Может лучше релизовать функции по копированию блока памяти в видео. У "Львова" четыре пикселя на байт, так что поточечный вывод катастрофически медленный.
Насчет памяти еще. В Rick'е
http://www.youtube.com/watch?v=Ea2F5usyoXo&feature=youtu.be
все тайлы/спрайты, которые будут использоваться на текущем уровне я держу в верхней памяти. А игровая логика, карты, спрайты других уровней - в нижней.
Кстати, а спрайты Вы рисуете по точкам? Может лучше релизовать функции по копированию блока памяти в видео. У "Львова" четыре пикселя на байт, так что поточечный вывод катастрофически медленный.
Копирую байт в байт в видеопамять. Причем в новой версии я переписал функцию вывода спрайта на ассемблер.
; Вывод спрайта 12x16
MOV B, 16
LOOP:
LDAX D
INX D
MOV M, A
INX H
LDAX D
INX D
MOV M, A
INX H
LDAX D
INX D
MOV M, A
MOV A, B
LXI B, 62
DAD B
MOV B, A
DCR B
JNZ LOOP
---------- Post added at 13:49 ---------- Previous post was at 13:45 ----------
все тайлы/спрайты, которые будут использоваться на текущем уровне я держу в верхней памяти. А игровая логика, карты, спрайты других уровней - в нижней.
Заставку и фон игры я думаю разместить в нижней памяти. И копировать их на экран через буфер в верхней памяти. Их выводить надо лишь один раз в всю игру. Заставка займет 16 Кб. Фон игры + побежденный король + игрок в короне займут еще 10-16 Кб.
Копирую байт в байт в видеопамять.
Да-да, именно так. Я просто Ваш сишный компилятор просматривал, поэтому и переполошился за возможный поточечный вывод.
---------- Post added at 12:58 ---------- Previous post was at 12:50 ----------
И копировать их на экран через буфер в верхней памяти. Их выводить надо лишь один раз в всю игру.
Нет-нет, это слишком долго. Копировать сначала в буфер, а потом в видеопамять. Дмуаю, даже портом щелкать будет быстрее. Можно заставку сразу залить в верхнюю память и нарисовать. А когда она нарисовалась, уже спрайты перетянуть наверх, перетерев заставку.
в новой версии я переписал функцию вывода спрайта на ассемблер.
И чё, работает? Может всё-таки LXI B, 62 ? :)
А эмитация 6 цветов нормально выглядит? Или можно с БК0010 сплагиатить шарики с узорами.
---------- Post added at 14:05 ---------- Previous post was at 14:04 ----------
И чё, работает? Может всё-таки LXI B, 62 ?
Я по памяти писал.
А эмитация 6 цветов нормально выглядит? Или можно с БК0010 сплагиатить шарики с узорами.
Цвета выглядят нормально, но обязательно нужно семь. Так что либо один шарик с БК сплагиатить, либо все, либо еще что-то придумать.
Я семь сразу нарисовал, только включил 6.
Зачем плагиатить, можно же ещё чёрных шариков добавить, хоть три штуки :)
Rick крут.
Я Линии выбрал, потому что проще них только Тетрис.
А хочется что то типа Lost Vikings. Неспешная, логическая. И можно подобно Rick-у переключать экраны.
И ещё три одноцветной штриховкой :)
И ещё три одноцветной штриховкой
Да, загнать в ОЗУ несколько вариантов и переключать. Спрайты шариков занимают 4 Кб. И их можно заархивировать.
А хочется что то типа Lost Vikings.
Хочется, только арта нету :(
Зачем плагиатить, можно же ещё чёрных шариков добавить, хоть три штуки
__________________
Точно, черный.
Новая функция вывода графики. Теперь можно выводить графику находящуюся в любом месте ОЗУ.
drawSprite_12_16:
; В HL спрайт
push b
; В DE адрес назначения
.db 11h ; lxi d, 0000
drawSprite_12_16_1 .dw 0
; Высота изображения
mvi b, 16
; Цикл строк
drawSprite_12_16_l0:
push b
; Загружаем 12 пикселей
mov a, m
inx h
mov b, m
inx h
mov c, m
inx h
; Переключаем страницу памяти
push psw
mvi a, 00010b
out 0C3h
pop psw
; Сохраняем 12 пикселей
xchg
mov m, a
inx h
mov m, b
inx h
mov m, c
lxi b, 64-2
dad b
xchg
; Переключаем страницу памяти
mvi a, 00011b
out 0C3h
; Конец цикла
pop b
dcr b
jnz drawSprite_12_16_l0
pop b
ret
Вывод звука сделал через функцию вывода пилот-тона, по ссылке от Zelya. Стало звучать сносно.
void mySound(uchar period, uint delay) {
asm {
push b
mov c, l
mov b, h
lda mySound_1
sta 0BE82h
sta 0BE83h
call 0E28Dh
pop b
}
}
Осталось 4-х цветные картинки дорисовать.
http://s020.radikal.ru/i705/1212/8c/7197987d30da.png
http://s43.radikal.ru/i101/1212/ad/648d9b9f9d70.png
Игровой экран полностью сделан, осталось лишь доделать стартовую заставку.
PAINT кстати пригодилась, я ей меняю цвет кнопок F1-F3
NovaStorm
20.12.2012, 09:03
Столько кислотного зелёного глаза не выедает?
Вообще это бордюр, он должен быть за краем экрана. Но в эмуляторе смотрится страшновато, подправлю.
---------- Post added at 08:30 ---------- Previous post was at 08:06 ----------
Подарите мне генератор случайных чисел на асме от 0 до 255 :)
---------- Post added at 09:19 ---------- Previous post was at 08:30 ----------
Нарисую еще один вараинт спрайтов, для палитры содержащей черный и белый. Эмитировать 7 цветов не получится уже.
Но зато можно будет сделать клетчатое поле, как в версии БК0010
http://www.sensi.org/~bk/screensh/ColorLines2.png
Еще так можно.
http://s017.radikal.ru/i441/1212/30/885fd3b73911.png
Error404
20.12.2012, 17:32
Я все сообщения не отслеживал - таки будет ли удаление по диагонали?
Прогресс :)
http://s020.radikal.ru/i723/1212/ec/636ea4be098e.png
CodeMaster
20.12.2012, 22:41
Прогресс
Палитра как-то не очень, синий с красным некошерно смешивать. А какие ещё есть варианты?
ИМХО остальные еще хуже.
// 0 - красный, синий, зеленый
// 1 - красный, фиолетовый, зеленый
// 2 - желтый, зеленый, синий
// 3 - фиолетовый, зеленый, желтый
// 4 - голубой, красный, фиолетовый
// 5 - белый, голубой, красный
// 6 - белый, синий, красный
CodeMaster
20.12.2012, 22:53
ИМХО остальные еще хуже.
Ну, да. А что от 7-ми цветного варианта ты совсем отказался, я что-то пропустил? Там бордюр можно заменить на иммитацию серого\голубого и было бы отлично.
vinxru,
Палитры:
http://i.piccy_.info/i7/40e864322855aebaef99dbdb6319766a/1-5-8689/7954839/palette.png
CodeMaster
21.12.2012, 08:27
Палитры:
Ни фига не видно, ни тут ни прямо по линку.
Я вижу палитру, но ничего не понял.
Я сделаю игру с двумя вариантами графики:
1) черный-красно-сине-зеленой, без клеток, шары 7 цветов.
2) черный-голубой-белый-красный, с клетками, шары с узорами.
И переключение по кнопке.
vinxru,
Палитра задается через порт 193. На рисунке набор палитр от нуля до 127 (потом повторяются). Выбираете номер палитры, и получаете четыре цвета. Верхний (где номер) - 0, нижний - 3.
Например, Ваша палитра черный-голубой-белый-красный - это 33, 40, 49, 56, 72, 81 (отличаются порядком цветов).
Понятно.
А есть ли среди этих вариантов, тех которых нет в функции BIOS-а? Там всего 6 вариантов.
vinxru,
Через функции BIOSа есть 6 вариантов палитры, но они меняются в зависимости от нулевого цвета (а он любой из восьми). Я не заморачивался, если честно, все или не все варианты возможны при использовании этих функций. Мне всегда было куда проще ориентироваться по этой табличке.
Главное, подобрать палитры, чтобы менять цвета без изменения спрайтов. Например, в Рике, я использую разные палитры для разных уровней при тех же спрайтах/тайлах (см. вложение)
Вы хотите сделать переключатель цветов. Могу посоветовать и выбрать, как основную 40-ю палитру (с теми цветами, что есть сейчас). И сделать опцию "выбор цветов" для каждого цвета. Например, если мы меняем голубой на зеленый, палитра меняется на 44. Если меняем красный на желтый, 42. Если одновременно и голубой и красный - получаем 46. Этот механизм можно расширить, если изучить табличку.
Либо можно сделать "захардкодженный" переключатель, выбрав самому самые клевые палитры. Главное, чтобы самый темный цвет оставался самым темным (если черный - 0, то и во всех палитрах черный - 0, на карйняк можно поменять его на синий), а самый светлый - светлым (тут можно менять белый-желтый или белый -голубой).
Всё, финальная версия графики. Точнее 2 в 1, переключаются кнопкой F0. Прикиньте, там F-ноль есть. А в эмуляторе b2m это кнопка ESC.
http://s004.radikal.ru/i205/1212/a4/53d94a1ce427.png
http://s56.radikal.ru/i154/1212/92/9690d95162fc.png
Скачать игру: http://rghost.ru/42408019
Осталось доделать:
1) Стартовую картинку
2) Мигающий курсор во время ввода имени в таблице рекордов
2) Еще доработаю градиент на трубах. Можно к белому еще голубого цвета добавить.
3) Позиций в таблице рекордов будет больше.
4) Имя победителя бы влево сместить. Но это и так нулевая позиция текста с точки зренеиня BIOS. Надо BIOS обманывать как то.
5) Возможно глаза белым
NovaStorm
22.12.2012, 11:58
>5) Возможно глаза белым
Попробовал покрасить, так по-моему действительно лучше. Палитра больше нравится вторая.
Однозначно вторая палитра.
Вместо F0 на реале получилось СТР. Поправлю.
Переделал переключение спрайтов. Вместо использования указателей на спрайты, и изменения этих указателей, теперь я обмениваю местами участки памяти содержащие старые и новые блоки.
Сделал для этого функцию memswap(void*, void*, uint), но почему то все сломалось.
Еще буду искать в BIOS-е функцию типа getch (ожидать нажатия кнопки и вернуть код), на аналогичную, но без ожидания.
DATAsoft
22.12.2012, 16:05
А мне первая палитра больше понравилась.
Mad Killer/PG
22.12.2012, 16:33
Можно два варианта, первую игру назвать Toxic Edition:-)
DATAsoft
22.12.2012, 16:47
Точно. А вторую назовём blue edition.:)
Mad Killer/PG
22.12.2012, 16:53
DATAsoft, лучше Ice edition:-) в связи с цензурой на голубой цвет.
DATAsoft
22.12.2012, 22:06
Не. Лучше по Принципу Задорнова: блювота, тьфу bluewater - голубая вода.:)
5 ый вечер подряд пытаюсь нарисовать заставку...
5 ый вечер подряд пытаюсь нарисовать заставку...
И как? Получилось?
После праздников дорисую.
Под новый год дел было куча, а сейчас я решил отдохнуть от программирования. Попаять хочется.
18-01-2012: Помню и доделаю.
18-01-2012: Помню и доделаю.
А пока, ставим рекорды со старой заставкой :)
http://lvovpc.ho.ua/games/page.php?name=lines
Powered by vBulletin® Version 4.2.5 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot