Copy Link
Add to Bookmark
Report

disC=overy special edition 1

eZine's profile picture
Published in 
disCovery
 · 4 Jul 2021

  
__ _____
`--' / _ \ _/\ /\_ __ _
: : __ | | | | \ \ / / /\_\ __
| ||__| | | |__| \ \ / / \/_/_
___| | __ ______ | | _____ __\__\ /__/___ ______ __ ___
/ _| || | / _| || ||____// _ \\ // _| | / _| || | / /
| | | || || |_|__|| ||____\ | | |\ /| | | || | | || | / /
| | | || |`\___ \ | | __ | | | | \/ | |_|__|| | |__|| | / /
| | | || |.--. | || | | || | | | | | .--.| | | |/ /
| |_| || || |_| || |_| || |_| |\ /| |_| || | | / /
`\___|__||__|`\_____/'`\_____/'`\_____/' \/ `\_____/'| | `\/ / :
: _ _ __ __|__|______/ / \ |
\ | ...the Journal of the Commodore Enthusiast _ __ ____________/ \ | /
\|/ August 28, 1997 |__| \|/
-=+-------------------------------------------------------------------------+=-
/|\ .: /\_/\_: Special Edition 1 /\_/\_ /|\
/ | \ /\\ / \_\- ~~~~~~~~~~~~~~~~~~~~~~~~~~ /\\ / \_\ / | \
: .:. \ ... / <-- ..En eterno descanso.. --> \ ... / .:. :

--Logo by Wendell "WaD" Davis III



P R E A M B L E


Welcome to this special issue of disC=overy, the Journal of the Commodore
Enthusiast. This one is dedicated to John Kaiser (AKA Waveform), a coding
dynamo and good friend to the NTSC C64 demo scene. John passed away
last April, but his works live on. This edition presents a compilation of
his best efforts for the enjoyment of all C64 fans worldwide.

- Mike Gordillo



:::::::::::d:i:s:C=:o:v:e:r:y:::::::::::::::::s:p:e:c:i:a:l::1::::::::::::::::
::::::::::::::::::::::T A B L E O F C O N T E N T S:::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::


-Software Section-

/S01 - "The Collected Works of John Kaiser"
$WAVE by XmikeX



:::::::::::d:i:s:C=:o:v:e:r:y:::::::::::::::::s:p:e:c:i:a:l::1::::::::::::::::
/S01::$WAVE:::::::::::::::::::S O F T W A R E:::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::


The Collected Works of John Kaiser (aka Waveform)

by XmikeX


This article includes the best of John Kaiser's creations for the C64.
(One special jewel, Venturia, makes its public debut here). All files
have been uuencoded for ease of transmission and require uudecoding into
executable C64 binaries. A short description of the files, as seen below,
is followed by the uuencoded versions.


disc-demo
---------

The disC=overy demo was first published in disC=overy, issue 2, along
with accompanying article -- a tutorial on 2D rotation. In its original
release, it was split up into several files. It is presented here as a
single, fully packed, executable file.


vectorwave
----------

Vectorwave initially found itself into a millenium demo. Further plans
included using it in a follow-up to the disc-demo expose' on rotation
techniques. It is presented here as executable and source.


waveness 1 and 2
----------------

Waveness 1 was John's first public C64 demo. Waveness 2 included a
morphing sequence whose data was derived from an x86 PC program, but the
result was all C64 :).


wavestorm.mlm
-------------

Wavestorm was John's last C64 demo page. It was either going to be a
stand-alone demo or bundled in an MLM production. Unfortunately, John
never got to finish it. As a bit of trivia, I can claim credit for its
name, as John indulged my suggestion of "Wavestorm" in deferrence to the
kind of thunderous impact a 'Waveform demo' should make :). This version
of Wavestorm has been enhanced by Roy Batty/MLM, and originally released
by Roy Batty/MLM.


XwaveX
------

The XwaveX demo was part of the 1996 NTSC 4k contest and named after
yours truly for reasons mentioned in the demo :).


Venturia
--------

Venturia is an Ultima-style game that John was working on since at least
1993 (when I first met him). I first saw Venturia only a few months
before his passing, about 3-4 years into development. The long term scale
of this project was simply due to "real-world" concerns which got in the
way of his programming. However, despite having little time to work on
this game, there is a level of sophistication in Venturia that could
easily make one believe it is a finished product.

Venturia documentary (brief)
--
Please note that "venturia-intro" is a standalone introduction file. It will
not chain "venturia_snap", which is the boot file for Venturia. Load and run
"venturia_snap" to start the game.

The documentation on Venturia, following the (C)opyright disclaimer, was
originally provided by John via email. As far as I know, this is the only
documentation for the program that is available. It must be stressed that
John never finished Venturia and therefore options illustrated may or
may not work as intended.

Remember, Venturia is (C)opyright 1993-1997 John Kaiser (AKA Waveform). It is
NOT in the public domain. The following stipulations concerning distribution
apply (from the estate of J. Kaiser) :

A) Venturia may only be copied and distributed in its entirety, unchanged.
Under NO conditions shall it be modified or incorporated into other works.

B) Venturia may only be copied and distributed freely, without charge.
Under NO conditions shall it be distributed for the purposes of sale NOR
shall it be distributed on any media: electronic, magnetic, print, or
otherwise upon which receipt of said media involves either a monetary fee,
credit charge, handling and shipping charge, or participation in a barter
system.
--

[...Excerpt begins...]

Hey Xman,

Can't find the great big drawn out doc file I had originally made for
this but here are some keys to quickly get you started with checking out
that preview:

Movement Keys: (ala Ultima or Questron)

@
: ;
/

Misc Keys:

F7 will abort/exit/end virtually any action from inside any window
SPACE usually toggles between windows, if there are more than one

C - Open Spell Book
SPACE flips between "scribed scrolls" and the contents of your bag
of reagents
I - Open Inventory
E - Equip Toggle
S - Scribe a scroll to your spell book
B - Move reagents to your reagents bag
D - Drop Item (permanent drop)
L - Bring Up Look Targetting
Use the movement keys to place the target on the object/icon you wish
to look at... space/enter to examine it, F7 to abort.
S - Open Statistics Windows
space toggles the attributes display and the shards recovered display
T - Time/Date
something to look at. =)

F1 - Brings up Game Utilities Window.
Only a few of the utilities even show up on this list, and currently
only one is even active. You can utilize the key repeat toggle function
from here... the load and save game functions are disabled for the time
being.

Well, that should be enough for you to get a good look at what is sort of
a rough draft for how some of the game play works.

One final note... Unix mangled the filenames of the "?posi.xx" files. The
first character should be a "<-" (cbm left arrow)... but then again,
since the load and save game functions should be disabled, I guess it
doesn't make much difference. =) Hahahaha. =)

[...Excerpt ends...]
--


[: Source file for Vectorwave and UUencoded binaries for all files
mentioned in this article are reproduced below :]


* Vectorwave source file (for TASM) *
-------------------------------------

*= $3400
;---------------------------------------
sintab = $4000;3400
costab = $4100;3500
sqrtab = $4200;3600

lobasetab0 = $4300;3700
hibasetab0 = $4380;3780
lobasetab1 = $4400;3800
hibasetab1 = $4480;3880
masktable = $4500;3900
rotsinus = $4600;4000
expsinus = $4700;4100
scnmat0 = $4800;5000
scnmat1 = scnmat0+640
scnmat2 = scnmat0+1280
scnmat3 = scnmat0+1920
scnmat4 = scnmat0+2560
scrolltext = $5500;$4200

matpos = 1396

scrlpos1 = 1024
scrlpos2 = scrlpos1+40

raster000 = 48
raster001 = 65
raster002 = 121
raster003 = 250

char = $02 ;used by screen
screen = $03 ; matrix setup
;$04 ;

getxytemp = $02 ;used by getxy
tx0 = $03 ; routine
ty0 = $04 ;
xpos = $05 ;calc'd x coord
ypos = $06 ;calc'd y coord
gr = $07 ;radius
gt = $08 ;theta

x1 = $09 ;used mainly by
x2 = $0a ; drawline
xdir = $0b ; routine
dx = $0c ;
y1 = $0d ;
y2 = $0e ;
ydir = $0f ;
dy = $10 ;

pa = $11 ;used by plot
bitx = $12 ;
scrn = $13 ;
;$14 ;

mly = $15 ;mainloop temp

increment = $16

scrollpix = $18
saved018 = $19
scrlind = $1a
;$1b

ctrlscroll = $1c
irq002col = $1d

