|
| | There are 40 guests and 5 MSX friends online
You are an anonymous user.
|
| |
Author
| Musical Loader on msx
| MäSäXi msx addict Posts: 500 | Posted: July 25 2004, 08:58   | Is it possible to play music with msx during loading?
I asked this same question in msxgamesbox´s forum few years ago, and I didn´t got satisfied with answer that it is not possible..
you can make at least sound effect playing during loading cassette games, as Martech did it with "ZOIDS" and "Samantha Fox Strip poker", (same sound effect in both games) that threatening noise suited well on zoids, but was a bit odd effect for sam fox´s game, in my opinion.
when i was the kid I did same with BASIC, thought that effect stopped before my basic program was loaded, if the program was a bit longer. And in zoids, the effect played until game was fully loaded.
Those of you who have played only cassette games, may have loaded those NAMCOT games (published by Bug-Byte) like "Dig Dug" and "Rally X"
and "Warp Warp". And Firebird´s "Elite" space trading game had same loader too. Loader in those games played odd sounding low noise which changed itself all the time.
As a matter of fact, the noise imitated exactly that BEEEEEP-BEEE-DIDLEY-DIDLEY-DIDLEY -BEEDIP-BEEDIP-BEEEEEEEEEEEEEEEEEEEEEEEEEE -DIP-DIP-DIP-DIP-DIP-DIP-BEEEEEEEEEEEEEEE............ (etc) and that noise is of course the noise you can hear if you play the tape on comp´s recorder without ear plug in it or play the tape on normal cassette player.
I guess that not everyone do know about this loader... disk drive users may not have loaded such cassette games.
So, because they did that loading noise in the 1980´s, I guess it could be possible to do at least somekind of loading "music" on msx. and I said "music" purposely.
Those of you who have those bug-byte cassette games or "elite"´s cassette version may load them again and start wondering my question!
| | mth msx freak Posts: 193 | Posted: July 25 2004, 10:46   | NOP's Unknown Reality plays some notes during loading from disk. It's not quite music, but it's more coherent than just separate sound effects.
The problem with music and loading is that data is coming in at a constant rate, so data loss occurs if data is not handled quick enough. In the case of disk loading, "not quick enough" is just a couple of instructions. Therefore interrupts are disabled during loading.
Any tone you start will continue during loading, depending on envelope of course. But it's very hard to start new tones at the right moments. One way of getting around this would be to load in small increments (for example, one track at a time) and inbetween those blocks change the tones. You'd have to compose the music especially for this situation, I think.
I once wrote a loading routine was hooked to the SampBox replayer. It would play an ADPCM sample and depending on the length of the sample it would load a couple of sectors. Then it would wait for the sample to finish, start the next and load some more. It took a very safe estimate for how much sectors could be loaded during a sample block, so it spent most of its time idle waiting for the sample to end. But since it played music and also showed some graphics, the user wasn't bored, so it didn't really matter that loading took longer than usual.
| | ro msx guru Posts: 2347 | Posted: July 25 2004, 14:13   | Like MTH said, a music replay routine will not last during loading (since ints are disabled on every disk action)
however you could play a ADPCM sample (through the famous Music Module for example) for they have their own engine onboard (you can even play a sample and reset your MSX !!)
also, in case of them old cassete games (I think), you can use PSG sfx which have enveloped (if necessary). Or on FM for that matter. Playing a note will do nice, but have it done on interrupt and playing a timed tune... thaz another thing.
hope you get your answer
(msx is not like amiga and atari. concering this case: unfortunally )
| | Sonic_aka_T
 msx guru Posts: 2269 | Posted: July 25 2004, 15:54   | Quote:
| Is it possible to play music with msx during loading? 
|
No, it is not possible.
Yes, it is _possible_.
In reality it's not, apart from the Music Module trick described before. You could do the same with a Moonsound I guess, even for longer loading times in that case. That plus the odd noise trick ofcourse.
However, I did see a routine made by Albert Huitsing that actually played music on the Music Module during loading. He did this by carefully timing each load operation with the playing of the notes. Ofcourse this only worked on his computer (an 8250 of all things!) and I think it used the FDC directly. It took advantage of the fact that no tune really plays a note every interrupt, but usually -especially a slow song- every say 15 interrupts.
But like I said, IIRC it only worked on the NMS8250 (well, maybe 8255 and 8280 too) and only on the Music Module. Needless to say that these kinds of tricks need to be custom made, and even the position of the file on disk is of importance. So it's hardly something you could include in a demo or game. Too bad indeed, I remember some Amiga demo's where to loading time was cooler than the actual demo itself  Ofcourse we all remember the amiga-color-cycle-thingy that the Fuzz first(?) brought to MSX with SCC Musixx.
But anyhow, like with most of his odd creations, Albert rarely made any of his stuff public. I heard from a number of MSX users there he once managed to play the melody of 'frere jacques' by moving the heads of the disk drive. Supposedly a true story, though I never saw it myself... I guess that's the best form of 'music while loading' yet! Ofcourse I doubt it actually loaded anything  | | ro msx guru Posts: 2347 | Posted: July 25 2004, 16:01   | funny you mentioned the color-cycle during loading on scc muzax.. it's de decompressor which spits out it's data to the background while decomping the actual data (GFX and Muzax) But that's not while loading, it's AFTER loading a piece of data. still funny though (we use the same gimmick in another demo again .. hmm, I think it was "math magicians" )
| | GuyveR800 msx guru Posts: 3048 | Posted: July 25 2004, 17:04   | The only problem is interrupts being disabled during loading from diskette or cassette.
Loading from harddisk (in most SCSI interfaces and Sunrise IDE interface) or compactflash is done with interrupts enabled, so music can be played without any problem. (in fact it should be possible to load DURING gameplay)
| | ro msx guru Posts: 2347 | Posted: July 25 2004, 18:19   | indeed, but it depends on the interface. But how about BDOS? didn't that dis. ints?? (I kinda forgot)
| | MäSäXi msx addict Posts: 500 | Posted: July 25 2004, 20:16   | first: can you please tell me what are ADPCM and FDC ?
second: I was thinking the same, that it must be possible to make a SLOW song, which plays only few notes. On cassette loader too, I hope.
In Mastertronic´s "Flash Gordon" cassette game there is loading picture, which slowly loads and comes visible in 8x8 pixel blocks, starting from upper left corner of the screen and running to the right end, then drops 8 pixels down and then starting again from the left side, etc.. until whole screen has filled.
I guess it could be possible to load game data and note data from cassette at same time? So that kind of loader could play slow song, but at least, then there IS loading music to prevent boredom !  | | Thom msx addict Posts: 378 | Posted: July 25 2004, 20:32   | Michel Shuqair achieved this feat back in 1992/93 on a Turbo R.
| | Sonic_aka_T
 msx guru Posts: 2269 | Posted: July 25 2004, 21:41   | Quote:
| first: can you please tell me what are ADPCM and FDC?
|
ADPCM is the sample technique used by the Philips Music Module to play its samples. Samples are stored in 4bit ADPCM to save space. As you may know the Music Module can play samples without further intervention by the CPU. Tell the MM to play a sample, and it'll do so... No further instructions are required. FDC is short for Floppy Disk Controller. That should be pretty much self-explanatory.
Quote:
| second: I was thinking the same, that it must be possible to make a SLOW song, which plays only few notes. On cassette loader too, I hope.
|
Yes, it _is_ possible, but it's by no means simple. If you don't know what a FDC is, there's little hope you would be able to do a trick like that without some serious studying first. On cassette though, I guess it's a whole different story. The only thing I know about cassettes is that they've got a very long black string inside which is very cool if you unwind it
Quote:
| In Mastertronic´s "Flash Gordon" cassette game there is loading picture, which slowly loads and comes visible in 8x8 pixel blocks, starting from upper left corner of the screen and running to the right end, then drops 8 pixels down and then starting again from the left side, etc.. until whole screen has filled.
|
Never seen it, sorry
Quote:
| I guess it could be possible to load game data and note data from cassette at same time? So that kind of loader could play slow song, but at least, then there IS loading music to prevent boredom ! 
|
You will probably want to read the code that plays the music first. Then that code can play the tune while you also load your data. But like I said, I don't know anything about cassettes. Never used them for data storage. | | MäSäXi msx addict Posts: 500 | Posted: July 27 2004, 11:53   | thanks for answers!
I am not going to code musical loader either for disk drive or cassette player because I don´t have such knowledge. I just liked to get answers is it possible to do?
And with this topic, it could be possible that someone gets interested to program cassette game loader which plays PSG music !
Guess what, Y - O - U can be THE FIRST one, who makes MSX playing psg tune while loading cassette program !!! What about that!?  | | enribar msx lover Posts: 125 | Posted: July 27 2004, 12:31   | Many years ago I bought a pirate cassette with the game "Samantha Fox SP" and during loading I heard a sound... It was not a song played by the PSG but more or less a noise... Could it be possible?
| | NYYRIKKI msx master Posts: 1528 | Posted: July 27 2004, 17:13   | But anything more complex is almost impossible.
With cassette it is a whole different story... Cassette interface is standard on every MSX,
so you can do pretty much anything you like to, but you have to be very carefull to get the
timing right. Unfortunately I don't know any good examples for MSX, but for example Ghost
busters on C64 allowed you to play Space Inviders during loading of the actual game. There
is no reason why this could not be done on MSX as well.
I think the reason, why MSX did not have this kind of loaders was, that routines on MSX BIOS
were too good and there was no need to rewrite them unlike in C64, where the original
cassette routines sucked a big time! (They were horribly slow and even very unreliable)
Here is a simple example, how to use cassettes in new way! This example is not a loader, but
it should be otherways funny
- Make following kind of loader routine on BASIC:
10 A$="F3160701A27F210000DBAAA05F3E0ED3A0ED78A0B3D3AA2B7CB520F51520F2C9"
20 FOR I=0 TO &H1F:POKE&HC000+I,VAL("&H"+MID$(A$,I*2+1,2)):NEXT
30 DEFUSR=&HC000
40 MOTOR ON:A=USR(0):MOTOR OFF
50 BLOAD"CAS:NEXT",R
- Now save this routine to cassette...
- Take cassette out and place it to your music recorder
- Adjust microphone input very much louder, than you normally do
- Press record and say something like "Now loading XYZ made by XXX... Please wait"
- Stop recorder and place your cassette back to MSX cassette drive.
- Now record the actual game (In this example "NEXT" )
When you load the game, you should hear the explanation (about 10sec) before the game loads. I didn't test this (as I use tR  ), so there might be some errors in the code, but I hope you got the idea...
Only problem after makeing your loader is, how to copy it to your friends, and how in earth you get anyone to load a game from cassette in 2004 :-9
| | cax
 msx master Posts: 1031 | Posted: July 27 2004, 17:38   | >how in earth you get anyone to load a game from cassette in 2004
Not a problem - but substitute casette with CD or PC soundcard output, and use a fast loader, like WAVeR or microWAVer
P.S. Using turbo loaders could make concurrent music playing hard to impossible...
(because when you load more data in the same timeframe you have less time for doing other things)
| | NYYRIKKI msx master Posts: 1528 | Posted: July 28 2004, 11:30   | Oops, I didn't post start of my message, so here it comes:
Yes, it is possible to make a musical loader... NOP has actually even made a program, that played a full screen movie with sounds during loading it from disk. See: ftp://ftp.funet.fi/pub/msx/demos/NOP/traxplayer-songs/ and ftp://ftp.funet.fi/pub/msx/demos/NOP/realmotion/
The problem is anyway, that you can not make diskloader so, that it would be done according to MSX standard. This means, that the loader will only work on some MSX models.
If you play by the rules, the options are as told in previous posts... If you want just something, you can make Zoids kind of effect even with BASIC like this:
10 SOUND 0,255:SOUND1,255
20 SOUND 12,15:SOUND13,14
30 SOUND 8,16
But anything more complex is almost impossible.
.
.
.
| |
| |
| |
| |