Skip to content

Instantly share code, notes, and snippets.

View Dooshco's full-sized avatar

8bit Coding Dooshco

View GitHub Profile
@Dooshco
Dooshco / SynthLoop.asm
Last active February 10, 2025 02:04
Main loop of the Synth Demo
; Loop through newly pressed keys, find available channel and play the note
: stz Counter
playLoop:
ldx Counter
lda Pressed,x
cmp #1
bne :+
jsr PlayNote ; Key was pressed, play note
ldx Counter
@Dooshco
Dooshco / SolSound.asm
Last active February 9, 2025 23:41
Sound effects in Crazy Solitaire
;******************************************************************************
PlayCard:
;******************************************************************************
; plays a sound when the card is placed to any stack
;******************************************************************************
lda #$0A ; Audio bank number
sta $01 ; ROM bank register
jsr ym_init
lda #0 ; Channel 0
@Dooshco
Dooshco / SolData.asm
Created January 28, 2025 05:21
Solitaire data structure
; Data Store; Each Pile contains count and space for 52 cards
Stock: .res 53,0
Waste: .res 53,0
Foundation1: .res 53,0
Foundation2: .res 53,0
Foundation3: .res 53,0
Foundation4: .res 53,0
Column1: .res 53,0
Column2: .res 53,0
Column3: .res 53,0
@Dooshco
Dooshco / SolSets.asm
Created January 28, 2025 05:19
Solitaire Sets
; Card Ranks
RANK_MASK = %00001111
RANK_A = $01
RANK_2 = $02
RANK_3 = $03
RANK_4 = $04
RANK_5 = $05
RANK_6 = $06
RANK_7 = $07
RANK_8 = $08
1 REM ===== TILE DEMO 2 =====
2 REM AUTHOR : DUSAN STRAKL
3 REM MORE INFO : 8BITCODING.COM
4 REM EMULATOR : V.43+
9 REM
20 PRINT "GENERATING TILES"
30 DIM BIN(8):BIN(0)=1:BIN(1)=2:BIN(2)=4:BIN(3)=8
40 BIN(4)=16:BIN(5)=32:BIN(6)=64:BIN(7)=128
50 M=0
60 FOR C=0 TO 39
9999 REM
10000 REM ===== SET LAYER 0 TO GAME =====
10001 REM
10010 POKE $9F29,%01110001
10020 POKE $9F2D,%00010110
10040 POKE $9F2F,$10
10050 POKE $9F31,$01
10060 RETURN
10499 REM
10500 REM ===== SET LAYER 0 TO TITLE SCREEN =====
10501 REM
10510 POKE $9F29,%00110001
10520 POKE $9F2A,64
10530 POKE $9F2B,64
10540 POKE $9F2D,%00000111
10550 POKE $9F2E,0
10560 POKE $9F2F,$5C
10570 RETURN
1 REM ===== OPTIONS LIBRARY =====
2 REM
3 REM WRITTEN FOR : COMMANDER X16
4 REM TESTED ON : EMULATOR R.38
5 REM AUTHOR : DUSAN STRAKL
6 REM MORE INFO : 8BITCODING.COM
7 REM
8 REM
10 DIM OX(4,3):DIM OY(4,3):DIM OT$(4,3):DIM OS(4,3):DIM RV(4,3)
20 GOSUB 11000
10 REM ===== EXPLODE DEMO =====
20 VPOKE 1,$F9C3,%11111111: REM WAVEFORM=NOISE
30 VPOKE 1,$F9C1,1: REM SET HIGH BYTE OF FREQUENCY
40 VPOKE 1,$F9C0,150: REM SET LOW BYTE OF FREQUENCY
50 FOR N=63 TO 0 STEP -1
60 VPOKE 1,$F9C2,$C0+N: REM LEFT AND RIGHT CHANNEL, DECREASING VOLUME
70 FOR I=1 TO 200:NEXT I: REM DELAY
80 NEXT N
10 REM ===== ENGINE DEMO =====
20 CLS:PRINT "USE ARROW UP TO THROTTLE THE ENGINE, LEFT SHIFT TO EXIT"
30 VPOKE 1,$F9C3,%01000000: REM WAVEFORM=SAW
40 VPOKE 1,$F9C2,%11111111: REM LEFT AND RIGHT CHANNEL ON AT MAX VOLUME
50 FR=200: REM IDLE FREQUENCY
60 VPOKE 1,$F9C1,INT(FR/256): REM SET HIGH BYTE OF FREQUENCY
70 VPOKE 1,$F9C0,FR AND 255: REM SET LOW BYTE OF FREQUENCY
80 FR=FR-1:IF FR<200 THEN FR=200
90 A=JOY(0):IF A=$08 THEN FR=FR+5:IF FR>1000 THEN FR=1000
100 IF A<>$20 THEN GOTO 60