points = $1f
theta = $20
radius = $40
initrad = $60
;---------------------------------------
startup lda #" " ;clear screen
jsr $ffd2 ;

lda #$01 ;color vector
ldy #$00 ; area white
startup01 sta 55656,y ;
sta 55870,y ;
sta 56084,y ;
iny ;
cpy #214 ;
bne startup01 ;

ldy #39 ;color scroll
startup02 lda #14 ; text
sta 55296,y ;
lda #3 ;
sta 55336,y ;
dey ;
bpl startup02 ;

sei ;setup first
lda #<irq000 ; irq
sta $0314
lda #>irq000
sta $0315
lda $d011
and #%01111111
sta $d011
lda #raster000
sta $d012
lda #$7f
sta $dc0d
lda #%00000001
sta $d01a
lda #$00
jsr $1000
cli
;----------------------------
lda #<scrolltext;init scroll
sta scrlind ; text
lda #>scrolltext; pointer
sta scrlind+1 ;
lda #$08 ;init fine
sta scrollpix ; scroll
lda #$00 ;disable
sta ctrlscroll ; scroller
;----------------------------
lda #$00 ;start out
sta irq002col ; black
;----------------------------
lda $d018 ;point VIC to
and #%11110000 ; c-set
ora #%00001000 ; staring at
sta $d018 ; $2000
;----------------------------
jsr blank1 ;clear out
jsr blank2 ; buffers

jsr matrix00 ;first matrix
;----------------------------
lda #$00
sta increment

jsr initobj00
;---------------------------------------
runtime lda #$00
sta ctrlscroll
lda #<scrolltext
sta scrlind
lda #>scrolltext
sta scrlind+1
;----------------------------
inc ctrlscroll

runtime01 lda scrlind ;"shoooom..."
cmp #120 ;
bcc runtime01 ;
;----------------------------
dec ctrlscroll

jsr whtfade
jsr blufade
;----------------------------
inc ctrlscroll

runtime04 lda scrlind ;"lets start
cmp #197 ; with..."
bcc runtime04 ;
;----------------------------
dec ctrlscroll

jsr mainloop ;put triangle
;----------------------------
inc ctrlscroll

runtime05 lda scrlind+1 ;"give it a
cmp #$56 ; spin..."
bne runtime05 ;
lda scrlind ;
cmp #16 ;
bcc runtime05 ;
;----------------------------
lda #$01
sta increment

ldy #$00
runtime06 lda #$10
sta rtl2
runtime07 dec rtl1
bne runtime07
dec rtl2
bne runtime07
sty rtty
jsr mainloop
ldy rtty
iny
cpy #124
bne runtime06
;----------------------------
; do black area thing here
;----------------------------
runtime20 jsr doplain
;----------------------------
jsr whtfade
jsr initobj10
jsr mainloop
jsr blufade

jsr doplain
;----------------------------
jsr whtfade
jsr initobj20
jsr mainloop
jsr blufade

jsr doplain
;----------------------------
jsr whtfade
jsr initobj30
jsr mainloop
jsr blufade

jsr doplain
;----------------------------
runtime30 jsr whtfade
jsr initobj00
jsr mainloop
jsr blufade

lda #15
sta doresub
jsr dore
;----------------------------
jsr whtfade
jsr initobj10
jsr mainloop
jsr blufade

jsr dore
;----------------------------
jsr whtfade
jsr initobj20
jsr mainloop
jsr blufade

jsr dore
;----------------------------
jsr whtfade
jsr initobj30
jsr mainloop
jsr blufade

lda #10
sta doresub
jsr dore
;----------------------------
runtime40 jsr whtfade
jsr matrix10
jsr initobj00
jsr mainloop
jsr blufade

lda #15
sta doresub
jsr dore
;----------------------------
jsr whtfade
jsr initobj10
jsr mainloop
jsr blufade

jsr dore
;----------------------------
jsr whtfade
jsr initobj20
jsr mainloop
jsr blufade

jsr dore
;----------------------------
jsr whtfade
jsr initobj30
jsr mainloop
jsr blufade

lda #10
sta doresub
jsr dore
;----------------------------
runtime50 jsr whtfade
jsr matrix20
jsr initobj00
jsr mainloop
jsr blufade

