Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Delphi

Ответ
 
Опции темы
Старый 14.10.2009, 00:55   #1
Tronix
Знающий
 
Регистрация: 26.07.2009
Адрес: Россия, Москва
Сообщений: 318
Написано 103 полезных сообщений
(для 331 пользователей)
Эмулятор приставки Chip-8

2:WaReZ_MEN - just for fun

После того, как написал интерпретатор Brainfuck возникло желание написать что-то посложнее. Сначала хотел взяться за эмулятор GameBoy'я, но понял, что пока не осилю. В итоге выбор пал на платформу chip8. Точнее это не совсем платформа, а интерпретируемый ассемблер, применявшийся во многих приставках в середине 70-хх. Интересен тем, что здесь наличествуют память, регистры, стек, таймеры, ну и ввод-вывод разумеется. (кому интересно: http://en.wikipedia.org/wiki/CHIP-8 )

На данном этапе полностью реализована эмуляция CPU, дисплея. Осталось сделать обработку клавиш (пока даже не знаю как, сложности там у меня) и таймеры. Возможно с клавиатурой обращусь к вам с вопросами, а то я в программинге с winapi - ноль. Дельфи-то первый раз за 9 лет поставил ))

Ну и сорцов пока не прилагаю, потому что еще все очень сыро. А пока вот рабочий скрин с запущенной игрой типа PacMan:
Миниатюры
Нажмите на изображение для увеличения
Название: dev.PNG
Просмотров: 1214
Размер:	70.6 Кб
ID:	7978  
(Offline)
 
Ответить с цитированием
Эти 5 пользователя(ей) сказали Спасибо Tronix за это полезное сообщение:
ABTOMAT (18.10.2009), Arles (17.10.2009), Dream (22.10.2009), Randomize (16.10.2009), SubZer0 (01.11.2009)
Старый 14.10.2009, 14:11   #2
Tronix
Знающий
 
Регистрация: 26.07.2009
Адрес: Россия, Москва
Сообщений: 318
Написано 103 полезных сообщений
(для 331 пользователей)
Ответ: Эмулятор приставки Chip-8

Cделал клавиатуру. Вынес весь процесс эмуляции в отдельный поток. Сейчас дорабатываю видео-вывод, ибо пока есть глюк - если часть спрайта вылезает за границы экрана, то она должна отобразится с другой стороны, а пока не отображается ) Также пока не реализованы таймеры и игра идет просто с засыпанием потока на 1 и временем на перерисовку спрайтов.

Так как в оригинальной приставке было всего 16 клавиш, управление нумпад клавой с включенным NumLock (-,+,*,/,Enter на нумпад клаве тоже учавствуют). Причем во всех играх управление разное. Например в PONG левая палка ездит вверх/вниз клавишами 7,4 а правая палка вверх - плюс, вниз - минус. В игре BRAKEOUT все сделано нормально - влево клавиша 4, вправо - 6. Ну и тд.

Можно пока просто посмотреть простые игры типа BRAKEOUT, TICTAC (крестики-нолики), MAZE (просто рендерит рандомный лабиринт) и тд.
Миниатюры
Нажмите на изображение для увеличения
Название: sx1.PNG
Просмотров: 1148
Размер:	7.5 Кб
ID:	7981  Нажмите на изображение для увеличения
Название: sx2.PNG
Просмотров: 1116
Размер:	6.0 Кб
ID:	7982  Нажмите на изображение для увеличения
Название: sx3.PNG
Просмотров: 1113
Размер:	8.5 Кб
ID:	7983  Нажмите на изображение для увеличения
Название: sx4.PNG
Просмотров: 1131
Размер:	6.3 Кб
ID:	7984  Нажмите на изображение для увеличения
Название: sx5.PNG
Просмотров: 1138
Размер:	5.7 Кб
ID:	7985  

Вложения
Тип файла: zip chip8.zip (218.9 Кб, 676 просмотров)
(Offline)
 
Ответить с цитированием
Старый 14.10.2009, 18:31   #3
Hurrit
Мастер
 
Аватар для Hurrit
 
Регистрация: 27.01.2008
Адрес: Россия, СКФО, ЧР, Грозный
Сообщений: 1,144
Написано 578 полезных сообщений
(для 2,207 пользователей)
Ответ: Эмулятор приставки Chip-8

Прикольно, может когда нибудь напишешь нормальный эмулятор для пс2?
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Hurrit за это полезное сообщение:
ABTOMAT (18.10.2009), Arles (17.10.2009)
Старый 15.10.2009, 15:46   #4
Tronix
Знающий
 
Регистрация: 26.07.2009
Адрес: Россия, Москва
Сообщений: 318
Написано 103 полезных сообщений
(для 331 пользователей)
Ответ: Эмулятор приставки Chip-8

Сообщение от hgang Посмотреть сообщение
Прикольно, может когда нибудь напишешь нормальный эмулятор для пс2?
Думаю что вряд-ли

Исправил баг в отрисовке спрайтов за границами экранов, теперь все оке.Теперь не могу синхронизировать поток нормально, бился весь день вчера, в итоге забил. Короче функционально, но иногда нужно лишний раз нажимать reset чтоб вновь открытый файл нормально запустился.
Так же в архиве много новых игр.
Вложения
Тип файла: zip chip8new.zip (249.5 Кб, 720 просмотров)
(Offline)
 
Ответить с цитированием
Старый 17.10.2009, 01:40   #5
Tronix
Знающий
 
Регистрация: 26.07.2009
Адрес: Россия, Москва
Сообщений: 318
Написано 103 полезных сообщений
(для 331 пользователей)
Ответ: Эмулятор приставки Chip-8

