|
|
|
Канал X-Tension/X-BTF: «Музыка на станции» |
|
|
027
1561 EGP
         Рейтинг канала: 3(31) Репутация: 362 Сообщения: 6892 Откуда: Волгоград Зарегистрирован: 06.07.2002
 |
|
Хотите слушать музыку, сидя внутри станции? Нет ничего проще.
1. Жмем эскейп, чтобы вылететь в космос.
2. Тут же давим на бэкспейс, чтобы остановиться внутри шлюза.
3. Связываемся со станцией и просимся назад.
Через несколько секунд станция нас заглатывает. Начинает звучать посадочная мелодия. Причем крутится по циклу.
Можно заменить файл 00014.dat на свою любимую .mp3
Тот же фокус работает и на ТЛ. Только там нестабильно, пролетит мимо пиратик, и музыка тут же меняется.
_________________ Писать надо жрабельно (с) |
|
|
Рыб
1242 EGP
     Рейтинг канала: 3(36) Репутация: 340 Сообщения: 7461
Зарегистрирован: 05.06.2001
 |
|
Ну, это из той же серии, как в бою получить небоевую мелодию ... после вылета мелодия начинает проигрываться секунд через 10, а потому если быстро пристыковаться обратно к станции, то таймер не сбрасывается и мелодия запускается как положено - через заданный промежуток времени ... если вылететь из станции и рядом есть пират или ксенон, то сразу же включится боевая мелодия, но секунд через 10 она по таймеру заменится на стандартную для этого сектора.
|
|
|
Флинт
675 EGP
 
Пират
 | Репутация: 154 Сообщения: 2596 Откуда: ЧЕЛЯБИНСК - кто не в курсе Зарегистрирован: 19.01.2004
 |
|
Цитата: |
через 10 она по таймеру заменится на стандартную для этого сектора.
|
ну и эту сменить на любимую *.mp3
_________________ АD Переполнен - Я вернулся ! |
|
|
MaxUpgrader
960 EGP
    Репутация: 173 Сообщения: 5585 Откуда: Челябинск Зарегистрирован: 05.11.2002
 |
|
1. Жмем Альт+Таб
2. Запускаем винамп с любимой музыкой.
3. Активируем Х-ти
4. Кнопочкой (не помню... где-то рядом с P) выключаем внутреннюю музыку.
|
|
|
Флинт
675 EGP
 
Пират
 | Репутация: 154 Сообщения: 2596 Откуда: ЧЕЛЯБИНСК - кто не в курсе Зарегистрирован: 19.01.2004
 |
|
Дык тогда - отключаем всю музыку в игре - а потом
Цитата: |
1. Жмем Альт+Таб
2. Запускаем винамп с любимой музыкой.
3. Активируем Х-ти
4. Кнопочкой (не помню... где-то рядом с P) выключаем внутреннюю музыку.
|
_________________ АD Переполнен - Я вернулся ! |
|
|
YogSagot
1175 EGP
  Рейтинг канала: 4(60) Репутация: 275 Сообщения: 2796 Откуда: Daugavpils, Latvija Зарегистрирован: 17.08.2003
 |
|
MaxUpgrader : |
1. Жмем Альт+Таб
2. Запускаем винамп с любимой музыкой.
3. Активируем Х-ти
4. Кнопочкой (не помню... где-то рядом с P) выключаем внутреннюю музыку.
|
Вообще когда у меня была Атлонка 900 мхз, такой фокусу меня не удавался. Винамп прыгал и дергался и слушать любимые мелодии не представлялось ни малейшей ыозможности.
Со Фрилансером катило, правда Фрил я удалил сразу после того, как поставил ХТ
|
|
|
027
1561 EGP
         Рейтинг канала: 3(31) Репутация: 362 Сообщения: 6892 Откуда: Волгоград Зарегистрирован: 06.07.2002
 |
|
Flint : |
Дык тогда - отключаем всю музыку в игре
|
И весь звук заодно.
_________________ Писать надо жрабельно (с) |
|
|
xmagnat
280 EGP
   Рейтинг канала: 5(106) Репутация: 54 Сообщения: 1244 Откуда: Екатеринбург Зарегистрирован: 06.12.2003
 |
|
Пробовал вставлять музыку на станции - получилось, только очень тихо играет и не более 11 секунд. И причем играет только несжатый звук. Странно все это.
_________________ Я вернулся ! |
|
|
Date Lejess
201 EGP
   Рейтинг канала: 3(30) Репутация: 40 Сообщения: 725
Зарегистрирован: 27.12.2003
 |
|
Действительно странно! Я думал, что .dat - это mp3 Почему тогда только несжатый звук играется?
_________________ Материалист высоких материй |
|
|
CheckerTwo
550 EGP
     Рейтинг канала: 4(90) Репутация: 103 Сообщения: 412 Откуда: Tomsk Зарегистрирован: 18.08.2004
 |
|
xmagnat : |
Пробовал вставлять музыку на станции - получилось, только очень тихо играет и не более 11 секунд. И причем играет только несжатый звук.
|
При посадке на станцию игруха принудительно завершает проигрывание всех mp3-треков и запускает процедуру LoopFactoryAmbientSound, в которой (для каждой станции свой) запускается сэмпл и принудительно устанавливается громкость.
|
|
|
xmagnat
280 EGP
   Рейтинг канала: 5(106) Репутация: 54 Сообщения: 1244 Откуда: Екатеринбург Зарегистрирован: 06.12.2003
 |
|
Формат вообще может быть любой ( главное, чтоб был установлен в системе нужный кодек ). Есть исключения - файл озвучки например. Формат у него тоже любой, но частота дискредитации либо 44100, либо 22050. Битрейд - постоянный. Стерео либо моно - неважно. Но с LoopFactoryAmbientSound все очень странно: только WaV и не более 11 сек, причем , если заменить своим звуком ( 11 сек.), то играет очень тихо - еле слышно. Если же звук более 11 сек. - то играет не более этого времени, потом заново. Кстати, при вылете со станции секторная мелодия звучит спустя 11 сек. промежуток.
Насчет громкости - в данном случае, громкось регулируется в меню звук ( там три ползунка ), но все равно звук тихий.
Спрашивается - зачем нужно было городить такой огород ?
_________________ Я вернулся ! |
|
|
CheckerTwo
550 EGP
     Рейтинг канала: 4(90) Репутация: 103 Сообщения: 412 Откуда: Tomsk Зарегистрирован: 18.08.2004
 |
|
xmagnat : |
Спрашивается - зачем нужно было городить такой огород ?
|
Так на станции только шумы работы механизмов, вот егософты и решили - музыку отрубить, а шумы заглушить, чтоб борт-компутер слышно было, какой товар и для чего. Ну и сэмплы шумов - зачем их длинные делать... размер увеличивать...
|
|
|
xmagnat
280 EGP
   Рейтинг канала: 5(106) Репутация: 54 Сообщения: 1244 Откуда: Екатеринбург Зарегистрирован: 06.12.2003
 |
|
Цитата: |
Так на станции только шумы работы механизмов
|
...От которых, со временем, голова болеть начинает. Все-таки нейтральный трек лучше. Надо будет попытаться снять ограничение на длину трека.
_________________ Я вернулся ! |
|
|
CheckerTwo
550 EGP
     Рейтинг канала: 4(90) Репутация: 103 Сообщения: 412 Откуда: Tomsk Зарегистрирован: 18.08.2004
 |
