ootw: add new assembly title screen

This commit is contained in:
Vince Weaver 2020-01-26 01:30:49 -05:00
parent 8c1dd70b21
commit eb1360f0e0
8 changed files with 438 additions and 45 deletions

View File

@ -20,10 +20,12 @@ ootw.dsk: HELLO LOADER INTRO OOTW_C1 OOTW_C2 OOTW_C3 OOTW_C4 OOTW_C5
# $(DOS33) -y ootw.dsk BSAVE -a 0x1700 AUDIO_TEST
# $(DOS33) -y ootw.dsk BSAVE -a 0x2000 COMPRESS-TEST
ootw_side2.dsk: HELLO2 LOADER2 ENDING
ootw_side2.dsk: HELLO TITLE LOADER2 ENDING OOTW_C15
cp empty.dsk ootw_side2.dsk
$(DOS33) -y ootw_side2.dsk SAVE A HELLO2 HELLO
$(DOS33) -y ootw_side2.dsk SAVE A HELLO HELLO
$(DOS33) -y ootw_side2.dsk BSAVE -a 0x1000 TITLE
$(DOS33) -y ootw_side2.dsk BSAVE -a 0x1400 LOADER2 LOADER
$(DOS33) -y ootw_side2.dsk BSAVE -a 0x1700 OOTW_C15
$(DOS33) -y ootw_side2.dsk BSAVE -a 0x1700 ENDING
@ -127,6 +129,21 @@ ootw_c5.o: ootw_c5.s \
ootw_graphics/l5cave/ootw_c5_cave.inc
ca65 -o ootw_c5.o ootw_c5.s -l ootw_c5.lst
###
OOTW_C15: ootw_c15.o
ld65 -o OOTW_C15 ootw_c15.o -C ../linker_scripts/apple2_1700.inc
ootw_c15.o: ootw_c15.s \
gr_copy.s gr_copy_offset.s gr_fast_clear.s gr_pageflip.s gr_unrle.s \
gr_putsprite.s gr_putsprite_flipped.s gr_putsprite_crop.s \
keyboard.s gr_run_sequence.s physicist.s \
collision.s door.s gun.s blast.s shield.s \
ootw_graphics/sprites/physicist.inc \
ootw_graphics/l5cave/ootw_c5_cave.inc
ca65 -o ootw_c15.o ootw_c15.s -l ootw_c15.lst
####
@ -255,6 +272,15 @@ LOADER2: loader2.o
loader2.o: loader2.s
ca65 -o loader2.o loader2.s -l loader2.lst
####
TITLE: title.o
ld65 -o TITLE title.o -C ../linker_scripts/apple2_1000.inc
title.o: title.s
ca65 -o title.o title.s -l title.lst
####

View File

@ -1,38 +1,3 @@
5 HOME
10 PRINT "OOTW PROOF-OF-CONCEPT V2.7 (8/22/2019)"
15 PRINT " BY DEATER"
20 PRINT " DISK,LZ4 BY QKUMBA"
25 PRINT " ,"
30 PRINT "ORIGINAL BY ERIC CHAHI"
40 PRINT "INSPIRED BY PAUL NICHOLAS PICO-8 VERSION"
50 PRINT
60 PRINT
80 PRINT
85 HTAB 10:PRINT " ______"
90 HTAB 10:PRINT "A \/\/\/ PRODUCTION"
92 PRINT
95 HTAB 12:PRINT "APPLE ][ FOREVER"
100 PRINT:PRINT "WHAT DO YOU WANT TO DO?"
110 PRINT "0). START WITH INTRO MOVIE"
120 PRINT "1). START AT CHECKPOINT 1 (IH8S)"
130 PRINT "2). START AT CHECKPOINT 2 (RAGE)"
135 PRINT "3). START AT CHECKPOINT 3 (VENT)"
135 PRINT "4). START AT CHECKPOINT 4 (RCHG)"
135 PRINT "5). START AT CHECKPOINT 5 (CAVE)"
140 INPUT A
150 IF A < 0 OR A > 5 THEN 5
155 IF A=1 OR A=2 OR A=3 OR A=4 OR A=5 THEN GOSUB 300
160 POKE 5,A
200 PRINT CHR$ (4)"BRUN LOADER"
300 HOME
305 HTAB 8:PRINT "LOADING (BE PATIENT...)"
310 PRINT:PRINT:PRINT:PRINT
315 PRINT "CONTROLS:"
320 PRINT " A OR <- : MOVE LEFT"
325 PRINT " D OR -> : MOVE RIGHT"
340 PRINT " W OR UP : JUMP"
345 PRINT " S OR DOWN : CROUCH / PICKUP"
350 PRINT " SPACEBAR : KICK / SHOOT"
355 PRINT " L : CHARGE GUN"
360 PRINT " ESC : QUITS"
365 RETURN
10 PRINT CHR$(4);"BRUN TITLE"

