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.149
    В соответствии с назначением раздела, в этой теме предполагается обсуждать конкретные вопросы, которые у вас возникают при создании своих программ (в частности - игр), помогать другим, размещать полезные ссылки на статьи и материалы, которые могут пригодиться другим.

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

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

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

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

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    Dimouse, дык, создай и посмотри отличия.
     
    Рыжий Тигра нравится это.
  4. Dimouse King of Mice

    Dimouse

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

    Регистрация:
    18 апр 2003
    Сообщения:
    35.149
    Steel Rat, не дурак, так и сделал еще вчера ночью:) Оттуда ключ /dll и нашел.
     
  5. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    Dimouse, посмотри текстовым редактором отличия. Делал? =)
     
    Рыжий Тигра и Dimouse нравится это.
  6. Dimouse King of Mice

    Dimouse

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

    Регистрация:
    18 апр 2003
    Сообщения:
    35.149
    Steel Rat, попробую, не делал.
     
  7. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Во-во.
    Лучше CompareIt!'ом - надёжнее будет, он показывает различающиеся отдельные буквы.
     
  8. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    Рыжий Тигра, Araxis Merge рулит!
     
  9. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Тююю, тоже платный. Да ещё и сайт перенасыщен выпендрёжем, который на моём любимом файрфоксе 2.0 встаёт дыбом и намертво заклинивает. :-(
    Впрочем, что-то в ём вроде бы есть; вечером гляну. Сенькс за наводку!
     
  10. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    Рыжий Тигра, платный-платный и винда у тебя платная и Visual Studio 6 не имеет Express редакции.

    Выброси в мусор это и руки помой после.
     
  11. SAS io.sys

    SAS

    Администратор

    Регистрация:
    8 июл 2003
    Сообщения:
    19.653
    Бесплатное - WinMerge. Я им и пользуюсь, очень нравится.
     
  12. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    Лучше Арахиса ничего нет. Я даже думаю прикупить лицензию.
    upd: 99 евраф!!! Да они там ваще охренели!
     
    Последнее редактирование: 19 дек 2013
  13. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Не могу - это последний, который по первым нескольким буквам в строке адреса предлагает начинающиеся с этих букв адреса в порядке частоты использования, а не (как делают более свежие) здоровенную кучу адресов, содержащих хотя бы одну из этих (или соответствующих им русских, не разбирался) букв в заголовке страницы, в порядке прибыльности размещённых на этой странице рекламных баннеров. :-(
    Не хочу - он не умеет подсвечивать совпадающие буквы в несовпадающих строках. (заглядывает в скриншоты) О, уже умеет! Ща посмооотрим... (запускает, с интересом мышует по меням, морщится, плюётся, матерится, закрывает, сносит) Неее, не пойдёт. Чрезмерно тупорылое: перенесённую в начале строку не нашло, код буквы под курсором не показывает, мой позывной строчными буквами не находит независимо от галки "ignore case", сравниваемые тексты друг над другом не располагает... Наглое - постоянно требует прикупить скачать ещё плагинов. А со следующей версии обещает быть ещё и здоровенное (десятки мег) и ползучее. :-(

    ---------- Сообщение добавлено в 15:31 ---------- Предыдущее сообщение размещено в 15:29 ----------

    Вот и не покупай.
     
    Последнее редактирование: 19 дек 2013
  14. Dimouse King of Mice

    Dimouse

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

    Регистрация:
    18 апр 2003
    Сообщения:
    35.149
    А мне тут убунту предложила http://meldmerge.org/ я поставил, вроде прикольно... Правда сравниваю только код из свн.
     
    Steel Rat нравится это.
  15. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
  16. Dimouse King of Mice

    Dimouse

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

    Регистрация:
    18 апр 2003
    Сообщения:
    35.149
    В общем, разобрался я с xmp. Ключ /dll правильный. См. http://msdn.microsoft.com/en-US/library/y0zzbyt4.aspx

    Далее - нужно еще функции правильно экспортировать в dll, см. http://msdn.microsoft.com/en-us/library/7k30y2k5.aspx

    Я всё это сделал, но оказалось, что я использую версию xmplib 2.7, а нужно 4.2 (он как-т резко перескочил с 2.7 на 4.2:)), а так как там API разные у меня не заиграло. Немного еще повозился и плюнул, скачал и скомпилировал libxmp 4.2 под студией 2010. получившийся xmplib.dll переименовал в xmp.dll и подсункул питоновским экземплам. И чудо - оно заиграло!

    Далее. player.py и его вариации показывают название и т.д. (то что мне в принципе и надо), играют и в процессе играния показывают позицию в паттерне и номер паттерна. Но понятно, если вставлять в программу плеер, то хотелось бы, чтобы им как-то можно было пользоваться, там громкость менять, seek, паузу и т.д. Так что я посмотрел еще два примера wx_player на wxWidgets. Мне не понравилось и глючит (seek и прочее не работают), и сам звук тоже почему-то с шумом. qt_example (на pyQt) показывает только осциллограмму по частоте звука, то есть должен показывать - у меня не показывает, пришлось это отрубить, но тогда хотя бы играет. Архив сейчас прикреплю.

    Кто-нибудь, попробуйте потестировать:) Спасибо.
     

    Вложения:

    • examples2.rar
      Размер файла:
      808,9 КБ
      Просмотров:
      34
    Последнее редактирование: 20 дек 2013
    AxXxB нравится это.
  17. Dimouse King of Mice

    Dimouse

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

    Регистрация:
    18 апр 2003
    Сообщения:
    35.149
    Интересная инфа на demoscene.ru:

     
    Bato-San нравится это.
  18. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    В моём посте за 2013/12/16 была ошибка в макре XLAT_SORT, из-за которой последний элемент массива, сортированного с удалением дубликатов, мог (хотя мог и не) пропасть с заменой на дубликат более раннего. Ошибку исправил (там исправление выделено жирным тёмно-красным), заодно малость пооптимизировал (сделал чуть пошустрее, убрал лишний параметр у COMPARE_MACRO и что-то ещё по мелочи). Дарю:
    Код:
    /*
     *  Copyright (C) 2013[COLOR="Blue"][B]-2015[/B][/COLOR]  Рыжий Тигра aka redtigra [COLOR="Blue"][B]aka ginger_tigra[/B][/COLOR]
     *
     *  This program is free software; you can redistribute it and/or modify
     *  it under the terms of the GNU General Public License as published by
     *  the Free Software Foundation; either version 2 of the License, or
     *  (at your option) any later version.
     *
     *  This program is distributed in the hope that it will be useful,
     *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     *  GNU General Public License for more details.
     *
     *  You should have received a copy of the GNU General Public License
     *  along with this program; if not, write to the Free Software
     *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
     */
    
    // xlatsort.h - macros for sort+uniq and approx bsearch
    // based on Linux kernel 3.12.5 linux/lib/sort.c by Matt Mackall <mpm@selenic.com>,
    //                                        bsearch.c by Tim Abbott <tabbott@ksplice.com>
    //
    
    #ifndef __xlatsort_h___
    #define __xlatsort_h___
    
    #ifdef __cplusplus
    extern "C" {
    #endif
    
    #define XLAT_SORT( type, /* type */ array /* [] */, /* int */ num /* of items in array */, \
        /* signed */ COMPARE_MACRO /* ( item1, item2 ) - ret: < 0 if ( item1 < item2 ) and so on */, \
        /* BOOL */ keep_duplicates [COLOR="Blue"][B]/* otherwise non-unique items will be deleted */[/B][/COLOR], \
        /* returns: */ \
        /* int */ out_num [COLOR="Blue"][B]/* is number of items in sorted array */[/B][/COLOR] ) \
      [COLOR="DarkRed"][B]if ( (num) <= 1 ) \
        (out_num) = (num); \
      else /* if ( (num) > 1 ) */[/B][/COLOR] do { \
        register int jn = -(num), ji = jn / 2 + 1, jc, jr, jj; \
        register type *t_arr = (array) - jn - 1; \
        type t_item; /* for swap */ \
        /* heapify */ \
        if ( ji <= 0 ) do { \
          jr = ji; if ( ( jc = jr * 2 - 1 ) > jn ) do { \
            if ( ( jc > ( jn + 1 ) ) && \
                ( COMPARE_MACRO( t_arr[ jc ], t_arr[ jc - 1 ] ) > 0 ) ) \
              jc--; \
            if ( COMPARE_MACRO( t_arr[ jr ], t_arr[  jc ] ) <= 0 ) \
              break; \
            t_item = t_arr[ jr ]; t_arr[ jr ] = t_arr[ jc ]; t_arr[ jc ] = t_item; \
          } while ( ( jc = ( jr = jc ) * 2 - 1 ) > jn ); \
        } while ( ++ji <= 0 ); \
        /* sort */ \
        jj = ji = jn + 1; if ( ji < 0 ) do { \
          t_item = t_arr[ 0 ]; t_arr[ 0 ] = t_arr[ ji ]; t_arr[ jj ] = t_item; \
          jr = 0; if ( ( jc = jr * 2 - 1 ) > ji ) do { \
            if ( ( jc > ( ji + 1 ) ) && \
                ( COMPARE_MACRO( t_arr[ jc ], t_arr[ jc - 1 ] ) > 0 ) ) \
              jc--; \
            if ( COMPARE_MACRO( t_arr[ jr ], t_arr[ jc ] ) <= 0 ) \
              break; \
            t_item = t_arr[ jr ]; t_arr[ jr ] = t_arr[ jc ]; t_arr[ jc ] = t_item; \
          } while ( ( jc = ( jr = jc ) * 2 - 1 ) > ji ); \
          if ( (keep_duplicates) || \
              ( COMPARE_MACRO( t_arr[ 0 ], t_arr[ jj ] ) != 0 ) ) \
            jj++; \
        } while ( ++ji < 0 ); \
        if ( jj != 0 ) \
          t_arr[ jj ] = t_arr[ 0 ]; \
        (out_num) = jj - jn; \
      } while (0)
    
    #define XLAT_BSEARCH( type, /* maybe of some other type */ key, /* type */ array /* [] */, \
        /* int */ num /* of items in array */, \
        /* signed [COLOR="DarkRed"][B]int[/B][/COLOR] */ COMPARE_MACRO /* ( key, item ) - ret: < 0 if ( key < item ) and so on */, \
        /* returns: */ \
        /* int */ less_ret [COLOR="Blue"][B]/* is index of item found (or nearest lesser if no exact match, */ \
        /* or < 0 if no lesser items */[/B][/COLOR], \
        /* BOOL */ exact [COLOR="Blue"][B]/* TRUE means exact match is found, otherwise FALSE */[/B][/COLOR] ) \
      do { \
        register type *t_arr = (array); \
        register size_t t_start = 0, t_end = (num), t_mid = t_start; \
        register int t_result; \
        (exact) = 0; \
        if ( t_start < t_end ) do { \
          t_mid = t_start + (t_end - t_start) / 2; \
          if ( ( t_result = COMPARE_MACRO( key, t_arr[ t_mid ] ) ) < 0 ) { \
            t_end = t_mid--; \
          } else if ( t_result > 0 ) { \
            t_start = t_mid + 1; \
          } else { \
            (exact) = 1; break; \
          } \
        } while ( t_start < t_end ); \
        [COLOR="Blue"][B](less_ret) = t_mid;[/B][/COLOR] \
      } while (0)
    
    #ifdef __cplusplus
    }
    #endif
    
    #endif // __xlatsort_h___
    Upd 11 фев 2015:
    Исправил пару мелких, но досадных ошибок (выделены жирным тёмно-красным):
    • на входе в сортировку (XLAT_SORT) добавил проверку - массив должен содержать более одного элемента, иначе вся эта возня не имеет смысла, а так хоть процессор сэкономится; :-)
    • поправил описание параметра COMPARE_MACRO макры XLAT_BSEARCH - макра должна возвращать явно int, иначе при сортировке 64-битных вылезает ошибка - отбрасывается старшая часть вычитания ключа и сравниваемого элемента и начинается бардак. :-(
    Плюс выделил синим мелкие изменения, не влияющие на работу макров, но добавляющие им понятности как использовать.
     
    Последнее редактирование: 11 фев 2015
  19. A.P.$lasH

    A.P.$lasH

    Legacy

    Регистрация:
    27 фев 2010
    Сообщения:
    4.667
    Пишет Анатолий Воробей (он же - AVVA), замечательный программист, математик и просто хороший человек:

    http://avva.livejournal.com/2721017.html

    (рекомендую его журнал - очень интересно пишет, для программера найдётся масса интересных тем)

    P.S. Что-то номер у меня не слишком быстро скачивался. Перевыложил, на всякий случай, на EX.ua:

    http://www.ex.ua/992903449864
     
    SAS, Ulysses и ThisSuXX нравится это.
  20. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Давно мучает идея хардсабов для dosbox.
    Смысл простой, ловить обращение к определенному файлу и выводить заданный шрифтом в заданном месте окна текст. Сам текст брать из какого-нибудь стандартного формата титров, типа .srt
    Можно быстро сделать сабы для видеороликов тогда.
     
    compart нравится это.
  21. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    jack7277, у меня аналогичная задачка для WC4 - есть несколько сцен, где речь (звуком) идёт, а текстом не сопровождается. Отловить обращения к файлу несложно (см.напр.: функцию hook_apis() в моих исходниках dxmci). Проблема - вывести строку поверх directdraw'ной картинки: простой DrawText() не фурычит, а больше никаких я не знаю. :-(

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

    Проще сделать свой; формат простейший, из двух полей - смещение в наблюдаемом файле, строка.
     
  22. Bato-San Чеширский волк-киборг

    Bato-San

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