1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Кодерский уголок

Тема в разделе "Мастерская", создана пользователем Dimouse, 10 сен 2006.

  1. Dimouse King of Mice

    Dimouse

    Администратор Переводчик

    Регистрация:
    18 апр 2003
    Сообщения:
    35.133
    В соответствии с назначением раздела, в этой теме предполагается обсуждать конкретные вопросы, которые у вас возникают при создании своих программ (в частности - игр), помогать другим, размещать полезные ссылки на статьи и материалы, которые могут пригодиться другим.

    Что здесь не допускается:
    - беспорядочный флуд на всевозможные темы, в том числе общие обсуждения языков программирования без конкретики (карается по статье "флуд и оффтопик" *),
    - разжигания на темы "что лучше, Си или Си++ и чем они отличаются?", "какой язык программирования лучше X или Y?" и т.п. (карается по статье "флейм и участие в холиварах" *),
    - мерение пиписьками в стиле "я лучше программирую" или "ты не умеешь программировать" (карается по статье "оскорбление участников и их взглядов" *).

    Всё это допускается в специально созданной теме "Беседка для программистов или «Бутерброд с кодом».

    * по усмотрению модератора также возможно применение блокировки в данной теме.

    Оригинальное сообщение
     
    Последнее редактирование модератором: 24 ноя 2014
    CY8R4Y нравится это.
  2.  
  3. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Дописал код функции stricmp, рядом с A-Z, добавил условия для А-Я (192-223), проверил - работает.
    Русский регистронезависимый ввод. Переключение правым контролом.
    Написал "мама", "МАМА" - оба ключевых слова сработали, в скрипте прописано слово "Мама".
    Всем спасибо, все молодцы.
    Теперь только дело за художником и у нас всё.

    PS:
    1) Еще в русской раскладке надо Ёё перенести на тильду (~), а то сейчас она на кнопке "/?.,"
    2) Надо сделать по-умолчанию чтобы русский был включен при запуске keyrus.

    И еще вопрос залу - нужно ли доделать "Ё" чтобы корректно сравнивалась с "ё" ? Вроде бы слов, начинающихся с "Ё" нет и не будет.
     
    Последнее редактирование: 21 май 2014
    Val07og, ntr73, kirik-82 и 2 другим нравится это.
  4. kirik-82 DOSтойным играм достойный перевод

    kirik-82

    Переводчик

    Регистрация:
    19 дек 2007
    Сообщения:
    2.091
    но ведь молодец же, а сначала говорил "давайте через !@#$ писать и выбирать варианты".
     
    ntr73 нравится это.
  5. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    (ёжики недовольно ворчат под ёлками :-) )
    Пригодится. Даже хитрее: чтобы "Ё" из скрипта совпадала со вводом "ЁёЕе", а "Е" из скрипта - со вводом только "Ее".
    И если уж расширять, то и ҐґЄєІіЇїЎў тоже не помешают. И, соответственно, 1251 выглядит более универсальной - в ней все эти буквы есть, а в 866 и RUSCII - не все.
    О, а так можно? Не получится, что загрузчик в результате изгадит полезные байтики?
    Я в таких случаях либо в конце захватываемой области отводил два байта под мусорник и все удаляемые релокейты перенаправлял туда, либо переносил в них записи с конца и урезал размер таблицы. Удваивать не пробовал.

    Offtop
    Когда, лет с 20 назад? Не смешно. :-(
    Кстати, так что там с fhish'ом?
     
    Последнее редактирование: 21 май 2014
    Val07og нравится это.
  6. A.P.$lasH

    A.P.$lasH

    Legacy

    Регистрация:
    27 фев 2010
    Сообщения:
    4.667
    Насколько я знаю, в данном случае можно - там есть разные типы записей. В конце-концов, я перед отправкой проверил и продублировал заменяемую (всё-таки, ночь, мало ли) - соответствующая часть кода из примера jack7277 не изменилась :)

    P.S. Вот неплохая дока:
    http://unavowed.vexillium.org/pub/doc/LE

    Формат записи разбирается после "Each relocation item consist of".

    Да, кстати про Hiew, у него ведь очень хороший edump32.exe в комплекте. Всё как на ладони.

    edump32.exe /F Htest1.EXE > list.txt

    /F - чтобы смещения части выводило. Те, что с новой строки.

    Код:
         07/00   32bit Offset          internal     3:000000EF
     0AAD
         07/10   32bit Offset          internal     3:00017E58
     0AA5
         07/00   32bit Offset          internal     3:000000E4
     0A91
         07/10   32bit Offset          internal     3:00032438
     0A87
         07/00   32bit Offset          internal     3:000000EA
     0A82
         07/10   32bit Offset          internal     3:00017E58
     0A7B
         07/00   32bit Offset          internal     3:000000DB
     0A67
         07/10   32bit Offset          internal     3:00017E3C
     0BA3
         07/10   32bit Offset          internal     3:00017E38
     0B9B
    Жаль, что смещение записи в пределах EXE не выводится, но можно и вручную найти.

    :yes: Я для Polanie тоже удалял запись и переносил остаток.
     
    Последнее редактирование: 21 май 2014
    Val07og и Рыжий Тигра нравится это.
  7. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    ну и не долбайся с ней. Зачем делать то, что никому нафиг не надо ?

    а чем оно мешает то ? Впрочем в полной поставке кейрус 7.3 есть редактор раскладки символов по клавишам.

    ВОт прям из документации по кейрус, пишешь прожку и суёшь в батник между запуском кейруса и игры:
    ┌────────────────────────────────┐
    │Программное управление драйвером│
    └────────────────────────────────┘

    MOV ax,'KR'
    MOV bl,< номер подфункции >
    INT 2Fh

    BL
    =0 : Проверка - загружен KEYRUS ?
    Если KEYRUS загружен на выходе в AL будет 82h
    bh - Старший номер версии (7)
    bl - Младший номер версии (3)
    Регистр es при этом портится.

    =1 : Получить статус драйвера.
    Формат статуса:
    биты 0,1: 00 - Латинский режим
    01 - Русский режим
    10 - Альтернативный режим
    11 - не используется
    бит 2: 0 - Не загружать символы
    1 - Разрешить загрузку символов
    бит 3: 0 - Английская клавиатура не обрабатываются
    1 - Поддержка английской клавиатуры
    биты 4-7: Используются внутри драйвера, нельзя
    модифицировать

    =2 : На входе al - новый статус драйвера.

    =90h ('Р') : Включение русского режима клавиатуры.

    =4сh ('L') : Включение латинского режима клавиатуры.
     
  8. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    О, сенькс! А то под PE хелпов валом, под MZ валом, а под LE и NE навскидку не гуглятся. :-(
    (полез в инет искать hiew посвежее, на замену старенькому 6.03)

    ---------- Сообщение добавлено в 13:37 ---------- Предыдущее сообщение размещено в 13:19 ----------

    (хихикает) Во времена оны :-) у нас на компах клавиатурные кириллизаторы были разные, поэтому пришлось придумать способ универсальнее: в порт выхода клавиатуры засовывался скан-код переключателя (конфигурировался индивидуально под каждую машину), потом скан-код клавиши с буквой и проверялся клавиатурный буфер на предмет с чего на что переключили, и так до тех пор пока не ловился правильный регистр.
    (мечтательно) Вот если б кто подсказал способ побезгеморройнее, как из форточного приложения лазить в клавиатурные порты...
     
    A.P.$lasH нравится это.
  9. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    Рыжий Тигра, ээээ... ну вы извращенцы, что тут скажешь то, десу :cry: не знаю почему было не использовать вполне универсальные документированные методы... Хотя - сам когда то издевался над людьми с программным управлением замком и паролями. :D

    точно так же как и не из форточного. Проще уже некуда.
     
    Последнее редактирование: 21 май 2014
    Val07og нравится это.
  10. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    А там надо было обжулить подсовыванием клавиш не одну, а сразу несколько программ, в т.ч. одну забирающую int 9 на себя. Ну, и поскольку влом писать несколько резидентных вставок с почти одинаковым действием, то и. :-)
    Фиг там: 0xC0000096 privileged instruction :-(
     
  11. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    Рыжий Тигра, Я, правда не понимаю, зачем тебе надо именно в порты, ведь весь перехват и даже полная эмуляция клавиатуры доступны из форточек и так.

    И что то я не верю, что ты не знаешь вот про это, например: PortTalk.
     
  12. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    А ты пройдись по мне отладчиком! (и жизнерадостно демонически заржал)
    А так универсальнее. И компактнее.
    Это только для себя годится. Ставить такое заказчику, особенно в связь или энергетику, - нуего. :-(
     
  13. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    Рыжий Тигра, В принципе драйвер то не является обязательным условием. Можно и без него. Но мне твои заказчики не платят - так что пусть сами мучаются. :)

    А лично для тебя, как ты сам заметил - сгодится.
     
  14. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Это ты уже сказал:
    Повторяешься. :-(
     
  15. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    файл torus.com отлично сработал, переключает ввод на русский:
    Код:
    seg000:0100 start proc near
    seg000:0100   mov     ax, 4B52h
    seg000:0103   mov     bl, 90h
    seg000:0105   int     2Fh
    seg000:0107   retn
    seg000:0107 start           endp
    
    Батником запускаю keyrus.com, torus.com, harvest.exe
    В игре получаю сразу включенный русский ввод.
    Дописал в stricmp буквы Ёё, так как скриптовые кодовые слова в оригинале писались заглавными буквами, на всякий случай.
    Перенёс Ёё на тильду/апостроф - "~`"
    Переключение рус-англ - правый Ctrl.
    Вроде теперь всё как надо.
     
    kirik-82, Рыжий Тигра и Val07og нравится это.
  16. Val07og

    Val07og

    Регистрация:
    1 апр 2008
    Сообщения:
    897
    По-моему, универсальнее - как раз через официально документированные функции.
    Всё остальное могут спокойно поменять, даже не сказав, потому что внутреннее и ещё допиливается, например.
     
  17. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Нууу, микросхему 8042 поменять будет куда геморройнее, чем внезапно(tm) объявить официально документированную функцию официально устаревшей. :-)
    Кроме того, "если функция не документирована - это не гарантирует, что её не использует ваш соперник" (L). Например, лично держал в руках и помогал ломать банковскую прогу, забирающую на себя прерывания от клавы и мыши с целью предотвратить подделку... ну, неважно чего, - но прога хороша при обработке ну сотни документов в день, а по факту приходилось их лохматить многие десятки тыщ и притом начинать в 5 вечера - в итоге человек был вынужден или идти домой где-то к полуночи, или таки пихать байты в клавиатуру с целью хоть какой-то автоматизации процесса. Слава кришне, программа не имела ничего против пользователя, наколачивающего на клаве по сто букв в секунду. :-))))
     
    Grue13 и Val07og нравится это.
  18. Val07og

    Val07og

    Регистрация:
    1 апр 2008
    Сообщения:
    897
    Не, об изменении железа речи нет, или это уже вообще несовместимая машина получится.
    Микросхему-то не поменяют, а вот способ прямого доступа к ней через внутренние недокументированные (и не исключено, что временные) функции системы - легко.

    А с документированными, по идее, должны сохранять обратную совместимость в одной и той же ОС хотя бы до окончания её поддержки. :)

    ---------- Сообщение добавлено в 03:48 ---------- Предыдущее сообщение размещено в 03:35 ----------

    Т. е. микросхема-то одна, но при использовании недокументрованных функций под каждое обновление системы придётся делать свой отдельный способ доступа к ней - разве это универсально?
     
  19. Geryon

    Geryon

    Регистрация:
    13 май 2008
    Сообщения:
    1.228
    Довольно часто встречаю в бинарных файлах DOS (EXE, драйверах) сигнатуру PSQRWV. Уж где ее только нет - и в дровах Creative, и в дровах Sound Images, и Broderbund, и в куче EXE-файлов. Что она может означать? Может, какой-то упаковщик?
     
  20. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
    Geryon, а ты в дизассемблере посмотри.
     
    Val07og, Grue13 и Geryon нравится это.
  21. Geryon

    Geryon

    Регистрация:
    13 май 2008
    Сообщения:
    1.228
    Действительно:

    Код:
    push ax
    push bx
    push cx
    push dx
    push di
    push si
    
     
    Grue13 нравится это.
  22. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    Geryon, а теперь поищи вторую... которая это всё извлекает обратно. :)

    На XT клавиатура управляется через ППУ 8255...
    На AT 8042.
    У PS/2 их вообще может быть 2... и у него там есть свои особенности.
    На современных компах это устройство изображается мостом и может иметь отличия от оригинала.

    :hmmm::nono:
     
    Последнее редактирование: 24 май 2014
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление