mirror of
https://github.com/sehugg/8bitworkshop.git
synced 2024-11-24 12:31:25 +00:00
vcs: forgot vcslib.ca65
This commit is contained in:
parent
64f27879d7
commit
d11c1d1664
308
presets/vcs/ecs/airsea.ecs
Normal file
308
presets/vcs/ecs/airsea.ecs
Normal file
@ -0,0 +1,308 @@
|
||||
|
||||
//#resource "vcs-ca65.h"
|
||||
|
||||
import "vcslib.ecs"
|
||||
import "sprites.ecs"
|
||||
import "score.ecs"
|
||||
import "sound.ecs"
|
||||
import "velocity.ecs"
|
||||
import "kernel1.ecs"
|
||||
import "random.ecs"
|
||||
|
||||
demo Main
|
||||
|
||||
using FrameLoop
|
||||
using Kernel2Digit, BCDMath
|
||||
using StandardKernel, Kernel1Sprite
|
||||
using KernelMissile, KernelCollide
|
||||
using SetXPos, SetHorizPos
|
||||
|
||||
entity Blank [Bitmap,Colormap]
|
||||
decode vcs_sprite
|
||||
---
|
||||
........ 00
|
||||
---
|
||||
end
|
||||
entity Explode1 [Bitmap,Colormap]
|
||||
decode vcs_sprite
|
||||
---
|
||||
x......x 08
|
||||
.x....x. 0a
|
||||
..x..x.. 0c
|
||||
........ 0e
|
||||
xx....xx 0e
|
||||
........ 0e
|
||||
..x..x.. 0c
|
||||
.x....x. 0a
|
||||
x......x 08
|
||||
---
|
||||
end
|
||||
entity Explode2 [Bitmap,Colormap]
|
||||
decode vcs_sprite
|
||||
---
|
||||
..x..x.. 08
|
||||
.x....x. 0a
|
||||
x......x 0c
|
||||
...xx... 0e
|
||||
..x..x.. 0e
|
||||
...xx... 0e
|
||||
x......x 0c
|
||||
.x....x. 0a
|
||||
..x..x.. 08
|
||||
---
|
||||
end
|
||||
entity Explode3 [Bitmap,Colormap]
|
||||
decode vcs_sprite
|
||||
---
|
||||
x..xx..x 08
|
||||
..x..x.. 0a
|
||||
.x....x. 0c
|
||||
..x..x.. 0e
|
||||
x......x 0e
|
||||
..x..x.. 0e
|
||||
.x....x. 0c
|
||||
..x..x.. 0a
|
||||
x..xx..x 08
|
||||
---
|
||||
end
|
||||
|
||||
entity Weird [Bitmap,Colormap]
|
||||
decode vcs_sprite
|
||||
---
|
||||
.x...... 12
|
||||
.xx..... 14
|
||||
.xxx.... 16
|
||||
.x.xx... 18
|
||||
.xx.xx.. 1a
|
||||
.xxx.xx. 1c
|
||||
.x.x.x.x 1e
|
||||
.x.x.x.x 18
|
||||
---
|
||||
end
|
||||
|
||||
entity Cool [Bitmap,Colormap]
|
||||
decode vcs_sprite
|
||||
---
|
||||
...xx... 48
|
||||
..xxxx.. 4a
|
||||
.xxxxxx. 4c
|
||||
xxxxxxxx 4e
|
||||
x..xx..x 4e
|
||||
x.xxx.xx 4e
|
||||
xxxxxxxx 4e
|
||||
xxxxxxxx 4e
|
||||
xxxxxxxx 4e
|
||||
xx....xx 4e
|
||||
xxxxxxxx 4e
|
||||
.xxxxxx. 4c
|
||||
..xxxx.. 4a
|
||||
---
|
||||
end
|
||||
|
||||
entity PlayerBC [Bitmap,Colormap]
|
||||
decode vcs_sprite
|
||||
---
|
||||
..xxxx.. 1a
|
||||
...xx... 1c
|
||||
...xx... 2e
|
||||
..xxxx.. 3c
|
||||
.xxxxxx. 4e
|
||||
xx.xx.xx 5e
|
||||
xxx..xxx 6e
|
||||
xx.xx.xx 7e
|
||||
xxxxxxxx 8e
|
||||
.xxxxxx. 9e
|
||||
---
|
||||
end
|
||||
|
||||
entity [BCDScore2]
|
||||
init scorecolor = $4e
|
||||
end
|
||||
/*
|
||||
entity [BCDScore2]
|
||||
init scorecolor = $ce
|
||||
end
|
||||
*/
|
||||
|
||||
// TODO
|
||||
entity [KernelSection,BGColor,Sprite,HasBitmap,HasXpos,HasColormap,HasYpos,TinyVelX]
|
||||
const lines = 30
|
||||
const bgcolor = $72
|
||||
var plyrflags = 0
|
||||
var xpos = 120
|
||||
var ypos = 22
|
||||
var bitmap = #Cool
|
||||
var colormap = #Cool
|
||||
var xvel = 11
|
||||
end
|
||||
entity [KernelSection,BGColor,Sprite,HasBitmap,HasXpos,HasColormap,HasYpos,TinyVelX]
|
||||
const lines = 35
|
||||
const bgcolor = $74
|
||||
var plyrflags = 3
|
||||
var xpos = 60
|
||||
var ypos = 10
|
||||
var bitmap = #Weird
|
||||
var colormap = #Weird
|
||||
var xvel = 5
|
||||
end
|
||||
entity [KernelSection,BGColor,Sprite,HasBitmap,HasXpos,HasColormap,HasYpos,TinyVelX]
|
||||
const lines = 40
|
||||
const bgcolor = $76
|
||||
var plyrflags = 0
|
||||
var xpos = 20
|
||||
var ypos = 15
|
||||
var bitmap = #Weird
|
||||
var colormap = #Cool
|
||||
var xvel = 9
|
||||
end
|
||||
entity Player1 [KernelSection,BGColor,Sprite,HasBitmap,HasColormap,HasXpos,HasYpos,Player]
|
||||
const lines = 45
|
||||
const bgcolor = $78
|
||||
var plyrflags = 0
|
||||
var xpos = 70
|
||||
var ypos = 35
|
||||
var bitmap = #PlayerBC
|
||||
var colormap = #PlayerBC
|
||||
end
|
||||
entity PlayerMissile [HasXpos,HasYpos,Missile,FGColor]
|
||||
var xpos = 75
|
||||
var ypos = 100
|
||||
const fgcolor = $fe
|
||||
const index = 3
|
||||
end
|
||||
|
||||
system ShootingStuff
|
||||
// TODO
|
||||
on kernelsetup do foreach [Missile,FGColor]
|
||||
---
|
||||
lda {{<fgcolor}}
|
||||
ldy {{<index}}
|
||||
sta COLUP0-2,y
|
||||
---
|
||||
on postframe do foreach [Missile]
|
||||
---
|
||||
lda {{<ypos}}
|
||||
beq @nomissile
|
||||
dec {{<ypos}}
|
||||
@nomissile:
|
||||
---
|
||||
// TODO: nice to have constants here
|
||||
on joybutton do once
|
||||
---
|
||||
lda #138
|
||||
sta {{<PlayerMissile.ypos}}
|
||||
lda {{<Player1.xpos}}
|
||||
clc
|
||||
adc #4
|
||||
sta {{<PlayerMissile.xpos}}
|
||||
{{!playsound 0 2 5}}
|
||||
---
|
||||
// TODO: nice if we could do "with"
|
||||
on explode do select [Sprite,HasBitmap,HasColormap]
|
||||
---
|
||||
lda #{{eid Explode3}}-{{eid Blank}}
|
||||
sta {{base bitmap}},x
|
||||
sta {{base colormap}},x
|
||||
---
|
||||
// TODO: need to limit to cur player
|
||||
on explode do foreach [BCDScore2]
|
||||
---
|
||||
{{!AddBCD2 1}}
|
||||
---
|
||||
// TODO: nice if we could do "with"
|
||||
on explode do with [Missile]
|
||||
---
|
||||
lda #0
|
||||
sta {{<ypos}}
|
||||
{{!playsound 0 1 10}}
|
||||
---
|
||||
on preframeloop do once
|
||||
---
|
||||
nop
|
||||
---
|
||||
end
|
||||
|
||||
system BounceEnemies
|
||||
// TODO: event1, event2 in handler?
|
||||
on xlimit_right do with [TinyVelX]
|
||||
---
|
||||
lda {{<xvel}}
|
||||
eor #$0f
|
||||
sta {{<xvel}}
|
||||
---
|
||||
on xlimit_left do with [TinyVelX]
|
||||
---
|
||||
lda {{<xvel}}
|
||||
eor #$0f
|
||||
sta {{<xvel}}
|
||||
---
|
||||
end
|
||||
|
||||
system ExplodingAnimation
|
||||
on postframe do with [FrameCount]
|
||||
---
|
||||
lda {{<frame}}
|
||||
and #$0f
|
||||
bne @noframe16
|
||||
{{!frame16}}
|
||||
@noframe16:
|
||||
and #$07
|
||||
bne @noframe8
|
||||
{{!frame8}}
|
||||
@noframe8:
|
||||
---
|
||||
// TODO: forward jump conversion
|
||||
on frame16 do foreach [Sprite,-Player]
|
||||
//if bitmap > 0 and bitmap < #Blank then bitmap--
|
||||
---
|
||||
lda {{<bitmap}}
|
||||
beq @noinc
|
||||
cmp #{{eid Explode3}}-{{eid Blank}}+1
|
||||
bcs @noinc
|
||||
dec {{<bitmap}}
|
||||
@noinc:
|
||||
---
|
||||
end
|
||||
|
||||
using Random
|
||||
entity [Random8]
|
||||
var seed = 1
|
||||
end
|
||||
|
||||
system SpawnEnemies
|
||||
on preframeloop do foreach [Sprite,-Player]
|
||||
---
|
||||
{{!nextrand8}}
|
||||
and #15
|
||||
;sta {{<xvel}}
|
||||
---
|
||||
end
|
||||
|
||||
entity [FrameCount]
|
||||
end
|
||||
using FrameCounter, TinyMover
|
||||
|
||||
using Joystick, JoyButton, MoveJoyX with [Player]
|
||||
|
||||
using SoundEngine
|
||||
|
||||
entity SFXNull [SoundEffect]
|
||||
const duration = 0
|
||||
const sounddata = [0]
|
||||
end
|
||||
entity SFXExplode [SoundEffect]
|
||||
const duration = 10
|
||||
const sounddata = [$02,$03,$04,$08,$10,$20,$40,$20,$10,$a4]
|
||||
end
|
||||
entity SFXFire [SoundEffect]
|
||||
const duration = 10
|
||||
const sounddata = [$70,$60,$50,$40,$20,$10,$00,$50,$a4,$84]
|
||||
end
|
||||
|
||||
entity SFX1 [SoundChannel]
|
||||
end
|
||||
entity SFX2 [SoundChannel]
|
||||
end
|
||||
|
||||
end demo
|
||||
|
50
presets/vcs/vcslib/vcslib.ca65
Normal file
50
presets/vcs/vcslib/vcslib.ca65
Normal file
@ -0,0 +1,50 @@
|
||||
|
||||
.include "vcs-ca65.inc"
|
||||
|
||||
.global _set_horiz_pos
|
||||
.export _reset_gfx
|
||||
.export _reset_sprites
|
||||
.export Return
|
||||
|
||||
;;;
|
||||
|
||||
; SetHorizPos routine
|
||||
; A = X coordinate
|
||||
; X = player number (0 or 1)
|
||||
; must be in rodata segment because of alignment
|
||||
.rodata
|
||||
.align $10
|
||||
.proc _set_horiz_pos
|
||||
sec ; set carry flag
|
||||
sta WSYNC ; start a new line
|
||||
:
|
||||
sbc #15 ; subtract 15
|
||||
bcs :- ; branch until negative
|
||||
eor #7 ; calculate fine offset
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
sta HMP0,x ; set fine offset
|
||||
sta RESP0,x ; fix coarse position
|
||||
sta WSYNC ; won't overrun if X < 150
|
||||
rts
|
||||
.endproc
|
||||
.code
|
||||
|
||||
;;;
|
||||
|
||||
_reset_gfx:
|
||||
lda #0
|
||||
sta PF0
|
||||
sta PF1
|
||||
sta PF2
|
||||
_reset_sprites:
|
||||
lda #0
|
||||
sta GRP0
|
||||
sta GRP1
|
||||
sta GRP0
|
||||
sta GRP1
|
||||
Return:
|
||||
rts
|
||||
|
Loading…
Reference in New Issue
Block a user