Electronic game console

8-битные микроконтроллеры PICmicro (ПИКи) от Microchip и совместимые, а также 16-битные PIC24 и 32-битные PIC32

Moderator: Shaos

vitshan_m
Junior
Posts: 8
Joined: 26 Dec 2012 05:33
Location: 134.17.123.181

Electronic game console

Post by vitshan_m »

Привет. Вот более менее доделал свою электронную игру типа GAMEBOY .
микроконтроллер pic16f876 +lcd nokia 3310, схема и проект прилагаются.

Image

Image

программа заняла все 8 кб памяти программ.

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


В игре есть возможность создать разнообразные уровни- под землей, под водой,в замке,
в пустыне, в пещере ,на облаках итд. есть всякие островки летающие ,
батуты, стреляющие как в марио пушки, потайные комнаты ,блоки ,которые можно разрушать
подложив бомбу..... реализован горизонтальный и псевдовертикальный
скроллинг карты при игре. Игра сделана по типу DUCK TALES - восьмибитной игры на денди.


Я постарался сделать наиболее привлекательной графику, хотя в демо уровне все свалено в кучу без особого замысла.

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

а если бы было болеее 8 кб памяти программм то не понадобилась бы микросхема памяти 32кб , на ней записаны карты
уровней и данные врагов а также картинки применяемые как заставки.спрайты для скорости хранятся в мк.

фпс около 20 кадров в секунду при 10 мгц кварце.

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

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

в процессе написания игры пришлось много изучить , проще говоря если бы писал на си , то в 3 раза быстрее получилось бы,
но игра стала бы в 3 раза медленнее и постребовалось бы в 5 раз больше места при компиляции в файл прошивки ...



корпус пока на скорую руку...
Скоро в планах портировать игру на большой дисплей 128*64 виндстар или мэлт...


ссылка на весь архив с видео и проектом (35 мб)
http://yadi.sk/d/NZbaqwha1NkIz

ссылка на ютуб (кстати там еще есть старые видеоролики ) http://youtu.be/sj_GjShbDi0

ссылка на проект в протеусе
http://yadi.sk/d/gsMg5FSC1NkJ7
User avatar
shoorick
Doomed
Posts: 487
Joined: 05 Nov 2007 05:08
Location: Украина

Post by shoorick »

прикольно :)
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Electronic game console

Post by Lavr »

vitshan_m wrote:я выжал все что можно из этого микроконтроллера. если бы у него было больше озу (а есть около 300 регистров) то игра сильно изменилась бы,
...
Ну а что мешает ещё внешнюю память прицепить, вот как я делал?

Image

У тебя, я вижу, свободные ноги для этого остались, а их более чем достаточно...

Я надеюсь, ты спрайтами всё это делал? Тогда видеопамять большой быть не должна.
300 регистров тебе по идее должно хватить хранить коды спрайов хотя бы в двойном
буфере...
А сами спрайты из внешней памяти выкачивать.

Но автору конечно же виднее по месту. А проект Протеуса ты выложил что-ли?
А то я потыкался по твоим ссылкам и не нашел как-то... :(



PS. А вобще, мне кажется, в самом PIC-e должен быть интерпретатор псевдо-кода игры,
а сами коды игры должны считываться из внешней памяти.
Так по крайней мере сделана серия моих любимых играшек - https://ru.wikipedia.org/wiki/%D0%9B%D0%B0%D1%80%D1%80%D0%B8_%D0%9B%D0%B0%D1%84%D0%B5%D1%80.
Да и Шаос, похоже, такую же идею в своих баталиях роботов реализовал...


PPS. Проект нашел... спасибо! Немножко странный этот Яндекс.Диск...
А я думаю - чего проект такой большой ~ 36MБайт... :o А ты там и видео вложил...
:-?
iLavr
vitshan_m
Junior
Posts: 8
Joined: 26 Dec 2012 05:33
Location: 134.17.123.181

Post by vitshan_m »

чтобы правильно накладывать героя и врагов на фон,нужен видеобуфер 500 байт. а так как их нет, то приходится все накладывать онлайн друг на друга, в итоге квадратики затирают квадратики...

делать озу на внешней памяти (даже по spi)- вылазит тормозами. чтобы держались нормальлные фпс нужно спрайты тягать с пзу - так быстреее а не с внешней спи озу. - если с внешней то фпс ощутимо падает..

я мк занимаюсь толко год, но ооочень упорно ( вопросами касающимися игры) .

это некомерческий проект , он даже никому особо не интересен... его могут оценить только те кому в детстве не хватило гэмбоя ... ;-)

что порадовало, так это интерес к ней моей 5 летней дочки, сегодня она с интересом в нее играла, хотя я отключил пока всех врагов...

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

а потом переведу на дисплей glcd 128*64.. будет круть! ;-)

спасибо а отзывы,

ps/ а дочке заказал ritmix rzx -20 на будущий день рождения, чтобы не слепилась на моем nokia 3310 дисплее , ;-)
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Прикольно получилось

P.S. Прицепил фотку и схему в самый первый пост
Я тут за главного - если что шлите мыло на me собака shaos точка net
vitshan_m
Junior
Posts: 8
Joined: 26 Dec 2012 05:33
Location: 134.17.123.181

Post by vitshan_m »

спасибо!!!!!!!!!!!!!!, а то я пытался фотки приделать - не получилось.

это демо левел, пока предметы и враги не расставлены, но будет очень интересно, жаль рано вложил, потом видео будеет не таким интересным

Image
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

А под Протезусом у тебя модель Нокиа-3310 быстро отрабатывает?
На каком железе проект гонял?

