PC-01 Lviv

It is currently 27 Apr 2024, 22:20

Forum Games WEB Tape Loader Twitter RSS

All times are UTC+03:00




Post new topic  Reply to topic  [ 18 posts ]  Go to page 1 2 Next
Author Message
 Post subject: SEFA
PostPosted: 23 Nov 2023, 13:47 
Offline

Joined: 18 May 2016, 19:55
Posts: 426
SEFA

Чому назва “SEFA” і що ця назва означає.
У мене завжди були складнощі з вигадуванням назв, :-) тому назви давав, так би мовити робочі, які потім повинні б перейменовуватись. Але потім звикаєш до назви і вже не бачиш необхідності в перейменуванні. “SEFA”, це якась абревіатура, яка була вигадана мною на початковій стадії проекту, але щоб я на початковій стадії проекту не вигадав, зараз ця абревіатура, вже явно не відповідає тому, що задумувалось на початку! :-) Але сама назва, нехай собі залишається такою, як є.

Що з себе уявляє “SEFA”.
Одним словом, я поки описати це не можу. Але можу розповісти хід своїх думок, кому цікаво почитайте далі.
Завжди хотілось щось написати на мобільний телефон. Причому використовуючи те, що мені подобається. А мені подобається паскалеподібні мови програмування. Для мобільних телефонів існують паскалеподібні середовища програмування. Довго я “грався” з такими середовищами, як з іграшками і гадав, що для більш серйозного, окрім проб та різних експериментів вони не здатні. Звісно, серйозним я вважав написати, щось пов'язане з емулятором КР580, емулятором
ПК-01, МАДЛом і т.д.
У повноцінному вигляді, тобто, в такому як на комп'ютерах написати емулятор ПК-01, думаю дуже складно, принаймні на PascalGUI середовищі, яке я вибрав для використання та написання. Немало усіляких нюансів пов'язаних з виводом графіки та віртуальною клавіатурою.
Ніколи якось не задумувався, що через OTG-кабель для мобільного можна під'єднувати фізичну клавіатуру та “мишку”. І от одного разу спробував та вирішив, написати для мобільного щось пов'язане з емулятором КР580, ПК-01, МАДЛом і т.д.
Навіть з фізичною клавіатурою, думаю, теж проблем буде немало, якщо намагатись створювати повноцінний емулятор. Але ж можна піти таким шляхом, як я робив для ОС “Колібрі”, тобто створювати емулятор з вже вмонтованою іграшкою. Ну на цьому я думаю, усі біди не закінчаться. Тобто, для мобільного, не вийде так просто, як для ОС “Колібрі”, “по шаблону”, в автоматичному режимі, створювати готові APK-файли які будуть з себе уявляти емулятор
ПК-01-з-вмонтованою-іграшкою, принаймні, я так думаю зараз. Кожну окрему іграшку прийдеться “підгоняти” для клавіатури, по виводу на екран по швидкості і т.д. І от вирішив розпочати такий проект, з допомогою якого буду намагатись, створювати, щось корисне, пов'язане з КР580, ПК-01, МАДЛом і т.д. для мобільного телефону, з використанням PascalGUI, як компілятора.

Особливість проекту та кого це може зацікавити.
Ну по-перше, я мабуть скажу, кого це точно не зацікавить. :-) Не зацікавить, це тих, хто чекає усе в “коробочці”, в “запакованому вигляді” та ще й обмотаному подарунковою стрічкою. :-) Таким точно воно не буде цікаво. Адже я не збираюсь з кожну з ігор ПК-01, яких до речі, сотні, “підточувати” для мобільного телефону та викладати APK-файли вже готові для використання.
Особливість проекту у тому, що я буду викладати ВИХІДНИХ КОД своїх розробок, які будуть сприяти в компіляції ПК-01 ігор для мобільного телефону. Користувач, який зрозуміє, як це робити, зможе самостійно “штампувати” APK-файли з іграми (звісно, які вже існують) та програмами ПК-01, причому з налаштуваннями з якими йому це потрібно. Також вихідний код може зробити внесок користувачеві та наштовхнути на нові якісь розробки, для мобільного телефону, використовуючи PascalGUI, які пов'язані з КР580, ПК-01. Коротше кажучи, - Я не буду ловити за вас рибу, я просто покажу як це можна робити! :-)
Аналогом того, що я кажу, є те, як колись, учасник форуму MARAT_BEST, виклав чернетку свого емулятора, на базі якого я створив SASemulator. До речі, чернетками учасника MARAT_BEST, я й досі постійно користуюсь, за що йому дуже вдячний. :-)
Ще особливий момент проекту у тому, що він буде “підточений” для написання програм на комп'ютері з подальшою можливістю компілювання в мобільному (в GUIpascal).


Як це буде відбуватись технічно.
Технічно це виглядає приблизно так. Я викладую вихідний код “SEFA”, сюди на форум, а також програму яка з LVT, SASLVE та/або інших якісь форматів створює відкритий код паскаль-модулю(Unit) з даними з файлів LVT, SASLVE. Цей модуль копіюється разом з іншими модулями “SEFA”, на мобільний пристрій, де з допомогою PascalGUI створюється APK-файл.
Ось згадав, що окрім схожості, як я робив це для ОС “Колібрі”, це схоже на мій проект SAVtoEXE. Але в SAVtoEXE можна було довести до автоматизму, шляхом “тупого врізання” в EXE-файл даних з файлу SAV. З APK-файлом такі “фокуси”, :-) тобто такі “тупі врізання”, самі розумієте, що не можливі.

