Ripping GOD HAND Music by Shin Star at 10:04 AM EDT on October 4, 2007
Okay since Capcom didn't include/make a "complete" OST for this (Only a "best of" "GOD TRACKS" came with the Japanese version of the game), I want to know if in_cube will someday be able to support this? I don't really know too much but I think I "found" an .asf file and extracted .adx files from that. And at one point somehow heard some playback with Winamp or MPC (don't remember, this was awhile ago :\) So I'm guessing it has to be in .adx format probably but that's all I know. So if anybody can figure it out, it would be great. The music is just too good to not pass up :(
by hcs at 2:54 PM EDT on October 4, 2007
So, you ripped ADXs and it worked? What's the question then? Your post was a little incoherent.
by Shin Star at 11:12 AM EDT on October 5, 2007
Well it didn't work, and I'm not even sure if it's even suppose to be in "adx" format. But I'm getting no sound or just static. One of the files worked in MPC and played the ending somehow but no sound. So I guess what I'm asking if compatibility for these "adx" files will work on the next release? Sorry if I'm not that clear still. I'm just not sure how to word it all since I'm not exactly familiar with all of this stuff. :\
by hcs at 12:20 PM EDT on October 5, 2007
Well, I can't do anything if I don't have the files to look at. There are a few variants of ADX around that I don't know how to handle yet, this could be one of them or something new, for all I can tell.
Did you extract them with adxtract or a proper ASF extractor? If you used adxtract it may have tried to pick things out of videos... Could you maybe put the AFS online somewhere? I could provide you with an FTP account to upload it to, or you could use one of the many file hosting sites, or your own host if you have one... many options.

edited 12:21 PM EDT October 5, 2007
by eightfold at 5:30 PM EDT on October 8, 2007
Hello, I'm trying to do same thing. I've tried used several programs to extract and play the files from the disc; ADXutil, AFS extract (then convert using adx2wav) and Cube MP just to name a few. I've also tried using PSound to play the files and the results are the same: Just a bunch of static.

However, if I listen carefully enough I can barely hear the actual music under all of the static. So yeah, it seems none of them can properly decode it. Using PSound to play/extract the file seems to get the least amount of static, but it's still pretty bad.

When I try them through Winamp with in_cube all I hear are a bunch of tones, and the length of the file is displayed as 83:25.

Here's one of the ADX files that I ripped using AFS Extract 7.1.3 Beta 5:
http://www.megaupload.com/?d=VY2F4R68

It'd be awesome if you can get this figured out as I haven't been able to find any methods of properly getting the music out from this game.

edited 5:33 PM EDT October 8, 2007
by hcs at 7:53 PM EDT on October 8, 2007
Interesting... I have seen this variant of ADX before, though I don't recall which game. I wasn't able to figure it out then, but I think I'll give it another try, thanks for putting it up.

in_cube only plays it because it falls back on DSP playback when it can't recognize a file in other formats, and this happens to look like a 48KHz DSP file with that reading, though really long.

[edit]
here's what I was thinking of when I said I'd seen this before. It is actually a different header than shown there, though, so it may be something else yet again. It seems to have the same properties as the files discussed there, though.

edited 9:20 PM EDT October 8, 2007
by eightfold at 10:21 PM EDT on October 8, 2007
Ah, very interesting. If I'm not mistaken, Okami and Killer7 were both developed by the same team that did God Hand, so it's probably no coincidence that they have the same properties.

Thanks for the update. I really wish I could help out, but I have very limited experience in programming.
by hcs at 1:25 AM EDT on October 9, 2007
Wasn't all the same team, Clover Studio did both Okami and God Hand (as well as the Viewtiful Joes) but Killer7 was Grasshopper Manufacture and Capcom. Both very closely associated with Capcom, though.
There are other games listed in that other thread that aren't related to Capcom, though.

edited 1:30 AM EDT October 9, 2007
by hcs at 3:39 AM EDT on October 9, 2007
Well, I haven't come up with anything yet. The scale values are randomly distributed, which suggests that they aren't scale values at all. There are some mysterious values in the header that I can't pin a meaning on...
Could you possibly upload some more examples for my pattern recognition to chew on?

edited 3:40 AM EDT October 9, 2007

It's looking like a simple encryption is used. I think I can tell how it works, but breaking it could prove difficult, especially if every file has its own key. More samples will help in this regard.

edited 11:25 AM EDT October 9, 2007

I've looked over the encryption that CRI provides in their ADX decoder, and I've tried the whole keyspace on this file, but with no success. It is possible that I misunderstand, but I think it is a different encryption (but probably still encryption, given the random scattering).
I'd like to check out those other games with nonworking ADXs, as I think that there's a good chance that I might be able to play them now.
So put up some files!

edited 2:21 PM EDT October 9, 2007
by eightfold at 6:01 PM EDT on October 9, 2007
Sure thing. Here's 5 more samples:
http://www.megaupload.com/?d=9HOYXLV8
by hcs at 11:36 PM EDT on October 9, 2007
Alright, good, it looks like they're all using the same stream of random numbers to XOR with. I've put together a program to approximate the XOR stream, but it is only right on the highest order few bits, and while the audio is audible it is still quite crappy. It might be better with more samples to draw from, but it is a lousy solution and will only get a little less lousy.
I think it's time to resort to disassembly. There should be a number of files called .irx on the disc, could you upload those? If it turns out there are too many, or they are too large, could you give a list of names so I can determine which are appropriate?

Thanks.
Oh, I've also noticed a slight inaccuracy in the ADX decoding I've been using, will have that fixed in in_cube and Rockbox when I get a chance. The gist is that a scale value of 0 is actually 1, and so on up (as a scale of 0 doesn't make any sense!).
by eightfold at 4:14 PM EDT on October 10, 2007
There aren't any .irx files on the disc, but there is a file named irx.ims located in a directory called MODULES. I looked around in main AFS file of the game as well and couldn't find any. I'm not sure if it's what you're looking for but here's the file I mentioned: [Link]

I included another file that was in the directory just in case it might be of any help.
by hcs at 2:32 PM EDT on October 11, 2007
Good, irx.ims does indeed contain the various .irx files, including cri_adxi.irx. Now I've just got to read through several thousand lines of code to figure it out.
by eightfold at 9:00 PM EDT on October 11, 2007
You make that sound so fun. =P

No really though, I appreciate the time you're putting into this. If and when you manage to figure out a way to decode the files properly, I'll provide a rip of all of the game's music in FLAC (if you want).

edited 9:01 PM EDT October 11, 2007
by Mouser X at 9:30 PM EDT on October 11, 2007
Why would you want it in FLAC? Specifically, if HCS figures out how to decode the ADXs, why would he want FLACs (recorded from ADXs) over the original ADX files themselves? If he succeeds, then surely he'll update in_cube (and most likely Rockbox) to be able to play the files. Not only that, and I could be mistaken, but wouldn't the ADX files be smaller than the FLAC files?

Please don't misunderstand me. FLAC is great for what it does (if I want lossless audio, it's what I'd use). However, I can't think of any major reasons to want recordings of ADX files, when you can play the original ADXs natively.

In case you were wondering, Rockbox is a firmware/OS replacement for portable MP3 players. So, if you use Rockbox (on your iPod, Gigabeat, Archos, or Sansa player [and more]), you could listen to the ADX files without need of re-encoding/recording them to a different format. You can also listen to FLACs, MP3s, OGGs, SPCs, NSF(e)s, GBSs (with a patch), and a multitude of other formats as well. If you're interested check out Rockbox.

Please note that I only point this out to clarify my question as to why one would want FLACs over the ADX files themselves. It's entirely possible that there's a good valid reason to want the FLACs. However, from my position, I'm not sure why that would be. Though, that's obviously different for you. Perhaps your portable player isn't supported by Rockbox, and therefore can't play ADX files, but *can* play FLAC files. In that instance, I'd say go for it. Though, considering that ADX is a lossy (by how much, if any, I don't know) format, I'd say just stick with MP3 or OGG.

Sorry to have written an essay on the subject. Mouser X over and out.

edited 9:32 PM EDT October 11, 2007
by eightfold at 9:43 PM EDT on October 11, 2007
I want in FLAC for two reasons:
Tagging and Replaygain.

Unless of course in_cube supports both those features... Does it? I haven't played around with the plugin that much, as I prefer using fb2k over Winamp. I know where you're coming from though, but there's not one file in my music collection that doesn't contain both those things.

I'm also aware of what Rockbox is, but I don't own a DAP. I prefer listening to music only when I'm at home where I'm comfortable.

edited 9:45 PM EDT October 11, 2007
by Mouser X at 10:53 PM EDT on October 11, 2007
Ah. Well, those are both valid reasons. Much of my music is *barely* tagged correctly, and often relies on directory structures to provide the information that tags would otherwise provide. I *do* prefer to have tags. However, some of my files predate ID3 v2, and others were obtained from sources that had poor tags. As a result, I have files that have the information I need, but not in their tags. Also, no, in_cube, nor the ADX format, supports either of those at this time. And, though it is very much a personal preference, I don't use ReplayGain, so I hadn't thought of that.

The reason I don't use RG is most likely due to a lack of *fully* understanding it. I know what it is, and what it does, but I *don't* know how it effects songs that are supposed to have varying decibel levels. As in, some parts are meant to be quiet, followed by a loud part, back to nearly inaudible. I know that a few years ago, I tried some software for volume control. All it did was normalize the volume straight across. Loud parts and quiet parts were then the same decibel level. I felt the tool was useless, so I never tried it again. I doubt that RG would do that (it'd be stupid if it did), but I don't know if it does or not. So, to make things easier for me, I just don't use it.

I would *LOVE* in_cube to support some method of having tags. A few people have thought of how to implement this, but thus far none of those ideas have gone through. JoshW was working on a streamed file format. I haven't heard from him in awhile, so I don't know how that's going. If he does make one, HCS has already voiced his desire to implement it into Rockbox (it would allow him to add *many* more console formats to Rockbox, since they would all fall under one 3-4 letter extension), as well as in_cube (if JoshW doesn't beat him to it).

In all, I prefer the ADXs. I do use Windows, Winamp, and Rockbox (though, lately I've been using Rockbox 2-4 times more than either of those). Also, ADXs support looping, if I wanted to listen to the file looped for more than twice. On top of that, it's the original format; no need to re-encode/transcode the files. As I said though, FLACs are fine in their place. For you, that's their place. If I were in the same boat (specifically, tags and ReplayGain), I'd most likely use MP3/OGG over FLAC (due to filesize. I'm always low on disk space). However, if size wasn't an issue, I'd go FLAC for everything... Mouser X over and out.
by Tanookirby at 1:54 PM EDT on October 12, 2007
"You can also listen to FLACs, MP3s, OGGs, SPCs, NSF(e)s, GBSs (with a patch), and a multitude of other formats as well."

Is there really a patch for GBS support? Can you tell me where it is?
by hcs at 3:19 PM EDT on October 12, 2007
http://www.rockbox.org/tracker/task/7331

It's fairly crap. Works fast enough on my Gigabeat but on nothing else I've tried, and it's a fairly nastily hacked port anyway.
I ported it from a Linux GBS player in a day at DevCon West for the sake of doing something...
by Shin Star at 10:33 AM EDT on October 16, 2007
Okay, I must apologize for my late reply. I have been busy lately and meant to respond the next day. Although I am very surprised that there is actually some intrest in this topic from a couple of others here and that's good to hear. I had only wished I created this topic a lot sooner >_>.

I was going to ask if I could get an FTP (or maybe using megaupload might be better?) so I could upload the entire AFS file for you to work on. It's 449 MB. I'm willing to upload it still if it is needed. eightfold could do it too possibly, he seems much more motivated than me and probably knows a bit more =). Oh and I'd like to thank you too eightfold for actually taking the initiative on the files since I failed at that part D:.

I would *LOVE* in_cube to support some method of having tags.

Seconded. I'm wondering why it hasn't been added yet?

I'm not sure what else I can provide. Wish I was a programming expert of some sort but eh.
by hcs at 10:38 AM EDT on October 16, 2007
Shin Star, email me at halleyscometsoftware at hotmail and I'll send you ftp info.
I'm sorry I haven't done anything with this in a few days...

On the other hand you might not want to bother, I'm downloading the whole God Hand ISO now and I only have about 100 MB left, should be done before you can upload the AFS.

edited 1:11 PM EDT October 16, 2007
by Shin Star at 9:59 PM EDT on October 16, 2007
So you have a disk space problem too huh? lol it's always fun to try to see what you can get rid of or keep..

But yeah no need to apologize. I'm just glad to hear you're willing to try to get this to work, and that's good enough for me :D.
by hcs at 2:31 PM EDT on October 19, 2007
Alrighty, took a few days longer to get God Hand than I thought.
The consensus method worked a little better with all the files to draw from, but still sounded like poor radio reception.

Then! I found the .sfd files for the english and japanese credits. They have unencrypted ADX audio, which almost exactly matched the standalone, but encrypted output ADXs. I was able to XOR the scales together to get approximately the correct encryption stream. From simple inspection is was apparent that the period of the function was only 8192, so I was able to do another consensus pass to determine exactly what the stream is. I then plugged that into the brute force program I'd put together earlier to find the parameters for the decryption function. It turns out to be CRI's in-house encryption after all.

The upshot of which is degod, now on the in_cube page, which will decrypt the ADX files in God Hand. I tested it with Okami as well, seems to work.
by Shin Star at 7:45 PM EDT on October 19, 2007
Wow this is awesome. I wasn't expecting it to get cracked that soon. Thank you so much! I'm testing them out right now and so far they seem to sound real good. I haven't touched the game in awhile, but I will go back to it soon. If I notice anything, I'll let you know. Again, thanks for your time in this. I'll rip these into mp3s or something later I guess and make a "complete OST" :)

Glad to know my hunch was right about the adx format too...at least I figured something out haha.

edited 7:51 PM EDT October 19, 2007
by eightfold at 10:30 PM EDT on October 19, 2007
Oh man, I almost forgot about this. I've been a little busy lately and I see you were too hcs! I decrypted all of the files just now and they all play flawlessly with in_cube. This is awesome! I'm gonna go ahead and make a proper "album" out of these like Shin right now, except in FLAC. =D

Thanks a lot for doing this hcs!

And to Shin, it was just a pure stroke of luck that I managed to find a forum where someone was interested in ripping the music God Hand from too. I saw the post you made was only a few days old so I decided to follow up on it.
by hcs at 1:53 AM EDT on October 20, 2007
Glad to help out. As payment you must bring me any other files you cannot play.

God Hand BGM, decrypted.
Okami, decrypted. I tried to separate out the BGM from the sound effects.

edited 1:53 AM EDT October 20, 2007
by Shin Star at 3:24 PM EDT on October 20, 2007
Well eightfold glad you got lucky and found my post. This would have also never been possible without you :D

Alright files, I'll check those out too!


wtf typo. fixed.

edited 3:25 PM EDT October 20, 2007
by dag at 11:28 AM EDT on October 21, 2007
Wow, thanks so much for decrypting these files (God Hand in particular)!

Unfortunately degod won't work on other games with encrypted ADXs. I've tested Samurai Champloo, Killer7, Blood+ (all them by Grasshopper Manufacture) and Raiden3 and they won't decrypt correctly. I'll see if I can find more of these ADXs.

Here are a few samples if you want to check them: http://www.sendspace.com/file/cwgxkk
I've included IRXs just in case (seems all these games have slightly different revisions of the driver, even God Hand and Okami).
by hcs at 5:33 PM EDT on October 21, 2007
Thanks for all the samples.
I think these all almost certainly use the same algorithm, just a different key. Finding that key (more likely, those keys) will be troublesome, but away I go...

edited 5:33 PM EDT October 21, 2007
by AENIGMA at 7:31 PM EDT on October 21, 2007
HCS, thank you so much for making the Okami ADX available!

If anyone is interested, here are some Chip Tune versions of some of the Okami songs:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 sheet music

Some of you may already know about these.

edited 7:33 PM EDT October 21, 2007
by hcs at 2:40 AM EDT on October 22, 2007
OK, degod 0.1 is now up, with support for Samurai Champloo, Killer 7, and Blood+. The keys for these games (and each had its own) were determined through trial and error and a lot of computation. They are not, however, necessarily correct. There is a very good chance of errors. They do, however, sound good.
degod had the brute forcing tools that I used built in, as well as estimates the 4 known keys.
Raiden III is still pending.

[edit]
0.2 now up with a key for Raiden III.

edited 10:41 AM EDT October 22, 2007
by dag at 4:42 PM EDT on October 22, 2007
Thanks a lot for taking the time, man that was quick! Works like a charm :)

I'll see if I find any file that sounds a bit off, or some track that's encrypted and unencrytped in a video (like in God Hand) if it helps to get better keys.
by hcs at 7:38 PM EDT on October 22, 2007
Well, the errors will be systematic and should be equally troublesome on any track. Since I can't hear anything odd they're probably in the lower bits of significance.
Do inaudible errors matter? To me, they do.
by snakemeat at 3:07 PM EDT on October 26, 2007
Just to confirm, the tools works for only PS2 versions of these games?

And the process would be like this?

____________________________
|-Extract AFS files from ISO-|
""""""""""""""""""""""""""""
|
| AFS files
\|/
____________'__________________
|-ADXUtil/ADX Unpacker/adXtract-|
"""""""""""""""""""""""""""""""
|
| ADX Files (encrypted)
\|/
___________'__________
|--------degod---------|
""""""""""""""""""""""
|
| ADX Files (decrypted)
\|/
'


edited 3:08 PM EDT October 26, 2007 Meh, looked better in the editor :(

edited 3:10 PM EDT October 26, 2007
by hcs at 5:12 PM EDT on October 26, 2007
I don't know if this only works for the PS2 versions of games, but that's the only system I've seen the encryption used in (the GC version of Killer7, for instance, isn't ADX and is not encrypted). Your diagram is correct, assuming that the ADX files are packed somehow.

edited 5:13 PM EDT October 26, 2007
by hcs at 2:25 PM EST on November 28, 2007
Got a new key supported in 0.3, from Phantasy Star Universe for PC. Not clear just now if the files I was given were from the original or the expansion, I'll probably put out an 0.31 release with the name clarified. But right now I think it works on both.
Maybe works on the other platforms, too?

edited 2:25 PM EST November 28, 2007

He now informs me:
"The song came from the expansion. The PS2 version of the vanilla game didn’t have encrypted ADX... but the expansion for PS2 has encrypted and unencrypted stuff... the PC version of both the expansion and vanilla had encrypted both times... I don't have PS2 vanilla game on me anymore... I uninstalled the PC vanilla version as well... I'll let you know soon..."

edited 2:59 PM EST November 28, 2007

edited 2:59 PM EST November 28, 2007
by hcs at 2:16 PM EST on December 22, 2007
It turns out that the PC version of PSU and the expansion both use the same key.
Rips here: PSU and PSU:AOI
by dag at 3:41 PM EST on December 22, 2007
Ok, here is another one if you want to check it, Senko no Ronde (Xbox360, WarTech in the US I think). None of the older keys work.
http://www.sendspace.com/file/u12o49


Btw, could you explain a bit how do you find the keys? I take you have to use -b (with -n) to get the more likely keys (lower scaletotal?) but it's a bit too hard for me to figure out :(
by hcs at 10:12 AM EST on December 23, 2007
I glance at Senko1.adx and Senko2.adx in khexedit. Senko1.adx seems to be quieter at the beginning, so it's starting encrypted scale (0x46d6) is likely to be near the actual starting value, and the next encrypted scale (0x2ca1, the first scale of the second channel which is also quiet) is also likely to be near the starting value. Note that the starting values for Senko2.adx (0x46df, 0x2ca3) are near these.
So I start with "degod -b -n 4 Senko1.adx". (By default it will try to use every frame in the file, which will take a really long time, so we use -n 4 to only use the first 4 frames.)
Fairly quickly it hits on a few possibilities:
-s 46d6 -m 5ced -a 3089
-s 46d7 -m 5ced -a 539d
-s 46d5 -m 5ced -a 0d75
all with an average scale of 8. So this looks fairly good, but it could be better.
I'll decode using the first key (starting with 46d6) and see how it works out. Sounds alright but for a clicking... this is fairly common in a close key.
So I try the next key (starting with 46d7)... worse
So I try the next key (starting with 46d5)...still bad.

Ok, so we run it again a higher -n and give it some time, as the clicking is periodic the error might not be apparent in the first few frames. I'll use "degod -b -n 100 Senko1.adx".
'bout 20 minutes went by and nothing better than the 46d6 one found before.
So I give it another shot with -n 1000 and leave it overnight.
Nothing better than 46d6 showed up.

So, time for another strategy. There may well be nothing better than the -s 46d6 -m 5ced -a 3089 key for the first few frames, and as I extend it to more frames it just computes more slowly and might take a long time to get to a better global result. The major perceptible error (with the 46d6 key) is clicking, so I dump the decoded audio to a WAV and look at it in Audacity.

See the first few big clicks at 0.055 and 0.060? I'm going to brute force only on that small range (0.050 to 0.070, *44100/18/2 = 60 to 85) with "degod -b -f 60 -n 25 Senko1.adx"
So I let this go for a little while, I don't get anything better than -s 6cd3 -m 5ced -a 64cd, with 232 scale avg. This is no good, though (To use this key for the whole file I use "xortest 6cd3 5ced 64cd", which gives me the random number stream. I go to the end (the last value, which is the same as the first value) and up 60 values to find the starting value, in this case 765f. That couldn't possibly be the actual start value. Note that I have some assumptions about the random stream, namely that it will always cycle back to the start value, which I don't think is strictly true, though it has been true for all keys found so far.), for the whole file. The multiplier is 5ced, though, which seems familiar. So maybe the other elements of the key are off and that is correct. I try it for that section of the file again, forcing a muliplier of 5ced (degod -b -m 5ced -f 60 -n 25 Senko1.adx), but again its best values are unusable (the best is -s 6cf3 -m 5ced -a 474d, which would have a start value of 767f). I try it again, for the first 100 frames (degod -b -m 5ced -n 100 Senko1.adx) and it quickly comes to -s 46d3 -m 5ced -a 474d, which works!

A few notes:
1) It would have been best to take the -m 5ced hint that I got in the first few minutes, from those 3 identically-scoring keys. Had I extended it to a few more frames with that I would have had the key I ended up with the next day.
2) -m 5ced -a 474d were also elements of the result for -f 60 -n 25, the start value was just way off.

So degod 0.4 is now up.
by hcs at 4:12 AM EST on December 24, 2007
Any chance you could put some more Senko no Ronde tracks online? I liked what I heard, but I'm having trouble finding it online to rip the rest myself.
by dag at 12:57 PM EST on December 25, 2007
Thanks a lot for the tutorial, seems quite doable. Btw, is it possible/common to find several keys that give good sound, and would it be better to repeat the process with different tracks to get the "best" key?

As for the adxs, unfortunately I only have 9 and I think I uploaded the best two. Though I could upload the OSTs in mp3 (+-50 tracks)instead if you want.
by hcs at 4:51 AM EST on December 26, 2007
I think it is possible to find several keys that give good sound, but I've never kept searching after I found a working one.
A search for a "best" key is not practical. The scaletotal method for ranking keys is only able to work because the encryption makes the higher bits evenly distributed between zero and one, while higher bits should be more likely to be zero. Lower bits, however, should be more evenly distributed between zero and one anyway. So a key can be found to match the high flipped bits, but the low flipped bits are hidden under the "noise" of the music itself. So the differences in scaletotals for keys becomes meaningless at low values (being on the order of 100).
As it takes a fair amount of searching the key space to find something that even sounds right, I don't think searching for other keys makes sense.
If you can find some other artifact left by the incomplete decryption to use as a ranking method (maybe there's a high frequency component that'll show up in a spectrum analysis?) then maybe improvements would be possible.

Hmm, it would seem that I don't have the OST, looks like I missed out when #gamemp3s released it. I'll be able to pick it up anyway. Trying to get the game, too, I'll put up the ADXs if I find 'em.
by hcs at 10:11 AM EST on December 27, 2007
WarTech: Senko no Ronde
Has a few more tracks than the two OSTs put together.
by hcs at 11:43 AM EDT on April 23, 2008
I know ADX decryption isn't a big deal anymore, since it's pretty much "solved", but I was thinking about it again lately (we've been discussing cryptography at school). I came up with a new way to compute keys, faster than degod's brute forcing, requiring no user intervention, and precise. guessadx 0.1
The readme.txt has details.
It answers the questions about multiple keys, some keys have close relatives, others are truly unique.

edited 11:44 AM EDT April 23, 2008


Go to Page 0

Search this thread

Show all threads

Reply to this thread:

User Name Tags:

bold: [b]bold[/b]
italics: [i]italics[/i]
emphasis: [em]emphasis[/em]
underline: [u]underline[/u]
small: [small]small[/small]
Link: [url=http://www.google.com]Link[/url]

[img=https://www.hcs64.com/images/mm1.png]
Password
Subject
Message

HCS Forum Index
Halley's Comet Software
forum source