Board.KolibriOS.org

Official KolibriOS board
It is currently Fri Dec 04, 2020 10:15 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 55 posts ]  Go to page 1 2 3 4 Next
Author Message
 Post subject: life2
PostPosted: Tue Nov 03, 2020 2:01 pm 
Online

Joined: Mon Sep 07, 2020 7:09 pm
Posts: 257
Игра life2 - Conway's life
Единственный пример программы на BorlandC++
http://websvn.kolibrios.org/listing.php ... c9bc90d7ba


Last edited by maxcodehack on Tue Nov 03, 2020 5:39 pm, edited 1 time in total.

Top
   
 Post subject: Re: life2
PostPosted: Tue Nov 03, 2020 4:54 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 874
Quote:
Хотя таким подобный способом helloworld из статьи diamond'а собрался.
Еще нужно настроить автосборку life2 на сервере

Попробуй строки с equ в начало файла перекинуть.
Code:
@@Kolibri@ReadCommonColors$qpui equ @Kolibri@ReadCommonColors$qpui
@@Kolibri@GetPid$qv equ @Kolibri@GetPid$qv
@@Kolibri@Lock$qp14Kolibri@TMutex equ @Kolibri@Lock$qp14Kolibri@TMutex
...
@@Kolibri@GetMouseButton$qv equ @Kolibri@GetMouseButton$qv


Top
   
 Post subject: Re: life2
PostPosted: Tue Nov 03, 2020 5:27 pm 
Online

Joined: Mon Sep 07, 2020 7:09 pm
Posts: 257
Попробую.
Только на сервере это как-то нужно обойти.
И чтобы новый fasm работал
UPD
Да, заработало, спасибо.
Только на сервере лучше обойти нормально.
Еще заметил что title у окна какой то неправильный, маленький. Хотя в том примере diamond'а заголовок нормальный
И еще, удалить бы экзешники с сервера. Они на сервере не нужны для сборки. t2fasm отлично пересобирается для linux, а вот что делать с bmp2h :?:


Top
   
 Post subject: Re: life2
PostPosted: Tue Nov 03, 2020 11:42 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 874
maxcodehack wrote:
И чтобы новый fasm работал

Новый fasm не работает по 2-м причинам:
1) в коде есть макрос define, которым программа t2fasm обделывает все функции из полученного *.asm файла.
В новых версиях fasm появилась команда define, которая совпадает с именем макроса и потому компиляция не идет.
По этой причине я в (rev 8129) в подключаемых *.inc файлах заменил макрос define на макрос proc, однако осталась проблема с программой t2fasm.
2) в коде который создает bcc32 имена некоторых меток начинаются со знака $.
А в новых версиях fasm имена меток не могут начинаться со знака $.
Т.е. для компиляции нужно исправить эти проблемы.

Предлагаю такой вариант решения:
Создаем *.asm файл с таким содержанием:
Spoiler: Show
Code:
;Crack for Borland C++ 5.5.1
use32

file 'bcc32.exe':0,0x4a8f
dd 0x90909090,0x90909090 ;fix end proc
db 0xb8
dd 0x4a626b

file 'bcc32.exe':0x4a9c,0x5753-0x4a9c
dd 0x4b2472 ;fix label byte
file 'bcc32.exe':0x5757,0x575a-0x5757
dd 0x4b2472 ;fix proc near
file 'bcc32.exe':0x575e,0x5761-0x575e
dd 0x4b2472 ;fix label word
file 'bcc32.exe':0x5765,0x5768-0x5765
dd 0x4b2472 ;fix label dword
file 'bcc32.exe':0x576c,0x576f-0x576c
dd 0x4b2472 ;fix label qword
file 'bcc32.exe':0x5773,0x5776-0x5773
dd 0x4b2472 ;fix label tbyte

file 'bcc32.exe':0x577a,0x56216-0x577a
db '_' ;fix '$' to '_'
file 'bcc32.exe':0x56217,0xd4400-0x56217

;0x4b2472 - ':',13,10,0
;0x4a626b - 13,10,0

Ложим его рядом с компилятором bcc32.exe и делаем ему кряк, описанный в *.asm файле. Исходный файл bcc32.exe куда-нибудь убираем, чтобы не мешал. Переименовываем получившийся скомпилированный файл в bcc32.exe. После чего компилируем все как обычно, но при этом убираем макрос macro define x,[link] ... из файла kos_start.inc .