38
ootw/hello.bas.old Normal file
View File

@ -0,0 +1,38 @@
5 HOME
10 PRINT "OOTW PROOF-OF-CONCEPT V2.7 (8/22/2019)"
15 PRINT " BY DEATER"
20 PRINT " DISK,LZ4 BY QKUMBA"
25 PRINT " ,"
30 PRINT "ORIGINAL BY ERIC CHAHI"
40 PRINT "INSPIRED BY PAUL NICHOLAS PICO-8 VERSION"
50 PRINT
60 PRINT
80 PRINT
85 HTAB 10:PRINT " ______"
90 HTAB 10:PRINT "A \/\/\/ PRODUCTION"
92 PRINT
95 HTAB 12:PRINT "APPLE ][ FOREVER"
100 PRINT:PRINT "WHAT DO YOU WANT TO DO?"
110 PRINT "0). START WITH INTRO MOVIE"
120 PRINT "1). START AT CHECKPOINT 1 (IH8S)"
130 PRINT "2). START AT CHECKPOINT 2 (RAGE)"
135 PRINT "3). START AT CHECKPOINT 3 (VENT)"
135 PRINT "4). START AT CHECKPOINT 4 (RCHG)"
135 PRINT "5). START AT CHECKPOINT 5 (CAVE)"
140 INPUT A
150 IF A < 0 OR A > 5 THEN 5
155 IF A=1 OR A=2 OR A=3 OR A=4 OR A=5 THEN GOSUB 300
160 POKE 5,A
200 PRINT CHR$ (4)"BRUN LOADER"
300 HOME
305 HTAB 8:PRINT "LOADING (BE PATIENT...)"
310 PRINT:PRINT:PRINT:PRINT
315 PRINT "CONTROLS:"
320 PRINT " A OR <- : MOVE LEFT"
325 PRINT " D OR -> : MOVE RIGHT"
340 PRINT " W OR UP : JUMP"
345 PRINT " S OR DOWN : CROUCH / PICKUP"
350 PRINT " SPACEBAR : KICK / SHOOT"
355 PRINT " L : CHARGE GUN"
360 PRINT " ESC : QUITS"
365 RETURN

View File

@ -100,6 +100,17 @@ filenames_low:
.byte <ootw_c3_filename
.byte <ootw_c4_filename
.byte <ootw_c5_filename
.byte <ootw_c6_filename
.byte <ootw_c7_filename
.byte <ootw_c8_filename
.byte <ootw_c9_filename
.byte <ootw_c10_filename
.byte <ootw_c11_filename
.byte <ootw_c12_filename
.byte <ootw_c13_filename
.byte <ootw_c14_filename
.byte <ootw_c15_filename
.byte <ending_filename
filenames_high:
.byte >intro_filename
@ -108,24 +119,68 @@ filenames_high:
.byte >ootw_c3_filename
.byte >ootw_c4_filename
.byte >ootw_c5_filename
.byte >ootw_c6_filename
.byte >ootw_c7_filename
.byte >ootw_c8_filename
.byte >ootw_c9_filename
.byte >ootw_c10_filename
.byte >ootw_c11_filename
.byte >ootw_c12_filename
.byte >ootw_c13_filename
.byte >ootw_c14_filename
.byte >ootw_c15_filename
.byte >ending_filename
intro_filename:
.byte "ENDING",0
.byte 0
ootw_c1_filename:
.byte "OOTW_C1",0
.byte 0
ootw_c2_filename:
.byte "OOTW_C2",0
.byte 0
ootw_c3_filename:
.byte "OOTW_C3",0
.byte 0
ootw_c4_filename:
.byte "OOTW_C4",0
.byte 0
ootw_c5_filename:
.byte "OOTW_C5",0
.byte 0
ootw_c6_filename:
.byte "OOTW_C6",0
ootw_c7_filename:
.byte "OOTW_C7",0
ootw_c8_filename:
.byte "OOTW_C8",0
ootw_c9_filename:
.byte "OOTW_9",0
ootw_c10_filename:
.byte "OOTW_C10",0
ootw_c11_filename:
.byte "OOTW_C11",0
ootw_c12_filename:
.byte "OOTW_C12",0
ootw_c13_filename:
.byte "OOTW_C13",0
ootw_c14_filename:
.byte "OOTW_C14",0
ootw_c15_filename:
.byte "OOTW_C15",0
ending_filename:
.byte "ENDING",0

View File

@ -34,3 +34,12 @@ INSPIRED BY PAUL NICHOLAS PICO-8 VERSION
ENDING
*0 1 2 BASE, HIGHLIGHT ... WHICH=BASE+HIGHLIGHT
0 *1 2
0 1 *2
1 2 *3
1 *2 3

View File

@ -43,6 +43,7 @@ print_string:
print_string_loop:
lda (OUTL),Y
beq done_print_string
ps_smc1:
eor #$80 ; flip from ASCII to text char
sta (BASL),Y
iny

296
ootw/title.s Normal file
View File

@ -0,0 +1,296 @@
; Title Screen / Menu for OOTW
.include "zp.inc"
.include "hardware.inc"
title:
lda #0
sta MENU_BASE ; start at level0 by default
sta MENU_HIGHLIGHT
bit TEXT
bit PAGE0
lda #<title_text
sta OUTL
lda #>title_text
sta OUTH
jsr move_and_print_list
title_loop:
clc
lda MENU_BASE
adc MENU_HIGHLIGHT
sta WHICH_LOAD
jsr draw_menu
wait_for_keypress:
lda KEYPRESS
bpl wait_for_keypress
bit KEYRESET
; $15/$A = right/down
cmp #$15+$80
beq down_pressed
cmp #$A+$80
beq down_pressed
; 8/B = left/up
cmp #$8+$80
beq up_pressed
cmp #$B+$80
beq up_pressed
; Return = 13
cmp #13+$80
beq all_done
; unknown, ignore
jmp title_loop
down_pressed:
lda MENU_HIGHLIGHT
cmp #2
beq down_offset
inc MENU_HIGHLIGHT
bne title_loop ; branch always
down_offset:
lda MENU_BASE
cmp #16-2
beq title_loop ; don't increment if 16
inc MENU_BASE
bne title_loop ; branch always
up_pressed:
lda MENU_HIGHLIGHT
beq up_offset ; don't decrement if 0
dec MENU_HIGHLIGHT
jmp title_loop
up_offset:
lda MENU_BASE
beq title_loop ; don't decrement if 0
dec MENU_BASE
jmp title_loop
all_done:
jmp all_done
.include "text_print.s"
.include "gr_offsets.s"
draw_menu:
lda #<menu_items
sta OUTL
lda #>menu_items
sta OUTH
clc
ldy #0
get_right_offset:
cpy MENU_BASE
beq get_right_offset_done
lda OUTL
adc #23
sta OUTL
lda OUTH
adc #0
sta OUTH
iny
jmp get_right_offset
get_right_offset_done:
ldy #1
lda #19
sta (OUTL),Y
jsr disable_highlight
lda MENU_HIGHLIGHT
bne no_highlight_line1
jsr enable_highlight
no_highlight_line1:
jsr move_and_print
ldy #1
lda #20
sta (OUTL),Y
jsr disable_highlight
lda MENU_HIGHLIGHT
cmp #1
bne no_highlight_line2
jsr enable_highlight
no_highlight_line2:
jsr move_and_print
ldy #1
lda #21
sta (OUTL),Y
jsr disable_highlight
lda MENU_HIGHLIGHT
cmp #2
bne no_highlight_line3
jsr enable_highlight
no_highlight_line3:
jsr move_and_print
jsr disable_highlight
draw_scrollbar:
lda #' '+$80
sta $550+29
sta $550+30
ldx WHICH_LOAD
beq draw_line1
draw_top:
lda #'/'+$80
sta $550+29 ; line 18
lda #'\'+$80
sta $550+30
draw_line1:
lda #'I'+$80
cpx #5
bcs draw_line1_I ; bge
draw_line1_X:
clc
adc #'X'-'I'
draw_line1_I:
sta $5d0+29 ; line 19
sta $5d0+30
draw_line2:
lda #'I'+$80
cpx #5
bcc draw_line2_I ; blt
cpx #10
bcs draw_line2_I ; bge
draw_line2_X:
clc
adc #'X'-'I'
draw_line2_I:
sta $650+29 ; line 20
sta $650+30
draw_line3:
lda #'I'+$80
cpx #10
bcc draw_line3_I ; blt
draw_line3_X:
clc
adc #'X'-'I'
draw_line3_I:
sta $6d0+29 ; line 21
sta $6d0+30
draw_bottom:
lda #' '+$80
sta $750+29 ; line 22
sta $750+30 ; line 22
cpx #16
beq done_draw_bottom
lda #'\'+$80
sta $750+29 ; line 22
lda #'/'+$80
sta $750+30
done_draw_bottom:
rts
enable_highlight:
lda #$29 ; and
sta ps_smc1
lda #$3f
sta ps_smc1+1
rts
disable_highlight:
lda #$49
sta ps_smc1 ; eor
lda #$80
sta ps_smc1+1
rts
;.byte 0,18," /\",0
;.byte 0,19," CHECKPOINT 1 (IH8S) XX",0
;.byte 0,20," CHECKPOINT 2 (RAGE) II",0
;.byte 0,21," CHECKPOINT 3 (VENT) II",0
;.byte 0,22," \/",0
title_text:
.byte 1, 0, "//II II--\ II--\ II II-- ]][[ ]][[",0
.byte 0, 1,"//_II II__/ II__/ II II- ][ ][",0
.byte 0, 2,"II II II II II__ II__ ]][[ ]][[",0
.byte 0, 3,"II II II _",0
.byte 3, 4, "II II // //=I\ II==\ II II \\",0
.byte 3, 5, "II II // // II II==/ II II //",0
.byte 3, 6, "II II//\\// \===I/ II \\ II== II//",0
.byte 0, 8,"OOTW PROOF-OF-CONCEPT V2.8 (25 JAN 2020)",0
.byte 0, 9,"CODE: DEATER DISK,LZ4: QKUMBA",0
.byte 12,10, ",",0
.byte 0,11,"ORIGINAL BY ERIC CHAHI",0
.byte 0,12,"INSPIRED BY PAUL NICHOLAS PICO-8 VERSION",0
.byte 12,13, "______",0
.byte 10,14, "A \/\/\/ PRODUCTION",0
.byte 12,16, "APPLE ][ FOREVER",0
.byte 1,23, "USE ARROWS TO SELECT, RETURN TO START",0
.byte 255
menu_items: ; 23 wide
.byte 8,0,"INTRO MOVIE ",0
.byte 8,0,"CHECKPOINT 1 (IH8S)",0 ; LDKD
.byte 8,0,"CHECKPOINT 2 (RAGE)",0 ; HTDC
.byte 8,0,"CHECKPOINT 3 (VENT)",0 ; CLLD
.byte 8,0,"CHECKPOINT 4 (RCHG)",0 ; LBKG
.byte 8,0,"CHECKPOINT 5 (CAVE)",0 ; XDDJ
.byte 8,0,"CHECKPOINT 6 (CEIL)",0 ; FXLC
.byte 8,0,"CHECKPOINT 7 (RUNC)",0 ; KRFK
.byte 8,0,"CHECKPOINT 8 (ROLL)",0 ; KLFB
.byte 8,0,"CHECKPOINT 9 (SWIM)",0 ; TTCT
.byte 8,0,"CHECKPOINT 10 (GRND)",0 ; HRTB
.byte 8,0,"CHECKPOINT 11 (ABVE)",0 ; BRTD
.byte 8,0,"CHECKPOINT 12 (THRW)",0 ; TFBB
.byte 8,0,"CHECKPOINT 13 (ARMS)",0 ; TXHF
.byte 8,0,"CHECKPOINT 14 (TANK)",0 ; CKJL
.byte 8,0,"CHECKPOINT 15 (ANKD)",0 ; LFCK
.byte 8,0,"ENDING ",0
; 160 POKE 5,A
; 305 HTAB 8:PRINT "LOADING (BE PATIENT...)"
; 310 PRINT:PRINT:PRINT:PRINT
; 315 PRINT "CONTROLS:"
; 320 PRINT " A OR <- : MOVE LEFT"
; 325 PRINT " D OR -> : MOVE RIGHT"
; 340 PRINT " W OR UP : JUMP"
; 345 PRINT " S OR DOWN : CROUCH / PICKUP"
; 350 PRINT " SPACEBAR : KICK / SHOOT"
; 355 PRINT " L : CHARGE GUN"
; 360 PRINT " ESC : QUITS"

View File

@ -7,8 +7,11 @@ LZ4_DST = $02
LZ4_END = $04
WHICH_LOAD = $05
COUNT = $06
MENU_BASE = $06
MENU_HIGHLIGHT = $07
DELTA = $08
;; Zero page monitor routines addresses
WNDLFT = $20