Чому б мені самому не створювати готові APK-файли з іграми ПК-01 та не викладати сюди з “подарунковою стрічкою”.
Це не є моєї кінцевою метою! Мені це не зовсім й цікаво, принаймні як кінцевий результат! Моєю метою є подальша розробка “SEFA”, з вбудовуванням в нього MADL, P_EMUL і все що зможу та використання цього усього у мобільному!
Побачу що з цього усього вийде! До того ж, як я вже казав, під кожну іграшку треба буде робити налаштування фізичної клавіатури, вивід на екран, можливий/чи не можливий його двійний-ZOOM для даної іграшки, бо поле екрана буде “зрізано”, не в кожній іграшці це припустимо, може зміщення екрану ПК-01 в екрані мобільного треба буде робити, в кожній конкретній іграшці.
Регулювання швидкості іграшки може не вийти зробити це від таймеру, я не знаю наскільки точний та не глючний таймер в PascalGUI, на маленьких проміжках часу, може в деяких випадках треба робити пусті цикли для затримки, але ж на іншому мобільному буде й інша швидкість. В таких іграшках як “Шашки”, “Шахи” й взагалі може затримки не потрібно, та й до того ж можна й не тільки фізичну, а й віртуальну клавіатуру задіяти, яка обробляється лише при відпусканні клавіш чи біс його знає як вона взагалі обробляється. В віртуальній клавіатурі неможливо обробити натискання декількох клавіш відразу, принаймні в PascalGUI, принаймні я не знаю як, це зробити. Нюансів різних вистачає. А я ще й початківець та в цьому усьому глибоко “не плавав”!

Всі хто хоче, зрозуміти, освоїти та використовувати “SEFA”, повинен уважно читати усе, що я пишу. Також є потреба скачувати усі архіви “SEFA” послідовно та вивчати їх. Архіви “SEFA” будуть викладатись за принципом “наростання” й звісно по-ходу будуть змінюватись і якщо не спостерігати за його змінами, з першого архіву “SEFA”, то можуть виникнути великі складнощі в розумінні як це все працює.


Top
   
 Post subject: Re: SEFA
PostPosted: 23 Nov 2023, 13:59 
Offline

Joined: 18 May 2016, 19:55
Posts: 426
Підготовка до роботи.

Щоб підготувати “SEFA” до роботи, для початку потрібно встановити FPC 2.6.2 на комп'ютер та PascalGUI 4.07 на мобільний. Ну й звісно розпакувати архів з “SEFA”.
BAT-файли “SEFA” налаштовані, на каталог C:\FPC\2.6.2 в якій буде встановлений FPC 2.6.2. Якщо ви захочете використовувати інший каталог для для встановлення FPC 2.6.2, необхідно буде налаштувати BAT-файли “SEFA”, таки як C_FPC2.6.2fi.Bat, C_FPC2.6.2fi_.Bat і т.д. можливо поява й інших BAT-файлів, а також можлива зміна назви файлу або каталогу де цей файл розташований.
Приклади використання “SEFA” розраховані на те, що “SEFA” буде розпакована в C:\_SEFA\_SEFA01, де "01", означає версію “SEFA”. Використання іншого каталогу та диску для “SEFA” можливо та й не повинно ніяк відображатися на правильності робити. З іншої сторони, автор це не перевіряв та й перевіряти не планує.

Розташування версій “SEFA” планується за принципом розташування версій FPC, тобто, в FPC, якщо ви звернули увагу, версії встановлюються ось так:
C:\FPC\2.6.0\
C:\FPC\2.6.2\
і т.д.
В “SEFA”, основний каталог C:\_SEFA\, а в ньому “_SEFA01”, “_SEFA02” і т.д.
тобто
C:\_SEFA\_SEFA01\
C:\_SEFA\_SEFA02\
і т.д.
Кожна версія самостійна і не впливає на інші версії, тому непотрібні версії можуть бути перенесені або навіть видалені. Оскільки “SEFA” має не великий розмір, в один архів, будуть входити попередні версії.


Top
   
 Post subject: Re: SEFA
PostPosted: 23 Nov 2023, 14:01 
Offline

Joined: 18 May 2016, 19:55
Posts: 426
Встановлення FPC 2.6.2

Для встановлення FPC 2.6.2 необхідно завантажити та запустити файл інсталяції fpc-2.6.2.i386-win32.exe, тобто ту версію FPC з якою працює автор проекту. З іншими версіями не гарантовано, що це буде працювати, хоча можете спробувати. Встановлювати можна з мінімальною інсталяцією, хоча я рекомендував би з повною.

Завантажити файл інсталяції FPC 2.6.2 можна звідси:
https://sourceforge.net/projects/freepa ... n32/2.6.2/
https://sourceforge.net/projects/freepa ... e/download

Або звідси розділеним на частки (до 10 мегабайтів частка)
231107_fpc-2.6.2.i386-win32.7z.001.7z - http://forumstatic.ru/files/001b/d4/a7/56553.7z
231107_fpc-2.6.2.i386-win32.7z.002.7z - http://forumstatic.ru/files/001b/d4/a7/41524.7z
231107_fpc-2.6.2.i386-win32.7z.003.7z - http://forumstatic.ru/files/001b/d4/a7/63955.7z
231107_fpc-2.6.2.i386-win32.7z.004.7z - http://forumstatic.ru/files/001b/d4/a7/22971.7z
231107_fpc-2.6.2.i386-win32.7z.005.7z - http://forumstatic.ru/files/001b/d4/a7/82633.7z

MD5 файлу fpc-2.6.2.i386-win32.exe: 5acaa177d5cd2894a3e0ab6a8c8f32dd

Також можна замість інсталяції завантажити вже встановлену на диск “C” (мінімальна версія)
231107_FPC 2.6.2portable (на диск C, м_н).7z.001.7z - http://forumstatic.ru/files/001b/d4/a7/23294.7z
231107_FPC 2.6.2portable (на диск C, м_н).7z.002.7z - http://forumstatic.ru/files/001b/d4/a7/79974.7z

При бажанні можна зробити налаштування мови повідомлень FPC, на російську, оскільки налаштувань Української мови не має. (Не завадило б перекласти хоча б з допомогою перекладачів, але це все якось потім.)
Для цього необхідно:
в файлі C:\FPC\2.6.2\bin\i386-win32\fpc.cfg знайти розділ
“# path to the messagefile, not necessary anymore but can be used to override
# the default language”
та додати строку “-FrC:\FPC\2.6.2/msg/errorru.msg”, всі інші строки повинні бути закоментованим, тобто починатись з “#”. Перевірити запуском C:\FPC\2.6.2\bin\i386-win32\fpc.exe коректність виводу на екран повідомлень.
Якщо спостерігаються “крокозяби”, то необхідно на всякий випадок зробити
копію файлу C:\FPC\2.6.2\msg\errorru.msg та перекодувати його в кодування 866,
наприклад з допомогою Far Manager.

При необхідності можна скачати:
http://forumstatic.ru/files/001b/d4/a7/60816.7z , - файл errorruORG65001.7z,
оригінал errorru.msg для FPC 2.6.2, в кодуванні 65001.

http://forumstatic.ru/files/001b/d4/a7/27692.7z , - файл errorru866.7z,
оригінал errorru.msg для FPC 2.6.2, в кодуванні 866.


Top
   
 Post subject: Re: SEFA
PostPosted: 23 Nov 2023, 14:03 
Offline

Joined: 18 May 2016, 19:55
Posts: 426
Встановлення PascalGUI 4.07 на мобільний.

PascalGUI писаний ще для Android 4.0. На якому він працює нормально. Також він працює нормально на Android 7.0. Щодо інших версії Android, не берусь знати, не перевіряв. З GooglePlay його завантажити не можливо. Тому для встановлення PascalGUI треба використовувати сторонні джерела. Звісно, в налаштуваннях мобільного повинна бути ввімкнута можливість встановлення програм з сторонніх джерел. Де саме, ця можливість в мобільному, - в кожному мобільному по різному. Ви відповідно приймаєте на себе усі страхи та ризики з встановлення даної програми, тому що це вважається небезпечним. Також створенні APK-файли компілятором PascalGUI 4.07, теж вважаються не безпечними. Як варіант, можна ризикнути лише встановленням PascalGUI і кожний раз запускати потрібні програми прямо з компілятора PascalGUI, без компіляції в APK-файл та встановлення його в мобільний. Тим паче, розмір APK-файлів значно більше ніж розмір вихідного коду для PascalGUI. Встановлені APK-файли, які скомпільовані PascalGUI будуть “засмічувати” внутрішню пам'ять мобільного, що не завжди є гарно.
Де саме брати інсталяцію PascalGUI рекомендацій ніяких не даю. Ну хіба що натякну, що в будь якому пошуковику можна набрати “PascalGUI скачати”, та отримати безліч посилань. Якщо сказати більш суттєво, то є такий сайт як https://trashbox.ru/ на ньому наче я й брав. Деякі версії міг брати наче через https://apkpure.com/

Щодо моєї особистої колекції інсталяцій PascalGUI невідомого походження, то
вона ось:
pasgui_3.50.7z - http://forumstatic.ru/files/001b/d4/a7/77491.7z
(не компілює в APK)

pascalgui_v3.97.7z - http://forumstatic.ru/files/001b/d4/a7/35183.7z

PascalGUI_3_99_arm.7z - http://forumstatic.ru/files/001b/d4/a7/98337.7z

PascalGUI 4_04_arm.7z - http://forumstatic.ru/files/001b/d4/a7/22969.7z

pascalgui_4.04_arm.7z - http://forumstatic.ru/files/001b/d4/a7/34088.7z

PascalGUI_4.07_arm.7z - http://forumstatic.ru/files/001b/d4/a7/79470.7z
(встановлена у мене).


Top
   
 Post subject: Re: SEFA
PostPosted: 23 Nov 2023, 14:03 
Offline

Joined: 18 May 2016, 19:55
Posts: 426
Встановлення “SEFA”.

Для встановлення “SEFA” достатньо розпакувати архів, з усіма версіями “SEFA”, в каталог C:\_SEFA\ , або ж вибрати окрему версію, наприклад “_SEFA01” та розпакувати лише її. Після розпакування розташування версії “_SEFA01” повинно відповідати C:\_SEFA\_SEFA01\.... і т.д.
Так по кожній версії.


Top
   
 Post subject: Re: SEFA
PostPosted: 23 Nov 2023, 14:06 
Offline

Joined: 18 May 2016, 19:55
Posts: 426
SEFA01

Увага! Як я вже писав, спостерігайте за кожним архівом “SEFA”, щоб розуміти, як це все працює. С початку будуть зрозумілі пояснення, потім, з кожним архівом, пояснення
будуть все більш стисліше. Потім взагалі пояснень ніяких не буде, щоб не витрачати на це час. Звісно, по ходу розвитку проекту деякі файли каталоги та файли, їх назви можуть змінюватись, але опису цього усього не буде! Я думаю, до того часу, коли це все буде відбуватись й так стане усе усім зрозумілим.

Для початку створимо “пустишку” яка може компілюватись лише FPC.

DOC — каталог документації.

_UNITS — каталог призначений для загальних модулів, які підходять
як до FPC так і до PascalGUI(моб) і т.д.

_UNITS\uMain.pas — головний файл на який зав'язуються (будуть
зав'язуються) усі інші модулі.

FPC — каталог з файлами для компіляції програми під FPC.

FPC\C_FPC2.6.2fi.Bat — Пакетний файл, який виконує компіляцію

C_FPC2.6.2fi_.Bat — аналог FPC\C_FPC2.6.2fi.Bat, для використання в
верхньому каталозі від каталогу “FPC”.

_FPC_Project.pp та запуск _FPC_Project.exe.

FPC\_FPC_Project.pp — файл FPC-проекту.

ClearF.Bat — файл чистки “зайвих” файлів *.exe *.o *.ppu Log.txt

Arh_Project.bat — якщо вам потрапить цей файл, його можна видали.
Просто автор його забув видалити. Автор використовує його для чистки та
архівації проекту “SEFA”.

При запуску C_FPC2.6.2fi.Bat (C_FPC2.6.2fi_.Bat) файл повинен бути
скомпільований та запущений.
З'являться файли _FPC_Project.o, _FPC_Project.exe та Log.txt в каталозі
FPC\
Також з'являться файли uMain.o, uMain.ppu в кталозі _UNITS\
FPC\Log.txt — звіт про компіляцію.
Можна почистити “зайве”, - ClearF.Bat

Attachment:
_SEFA01.7z [6.96 KiB]
Downloaded 57 times


Top
   
 Post subject: Re: SEFA
PostPosted: 23 Nov 2023, 14:11 
Offline

Joined: 18 May 2016, 19:55
Posts: 426
SEFA02

Створений каталог PascalGUI\ там де будуть файли призначені для
PascalGUI (мобільного).

PascalGUI\ _GUIpascal_Project.pas — проект для PascalGUI(моб).

Створений каталог ForMOB\
В каталог ForMOB\ будуть робитись копії необхідних файлів з інших каталогів і у тому числі з PascalGUI\. На мобільний треба буде копіювати каталог ForMOB\ .

Для того, щоб компіляція в мобільному була більш безпроблемною, необхідно, щоб усі файли, які потрібні проекту знаходились в одному каталозі. Для цього створений пакетний файл
CopyForMob.bat — для копіювання всіх потрібних файлів (модулів) в каталог ForMOB.
Запустіть CopyForMob.bat
Далі можна прямо з каталогом ForMOB копіювати в мобільний усі файли,
та спробувати скомпілювати в мобільному, компілятором PascalGUI(моб).
Далі необхідно запустити PascalGUI в мобільному, відкрити _GUIpascal_Project.pas,
компілювати та запустити проект.
Примітка.
Проекти для мобільного, які потрібно компілювати застосунком PascalGUI,
необхідно, щоб знаходились в внутрішній пам'яті, а не на зовнішній (CD-CARD)!

Attachment:
_SEFA02.7z [7.78 KiB]
Downloaded 57 times


Top
   
 Post subject: Re: SEFA
PostPosted: 23 Nov 2023, 15:32 
Offline

Joined: 18 May 2016, 19:55
Posts: 426
SEFA03

Для написання програм, зокрема “SEFA”, автор використовує середовище Delphi 7.
Тому створений файл Delphi7.dpr — файл для розробки “SEFA” в середовищі Delphi 7.
По суті в файлі Delphi7.dpr йде запуск C_FPC2.6.2fi_.Bat, який компілює та запускає проект скомпільований FPC. Просто мені як автору зручно вести розробку “SEFA” з середовища Delphi 7.
Редаговані BAT-файли для видалення ”зайвого”, яке створюються після компіляції через Delphi7.dpr.

Attachment:
_SEFA03.7z [8.65 KiB]
Downloaded 67 times


Top
   
 Post subject: Re: SEFA
PostPosted: 23 Nov 2023, 15:59 
Offline

Joined: 18 May 2016, 19:55
Posts: 426
SEFA04

Створений каталог Delphi7\ в якому будуть файли, які
використовуються при розробці в середовищі Delphi7.

Створений файли Stub.pas, для “згладжування” різниць між різними середовищами.
Delphi7\Stub.pas
FPC\Stub.pas
PascalGUI\Stub.pas
В файлах Stub.pas буде прапор ModeStartDE, який буде вказувати в якому
середовищі запущена програма.
0 — відсутність середовища (без різниці середовище, процедури, працюють
як “заглушки”). Це поки що в роздумах та розробці.
1 — FPC (2.6.2). 2 — PascalGUI (4.0.7) 3- DELPHI (7) 4- DELPHI (7)
(Форма)
Режим “4- DELPHI (7) (Форма)” - буде реалізований надалі.

Створений файл Delphi7\Graph.pas для “згладжування” різниць між
середовищем DELPHI та іншими середовищами.

Створений файл _UNITS\uTest.pas – в якому будуть різні процедури
для тестів.

Додано строку TestColor1; в процедуру StartProgram; модулю
_UNITS\uMain.pas
Тепер можна запустити програму з Delphi7.dpr
або FPC\C_FPC2.6.2fi.Bat (C_FPC2.6.2fi_.Bat)
або CopyForMob.bat , скопіювати на мобільний каталог ForMOB\ ,
скомпілювати в PascalGUI (мобільного), запустити на мобільному.

Attachment:
_SEFA04.7z [10.03 KiB]
Downloaded 60 times


Top
   
 Post subject: Re: SEFA
PostPosted: 23 Nov 2023, 16:44 
Offline

Joined: 18 May 2016, 19:55
Posts: 426
SEFA05

Створена форма-Delphi, каталог Delphi7\uFORM\ для емуляції екрана під час
роботи в середовищі Delphi7.
Опис процедур модулю Delphi7\uFORM\uFORM.pas як і будь яких інших модулів
буде знаходитись прямо в pas-файлах . Опис процедур в майбутньому може
“загублюватись” та “випадково” стертися.

Створений FPC\fp_FPC_comp.Bat — для запуску середовища Free Pascal IDE
(C:\FPC\2.6.2\bin\i386-win32\fp.exe) та відкриття в ньому
проекту _FPC_Project.pp

Створений TestForMOB.bat — для тестування компіляцією та запуском проекту
підготовленому для копіювання на мобільний (каталог ForMOB\ )

При компіляції та запуску Delphi7.dpr згідно його коду
begin
begin WinExec('FPC\C_FPC2.6.2fi.Bat',SW_ShowMaximized);end;
begin ModeStartDE:=4;{4- DELPHI (7) (Форма)} INITuFORM;StartProgram; end;
end.

Відбувається запуск та компіляція проекту в FPC2.6.2,
рядок - begin WinExec('FPC\C_FPC2.6.2fi.Bat',SW_ShowMaximized);end;

а також запуску в середовищі DELPHI з формою-емуляцієї екрана,
рядок - begin ModeStartDE:=4;{4- DELPHI (7) (Форма)} INITuFORM;StartProgram;
end;

Тобто буде, запущено дві форми. Якщо є потреба в запуску однієї форми,
необхідно якійсь з рядків закоментувати, встановивши з початку рядку “//”
або ж весь рядок взяти в “{}”.


Attachment:
_SEFA05.7z [15.14 KiB]
Downloaded 60 times


Top
   
 Post subject: Re: SEFA
PostPosted: 24 Nov 2023, 12:56 
Offline

Joined: 18 May 2016, 19:55
Posts: 426
SEFA06

Створено каталог ”Program” в якому будуть програми.
Створено “Program\Emulator\” - де файли Емулятора.
Зроблено чернетка емулятора ПК-01, без обробки клавіатури, лише завантаження
та заставка “ПК-01”.
На комп'ютері (скомпільована FPC), - повільне виведення на екран.
В форму-Delphi, - швидке виведення на екран.
Головне, що в PascalGUI теж швидке виведення на екран.
Поки все.

Attachment:
_SEFA06.7z [40.28 KiB]
Downloaded 61 times


Top
   
 Post subject: Re: SEFA
PostPosted: 25 Nov 2023, 15:03 
Offline

Joined: 18 May 2016, 19:55
Posts: 426
SEFA07
Створено модуль \_UNITS\uGraph.pas, який уявляє з себе надбудову над модулем Graph.
Пояснення щодо даних та процедур модуля в \_UNITS\uGraph.pas.
Додана можливість Zoom-ПК-01-екрану та зміщення його на екрані комп'ютера (мобільного). Зверніть увагу в модулі uEmulator_Main, в процедурі StartEmulator; налаштування та центрування ПК-01-екрану на екрані комп'ютера (мобільного):
...
uEmulator_I8080.ZoomY:=2;{Zoom екрану}
uEmulator_I8080.ZoomX:=2;{Zoom екрану}
uEmulator_I8080.OffSetX:=((uGraph.uGetMaxX -(ZoomX*256)) div (2*ZoomX));{Зміщення по екрану}
uEmulator_I8080.OffSetY:=((uGraph.uGetMaxY -(ZoomY*256)) div (2*ZoomY));{Зміщення по екрану}
...

Далі будуть спроби реалізації іграшки, наприклад “Аерокобра” в емулятор.

Attachment:
_SEFA07.7z [42.09 KiB]
Downloaded 65 times


Top
   
 Post subject: Re: SEFA
PostPosted: 28 Nov 2023, 20:03 
Offline

Joined: 18 May 2016, 19:55
Posts: 426
SEFA08
Program\LTVtoArray\LTVtoArray.dpr
Створена програма, яка створює масив Prg:array[0.. ..] of byte=( ..., ..., ... ...); з файлу LTV, який можна використовувати в коді для завантаження програм в емулятор.
Для роботи програми, необхідно в перших строках програми, вказати LTV-файл та файл для збереження результату. Звісно LTV-файл повинен бути в тому ж каталозі, що й програма LTVtoArray, файл результату створюється теж в тому ж каталозі.
NameFromFile='1.LVT';
NameToFile='Res.txt';
Приклад результату роботи програми дів. Program\Emulator\uEmulator_Game_Aerocobra_LVT.pas.
Над даною програмою я сильно не заморочувся. :) Все просто та зрозуміло.


В файлах Stub.pas, які для "згладжування" різниць між різними середовищами. Cтворені функції по обробці клавіш keypressed, readkey.
Delphi7\Stub.pas:
{unit Crt;}
function keypressed:boolean;begin end;
function readkey : char;begin end;

FPC\Stub.pas:
{unit Crt;}
function keypressed:boolean;begin keypressed:=WinCrt.keypressed;end;
function readkey:char;begin readkey:=WinCrt.readkey;end;

PascalGUI\Stub.pas:
{unit Crt;}
function keypressed:boolean;begin keypressed:=Crt.keypressed;end;
function readkey:char;begin readkey:=Crt.readkey;end;

Як видно, вище написаного, для того, щоб працювала клавіатура в FPC, потрібно підключати модуль WinCrt, а в PascalGUI, - Crt. Для Дельфі-форми поки “заглушка”. Обробка клавіш в Дельфі-форма поки не реалізована. Відповідно в Delphi7.dpr, компіляція для режиму Дельфі-форми закоментована ось так:
//{Компіляція та запуск в формі-Delphi}begin ModeStartDE:=4;{4- DELPHI (7) (Форма)} INITuFORM;StartProgram; end;
Увага!
TestForMOB.bat тепер можна використовуватись лише для перевірки компіляції та запуску програми. Клавіатура працювати не буде, так як TestForMOB.bat компілює для мобільного та для функцій keypressed та readkey використовує модуль Crt, а не WinCrt. Якщо виправити “Crt” на “WinCrt” то PascalGUI компілювати не буде!

Гра “Аерокобра” та управління клавішами в грі.
Нда.
З приводу управління клавіатурою все гірше ніж я думав. Обробку подвійних та потрійних і.д. натиснень на клавіші обробляти в FPC та PascalGUI не можливо. В усякому разі, використовуючи функції keypressed та readkey. Інші способи, я просто не знаю. Можу повірити, що в FPC(для комп'ютера) є такі способи, а от в PascalGUI (для мобільного), - складно повірити! А саме для мене, особлива важливість, все таки, якби було для PascalGUI (для мобільного).
Простою мовою кажучи, більшість іграшок для ПК-01, особливо, ті, які динамічні, де не можна обійтись без подвійних та потрійних і.д. натиснень на клавіші, не варто пробувати для PascalGUI (для мобільного).
Моя ця проба, іграшки “Аерокобра” для PascalGUI (для мобільного), це явно доводить!
Ще, окрім, проблеми обробки подвійних та потрійних і.д. натиснень на клавіші, є обробка натиснень на клавішу з явною затримкою! Довге натиснення на одну клавішу, (на віртуальній клавіатурі) обробляється як разове, “короткочасне”. На заміну довгого натиснення, потрібно клацати декілька раз, натискую та відпускаючи клавішу (на віртуальній клавіатурі). На фізичній клавіатурі, не на багато й краще, хоча довге натискання на клавішу, й обробляється, але з запізненням.

Як працює програма.
Після запуску програми, запускається процедура StartEmulator; модуля Program\Emulator\uEmulator_Main.pas.

Далі відбувається запуск процедури InitCompLV, де ініціалізується графіка, встановлюється необхідний Zoom-екрану, в залежності від середовища запуску (FPC чи PascalGUI). До речі, в FPC запускається ZoomX:=1; ZoomY:=1; на відміну від PascalGUI, в якому ZoomY:=2; ZoomX:=2;, бо в FPC “двійний” режим відео, наче щось якось торможено працює.
Далі ResetComp, - ініціалізація самого ПК-01.
8080_do_opcodes(11000000), - швидка прокрутка заставки “ПК-01”.

Далі в процедурі StartEmulator;, після InitCompLV, запускається CopyGameToMemLV;, яка робить копіювання гри “Аерокобра” з масиву Prg, модуля Program\Emulator\uEmulator_Game_Aerocobra_LVT.pas, в пам'ять ПК-01 та запускає гру“Аерокобра”.
Далі, i8080_do_opcodes(3000000); - прокрутка заставки “Аерокобра”.
Далі, в залежності від середовища встановлюється затримка DelayLV, в FPC, дорівнює 20, в PascalGUI, чомусь треба встановлювати, - 50. Затримка регулювалась “на око”, тобто майже взагалі не регулювалась, тим паче не тестувалась.
Ну й далі запуск самого ядра емулятора WorkEmulator;, - опис в вихідному модулю, в процедурі.
Також, опис KeyboardProcessing;, в вихідному модулю, в процедурі.
В FPC, - управління, клавішами “стрілки”, стріляти, - будь-яка інша клавіша.
PascalGUI, - на фізичній клавіатурі, клавішами “стрілки”, стріляти, - будь-яка інша клавіша,
в віртуальній клавіатурі (рекомендується вибрати клавіатуру таку як на скрині):
Image
“9” - праворуч, “5”- угору, “7” —ліворуч, “8”- униз, будь-яка інша, - стріляти.
При бажанні не складно переробити на інші клавіші, немало кодів клавіш, відповідає, кодам клавіш TurboPascal. Та й я думаю, опис кодів клавіш й для FPC існує, але поки так глибоко це питання не вивчав.
Ще раз підкреслю, нічого толком не регулювалась, зроблене “на око”, тому при бажанні експериментуйте та перевіряйте.

Плани та перспективи.
Ну по-перше, клавіатуру треба усю та усюди, тобто в усіх режимах, реалізувати. Це робота досить кропітка. Тому, найближчий час, нових версій “SEFA”, не очікуйте. Я думаю, вже не мало чого зроблено, для того, щоб можна було цим усім “забавлятись”, експериментувати з цим усім і т.д.

Attachment:
_SEFA08.7z [53.31 KiB]
Downloaded 66 times


Top
   
 Post subject: Re: SEFA
PostPosted: 04 Dec 2023, 22:05 
Offline

Joined: 18 May 2016, 19:55
Posts: 426
SEFA09
Створено каталог Emulator\Game_Aerocobra\ в який перенесені файли, які мають відношення до гри “ Aerocobra”.
Створено файл Emulator\uEmulator_Keyboard.pas, це є модуль обробки клавіатури емулятора. Константа модуля KeyboardTakts_Lat_Ukr_VR_NR_SU=60000; означає, яка максимальна кількість тактів повинна бути при обробці натискання таких клавіш як “ЛАТ”, “РУС” “Верхній регістр”, “Нижній регістр” та “СУ”. При значенні, менш ніж 60000, можуть виникнути проблеми з обробкою натискання на клавіші, які описані вище. Наприклад, при 50000 виникали проблеми.
Процедура KeyCodeToPK, виконує остаточну обробку клавіш за номером клавіші. Нумерація вигадана мною, але це не суттєво, документація буде пізніше, але по коду й так все видно та зрозуміло :-).
Процедура KeyboardProcessFPC та KeyboardProcessPascalGUI робить обробку кодів натиснених клавіш в середовищах FPC та PascalGUI відповідно, та перетворює їх в номер натиснутих клавіш, для подальшої обробки процедурою KeyCodeToPK.
Клавіатура реалізована в FPC та PascalGUI, в Дельфі-формі, ще поки не реалізована.
Деякі клавіші не реалізовані взагалі ніде. Не реалізована клавіша “СУ” і поки не бачу ніякої необхідності її реалізовувати для емулятору. В PascalGUI більш повна реалізація, ніж в FPC. Для прикладу в FPC не реалізовані клавіші “Звук”, ”CD” та “ПЧ”, за не можливості їх реалізувати на місця клавіш F10-F12, тобто так як вони були реалізовані в SASEmulator.
Клавіші “НР”, “ВР”,“ЛАТ”, “РУС” використовуються автоматично при натисканні, якоїсь клавіші, тому не має сенсу їх реалізовувати та можливостей таких теж немає, якщо враховувати специфіку обробки клавіш “Shift”, “Ctrl” та «Alt” в середовищах FPC та PascalGUI.
Далі, в модулі процедури по обробці натискання таких клавіш як “ЛАТ”, “РУС” “Верхній регістр”, “Нижній регістр” та “СУ”, - Lat, UKR, VR, NR, SU відповідно. По суті лише на них впливає константа KeyboardTakts_Lat_Ukr_VR_NR_SU.
Слідом процедура ClearKeyboard, яка очищує масиви клавіатури kbd_base та kbd_ext.
Ну й головна процедура модулю KeyboardProcessing.
Принцип роботи процедури полягає в наступному:
Очищується kbd_base та kbd_ext.
В залежності від середовища відбувається відповідне опитування клавіатури (KeyPressed та ReadKey) та занесення даних в змінні ch1 та ch2.
Далі теж в залежності від середовища виконується обробка змінних ch1 та ch2 через процедуру KeyboardProcessFPC або KeyboardProcessPascalGUI.
Якщо буфер клавіатури (KeyBuffer) не пустий, він обробляється. Спочатку обробляється натискання таких клавіш, як “ЛАТ”, “РУС” “Верхній регістр”, “Нижній регістр” та “СУ” і робиться необхідне “прокручування” тактів, потім робиться вихід з процедури в основну процедуру WorkEmulator де відбувається “прокручування” тактів для останньої натисненої клавіші. Тому, при налаштуванні процедур KeyboardProcessFPC та KeyboardProcessPascalGUI, варто враховувати послідовність натискання клавіш, спочатку потрібно прописувати натискання “Lat” (або “UKR”), потім “VR“ (або “NR”), потім й інша клавіша, яка повинна бути останньою.
Приклади:
KeyStr:=UKR+#.... KeyStr:=Lat+...
KeyStr:=VR+#.... KeyStr:=NR+#...
При необхідності можна робити й так:
KeyStr:=UKR+VR+#.... KeyStr:=Lat+NR+#...
Клавіша “SU”, рівносильна “VR“ (або “NR”), тобто, вона з тих клавіш, які повинні утримуватись до відпускання останньої клавіші.
Оскільки, реалізацією клавіші “SU”, я не займався взагалі, тому не можу нічого сказати, з приводу правильного розташування її в коді, а також, що буде якщо знадобиться написати наприклад ось таке: KeyStr:=Lat+SU+NR+#... В якому місті правильно, прописувати “ SU”, мені не відомо.