|
xmagnat : |
От которых, со временем, голова болеть начинает
|
Ну, хорошо. Давай выключим станционные сэмплы...
Вытягивай у меня с сайта программки:
ассемблер : xa_asm, дизассемблер : dobj, генератор pch : gpth и приступим.
1. Для тестирования нужно сохраниться в космосе или начать игру сначала (но не обязательно).
2. Создаем где-нибудь временную папку для нашей работы. Туда копируем все три программы (exe-файлы) и соответствующие им ini-файлы.
3. Берем из папки XT\L\ файл 001.obj и кидаем в ту же папку. Можно уже правленный, хоть вручную, хоть редактором карты.
4. Сначалу дизассемблируем 001.obj, для того чтобы точно найти адреса процедур TX_AUDIO.DeactivateFactoryAmbientSound и TX_AUDIO.ActivateFactoryAmbientSound. Первая из них отключает амбиент звуки, вторая - включает, прерывая музыкальный трек.
В выходном файле дизассемблера находим эти процедуры. Нам нужно исправить эти процедуры так, чтоб они не влияли ни на что. Поэтому просто после команды setmem нужно будет вставить две команды - push 0 и ret. Команду setmem, которая устанавливает размер локального стека функции, трогать нельзя! Первая команда push будет заносить в стек результат, возвращаемый функцией. В Х-ах все функции возвращают в стеке число, даже если оно никому не нужно.
3. Так вот в любом текстовом редакторе набираем такой файлик (или копируем отсюда):
Код: |
.title no ambient sound
.ident XT
.radix 16d
.loadobj "001.obj"
;
; Объявляем абсолютную программную секцию - т.е. код, который мы вставим
; будет затирать код из 001.obj, а не добавлять в конец!
;
.section code, abs
; | TX_AUDIO.DeactivateFactoryAmbientSound:
;0002B1E0: 0055 0001 | 0000 setmem 1
;0002B1E4: 0001 FFFF | 0000 push 0FFFFh ; -1d
; Вот этот push 0ffffh мы затрем и нашими командами
; Устанавливаем счетчик команд на адрес испраляемой команды
$ = 0002B1E4h
push 0h ; результат функции
ret ; выход из функции
;
; Теперь вторую функцию правим
; | TX_AUDIO.ActivateFactoryAmbientSound:
;0002B1F2: 0055 0005 | 0000 setmem 5
;0002B1F6: 0009 | 0000 push 0
$ = 0002B1F6h
push 0h ; результат функции
ret ; выход из функции
;
; Смена муз трека при заходе на посадку - правим в TCLIENT.DockingAllowed
;000DFCB2: 000A | 0001 push 1
;000DFCB4: 005A 00002B47 | 0002 callasm SA_SetPlayerLand ; 00002B47
;000DFCBA: 002C | 0001 pop
$ = 000DFCBAh
jump L000DFCCC
; вставляем переход, чтоб музыкальный трек не прерывался
;000DFCBC: 0017 | 0000 push 0Eh ; 14d
;000DFCBE: 000A | 0001 push 1
;000DFCC0: 000A | 0002 push 1
;000DFCC2: 0059 00015B73 00000209 | 0003 call59 TX_AUDIO.ChangeTrackMusic ;
;000DFCCC: 002C | 0001 pop
$ = 000DFCCCh
L000DFCCC:
;
; Все!
;
.end
|
Обзываем его, ну скажем "nosnd.asm".
4. Берем ассемблер и транслируем нашу программку. Получаем файл nosnd.cod - это наша программа оттранслированная и слинкованная с файлом 001.obj. Если ошибок не наделали, конечно.
5. Но это еще не все. После нашего патча файл pch не будет соответствовать obj файлу, поэтому мы должны на файл nosnd.cod натравить генератор pct-файла - программу gpth.exe. В результате получим два файла "nosndfix.obj" и "nosndfix.pch".
6. Копируем их в папку XT\L\ и переименовываем соответственно в 001.obj и 001.pch.
7. Пробуем взлететь и сесть на станцию. Музыкальный трек не должен прерываться...
Вуаля...
EDIT : Так как был с докинг-компутером и уже давно, совсем забыл, что при положительном ответе станции музыка меняется на посадочную.
PS: Муз трек меняется еще при строительстве станции, но это происходит нечасто, так я менять это место не стал...
|
|
|
CheckerTwo
550 EGP
     Рейтинг канала: 4(90) Репутация: 103 Сообщения: 412 Откуда: Tomsk Зарегистрирован: 18.08.2004
 |
|
Дополнил предыдущий пост немного.
В ХТ всего 2 трека с комбат музыкой (30-31). Можно в принципе и их отрубить, если есть желание. Что скажите. Ну или расширить диапазон. Комбат музыка выбирается датчиком случайных чисел. Секторная - прописана в карте сектора.
|
|
|
xmagnat
280 EGP
   Рейтинг канала: 5(106) Репутация: 54 Сообщения: 1244 Откуда: Екатеринбург Зарегистрирован: 06.12.2003
 |
|
Посмотрел процедуру ActivateFactoryAmbientSound - нашел инфу о номерах проигрываемых треках. Кстати, поставил свою музыку на станцию - играет полностью, только тихо, приходится выкручивать регулятор громкости на полную. Похоже, уровень громкости был выставлен искусственно. Но вот где конкретно это прописано ?
Цитата: |
В ХТ всего 2 трека с комбат музыкой (30-31). Можно в принципе и их отрубить, если есть желание. Что скажите. Ну или расширить диапазон.
|
Лучше диапазон расширить.
_________________ Я вернулся ! |
|
|
CheckerTwo
550 EGP
     Рейтинг канала: 4(90) Репутация: 103 Сообщения: 412 Откуда: Tomsk Зарегистрирован: 18.08.2004
 |
