Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.08.2009, 10:58   #1
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
Сообщение Проблема со скриптовыми опкодами?

Сделал функцию загрузку скрипта,функция загружает в память скрипт
сам скрипт состоит из двоичных опкодов,а сама функция загрузки скриптов возвращает указатель на но чало скрипта и размер всех опкодов,
проблема в том что не придет в голову как передавать параметры опкодов
в программу

вот пример:
0001: beep //Пиликалка
0002: MessageBox 'Скрипт' //Вывод текста в окно
0003: formPos 50 50 //Позиция формы

короче думал приходили только в голову бессмысленные функции
помогите пожалуйста
VintProg вне форума Ответить с цитированием
Старый 12.08.2009, 12:28   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

из приведенного выше куска я так и не понял как ты хранишь скрипты в файле
посему скажу так...извлекай параметры из файла далее преобразуй в нужный вид(опять же все зависит от хранения), если надо...и передавай как параметр
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 12.08.2009 в 12:32. Причина: забавная очепятка
Пепел Феникса вне форума Ответить с цитированием
Старый 12.08.2009, 12:51   #3
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Структура головы скрипта:
Код:
THeadScript = packed record
   ScriptName : array[0..2] of char; //Всегда имеет SCR
  ScriptSize : Integer; //Размер всех опкодов вскрипте
вот так опкоды выглядят в hex:
0100 0200 (...сдесь строка 24 - char) 0300 3200 0000 3200 0000
0100 - beep
0200 - messageBox
0300 - FormPos
3200 0000 - Параметр 50
сам опкод 2 - байта (word)
VintProg вне форума Ответить с цитированием
Старый 12.08.2009, 13:31   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

у каждого опкода свои параметры(их размер и тип)
например 0001 00000F00 000000FF*
Цитата:
сам опкод(word,2байта)
первый параметр(Cardinal,4байта)
второй параметр(Cardinal,4байта)
(я для простоты принял что beep это 1 в десятичной ссч)
у функции beep два параметра типа Cardinal(4байта)
вот и считывай их...например(пишу на основе TFileStream(по условию он к моменту выполнения строк уже создан как положенно), но это мелочь)

Код:
var F:TFileStream
Opcode:word;
Params:array of Cardinal;
-------------
F.ReadBuffer(Opcode,2);
case Opcode of
 1:begin
     SetLength(Params,2);
     F.ReadBuffer(Params[0],4);
     F.ReadBuffer(Params[1],4);
     Windows.Beep(Params[0],Params[1]);
    end;
------
end;
*может порядок байт напутал
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 12.08.2009 в 13:34.
Пепел Феникса вне форума Ответить с цитированием
Старый 13.08.2009, 10:12   #5
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Как такое реализуются безусловный переход в скриптах?
VintProg вне форума Ответить с цитированием
Старый 13.08.2009, 14:22   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

всмысле?
поподробнее
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.08.2009, 06:34   #7
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Как goto на label,то и есть перейти на нужный опкод.
VintProg вне форума Ответить с цитированием
Старый 14.08.2009, 11:04   #8
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

А как мы по твоему должны тебе ответить? Мы что экстрасенсы? Либо выкладывай все исходники либо сам делай.
Вадим Буренков вне форума Ответить с цитированием
Старый 14.08.2009, 14:02   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

разберись сначало с простными действиями а потом усложняй.
а то ты хочешь все и сразу.

для меток придется сканировать весь файл сначало(или часть но не тем не менее) и заполнять чтото типа массива...имя метки-место в файле.
а вообще тебе еще операторные скобки нужнны будут.
и тд.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 18.08.2009, 09:05   #10
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Я вот подумал,
допустим есть опкод 0004: jump @labelxxx

Цитата:
для меток придется сканировать весь файл сначало(или часть но не тем не менее) и заполнять чтото типа массива...имя метки-место в файле.
а вообще тебе еще операторные скобки нужнны будут.
и тд.
что если сделать так прыжок происходит на смещение в файле (памяти),
то и есть прыжок содержит адрес.
VintProg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с рамами/Проблема с ЖД DRAGGER Компьютерное железо 6 04.01.2009 23:37