David Haywood's Homepage
MAME work and other stuff

7-Zip-a-Dee-Doo-Dah

February 11, 2012 Haze Categories: General News. 36 Comments on 7-Zip-a-Dee-Doo-Dah

As promised below I’ve put a bit of time into hooking up 7-zip support in MAME. This is a first pass, so there is still room for improvements (both to code quality, and potentially bug fixes)

The way I see it zip / 7z offer the following pros / cons

.zip
– Aging 32-bit format
– Can only hold 2gb of data (we’re hitting that limit in some cases)
– Only supports UTF-8 filenames
– Single, dated algorithm
+ low memory overhead

.7z
+ Modern 64-bit format
+ No practical limitation to filesizes
+ UTF16 support (debatable advantage)
+ newer more advanced algorithms
– higher memory overhead if ‘solid’ blocks are used

Zlib (.zip support) might be tried and tested, but it’s showing it’s age, it’s a format of the previous decade when FAT32 was the standard, and nobody had large files. .7z is newer and doesn’t have many of the inherent issues of an older format, although does still need some testing. Staying ahead of the game is always a good idea tho, better to be modern and be prepared.

Download the diff here. This has been sent to R.Belmont for portability checking and official inclusion. Right now this can be used for roms, artwork, samples, cheats etc. -romident and romcmp.exe aren’t hooked up to it yet, but that will come with time. As I said, this is first pass, and a demonstration it works.

I’ve tested this with a wide range of settings in the Windows 7-zip binary and haven’t managed to make a file which fails to decompress yet. Both 32-bit and 64-bit Windows MAME builds have been tested and as long as you’re sensible about block sizes and compression used speed / memory overhead is comparable to standard .zip (ie don’t use PPmd with huge block sizes on huge ROMs because that would just be stupid and can take a good 3 minutes to decompress kof2003.zip even with the official tools ;-)

I’m increasingly being sent .7z files when asked to look at things to work on in MAME as opposed to zips in days gone by. I’d attribute a lot of this to the decline of WinZip (they practically nuked their own business model) as well as the horrendous build-in Zip support Windows has, forcing people to look for alternatives. This means having .7z support makes MAME work easier as I don’t have to decompress / recompress everything just to check it out. Weigh that up with the limitations of the format and moving forward seems like a good idea. I’m also often sent .rar files (because people appear to have flocked to either 7-zip or WinRAR in equal numbers) but I need to do further investigation on the suitability of decompression code for those, there are a few strings attached because it’s not a ‘free’ format.

Of course, the original .zip support remains, .7z is just an option. There is no reason to rip out the long standing .zip support, merely supplement it with something more modern.

The other benefit of course is that the LMZA and LMZA2 algorithms will be in the MAME code for leverage elsewhere, and would be ideal for use in CHDs and such. Not done anything on that front tho because it’s not a priority, and the FLAC work is still pending cleanups and being officially turned on.

Go to article.. »

Donkey Kong Does Audio

February 6, 2012 Haze Categories: General News. 29 Comments on Donkey Kong Does Audio

Ok, this update has nothing to do with Donkey Kong at all, Donkey Kong doesn’t even use samples anymore, but nevertheless it is about Monkeys.

Actually, maybe it isn’t about Monkeys at all either, but it is about the lossless audio compress format ‘Monkey’s Audio’ or, those .APE files you sometimes find.

Monkey’s Audio (MA) is one of the other big players in the lossless audio compression arena along with FLAC, and WavPack.

The main advantages of MA is that it offers better compression rates than FLAC, which for large files can be quite significant. The disadvantage is it’s slower, quite significantly slower. It’s a symmetric algorithm which basically means decompression takes the same amount of time as compression.

0.145 saw the FLAC code being enabled in MAME for use with samples (not yet CHDs), and as a test I’ve done a bit of porting and brought MA over with the same sample decoding functionality. It took a bit of work keeping the compiler happy (wasn’t quite 64-bit safe), and I’ve opted to compile the non-windows codepaths on Windows to ensure that it’s as portable as possible, but it works.

As expected, it’s quite a bit slower than FLAC, and while it’s not quite as fast as it could be due to me disabling some x86 ASM / MMX code the sample implementation still gives a pretty strong indication that it wouldn’t really be fast enough for decoding of CHD data where we need data to decompress with minimal overhead. I know a few people had been wondering / asking about this, which is one reason I looked into it. I might do a hookup later to test, but IMHO it’s not worth it.

