Forth http://www.fforum.winglion.ru/ |
|
Irbis Forth http://www.fforum.winglion.ru/viewtopic.php?f=60&t=3336 |
Страница 1 из 3 |
Автор: | Hishnik [ Чт май 26, 2022 22:15 ] | ||
Заголовок сообщения: | Irbis Forth | ||
Irbis - 64-разрядный Форт для Windows.
|
Автор: | Hishnik [ Пт май 27, 2022 02:24 ] |
Заголовок сообщения: | Re: Irbis Forth |
В таком виде эта тема просто видна. С предыдущим вариантом было что-то не то с настройками форума. |
Автор: | Victor__v [ Пт май 27, 2022 09:46 ] |
Заголовок сообщения: | Re: Irbis Forth |
Ура, работает-с) |
Автор: | Total Vacuum [ Пт май 27, 2022 12:34 ] |
Заголовок сообщения: | Re: Irbis Forth |
2 2 + . |
Автор: | Sotnik [ Пт май 27, 2022 18:23 ] |
Заголовок сообщения: | Re: Irbis Forth |
Victor__v писал(а): Ура, работает-с) Неа.
|
Автор: | Sotnik [ Пт май 27, 2022 18:24 ] |
Заголовок сообщения: | Re: Irbis Forth |
Total Vacuum писал(а): 2 2 + . > А сколько надо?
|
Автор: | Total Vacuum [ Чт июн 16, 2022 11:17 ] |
Заголовок сообщения: | Re: Irbis Forth |
Кстати, подумалось, сейчас Irbis (само приложение) 64-битное, поэтому работает только в 64-битных осях. А ведь можно сделать 32-битное приложение, которое при этом будет работать с 64-битными данными, тогда его можно будет хоть на winxp запускать... Кстати, как в Паскале объявляются длинные целые (long в си/dd в asm) и очень длинные целые (long long/dq)? Уже совсем Паскаль из головы выветрился... |
Автор: | Hishnik [ Чт июн 16, 2022 23:44 ] |
Заголовок сообщения: | Re: Irbis Forth |
Total Vacuum писал(а): Кстати, подумалось, сейчас Irbis (само приложение) 64-битное, поэтому работает только в 64-битных осях. А ведь можно сделать 32-битное приложение, которое при этом будет работать с 64-битными данными, тогда его можно будет хоть на winxp запускать... Если посмотреть, большинство машин сейчас с 64-битной Windows, и WinXP уже практически ушла. Получить доступ к более свежим возможностям видится приятнее по сравнению с расширением на слишком большой спектр платформ. Это все-таки "просто Форт для Windows". Total Vacuum писал(а): Кстати, как в Паскале объявляются длинные целые (long в си/dd в asm) и очень длинные целые (long long/dq)? Уже совсем Паскаль из головы выветрился... type CELL = int64; |
Автор: | Total Vacuum [ Ср окт 19, 2022 10:58 ] |
Заголовок сообщения: | Re: Irbis Forth |
Бродилка под Irbis ссылка на изображение Код: 0 image.show : rshift dup begin while 1 - swap 2 / swap dup repeat drop ; : putpixel 0 image.pixel ; : coz abs 2 * 64 - abs 2 * 64 - ; 256 constant WIDTH 176 constant HEIGHT 5 constant BITS 1 BITS lshift constant STEP STEP 1 - constant MASK create Map 0x00000 , 0xFFFFE , 0xAAAAA , 0xFFFFE , 0xFC9FE , 0xFDDFE , 0xFF7FE , 0xFDDFE , 0xFC9FE , 0xFFFFE , 0xAAAAA , 0xFFFFE , 0x00000 , variable Swing variable LocX variable LocY variable Angle create CosTable 256 cells allot : init 1 Angle ! 41 LocX ! 41 LocY ! 147 Swing ! 256 dup begin while 1 - dup coz over cells CosTable + ! dup repeat drop ; : cos Angle @ cells CosTable + @ ; : sin Angle @ 16 - 63 and cells CosTable + @ ; variable dist variable color variable x variable y variable h variable j1 variable j2 : span color ! dist ! x ! HEIGHT dist @ STEP WIDTH * HEIGHT / > if STEP WIDTH * HEIGHT / * dist @ / then h ! HEIGHT h @ - 2 / j1 ! j1 @ h @ + j2 ! HEIGHT dup begin while 1 - x @ over dup j2 @ > if 0xFFFFFF else dup j1 @ < if 0 else color @ then then putpixel dup repeat drop ; variable i0 variable j0 variable u0 variable v0 variable vx variable vy variable da variable db variable a variable b variable u variable v variable u1 variable v1 variable a1 variable b1 variable i variable j variable di variable dj variable wall : scan v @ u @ < dup if y @ STEP + y ! u @ v @ - u ! v1 @ v ! j @ dj @ + j ! else x @ STEP + x ! v @ u @ - v ! u1 @ u ! i @ di @ + i ! then wall ! ; : calc 1 a @ 0 < if negate u0 @ a @ negate else STEP u0 @ - a @ then a1 ! u ! di ! 1 b @ 0 < if negate v0 @ b @ negate else STEP v0 @ - b @ then b1 ! v ! dj ! u @ dup STEP - x ! b1 @ dup BITS lshift u1 ! * u ! v @ dup STEP - y ! a1 @ dup BITS lshift v1 ! * v ! i0 @ i ! j0 @ j ! 1 begin while scan Map i @ cells + @ 1 j @ lshift and repeat dup wall @ if b1 y else a1 x then @ 18 lshift swap @ / i @ j @ + 3 and if 0x7F7F7F else 0x3F3F3F then span a @ da @ + a ! b @ db @ - b ! ; : scene 0 image.hide LocX @ dup BITS rshift i0 ! MASK and u0 ! LocY @ dup BITS rshift j0 ! MASK and v0 ! cos 10 lshift vx ! sin 10 lshift vy ! vy @ 128 / Swing @ * WIDTH / da ! vx @ 128 / Swing @ * WIDTH / db ! vx @ Swing @ vy @ 256 / * - a ! vy @ Swing @ vx @ 256 / * + b ! WIDTH dup begin while 1 - calc dup repeat drop 0 image.show 10 10 WIDTH HEIGHT 0 image.rect ; : turn mouse.x 4 / 63 and Angle ! ; use turn to mouse.move variable forward : start 1 forward ! ; use start to mouse.left.down : stop 0 forward ! ; use stop to mouse.left.up : run forward @ if LocX @ cos 16 / + dup x ! BITS rshift i ! LocY @ sin 16 / + dup y ! BITS rshift j ! Map i @ cells + @ 1 j @ lshift and if x @ LocX ! y @ LocY ! then then ; : render run run run scene ; init 40 timer.interval use render to timer или тут: http://totalvacuum.ru/IRBIS/wolf3d.f Надо бы оптимизировать, да и под OpenGL переписать, но всё руки не доходят... |
Автор: | Hishnik [ Ср окт 19, 2022 13:43 ] |
Заголовок сообщения: | Re: Irbis Forth |
Ух, работает Если увеличить размеры, начинает существенно подтормаживать. Все-таки нужен OpenGL. Однако в качестве демонстрации выглядит эффектно. Можно доделывать Ирбиса по результатам тестирования. |
Автор: | Total Vacuum [ Ср окт 19, 2022 15:00 ] |
Заголовок сообщения: | Re: Irbis Forth |
Переделал : rshift 0 do 2 / loop ; и разбил цикл в span на 3 отдельных для пола, стен и потолка, также задействовав штатный do-loop. По ощущениям, чуточку быстрее стало. Не знаю внутренней кухни, могу лишь предполагать, что встроенный цикл do-loop работает быстрее, чем его аналог, реализованный через begin-while-repeat http://totalvacuum.ru/IRBIS/wolf3x.f |
Автор: | Hishnik [ Ср окт 19, 2022 19:41 ] |
Заголовок сообщения: | Re: Irbis Forth |
rshift и lshift есть встроенные. Так и работают: d, bits -- d<<bits |
Автор: | Total Vacuum [ Вт окт 25, 2022 01:03 ] |
Заголовок сообщения: | Re: Irbis Forth |
Точно, туплю, встроенный rshift прекрасно работает. Убрал rshift и немного упростил http://totalvacuum.ru/IRBIS/wolf3z.f |
Автор: | Total Vacuum [ Ср ноя 02, 2022 01:43 ] |
Заголовок сообщения: | Re: Irbis Forth |
А нет ли какого-нибудь простенького примера для Irbis+OpenGL? |
Автор: | Hishnik [ Ср ноя 02, 2022 03:28 ] |
Заголовок сообщения: | Re: Irbis Forth |
Total Vacuum писал(а): А нет ли какого-нибудь простенького примера для Irbis+OpenGL? Совсем простенький есть. Сейчас он как раз дописывается на предмет "чего там еще не хватает для практики". |
Страница 1 из 3 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |