Не воспроизводится звук в uFMOD

Тема в разделе "WASM.BEGINNERS", создана пользователем KondraT, 22 янв 2006.

  1. KondraT

    KondraT Member

    Публикаций:
    0
    Регистрация:
    22 янв 2006
    Сообщения:
    175
    Такая вот проблемка: скачал архив ufmod.zip и пробовал скомпилить в MASMe пример, все скомпилировалось, но почему-то не проигрывается музыка. ufmodapi.inc и uFMOD.lib лежат в папках include и lib соответственно. Делаю это все в RadASMe и он, как известно, подсвечивает знакомые функции, а вот функцию uFMOD_PlaySong не подсвечивает. Подскажите, как это дело исправить
     
  2. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    не понял в чем проблема?

    не проигрывает или не подсвечивает?

    если первое то аттач сюда сорцы



    ЗЫ: RadASM фтопку, bat файлы рулят
     
  3. KondraT

    KondraT Member

    Публикаций:
    0
    Регистрация:
    22 янв 2006
    Сообщения:
    175
    Не понятно почему не проигрывает, пробовал и BAT файлом - тоже самое.

    [​IMG] _1627288614__Attach.rar
     
  4. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    изменил путь к либе на

    includelib ufmod.lib

    все компилится тем bat'ником что находится в архиве ufmod



    кстати, на сайте уже выложена новая версия

    http://www.wasm.ru/src/4/ufmod.zip
     
  5. KondraT

    KondraT Member

    Публикаций:
    0
    Регистрация:
    22 янв 2006
    Сообщения:
    175
    Путь к ufmod.lib я поменял сразу, но воспроизведения все равно нет. Exeшник в ufmod.rar запускается со звуком...
     
  6. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
  7. KondraT

    KondraT Member

    Публикаций:
    0
    Регистрация:
    22 янв 2006
    Сообщения:
    175
    XP, SP2. Пробовал и на 98SE.
     
  8. KondraT

    KondraT Member

    Публикаций:
    0
    Регистрация:
    22 янв 2006
    Сообщения:
    175
    XP, SP2. Пробовал и на 98SE.
     
  9. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    KondraT

    тот exe что я приаттачил играет у тебя?
     
  10. KondraT

    KondraT Member

    Публикаций:
    0
    Регистрация:
    22 янв 2006
    Сообщения:
    175
    Да, твой работает. Мне так кажется, что проблема в uFMOD.lib тк RadASM не определяет, не подсвечивает uFMOD_PlaySong как функцию. Но у других, у тебя, звук есть, ниче не пойму...
     
  11. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    подсветка в радасме никак не зависит от играет не играет

    и от качества либы :derisive:

    RadASM подсвечивает только известные ему функции, которые

    содержаться в файлах с расширением .api в каталоге радасма,

    например masmApiCall.api, если дописать туда функции то

    они также будут подсвечиваться



    что до того что у тебя не играет то придется тебе разбираться,

    т.к. я компилил с той либой и файлами что ты положил в аттач, все нормально играет
     
  12. KondraT

    KondraT Member

    Публикаций:
    0
    Регистрация:
    22 янв 2006
    Сообщения:
    175
    Я думал, что RadASM смотрит функции в LIB файлах, и если такая есть, то ее подсвечивает, а, оказывается, в файле masmApiCall.api - теперь буду знать :). Мда, со звуком прийдется самому разбираться
     
  13. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    KondraT



    Приаттачте сюда, либо мне на мыло (оно указано в readme.rtf) полностью исходник и экзешник.
     
  14. KondraT

    KondraT Member

    Публикаций:
    0
    Регистрация:
    22 янв 2006
    Сообщения:
    175
  15. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Теперь ясно, проблема в том что ты используешь стандартные

    инклуды masm'а и вызов системных функций происходит через jmp

    и соответсвенно вызов выглядит так
    Код (Text):
    1. .text:00401023 E8 96 05 00 00    call MessageBoxA


    мы используем другие инклуды сделанные с помощью утилиты L2EXTIA.EXE, которая находится \masm32\tools\L2EXTIA\

    и у нас вызов функции в дизассемблере выглядит так
    Код (Text):
    1. .text:004010C3 FF 15 3C 10 40 00    call ds:MessageBoxA


    т.е. это прямой вызов функции без jmp

    он на байт длиннее

    поэтому при том методе что применяется в исходнике minimal,

    а именно код размещен внутри xm файла помещенного в исходник, это вызывает смещение байтов xm файла и порчу его при компиляции, т.е. нужно либо отказаться от помещения кода внутрь xm или сделать другие инклуды
     
  16. KondraT

    KondraT Member

    Публикаций:
    0
    Регистрация:
    22 янв 2006
    Сообщения:
    175
    Asterix, спасибо, что помог! Тут, я считаю, мне проще сделать себе другие инклуды, но как? Может есть архив где-то? Или объясни как с помощью L2EXTIA.EXE их сделать.
     
  17. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine


    Очень просто.



    В следующем релизе uFMOD мы обязательно учтём этот баг.
     
  18. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Asterix



    Либо воспользоваться директивой org, как показано в аттаче.

    [​IMG] _1289988676__minimal.zip
     
  19. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    угу, я тоже думал как бы так задать относительное положение участков xm но про org не придумал
     
  20. KondraT

    KondraT Member

    Публикаций:
    0
    Регистрация:
    22 янв 2006
    Сообщения:
    175
    Прочитал я статью, которая как раз по теме. Но как L2EXTIA.EXE использовать там не написано, вроде есть какой-то BAT файл MASM32EX, который делает инклуды. Все таки хочу переделать их чтобы не было джампов.

    2Quantum: работает ;)