Модуль Program\Emulator\uEmulator_Main.pas.
Змінна OpcodesValue, використовується для встановлення кількості тактів на один проміжок часу вказаний в DelayLV. В процедурі StartEmulator, в залежності від середовища встановлюються OpcodesValue та DelayLV. На даний момент вони приблизно відрегульовані. Не рекомендується OpcodesValue, встановлювати менш, ніж 60000, бо можуть виникнути проблеми з обробкою натиснених клавіш. При OpcodesValue=50000, виникали такі проблеми. Регулювати швидкість емулятору можна спробувати, змінюючи DelayLV, хоча як показали тести (див. каталог DOC\), теж достатньо сумнівний варіант. Якщо вам потрібна максимальна швидкість, змінна DelayLV встановлюється в “0”.

Ну по ядру емулятора (WorkEmulator), я думаю питань виникати не повинно. Там наче все зрозуміло.
В безкінечному циклі, зберігається поточний час в DateTime1, далі робиться обробка клавіатури, “прокрутка” тактів КР-580 та виведення на екран. Потім опитується час, зберігається в DateTime2 та перевіряється чи пройшов потрібний час з урахуванням затримки, яка встановлена в DelayLV, якщо ні, то робиться необхідна затримка “пустим” циклом, поки не пройде необхідний час. Далі цикл запускається заново.

В планах на майбутнє, у мене реалізувати клавіатуру в Дельфі-формі, спробувати, деякі іграшки в емуляторі, тобто зробити їх код в масив за принципом uEmulator_Game_Aerocobra_LVT.pas. Робити різні проби та тестування клавіатури, клавіш і т.д.