Вообщем замучился я с этим потоком блин. То останавливается, то не останавливается =\ Уж сил никаких нет. Выкладываю исходники как есть, дорабатывать наверное уже не буду. Мало комментировано, много временных отладочных вставок, но если вдруг кто-то заинтересуется и будут вопросы - отвечу.
Вложения
Тип файла: rar src.rar (22.5 Кб, 678 просмотров)
(Offline)
 
Ответить с цитированием
Старый 17.10.2009, 03:45   #6
VasyaTerkin
AnyKey`щик
 
Регистрация: 07.10.2009
Сообщений: 2
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Эмулятор приставки Chip-8

Хорошая программка! Всегда хотел взглянуть на какой-нибудь эмулятор!

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

TNewThread = class; //не class(TThread)
Procedure TNewThread.Execute;
Begin
while canrun do
begin
GetOpcode;
if delay_timer > 0 then Dec(delay_timer);
if sound_timer > 0 then Dec(sound_timer);
ExecuteOpcode;
Application.ProcessMessages;
sleep(1);
end;
end;

все вроде работает также.
(Offline)
 
Ответить с цитированием
Старый 17.10.2009, 11:25   #7
Tronix
Знающий
 
Регистрация: 26.07.2009
Адрес: Россия, Москва
Сообщений: 318
Написано 103 полезных сообщений
(для 331 пользователей)
Ответ: Эмулятор приставки Chip-8

Честно говоря не знаю Все это ООП не для меня. Привык я к линейному программированию.
Идея была в том, чтобы вынести всю эмуляцию в отдельный поток. Когда открывается файл, поток нужно остановить, очистить память,стек,регистры, загрузить файл в память и опять запустить поток.
(Offline)
 
Ответить с цитированием
Старый 18.10.2009, 04:10   #8
VasyaTerkin
AnyKey`щик
 
Регистрация: 07.10.2009
Сообщений: 2
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Эмулятор приставки Chip-8

Понятно, просто вроде приставка то 8битная, как я понял, и вычисления там идут очень быстро, поэтому и подумал что можно все в одном потоке делать Хотя я в эмуляции еще не спец, может чето не то говорю
(Offline)
 
Ответить с цитированием
Старый 18.10.2009, 11:07   #9
Tronix
Знающий
 
Регистрация: 26.07.2009
Адрес: Россия, Москва
Сообщений: 318
Написано 103 полезных сообщений
(для 331 пользователей)
Ответ: Эмулятор приставки Chip-8

Сообщение от VasyaTerkin Посмотреть сообщение
Понятно, просто вроде приставка то 8битная, как я понял, и вычисления там идут очень быстро, поэтому и подумал что можно все в одном потоке делать Хотя я в эмуляции еще не спец, может чето не то говорю
Можно все делать в одном потоке. Если бы я еще знал как в этом дельфи сделать бесконечный цикл, было бы вообще здорово )))
(Offline)
 
Ответить с цитированием
Старый 18.10.2009, 13:45   #10
jimon
 
Сообщений: n/a
Ответ: Эмулятор приставки Chip-8

Tronix
очевидно :
while true do
begin
...
end;
 
Ответить с цитированием
Старый 18.10.2009, 15:02   #11
Tronix
Знающий
 
Регистрация: 26.07.2009
Адрес: Россия, Москва
Сообщений: 318
Написано 103 полезных сообщений
(для 331 пользователей)
Ответ: Эмулятор приставки Chip-8

Сообщение от jimon Посмотреть сообщение
Tronix
очевидно :
while true do
begin
...
end;
Где? В каком методе или как он там называется. OnActivate, OnShow, OnClick или где? Вообще где основной цикл программы? Если я зафигарю вышеуказанный цикл в методе OnActivate на форме например будут ли работать меенюшки там всякие и тд. Или залипнет программа?
PS: Не очевидно.
(Offline)
 
Ответить с цитированием
Старый 18.10.2009, 15:13   #12
johnk
Легенда
 
Регистрация: 01.10.2006
Сообщений: 3,705
Написано 296 полезных сообщений
(для 568 пользователей)
Ответ: Эмулятор приставки Chip-8

OnIdle?
(Offline)
 
Ответить с цитированием
Старый 18.10.2009, 15:14   #13
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Эмулятор приставки Chip-8

Дельфы - зло. Очевидно.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 18.10.2009, 15:19   #14
Tronix
Знающий
 
Регистрация: 26.07.2009
Адрес: Россия, Москва
Сообщений: 318
Написано 103 полезных сообщений
(для 331 пользователей)
Ответ: Эмулятор приставки Chip-8

Сообщение от ABTOMAT Посмотреть сообщение
Дельфы - зло. Очевидно.
Согласен )))
(Offline)
 
Ответить с цитированием
Старый 28.10.2009, 11:34   #15
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,354
Написано 2,470 полезных сообщений
(для 6,850 пользователей)
Ответ: Эмулятор приставки Chip-8

смотри не на Unit1.pas, а на Project1.dpr.
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
Тут идёт чисто паскаль.
между begin и end вставляй всё что хочешь.


Ненавижу делфи за её припарки мол тут пиши там не пиши
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Эмулятор Java на мобильном телефоне oliwin MidletPascal 19 18.07.2010 17:43
java-эмулятор sidiakin Прочие вопросы 80 27.04.2010 22:15
Эмулятор Seregakz Основной форум 31 08.07.2008 14:14


Часовой пояс GMT +4, время: 07:12.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com