Talk:SOUND

From UFOpaedia
Jump to navigation Jump to search

The files with the names of soundcards, adlib, roland and gm (general midi) store the respective Geoscape and Battlescape music sequences for their respective cards.

For those with plain soundblaster compatibles, adlib.cat was used. Those with Roland Gus's or general midi output devices, they used their respective files for the music sequences. They're stored in different files because the midi devices handle their data in different ways.

These files are only used by the Dos version - and perhaps are the reason why the music in the dos version, on certain soundcards, sound a lot better than the CE versions (though your mileage may vary). Speaking of which, these three files were replaced in the Collectors edition with midi files, one for each music sequence - this allows for a bit more freedom in modding as you can replace the midi files you don't like with other midi files.

The CE version of UFO leaves out intro.cat for some really odd reason, so your intro sequence has no sound effects. Worse still, it will not play intro.cat even if you copy it in.

I think there were a few 0-byte com files in here as well, but they did nothing and weren't used by the game.

- NKF


The .com files in my game are not empty, they probably do some low level sound card service, but on the other hand, in the main .bat file sound\sndstart and sound\sndend exe files are called. I looked into the them for strings they contain, and found names of other coms and exes in sound directory. I think sndstart/sndend is just a wrapper for a convenient use in .bat file.

The INTRO.CAT file was used only by old sound engine - DOS 1.4 uses (and CE should use) SAMPLE3.CAT. Erasing it makes CE crash with error:

Error Code 0
FILE: D:\SS\XCOM\UFO Defense\Stubs.c
LINE: 58

Cannot open file Sound/sample3.cat

I'm not sure which files 1.4 version uses for Roland support, because there are two files (one for intro music, one with rest of it) - this construction was used by 1.2 engine. There isn't one file with all the music in it.

- Quantifier

Garbled MIDI

A couple of the MIDI files seem to have screwed up instrument sounds when played on my computer -- I tried them on a friend's computer and had the same problems. The two major problems are the files for the intro music "GMINTRO1.MID" and particularly the BattleScape music "GMTACTIC.MID" -- I think there's supposed to be a low-pitch piano key (every now and then when I alt-tab out and back the sound works fine) but instead it just sort of sounds like a blown speaker. I was wondering if anyone else is having this sort of sound trouble and if there is a way of fixing it.


Modified sounds between 1.2 and 1.4

Anyone know exactly which sounds were modified between 1.2 and 1.4? Was it just the alien death screams? All of them, or only some? Phasma Felis 21:15, 6 June 2008 (PDT)

Music modding

Discussion moved from my userpage. It belongs more to this page. Seb76 03:31, 8 June 2008 (PDT)

Thanks for the userpage, Seb! :) I have a (probably very silly) project I could use some advice with.
I want to give the DOS version of X-COM the ability to play the excellent CD music from the PlayStation version. X-COM DOS plays its music through a TSR called MUSIC.COM in the SOUND subdirectory, which is loaded into memory when X-COM is started and then receives commands from it somehow. I've found a TSR CD player, Mercury Soft CD Player, that works in DOSBox and runs fine with X-COM, and if copied over SOUND.COM, X-COM will automatically start it and it responds to its hotkeys properly. I figure all that's left to do is disassemble SOUND.COM, figure out how it receives its signals, then disassemble MCD and modify it to respond to those same signals.
Of course, that's probably the hardest part :) It helps that both SOUND.COM and MCD.COM are less than 4K each, but my experience with assembler is very slim and many years out of date. You suggested using IDA in the Grenade discussion, so I'll be giving that a look. Any other suggestions or advice to get me started? Phasma Felis 20:46, 6 June 2008 (PDT)
The way it works in the CE version is still influenced by this. Only the mouse, video and sound code was wrapped with windows calls; the rest was left as-is. All the sound related operations are centralized in one procedure taking 3 arguments. The first that I dubbed 'opcode', and 2 others that are not used (but may be of use in the DOS version). I suspect that in DOS version these arguments are passed to the TSR by some way to trigger sound actions. Here are the details I know from the CE edition:
  • if the opcode is >0x7f (i.e. the most significant bit is set), then it is a music change request (translated into a 'play midi' sequence in the CE edition), else it is a digitized sound that will be played
  • the music sample number is extracted by removing the high bit (opcode-0x80)
  • cases 1,5 and 14-17 stop the music but don't start a new sequence
  • for other cases, it starts playing a midi file (and stops the current playing if any):
Sample idx Sound file
0 sound/gmgeo1.mid
2 sound/gminter.mid
3,4 sound/gmdefend.mid
6,7 sound/gmenbase.mid
8 sound/gmmars.mid
9,12 sound/gmstory.mid
10 sound/gmlose.mid
11 sound/gmwin.mid
13 sound/gmtactic.mid
18 sound/gmgeo2.mid
You need to get this sample idx and remap it to the PSX track you want to play. I don't know if you can map all PSX tracks.
PS: What is the 'official' way of moving this to the talk page... Cut/Paste? Seb76 04:11, 7 June 2008 (PDT)
Edit: I could grab a DOS version of XCom and noticed there are no mid files in the first place so this won't be useful if you want to patch the DOS version. Seb76 11:53, 7 June 2008 (PDT)
Awesome! Thanks very much, I think this will help. The music in the DOS version is all stored in two files (ADLIB.CAT and GM.CAT), but I'll bet the indexes are the same. Most of the PSX tracks map well; there's a few oddities, and it has two extra Geoscape tracks and one extra Battlescape, but I'll probably just choose those randomly each time (I'm tentatively thinking that the two least-significant bits of the system clock should work, and hopefully be easier to implement than a proper RNG).
P.S. I think cut/paste should be fine for moving it to the Sound talk page (I think that's what you meant). Just be sure to give it an appropriate heading. :) Phasma Felis 19:51, 7 June 2008 (PDT)