Attachment:
_SEFA09.7z [101.94 KiB]
Downloaded 64 times


Top
   
 Post subject: Re: SEFA
PostPosted: 22 Jan 2024, 13:44 
Offline

Joined: 18 May 2016, 19:55
Posts: 426
Attachment:
ver1_SasLVE.7z [928.13 KiB]
Downloaded 41 times
ver1_SasLVE.7z-
іграшки з SASEmulator збережені в першій версії (ver1), - для _SEFA. (див. далі).
============
SEFA10

Виявилась помилка в затримці в процедурі WorkEmulator.
Правильно треба було:

{Порівняти час в DateTime1 та поточний час DateTime2,
допоки DateTime2<(DateTime1+DelayLV), - затримка!}
If DelayLV<>0 then begin
Repeat
begin DateTime:=Time; DecodeTime(DateTime,Hour1,min1,sec1,mSec1);
DateTime2:=(Hour1*60*60*1000)+(min1*60*1000)+(sec1*1000)+mSec1;end;
until DateTime2>=(DateTime1+DelayLV); end;

Хоча на результати тестів дивлюсь що воно майже не вплинуло.
=====

Модулі uEmulator_Game_Aerocobra_LVT.pas та uEmulator_Game_Aerocobra_Main.pas
перенесені в “Архів”.

=====

Доданий модуль _UNITS\uSStr.pas, який зручно працює з масивами, деякі
процедури не використовуються, але це поки.

Створений модуль Program\Emulator\uEmulator_BloadBsave.pas для читання та
зберігання з/в файл.

=====

Створено прапор uEmulator_Keyboard.fNumeralsAsArrows, - це прапор “Цифри як
стрілки”, буде у нагоді для ігор ПК-01 в мобільному з використанням
віртуальної клавіатури http://forumupload.ru/uploads/001b/d4/a7/3/692325.png ,
http://forumupload.ru/uploads/001b/d4/a7/3/498849.jpg . При встановленні
прапора <> 0, - цифри 2,5,7,8,9 і т.д. працюють як стрілки. Прапор працює в
режимі мобільного {ModeStartDE=2, де 2 — PascalGUI (4.0.7)}.

Прапор uEmulator_Main.fLoadFile_AutoSave_SasLVE, якщо <> 0, то при запуску
емулятора, буде завантажуватись файл “AutoSave.SasLVE” (ver.1).

Змінна uEmulator_Main.AutoSaveTimeCount, задає інтервал збереження в файл,
в хвилинах.

Прапор uEmulator_Main.fAutoSaveInFAS, якщо <> 0, то згідно налаштувань по
часу вказаному в AutoSaveTimeCount, зберігається в файл “AutoSave.SasLVE”.

Прапор uEmulator_Main.fAutoSaveInFD, якщо <> 0, то згідно налаштувань по
часу вказаному в AutoSaveTimeCount, в файл формата
“2024-01-19_17-06-00-08.SasLVE”

Прапор uEmulator_Main.QuickRollingOfLogo, - швидка прокрутка заставки
"ПК-01", 0 - ні, повільна, будь-яке число — швидка.

=====
Увага!
При використанні SEFA10 в режимі 4- DELPHI (7), при запуску завантажується
AutoSave.SasLVE, а далі стан емулятора щохвилинно зберігається в
AutoSave.SasLVE та щохвилинно зберігається в файл формату
“2024-01-19_17-06-00-08.SasLVE”.
В режимах 1 — FPC (2.6.2) та 2 — PascalGUI (4.0.7) відбувається невідома
помилка при автозапису в AutoSave.SasLVE та файл формату
“2024-01-19_17-06-00-08.SasLVE”, тому в тих режимах автозапис вимкнений,
відбувається лише читання AutoSave.SasLVE при запуску.
У разі відсутності AutoSave.SasLVE, в будь-якому режимі, відбувається
початкова загрузка ПК-01. Заставка при цьому “прокручується” швидко, згідно
налаштувань, які дивіться в модулі _UNITS\uMain.pas в процедурі StartProgram;



Папка “Emulator_240122NormSpeed”.
Запущена CopyForMob.bat та папка “ForMOB” переіменована в
“Emulator_240122NormSpeed”, емулятор для мобільного з нормальною швидкістю.

Папка “Emulator_240122MaxSpeed”.
По-суті, ця папка є копія папки “Emulator_240122NormSpeed”, з налаштуваннями
“uEmulator_Main.DelayLV:=0;” в модулі uMain.pas, процедурі StartProgram;

Папки “Emulator_240122NormШашки” та “Emulator_240122MaxШашки” приклади
створення емулятора з вмонтованою іграшкою для мобільного. Клавіші управління
див. "DOC\Доп\Коди клавіш Пк-01(КОІ-7)\Readme1.txt" та "DOC\Доп\Коди клавіш
Пк-01(КОІ-7)\"Цифри як стрілки.txt"
Для того щоб це створити, необхідно взяти іграшку в форматі SasLVE, першої
версії, в архіві ver1_SasLVE.7z (download/file.php?id=536)
або створити з допомогою "SASEmulator" Tools\Save to...\ ver1.SasLVE. В каталог емулятора, скопіювати іграшку
(на всякий випадок), а також зробити з нею копію AutoSave.SasLVE.

Поки все!


Attachment:
_SEFA10.7z [129.89 KiB]
Downloaded 31 times


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 18 posts ]  Go to page 1 2 Next

Forum Games WEB Tape Loader Twitter RSS

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 4 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Powered by phpBB® Forum Software © phpBB Limited