lda #15
sta doresub
jsr dore
;----------------------------
jsr whtfade
jsr initobj10
jsr mainloop
jsr blufade

jsr dore
;----------------------------
jsr whtfade
jsr initobj20
jsr mainloop
jsr blufade

jsr dore
;----------------------------
jsr whtfade
jsr initobj30
jsr mainloop
jsr blufade

lda #10
sta doresub
jsr dore
;----------------------------
runtime60 jsr whtfade
jsr matrix30
jsr initobj00
jsr mainloop
jsr blufade

lda #15
sta doresub
jsr dore
;----------------------------
jsr whtfade
jsr initobj10
jsr mainloop
jsr blufade

jsr dore
;----------------------------
jsr whtfade
jsr initobj20
jsr mainloop
jsr blufade

jsr dore
;----------------------------
jsr whtfade
jsr initobj30
jsr mainloop
jsr blufade

lda #10
sta doresub
jsr dore
;----------------------------
runtime70 jsr whtfade
jsr matrix40
jsr initobj00
jsr mainloop
jsr blufade

lda #15
sta doresub
jsr dore
;----------------------------
jsr whtfade
jsr initobj10
jsr mainloop
jsr blufade

jsr dore
;----------------------------
jsr whtfade
jsr initobj20
jsr mainloop
jsr blufade

jsr dore
;----------------------------
jsr whtfade
jsr initobj30
jsr mainloop
jsr blufade

lda #10
sta doresub
jsr dore
;----------------------------
jmp runtime40
;---------------------------------------
doplain lda #$00
sta rtl1
doplain1 ldy rtl1
lda rotsinus,y
sec
sbc #10
sta increment
jsr mainloop
inc rtl1
bne doplain1
rts
;---------------------------------------
dore lda #$00
sta rtl1
sta rtl2
dore1 ldy rtl1
lda rotsinus,y
sec
sbc #10
sta increment
ldy rtl2
ldx #$00
dore2 sec
lda expsinus,y
sbc doresub
clc
adc initrad,x
cmp #62
bcc dore3
lda #62
dore3 sta radius,x
inx
cpx points
bne dore2
jsr mainloop
inc rtl1
inc rtl2
bne dore1
rts

doresub .byte $00
;---------------------------------------
rtty .byte $00

rtl1 .byte $00
rtl2 .byte $00
rtl3 .byte $00

rtcolind .byte 4,6,14,3,13,1
.byte 13,3,14,6
;---------------------------------------
mainloop ; jsr $ff9f
; lda $cb
; cmp #$04
; bne mainloop00
; inc increment
; jmp mainloop02
mainloop00 ; cmp #$05
; bne mainloop01
; dec increment
; jmp mainloop02
mainloop01 ; cmp #$06
; bne mainloop02
; lda #$00
; sta increment

mainloop02 ldx #$00 ;rotate all
rotallpnts lda theta,x ; points
clc
adc increment
sta theta,x
inx
cpx points
bne rotallpnts
;----------------------------
lda theta ;set up
sta gt ; first
lda radius ; start point
sta gr ; to prevent
jsr getxy ; the first
lda xpos ; line from
clc ; having
adc #64 ; "garbage"
sta x1 ; initial
lda ypos ; values
clc ;
adc #64 ;
sta y1 ;

ldy #$01 ;put current
mainloop1 lda theta,y ; points
sta gt ; r,theta in
lda radius,y ; work regs.
sta gr

jsr getxy ;calc. coord

lda xpos ;center polar
clc ; coords over
adc #64 ; matrix
sta x2
lda ypos
clc
adc #64
sta y2

sty mly ;draw a line
jsr drawline ;
ldy mly ;

lda x2 ;endpoint
sta x1 ; into
lda y2 ; startpoint
sta y1 ;

iny ;draw all
cpy points ; lines
bne mainloop1

lda $d018 ;show the
eor #%00000010 ; work
sta $d018 ;

lda $d018 ;prepare the
and #%00000010 ; next buffer
beq mainloop2 ; for drawing
jsr blank1 ;
jmp mainloop3 ;
mainloop2 jsr blank2 ;

mainloop3 rts
;---------------------------------------
getxy stx tx0
sty ty0

ldy gt

lda sintab,y ;f(a-b)
sec ;
sbc gr ;
tax ;
lda sqrtab,x ;
sta getxytemp ;

lda sintab,y ;f(a+b)
clc ;
adc gr ;
tax ;
lda sqrtab,x ;
sec ;
sbc getxytemp ;
sta ypos ;y=sin(@)*r

lda costab,y ;f(a-b)
sec ;
sbc gr ;
tax ;
lda sqrtab,x ;
sta getxytemp ;

lda costab,y ;f(a+b)
clc ;
adc gr ;
tax ;
lda sqrtab,x ;
sec ;
sbc getxytemp ;
sta xpos ;x=cos(@)*r

ldx tx0
ldy ty0

rts
;---------------------------------------
drawline lda x2
cmp x1
beq dlf
bcc dlc
lda y2
cmp y1
bcc dlb
jmp drawline0 ;dx=+ dy=+
dlb jmp drawline1 ;dx=+ dy=-

dlc lda y2
cmp y1
bcc dle
jmp drawline2 ;dx=- dy=+
dle jmp drawline3 ;dx=- dy=-

dlf jmp drawline4 ;straight
;---------------------------------------
drawline0 sec
lda x2 ;get dx
sbc x1
sta dx

lda y2 ;get dy
sbc y1
sta dy

ldx x1 ;initial
ldy y1 ; coords

lda #$00 ;plot 1st
sbc dx ; pixel
jsr plot

loop0 clc
adc dy
bcc notyet0 ;don't iny

fix0 iny
sec
sbc dx
bcc notyet0
jsr plot
jmp fix0 ;loop back

notyet0 inx
jsr plot ;plot pixel

cpx x2
bne loop0 ;finish line
rts
;---------------------------------------
drawline1 sec
lda x2
sbc x1
sta dx

lda y1
sbc y2
sta dy

ldx x1
ldy y1

lda #$00
sbc dx
jsr plot

loop1 clc
adc dy
bcc notyet1

fix1 dey
sec
sbc dx
bcc notyet1
jsr plot
jmp fix1

notyet1 inx
jsr plot
cpx x2
bne loop1
rts
;---------------------------------------
drawline2 sec
lda x1
sbc x2
sta dx

lda y2
sbc y1
sta dy

ldx x1
ldy y1

lda #$00
sbc dx
jsr plot

loop2 clc
adc dy
bcc notyet2

fix2 iny
sec
sbc dx
bcc notyet2
jsr plot
jmp fix2

notyet2 dex
jsr plot
cpx x2
bne loop2
rts
;---------------------------------------
drawline3 sec
lda x1
sbc x2
sta dx

lda y1
sbc y2
sta dy

ldx x1
ldy y1

lda #$00
sbc dx
jsr plot

loop3 clc
adc dy
bcc notyet3
fix3 dey
sec
sbc dx
bcc notyet3
jsr plot
jmp fix3
notyet3 dex
jsr plot
cpx x2
bne loop3
rts
;---------------------------------------
drawline4 lda y2
cmp y1
bcc drawline5

ldx x1 ;draw
ldy y1 ; straight
drawline4a jsr plot ; downwards
iny ;
cpy y2 ;
bne drawline4a ;
rts ;

drawline5 ldx x1 ;draw
ldy y1 ; straight
drawline5a jsr plot ; upwards
dey ;
cpy y2 ;
bcs drawline5a ;

rts
;---------------------------------------
plot sta pa

lda $d018
and #%00000010
beq plot1

lda lobasetab0,x
sta $fa
lda hibasetab0,x
sta $fb
lda ($fa),y
ora masktable,x
sta ($fa),y

lda pa
rts

plot1 lda lobasetab1,x
sta $fa
lda hibasetab1,x
sta $fb
lda ($fa),y
ora masktable,x
sta ($fa),y

lda pa
rts
;---------------------------------------
; MISC SIMPLE†ROUTINES
;---------------------------------------
whtfade ldy #$01 ;fade to
whtfade1 lda #$00 ; white in
sta rtl1 ; vector
lda #$08 ; area
sta rtl2 ;
lda rtcolind,y ;
sta irq002col ;
whtfade2 dec rtl1 ;
bne whtfade2 ;
dec rtl2 ;
bne whtfade2 ;
iny ;
cpy #5 ;
bne whtfade1 ;