Может получилось еще сложнее и более накручено, но зато у меня компилируется новым fasm-ом. Кряк компилятору делается одноразово и должен подходить к компиляции разных *.cpp файлов.


Top
   
 Post subject: Re: life2
PostPosted: Wed Nov 04, 2020 9:02 am 
Online

Joined: Mon Sep 07, 2020 7:09 pm
Posts: 257
По мне как то кряк использовать не очень хорошо :D
А вот исправить define и $ можно

Попробовать надо


Top
   
 Post subject: Re: half-life2
PostPosted: Wed Nov 04, 2020 12:13 pm 
Offline
User avatar

Joined: Wed Mar 18, 2015 8:22 am
Posts: 318
скоро будет готова?

_________________
Гордон Фримен - я из прошлого :D


Top
   
 Post subject: Re: life2
PostPosted: Wed Nov 04, 2020 12:41 pm 
Online

Joined: Mon Sep 07, 2020 7:09 pm
Posts: 257
это не half life 2 :D
Это https://ru.m.wikipedia.org/wiki/%D0%98% ... 1%8C%C2%BB


Last edited by maxcodehack on Thu Nov 05, 2020 7:48 am, edited 1 time in total.

Top
   
 Post subject: Re: life2
PostPosted: Thu Nov 05, 2020 12:18 am 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 874
maxcodehack wrote:
А вот исправить define и $ можно

Думаю можно заменить define на define_f что-бы не совпадало. А заменить $ без кряка будет сложновато, нужно находить все метки в коде в программе t2fasm
maxcodehack wrote:
По мне как то кряк использовать не очень хорошо

Пока что у нас нет выбора.

rev 8133
Убрал еще немного Menuet-а из кода.
Оказалось что файлы menuet.h в life2 и в примере "Hello word" разные ... Настроить работу нового примера "Hello word" пока не получается. Компилируется но не печатает текст, потому как diamond ввел новую функцию MenuetOnDraw и изменил алгоритм рисования.

Spoiler: Show
Code:
#include <kolibri.h>
#include <kos_heap.h>
#include <kos_file.h>

using namespace Kolibri;

const char header[] = "HelloWorld test";
const char string[] = "Hello, World!";

bool KolibriOnStart(TStartData &me_start, TThreadData /*th*/)
{
   me_start.Left = 10;
   me_start.Top = 40;
   me_start.Width = 150;
   me_start.Height = 80;
   me_start.WinData.Title = header;
   return true;
}

void KolibriOnPaint(void)
{
   DrawText(30,10,0,string);
}

bool KolibriOnClose(TThreadData /*th*/)
{return true;}
int KolibriOnIdle(TThreadData /*th*/)
{return -1;}
void KolibriOnSize(int /*window_rect*/[], TThreadData /*th*/)
{}
void KolibriOnKeyPress(TThreadData /*th*/)
{GetKey();}
void KolibriOnMouse(TThreadData /*th*/)
{}

Потому на вики пока менять еще не буду.


Top
   
 Post subject: Re: life2
PostPosted: Thu Nov 05, 2020 3:01 pm 
Online

Joined: Mon Sep 07, 2020 7:09 pm
Posts: 257
Spoiler: Show
Code:
<<<<<<< .mine
macro _define x,[link]
||||||| .r8129
macro define x,[link]
=======
macro define_f x,[link]
>>>>>>> .r8133

Что это странное в коде?

Был какой то глюк svn'а
___________________
Крякнул компилятор, компилирую фасмом:
Code:
flat assembler  version 1.71.57  (16384 kilobytes memory)
kos_cdlg.inc [45]:
  mov  ebx,[ebp+MENUET_THREAD_DATA_X*4]
processed: mov ebx,[ebp+MENUET_THREAD_DATA_X*4]
error: undefined symbol 'MENUET_THREAD_DATA_X'.


Это life2
А когда пробую helloworld собрать новым фасмом:
Code:
flat assembler  version 1.71.57  (16384 kilobytes memory)
include\me_func.inc [80]:
nextdef MenuetEntryPoint
include\me_start.inc [85] nextdef [3]:
    end if
processed: end if
error: unexpected instruction.


Top
   
 Post subject: Re: life2
PostPosted: Thu Nov 05, 2020 5:28 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 874
maxcodehack wrote:
<<<<<<< .mine
macro _define x,[link]
||||||| .r8129
macro define x,[link]
=======
macro define_f x,[link]
>>>>>>> .r8133

Такое бывает если пользователь делает изменения в файле и на svn также делаются изменения в этом же месте. Например ты заменил макрос define на _define, а я заменил define на define_f. При обновлении файла svn не хочет удалять твои правки и пишет сразу 3 версии кода, что было, твою версию и что стало на svn. Можно попробовать просто удалить файл и загрузить его снова, должна загрузиться последняя версия.
maxcodehack wrote:
flat assembler  version 1.71.57  (16384 kilobytes memory)
kos_cdlg.inc [45]:
  mov  ebx,[ebp+MENUET_THREAD_DATA_X*4]
processed: mov ebx,[ebp+MENUET_THREAD_DATA_X*4]
error: undefined symbol 'MENUET_THREAD_DATA_X'.

это я забыл файл kos_cdlg.inc обновить, потому не работало, скинул его в rev 8134
helloworld у меня пока что не работает, потому для него нужен другой файл kolibri.inc я пока не знаю как с этим быть ложить 2 файла сразу не хочется, а в один файл пока свести не могу. Получается или будет life2 работать или helloworld смотря какой файл положить.


Top
   
 Post subject: Re: life2
PostPosted: Thu Nov 05, 2020 6:48 pm 
Online

Joined: Mon Sep 07, 2020 7:09 pm
Posts: 257
Теперь осталась только одна проблема - с equ
И конечно полностью избавится от менуэт, и слиять код диамонда и yogev ezra


Last edited by maxcodehack on Thu Nov 05, 2020 6:53 pm, edited 1 time in total.

Top
   
 Post subject: Re: life2
PostPosted: Thu Nov 05, 2020 6:53 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 874
Файлы для компиляции обновленного Hello word от diamond-а положил в архив.
Attachment:
Hello.7Z [19.28 KiB]
Downloaded 9 times

Для компиляции нужно взять недостающие новые файлы из папки life. Разница там в стилях окна и в функции рисования, потому пока свести к общему знаменателю не получается.
maxcodehack wrote:
Теперь осталась только одна проблема - с equ

для этого нужно доработать перестановку этих строк в t2fasm.


Top
   
 Post subject: Re: life2
PostPosted: Thu Nov 05, 2020 6:59 pm 
Online

