Skip to content

Illusion City

MSX turbo R (AY-3-8910, YM2413)

Moderator: Staff

  • User avatar
  • ValleyBell Offline
  • Posts: 4768
  • Joined: 2011-12-01, 20:20:07
  • Location: Germany

Illusion City

Post by ValleyBell »

TitleIllusion City
ComposerYukiharu Urita, Tadahiro Nitta, Yasufumi Fukuda
SystemMSX turbo R
Sound ChipsMSX-MUSIC (YM2413), PSG (AY-3-8910)
Tracks40
Playing time1:40:05
Pack authorsdsnatcher73
Pack version1.22
Last Update2021-04-25


Pack author's comment
My first pack! Because I so much love this game's music and wanted it as VGM's to play everywhere...

Please forgive me if it is not perfect (help me making it better). Something that could be improved (but I did not know how) is track30. vgmlpfnd could not find a loop in the track. Probably because the game code uses some randomness to play the music. I cut off the track at about the same time as the OST does. A fade out at the end would be nice to make the end less abrupt.
Last edited by sdsnatcher73 on 2019-03-12, 18:46:36, edited 1 time in total.

Post by sdsnatcher73 »

Manually trimmed too long tracks.
Attachments
Illusion_City_(MSX_turbo_R).zip
(795.99 KiB) Downloaded 233 times
  • User avatar
  • grauw Offline
  • Posts: 150
  • Joined: 2015-02-22, 3:40:22

Post by grauw »

Hey, very awesome!

Here’s a list of tracks from the soundtrack: https://vgmdb.net/album/9647
And this Youtube video has a list of tracks as well: https://youtu.be/tR63v5-8BMo
You could use that to cross reference the titles and tweak them if you feel it’s needed.

Also, are you missing a few tracks? Victory 2, Ending and that Unused track in the Youtube video?

In track 02, the loop point is off, there’s a skip audible at the repeat point.

Ditto for track 10.

The loop point for track 30 is also not quite right yet. If you listen to the noise sound at around 03.00, it’s got a slow attack and decay, whereas when it loops it has a fast attack. I can understand this one being a bit nightmarish to loop though :D. You may find it easier to find the distance between two more easily audible reference points, maybe the one around 13.50.

I checked carefully and didn’t hear any looping problems in the other ones.

If you attach the original logs of those three tracks I could give a shot at looping them as well. I have some time tomorrow evening, but next week I’m away on a trip.

Post by sdsnatcher73 »

Yeah I noticed the gap on track 2 as well (after listening to it on something other than my macbook speakers).

Track 10 and 30 are really odd tracks and I was not able to find a good loop point. So if you could try I'd appreciate it a lot!

The issue with the 'missing' tracks is the following. I used the ripped MCM's from Manuel Pazos' site (http://msxcartridgeshop.com/VientoSur/) and MCDRV.COM to play them back. Those tracks that are in the original OST and the remastered OST don't exist in the pack of Manuel nor in the BGM replayer in the game. I am not sure they even ended up on the actual disks. I'll see if I can find how MCM data looks like and check if there is somewhere on the disks some more data of those tracks, but my guess is Manuel did already do that.

I've attached new logs of tracks 02, 10 and 30. I will work on the other Micro Cabin games (in the same manner) once this pack is finished.
Attachments
raw_logs.zip
(905.94 KiB) Downloaded 240 times

Post by sdsnatcher73 »

I think this time track 2 is good!
Attachments
02 Illusion Theme A.vgz
(31.89 KiB) Downloaded 232 times

Post by sdsnatcher73 »

2 new tries at track 10 and 30
Attachments
10 Network Image.vgz
(25.5 KiB) Downloaded 244 times
30 Nightmare.vgz
(4.52 KiB) Downloaded 232 times
  • User avatar
  • grauw Offline
  • Posts: 150
  • Joined: 2015-02-22, 3:40:22

Post by grauw »

sdsnatcher73 wrote:The issue with the 'missing' tracks is the following. I used the ripped MCM's from Manuel Pazos' site (http://msxcartridgeshop.com/VientoSur/) and MCDRV.COM to play them back. Those tracks that are in the original OST and the remastered OST don't exist in the pack of Manuel nor in the BGM replayer in the game. I am not sure they even ended up on the actual disks. I'll see if I can find how MCM data looks like and check if there is somewhere on the disks some more data of those tracks, but my guess is Manuel did already do that.
Ah, I see. Yeah, searching the disk images for the missing tracks sounds like a good idea. They should be there, you should be able to find them. Alternatively, you could check the KSS file.
sdsnatcher73 wrote:I will work on the other Micro Cabin games (in the same manner) once this pack is finished.
Be careful using MCDRV for games other than Illusion City (from which the driver was ripped); e.g. I’ve noticed that when playing the Xak music on MCDRV there is a speed difference compared to the original. You can compare it with the Xak VGM pack which I logged from the game itself. Logging from KSS files may be a safer option.
sdsnatcher73 wrote:I think this time track 2 is good!
Hmm, nope, the “swirl” starts and then restarts after the loop. That doesn’t happen in the raw (or the first time around). I checked more thoroughly, the reason is that the drum track (with the “swirl”) is a short continuous repeating loop (~3.6s), and not an exact multiple of the main melody loop (60.1s), so they run out of sync. Unfortunately, they only sync up again after the melody has looped 5 times (300.4s), when vgmlpfnd finds it.

So the working trim points are:

Loop: 1412409
End: 17308877

I suggest you take that long loop, and use a VGM Loop Modifier (0x7F) setting of 1/4, which you can set with vgm_ptch. Since it’s the main theme that’s liked by many, I guess people won’t mind if it loops a few times too many. And a good reason for me to add support for loop modifiers in VGMPlay MSX.

Alternatively, could find a loop point in between two swirls and space em a little further apart towards the end of the loop, so that it doesn’t exactly match the original, having a slightly longer pause in between, but at least doesn’t audibly repeat it.
sdsnatcher73 wrote:2 new tries at track 10
Mmh, I still hear a small hiccup in track 10. Seems to be a similar case to track 02, where they take 206s to sync up again. Vgmlpfnd finds:

Loop: 29249
End: 9113051

Suggest to take the same approach with loop modifier as track 02.
sdsnatcher73 wrote:and 30
As for track 30… doesn’t seem like there is a proper loop, but listening to the raw, the melody only plays once, in the first 60 seconds orso. The last loop in your capture still plays a part of the ending of the melody, so the loop point is a bit too soon.

The part that plays after the melody seems difficult to loop, muting different channels it sounds like there’s four sequences of different length playing (the whirr, the sweeping noise, the ticks, and a very soft swirl), and they don’t converge, so looping there in some place that isn’t too obvious is probably the best we can do.

Here’s some repeat points for the ticks: 2429385 (00:55.09), 2694323 (01:01.10), 2959267 (01:07.10), 3224205 (01:13.11), 3489140 (01:19.12)
And here’s the first couple of repeat points for the noise sweep: 2385203 (00:54.09), 2951883 (01:06.94), 3518563 (01:19.79)

As you can see two tick loops are pretty close in duration to one noise sweep loop, and the noise sweep has a short silence after it, so I was able to find the following good 12-second loop:

Loop: 2385203
End: 2915085

Captures two rhythm and one noise sweep loops (short silence between noise sweeps is slightly reduced), has a soft swirl in it, and the whirr actually just seems to run continuously by itself so doesn’t need any attention. I think this one’s pretty much perfect :).

Post by sdsnatcher73 »

Okay, I followed your loop settings and also went through a zillion copies of all the songs spread over the 8 disks and actually found the ending and 2 unused tracks (but not Victory 2).
Attachments
Illusion_City_(MSX_turbo_R).zip
(943.59 KiB) Downloaded 248 times
  • User avatar
  • grauw Offline
  • Posts: 150
  • Joined: 2015-02-22, 3:40:22

Post by grauw »

Nice find, a 2nd unused track! :D Though it sounds similar to the first, did you hear any difference?

Now where would Victory 2 be… How did you manage to recognise the tracks on the disks?

Post by sdsnatcher73 »

It was a long day yesterday, I think I took the wrong file or I just heard too many songs...

All tracks start with 0C00 and are always in 512 bytes multiples and use 00's at the end to fill up. There were actually some variationsof the same track in the different disks (but they sounded very similar). I guess version control systems in those days might not have been in use all that much which may have led to some disks getting older versions of the same songs. There was also a rough version of Illusion Theme A in there. I saw some PC9801 references and even what looked like an executavle (RCP I think it was). From the Pixelated Audio I got the impression the PC9801 version was developed later on but finding these references on the disk (disk1) must mean they were working on them side by side (and MSX version came out better at least in the sound department)....
  • User avatar
  • grauw Offline
  • Posts: 150
  • Joined: 2015-02-22, 3:40:22

Post by grauw »

I spent some more time looking at track 02, because the 100% accurate loop does turn out to be really quite a bit on the long side with its 6+ minutes.

I started by dividing the total loop time by 5 and offsetting the end from the loop start by that, I got a good loop on the melody but again it had that skip in the “swirl” (it’s using the snare drum btw) that you’ve encountered as well. It is continuous too, so there’s not really silence that I can take advantage of. However as it decreases in volume the tail of the effect is nearly inaudible among the rest of the music.

Looking at the vgm2txt I found a good place to loop, moving the skip to the tail of the swirl (effectively extending it by 2s) where it’s hard to notice unless you would really pay attention to the timing of it, since it’s already drifting across the beat. With this the song length becomes 01:46.14 and the loop length 1:12.09 which is exactly one full proper loop without repetitions inside it. More reasonable I think!

Loop: 1501459
End: 4680752

With this there’s no need for the loop modifier anymore.

I’ll check if I can figure out something similar for track 10 next.
  • User avatar
  • grauw Offline
  • Posts: 150
  • Joined: 2015-02-22, 3:40:22

Post by grauw »

Okay track 10 is really tricky because the out of sync loop is that wandering PSG tone arpeggio which is very audible continuously. But I found the following loop point that I think sounds pretty nice:

Loop: 1826359
End: 3643413

Because the part prior to the loop contains one extra cycle, if you want to be perfectionistic you could vgm_ptch -SetLoopBase:1, this tells VGMPlay to reduce the nr. of played loops by one to compensate for the extra cycle.

p.s. Don’t forget to update the m3u :).