rts
;---------------------------------------
blufade ldy #$05 ;fade to
blufade1 lda #$00 ; blue in
sta rtl1 ; vector
lda #$08 ; area
sta rtl2 ;
lda rtcolind,y ;
sta irq002col ;
blufade2 dec rtl1 ;
bne blufade2 ;
dec rtl2 ;
bne blufade2 ;
iny ;
cpy #10 ;
bne blufade1 ;

rts
;---------------------------------------
blank1 sty blanky

lda #$00
ldy #$00
blank1a sta $2000,y
sta $2080,y
sta $2100,y
sta $2180,y
sta $2200,y
sta $2280,y
sta $2300,y
sta $2380,y
sta $2400,y
sta $2480,y
sta $2500,y
sta $2580,y
sta $2600,y
sta $2680,y
sta $2700,y
sta $2780,y
iny
bpl blank1a

ldy blanky
rts
;---------------------------------------
blank2 sty blanky

lda #$00
ldy #$00
blank2a sta $2800,y
sta $2880,y
sta $2900,y
sta $2980,y
sta $2a00,y
sta $2a80,y
sta $2b00,y
sta $2b80,y
sta $2c00,y
sta $2c80,y
sta $2d00,y
sta $2d80,y
sta $2e00,y
sta $2e80,y
sta $2f00,y
sta $2f80,y
iny
bpl blank2a

ldy blanky
rts
;---------------------------------------
; INIT OBJECT†ROUTINES
;---------------------------------------
initobj00 ldx #$00 ;00=triangle
initobj01 lda itheta00,x ;
sta theta,x ;
lda iradius00,x ;
sta radius,x ;
inx ;
cpx #$04 ;
bne initobj01 ;

lda #$04 ;4 endpoints
sta points ;

jmp initobjend
;---------------------------------------
initobj10 ldx #$00 ;10=triangle
initobj11 lda itheta10,x ;
sta theta,x ;
lda iradius10,x ;
sta radius,x ;
inx ;
cpx #$05 ;
bne initobj11 ;

lda #$05 ;5 endpoints
sta points ;

jmp initobjend
;---------------------------------------
initobj20 ldx #$00 ;20=4pt star
initobj21 lda itheta20,x ;
sta theta,x ;
lda iradius20,x ;
sta radius,x ;
inx ;
cpx #$09 ;
bne initobj21 ;

lda #$09 ;9 endpoints
sta points ;

jmp initobjend
;---------------------------------------
initobj30 ldx #$00 ;20=4pt star
initobj31 lda itheta30,x ;
sta theta,x ;
lda iradius30,x ;
sta radius,x ;
inx ;
cpx #21 ;
bne initobj31 ;

lda #21 ;21 endpoints
sta points ;

jmp initobjend
;---------------------------------------
initobjend ldx #$00
initobjen1 lda radius,x
sta initrad,x
inx
cpx points
bne initobjen1

rts
;---------------------------------------
; DISPLAY MATRIX ROUTINES
;---------------------------------------
matrix00 ldy #$00
matrix01 lda scnmat0,y
sta 1384,y
lda scnmat0+128,y
sta 1384+128,y
lda scnmat0+256,y
sta 1384+256,y
lda scnmat0+384,y
sta 1384+384,y
lda scnmat0+512,y
sta 1384+512,y
iny
bpl matrix01

rts
;---------------------------------------
matrix10 ldy #$00
matrix11 lda scnmat1,y
sta 1384,y
lda scnmat1+128,y
sta 1384+128,y
lda scnmat1+256,y
sta 1384+256,y
lda scnmat1+384,y
sta 1384+384,y
lda scnmat1+512,y
sta 1384+512,y
iny
bpl matrix11

rts
;---------------------------------------
matrix20 ldy #$00
matrix21 lda scnmat2,y
sta 1384,y
lda scnmat2+128,y
sta 1384+128,y
lda scnmat2+256,y
sta 1384+256,y
lda scnmat2+384,y
sta 1384+384,y
lda scnmat2+512,y
sta 1384+512,y
iny
bpl matrix21

rts
;---------------------------------------
matrix30 ldy #$00
matrix31 lda scnmat3,y
sta 1384,y
lda scnmat3+128,y
sta 1384+128,y
lda scnmat3+256,y
sta 1384+256,y
lda scnmat3+384,y
sta 1384+384,y
lda scnmat3+512,y
sta 1384+512,y
iny
bpl matrix31

