Важная информация

User Tag List

Страница 4 из 9 ПерваяПервая 12345678 ... ПоследняяПоследняя
Показано с 31 по 40 из 86

Тема: Эмулятор 'Etalon Korvet Emulator' - разработка

  1. #31
    R.I.P.
    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от DDp Посмотреть сообщение
    Но, ещё одно "НО" к идеалу - в CGA мониторах цвет №6 не жёлтый, а коричневый (AA5500).
    в КТДП - явно указано жёлтый
    Нажмите на изображение для увеличения. 

Название:	KTDP-COLOR-ESL.png 
Просмотров:	419 
Размер:	3.3 Кб 
ID:	48356

  2. #31
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #32
    R.I.P.
    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    версия из репозитория теперь собирается mingw под виндой,

    вот тестовая сборка (правда там вместо чернобелого - чернозеленый режим)
    https://yadi.sk/d/fFBDqJ_EUQyVY

    аллегро - на редкость забавная либа оказалась
    опять пришлось чинить клавиатуру
    и это при том что оригинал для винды и писался
    а тут еще пару багов вылезло
    самый приятный, у клавиши ':' под виндой оказлся другой код, не KEY_COLON а KEY_SEMICOLON
    спасло наличие алиасов
    а то бы пришлось ifdef писать.

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

    p.s. собирал mingw (с сайта) и аллегрой с сайта же бинарной.
    p.p.s. инструкцию набросаю, я для этого виртуалку сделал - красота.

  4. #33
    Moderator Аватар для Serebriakov
    Регистрация
    06.04.2013
    Адрес
    г. Могилев, Беларусь
    Сообщений
    253
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    109
    Спасибо Благодарностей получено 
    55
    Поблагодарили
    26 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Очень во-время. На прошедших выходных хотел попробовать кое-чего всунуть в эмулятор (свои палитры, scale2x, посмотреть куда делись скриншоты по F8 + поправить, чтобы новые не пытались поверх старых записываться), но только зря потратил время на сборку. Собрать как положено не получилось. В конечном итого то, что собралось пишет, что нет внешнего ПЗУ =(. Пробовал разные версии minigw-msys, но тщетно. Allegro использовал: allegro-4.4.2-mingw-3.4.5. В конечном итоге более-менее нормально собралось без makefile только в CodeBlocks (для меня там проще указать что и где искать-линковать, с мэикфайлами у меня туговато пока).
    Так что инструкция была бы очень кстати.
    Где у меня были проблемы при сборке:

    Скрытый текст


    Код брался вчера с BitBucket, ревизия dc3353428737.

    1) gui.c, строка 22 (ILoveSpeccy писал об этом выше):
    Код:
    заменить:
    #include <korvet.h>
    на
    #include "korvet.h"
    2) i8080dis.c, строка 163:
    Код:
    .....
    162 offset&=0xffff;
    163 cmd=mem[offset];
    .....
    F:\MiniGW\Korvet\i8080dis.c|163|error: 'mem' undeclared (first use in this function)

    Поискал по файлам, больше вообще нигде не объявлен и не упоминается такой массив как mem[]. Не знаю что это такое, закомментировал =)

    3) i8080inc.c, строка 31 (самое начало кода в файле):

    Код:
    31	switch(op) {
    32		case 0x00:			/*              nop */
    33		case 0x08:			/* undocumented nop */
                    .....       
                            }
    F:\MiniGW\Korvet\i8080inc.c|31|error: expected identifier or '(' before 'switch'|

    Заглянул в i8080.c, там в 184 строке функцию разрывает включение:
    Код:
    int CPU_Exec1step (void)
    {
     unsigned char op;
     int i,j;
    
      Tstates = 0;
      op=RD_BYTE((int)PC++);
    
    #include "i8080inc.c"
    .....
    }
    Я, конечно, пока не опытный кодер, но такой фичи как разрывающий инклюд, до селе не встречал =) Не уверен, что стандарт такое позволяет.
    Думал вынести в функцию, но для экономии времени просто перенес все из i8080inc.c в i8080.c вместо разрывающего инклюда.

    4) Снова i8080dis.c, начиная со строки 118 и еще в нескольких местах далее:
    Код:
    .....
    117  	offset&=0xffff;
    118: 	cmd=GET_BYTE(offset);
    119: 	nextbyte=GET_BYTE(offset+1);
    120  	nextword=GET_WORD(offset+1);
    .....
    129   sprintf( text+j*2+6, "%02X", GET_BYTE(offset+j));
    .....
    obj\Release\i8080dis.o:i8080dis.c|| undefined reference to `GET_BYTE'|
    obj\Release\i8080dis.o:i8080dis.c|| undefined reference to `GET_WORD'|

    и т.п.

    Где-то я встречал такой метод как GET_BYTE, в каком-то классе работы со строками в другом проекте, в коде эмулятора больше нигде не встретил ни декларации ни самой функции.
    Короче, опять комментирую непонятные пока строки с ошибками =)

    После этого, собирается без ошибок, но эмулятор настоятельно требует какое-то внешнее ПЗУ, хотя все нужное ему для работы есть в каталоге =)
    [свернуть]
    Последний раз редактировалось Serebriakov; 23.06.2014 в 17:57.

  5. #34
    R.I.P.
    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    чудеса,
    я просто make собирал 8)
    эти файлы точно не менял, баги были внутри

    ---------- Post added at 17:35 ---------- Previous post was at 17:33 ----------

    Цитата Сообщение от Serebriakov Посмотреть сообщение
    посмотреть куда делись скриншоты по F8 + поправить, чтобы новые не пытались поверх старых записываться
    скриншоты на месте, точно
    есть мысль, просто создавать новую папку (DMPYYMMDDHHMMSS) и в нее сваливать всё.

  6. #35
    Moderator Аватар для Serebriakov
    Регистрация
    06.04.2013
    Адрес
    г. Могилев, Беларусь
    Сообщений
    253
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    109
    Спасибо Благодарностей получено 
    55
    Поблагодарили
    26 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А комментарии по этим неизвестным массивами-функциям будут (те, что в спойлере) ? =)

    Насчет скриншотов. По F8 теперь ведь зум, а не сброс дампа со скриншотом. Вообще, нужно было бы сделать просто сброс скриншота (например, shift+s) без дампа. Ну и хотелось бы отдельную возможность сброса-восстановления (ctrl+s, ctrl+r) дампа памяти на диск (сохранение в играх). Вроде в этом эмуляторе не было реализовано. С каталогам я бы не мудрил, есть простенький алгоритм нахождения последнего файла в папке:
    Код:
    // Возвращает имя первого свободного файла
    // параметр - начало файла например "screenshot"
    AnsiString __fastcall TForm1::FileName(const char *fname)
    {
      int i=0,j=0;
      //Станадартное имя задаваемое в параметре ф-и
      AnsiString DEF=AnsiString(fname);
      //Возвращаемое имя
      AnsiString NAME="";
    
     do
       {
          i++;
          NAME=DEF;
          
          for (j=0;j<(3-AnsiString(i).Length());j++)
            {
               NAME+="0";
             }
          NAME+=AnsiString(i);
          NAME+=".kdi";
       } while (FileExists(NAME.c_str()));
    
     return NAME;
    }
    Код немого замусорен и надо бы перевести на чистый C, но идея, думаю, будет ясна. Это кусок из кода дампера, который писал много времени назад, но не дописал. Нужно было для непрерывного режима дампа.

    P.S. А, да. Забыл. Надо бы пройтись по исходникам и пособирать все changelog'и в один файл. Когда изучал код, насчитал их 3 штуки в разных местах. Для истории надо бы подрихтовать и сделать один полный.
    Последний раз редактировалось Serebriakov; 23.06.2014 в 19:09.

  7. #36
    R.I.P.
    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    пробуйте

    вот инструкция

    Скрытый текст


    Код:
    1. DOWNLOAD
    	tortoise HG
    	http://tortoisehg.bitbucket.org/download/
    
    		http://bitbucket.org/tortoisehg/files/downloads/tortoisehg-3.0.1-x86.msi
    		http://bitbucket.org/tortoisehg/files/downloads/tortoisehg-3.0.1-x64.msi
    
    	mingw installer
    		http://sourceforge.net/projects/mingw/files/Installer/
    
    		http://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download
    
    	allegro
    		https://www.allegro.cc/files/?v=4.4
    
    		http://cdn.allegro.cc/file/library/allegro/4.4.2/allegro-4.4.2-mingw-4.5.2.zip
    
    2. Install
    
    	Install tortoise HG
    	Install MINGW
    		launch installer and select 
    			mingw-developer-toolkit
    			mingw32-base
    			msys-base
    		Installation -> Apply changes
    		(wait while download and installing)
    
    		mingw installed in C:\MinGW
    
    	extract allegro-4.4.2-mingw-4.5.2.zip into  C:\MinGW
    
    
    3. update $PATH
    	set MINGDIR=c:\mingw
    	set PATH=%MINGDIR%\bin;%MINGDIR%\msys\1.0\bin;%path%;
    	"c:\FAR_\Far\Far"
    
    4. checkout sources from bitbucket
    
    	create some folder (c:\dev\ as sample)
    	in c:\dev
    	hg clone https://bitbucket.org/esl/korvet-pk8020-emulator
    
    	for updating files from repository
    	hg ci
    	hg update
    
    5.  edit Makefile (switch to windows) (will fixed late)
    
    	#LIBS     = -mwindows -lallegro-4.4.2-mt
    	LIBS     = -lalleg
    	replace to 
    	LIBS     = -mwindows -lallegro-4.4.2-mt
    	#LIBS     = -lalleg
    
    6. compile
    	cd c:\dev\korvet-pk8020-emulator
    	make clean 
    	make
    [свернуть]


    ---------- Post added at 18:08 ---------- Previous post was at 18:04 ----------

    Цитата Сообщение от Serebriakov Посмотреть сообщение
    Я, конечно, пока не опытный кодер, но такой фичи как разрывающий инклюд, до селе не встречал =) Не уверен, что стандарт такое позволяет.
    Думал вынести в функцию, но для экономии времени просто перенес все из i8080inc.c в i8080.c вместо разрывающего инклюда.
    я буду этот кусок менять на более новую версию

    а по поводу инклуда
    инклуды же выполнются до компиляции, просто модифицирую исходник
    на то он и ПРЕПРОЦЕССОР

    это абсолютно по снандарту

    ---------- Post added at 18:09 ---------- Previous post was at 18:08 ----------

    Цитата Сообщение от Serebriakov Посмотреть сообщение
    А комментарии по этим неизвестным массивами-функциям будут (те, что в спойлере) ? =)
    что-то видимо с конфигами компилера
    у меня ТАКОГО нет вообще

    ---------- Post added at 18:13 ---------- Previous post was at 18:09 ----------

    а, вроде ясно
    i8080inc.c - он автономно не компилится, а инклудится,
    вообще - собирай маке

    ---------- Post added at 18:14 ---------- Previous post was at 18:13 ----------

    Цитата Сообщение от Serebriakov Посмотреть сообщение
    Насчет скриншотов. По F8 теперь ведь зум, а не сброс дампа со скриншотом.
    а, так дампы и скриншоты всю жизнь и были на Alt+F8
    а на F8 раньше был FullScreen а теперь ZOOM

  8. #37
    Moderator Аватар для Serebriakov
    Регистрация
    06.04.2013
    Адрес
    г. Могилев, Беларусь
    Сообщений
    253
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    109
    Спасибо Благодарностей получено 
    55
    Поблагодарили
    26 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Да, в IDE, видимо, нужно еще полазить по настройкам компилера. Да и прагмы подобавлять, т.к. там еще и варнингов много.
    По вашему ману - вроде все так и делал, разве что не делал make clean перед make. Попробую сова пособирать через msys.

    Однако, что это за такой нигде не объявленный массив mem[offset] (п.2 спойлера) и функции GET_BYTE(), GET_WORD (п.4 спойлера)?

    Насчет F8 всегда ориентировался на DOC/read.me:
    Клавиши управления.

    f6 - пока нажата - максимальная скорость
    f7 - пока нажата - палитра на экране устанавливается стандартную (дебаг)
    f8 - записывает образ памяти (64к) в файл. (дебаг)
    f9 - пока нажата - Simple User Menu
    f10 - Переключатель между цветным и чернобелым режимом
    f11 - Reset
    f12 - Выход
    Про Alt+F8 вообще не знал, думал выкинули функцию.
    Проверил, в старых версиях дампы происходят и по F8 и по ALT+F8. Чудеса =)

    Опять же, повторюсь, нужно подрихтовать все changelog'и readme, todo и т.п. и сложить в одну папку.
    Ну и хотелось бы отдельные бранчи с экспериментальными функциями вроде сети от forth32 и SDL от ILoveSpeccy, чтобы не потерялись и потом было легче внедрить в основную ветку =) А так же makefile, которым можно собрать любую конфигурацию из любой ветки.
    Последний раз редактировалось Serebriakov; 23.06.2014 в 19:42.

  9. #38
    R.I.P.
    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    о, полезно
    эти два файла были неиспользуемые, выкинул
    инклуд исправил
    репозиторий обновил

    ---------- Post added at 18:41 ---------- Previous post was at 18:41 ----------

    если бы собиралось через make - собралось бы

    ---------- Post added at 18:43 ---------- Previous post was at 18:41 ----------

    а про варнинги, это идея, но пока можно собирать без -Wall

  10. #39
    R.I.P.
    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    FORTH32 реализовал поддержку внешнего ПЗУ
    я впилил его код сюда

    в комманд лайне -x file.rom - подключить внешнее пзу

    заодно сделал что можно указать файл основного ПЗУ в комманд лайне -r
    -r data\korvet11.rom

    как сайдэффект, если подключено EXTROM то отключается поддержка джойстка

    собственно в эмуляторе давно есть поддержка джойстика на порту EXT
    настоящий PC джойстик эмулирует джойстик поключенный к порту EXT Корвета.

    она работает в

    Скрытый текст


    Код:
    ANTON
    
    ITA EXPRESS
    ERIC BOMBER
    FIRE RESCUE
    NINJA CAGE
    XYZON
    PAC-MAN
    
    DEFLECTOR
    DANDARE
    DANDARE2
    [свернуть]


    правда работает только с внешним джойстиком 0
    в теории можно было бы сделать маппинг джойстика на кнопки, может и сделаю ...
    в свое время делалось ради исследования, да так и осталось

    p.s. огромное спасибо FORTH32
    p.p.s поддержку сети допилю

  11. #40
    Moderator Аватар для Serebriakov
    Регистрация
    06.04.2013
    Адрес
    г. Могилев, Беларусь
    Сообщений
    253
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    109
    Спасибо Благодарностей получено 
    55
    Поблагодарили
    26 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от esl Посмотреть сообщение
    p.p.s поддержку сети допилю
    Прошу не забыть про ифдефы для виндузятников, пока код сети не будет портирован на win

    Задался вопросом, скажите, а нельзя сделать в эмуляторе абсолютное позиционирование курсора мыши, а не относительное?
    Т.е., чтобы курсор эмулятора совпадал с реальным курсором, а не убегал от него?
    Поглядел бегло исходники, вроде значение координат и должно быть абсолютным.
    Берутся смещения курсора через Allegro и отправляются в эмулятор.
    Пожалуй, перепишу себе на листок и разберу все поразрядные операции по шагам,
    какой бит куда пихается , т.к. никак не пойму откуда появляется это паразитное смещение курсора.

    И еще, планируется ли GUI и если планируется какого плана - рисованный или оконный, например на QT?
    Можно было бы тогда отладчик серьезно доработать по удобству.

    Сам GUI, как по мне, очень удачно был реализован в каноничной версии VitrualKorvet 0.12(9):


    http://soviet-pc.narod.ru/VKorvet0129.zip

    Особенно радовала клавиатура, когда не получалось найти бинды к реальной.
    А вообще, бинды надо-бы сделать аля DOSBOX, жмем CTRL+F1 и выскакивает:



    Только лучше не рисованный, а с VirtualKorvet GUI. Ну или фотку реальной клавиатуры подставить.

    P.S. И еще вопрос: косметические патчи со своими свистелками-гуделками в эмулятор принимаются?
    Последний раз редактировалось Serebriakov; 26.06.2014 в 01:19.

Страница 4 из 9 ПерваяПервая 12345678 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Athletic Land 4 Korvet
    от esl в разделе Корвет
    Ответов: 2
    Последнее: 20.04.2013, 12:48
  2. Разработка под эмулятором
    от Hacker VBI в разделе Программирование
    Ответов: 33
    Последнее: 14.03.2013, 15:11
  3. Разработка ZXOOM
    от Andrew771 в разделе Игры
    Ответов: 666
    Последнее: 16.08.2011, 17:22
  4. Разработка ZXOOM
    от Andrew771 в разделе Графика
    Ответов: 666
    Последнее: 16.08.2011, 17:22
  5. Разработка БК-0101-10
    от CodeMaster в разделе БК-0010/0011
    Ответов: 61
    Последнее: 21.04.2011, 21:13

Ваши права

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