keen: add mars map
This commit is contained in:
parent
3143e46d90
commit
e002d2e982
|
@ -11,12 +11,13 @@ EMPTY_DISK = ../../empty_disk/empty.dsk
|
|||
|
||||
all: keen.dsk
|
||||
|
||||
keen.dsk: HELLO LOADER KEEN_TITLE KEEN_LEVEL1
|
||||
keen.dsk: HELLO LOADER KEEN_TITLE KEEN_MARS KEEN_LEVEL1
|
||||
#KEEN_LEVEL2
|
||||
cp $(EMPTY_DISK) keen.dsk
|
||||
$(DOS33) -y keen.dsk SAVE A HELLO
|
||||
$(DOS33) -y keen.dsk BSAVE -a 0x1000 LOADER
|
||||
$(DOS33) -y keen.dsk BSAVE -a 0x4000 KEEN_TITLE
|
||||
$(DOS33) -y keen.dsk BSAVE -a 0x2000 KEEN_MARS
|
||||
$(DOS33) -y keen.dsk BSAVE -a 0x2000 KEEN_LEVEL1
|
||||
# $(DOS33) -y keen.dsk BSAVE -a 0x2000 KEEN_LEVEL2
|
||||
|
||||
|
@ -46,6 +47,15 @@ keen_title.o: keen_title.s zp.inc hardware.inc init_vars.s \
|
|||
|
||||
####
|
||||
|
||||
KEEN_MARS: keen_mars.o
|
||||
ld65 -o KEEN_MARS keen_mars.o -C ../../linker_scripts/apple2_2000.inc
|
||||
|
||||
keen_mars.o: keen_mars.s zp.inc hardware.inc \
|
||||
maps/mars_map.gr.zx02
|
||||
ca65 -o keen_mars.o keen_mars.s -l keen_mars.lst
|
||||
|
||||
####
|
||||
|
||||
KEEN_LEVEL1: keen_level1.o
|
||||
ld65 -o KEEN_LEVEL1 keen_level1.o -C ../../linker_scripts/apple2_2000.inc
|
||||
|
||||
|
@ -94,7 +104,7 @@ maps/level1_map.lzsa:
|
|||
####
|
||||
|
||||
clean:
|
||||
rm -f *~ *.o *.lst HELLO KEEN_TITLE KEEN_LEVEL1
|
||||
rm -f *~ *.o *.lst HELLO KEEN_TITLE KEEN_MARS KEEN_LEVEL1
|
||||
cd graphics && make clean
|
||||
cd maps && make clean
|
||||
# cd title && make clean
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
LOAD_TITLE = 0
|
||||
LOAD_KEEN1 = 1
|
||||
LOAD_KEEN2 = 2
|
||||
LOAD_MARS = 1
|
||||
LOAD_KEEN1 = 2
|
||||
LOAD_KEEN2 = 3
|
||||
|
||||
|
||||
TILES = $9000
|
||||
|
|
|
@ -196,7 +196,7 @@ done_with_keen:
|
|||
bit KEYRESET ; clear keypress
|
||||
|
||||
|
||||
lda #LOAD_KEEN2
|
||||
lda #LOAD_TITLE
|
||||
sta WHICH_LOAD
|
||||
|
||||
rts ; exit back
|
||||
|
|
|
@ -0,0 +1,410 @@
|
|||
; Keen MARS main map
|
||||
|
||||
; TODO: should make it scrollable, etc
|
||||
|
||||
; by deater (Vince Weaver) <vince@deater.net>
|
||||
|
||||
; Zero Page
|
||||
.include "zp.inc"
|
||||
.include "hardware.inc"
|
||||
.include "common_defines.inc"
|
||||
|
||||
keen_start:
|
||||
;===================
|
||||
; init screen
|
||||
jsr TEXT
|
||||
jsr HOME
|
||||
bit KEYRESET
|
||||
|
||||
bit SET_GR
|
||||
bit PAGE0
|
||||
bit LORES
|
||||
bit FULLGR
|
||||
|
||||
jsr clear_all ; avoid grey stripes at load
|
||||
|
||||
;=====================
|
||||
; init vars
|
||||
;=====================
|
||||
|
||||
lda #0
|
||||
sta ANIMATE_FRAME
|
||||
sta FRAMEL
|
||||
sta FRAMEH
|
||||
sta DISP_PAGE
|
||||
sta JOYSTICK_ENABLED
|
||||
sta KEEN_WALKING
|
||||
sta KEEN_JUMPING
|
||||
sta LEVEL_OVER
|
||||
sta LASER_OUT
|
||||
sta KEEN_XL
|
||||
sta SCORE0
|
||||
sta SCORE1
|
||||
sta SCORE2
|
||||
sta KEEN_FALLING
|
||||
sta KEEN_SHOOTING
|
||||
sta KICK_UP_DUST
|
||||
sta DOOR_ACTIVATED
|
||||
sta INVENTORY
|
||||
|
||||
; lda #<enemy_data
|
||||
; sta ENEMY_DATAL
|
||||
; lda #>enemy_data
|
||||
; sta ENEMY_DATAH
|
||||
|
||||
; FIXME: temporary
|
||||
; lda INVENTORY
|
||||
; ora #INV_RED_KEY
|
||||
; sta INVENTORY
|
||||
|
||||
; lda #$10
|
||||
; sta SCORE0
|
||||
|
||||
lda #1
|
||||
sta FIREPOWER
|
||||
|
||||
lda #2 ; draw twice (both pages)
|
||||
sta UPDATE_STATUS
|
||||
|
||||
lda #7
|
||||
sta HEALTH
|
||||
|
||||
lda #4
|
||||
sta DRAW_PAGE
|
||||
|
||||
lda #18
|
||||
sta KEEN_X
|
||||
lda #11
|
||||
sta KEEN_Y
|
||||
|
||||
;====================================
|
||||
; load mars background
|
||||
;====================================
|
||||
|
||||
lda #<mars_zx02
|
||||
sta ZX0_src
|
||||
lda #>mars_zx02
|
||||
sta ZX0_src+1
|
||||
|
||||
lda #$c ; load to page $c00
|
||||
|
||||
jsr full_decomp
|
||||
|
||||
|
||||
|
||||
;====================================
|
||||
;====================================
|
||||
; Main loop
|
||||
;====================================
|
||||
;====================================
|
||||
|
||||
keen_loop:
|
||||
|
||||
; copy over background
|
||||
|
||||
jsr gr_copy_to_current
|
||||
|
||||
; draw keen
|
||||
|
||||
jsr draw_keen
|
||||
|
||||
jsr page_flip
|
||||
|
||||
jsr handle_keypress
|
||||
|
||||
; jsr move_keen
|
||||
|
||||
;========================
|
||||
; increment frame count
|
||||
;========================
|
||||
|
||||
inc FRAMEL
|
||||
bne no_frame_oflo
|
||||
inc FRAMEH
|
||||
no_frame_oflo:
|
||||
|
||||
;===========================
|
||||
; check end of level
|
||||
;===========================
|
||||
|
||||
lda LEVEL_OVER
|
||||
beq do_keen_loop
|
||||
|
||||
jmp done_with_keen
|
||||
|
||||
|
||||
|
||||
|
||||
do_keen_loop:
|
||||
|
||||
; delay
|
||||
; lda #200
|
||||
; jsr WAIT
|
||||
|
||||
jmp keen_loop
|
||||
|
||||
|
||||
done_with_keen:
|
||||
bit KEYRESET ; clear keypress
|
||||
|
||||
|
||||
lda #LOAD_KEEN1
|
||||
sta WHICH_LOAD
|
||||
|
||||
rts ; exit back
|
||||
|
||||
|
||||
;==========================
|
||||
; includes
|
||||
;==========================
|
||||
|
||||
; level graphics
|
||||
|
||||
mars_zx02:
|
||||
.incbin "maps/mars_map.gr.zx02"
|
||||
|
||||
.include "text_print.s"
|
||||
.include "gr_offsets.s"
|
||||
.include "gr_fast_clear.s"
|
||||
.include "gr_copy.s"
|
||||
.include "gr_pageflip.s"
|
||||
; .include "gr_putsprite_crop.s"
|
||||
.include "zx02_optim.s"
|
||||
|
||||
; .include "status_bar.s"
|
||||
; .include "keyboard.s"
|
||||
.include "joystick.s"
|
||||
|
||||
.include "text_drawbox.s"
|
||||
.include "print_help.s"
|
||||
.include "quit_yn.s"
|
||||
; .include "level_end.s"
|
||||
|
||||
.include "sound_effects.s"
|
||||
.include "speaker_tone.s"
|
||||
|
||||
|
||||
|
||||
;=========================
|
||||
; draw keen
|
||||
;=========================
|
||||
; D32
|
||||
draw_keen:
|
||||
|
||||
lda KEEN_Y
|
||||
and #1
|
||||
bne draw_keen_odd
|
||||
|
||||
draw_keen_odd:
|
||||
|
||||
|
||||
draw_keen_even:
|
||||
lda KEEN_Y
|
||||
and #$FE
|
||||
tay
|
||||
lda gr_offsets,Y
|
||||
sta OUTL
|
||||
lda gr_offsets+1,Y
|
||||
clc
|
||||
adc DRAW_PAGE
|
||||
sta OUTH
|
||||
|
||||
ldy KEEN_X
|
||||
lda #$3D
|
||||
sta (OUTL),Y
|
||||
|
||||
rts
|
||||
|
||||
|
||||
|
||||
|
||||
;==============================
|
||||
; Handle Keypress
|
||||
;==============================
|
||||
handle_keypress:
|
||||
|
||||
; first handle joystick
|
||||
lda JOYSTICK_ENABLED
|
||||
beq actually_handle_keypress
|
||||
|
||||
; only check joystick every-other frame
|
||||
lda FRAMEL
|
||||
and #$1
|
||||
beq actually_handle_keypress
|
||||
|
||||
check_button:
|
||||
lda PADDLE_BUTTON0
|
||||
bpl button_clear
|
||||
|
||||
lda JS_BUTTON_STATE
|
||||
bne js_check
|
||||
|
||||
lda #1
|
||||
sta JS_BUTTON_STATE
|
||||
lda #' '
|
||||
jmp check_sound
|
||||
|
||||
button_clear:
|
||||
lda #0
|
||||
sta JS_BUTTON_STATE
|
||||
|
||||
js_check:
|
||||
jsr handle_joystick
|
||||
|
||||
js_check_left:
|
||||
lda value0
|
||||
cmp #$20
|
||||
bcs js_check_right ; if less than 32, left
|
||||
lda #'A'
|
||||
bne check_sound
|
||||
|
||||
js_check_right:
|
||||
cmp #$40
|
||||
bcc js_check_up
|
||||
lda #'D'
|
||||
bne check_sound
|
||||
|
||||
js_check_up:
|
||||
lda value1
|
||||
cmp #$20
|
||||
bcs js_check_down
|
||||
lda #'W'
|
||||
|
||||
bne check_sound
|
||||
|
||||
js_check_down:
|
||||
cmp #$40
|
||||
bcc done_joystick
|
||||
lda #'S'
|
||||
bne check_sound
|
||||
|
||||
|
||||
done_joystick:
|
||||
|
||||
|
||||
|
||||
actually_handle_keypress:
|
||||
lda KEYPRESS
|
||||
bmi keypress
|
||||
|
||||
jmp no_keypress
|
||||
|
||||
keypress:
|
||||
and #$7f ; clear high bit
|
||||
cmp #' '
|
||||
beq check_sound ; make sure not to lose space
|
||||
and #$df ; convert uppercase to lower case
|
||||
|
||||
check_sound:
|
||||
cmp #$14 ; control-T
|
||||
bne check_help
|
||||
|
||||
lda SOUND_STATUS
|
||||
eor #SOUND_DISABLED
|
||||
sta SOUND_STATUS
|
||||
jmp done_keypress
|
||||
|
||||
check_help:
|
||||
cmp #'H' ; H (^H is same as left)
|
||||
bne check_joystick
|
||||
|
||||
jsr print_help
|
||||
jmp done_keypress
|
||||
|
||||
; can't be ^J as that's the same as down
|
||||
check_joystick:
|
||||
cmp #'J' ; J
|
||||
bne check_left
|
||||
|
||||
lda JOYSTICK_ENABLED
|
||||
eor #1
|
||||
sta JOYSTICK_ENABLED
|
||||
jmp done_keypress
|
||||
|
||||
check_left:
|
||||
cmp #'A'
|
||||
beq left_pressed
|
||||
cmp #8 ; left key
|
||||
bne check_right
|
||||
|
||||
left_pressed:
|
||||
; lda KEEN_DIRECTION
|
||||
; cmp #$ff ; check if facing left
|
||||
; bne face_left
|
||||
|
||||
; lda #1
|
||||
; sta KEEN_WALKING
|
||||
dec KEEN_X
|
||||
done_left_pressed:
|
||||
jmp done_keypress
|
||||
|
||||
check_right:
|
||||
cmp #'D'
|
||||
beq right_pressed
|
||||
cmp #$15 ; right key
|
||||
bne check_up
|
||||
|
||||
right_pressed:
|
||||
inc KEEN_X
|
||||
done_right_pressed:
|
||||
jmp done_keypress
|
||||
|
||||
check_up:
|
||||
cmp #'W'
|
||||
beq up_pressed
|
||||
cmp #$0B ; up key
|
||||
bne check_down
|
||||
|
||||
up_pressed:
|
||||
dec KEEN_Y
|
||||
done_up_pressed:
|
||||
jmp done_keypress
|
||||
|
||||
check_down:
|
||||
cmp #'S'
|
||||
beq down_pressed
|
||||
cmp #$0A
|
||||
bne check_space
|
||||
down_pressed:
|
||||
|
||||
inc KEEN_Y
|
||||
done_down_pressed:
|
||||
jmp done_keypress
|
||||
|
||||
check_space:
|
||||
cmp #' '
|
||||
bne check_return
|
||||
space_pressed:
|
||||
|
||||
|
||||
; lda KEEN_JUMPING
|
||||
; bne done_keypress ; don't jump if already jumping
|
||||
|
||||
inc LEVEL_OVER
|
||||
|
||||
jmp done_keypress
|
||||
|
||||
check_return:
|
||||
cmp #13
|
||||
bne check_escape
|
||||
|
||||
return_pressed:
|
||||
inc LEVEL_OVER
|
||||
|
||||
done_return:
|
||||
jmp no_keypress
|
||||
|
||||
check_escape:
|
||||
cmp #27
|
||||
bne done_keypress
|
||||
|
||||
jsr print_quit
|
||||
|
||||
jmp done_keypress
|
||||
|
||||
|
||||
|
||||
done_keypress:
|
||||
no_keypress:
|
||||
bit KEYRESET
|
||||
rts
|
|
@ -186,7 +186,7 @@ done_intro:
|
|||
;============================
|
||||
; set up initial location
|
||||
|
||||
lda #LOAD_KEEN1
|
||||
lda #LOAD_MARS
|
||||
sta WHICH_LOAD ; start at first level
|
||||
|
||||
rts
|
||||
|
|
|
@ -157,7 +157,7 @@ check_up:
|
|||
bne check_down
|
||||
up_pressed:
|
||||
|
||||
jsr up_action
|
||||
; jsr up_action
|
||||
|
||||
done_up_pressed:
|
||||
jmp done_keypress
|
||||
|
|
|
@ -150,11 +150,14 @@ copy_filename_done:
|
|||
|
||||
filenames:
|
||||
.word title_filename
|
||||
.word mars_filename
|
||||
.word keen1_filename
|
||||
.word keen2_filename
|
||||
|
||||
title_filename:
|
||||
.byte "KEEN_TITLE",0
|
||||
mars_filename:
|
||||
.byte "KEEN_MARS",0
|
||||
keen1_filename:
|
||||
.byte "KEEN_LEVEL1",0
|
||||
keen2_filename:
|
||||
|
|
|
@ -2,8 +2,10 @@ CC = gcc
|
|||
CFLAGS = -g -Wall -O2
|
||||
|
||||
ZX02 = ~/research/6502_compression/zx02.git/build/zx02 -f
|
||||
PNG2GR = ../../../utils/gr-utils/png2gr
|
||||
|
||||
all: level1_map.zx02 png2map
|
||||
|
||||
all: level1_map.zx02 png2map mars_map.gr.zx02
|
||||
|
||||
###
|
||||
|
||||
|
@ -13,6 +15,17 @@ level1_map.zx02: level1_map.inc
|
|||
level1_map.inc: level1_map.png png2map
|
||||
./png2map level1_map.png level1_map.inc
|
||||
|
||||
|
||||
###
|
||||
|
||||
mars_map.gr.zx02: mars_map.gr
|
||||
$(ZX02) mars_map.gr mars_map.gr.zx02
|
||||
|
||||
mars_map.gr: mars_map.png
|
||||
$(PNG2GR) mars_map.png mars_map.gr
|
||||
|
||||
|
||||
|
||||
###
|
||||
|
||||
loadpng.o: loadpng.c loadpng.h
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 873 B |
Loading…
Reference in New Issue