rts
;---------------------------------------
matrix40 ldy #$00
matrix41 lda scnmat4,y
sta 1384,y
lda scnmat4+128,y
sta 1384+128,y
lda scnmat4+256,y
sta 1384+256,y
lda scnmat4+384,y
sta 1384+384,y
lda scnmat4+512,y
sta 1384+512,y
iny
bpl matrix41

rts
;---------------------------------------
; DEMO†IRQ's
;---------------------------------------
irq000 inc $d019

dec $03ff
dec $03ff
nop

lda #$01
sta $d020

lda scrollpix
sta $d016
lda $d018
sta saved018
lda #$1c
sta $d018

dec $03ff
dec $03ff
dec $03ff
dec $03ff
dec $03ff
dec $03ff
dec $03ff

lda #$0b
sta $d021
sta $d020

lda #raster001
irq001a cmp $d012
bne irq001a

dec $03ff
dec $03ff
dec $03ff
dec $03ff
dec $03ff
dec $03ff
dec $03ff
dec $03ff
dec $03ff

lda #$01
sta $d020
sta $d021

dec $03ff
dec $03ff
dec $03ff
dec $03ff
dec $03ff
dec $03ff
dec $03ff
dec $03ff
dec $03ff

lda #$00
sta $d021
sta $d020

lda saved018
sta $d018
lda #%00001000
sta $d016
;----------------------------
sei
lda #<irq002
sta $0314
lda #>irq002
sta $0315
lda #raster002
sta $d012
cli

pla
tay
pla
tax
pla
rti
;---------------------------------------
irq002 inc $d019

dec $03ff ;minor start
dec $03ff ; delay

lda #$01 ;white line
sta $d021 ;
sta $d020 ;

dec $03ff
dec $03ff
dec $03ff
dec $03ff
dec $03ff
dec $03ff
dec $03ff
dec $03ff
dec $03ff

lda irq002col
sta $d021
sta $d020
;----------------------------
jsr $1003 ;play tune
;----------------------------
lda ctrlscroll ;scroll text
beq irq002c ; enabled?

dec scrollpix ;fine scroll
dec scrollpix ;
bpl irq002c ; left

lda #$07 ;reinit
sta scrollpix ; fine scroll
inc scrlind ;increment
bne irq002a ; text
inc scrlind+1 ; pointer

irq002a ldy #$01 ;course
irq002b lda scrlpos1,y ; scroll text
sta scrlpos1-1,y; over 1 char
lda scrlpos2,y ;
sta scrlpos2-1,y;
iny ;
cpy #40 ;
bne irq002b ;

ldy #$00 ;tack on the
lda (scrlind),y ; next scroll
sta scrlpos1+39 ; character
clc ; to end of
adc #64 ; scroll text
sta scrlpos2+39 ;

lda scrlind
cmp #$78
bne irq002c
lda scrlind+1
cmp #$59
bne irq002c
lda #$84
sta scrlind
lda #$57
sta scrlind+1
;----------------------------
irq002c sei ;setup next
lda #<irq003 ; irq
sta $0314
lda #>irq003
sta $0315
lda #raster003
sta $d012
cli

pla
tay
pla
tax
pla
rti
;----------------------------
irq003 inc $d019

dec $03ff
dec $03ff
dec $03ff

lda #$01
sta $d020

dec $03ff
dec $03ff
dec $03ff
dec $03ff
dec $03ff
dec $03ff
dec $03ff
dec $03ff
dec $03ff
dec $03ff

lda #$00
sta $d020
sta $d021
;----------------------------
sei
lda #<irq000
sta $0314
lda #>irq000
sta $0315
lda #raster000
sta $d012
cli

pla
tay
pla
tax
pla
rti
;---------------------------------------
; OBJECT†DEFINITIONS
;---------------------------------------
;TRIANGLE
itheta00 .byte $00,85,170
.byte $00
iradius00 .byte 40,40,40
.byte 40
;----------------------------
;SQUARE
itheta10 .byte $00,$40,$80,$c0
.byte $00
iradius10 .byte 40,40,40,40
.byte 40
;----------------------------
;4 POINTED STAR
itheta20 .byte $00,$20,$40,$60
.byte $80,$a0,$c0,$e0
.byte $00
iradius20 .byte 62,15,62,15
.byte 62,15,62,15
.byte 62
;----------------------------
;20 POINTED†STAR
itheta30 .byte 13,26,38,51,64
.byte 77,90,102,115,128
.byte 141,154,166,179,192
.byte 205,218,230,243,0
.byte 13