You can download the source diff to add MA support to samples here (I don’t claim it to be pretty!)

Also for reference the following Gorf samplesets (note, some files are not recorded, so MAME will still show ignorable NOT FOUND errors on those rather than silently failing as it would prior to 0.145, I’ve also resampled one of the clips to 8-bit to show 8-bit decompression is working)

As APE (860,649 byte zip)
As FLAC (905,243 byte zip)
As WAV (1,110,709 byte zip)

I wouldn’t hold your breath on this being officially included, although I’ll submit it anyway. More of a fun little experiment than anything else.

Go to article.. »

15 Years is a Long Time

February 3, 2012 Haze Categories: General News. 7 Comments on 15 Years is a Long Time

Depending on who you ask MAME was born either on the 5th Feb 1997 with the release of Mame 0.1 or slightly before that in the form of Nicola’s MultiPac releases which were the basis of that release (even today you can see some remnants of how they grew to become MAME, for example the graphic decoding structures)

The official anniversary is generally considered to be the 5th, so, this coming Sunday and the date has come to correspond with the release of a new full version, 0.145 in this case.

I am slightly concerned at how tight things are running as far as bug fixes go. Aaron’s recent batch of changes have left a number of Saturn / STV games broken*, clickabale artwork broken, the tilemap viewer in indexed modes broken, the cheat system broken, and possibly one or two other outstanding bugs caused by the tag changes which have yet to be shaken out. Kale’s recent changes also mean that many games in metro.c are still broken and a couple in suprnova.c as well, then you’ve got some longer standing regressions too such as some of the Taito GNET games, broken PSX hardware quads and a couple of other (looking further back there are still the performance regressions from some memory system updates..)

I’ve been doing my bit to clean up / fix some of the recent issues, as well as some which have been lingering from the Data East rewrite I did a bit ago, while converting the remaining drivers over to use the generic handling but I think for the highlighted issues it’s going to take a big push from the people concerned (Aaron, Kale etc.) either today or on Saturday if they’re to be fixed in time for a proper stable anniversary release. I have a feeling official support for the FLAC CHDs won’t make such a release due to the priority of other stuff being higher, although I have just submitted code to allow sound samples to be in either format which will hopefully make the build.

It’s good to try and make anniversary builds special, throw in a few surprises. The 10th anniversary was especially cool (5 years ago!) with a good number of interesting things, and a special modern build of MAME 0.1 to boot. I guess it’s also worth mentioning that PC emulation in MESS recently improved to the level whereby you can actually run the original MAME 0.1 binary inside of MESS (albeit slowly!) which is pretty neat. If there are any surprises this year they’ve been kept well under wraps, I did want to sneak one in myself but the contact I was working with on one has been unavailable for a month, so progress has temporarily stalled there, and the other possible one I still haven’t managed to get the green light for inclusion, always next year, or the year after.

Either way, 15 years is an impressive achievement and while the project isn’t pulling up trees at the same rate it was you do have to wonder where we’d be without it, how many other projects and current games / ports would be different without it providing a reference point for all to use. It’s also been a great eye opener to arcade culture around the world, as unpopular as things like Mahjong are with the non-Japanese crowd the sheer number of titles listed is testament to the success of the genre in Japan, likewise how many people would know Korea had it’s own arcade industry, producing games which were mostly ripped from more popular ones? How many people have had their eyes opened to companies like Cave by review sites written by people using emulators? How many people have picked up programming skills, and an understanding of obscure assembly languages by trying to contribute to MAME? As an educational tool it’s been immense. There aren’t many projects which survive 15 years where there is still just as much can be done today as there was back then. MAME is almost as old today as some of the first hardware/games it emulated were when 0.1 was released, think about that one for a while.

So… even if 0.145 does come out and ends up being a bit buggy you can also look on the bright side, at least you’re still seeing regular releases 15 years from when the project started, and everybody has access to the latest code via the GIT repository these days so you can build yourself a fixed build as soon as any fixes go in.

* It’s possible the Saturn breakage (Radiant Silvergun specifically) occurred earlier, but I believe it was traced back to that. Likewise the cheat issue might be fixable by changing all existing cheat files, but I’m not sure that’s desirable behavior.

Go to article.. »

Sliver Place

January 18, 2012 Haze Categories: General News. 1 Comment on Sliver Place

Integrating FLAC isn’t the only thing I’ve been working on lately. After the initial work on FLAC (prior to the CHD bit) I decided to integrate some proper JPEG decoding libraries into MAME.

Why? Well, there is one game, which has been running in MAME for a while which actually uses JPEG decoder chips on the PCB. This game is the rather obscure ‘Sliver’. As a game, it’s not even remotely interesting, or good, but from a hardware perspective the pair of Zoran chips used to decode the JPEG images stored in the ROMs make it an interesting case.

Until recently MAME has simply loaded an extra ‘fake’ rom with the JPEG images pre-decoded, and used a look-up table in the driver to convert the addresses requested by the game for the JPEGS into addresses where our pre-decoded bitmaps were stored. Obviously this isn’t how the hardware worked ;-)

By integrating the JPEG library I’ve managed to remove the fake ROM, and can now point the decoder directly at the real JPEG data in roms as and when it’s requested by the game.


Sliver Sliver

Note, you can see ugly JPEG artifacting on the game screen, they obviously didn’t compress the images with very high quality settings ;-)

From an end-users perspective, the game still runs and plays exactly how it did before, but from a MAME perspective the emulation is now better, and we have a JPEG library to play with if we want it, maybe as an option when creating screen-shots at high resolutions where PNG becomes excessively large? Either way, it’s there and could be put to further use.

There is one other game which uses the same JPEG decoder chips on the board Magic the Gathering: Armageddon (Progettoemma link due to MAWS being down after it was used to hack MameWorld) Currently that game doesn’t work, but Phil Bennett was last seen getting some 3D out of it, so having a JPEG decoder should help him get the correct textures, which are encoded as JPEGs in the ROM.

As with the FLAC stuff, thanks also goes to R.Belmont for ensuring it compiles / works on Linux and Mac environments.

Go to article.. »

Taking the FLAC

January 18, 2012 Haze Categories: General News. 70 Comments on Taking the FLAC

One of the criticisms often made of MAME / MESS’s CHD format is that it doesn’t actually provide very efficient compression, especially when it comes to CD AUDIO data. I’ve had a number of people ask me if I can look into improving this, especially when you consider that in with the current format a complete Saturn set is almost 1TB, with a large portion of that being AUDIO.

The reason it’s inefficient is because it’s using zlib’s inflate algorithm for the blocks, blocks which are rather small to ensure that data is decompressed quickly. While this is fine for DATA (it’s the same thing that ZIP files use) it’s absolutely hopeless for AUDIO.

There are dedicated audio lossless compressors out there, FLAC is a popular one.

I’ve spent the last 4-5 days solid integrating support for this into the MAME / MESS tree, and extending the CHD format to not only support it’s native blocks (hunks), but also reference to embedded streams via ‘virtual hunks’ which point at a stream, and allow the actual FLAC codec to do the seeking and decoding work for this.

By doing this I can achieve a good level of compression with FLAC, far better than trying to split it into CHD hunks due to the lower overhead, and improved ability of the compression algorithms to predict how data best compresses. I also still get good speed decoding, as the FLAC format is designed to be quick to seek, and has built in seektable support of it’s own which I’m levering.

I have to say FLAC is an absolute joy to work with, the API does everything you can expect, the documentation is great, and it’s very good at letting you know if something is wrong. (the only issue I had with the documentation / API was with the seektables, whereby calling things in the wrong order / wrong time during encoding could cause data to be overwritten without throwing an error)

I’ve also added support to the MAME SAMPLE interface to playback files from FLAC sources, this should allow the recently dumped tape loops to be compressed much better than they are now (they’re uncompressed PCM .wav files)

The other possibilities for this are endless, -wavwrite could also output FLAC data if support was added, MESS could potentially load cassette based software from FLAC images. It’s an incredibly useful codec to have around.

I’ve uploaded my first pass of this code Here (link offline for the time being, there is definitely still an error). This should be considered ALPHA SOFTWARE and I won’t be held responsible if you end up destroying your CHDs with it. I’m currently in the process of batch converting many images and haven’t found a broken case yet, but still, it’s in testing. While I’m happy with the current format extensions and CHD format created it could change in a final version, you have been warned.

This code has been submitted to R.Belmont, who is currently making some portability fixes. FLAC is designed to be portable, so this shouldn’t be too much of a problem, so fingers crossed it can be sorted out soon.

Usage is simple, I’ve added an additional -createcdflac commandline option which will use the FLAC routines when compressing AUDIO. If you already know how to use CHDMAN then it’s simple enough.

Have fun :-)

Go to article.. »

UltimateMAME 0.144u4

December 29, 2011 Haze Categories: General News. 29 Comments on UltimateMAME 0.144u4

UltimateMAME

This one is actually just based off MESS SVN revision 13871, so I’m not 100% sure which MAME version it’s synced to, but it’s post 0.144u4 for sure.

The process is simpler than it’s ever been right now, requiring minimal changes, in essence just a tool to combine the lists, and a new build target. A source diff of the needed changes is here.

I’m simply offering a single package this time, this includes
complete.exe / complete64.exe – 32-bit and 64-bit builds of the combined binary
as well as the rather redundant
mame.exe / mame64.exe – 32-bit and 64-bit builds of just the MAME target
mess.exe / mess64.exe – 32-bit and 64-bit builds of just the MESS target.

32-bit and 64-bit compiles of the tools are included in tools32/tools64 folders too
the full source is in there as well.

You can download that package here. It’s quite big because as mentioned above, I’ve just included all the builds for both 32-bit and 64-bit as well as the source.

To build the complete source do ‘make TARGET=complete’ although it’s recommended you build ‘TARGET=mess’ first if you want all the tools tho as it avoids a minor linker problem with some MESS-specific tools (needs looking into, probably something trivial)

Saturn Puzzle Games

The Saturn was just one of many Sega products which failed to achieve the same heights outside Japan as within it. To many it is considered a failure, beaten hands down by the Playstation, with little of worth to offer. Granted, it might not have been a 3D powerhouse, I’d be hard pressed to actually call it a 3D system, and the arcade ports of various fighters might not be quite as amazingly arcade perfect as some of the fanboys rave on about as if some great injustice has been done to the system, but, it had its fair share of interesting titles, especially in Japan.

Over the last few weeks I’ve been going through the Saturn Software List in MESS, which can be found in the UltimateMAME build to try and get an overall picture of how much of the Saturn library is actually dumped. If you factor out demo versions of games, the situation isn’t too bad, there are only a handful of games which don’t appear to be dumped at all, although frustratingly many are dumped to low standards, some just cheap iso + mp3 rips, even for relatively popular games. Also frustrating is that the Ultraman ROM cartridge (needed by that specific game) doesn’t seem to be dumped at all, that would have been an interesting project to get working moreso than the KOF95 one, which is dumped.

Anyway, needless to say a couple of titles have caught my eye. I’ve always enjoyed puzzle games, everything from the likes of the staple titles of Tetris, Columns, and Puyo Puyo to the more obscure ones. Mushihimetama for example was by far the most interesting of the Cave SH3 games to me as it was a true sequel to the absolutely brilliant Uopoko.


Columns Puyo Puyo
The classics – The Saturn actually has a port of Columns 1 (and the rest) as part of the Sega Ages Columns collection. It seems only Puyo Puyo 2 was ported tho, not the original.

Uopoko Mushihimetama
Not Saturn, but two of my absolute favourites Uopoko and Mushihimetama, which I feel could have been influenced by one of the games featured later in the article, keep reading!

Back to the Saturn, amongst the many dating simulations, fortune tellers, JRPGs and board game conversions the Japanese library also has a large selection of Puzzle games. Many of these are arcade conversions which from a gameplay point of view are rather made redundant by the emulation of the actual arcade versions in MAME although some do offer extra modes. Below are a selection of comparison shots.


Deroon Dero Dero Deroon Dero Dero
Deroon Dero Dero (Arcade left, Saturn right)

Magical Drop 3 Magical Drop 3
Magical Drop 3 (Arcade left, Saturn right)

Monster Slider Monster Slider
Monster Slider (Arcade left, Saturn right) This one is very different, not a straight port at all!

Puzzle Bobble 2X Puzzle Bobble 2X
Puzzle Bobble 2X (Arcade left, Saturn right)

Tekimori Puzzledama Tekimori Puzzledama
Tekimori Puzzledama (Arcade left, Saturn right)

There are more too. I wanted to include a few more, but the emulation of Mouja seems to be broken in the current version of MAME, and a couple of the Saturn titles don’t work in the MESS driver (Super Puzzle Fighter 2 runs in slow motion even at full framerate) but luckily, for the most part, the emulation of the puzzle style games holds up a lot better than the overall Saturn compatibility in MESS, which is sketchy at best. The Saturn also naturally got conversions of many of the ST-V puzzlers such as Columns ’97, Baku Baku Animal, and Puyo Puyo Sun, as well as ports of number of the C/C2 hardware games (Sega seemed to have had some easy way to either port or emulate Genesis based games on the platform) Interestingly the arcade game Mausuke no Ojama the World does not appear to have been released on the Saturn despite being on ST-V arcade hardware, a real shame because it’s probably my favourite puzzler on the system, the unique mechanic of having to link things diagonally to give them power before you get rid of them make it shine.


Mausuke no Ojama the World Mausuke no Ojama the World
Mausuke no Ojama the World, ran on Saturn hardware in the Arcades, but didn’t get a home release?

None of that is all too interesting on its own tho, games you’ve seen before. Thankfully the Saturn also had a couple of unique puzzlers of its own, maybe not exclusives (I really haven’t checked) but non-arcade conversions nevertheless.

Pastel Muses

Uopoko was mentioned earlier, and that’s what Pastel Muses reminds me of the most. It predates Uopoko by a few years, but relies on a similar game mechanic of having to hold down a button longer to fire your ball projectile further, clearly an idea borrowed from the various pinball and pachinko machines but one which at the time wasn’t extensively used in arcade puzzle games. Pastel Muses differs from Uopoko in that you’re also in rough control of the direction of your projectile, although you’ll often set it once for a level and leave it so the overall feeling is similar, the guide line which you get during the first few levels also vanishes in the same way so you need to get a feeling for the power levels quickly. Did this game actually influence those later Cave titles? You have to wonder, Cave were certainly aware of the Saturn as they produced several games for it.


Pasel Muses Pasel Muses

Pasel Muses Pasel Muses

Pasel Muses Pasel Muses

Pasel Muses Pasel Muses


Tenchi Muyou! Rensa Hitsuyou

This one is easy to overlook, the name doesn’t stand out to an English reader as ‘Puzzle Game’ but it actually stands up as one of the better games on the platform. You’re initially presented with a poor quality ‘Pioneer LDC’ video sequence, that alone might be enough to put you off the title or lead you into thinking it’s some poor laserdisc conversion, but persevere, and much better looking attract / title screens arrive.

The game again follows the simple ‘Connect 3’ equal algorithm, the playfield in this case isn’t entirely flat which changes your link patterns a little, but the real twist with this game comes from the water. Rather than your traditional ‘drop lots of blocks on opponent’s attacks which you commonly find in this type of game you instead cause the water level to rise on your opponent’s side of the screen. This has the interesting effect of causing new blocks which aren’t anchored down with the special anchor items to float. It’s a simple change, and truth be told it might even confuse you at first, but once you work out what’s going on it does successfully add a new dimension to a tried puzzle formula. In game this is another really well presented title, and I can have no complaints about either the graphics or the sound. Emulation seems a little slow, running at around 80% speed on my system, which surprises me for such a simple game, it’s likely there is room for some optimization in the driver to help here.


Tenchi Muyou! Rensa Hitsuyou Tenchi Muyou! Rensa Hitsuyou

Tenchi Muyou! Rensa Hitsuyou Tenchi Muyou! Rensa Hitsuyou

Tenchi Muyou! Rensa Hitsuyou Tenchi Muyou! Rensa Hitsuyou

Tenchi Muyou! Rensa Hitsuyou Tenchi Muyou! Rensa Hitsuyou

Kururin Pa!

Another block dropper, this one takes the ‘pipe’ block approach, dropping pieces resembling those found in Pipe Dream, although in this case they’re actually ropes, or to be more precise, fuses. Bomb items will drop, too, as will fire icons. Drop the fire on the end of a fuse and any correctly connected blocks will burn, drop it on a bomb and that bomb will explode, lighting any surrounding fuses. It might sound complex, but it really isn’t. Like most games you’re playing against a computer opponent trying to do the same thing, as time goes on the speed increases, but the controls always remain sharp and snappy which is a big plus.

The only thing that really lets the game down is the presentation, and while there is nothing really wrong with the graphics (apart from the Title screen which simply burns your eyes out) they’re very plain, and remain functional rather than fancy. Of course with these types of games it’s really the gameplay that counts, you could create an absolutely gorgeous game, but if it simply offers nothing beyond that it wouldn’t be worth playing, unlike this, which most definitely is.


Kururin Pa! Kururin Pa!

Kururin Pa! Kururin Pa!

Kururin Pa! Kururin Pa!

Shingata Kururin Pa!

Shingata Kururin Pa! is actually the sequel to Kururin Pa! and manages to address a good number of the previously raised concerns about the graphics. It’s more stylish, has a lot more animation, and is overall a lot more polished, but somehow it just didn’t seem to play as well, but maybe that’s just me.


Shingata Kururin Pa! Shingata Kururin Pa!

Shingata Kururin Pa! Shingata Kururin Pa!

PD Ultraman Link

Ultraman games are usually considered terrible. The Saturn fighter which uses a ROM cart is often ridiculed for how poor it is, and the other Saturn Ultraman releases just appear to be some kind of infobook / FMV game hybrid type things.

Ultraman Link breaks the trend a little, by not actually being terrible, and despite using CG rendered graphics for the most part it even looks good with smooth colour gradients and no ugly dithering. The game, like Kururin Pa uses ‘pipe’ type pieces falling into a pit. The rules here are very different tho, linking 3 or more pipe pieces together causes them to disappear, regardless of colour, although linking blocks of the same colour seems to be most beneficial if I’m understanding the rules correctly. The secret as always is chaining, but because the pipe pieces only have links on certain sides this requires different thinking to your standard stack + chain methods used in the likes of Puyo Puyo; you have to carefully think about where the links are on your pieces rather than the colours.

As a game it seems to play well, I can’t say I’ve put as much time into this one as the others mentioned, but the brief times I played it I did enjoy it, and will be coming back to it again at some point.


PD Ultraman Link PD Ultraman Link

PD Ultraman Link PD Ultraman Link

PD Ultraman Link PD Ultraman Link

PD Ultraman Link PD Ultraman Link

Pappara Paoon

Ecole Software, I’ve heard of them, they were behind the rather popular Melty Blood games. It surprises me therefore that this title seems so bad. It feels like a poor public domain Amiga game coded in AMOS. It’s ugly, has horrible controls, and a from what I can tell, a completely uninspired game design.

The gameplay is horizontal, you link X pieces in a row much as you would in Columns, all while your opponent is trying to do the same. I might have to come back to this one later, because I feel I must be missing something, or letting the poor presentation values sway my judgement on the quality of the game too much.


Pappara Paoon Pappara Paoon

Pappara Paoon Pappara Paoon

Tsuukai! Slot Shooting

From looking at screenshots I thought this might be some kind of Puzzle game. After playing it, I’ve concluded that it really doesn’t seem to be, you just seem to have to shoot the falling crabs before they have time to accumulate below. Not a great deal of fun.


Tsuukai! Slot Shooting Tsuukai! Slot Shooting

Make Your Own

The Saturn also has a piece of software designed to help you make your own games of this type. Sadly it’s entirely in Japanese, full of menus, and I don’t understand a word of it. I couldn’t even work out if it comes with any built in games, a real shame this kind of thing didn’t get released outside of Japan. It’s called “Ochige Designer Tsukutte Pon!” apparently.


Ochige Designer Tsukutte Pon! Ochige Designer Tsukutte Pon!

Others

There were other puzzle games on the Saturn which haven’t been mentioned yet too. The Saturn had its very own version of Tetris dubbed “Tetris S”, but that doesn’t work in MESS / UM yet. “Heisei Tensai Bakabon Susume! Bakabons” looks like it could be worth playing too, but the inputs don’t work.

There were also a good number of ‘Puzzling’ games which don’t quite fit in this genre due to being more action based. Things like ‘Noon’ and ‘Tama’ both look to be worth playing, the former runs in MESS / UM, the latter again lacks working inputs.

Overall if you enjoyed this genre the then a Japanese Saturn was well worth owning, between the excellent arcade conversions and the original titles there’s enough puzzle action to keep you busy for a long, long time.

Go to article.. »

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close