|
xmagnat : |
Посмотрел процедуру ActivateFactoryAmbientSound - нашел инфу о номерах проигрываемых треках. Кстати, поставил свою музыку на станцию - играет полностью, только тихо, приходится выкручивать регулятор громкости на полную. Похоже, уровень громкости был выставлен искусственно. Но вот где конкретно это прописано ?
|
Скорее всего за громкость отвечает число, которое сидит в переменной FacAmbient_Vol. Посмотри процедуру LoopFactoryAmbientSound, она как раз и занимается озвучиванием и крутит кромкость.
xmagnat : |
Лучше диапазон расширить.
|
Угу. Ладно. Давай увеличим число проигрываемых треков для комбат музыки. Пусть, к примеру, боевая музыка у нас будет записана начиная с 00050.dat и всего имеется 10 разных треков. Смена треков происходит в функции TCLIENT.NotifyAlert.
Вот этот вот кусочек кода, в котором выбирается один из двух
00030.dat 00031.dat мы и должны исправить:
Код: |
;000E004E: 0027 | 0000 push 30d ; начальный номер файла с музыкой
;000E0050: 000B | 0001 push 2 ; общее число разных файлов
;000E0052: 000A | 0002 push 1 ; число аргументов у функции P_Random
;000E0054: 005A 000000F5 | 0003 callasm P_Random ; 000000F5
;000E005A: 003E | 0002 add SP[0],SP[1] ; складываем 30 и случайное число, для того чтобы получить номер музтрека
|
Так, теперь набираем в текстовом редакторе такой вот файл:
Код: |
.title combat music
.ident XT
.radix 16d
.loadobj "001.obj"
.section code, abs
; | TCLIENT.NotifyAlert:
;000E001E: 0055 0004 | 0000 setmem 4
; ........
;000E0030: 0005 0004 | 0000 L000E0030: push SP[3] ; arg1
;000E0034: 0033 00070035 | 0001 if SP[0]=0 then jump L000E0072
;000E003A: 0006 0017 | 0000 read TCLIENT.cl_Alert ; [17h ; 23d]
;000E003E: 0051 | 0001 if SP[0]=0 then push 1 else push 0
;000E0040: 0033 00070032 | 0001 if SP[0]=0 then jump L000E006C
;000E0046: 000A | 0000 push 1
;000E0048: 002B 0017 | 0001 write TCLIENT.cl_Alert ; [17h ; 23d]
;000E004C: 002C | 0001 pop
;000E004E: 0027 | 0000 push 1Eh ; 30d
;000E0050: 000B | 0001 push 2
;000E0052: 000A | 0002 push 1
;000E0054: 005A 000000F5 | 0003 callasm P_Random ; 000000F5
;000E005A: 003E | 0002 add SP[0],SP[1]
;000E005C: 000A | 0001 push 1
;000E005E: 000A | 0002 push 1
;000E0060: 0059 00015B73 00000209 | 0003 call59 TX_AUDIO.ChangeTrackMusic ;
;000E006A: 002C | 0001 pop
$ = 000E003Eh
if SP[0]<>0 then jump L000E006C
push 1
write TCLIENT.cl_Alert ; [17h ; 23d]
pop
push 50d ; первый комбат-музтрек
push 10d ; общее число треков, треки выбираются случайно
.if ($ <> 000E0052h)
; проверяем сделали ошибку или нет
; Если ошибки нет, то ассемблер не выдаст ошибку
.error "Error address!!"
.endif
$ = 000E006Ch
L000E006C:
.end
|
И сохраняем его в файле combat.asm
Запускаем ассемблер: xa_asm.exe combat.asm
В результате должны получить файл combat.cod, теперь нужно этот файл обработать программкой gpth.exe: gpth.exe combat.cod
Получили 2 файла combatfix.obj и combatfix.pch, которые кидаем в папочку XT\L\, и переименовывем в 001.obj и 001.pch соответственно.
Осталось добавить в папку XT\MOV\ десять mp3-файлов, обозванных 00050.dat - 00059.dat и можно запускать игру.
Edit: Исправил жуткий баг! Спасибо Shaddie.
|
|
|
xmagnat
280 EGP
   Рейтинг канала: 5(106) Репутация: 54 Сообщения: 1244 Откуда: Екатеринбург Зарегистрирован: 06.12.2003
 |
|
Цитата: |
Посмотри процедуру LoopFactoryAmbientSound, она как раз и занимается озвучиванием и крутит кромкость.
|
Посмотрел - в итоге удалось выправить громкость. А вот длина проигрываемого трека напрямую зависит от размера проигрываемого файла. Почему ? Сейчас сделал длину на 55 сек. Но пришлось обрезать частоты выше 4 000 кГц.
_________________ Я вернулся ! |
|
|
CheckerTwo
550 EGP
     Рейтинг канала: 4(90) Репутация: 103 Сообщения: 412 Откуда: Tomsk Зарегистрирован: 18.08.2004
 |
|
xmagnat : |
Посмотрел - в итоге удалось выправить громкость. А вот длина проигрываемого трека напрямую зависит от размера проигрываемого файла. Почему ? Сейчас сделал длину на 55 сек. Но пришлось обрезать частоты выше 4 000 кГц.
|
Упс. А я думал, что нужно просто, чтоб на станциях звучала секторная музыка и все. Т.е. ты хочешь, что бы музыка все-таки была другая, но бралась из mp3-файлов, не сэмплы? Так?
|
|
|
xmagnat
280 EGP
   Рейтинг канала: 5(106) Репутация: 54 Сообщения: 1244 Откуда: Екатеринбург Зарегистрирован: 06.12.2003
 |
|
Цитата: |
ты хочешь, что бы музыка все-таки была другая, но бралась из mp3-файлов, не сэмплы? Так?
|
Верно !
_________________ Я вернулся ! |
|
|
|
|
|
Канал X-Tension/X-BTF: «Музыка на станции» |
|