initial commit
This commit is contained in:
@@ -0,0 +1,137 @@
|
||||
; -----------------------------------------------------------
|
||||
; defs.asm - hardware registers, constants, zero page, macros
|
||||
; included first by main.asm
|
||||
; -----------------------------------------------------------
|
||||
|
||||
; ---- hardware registers ----
|
||||
RASTER = $d012 ; current raster line
|
||||
BORDER = $d020 ; border color register
|
||||
BG = $d021 ; background color register
|
||||
SCREEN = $0400 ; screen RAM (40x25 chars)
|
||||
COLRAM = $d800 ; color RAM
|
||||
SPR_EN = $d015 ; sprite enable bits (parked at 0)
|
||||
CIA1_PA = $dc00 ; CIA1 port A: keyboard columns / joystick 2
|
||||
CIA1_PB = $dc01 ; CIA1 port B: keyboard rows / joystick 1
|
||||
CIA1_TA = $dc04 ; CIA1 timer A low byte: free-running entropy
|
||||
|
||||
; ---- SID registers (single-voice SFX driver) ----
|
||||
SID_V1FL = $d400 ; voice 1 frequency low
|
||||
SID_V1FH = $d401 ; voice 1 frequency high
|
||||
SID_V1PL = $d402 ; voice 1 pulse width low
|
||||
SID_V1PH = $d403 ; voice 1 pulse width high
|
||||
SID_V1CR = $d404 ; voice 1 control (waveform + gate)
|
||||
SID_V1AD = $d405 ; voice 1 attack/decay
|
||||
SID_V1SR = $d406 ; voice 1 sustain/release
|
||||
SID_VOL = $d418 ; filter mode + master volume
|
||||
|
||||
; ---- SFX IDs ----
|
||||
SFX_CURSOR = 0 ; corner cursor step: click
|
||||
SFX_SELECT = 1 ; menu fire: rising tone
|
||||
SFX_ROTATE = 2 ; wall spin: noise whoosh
|
||||
SFX_DENY = 3 ; blocked spin: low buzz
|
||||
SFX_WIN = 4 ; escape: rising jingle
|
||||
SFX_LOSE = 5 ; caught: descending sweep
|
||||
NSFX = 6
|
||||
|
||||
; ---- colors ----
|
||||
BLACK = 0
|
||||
WHITE = 1
|
||||
RED = 2
|
||||
CYAN = 3
|
||||
PURPLE = 4
|
||||
GREEN = 5
|
||||
BLUE = 6
|
||||
YELLOW = 7
|
||||
ORANGE = 8
|
||||
BROWN = 9
|
||||
LRED = 10
|
||||
DGREY = 11
|
||||
MGREY = 12
|
||||
LGREEN = 13
|
||||
LBLUE = 14
|
||||
LGREY = 15
|
||||
|
||||
; ---- joystick bits (after read_joy / read_joy2, active high) ----
|
||||
JOY_UP = 1
|
||||
JOY_DOWN = 2
|
||||
JOY_LEFT = 4
|
||||
JOY_RIGHT = 8
|
||||
JOY_FIRE = 16
|
||||
|
||||
; ---- the maze ----
|
||||
; 19x11 cells on a 39x23 char lattice (screen rows 1-23):
|
||||
; cell = odd column, even row (walkable)
|
||||
; post = even column, odd row (pivot, always solid)
|
||||
; slot = the rest: wall pieces that spin around the posts
|
||||
; wall thickness therefore equals corridor width: one cell
|
||||
MAZE_CW = 19 ; cells across
|
||||
MAZE_CH = 11 ; cells down
|
||||
NCELLS = MAZE_CW * MAZE_CH
|
||||
NENEMIES = 4
|
||||
|
||||
CH_WALL = $a0 ; inverse space: solid wall block
|
||||
CH_FLOOR = $20 ; space: corridor
|
||||
CH_EXIT = $5a ; diamond: the goal
|
||||
CH_PLAYER = $51 ; filled ball: the runner
|
||||
CH_ENEMY = $57 ; open circle: an enemy
|
||||
|
||||
COL_WALL = MGREY ; spinnable wall pieces
|
||||
COL_POST = DGREY ; fixed pivot posts
|
||||
COL_EXIT = LGREEN ; the exit diamond
|
||||
|
||||
; ---- game timing ----
|
||||
REP_HOLD = 10 ; runner: frames before a held dir repeats
|
||||
REP_PERIOD = 5 ; runner: frames between repeat steps
|
||||
CREP_HOLD = 12 ; cursor: same, a touch slower
|
||||
CREP_PERIOD = 7
|
||||
RAS_SYNC = 251 ; raster line polled for the frame sync
|
||||
|
||||
; ---- zero page pointers (same slots as rabbitc64) ----
|
||||
txtlo = $f5 ; text pointer for the print routines (2 bytes)
|
||||
txthi = $f6
|
||||
updvec = $f9 ; state update vector (2 bytes)
|
||||
scrlo = $fb
|
||||
scrhi = $fc
|
||||
collo = $fd
|
||||
colhi = $fe
|
||||
|
||||
; ---- helper macros: print a normal / big text line ----
|
||||
!macro prtext .row, .col, .color, .txt, .len {
|
||||
lda #<.txt
|
||||
sta txtlo
|
||||
lda #>.txt
|
||||
sta txthi
|
||||
lda #.row
|
||||
sta prow
|
||||
lda #.col
|
||||
sta pcol
|
||||
lda #.color
|
||||
sta pcolor
|
||||
lda #.len
|
||||
sta plen
|
||||
jsr print_text
|
||||
}
|
||||
|
||||
!macro prbig .row, .col, .color, .txt, .len {
|
||||
lda #<.txt
|
||||
sta txtlo
|
||||
lda #>.txt
|
||||
sta txthi
|
||||
lda #.row
|
||||
sta bigrow
|
||||
lda #.col
|
||||
sta bigcol
|
||||
lda #.color
|
||||
sta bigcolor
|
||||
lda #.len
|
||||
sta biglen
|
||||
jsr draw_big
|
||||
}
|
||||
|
||||
; ---- set the state update vector ----
|
||||
!macro setupd .addr {
|
||||
lda #<.addr
|
||||
sta updvec
|
||||
lda #>.addr
|
||||
sta updvec+1
|
||||
}
|
||||
Reference in New Issue
Block a user