Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
  You are not logged in - nap
Space Organic Intro   [2022]

Space Organic Intro Released by :
Excess

Release Date :
1 August 2022

Type :
C64 Crack Intro

User rating:**********  9.8/10 (19 votes)   See votestatistics

Credits :
Code .... zscs of Excess, The Apace Software
Music .... Dane of Booze Design
Graphics .... zscs of Excess, The Apace Software
Design .... zscs of Excess, The Apace Software
Idea .... zscs of Excess, The Apace Software
Charset .... zscs of Excess, The Apace Software


SIDs used in this release :
Orbital(/MUSICIANS/M/Mitch_and_Dane/Dane/Orbital.sid)

Download :

Look for downloads on external sites:
 Pokefinder.org


Production Info
Submitted by zscs on 17 August 2023
I really loved to code this intro. In S-MON $c000, of course. :D Here you can find some more details.
SCREEN:
ln# d012 badl*:  scr:   col:     *$d011=$1b /badline
-----------------------------------------------------
!00  $31   $33   $0400  $d800	stars
 01  $39   $3b   $0428  $d828	stars
 02  $41   $43   $0450  $d850	stars + planet ln.0
 03  $49   $4b   $0478  $d878	stars + planet ln.1
 04  $51   $53   $04a0  $d8a0   stars + planet ln.2 (+blue 'X')
 05  $59   $5b   $04c8  $d8c8	stars + planet ln.3
 06  $61   $63   $04f0  $d8f0   stars + planet ln.4
 07  $69   $6b   $0518  $d918   stars + planet ln.5
 08  $71   $73   $0540  $d940   stars + planet ln.6
 09  $79   $7b   $0568  $d968   stars
!10  $81   $83   $0590  $d990  	text: 'PRESENTS:' (with hires sprite overlay)
 11  $89   $8b   $05b8  $d9b8       <empty>
 12  $91   $93   $05e0  $d9e0   text: 'space organic intro'
 13  $99   $9b   $0608  $da08       <empty>
!14  $a1   $a3   $0630  $da30   2x2 scroll, ln.0
 15  $a9   $ab   $0658  $da58   2x2 scroll, ln.1
 16  $b1   $b3   $0680  $da80       <empty>
!17  $b9   $bb   $06a8  $daa8   logo ln.0
 18  $c1   $c3   $06d0  $dad0   logo ln.1
 19  $c9   $cb   $06f8  $daf8   logo ln.2
 20  $d1   $d3   $0720  $db20   logo ln.3
 21  $d9   $db   $0748  $db48   logo ln.4
 22  $e1   $e3   $0770  $db70  	logo ln.5
 23  $e9   $eb   $0798  $db98       <empty>
 24  $f1   $f3   $07c0  $dbc0       <empty>
Sprites: screen top-left X: #24/$18, Y: #50/$32
---------------------- 
DATA: C: code, G: graphics, D: data, S: sprites, V/P: value/pointer
*******************************************************************
---------------------------------------------------------------------
d $0800 - 0cff   2x2 charset, Char data
d $0d00 - 0dff   2x2 charset, Map  data ($0d00: 1st row, $0d80: 2nd row)
d $0e00 - 0e3f   2x2 chars - length ($01 or $02)
d $0e80 - 0eff   sinus (1-16 movement, 128 positions)
d $0f00 - 0f29    -- ..temp converter from 0f00-0f30 for 2x2charset..
d $0f30 - 0f3f   raster colours behind 2x2 scroll
d $1000 - 1e98   music
d $1ea0 - 1fff    --
d $2000 - 26ff   1x1 charset + hires overlay data
d $2700 - 27ff    --
C $2800 - 2fb0   RESERVED for CODE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
d $2fc0 - 2fe8   1-line text/credits shown after pressing SPACE
d $3000 - 33ff   2x2 scroll text. Special chars: $1f - following char will be the speed. 
                   ...zero is pause for ~4-5 secs. $ff: end
d $3400 - 37e7   screen data (during init, copied to $0400)
s $3800 - 393e   Planet's MC grey sprites (5 pcs: $07f8...: $e0, $e1, $e2, $e3, $e4)
s $3940 - 3bbe   Planet's hires 'X' sprites (animation with 5-5 sprites) ($e5-$ee)
s $3bc0 - 3dbe   Excess logo's MC sprites (8 pcs) ($ef-$f6)
s $3dc0 - 3e7e   'presents:' hires sprite overlay (3 pcs) ($f7, $f8, $f9)
s $3e80 - 3ebe   2x2 scroll's left-most char (1st 8-bit column of sprite) ($fa)
s $3ec0 - 3fbe   2x2 scroll fade-in/out hires sprites (2 left: $fb-fc, 2 right: $fd-fe)
d                sinus data for Planet and stars movement
d $1fc0 - 1fdf   'x' sprites anim position (1-5)

--
Code/Routines:
c $0e40 -        little stars cycling
c $0f60 -        31 NOP+RTS
c $0f80 -        29 NOP+BIT $EA+RTS
c $0fa0 -        space pressed: screen clear + credits + reset
c $1ea0 -        Planet's stars movement logic
c $1f80 -        Planet's 'X' sprite anim logic
c $27a0 -        check music: snare
c $27b0 -        in case of snare: colour roll in stars next to the Excess logo #1 -> JMP $0e40
c $2800 -        start
c $2950 -        Excess stars colour set #2
c $29a0 -        Excess stars colour set #1
c $2a00 -        main routine / raster interrupts
c $2b00 -        2x2 scroll routine: main logic
c $2c00 -        set Planet sprite data
c $2ca0 -        Planet X and Y offset set
c $2cd0 -        'presents:' sprite overlay
c $2d20 -        'X' sprites: sprite set at $07fd-fe
c $2d40 -        2x2 scroll sprite init
c $2e40 -        Excess logo sprites init
c $2ed0 -        Excess logo: 2 sprites colour change


--
VARIABLES (ZERO PAGE, memory addr):
v $2d             planet - X offset (0-7), added to $C8/$D016
v $2e             planet - y offset (0-7), added to $18/$d011
v $2f             2x2 scroll 8-pixel position
v $30             2x2 scroll pause counter (decreasing to zero)
v $31             2x2 scroll's tile position (1: first char, 2: second char drawn)
v $32             2x2 scroll's tile width    (1: 1-char, 2: 2 chars wide)
v $33 - 34        scroll position (default: $3000)
v $35             2x2 scroll speed (1-7)
v $36             current char
v $37 - 38        16-bit temporary value (e.g.: 2x2 temporary 16-bit value for sprite copy)
v $2afe, 2aff     2x2 scroll left char, 1st row and 2nd row char value (offset on $0d00)
v $2ca1           Planet: sinus position, X
v $2cb3           Planet: sinus position, Y
v 39              'X' sprite anim position (1-5)
v 3a              Excess logo X offset
v 3b              star animation counter (besides the Planet)

RUNTIME Plan:
-------------
$2a00 - all main code sections, separated by raster interrupts.
Nr#:  $D012:  $2a00,X:  $D018:  $D016:  $D011: ($D0xx value only, if change is made)
 00    2e        00      $18     $c8+x  $18+y   
          .0: init and set D016 and D011 (X + Y movement of the Planet, 7 sprites)
              X offset: 2d, Y offset: 2e
          .1: init sprites and set coordinates (Planet)
          .2: 2x2 scroll logic + 1 sprite (left-most/41th char, copied from $0630 and $0658)
          .3: 5 stars fade our/in in 'Excess' logo

 01    7e        30              $c8      $1b
          .0: init and set D016 and D011 (static, $c8 and $1b)
          .1: 3-sprite 'presents:' hires sprite overlay init/set
          .2: play music (JSR $1003)

 02    9e        52       $12       $c8+x
          .0: set D018, D016  (D016: c8 + $2f)
          .1: init and set coordinates for the 2x2 scroll's sprites (5 pcs)
          .2: rasterbars from $a1 (16 pixel rows)
          .3: 'X' sprite anim position

 03    b6        77       $18       $c8   
          .0: init and set d018 and D016
          .1: init sprites and set coordinates (Excess logo, 8 sprites)
 
 04    d1        99
          .0: right before $D012=#$d6 set sprites MC1 and MC2 to $0a and $05 (for sprites #06 and #07)
          .1: star animation logic
          .2: colour cycling for text 'name of the game' ($05e0 row)
          .3: Planet's movement logic / calculate coordinates
          .4: 
 05    fa        b7                  $13
          .0: set $D011 = #$13
          .1: lda $adad

 06    00                            $1b
          .0: set $d011 = #$1b
          .0:  lda dc01 ; and #10 ; beq *reset



