IncAsm "VICII.asm" ; VICII register includes
IncAsm "macros.asm" ; macro includes
SCREEN_MEM = $4000
SCREEN1_MEM = $4000 ; Bank 1 - Screen 0 ; $4000
SCREEN2_MEM = $4400 ; Bank 1 - Screen 1 ; $4400
SCORE_SCREEN = $5800 ; Bank 1 - Screen 6 ; $5800
COLOR_MEM = $D800 ; Color mem never changes
CHAR_MEM = $4800 ; Base of character set memory (set 1)
SPRITE_MEM = $5C00 ; Base of sprite memory
CHRADR1 = 19992
CHRADR3 = 20200 ; top water tile
CHRADR4 = 20104
COLOR_DIFF = COLOR_MEM - SCREEN_MEM ; difference between color and screen ram
SPRITE_POINTER_BASE = SCREEN_MEM + $3f8 ; last 8 bytes of screen mem
SPRITE_BASE = $70 ; the pointer to the first image#
SPRITE_0_PTR = SPRITE_POINTER_BASE + 0 ; Sprite pointers
SPRITE_1_PTR = SPRITE_POINTER_BASE + 1
SPRITE_2_PTR = SPRITE_POINTER_BASE + 2
SPRITE_3_PTR = SPRITE_POINTER_BASE + 3
SPRITE_4_PTR = SPRITE_POINTER_BASE + 4
SPRITE_5_PTR = SPRITE_POINTER_BASE + 5
SPRITE_6_PTR = SPRITE_POINTER_BASE + 6
SPRITE_7_PTR = SPRITE_POINTER_BASE + 7
SPRITE_DELTA_OFFSET_X = 8 ; Offset from SPRITE coords to Delta Char coords
SPRITE_DELTA_OFFSET_Y = 11 ; approx the center of the sprite
SPRITE_DELTA_OFFSET_Y = 14
ENEMY_SPRITE_DELTA_OFFSET_X = 8
ENEMY_SPRITE_DELTA_OFFSET_Y = 14
NUMBER_OF_SPRITES_DIV_4 = 3 ; loads sprites and characters under IO ROM
LEVEL_1_MAP = $E000 ;Address of level 1 tiles/charsets
LEVEL_1_CHARS = $E800
PARAM1 = $03 ; These will be used to pass parameters to routines
PARAM2 = $04 ; when you can't use registers or other reasons
PARAM3 = $05 PARAM4 = $06 ; essentially, think of these as extra data registers
PARAM5 = $07 TIMER = $08 ; Timers - fast and slow, updated every frame
SLOW_TIMER = $09
WPARAM1 = $0A ; Word length Params. Same as above only room for 2
WPARAM2 = $0C ; bytes (or an address)
WPARAM3 = $0E ;---------------------------- $11 - $16 available
ZEROPAGE_POINTER_1 = $17 ; Similar only for pointers that hold a word long address
ZEROPAGE_POINTER_2 = $19
ZEROPAGE_POINTER_3 = $21
ZEROPAGE_POINTER_4 = $23
CURRENT_SCREEN = $25 ; Pointer to current front screen
CURRENT_BUFFER = $27 ; Pointer to current back buffer
SCROLL_COUNT_X = $29 ; Current hardware scroll value
SCROLL_COUNT_Y = $2A
SCROLL_SPEED = $2B ; Scroll speed (not implemented yet)
SCROLL_DIRECTION = $2C ; Direction we are scrolling in
SCROLL_MOVING = $2D ; are we moving? (Set to direction of scrolling)
; This is for resetting back to start frames
; All data is for the top left corner of the visible map area
MAP_POS_ADDRESS = $2E ; (2 bytes) pointer to current address in the level map
MAP_X_POS = $30 ; Current map x position (in tiles)
MAP_Y_POS = $31 ; Current map y position (in tiles)
MAP_X_DELTA = $32 ; Map sub tile delta (in characters)
MAP_Y_DELTA = $33 ; Map sub tile delta (in characters)
KICKSTART
; Sys call to start the program - 10 SYS (2064)
*=$0801
BYTE $0E,$08,$0A,$00,$9E,$20,$28,$32,$30,$36,$34,$29,$00,$00,$00
PRG_START
Leave A Comment