iradius30 .byte 60,30,60,10,60
.byte 30,60,10,60,30
.byte 60,10,60,30,60
.byte 10,60,30,60,10
.byte 60
;---------------------------------------
blanky .byte $00



* The disC=overy demo, single-file version *
--------------------------------------------

begin 644 disc-demo.wav
M`0@-",X'GB`H,C`V-"D```!XJ32%`:(%O4((G2T`RA#WFJ``QC+.+`BQ,9D`
M`,C0^*4RR0C0[;E(")D``<C0]TP``0`$W/)=%K$O*BHJ*BD'JKT:`8T8`;$O

...

M`F@1`H(/`J,.`H(/!H(/`@H-`@H-`:,.`8(/`K,4`K,4`HD3`F@1`H(/`:,.
M`8(/!@H-!@H-"8(/`Z,.!@H-!A,G"=`B`P0?!A0:`Q0:`A0:`1,G!F8I`]`B
A`@0?`48=!A0:`Q0:`XH3!K,4!`0?!=`B`Q0:HR$@W@``
`
end



* Vectorwave *
--------------

begin 644 vectorwave.wav
M`0@+"`H`GC(P-C$```!XJ7^-#=R-#=VI-(4!H@R@^+EQH)D'_XC`_]#USB,(
MSB`(["`(T.KF`:+JFLB,#MR,#]R,#MV,#]VY``J9``&Y``N9`-A*2DI*F0#:

...

MD?(.\E#R,_-7\<KQ[?8^\2_S9OZE].WU`;"[`0$`NP$!`+L:&AH:&AH:&AH:
+&AH:&AH:&AH:&AH`
`
end


* Waveness 1 & 2 *
------------------

begin 644 waveness-1n2.sfx
M`1PH',8'ES(P+#`ZB\(H,C`ILC"G_@(P.I["*#0V*:PR-3:J-C8Z@``\'-`'
MGL(H-#0IK#(U-JHV-CJ``````$Q"`:D.C0#_J6"%_"#\`+J.U@/*FF@XZ0&%

...

M?62VQI[Q?YE0=[X;>-`T^GFR$[QZH"`%$`+C/>.N&,G"GA2/K6MU+V8#;I.S
MMI9>M]$CO*RF41U-O/6MK]H*$CQM:>V'A@9W2'W(^3[Q![JA)<9KN(&S`YPO
.YPM73?3ITZU>ZC;F````
`
end


* Wavestorm/MLM *
-----------------

begin 644 wavestorm.mlm
M`0@0",<'GB`R,#8V(%@M4@```'BB_YKHCB#0CB'0O3X(X"NP`R#2_[UH")TM
M!+UG"9TL!>C0YWBI.(4!3"X$D),>(S`V-B!7059%4U1/4DT@("`@(%=!5D5&

...

M&!"_$+@3[QPH(4"_`+]0GU"O`*_6O_>$&AH:&AH:&AH:&AH:&AH:&AH:&AH:
M&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:
&&AH:&AH:
`
end


* XwaveX *
----------

begin 644 xwavex.wav
M`0@:"`H`GC(P.#`@6S1+(%=!5D5.15-3(5T`````````H`"I"LT2T-#[N9X*
MC2#0C2'0A`J@$*(`RM#]B-#XI`K(P`O0W:F3(-+_H`"Y=0^9`""Y=1"9`"'(

...

M&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:
D&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:
`
end


* Venturia *
------------

begin 644 venturia.sfx
M`1PH',8'ES(P+#`ZB\(H,C`ILC"G_@(P.I["*#0V*:PR-3:J-C8Z@``\'-`'
MGL(H-#0IK#(U-JHV-CJ``````$Q"`:D.C0#_J6"%_"#\`+J.U@/*FF@XZ0&%

...


M30````$"````"$P4```*7W!O<VDN,#0`4+K?QB9K\/)9#&X&+=O1>1C`!K;\
M>`+JRY"3'S?%T>_X+7L6'5[?:JN*83SD:&L=36%THPS@`P9``7K4`,]1`#ME
.1C`!/`"&`)P`@`$]8\``
`
end

← previous
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT