Thursday 27 December 2018

Paranoimia March Recording

Yesterday, Arkanix Labs released 'Paranoimia March', a new C64 8580 SID.  Information about the SID can be found here...

I wrote the music using a PC based tool called Goattracker.  The SID has been recorded using a 8580 SID equipped C64c, run through my Dolby amp.

I've uploaded the recording to my SoundCloud account; listen to the SID tune below. If the player does not appear below, hear it on it's SoundCloud page here...



Wednesday 26 December 2018

Paranoimia March

Arkanix Labs has released my new C64 8580 SID tune called 'Paranoimia March', which is cover of the classic music from the Paranoimia Amiga cracktros.


The SID has been released in a nice little 'wrapper' consisting of a 3 colour bitmap logo (drawn a few years ago, see information here) and new charset font based on the text from Star Trek:TNG, rendered in UltrafontPC.

As with the 'Loopit-C64-Ever' release a couple of days ago, the C64 code to display this was provided by T.M.R and has been used with his permission here for this release.  I did make some minor modifications to the code including fixes for screen flickers when running under NTSC (thanks to Moloch for testing), but not really enough to warrant me crediting myself with coding!

The SID can be downloaded from CSDb here or direct from this blog here.  Both downloads offer the C64 PRG executable version (PAL and NTSC flavours), a SID file and the music in it's original SNG Goattracker format.

Tuesday 25 December 2018

Loopit-C64-Ever Recording

Yesterday, Arkanix Labs released 'Loopit-C64-Ever', my new C64 8580 SID.  Information about the SID can be found here...

I wrote the music using a PC based tool called Goattracker.  The SID has been recorded using a 8580 SID equipped C64c, run through my Dolby amp.

I've just uploaded a recording to my SoundCloud account; listen to the SID tune below. If the player does not appear, hear it on it's SoundCloud page here...



Monday 24 December 2018

Loopit-C64-Ever

Arkanix Labs has released my new C64 8580 SID tune called 'Loopit-C64-Ever' which is cover of an Amiga mod called 'loopit4ever' by the brilliant composer/artist 'Zabutom'.


The SID has been released in a nice little 'wrapper' consisting of a 3 colour bitmap logo (drawn a few years ago, see information here) and new charset font based on the Mega Drive game 'Streets of Rage II', rendered in UltrafontPC.

The C64 code to display this was provided by T.M.R.  The code was originally provided by T.M.R for me to begin learning 6502 assembler (which I'm making progress on) but has been used with permission here for this release.  I did make some minor modifications to the code including fixes for screen flickers when running under NTSC (thanks to Moloch for testing), but not really enough to warrant me crediting myself with coding!

The original Amiga mod was released at Compusphere 2018 and can be downloaded from the scene.org website here...

As for my SID version, it can be downloaded from CSDb here or direct from this blog here.  Both downloads offer the C64 PRG executable version (PAL and NTSC flavours), a SID file and the music in it's original SNG Goattracker format.

Wednesday 5 December 2018

Crack or Die! Recording

Back at the beginning of 2015, Arkanix Labs released a music collection called 'Sid Doing Paula', that contained my covers of some of my favourite Amiga modules written in Goattracker

Part of that collection was a SID called 'Crack or Die' by Jugi/Complex.  I've recorded the tune from my 8580 SID equipped C64c connected to my Dolby amp and uploaded it to my SoundCloud account.

If the player doesn't appear below, hear the music on my SoundCloud page here...

Sunday 25 November 2018

Bas Braster Recording

Yesterday, Cosine released 'Oldest Style', an entry into the 'Crack Intro Creation Competition 2018' on CSDb.  The intro features a new C64 8580 SID tune called 'Bas Braster' written by yours truly.  Information about the intro and compo can be found here...

I wrote the music for the intro using a PC based tool called Goattracker.  The SID has been recorded using a 8580 SID C64c run through my Dolby amp.

I've just uploaded a recording to my SoundCloud account; listen to the SID tune below. If the player does not appear, hear it on it's SoundCloud page here...




Saturday 24 November 2018

Oldest Style

Another Cosine release today featuring a short tune by me!  'Oldest Style' is an entry into the CSDb 'Intro Creation Competition 2018' organised by Didi.


T.M.R has (kind of) billed this intro as a 'sequel of sorts' to a Cosine entry to the same competition from 2014 and he explains that while it may look simple, the code...

"jumps through quite a few hoops in order to make an otherwise silly technique work, using unrolled code and waiting for the C64's raster register to change before updating over 184 scanlines. There's further unrolled code updating those routines as well to animate them so this intro decrunches from $0400 to just shy of $3fff."

The music was originally written (along with a couple of other unfinished efforts) for the CSDb 'Crack Intro Music Competition 2017', but ended up not being used because it was too long and didn't work well on a 6581 SID; it was written with 8580 in mind.  It has been finished and used here instead, having been given the name 'Bas Braster' which is Welsh for... well, just look it up...

The intro can be downloaded from the Cosine website here or it's compo entry page on CSDb here...

You can also download the intro direct from this blog, with the .zip file including not only the demo on a .d64 image, but the music as a .sid file to run through SIDPlay or similar and the music in .sng format which can be loaded into Goattracker, the utility in which it was composed.  Just click here...

T.M.R has also recorded a video of the intro in action and uploaded it to YouTube.  The player should appear below, but if not watch it here...


Thursday 1 November 2018

Tubularween Recording

Yesterday, Cosine released my 'Old School Demo III', a simple Halloween demo coded in response to a challenge on the DBF Interactive forum.  Information about the demo can be found here...

I composed the music for the demo and it's called 'Tubularween' for the riff from Tubular Bells that features before the track goes off on it's own merry way.  It's an original 4 channel module using samples from disk images of the old Amiga ST-XX sample disk packs, along with some 8bit quality samples I ripped from famous horror film scenes.  I attempted to make the track sound like it could have been from an Amiga demo circa 1988.

I've just uploaded the music to my SoundCloud account; if you want to hear it in a music tracker you can follow the link to the demo above and in the .zip file you'll find the 'mod' in ProTracker format.

If the player doesn't appear below, you can hear the music on my SoundCloud page here...



Wednesday 31 October 2018

Old School Demo III

Following on from 'Old School Demo 1' and 'Beast Tribute - Old School Demo 2', comes the cunningly named 'Old School Demo III', released today by Cosine.   The demo was written in response to a challenge issued by the owners of the DBF Interactive website and forum to create something for Halloween 2018.


My main inspiration for the demo was the silhouette image in the hidden part of 'Sabbat', a 2013 Halloween demo released by Arkanix Labs, for which I pixelled and composed most of the assets.

The demo has been released by Cosine and is available to download from the Cosine website here...

You can also download the demo directly here...

The whole caboodle is on GitHub here...

There are a few key presses to find to activate some of the sprites as well as a key combo press to find the hidden part...

I'll follow up shortly with another blog post with a little more detail of how the demo works, how the graphics hang together, how the music was written and so on.

Monday 1 October 2018

Bat-Tro Recording

Back in 2017, Cosine released a small demo called MD201703 - The Bat-Tro.  Information about and a download for the release can be found here...

I wrote the music for the demo using a PC based tool called Goattracker.  It is a cover of the level 1 music 'Gotham City Street' from the 1990 SEGA Megadrive game 'Batman'.  The SID has been recorded using a 8580 SID C64c run through my Dolby amp.

Listen to the SID tune below; if the player does not appear, hear it on my SoundCloud page here...



Wednesday 12 September 2018

My Lucky Number (SID in Progress)

Here is a 'work in progress' C64 double speed SID cover of a 2018 Amiga mod called 'My Lucky Number' by Virgill.  The track is being covered using 'Goattracker'.

This is only a test recording of part of the track, taken from my real 8580 SID equipped C64c and passed through my Dolby amp.  There is still much work to be done on the remaining part of the tune and lot's of tinkering with the sounds / instruments. The SID will hopefully be used in a future C64 production of some sorts, either from Arkanix Labs or Cosine.

This cover has the 'blessing' of Virgill.  Please listen to the original Amiga version (from a 2018 Amiga intro) here...

If the player doesn't appear below, hear the SID on my SoundCloud page here...
 

Saturday 8 September 2018

Pellucid Effluvium Recording

Back in 2016, Cosine released a part for 'Crackers' Demo 5', the Crackers' Demo series of multi-part demos containing parts by various groups in the Commodore Plus/4 scene.  Information about and a download for the release can be found here...

I wrote the music for the demo using a PC based tool called Knaecketraecker, which is currently incomplete and thus possesses many 'unique quirks and challenges' to complement the challenges of the TED chip itself. I don't have a Plus/4, so this was played from within the tracker tool itself and recorded after passing through a Dolby amp.

At time of writing, this is my first (and so far only) TED tune, until I'm brave enough to venture into Knaecketraecker territory again.  As for the track title 'Pellucid Effluvium'... look it up... ;)

Listen to the TED tune below; if the player does not appear, hear it on my SoundCloud page here...



Sunday 26 August 2018

Sporting Chance Recording

Here is a recording of my Atari 8bit POKEY cover of "Sporting Chance" by Odie/Cosine, the music which has been used for all of the C64 versions of the puzzle game 'Blok Copy' apart from the PETSCII version.

The Atari 8bit version of 'Blok Copy' was released by Cosine in 2018 as a contribution to the 'New Years Disk' collection arranged on the AtariAge forum.  Information about and a download for the game and music can be found here.  The music was written in RASTER Music Tracker.

If the player doesn't appear below, hear the music on my SoundCloud page here...



Saturday 25 August 2018

Mutations Recording

Back in 2014, I remixed/covered one of my favourite C64 tunes Mutants by Fred Gray, which was then released by Arkanix Labs in a C64 demo called 'Mutations'.

This 'from scratch' remix featured a complete rearrangement of the whole tune, addition of drums and the use of heavily filtered bass, in an attempt to produce a more 'chilled' and mellow version of the original tune.

Also on the demo disk was a note file that featured my cover of the music from the SEGA arcade game 'Space Harrier'.  The 1980's C64 conversion of the arcade featured a great version of the arcade tune by Mark Cooksey, using his 'trademark' sounds. However, it didn't sound very authentic to the original and varied slightly in arrangement. My version attempted to sound closer to the arcade tune in sound and arrangement.

Fast forward 4 years and having recently hooked up my 8580 SID equipped C64c to my Dolby amp, I've recorded the SID tunes and uploaded them to SoundCloud.  Listen to them below.

If the players don't appear below, hear the music on my SoundCloud page.  The Mutations track is here and the Space Harrier cover is here.

 

Friday 24 August 2018

Uridium 2 Music Covers (SID vs. POKEY)

Here are my C64 SID and Atari 8bit POKEY covers of Jason Page's loading music from the amazing Amiga game 'Uridium 2' by Andrew Braybrook.

The SID version was written and released in 2015 as part of a C64 music collection called 'SID Doing Paula', a collection of Amiga mod covers written in Goattracker.  It was a 'hidden' bonus tune. The SID has been recorded using a 8580 SID C64c run through my Dolby amp.  Information about the original C64 collection is here...

The POKEY triple speed cover was released in 2018 as part of the 'New Years Disk' collection arranged on the AtariAge forum.  It was written in RASTER Music Tracker so I could get my head around the POKEY chip. The original Atari 8bit demo in which the tune is featured is here...

The original Amiga version can be found on SoundCloud and YouTube.

If the players don't appear below, hear the music on my SoundCloud page. The SID page is here and the POKEY page is here.




Thursday 23 August 2018

Matkamies Recording

Back at the beginning of 2015, Arkanix Labs released a music collection called 'Sid Doing Paula', that contained my covers of some of my favourite Amiga modules.

Part of that collection was a SID called Matkamies by Heatbeat/Carillon and having recently hooked up my 8580 SID equipped C64c to my Dolby amp, I've recorded the SID tune and uploaded it to my SoundCloud account.

As a bonus, I've also uploaded an Atari 8bit POKEY version of the same tune.  At time of writing, it has not yet been used in any productions.  It was written at the back end of 2017 after T.M.R requested some POKEY music for an Atari 8bit Cosine game, namely 'Blok Copy'.  I had to learn a new application for writing for POKEY, as well as the nuances of the chip itself and out of that learning came the requested music, as well as this 'conversion' of my original Matkamies SID.

The SID version was written in Goattracker and the POKEY written in RASTER Music Tracker.  The original Amiga version can be found on YouTube - just search for 'Amiga Matkamies'.

If the players don't appear below, hear the music on my SoundCloud page.  The C64 8580 SID track is here and the Atari POKEY cover is here.





Wednesday 22 August 2018

Beast Tribute Music

A few months ago, Cosine released my Psygnosis tribute demo called Beast Tribute - 'Old School Demo 2'.  You can download the demo here...

I composed the music for the demo.  It's an original 4 channel mod using samples I ripped from the original music in the Amiga game 'Shadow of the Beast', so credit for the samples should go to David Whittaker.  I attempted to make my track sound like it could have been in the original game.

I've finally gotten round to uploading the music to my SoundCloud account, although if you want to hear it in a music tracker you can follow the link to the demo above and in the .zip file you'll find the 'mod' in ProTracker format.

If the player doesn't appear below, you can hear the music on my SoundCloud page here...

Saturday 18 August 2018

Blok Copy in Progress

Blok Copy PC Title Screen
Announcing my first PC based game!

Continuing my PureBasic adventures and as a challenge to myself, I'm converting a Cosine game called 'Blok Copy', previously released on the C64, C64DTV, Atari 8bit and Commodore PET, to Windows PC.

Blok Copy PC Game Screen
The title screen is all working including the obligatory credits and scrolling message, along with options for sound settings, game modes and some instructions.  This is all accompanied by Odie's  full blown, all singing-and-dancing version of 'Sporting Chance', the music which has featured in the majority of Blok Copy versions across different formats.

The main game engine is functioning.  All the controls are in, along with the scoring, timer and level counter.  Even the pause mode works.

I'm currently working out the best way to animate the number tiles during the main game, which involves building sprites on the fly and then moving them on screen.

To be honest, this has been a stumbling block.  I've already coded one animation system that worked fine on my own system and on Moloch's laptop.  However, for some reason, it crawls on TMR's system.  I could just say, "tough!", but I want to find the issue and make sure it will work on a range of systems.

Bloody computers.

Saturday 28 July 2018

Fletch Theme Recording

Back in 2016, Cosine released a C64 demo called MD201605, part of a monthly demo series, for which I provided the music.  Information about the demo and a link to download it is in a blog post here...

As with the recent 'Lost in Time' recording, having hooked up my 8580 SID equipped C64c to my Dolby amp, I've recorded the SID tune and uploaded it to my SoundCloud account.

The music was written in Goattracker and is a cover of the theme tune from the film 'Fletch', by Harold Faltermeyer.

Listen to my SID cover below; if the SoundCloud player doesn't appear, you can hear the recording by following this link here... 



Thursday 26 July 2018

Lost in Time Recording

Back in 2016, Cosine released a C64 demo called MD201603, part of a monthly demo series.  This was my first contribution to a Cosine release and I provided the logo and the music.  Information about the demo and a link to download it is in a blog post here...

Having recently hooked up my 8580 SID equipped C64c to my Dolby amp, I've recorded the SID tune and uploaded it to my SoundCloud account.

The music was written in Goattracker and is a cover of an Amiga module called 'Lost in Time' by The Judge. The Amiga version was originally featured on an Amiga music disk called 'Amazing Tunes II', but is probably more known for being used as the title track on the Amiga conversion of the arcade game 'Final Fight'.  Searching on Google for something like 'youtube amiga final fight music' will find you a video where you can hear the original mod track.

As for listening to my SID cover, if the SoundCloud player doesn't appear below, you can hear the recording here...



Tuesday 24 July 2018

Macrocosm Recording

Back at the start 2017, Cosine released an intro called 'Refix 2017' for a CSDB competition.  Information about and a download for the release can be found here...

I wrote the music for the demo using a PC based tool called Goattracker.  It is a cover of one of my favourite Amiga modules called, funnily enough, 'Macrocosm'.  The original mod was written by the awesome 'Firefox'.  The SID has been recorded using a 8580 SID C64c run through my Dolby amp.

Listen to the SID tune below; if the player does not appear, hear it on my SoundCloud page here...



Monday 21 May 2018

Beast Tribute Demo

Finally, I've finished my small tribute demo to the old game publisher 'Psygnosis'.  This demo was written in response to the other various Psygnosis tribute demos that appeared on the 'Dark Bit Factory & Gravity' Purebasic forum during 2018.

My main focus and inspiration for the demo was the Amiga game 'Shadow of the Beast'.



The demo is subtitled 'Old School Demo 2', as it's a follow up to 'Old School Demo 1' (funnily enough) which itself was released by Cosine in April 2018.

Out of respect, it contains some original graphics from the Amiga game (the main sprite and the parallax stone wall/fence), along with brand new graphics pixelled by me in the style of the old game.

The music is also new, composed by me in OpenMPT using the original samples ripped from the game and done in 4 channel MOD format in the style of David Whittaker's original soundtrack. 

The demo has been released by Cosine and is available to download from the Cosine website here...

You can also download the demo (along with PureBasic source and all binaries and work files) here or via GitHub here.

Sunday 15 April 2018

PureBasic Parallax Starfield

I've always wanted to create a parallax starfield since the days of my C64 game-playing and demo-watching youth, but never had the tools or skills to create one.  Time has come...

After coding a couple of applications in PureBasic, I decided to turn my attention to the graphical abilities of said programming language. Research time and first port of call was the PureBasic forum where I found a few examples, but they were either too old for my version of PureBasic so wouldn't compile, or were overly complicated with lots of added effects that I didn't want or need.

So I decided to go it alone and code a clean and simple routine that I would then be able to 'plug' into other projects if I needed to fill the background with something interesting, as I did with 'Old School Demo 1'.  This is what I came up with to generate a simple 4 layer starfield...

       
;- INITIALISE ENVIRONMENT ------------------------------------

InitKeyboard()
InitSprite()


;- CREATE VARIABLES ------------------------------------------

#XRES = 800
#YRES = 600
#LAYER1SPEED = 1
#LAYER2SPEED = 3
#LAYER3SPEED = 5
#LAYER4SPEED = 10


;- PROCEDURES ------------------------------------------------

Procedure OpenMainWindow()
  
  OpenWindow(0,0,0,#XRES,#YRES,"Parallax Stars!",#PB_Window_ScreenCentered)
  OpenWindowedScreen(WindowID(0),0,0,#XRES,#YRES)
  
EndProcedure

Procedure CreateStarfields()
  
  Global sp_BKGRDSTAR = CreateSprite(#PB_Any,#XRES,#YRES)
  StartDrawing(SpriteOutput(sp_BKGRDSTAR))
  For n=0 To 999
    Plot(Random(#XRES-1),Random(#YRES-1),RGB(100,100,100))
  Next
  StopDrawing()
  
  Global sp_MDGRDSTAR = CreateSprite(#PB_Any,#XRES,#YRES)
  StartDrawing(SpriteOutput(sp_MDGRDSTAR))
  For n=0 To 299
    Plot(Random(#XRES-1),Random(#YRES-1),RGB(150,150,150))
  Next
  StopDrawing()
  
  Global sp_FTGRDSTAR = CreateSprite(#PB_Any,#XRES,#YRES)
  StartDrawing(SpriteOutput(sp_FTGRDSTAR))
  For n=0 To 199
    Plot(Random(#XRES-1),Random(#YRES-1),RGB(200,200,200))
  Next
  StopDrawing()
  
  Global sp_CLGRDSTAR = CreateSprite(#PB_Any,#XRES,#YRES)
  StartDrawing(SpriteOutput(sp_CLGRDSTAR))
  For n=0 To 19
    Plot(Random(#XRES-1),Random(#YRES-1),RGB(255,255,255))
  Next
  StopDrawing() 
    
EndProcedure

Procedure DrawStarfields()
  
  Shared bgx1, bgx2, bgx3, bgx4
  
  For s1 = 0 To 1
    For s2 = 0 To 1
      DisplayTransparentSprite(sp_BKGRDSTAR,#XRES*s1-bgx1,#YRES*s2)
      DisplayTransparentSprite(sp_MDGRDSTAR,#XRES*s1-bgx2,#YRES*s2)
      DisplayTransparentSprite(sp_FTGRDSTAR,#XRES*s1-bgx3,#YRES*s2)
      DisplayTransparentSprite(sp_CLGRDSTAR,#XRES*s1-bgx4,#YRES*s2)
    Next
  Next
  
  bgx1+#LAYER1SPEED : If bgx1 > #XRES-1 : bgx1=0 : EndIf
  bgx2+#LAYER2SPEED : If bgx2 > #XRES-1 : bgx2=0 : EndIf
  bgx3+#LAYER3SPEED : If bgx3 > #XRES-1 : bgx3=0 : EndIf
  bgx4+#LAYER4SPEED : If bgx4 > #XRES-1 : bgx4=0 : EndIf
  
EndProcedure    


;- BEGIN PROGRAM ----------------------------------------------------       

OpenMainWindow()                            
CreateStarfields()
HideWindow(0,#False)


;- MAIN PROGRAM LOOP ------------------------------------------------  

Repeat
  
  WaitWindowEvent(1)
  ClearScreen(0)
  DrawStarfields()
  FlipBuffers()
  ExamineKeyboard()
  
Until KeyboardPushed(#PB_Key_Escape)


;- EXIT PROGRAM ----------------------------------------------------     

FreeSprite(#PB_All)
CloseWindow(#PB_All)

End

The above code will actually run stand alone; if you compile it in PureBasic, it will open its own window and display the scrolling starfield until you exit by pressing 'escape'.

What is each part of the code doing?

;- INITIALISE ENVIRONMENT ------------------------------------

InitKeyboard()
InitSprite()

This section does what the comment says and initialises the environment - to be able to detect keypresses you must initialise the keyboard and to be able to use any graphics (including sprites) in a window you must initialise the sprite system.

;- CREATE VARIABLES ------------------------------------------

#XRES = 800
#YRES = 600
#LAYER1SPEED = 1
#LAYER2SPEED = 3
#LAYER3SPEED = 5
#LAYER4SPEED = 10

This section creates variables and assigns number values.  Changing the value of #XRES and #YRES alters the size of the window in which the starfield is displayed.  The other variables created control the speed of the scroll of each star layer, in this example 'layer 1' is the slowest to simulate being the furthest away and layer 4 the quickest to simulate being the closest, with layers 2 and 3 being somewhere in between.

Next, I've created some procedures.

;- PROCEDURES ------------------------------------------------

Procedure OpenMainWindow()
  
  OpenWindow(0,0,0,#XRES,#YRES,"Parallax Stars!",#PB_Window_ScreenCentered)
  OpenWindowedScreen(WindowID(0),0,0,#XRES,#YRES)
  
EndProcedure

This first procedure opens a window on the users screen with the size of #XRES and #YRES, with a title "Parallax Stars!" and centres the window in the users display.  It then opens a 'windowed screen' in this window which enables the use of powerful graphic commands that display images and sprites really quickly, enough so to create fast demos and games.

Procedure CreateStarfields()
  
  Global sp_BKGRDSTAR = CreateSprite(#PB_Any,#XRES,#YRES)
  StartDrawing(SpriteOutput(sp_BKGRDSTAR))
  For n=0 To 999
    Plot(Random(#XRES-1),Random(#YRES-1),RGB(100,100,100))
  Next
  StopDrawing()
  
  Global sp_MDGRDSTAR = CreateSprite(#PB_Any,#XRES,#YRES)
  StartDrawing(SpriteOutput(sp_MDGRDSTAR))
  For n=0 To 299
    Plot(Random(#XRES-1),Random(#YRES-1),RGB(150,150,150))
  Next
  StopDrawing()
  
  Global sp_FTGRDSTAR = CreateSprite(#PB_Any,#XRES,#YRES)
  StartDrawing(SpriteOutput(sp_FTGRDSTAR))
  For n=0 To 199
    Plot(Random(#XRES-1),Random(#YRES-1),RGB(200,200,200))
  Next
  StopDrawing()
  
  Global sp_CLGRDSTAR = CreateSprite(#PB_Any,#XRES,#YRES)
  StartDrawing(SpriteOutput(sp_CLGRDSTAR))
  For n=0 To 19
    Plot(Random(#XRES-1),Random(#YRES-1),RGB(255,255,255))
  Next
  StopDrawing() 
    
EndProcedure

This next procedure then creates 4 sprites 'on the fly' and then randomly fills them with dots pretending to be stars.  Each sprite is held in a named variable starting with 'sp_' to indicate it's a sprite plus a name to indicate it's level in the display, so 'BKGRDSTAR' is the background layer, 'MDGRDSTAR' being the mid layer and so on.  This is my naming convention, you could call the sprite whatever you like.  Each sprite is created the same size as the window (#XRES, #YRES).

When randomly filling with dots, the closer the layer the fewer the number of dots (n). Also, since the background stars would be further away they are darker, RGB(100,100,100), while the closest layer is brighter, RGB(255,255,255).

Procedure DrawStarfields()
  
  Shared bgx1, bgx2, bgx3, bgx4
  
  For s1 = 0 To 1
    For s2 = 0 To 1
      DisplayTransparentSprite(sp_BKGRDSTAR,#XRES*s1-bgx1,#YRES*s2)
      DisplayTransparentSprite(sp_MDGRDSTAR,#XRES*s1-bgx2,#YRES*s2)
      DisplayTransparentSprite(sp_FTGRDSTAR,#XRES*s1-bgx3,#YRES*s2)
      DisplayTransparentSprite(sp_CLGRDSTAR,#XRES*s1-bgx4,#YRES*s2)
    Next
  Next
  
  bgx1+#LAYER1SPEED : If bgx1 > #XRES-1 : bgx1=0 : EndIf
  bgx2+#LAYER2SPEED : If bgx2 > #XRES-1 : bgx2=0 : EndIf
  bgx3+#LAYER3SPEED : If bgx3 > #XRES-1 : bgx3=0 : EndIf
  bgx4+#LAYER4SPEED : If bgx4 > #XRES-1 : bgx4=0 : EndIf
  
EndProcedure  

This next procedure draws the actual sprites (starfields) on the screen when this procedure is called later in the code.  The sprites are drawn in 'transparent' mode, whereby everything that is black is transparent so shows everything underneath.  Therefore, the stars (dots) on each sprite layer are always visible.

Each sprite layer is moved sideways using the #LAYERSPEED variables, with each layer moving a set number of pixels defined by that variable.  The sprites loop around continuously when they have scrolled their #XRES limit.

;- BEGIN PROGRAM ----------------------------------------------------       

OpenMainWindow()                            
CreateStarfields()
HideWindow(0,#False)

Now the program begins to actually execute by calling the 'OpenMainWindow()' procedure to open a window, generate the sprites by calling the 'CreateStarfields()' procedure and then unhides the window so we can see it, if it was hidden in the 'openwindow' procedure (which in this example it actually isn't).

;- MAIN PROGRAM LOOP ------------------------------------------------  

Repeat
  
  WaitWindowEvent(1)
  ClearScreen(0)
  DrawStarfields()
  FlipBuffers()
  ExamineKeyboard()
  
Until KeyboardPushed(#PB_Key_Escape)

The code now enter a continuous loop where it waits for a window event, clears the screen each frame, draws the starfields in their new positions, flips to the second prepared screen where the drawing of starfields has taken place out of view to ensure smoothness, then checks the keyboard to see if the user has pressed 'escape'.

;- EXIT PROGRAM ----------------------------------------------------     

FreeSprite(#PB_All)
CloseWindow(#PB_All)

End

If the user pressed space, then the program loop exits, erases all sprites and closes the window.  Technically, the 'End' command does this automatically but I like to be thorough.

This code can easily be adapted to make the stars scroll the opposite direction, or even up/down.

If you want the raw code to copy and paste into PureBasic, grab it from Pastebin here...

Friday 6 April 2018

Old School Demo 1

Here's a first!   I've coded my first ever PC based demo primarily to test the screen and sprite capabilities in PureBasic

The demo is titled 'Old School Demo 1' because it's, er, old-school in style and is the first in what may end up being a small string of demos that I may (or not) code as I learn more in PureBasic.



I've tried to 'emulate' some of my favourite features from the old Amiga demos so on screen you will see a scrolling parallax starfield, some 'copper bars' (faked of course), some animated rainbow coloured lines, the obligatory bouncing scrolling message and music which is actually a remix of the Uridium 2 loading music done by the original composer Jason Page.

The demo has been released by Cosine and is available to download from the Cosine website here...

You can also download the demo directly here...

As well as the demo itself, the download contains the PureBasic source code for you to squint at and rip apart.  Well, someone may find it useful?

Monday 1 January 2018

Blok Copy

Along with 'DYCP 2018', Cosine has released Blok Copy for Atari 8bit.  This game has appeared on various formats over the years.  For the Atari version, T.M.R asked me to cover the tune 'Sporting Chance' by Odie/Cosine, the music which has been used for all of the different versions, apart from the PETSCII version.


This Atari version of 'Blok Copy'  was a contribution to the 'New Years Disk' collection arranged on the AtariAge forum.  I covered the music using the excellent RASTER Music Tracker and is one of my first POKEY's. 

The game containing the music can be downloaded from the Cosine website here...

If you would like the raw RASTER Music Tracker file to load and mess around with, it can be downloaded here...

DYCP 2018

Along with 'Blok Copy' for Atari 8bit, Cosine has released an Atari 8bit demo called 'DYCP 2018', a contribution to the 'New Years Disk' collection arranged on the AtariAge forum.  Don't be fooled by the C64 boot screen in the image below - it's actually an Atari posing as a C64!


The music is a 'triple speed' tune and was written by me using the excellent RASTER Music Tracker; it is one of my first POKEY's, along with the music from the Atari 8bit version of Blok Copy.

The music is actually a cover of a cover of an original track by Jason Page (the loading music from the amazing Amiga game 'Uridium 2' by Andrew Braybrook).  I covered this tune on the C64 SID back in 2015 for the 'SID Doing Paula' music collection and the POKEY version is a cover of this SID version.

The demo containing the music can be downloaded from the Cosine website here...

If you would like the raw RASTER Music Tracker file to load and mess around with, it can be downloaded here...