Post by sdsnatcher73 »

Okay, will do those loops later. This is surely a complicated soundtrack (I do love a challenge though and very much appreciate your help and expertise).

I now took a more programmatic approach to extracting the MCM's from the disks (because I couldn't let go of Victory 2 or that second unused track).

This is the code I wrote to extract them from the 8 disks (C#):

Code: Select all

using System;
using System.IO;

namespace FindMCM
{
    class FindMCM
    {
        static void Main(string[] args)
        {

            byte[] buffer = null;
            for (int inputCount = 1; inputCount <= 8; inputCount++)
            {
                string inputFileName = inputCount.ToString() + ".DSK";
                int bufferPosition = 0, outputCount = 1;
                using (BinaryReader binaryReader = new BinaryReader(File.OpenRead(inputFileName)))
                {
                    long bufferSize = new FileInfo(inputFileName).Length;
                    buffer = binaryReader.ReadBytes((int)bufferSize);
                    for (bufferPosition = 0; bufferPosition < bufferSize; bufferPosition++)
                    {
                        if (buffer[bufferPosition] == 0x0C && buffer[bufferPosition + 1] == 0x00)
                        {
                            ;
                            int foundLength = 0;
                            for (int testLength = 512; testLength <= 4096 && foundLength == 0; testLength += 512)
                            {
                                if (buffer[bufferPosition + testLength - 1] == 0x00 &&
                                      buffer[bufferPosition + testLength - 2] == 0x00 &&
                                      buffer[bufferPosition + testLength - 3] == 0x00 &&
                                      buffer[bufferPosition + testLength - 4] == 0x00 &&
                                      buffer[bufferPosition + testLength - 5] == 0x00 &&
                                      buffer[bufferPosition + testLength - 6] == 0x00 &&
                                      buffer[bufferPosition + testLength - 7] == 0x00 &&
                                      buffer[bufferPosition + testLength - 8] == 0x00)
                                {
                                    foundLength = testLength;
                                }
                            }
                            if (foundLength != 0 && (buffer[bufferPosition + foundLength] == 0x0c || buffer[bufferPosition + foundLength] == 0xFE))
                            {
                                string outputFileName = Path.GetFileNameWithoutExtension(inputFileName) + "-" + outputCount++.ToString("D3") + ".MCM";
                                Console.WriteLine("File: " + outputFileName + "\tPosition: " + bufferPosition.ToString() + "\tLength: " + foundLength.ToString() + "\tNext Byte: " + buffer[bufferPosition + foundLength].ToString("x"));
                                using (BinaryWriter binaryWriter = new BinaryWriter(File.OpenWrite(outputFileName)))
                                {
                                    binaryWriter.Write(buffer, bufferPosition, foundLength);
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
This resulted in 212 MCM files. I renamed all the MCM's from Manuels pack in the same manner as the vgz's:

Code: Select all

01 Illusion Theme B.mcm
02 Illusion Theme A.mcm
03 Home.mcm
04 Old Master's House.mcm
05 Crisis Area.mcm
06 Indoor Combat.mcm
07 Hazard Area.mcm
08 Shao Mei.mcm
09 Metal Area.mcm
10 Network Image.mcm
11 Requiem.mcm
12 Crisis.mcm
13 Victory.mcm
14 Magic Day.mcm
15 Fetal Movement.mcm
16 Illusion Castle.mcm
17 Rumbling of the City.mcm
18 Dancing.mcm
19 VIP Room.mcm
20 Shop.mcm
21 Ceremony.mcm
22 In Captivity.mcm
23 Lovers.mcm
24 Water Pipe.mcm
25 Cavern (Labyrinth).mcm
26 Moon's Madness.mcm
27 Battle.mcm
28 Party of 8 Battle.mcm
29 Heavenly King Battle.mcm
30 Nightmare.mcm
31 Final Battle.mcm
Comparing the 212 extracted files (most of which are on disk 7, sometimes twice on that same disk) to the 31 original ones shows this result (using fdupes -1), sorted by track number:

Code: Select all

1-004.MCM 1-009.MCM 2-023.MCM 3-017.MCM 4-018.MCM 4-037.MCM 5-018.MCM 6-020.MCM 7-021.MCM 7-049.MCM 8-021.MCM     01\ Illusion\ Theme\ B.mcm 
1-008.MCM 7-048.MCM 8-020.MCM                                                                                     02\ Illusion\ Theme\ A.mcm 
7-033.MCM                                                                                                         03\ Home.mcm 
2-010.MCM 7-035.MCM                                                                                               04\ Old\ Master's\ House.mcm 
2-002.MCM 3-002.MCM 4-002.MCM 4-021.MCM 5-002.MCM 6-002.MCM 7-003.MCM 7-024.MCM 8-002.MCM                         05\ Crisis\ Area.mcm 
2-003.MCM 3-003.MCM 4-003.MCM 4-022.MCM 5-003.MCM 6-003.MCM 7-004.MCM 7-025.MCM 8-003.MCM                         06\ Indoor\ Combat.mcm 
4-004.MCM 4-023.MCM 7-026.MCM                                                                                     07\ Hazard\ Area.mcm 
1-001.MCM 1-006.MCM 2-009.MCM 3-006.MCM 4-007.MCM 4-026.MCM 5-007.MCM 6-008.MCM 7-010.MCM 7-034.MCM 8-008.MCM     08\ Shao\ Mei.mcm 
2-004.MCM 4-024.MCM 5-004.MCM 6-004.MCM 7-005.MCM 7-027.MCM 8-004.MCM                                             09\ Metal\ Area.mcm 
2-022.MCM 6-019.MCM 7-047.MCM 8-019.MCM                                                                           10\ Network\ Image.mcm 
2-021.MCM 3-016.MCM 4-017.MCM 4-036.MCM 5-017.MCM 6-018.MCM 7-020.MCM 8-018.MCM                                   11\ Requiem.mcm 
2-020.MCM 3-015.MCM 4-016.MCM 4-035.MCM 5-016.MCM 6-017.MCM 7-019.MCM 7-045.MCM 7-056.MCM 8-017.MCM 8-026.MCM     12\ Crisis.mcm 
1-002.MCM 1-007.MCM 2-015.MCM 3-010.MCM 4-011.MCM 4-030.MCM 5-011.MCM 6-012.MCM 7-014.MCM 7-040.MCM 8-012.MCM     13\ Victory.mcm 
2-018.MCM 3-013.MCM 4-014.MCM 4-033.MCM 5-014.MCM 6-015.MCM 7-017.MCM 7-043.MCM 8-015.MCM                         14\ Magic\ Day.mcm 
2-017.MCM 3-012.MCM 4-013.MCM 4-032.MCM 5-013.MCM 6-014.MCM 7-016.MCM 7-042.MCM 8-014.MCM                         15\ Fetal\ Movement.mcm 
2-016.MCM 3-011.MCM 4-012.MCM 4-031.MCM 5-012.MCM 6-013.MCM 7-015.MCM 7-041.MCM 8-013.MCM                         16\ Illusion\ Castle.mcm 
2-006.MCM 3-005.MCM 4-006.MCM 4-025.MCM 5-006.MCM 6-006.MCM 7-009.MCM 7-031.MCM 8-006.MCM                         17\ Rumbling\ of\ the\ City.mcm 
2-011.MCM 7-036.MCM                                                                                               18\ Dancing.mcm 
2-012.MCM 3-007.MCM 4-008.MCM 4-027.MCM 5-008.MCM 6-009.MCM 7-011.MCM 7-037.MCM 8-009.MCM                         19\ VIP\ Room.mcm 
2-001.MCM 3-001.MCM 4-001.MCM 4-020.MCM 5-001.MCM 6-001.MCM 7-002.MCM 7-023.MCM 8-001.MCM                         20\ Shop.mcm 
7-055.MCM 8-025.MCM                                                                                               21\ Ceremony.mcm 
2-014.MCM 3-009.MCM 4-010.MCM 4-029.MCM 5-010.MCM 6-011.MCM 7-013.MCM 7-039.MCM 8-011.MCM                         22\ In\ Captivity.mcm 
2-013.MCM 3-008.MCM 4-009.MCM 4-028.MCM 5-009.MCM 6-010.MCM 7-012.MCM 7-038.MCM 8-010.MCM                         23\ Lovers.mcm 
2-005.MCM 3-004.MCM 4-005.MCM 5-005.MCM 6-005.MCM 7-006.MCM 7-028.MCM 8-005.MCM                                   24\ Water\ Pipe.mcm 
7-008.MCM 7-030.MCM                                                                                               26\ Moon's\ Madness.mcm 
2-024.MCM 3-018.MCM 4-019.MCM 5-019.MCM 6-022.MCM 7-022.MCM 8-022.MCM                                             28\ Party\ of\ 8\ Battle.mcm 
7-053.MCM 8-023.MCM                                                                                               29\ Heavenly\ King\ Battle.mcm 
2-007.MCM 6-007.MCM 7-032.MCM 8-007.MCM                                                                           30\ Nightmare.mcm 
7-054.MCM 8-024.MCM                                                                                               31\ Final\ Battle.mcm 
7-007.MCM 7-029.MCM 
6-021.MCM 7-051.MCM 
4-038.MCM 7-052.MCM 
2-019.MCM 3-014.MCM 4-015.MCM 4-034.MCM 5-015.MCM 6-016.MCM 7-018.MCM 8-016.MCM 
1-005.MCM 7-050.MCM 
This shows that some of the tracks in the Manuel pack are not in my export (hmm did I make a mistake by only looking at where next byte was 0x0C or 0xFE?, I tested it by including all but still did not find those specific tracks from Manuel's zip, makes me wonder but continuing for now). Also some other duplicate new tracks were found (fdupes unfortunately can't list the non dupes but those were of course still there).

I then removed all the duplicates as well as all tracks in Manuel's pack that had duplicates (as they are probably OK). I will explore what is left now and report back tomorrow.

VB edit: added code blocks

Post by sdsnatcher73 »

So my findings, disk 7 seems to contain most MCM's and probably contains some hidden sound archive the developers put there.

1-003.MCM is an alternate version of track 02 Illusion Theme A which is 1-008.MCM, which one is actually used in the game is hard to hear for me. Will record VGM to compare.

1-005.MCM is the Ending track

2-008.MCM is an alternate version of track 03 Home, as this is on disk 2 and the one Manuel used s from disk 7, I will recreate the vgz from 2-008.MCM (allthough sounds very similar to my untrained ears). Should we include the alternates in the vgm pack?

2-019.MCM is the actual second unused track!

4-038 is an alternative version of track 28 Party of 8 Battle

6-021.MCM is the first unused track

7-007.MCM is an alternate version of track 25 Cavern (Labyrinth) of which the same version Manuel had is not on my diskset.

7-044.MCM is an alternate version of the second unused track...

7-046.MCM is an alternate version of track 11 Requiem...

Still no sign of Victory 2 unfortunately... Will record vgm's tomorrow.

Post by sdsnatcher73 »

So a new version which contains:
- The latest and greatest loop settings for track 2 and 10 by Grauw (thanks!)
- A Gong track played during the Opening when the Illusion City logo is displayed
- The new Home track taken from disk 2
- The actual Unused 2 track
- Alternate versions of some tracks (not sure if we should include these and if so the Illusion Theme A needs to be relooped in a manner similar to the other one)
Attachments
Illusion_City_(MSX_turbo_R).zip
(1004.32 KiB) Downloaded 250 times
Post Reply