{"id":149,"date":"2010-09-18T21:21:54","date_gmt":"2010-09-18T21:21:54","guid":{"rendered":"http:\/\/www.crazygaze.com\/blog\/?p=149"},"modified":"2016-06-29T01:37:01","modified_gmt":"2016-06-29T01:37:01","slug":"music-disk","status":"publish","type":"post","link":"https:\/\/www.crazygaze.com\/blog\/2010\/09\/18\/music-disk\/","title":{"rendered":"Music Disk"},"content":{"rendered":"<p>Some time ago (2007 I think), I mentioned that <a href=\"http:\/\/www.crazygaze.com\/blog\/czplayer\/\">czPlayer<\/a> has origins in an old sound system I coded for a Music Disk, back in 1998.<br \/>\nI managed to find a zip file with that same Music Disk, and wrap it with DOSBox, so that anyone can take a look, as it wouldn\u2019t run in modern PCs.<\/p>\n<p>You can <a href=\"http:\/\/www.crazygaze.com\/downloads\/misc\/PH5_5.zip\">download it here<\/a>.<\/p>\n<p>Just unpack to a folder, and run the <strong>LaunchPH5_5<\/strong> batch script. It will automatically launch PH5.5 running inside DOSBox.<\/p>\n<p>I coded pretty much everything apart from a really nice graphics library I got from a book, and most of the work was done during 1998 Summer holidays. Some of the awesome features (in 1997-1998 at least):<\/p>\n<ul>\n<li>Runs in VGA VESA mode, 800&#215;600, with support for Linear Frame Buffer. (Sounds like Chinese to you? If not, then you\u2019re getting old)<\/li>\n<li>Optimized 256 colour palette.<\/li>\n<li>Coded in good old Watcom C++ for DOS, and runs in protected mode (uses PMODE\/W)<\/li>\n<li>The sound system itself was quite nice, support a couple of things not commonly found\n<ul>\n<li>Critical mixing functions coded in hand optimized assembly<\/li>\n<li>Support from SB Mono to SB 16<\/li>\n<li>Support for Gravis Ultrasound, both hardware mixing, or software mixing, to work around the hardware voices limitation<\/li>\n<li>Mono, Stereo, 8 and 16 bits support<\/li>\n<li>Fixed point mixing<\/li>\n<li>Decent Impulse Tracker format support<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>The art was done by a friend of mine. The music was also done by him and a friend of his, whom I never met, using Impulse Tracker. Two of the songs were mine, but not as good as the other ones, since after all I was the coder!<\/p>\n<p>Just look at these awesome screen shots!<br \/>\nKeep in mind that\u2019s from 1998, using a <strong>800&#215;600 8bits display mode<\/strong><\/p>\n<h2>Sound Setup Screen<\/h2>\n<p>Coded in ASCII mode. Look at those amazing shadows. \ud83d\ude42<\/p>\n<p><img src=\"https:\/\/www.crazygaze.com\/blog\/wp-content\/uploads\/2010\/09\/ph5_5_002_thumb.png\" alt=\"\" \/><\/p>\n<h2>Start-up screen<\/h2>\n<p>The awesome start-up screen, calculating some really useful lookup tables.<br \/>\nAlso, note the 800&#215;600 video mode, at 8 bits. Live wasn\u2019t easy.<\/p>\n<p><img src=\"https:\/\/www.crazygaze.com\/blog\/wp-content\/uploads\/2010\/09\/ph5_5_003_thumb.png\" alt=\"\" \/><\/p>\n<h2>User Interface (Trance Zone)<\/h2>\n<p>The UI was divided in two zones. The background art was indeed nice. The way everything fits on top is a bit crude without antialiasing, because with just 256 colours it was a limited palette to choose from.<br \/>\nThe spheres with the song names were faded in and out in a cycle.<\/p>\n<p><img src=\"https:\/\/www.crazygaze.com\/blog\/wp-content\/uploads\/2010\/09\/ph5_5_004_thumb.png\" alt=\"\" \/><\/p>\n<h2>Trip-Hop Zone<\/h2>\n<p>And the other zone, which we could scroll to. It had a complete different set of colours, which didn\u2019t help. Both zone colours came from the same 256 colour palette.<\/p>\n<p><img src=\"https:\/\/www.crazygaze.com\/blog\/wp-content\/uploads\/2010\/09\/ph5_5_011_thumb.png\" alt=\"\" \/><\/p>\n<h2>Some options<\/h2>\n<p>I had some options for sound and the graphics. Turning off interpolation would only have an effect if using software mixing of course.<\/p>\n<p><img src=\"https:\/\/www.crazygaze.com\/blog\/wp-content\/uploads\/2010\/09\/ph5_5_018_thumb.png\" alt=\"\" \/><\/p>\n<h2>Credits<\/h2>\n<p>Notice the transparency of the dialog box. As all the other screenshots, still using the same colour palette.<\/p>\n<p><img src=\"https:\/\/www.crazygaze.com\/blog\/wp-content\/uploads\/2010\/09\/ph5_5_020_thumb.png\" alt=\"\" \/><\/p>\n<h2>Conclusion<\/h2>\n<p>That was the first project I started, finished, and released.<br \/>\nAlso, the first project using the original czPlayer. The current version still has a bit of that code, but most of it has been refactored.<br \/>\nIt\u2019s an interesting experience to look at code I wrote >12 years ago, with a complete coding style.<br \/>\nWas an interesting thing to work on. I remember sitting down with my friend to discuss details and take a look at each other\u2019s work.<br \/>\nAlso, I remember a particular day I was brainstorming about display modes, and If I could go for 16bits\/24bits mode, which would look a lot nicer, but would require a lot more CPU at that time.<\/p>\n<p>These were the specs of the computer I used for coding:<\/p>\n<ul>\n<li>Pentium 233 MMX<\/li>\n<li>32 MB<\/li>\n<li>About 20 MB of Hard Drive space, for code and assets<\/li>\n<li>SB16 clone, and a GUS sound cards<\/li>\n<li>Cirrus Logic Laguna 5464 PCI graphics card<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Some time ago (2007 I think), I mentioned that czPlayer has origins in an old sound system I coded for a Music Disk, back in 1998. I managed to find a zip file with that same Music Disk, and wrap it with DOSBox, so that anyone can take a look, as it wouldn\u2019t run in [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":157,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false,"spay_email":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true},"categories":[3],"tags":[20,19],"jetpack_featured_media_url":"https:\/\/www.crazygaze.com\/blog\/wp-content\/uploads\/2010\/09\/ph5_5_002.png","jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p7jpe0-2p","_links":{"self":[{"href":"https:\/\/www.crazygaze.com\/blog\/wp-json\/wp\/v2\/posts\/149"}],"collection":[{"href":"https:\/\/www.crazygaze.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.crazygaze.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.crazygaze.com\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.crazygaze.com\/blog\/wp-json\/wp\/v2\/comments?post=149"}],"version-history":[{"count":6,"href":"https:\/\/www.crazygaze.com\/blog\/wp-json\/wp\/v2\/posts\/149\/revisions"}],"predecessor-version":[{"id":722,"href":"https:\/\/www.crazygaze.com\/blog\/wp-json\/wp\/v2\/posts\/149\/revisions\/722"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.crazygaze.com\/blog\/wp-json\/wp\/v2\/media\/157"}],"wp:attachment":[{"href":"https:\/\/www.crazygaze.com\/blog\/wp-json\/wp\/v2\/media?parent=149"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.crazygaze.com\/blog\/wp-json\/wp\/v2\/categories?post=149"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.crazygaze.com\/blog\/wp-json\/wp\/v2\/tags?post=149"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}