Я к тому что может с экрана захват сделать? Видео темноватое у тебя, на мой взгляд...
iLavr
vitshan_m
Junior
Posts: 8
Joined: 26 Dec 2012 05:33
Location: 134.17.123.181

Post by vitshan_m »

почему то опять картинка не вставилась...

в протеусе летает, ну может процентов на 10 медленнее

снимал на камеру ,свет плохо падал,уж извините,следующее видео лучше постараюсь


комп простой атлон 2 ядра по 2900 ггц, карта 256 видео, 2 гига озу


на работе слабый комп старый 1400 гц озу 512 , так слайдшоу если честно а не эмуляция...
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

vitshan_m wrote:почему то опять картинка не вставилась...
и не вставится - у твоих линков окончание не картиночное (.jpg должно быть или там .gif)

кроме того в форум картиной не желательной вставлять изображения шире 640 пикселов (в соответствии с последними веяниями можно до 800)

вставил твою картинку левела как кликабельную

P.S. много времени ушло на разработку уровня? ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
vitshan_m
Junior
Posts: 8
Joined: 26 Dec 2012 05:33
Location: 134.17.123.181

Post by vitshan_m »

время-нет нет много, основной набросок в программе-пару часов, в свое удовольствие и в зависимости от вдохновения, а какие то доделки потом в течении нескольких дней.

даже используя такое ограниченное количество тайлов( а 8*8 чернобелых много тайлов не напридумаешь) и то можно забабахать большой интересный уровень,

а если бы в цветном варианте , или хотя бы как в гэмбое первом- в четырех градациях серого - то там конечно спрайты мне было бы трудно рисовать, я как бы не художник совсем.... а тут точками более менее сносные спрайты вроде получились...

вот архив программы для создания карт , раньше я тайлы расставлял в экселе заодно присваивая ячейкам соответствующее число-номер тайла и получал массив который и прошивал на микруху памяти ,

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

вот этот парень делает похожую гаму
http://www.polesite.ru/?p=2116

вот программа с моей картой в корневой папке
http://yadi.sk/d/IpP8YJC21yqcg


только в этом редакторе враги не расставляются , а делается это ручками и задавая по 15 переменных для каждого врага( много время тратится), этим займусь на днях и покажу результат, все пока работы много не доходили руки..
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Вытащил картинку с тайлами:

Image

Интересно, что твоя графика удивительным образом подходит под мой nedoPC SDK где тоже двухцветные тайлы 8x8 плюс Си-подобный язык программирования, т.е. теоретически можно твою игрушку портануть на Спринтер, Спектрум, Орион и Специалист (РК-86 не считаем - там голимый текст). Ну и все будущие nedo-компы, которые я добавлю, если время будет. ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
vitshan_m
Junior
Posts: 8
Joined: 26 Dec 2012 05:33
Location: 134.17.123.181

Post by vitshan_m »

тайлы если честно 9 пикселей по горизонтали, чтобы скомпенсировать столбцеобразный размер пикселя в дисплее нокиа, чтобы на экране получился квадратный пиксель на экране , а то 8*8 вытянутый по вертикали получится.

насчет портации, то ее легче по новому набрать, тем более если на си подобном языке. стремясь ужать код ,ускорить игру и преодолеть нехватку озу приходилось так сказать мудрить с кодом ( все на ассемблере).

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

спасибо за отзыв :no:
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Понятно - а как ты задавал что некоторые тайлы анимированные и как указывал где игрок может пройти, а где нет - на чём может стоять, а на чём нет?

P.S. А я для рисования двухцветных тайлов 8x8 обычно своей программой SCRED пользуюсь:

http://www.nedopc.org/nedopc/zx/soft_r.shtml
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

vitshan_m wrote:это демо левел, пока предметы и враги не расставлены, но будет очень интересно...

Image
Очень напомнило мне дремучие времена Jet-Set Willy... :wink: Врочем, квесты в чем-то
все похожи друг на друга...
iLavr
vitshan_m
Junior
Posts: 8
Joined: 26 Dec 2012 05:33
Location: 134.17.123.181

Post by vitshan_m »

рисуя экран ,игра опрашивает массив карты . в зависимсти от номера полученного спрайта игра переходит к процедуре обработки данного номера

спрайта.

если это номер допустим 45 то игра рисует лесенку и проверяет на совпадение координат с героем и опрашивает кнопки вверх вниз-
результат -ползем по лестнице или нет.

если спрайт номер допустим 50- пики -то прога проверяет тоже чтои с лестницей и убивает героя

если спрайт номер допустим 10 - кирпич, то игра рисует кирпич

если спрайт номер допустим 60 то игра рисует пламя огня, спрайт огня имеет 2 кадра, номер кадра чередуется постоянно в иге от 1 до 4 с

постоянным интервалом. поэтому все спрайты с кадрами- меняются синхронно.

если это монета то проверяем определенный массив-флагов, , брали ли мы эту монету или нет - и если не брали- то рисем ее, если уже взяли - то

нет.

ну и так пока весь экран не нарисуем и дальше по кругу.




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

проверки столкновения героя с картой то игра по координатам игрока проверяет карту в жтом же месте на наличие твердых блоков. тоесть если

движемся вправо то каждый цикл проверяется спрайт карты правее игрока, и если его номер( порядковый в таблице спрайтов) будет от 0 до 100 то

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


писать игры - мое хобби с детсва,+ паять всякие приемнички итд.. год назад эти два хобби,уже поднадоевшие получили второе рождение и соединились вместе, когда попался на глаза микроконтроллер в инете. С этими мк можно сделать все что угодно!!! я думаю что нашел свое хобби до старости ;-) абы время хватало...