lovebyte: some more work

This commit is contained in:
Vince Weaver 2024-02-04 01:05:31 -05:00
parent e35ca28dea
commit 7f98b47120
3 changed files with 123 additions and 32 deletions

View File

@ -25,11 +25,13 @@ INH = $FF
; ROM locations
HGR2 = $F3D8
HGR = $F3E2
BKGND0 = $F3F4
HPOSN = $F411
XDRAW0 = $F65D
XDRAW1 = $F661
HPLOT0 = $F457
hposn_low = $6000
hposn_high = $6100
@ -38,6 +40,15 @@ dont:
jsr HGR ; Hi-res, full screen ; 3
; Y=0, A=0 after this call
lda #$1
sta HGR_SCALE
lda #$0
sta HGR_ROTATION
lda #$80 ; clear so we get blue/orange when xdraw
jsr BKGND0
;==========================
; make table
@ -87,6 +98,7 @@ draw_loop:
sta INH
jsr draw_sprite
; jsr do_xdraw
ending:
jmp ending
@ -184,7 +196,7 @@ exit_sign:
.byte $1F,$7F ; @@@@@.. @@@@@@@
.byte $7F,$7F ; @@@@@@@@@@@@@@@
; note: these can't cross a page boundary or you'll get corruption
;==========================
; draw sprite
@ -228,3 +240,88 @@ draw_sprite_y_end_smc:
bne draw_sprite_outer ; 2
rts ; 1
;====================================
do_xdraw:
; A and Y are 0 here.
; X is left behind by the boot process?
; set GBASL/GBASH
; we really have to call this, otherwise it won't run
; on some real hardware depending on setup of zero page at boot
ldy #0
ldx #139
lda #96
jsr HPOSN ; set screen position to X= (y,x) Y=(a)
; saves X,Y,A to zero page
; after Y= orig X/7
; A and X are ??
ldx #<our_shape ; load $E2 into A, X, and Y
ldy #>our_shape ; our shape table is in ROM at $E2E2
lda #0
jsr XDRAW0 ; XDRAW 1 AT X,Y
; Both A and X are 0 at exit
; Z flag set on exit
; Y varies
rts
;.byte $07,$00
;.byte $10,$00, $1b,$00, $2e,$00
;.byte $42,$00, $61,$00, $80,$00
;.byte $8a,$00
; crosshair
.byte $1b,$6d,$39,$97,$12,$24,$24,$24
.byte $24,$04,$00
; portal
.byte $1b,$24,$0c,$24,$0c
.byte $15,$36,$0e,$36,$36,$1e,$36,$1e
.byte $1c,$24,$1c,$24,$04,$00
; sideways portal
.byte $52,$0d
.byte $0d,$0d,$6c,$24,$1f,$fc,$1f,$1f
.byte $1f,$1f,$1f,$fe,$36,$0d,$6e,$0d
.byte $05,$00
; chell right
our_shape:
.byte $1b,$36,$36,$36,$0d,$df
.byte $1b,$24,$0c,$24,$24,$1c,$24,$64
.byte $69,$1e,$37,$2d,$1e,$77,$6e,$25
.byte $2d,$2d,$f5,$ff,$13,$2d,$2d,$2d
.byte $00
; chell left
.byte $09,$36,$36,$36,$1f,$4d,$09
.byte $24,$1c,$24,$24,$0c,$24,$e4,$fb
.byte $0e,$35,$3f,$0e,$f5,$fe,$27,$3f
.byte $3f,$77,$6d,$11,$3f,$3f,$3f,$00
; fireball
.byte $12,$0c,$0c,$1c,$1c,$1e,$1e,$0e
.byte $0e,$00
; blue core
.byte $fa,$24,$0d,$0d,$36,$9f
.byte $3a,$3f,$3c,$3c,$2c,$3c,$0c,$25
.byte $2d,$2d,$2d,$2e,$2e,$3e,$2e,$1e
.byte $37,$3f,$07,$00

View File

@ -1,30 +1,12 @@
; this was a weird effect that turns out to be because we're linking
; at the wrong address so it's just the effect when
; TL/TH holds the values $A0 $A0
; this is a pretty effect during sierpinski zoom
; accidentally discovered when loading at the wrong address
; so TL/TH was on text page1 and full of $a0 (space characters) in TL/TH
; sierpinski-like demo
; based on the code from Hellmood's Memories demo
; by Vince `deater` Weaver <vince@deater.net>
; the simple sierpinski you more or less just plot
; X AND Y
; Hellmood's you plot something more or less like
; COLOR = ( (Y-(X*T)) & (X+(Y*T) ) & 0xf0
; where T is an incrementing frame value
; to get speed on 6502/Apple II we change the multiplies to
; a series of 16-bit 8.8 fixed point adds
; TODO:
; HPLOT timing
; MOVERIGHT timing
; MOVERIGHT MOVEDOWN timing
; LOOKUP TABLE timing
; zero page
HGR_BITS = $1C
@ -59,22 +41,12 @@ PLOT1 = $F80E ;; PLOT at (GBASL),Y (need MASK to be $0f or $f0)
GBASCALC= $F847 ;; take Y-coord/2 in A, put address in GBASL/H ( a trashed, C clear)
SETGR = $FB40
;.zeropage
;h.globalzp T_L,T_H
;================================
; Clear screen and setup graphics
;================================
sier:
jsr HGR2 ; set FULLGR, sets A=0
; lda #$5b ; start with multiplier 0
; sta T_L
; lda #$41 ; start with multiplier 0
; sta T_H
sier_outer:
ldy #0 ; YY starts at 0

22
music/tiny_tracker6/NOTES Normal file
View File

@ -0,0 +1,22 @@
This was used for the blueflame music for demosplash2023
mockingboard_init.s
assume slot #4
only one channel
sets up interrupt handler
tracker_init.s
clear mirror registers in ZP to 0
($70-$83?)
if any register always same, set it ($38 to mixer?)
play_frame.s
has amplitudes to rotate through on A/B channel
; NNNNNEEC -- c=channel, e=end, n=note
; 32 notes, 4 lengths, 2 channels
Original tiny tracker6:
2 channels