Joined: Mon Sep 07, 2020 7:09 pm
Posts: 257
Еще один вопрос. Не нравится мне, что все лежит в папке с игрой. Вдруг вот еще на нем программы будут, что копировать? По мне можно в contrib создать папку kos32-bcc, и там будет лежать t2fasm, патч, и helloworld, и набор библиотек. Тогда путь указывать к одной папке.
Только это можно сделать тогда, когда слияем набор инклудников
grep'нул. Поможет полностью избавится от менуэта:
Spoiler: Show
Code:
maxim@maxim-pc:~$ grep -r Menuet /media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:Menuet_SegmentInit:
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:Menuet_SegmentExit:
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:Menuet_SegmentInitEnd:
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:Menuet_SegmentExitEnd:
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:macro Menuet_Put_MovEaxVal_Ret   address,val
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  Menuet_Put_MovEaxVal_Ret  @Kolibri@GetPid$qv,edx
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:if defined MenuetHeapInit
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  call MenuetHeapInit   ; Initialize a dynamic heap and create new memory in its begin.
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:if defined MenuetHeapFreeAndThreadFinish
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  call MenuetHeapFreeAndThreadFinish   ; Free the given memory and finish the thread,
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  Menuet_Put_MovEaxVal_Ret  @Kolibri@GetThreadData$qv,esp
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:if defined Menuet_SegmentInit & defined Menuet_SegmentInitEnd
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  push Menuet_SegmentInitEnd
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  push Menuet_SegmentInit
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:if defined Menuet_SegmentExit & defined Menuet_SegmentExitEnd
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  push Menuet_SegmentExitEnd
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  push Menuet_SegmentExit
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:;  mov   dword [esp],Menuet_abort_string
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  call Menuet_HashInt
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  jmp  Menuet_main_end
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  jc   Menuet_main_end
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  jmp  Menuet_main_cycle
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:Menuet_HashInt:
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  mul  dword [Menuet_hash_int_val0]
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  mul  dword [Menuet_hash_int_val1]
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:Menuet_hash_int_val0:
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:Menuet_hash_int_val1:
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  call Menuet_HashInt
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:proc Menuet_MutexLockNoWait
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:proc Menuet_MutexLockWait uses ebx
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:proc Menuet_MutexLockWaitTime
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:proc Menuet_MutexLock
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  mov  eax,Menuet_MutexLockNoWait
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  jmp  Menuet_MutexLock
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  mov  eax,Menuet_MutexLockWait
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  jmp  Menuet_MutexLock
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  mov  eax,Menuet_MutexLockWaitTime
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  jmp  Menuet_MutexLock
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:proc Menuet_MutexLockRec
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  mov  dword [esp],Menuet_try_lock_rec_overflow_string
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  mov  eax,Menuet_MutexLockNoWait
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  jmp  Menuet_MutexLockRec
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  mov  eax,Menuet_MutexLockWait
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  jmp  Menuet_MutexLockRec
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  mov  eax,Menuet_MutexLockWaitTime
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  jmp  Menuet_MutexLockRec
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  mov  dword [esp],Menuet_unlock_rec_notlocked_string
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:if defined MenuetHeapAlloc
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  call MenuetHeapAlloc    ; Create new dynamic memory of the given size
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  mov  dword [edx],Menuet_ThreadFinish
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:if defined MenuetHeapFree
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  call MenuetHeapFree   ; Delete the given dynamic memory
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:Menuet_abort_string:
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:Menuet_try_lock_rec_overflow_string:
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:Menuet_unlock_rec_notlocked_string:
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_heap.h:   MemoryHeap::TFreeSpace _MenuetFreeSpace;
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_heap.h:   MemoryHeap::TMemBlock  _MenuetMemBlock;
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_heap.h:      MemoryHeap::InitFreeSpace(_MenuetFreeSpace);
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_heap.h:      _MenuetMemBlock = MemoryHeap::CreateBlock(begin, end, _MenuetFreeSpace);
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_heap.h:      unsigned int use_beg = (unsigned int)MemoryHeap::BlockBegin(_MenuetMemBlock) +
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_heap.h:      return MemoryHeap::Alloc(_MenuetFreeSpace, use_size);
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_heap.h:      void *res = MemoryHeap::Alloc(_MenuetFreeSpace, size);
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_heap.h:         unsigned use_mem = (unsigned int)MemoryHeap::BlockEndFor(_MenuetMemBlock, size);
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_heap.h:            res = MemoryHeap::Alloc(_MenuetFreeSpace, size);
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_heap.h:      void *res = MemoryHeap::ReAlloc(_MenuetFreeSpace, mem, size);
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_heap.h:         unsigned use_mem = (unsigned int)MemoryHeap::BlockEndFor(_MenuetMemBlock, size);
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_heap.h:            res = MemoryHeap::ReAlloc(_MenuetFreeSpace, mem, size);
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_heap.h:      MemoryHeap::Free(_MenuetFreeSpace, mem);
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_heap.inc:MenuetHeapInit = @@Kolibri@_HeapInit$qpvt1t1
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_heap.inc:MenuetHeapAlloc = @@Kolibri@Alloc$qui
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_heap.inc:MenuetHeapReAlloc = @@Kolibri@ReAlloc$qpvui
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_heap.inc:MenuetHeapFree = @@Kolibri@Free$qpv
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_heap.inc:MenuetHeapFreeAndThreadFinish = @Kolibri@_FreeAndThreadFinish$qpvpi
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_heap.inc:  push dword [@Kolibri@_MenuetMemBlock]
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_heap.inc:  push @Kolibri@_MenuetFreeSpace
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_lib.inc:  ja   Menuet_floor_end
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_lib.inc:Menuet_floor_end:
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/menuet_win.cpp:const char szWindowClass[] = "Menuet window";
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/menuet_win.cpp:         while (MenuetOnIdle((TThreadData)(&ThreadDataStruct)) == 0 &&
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/menuet_win.cpp:         MenuetOnMouse((TThreadData)(&ThreadDataStruct));
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/menuet_win.cpp:         MenuetOnMouse((TThreadData)(&ThreadDataStruct));
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/menuet_win.cpp:            MenuetOnMouse((TThreadData)(&ThreadDataStruct));
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/menuet_win.cpp:         MenuetOnMouse((TThreadData)(&ThreadDataStruct));
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/menuet_win.cpp:            MenuetOnMouse((TThreadData)(&ThreadDataStruct));
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/menuet_win.cpp:            MenuetOnMouse((TThreadData)(&ThreadDataStruct));
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/menuet_win.cpp:         MenuetOnKeyPress((TThreadData)(&ThreadDataStruct));
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/menuet_win.cpp:         MenuetOnSize(window_rect, (TThreadData)(&ThreadDataStruct));
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/menuet_win.cpp:         if (MenuetOnClose((TThreadData)(&ThreadDataStruct)))
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/menuet_win.cpp:      if (MenuetOnStart(start_data, (TThreadData)(&ThreadDataStruct)))
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/menuet_win.cpp:            if (MenuetOnClose((TThreadData)(&ThreadDataStruct)))
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/write_macro.inc:  jmp  @Menuet@DebugPutString$qpxc




maxim@maxim-pc:~$ grep -r MENUET /media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/cpp2asm.bat:kos32-bcc -S -v- -R- -6 -a4 -O2 -Og -Oi -Ov -OS -k- -D__MENUET__ -Iinclude life2.cpp
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kolibri.h:#define MENUET_MUTEX_INIT {}   // Simple mutex initializer, cat be redefined in a realization of the library
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kolibri.h:#define MENUET_REC_MUTEX_INIT {}   // Recursive mutex initializer, cat be redefined in a realization of the library
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kolibri.h:#ifdef __MENUET__
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kolibri.h:#undef  MENUET_MUTEX_INIT
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kolibri.h:#define MENUET_MUTEX_INIT {0x40}   // Simple mutex initializer, cat be redefined in a realization of the library
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kolibri.h:#undef  MENUET_REC_MUTEX_INIT
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kolibri.h:#define MENUET_REC_MUTEX_INIT {0x20,-1}   // Recursive mutex initializer, cat be redefined in a realization of the library
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kolibri.h:   TMutex _ThreadMutex = MENUET_MUTEX_INIT;
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kolibri.h:      border_size = MENUET_BORDER_SIZE;
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kolibri.h:      header_size = short(((win_type & 15) == 3) ? _GetSkinHeader() : MENUET_HEADER_SIZE);
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kolibri.h:#else   // def __MENUET__
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kolibri.h:#undef  MENUET_MUTEX_INIT
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kolibri.h:#define MENUET_MUTEX_INIT  TMutex()
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kolibri.h:#undef  MENUET_REC_MUTEX_INIT
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kolibri.h:#define MENUET_REC_MUTEX_INIT  TRecMutex()
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kolibri.h:#endif  // else: def __MENUET__
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_file.h:#ifdef __MENUET__
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_file.h:#else   // def  __MENUET__
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_file.h:#endif  // else: def  __MENUET__
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:MENUET_BORDER_SIZE = 4;
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:MENUET_HEADER_SIZE = 20;
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:MENUET_MUTEX_MAX_TIME_WAIT  = 20;
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  cmp  ebx,MENUET_MUTEX_MAX_TIME_WAIT
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  mov  ebx,MENUET_MUTEX_MAX_TIME_WAIT
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  mov  edx,MENUET_BORDER_SIZE*65536+MENUET_HEADER_SIZE
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  cmp  ebx,MENUET_MUTEX_MAX_TIME_WAIT
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  mov  ebx,MENUET_MUTEX_MAX_TIME_WAIT
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  cmp  ebx,MENUET_MUTEX_MAX_TIME_WAIT
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_func.inc:  mov  ebx,MENUET_MUTEX_MAX_TIME_WAIT
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_heap.h:#ifndef __MENUET_HEAP_H_INCLUDED_
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_heap.h:#define __MENUET_HEAP_H_INCLUDED_
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_heap.h:#ifdef __MENUET__
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_heap.h:   TMutex _MemHeapMutex = MENUET_MUTEX_INIT;
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_heap.h:#endif  // def  __MENUET__
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_heap.h:#endif  // ndef __MENUET_HEAP_H_INCLUDED_
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_heap.inc:  cmp  ebx,MENUET_MUTEX_MAX_TIME_WAIT
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_heap.inc:  mov  ebx,MENUET_MUTEX_MAX_TIME_WAIT
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_lib.h:#ifndef __MENUET_LIB_H_INCLUDED_
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_lib.h:#define __MENUET_LIB_H_INCLUDED_
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_lib.h:#endif  // __MENUET_LIB_H_INCLUDED_
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/include/kos_start.inc:  db 'MENUET01'
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/kos_cdlg.h:#ifndef __MENUET_FILE_OPEN_H_INCLUDED_
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/kos_cdlg.h:#define __MENUET_FILE_OPEN_H_INCLUDED_
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/kos_cdlg.h:#define MENUET_OPEN_FILE_INIT {}   // Initializer of the file open struct, cat be redefined in a realization of the library
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/kos_cdlg.h:#ifdef __MENUET__
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/kos_cdlg.h:#undef  MENUET_OPEN_FILE_INIT
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/kos_cdlg.h:#define MENUET_OPEN_FILE_INIT  {0,0}
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/kos_cdlg.h:#else   // else: def __MENUET__
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/kos_cdlg.h:#undef  MENUET_OPEN_FILE_INIT
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/kos_cdlg.h:#define MENUET_OPEN_FILE_INIT  TOpenFileStruct()
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/kos_cdlg.h:#endif  // __MENUET__
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/kos_cdlg.h:#endif  // __MENUET_FILE_OPEN_H_INCLUDED_
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/life2.cpp:TOpenFileStruct open_file_str = MENUET_OPEN_FILE_INIT;
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/life2.cpp:#ifdef __MENUET__
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/life2.cpp:#ifndef __MENUET__
/media/maxim/E22406D62406AE1B/SVNKOS/programs/demos/life2/me_make.inc:;//COMPILER//  bcc32 -S -v- -R- -6 -a4 -O2 -Og -Oi -Ov -OS -k- -D__MENUET__ -Iinclude

Можно использовать хорошие штуки - найти и заменить - в текстовых редакторах


Top
   
 Post subject: Re: life2
PostPosted: Thu Nov 05, 2020 7:55 pm 
Online

Joined: Mon Sep 07, 2020 7:09 pm
Posts: 257
Позаменял в редаторе menuet на kolibri
На SVN пока не заливаю, но ВСЕ РАБОТАЕТ. Просто просмотри


Attachments:
life2__KOS.zip [327.64 KiB]
Downloaded 9 times
Top
   
 Post subject: Re: life2
PostPosted: Thu Nov 05, 2020 10:53 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 874
maxcodehack wrote:
Еще один вопрос. Не нравится мне, что все лежит в папке с игрой. Вдруг вот еще на нем программы будут, что копировать? По мне можно в contrib создать папку kos32-bcc, и там будет лежать t2fasm, патч, и helloworld, и набор библиотек.

Думаю что нужно отдельную папку сделать для Bcc. Но в ней для начала закинуть helloworld, потому как life2 программа сильно накрученная и для первоначальных примеров работы не подходит. В ней рисование окна скорее всего делается по таймеру, а в helloworld окно рисуется при системной перерисовке, потому они не стыкуются между собой. Также если делать такую папку то в последствии хорошо было-бы наклепать разных примеров, наподобие как у 0CodErr-а про Delphi viewtopic.php?f=33&t=3469&hilit=Delphi
maxcodehack wrote:
Можно использовать хорошие штуки - найти и заменить - в текстовых редакторах

Я так и делал в Notepad++, просто все сразу не убирал потому как не компилировалось... Например долго не мог выловить ошибку с функциями использующими TMutex:
Code:
@Kolibri@Lock$qp14Kolibri@TMutex

позже выяснил что с Menuet-ом вместо цифры 14 генерировалась цифра 13, в других функциях также на 1 меньше. После решил кусками заменять и по возможности на svn кидать что-бы не запортить случайно что-то.
maxcodehack wrote:
Позаменял в редаторе menuet на kolibri
На SVN пока не заливаю, но ВСЕ РАБОТАЕТ. Просто просмотри

Это очень хорошо что работает.


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

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 0 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:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited