mirror of
https://github.com/sehugg/8bitworkshop.git
synced 2024-11-28 08:50:22 +00:00
306 lines
9.3 KiB
Plaintext
306 lines
9.3 KiB
Plaintext
|
|
//#resource "vcs-ca65.h"
|
|
|
|
import "vcslib.ecs"
|
|
|
|
component Bitmap48
|
|
bitmap0: array of 0..0xff
|
|
bitmap1: array of 0..0xff
|
|
bitmap2: array of 0..0xff
|
|
bitmap3: array of 0..0xff
|
|
bitmap4: array of 0..0xff
|
|
bitmap5: array of 0..0xff
|
|
height: 0..255
|
|
end
|
|
|
|
system Kernel48Pixel
|
|
locals 2
|
|
on kernelsetup do if [Bitmap48] ---
|
|
lda {{<height}}
|
|
sta {{$0}} ; scanline counter
|
|
---
|
|
// TODO: should factor out this code, but doesnt
|
|
on kernelsetup do if [Bitmap48] ---
|
|
lda #$22
|
|
sta COLUP0 ; show how players alternate
|
|
lda #$12
|
|
sta COLUP1 ; by having different colors
|
|
lda #3
|
|
sta NUSIZ0
|
|
sta NUSIZ1 ; both players have 3 copies
|
|
sta WSYNC
|
|
SLEEPH 35
|
|
sta RESP0 ; position 1st player
|
|
sta RESP1 ; ...and 2nd player
|
|
lda #$10
|
|
sta HMP1 ; 1 pixel to the left
|
|
sta WSYNC
|
|
sta HMOVE ; apply HMOVE
|
|
lda #1
|
|
sta VDELP0 ; we need the VDEL registers
|
|
sta VDELP1 ; so we can do our 4-store trick
|
|
SLEEPH 24-8 ; sleep 24 cycles
|
|
sta HMCLR ; clear HMOVE registers
|
|
---
|
|
on kernelsetup do if [PFColor] ---
|
|
lda {{<pfcolor}}
|
|
sta COLUP0
|
|
sta COLUP1
|
|
---
|
|
on kerneldraw do critical fit 63
|
|
if [Bitmap48]
|
|
---
|
|
txa
|
|
pha
|
|
:
|
|
ldy {{$0}} ; counts backwards
|
|
{{!wsync}} ; sync to next scanline
|
|
lda {{data bitmap0}},y ; load B0 (1st sprite byte)
|
|
sta GRP0 ; B0 -> [GRP0]
|
|
lda {{data bitmap1}},y ; load B1 -> A
|
|
sta GRP1 ; B1 -> [GRP1], B0 -> GRP0
|
|
lda {{data bitmap2}},y ; load B2 -> A
|
|
sta GRP0 ; B2 -> [GRP0], B1 -> GRP1
|
|
lda {{data bitmap5}},y ; load B5 -> A
|
|
sta {{$1}} ; B5 -> temp
|
|
ldx {{data bitmap4}},y ; load B4 -> X
|
|
lda {{data bitmap3}},y ; load B3 -> A
|
|
ldy {{$1}} ; load B5 -> Y
|
|
sta GRP1 ; B3 -> [GRP1]; B2 -> GRP0
|
|
stx GRP0 ; B4 -> [GRP0]; B3 -> GRP1
|
|
sty GRP1 ; B5 -> [GRP1]; B4 -> GRP0
|
|
sta GRP0 ; ?? -> [GRP0]; B5 -> GRP1
|
|
dec {{$0}} ; go to next line
|
|
bpl :- ; repeat until < 0
|
|
pla
|
|
tax
|
|
---
|
|
end
|
|
|
|
demo TitleDemo
|
|
|
|
scope Title
|
|
|
|
using FrameLoop, StandardKernel
|
|
using Kernel48Pixel with [#Name]
|
|
using Kernel48Pixel with [#Copyright]
|
|
using JoyButton
|
|
|
|
entity [Player]
|
|
end
|
|
|
|
system Advance
|
|
on joybutton do once
|
|
---
|
|
jmp Title2__Start
|
|
---
|
|
end
|
|
|
|
entity [KernelSection, BGColor]
|
|
const lines = 30
|
|
const bgcolor = $a0
|
|
end
|
|
|
|
entity [KernelSection, BGColor]
|
|
const lines = 10
|
|
const bgcolor = $a2
|
|
end
|
|
|
|
// convert -size 48x -gravity center label:"6502\nECS" pbm: | pnmtopnm -plain
|
|
entity Name [KernelSection, BGColor, PFColor, Bitmap48]
|
|
const lines = 2
|
|
const bgcolor = 0xa4
|
|
const pfcolor = 0xfc
|
|
decode vcs_bitmap48 ---
|
|
000000111100000111111110000011110000001111100000
|
|
000011111110000111111110001111111000011111110000
|
|
000011000011000110000000001100011000111000011000
|
|
000110000011000110000000011000001100110000011000
|
|
000110000000000110000000011000001100000000011000
|
|
000110111100000111111000011000001100000000011000
|
|
000111111110000111111100011000001100000000110000
|
|
000111000111000000001110011000001100000001110000
|
|
000110000011000000000110011000001100000011100000
|
|
000110000011000000000110011000001100000111000000
|
|
000110000011000000000110011000001100001110000000
|
|
000110000011001100000110011000001100011100000000
|
|
000011000011001100001110001100011000111000000000
|
|
000011111110000111111100001111111000111111111000
|
|
000000111100000011111000000111110000111111111000
|
|
000000000000000000000000000000000000000000000000
|
|
000000000000000000000000000000000000000000000000
|
|
000000000000000000000000000000000000000000000000
|
|
000000000000000000000000000000000000000000000000
|
|
000000000000000000000000000000000000000000000000
|
|
000000111111111100000011111000000001111100000000
|
|
000000111111111100001111111110000111111111000000
|
|
000000110000000000011100000111000110000011100000
|
|
000000110000000000011000000011001100000001100000
|
|
000000110000000000111000000001001100000000000000
|
|
000000110000000000110000000000000111000000000000
|
|
000000111111111000110000000000000011111000000000
|
|
000000111111111000110000000000000001111111000000
|
|
000000110000000000110000000000000000000111100000
|
|
000000110000000000110000000000000000000001100000
|
|
000000110000000000111000000011101100000001100000
|
|
000000110000000000011000000011001100000001100000
|
|
000000110000000000011100000111000110000011100000
|
|
000000111111111100001111111110000111111111000000
|
|
000000111111111100000011111000000001111110000000
|
|
000000000000000000000000000000000000000000000000
|
|
000000000000000000000000000000000000000000000000
|
|
|
|
---
|
|
end
|
|
|
|
entity Copyright [KernelSection, BGColor, PFColor, Bitmap48]
|
|
const lines = 2
|
|
const bgcolor = 0xa4
|
|
const pfcolor = 0x8c
|
|
decode vcs_bitmap48 ---
|
|
000000000000000000000000000000100000000100000100
|
|
000000000000000000000000000000000000000100000100
|
|
000111000111001111010001101110100011010111101110
|
|
001001001001001101111001001100100100110110100100
|
|
001001001000101000101001001000100100110100010100
|
|
011000011000101000101001001000101100010100010100
|
|
011000011000101000101010001000101100010100010100
|
|
011001001000101000100110001000100100110100010100
|
|
001001001001001001000110001000100100110100010110
|
|
000110000111001111000110001000100011110100010000
|
|
000000000000001000000100000000000000010000000000
|
|
000000000000001000000100000000000100100000000000
|
|
000000000000001000001000000000000111100000000000
|
|
000000000000000000000000000000000000000000000000
|
|
000000000000001110001110001110001110000000000000
|
|
000000000000010011011010010011010011000000000000
|
|
000000000000010001010011010011010001000000000000
|
|
000000000000000001110001000001000001000000000000
|
|
000000000000000011110001000011000011000000000000
|
|
000000000000000110110001000110000110000000000000
|
|
000000000000001100110001001100001000000000000000
|
|
000000000000010000010001010000010000000000000000
|
|
000000000000010000010010010000010000000000000000
|
|
000000000000111111001110111111111111000000000000
|
|
000000000000000000000000000000000000000000000000
|
|
---
|
|
end
|
|
|
|
entity [KernelSection, BGColor]
|
|
const lines = 10
|
|
const bgcolor = $a2
|
|
end
|
|
entity [KernelSection, BGColor]
|
|
const lines = 10
|
|
const bgcolor = $a0
|
|
end
|
|
|
|
end
|
|
|
|
scope Title2
|
|
|
|
using FrameLoop, Kernel48Pixel, StandardKernel
|
|
|
|
entity [KernelSection, BGColor]
|
|
var lines = 60
|
|
var bgcolor = 0x10
|
|
end
|
|
|
|
entity [KernelSection, BGColor]
|
|
var lines = 30
|
|
var bgcolor = 0x30
|
|
end
|
|
|
|
// convert -size 48x -gravity center label:"6502\nECS" pbm: | pnmtopnm -plain
|
|
entity [KernelSection, BGColor, PFColor, Bitmap48]
|
|
var lines = 2
|
|
var pfcolor = 0xec
|
|
var bgcolor = 0x30
|
|
decode vcs_bitmap48 ---
|
|
000000000000000000000000000000000000000000011000
|
|
000000000000000000000000000000000000000000011000
|
|
000000000000000000000000000000000000000000011000
|
|
000000000000000000000000000000000000000000011000
|
|
000001111011000011111000000111110000001111011000
|
|
000011111111000111111100001111111000011111111000
|
|
000110000111001100001110011000001100110000111000
|
|
000110000011001100000110011000001100110000011000
|
|
000110000011001100000110011000001100110000011000
|
|
000110000011001100000110011000001100110000011000
|
|
000110000011001100000110011000001100110000011000
|
|
000110000011001100000110011000001100110000011000
|
|
000110000111001100000110011000001100110000111000
|
|
000011111111000111111100001111111000011111111000
|
|
000001111011000011111000000111110000001111011000
|
|
000000000011000000000000000000000000000000000000
|
|
000110000110000000000000000000000000000000000000
|
|
000111111110000000000000000000000000000000000000
|
|
000001111100000000000000000000000000000000000000
|
|
000000000000000000000000000000000000000000000000
|
|
000000000000000000000000000000000000000000000000
|
|
000000000000000000000000000000000000000000000000
|
|
000000000000000000000000000000000000000000000000
|
|
000000000000000000000000000000000000000000000000
|
|
000000000110000000000000110000000000110000000000
|
|
000000000110000000000000110000000000110000000000
|
|
000000000000000000000000110000000000110000000000
|
|
000000000000000000000000110000000000110000000000
|
|
000000000110000111110000110111100000110000000000
|
|
000000000110001111111000111111110000110000000000
|
|
000000000110011100001100111000011000110000000000
|
|
000000000110011000001100110000011000110000000000
|
|
000000000110011000001100110000011000110000000000
|
|
000000000110011000001100110000011000110000000000
|
|
000000000110011000001100110000011000110000000000
|
|
000000000110011000001100110000011000000000000000
|
|
000000000110011000001100111000011000000000000000
|
|
000000000110001111111000111100110000110000000000
|
|
000000000110000111110000110111100000110000000000
|
|
000000000110000000000000000000000000000000000000
|
|
000000000110000000000000000000000000000000000000
|
|
000000011110000000000000000000000000000000000000
|
|
000000011100000000000000000000000000000000000000
|
|
000000000000000000000000000000000000000000000000
|
|
---
|
|
end
|
|
|
|
entity [KernelSection, BGColor]
|
|
var lines = 20
|
|
var bgcolor = 0x30
|
|
end
|
|
|
|
entity [KernelSection, BGColor]
|
|
var lines = 20
|
|
var bgcolor = 0x50
|
|
end
|
|
|
|
system Colors
|
|
on postframe do foreach [PFColor]
|
|
---
|
|
inc {{set pfcolor}}
|
|
bne :+
|
|
inc {{set bgcolor}}
|
|
:
|
|
---
|
|
on postframe do foreach [KernelSection]
|
|
---
|
|
dec {{set lines}}
|
|
bne :+
|
|
lda #1
|
|
sta {{set lines}}
|
|
:
|
|
---
|
|
end
|
|
|
|
end
|
|
|
|
system Demo
|
|
on start do once
|
|
---
|
|
{{start Title}}
|
|
---
|
|
end
|
|
|
|
end demo
|
|
|