colours:
0 - @ - black
1 - a - white
2 - b - red
3 - c - cyan
4 - d - purple
5 - e - green
6 - f - blue
7 - g - yellow
8 - h - orange
9 - i - brown
a - j - light red
b - k - dark grey
c - l - grey
d - m - light green
e - n - light blue
f - o - light grey

Sprite parameters - Planet: ( note: screen top-left X: #24/$18, Y: #50/$32 )
 - row #02 (3rd):     $07fx      X-coord.: Y-coordinate:
    - MC sprite #0:    8-$e0       $a0         $42  (left-upper)
    - MC sprite #1:    9-$e1       $b8         $42  (upper-mid)
    - MC sprite #2:    a-$e2       $a0         $5a  (mid-left) 
    - MC sprite #3:    b-$e3       $a0         $6f  (bottom-left)
    - MC sprite #4:    c-$e4       $de         $5a  (right part, -2 pixel aligned)
    - Hires sprite #5: d-$e5+x1*2  $b8         $52  (cyan/$03 hires sprite)
    - Hires sprite #6: e-$e6+x2*2  $b8         $52  (blue/$0e hires sprite)
 - $d010:  $00  (X coordinate offset/ 256)
 - $d015:  $7f  (%01111111 -  1: sprite enabled)
 - $d017/d01d:  $00 (x/y double)
 - $d01b: $7f  (sprite priority register, 1 = Sprite #x is behind screen contents)
 - $d01c: $1f  (%00011111 - MC or hires, 0 = Sprite #x is single color; 1 = Sprite #x is multicolor)
 - $d025: $0f  ( sprite MC colour 1 / %01 )
 - $d026: $0c  ( sprite MC colour 2 / %11 )
 - $d027-d02b: $01 ( white )
 - $d02c: $03  ( cyan )
 - $d02d: $0e  ( blue )

Sprite parameters - 'presents:'
 - row #10:           $07fx    X-coord.: Y-coordinate:
  - hires sprite #0:   8-$f7      $98         $82
  - hires sprite #1:   9-$f8      $b0         $82
  - hires sprite #2:   a-$f9      $c8         $82
 - $d010:  $00  (X coordinate offset/ 256)
 - $d015:  $07  (%00000111 -  1: sprite enabled)
 - $d017/d01d:  $00 (x/y double)
 - $d01b: $00  (sprite priority register, 1 = Sprite #x is behind screen contents)
 - $d01c: $00  (%00000000 - MC or hires, 0 = Sprite #x is single color; 1 = Sprite #x is multicolor)
 - $d027-d029: $0b ( dark grey )

Sprite parameters - 2x2 scroller (+1 char in left sprite column, 2-2 fade-in/out hires sprites)
 - row #14:           $07f[x]    X-coord.: Y-coordinate:(X offset: $2f)
  - hires sprite #0:   8-fa       $18+x       $a2
  - hires sprite #1:   9-fb        $18        $a2
  - hires sprite #2:   a-fc        $18        $a2
  - hires sprite #3:   b-fd        $40        $a2
  - hires sprite #4:   c-fe        $40        $a2
 - $d010:  $18  (X coordinate offset/ 256: %00011000)
 - $d015:  $1f  (%00011111 -  1: sprite enabled)
 - $d017/d01d:  $00 (x/y double)
 - $d01b: $1e  (sprite priority register, 1 = Sprite #x is behind screen contents)
 - $d01c: $00  (%00011111 - MC or hires, 0 = Sprite #x is single color; 1 = Sprite #x is multicolor)
 - $d027: $00 ( black - reason: charset used here is inverted, rasters/$d021 colour will be the colour )
 - $d028: $0b
 - $d029: $0c
 - $d02a: $0b
 - $d02b: $0c

Sprite parameters - Excess logo: ($07f8-ff: $ef-$f6)
 - row #02 (3rd):    X-coord.: Y-coordinate:
    - MC sprite #0:    $70          $c2
    - MC sprite #1:    $88          $c2
    - MC sprite #2:    $a0          $c2
    - MC sprite #3:    $b8          $c2
    - MC sprite #4:    $d0          $c2
    - MC sprite #5:    $e8          $c2
    - MC sprite #6:    $a8          $d7 ($d025 = $0a / red!)
    - MC sprite #7:    $d8          $d7 ($d025 = $0a / red!)

 - $d010:  $00  (X coordinate offset/ 256)
 - $d015:  $ff  (%11111111 -  1: sprite enabled)
 - $d017/d01d:  $00 (x/y double)
 - $d01b: $ff  (sprite priority register, 1 = Sprite #x is behind screen contents)
 - $d01c: $ff  (%11111111 - MC or hires, 0 = Sprite #x is single color; 1 = Sprite #x is multicolor)
 - $d025: $0f  ( sprite MC colour 1 / %01 )
 - $d026: $0c  ( sprite MC colour 2 / %11 )
 - $d027-d02c: $01 ( white )
 - $d02d-d02e: $07  ( yellow )
  
Music 3rd channel intrument values> @ $17c7:
   code:        colours:
 - $c7:            9   5   d   f   b   c   3  1
 - $a8: bass       1   3   c   b   f   d   5  9
 - $eb: snare      >animated<
 - $c4: 
Production Info
Submitted by zscs on 1 August 2022
- 2x2 scroll chars compressed (153 chars used only) and using 2x2-char tiles, because why not. And 40(+1)-char wide. Bit more difficult to code the scroller for this but I took it as a challenge. Also speed control and pause functions are implemented. Coded it from zero, no copy.
- 2x2 charset: originally created it upon request from 'The Enemy'. I hope he doesn't mind I use it here. ;)
- 1x1 charset created by me for an another intro but decided to use it here as well.
- Planet was originally created for a 'The Expanse' theme demo (?) along with other special, NUFLI-like graphics. Maybe you'll see all those graphics soon, somewhere. ;-)
- Organic-style Excess logo was my idea, spent quite a lot of time to draw it in PixCen. How I created: used the unrestricted mode in PixCen, pixeled it (keep in my all the restrictions) and as soon as I felt it final, re-drawn the hires char layer in CharPad and also the MC sprites layer in SpritePad afterwards. Very time-consuming, took some errors as well that I had to correct but I don't know any other tool which supported my special 'enhanced gfx modes' fully.
- tried to keep everything below $4000 to fit in 16k. Because of the graphics data I had to optimize the code and also left some planned effects out. Even if I merged e.g. 1x1 font and all hires overlay data to 1 font only. But this intro uses 31 sprites in overall. Planet uses 7 sprites (2 of them animated), 'presents:' text 3 sprites, 2x2 scroller 5 sprites and Excess logo uses 8 sprites.
- because the lack of free space there is no fade-in / fade-out, only a small 'credits' text after pressing Space.
- those little stars around the Planet are realtime calculated, based on a little sinus table. I had a very limited free space so only 3 different movement calculated. Also the colours of stars are changing time to time, kind of 'randomly'.
- 100% coded in S-MON $C000 (ouch!) :-)
Search CSDb
Advanced
Navigate
Prev - Random - Next
Detailed Info
· Summaries (1)
· User Comments (11)
· Production Notes (2)
Fun Stuff
· Goofs
· Hidden Parts
· Trivia
Forum
· Discuss this release
Support CSDb
Help keep CSDb running:



Funding status:




About this site:
CSDb (Commodore 64 Scene Database) is a website which goal is to gather as much information and material about the scene around the commodore 64 computer - the worlds most popular home computer throughout time. Here you can find almost anything which was ever made for the commodore 64, and more is being added every day. As this website is scene related, you can mostly find demos, music and graphics made by the people who made the scene (the sceners), but you can also find a lot of the old classic games here. Try out the search box in the top right corner, or check out the CSDb main page for the latest additions.
Home - Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.086 sec.