keen1: update story code

This commit is contained in:
Vince Weaver 2024-05-08 19:52:31 -04:00
parent 28f144664e
commit f7cd1b2e43
5 changed files with 153 additions and 54 deletions

View File

@ -0,0 +1,10 @@
gr_offsets_low:
.byte <$400,<$480,<$500,<$580,<$600,<$680,<$700,<$780
.byte <$428,<$4a8,<$528,<$5a8,<$628,<$6a8,<$728,<$7a8
.byte <$450,<$4d0,<$550,<$5d0,<$650,<$6d0,<$750,<$7d0
gr_offsets_high:
.byte >$400,>$480,>$500,>$580,>$600,>$680,>$700,>$780
.byte >$428,>$4a8,>$528,>$5a8,>$628,>$6a8,>$728,>$7a8
.byte >$450,>$4d0,>$550,>$5d0,>$650,>$6d0,>$750,>$7d0

View File

@ -57,27 +57,112 @@ load_background:
bit SET_TEXT
bit PAGE1
ldy #0
lda gr_offsets,Y
sta INL
iny
lda gr_offsets,Y
sta INH
lda #<story_data
sta OUTL
sta START_LINE_L
lda #>story_data
sta START_LINE_H
redraw_text:
ldx #0
lda START_LINE_L
sta INL
lda START_LINE_H
sta INH
outer_text_loop:
lda gr_offsets_low,X
sta OUTL
lda gr_offsets_high,X
sta OUTH
ldy #39
inner_text_loop:
lda (OUTL),Y
sta (INL),Y
lda (INL),Y
sta (OUTL),Y
dey
bpl inner_text_loop
clc
lda INL
adc #40
sta INL
lda INH
adc #0
sta INH
inx
cpx #17
bne outer_text_loop
;==================
; draw message
;==================
ldx #18
lda gr_offsets_low,X
sta OUTL
lda gr_offsets_high,X
sta OUTH
ldy #39
message_text_loop:
lda message,Y
and #$3f
sta (OUTL),Y
dey
bpl message_text_loop
jsr wait_until_keypress
and #$7f ; clear high bit
and #$df ; change lower to upper
cmp #13
beq done_with_story
cmp #27
beq done_with_story
cmp #'W'
beq do_up
cmp #$0B
beq do_up
cmp #'S'
beq do_down
cmp #$0A
beq do_down
jmp redraw_text
do_up:
sec
lda START_LINE_L
sbc #40
sta START_LINE_L
lda START_LINE_H
sbc #0
sta START_LINE_H
jmp redraw_text
do_down:
clc
lda START_LINE_L
adc #40
sta START_LINE_L
lda START_LINE_H
adc #0
sta START_LINE_H
jmp redraw_text
done_with_story:
lda #LOAD_TITLE
sta WHICH_LOAD
@ -93,9 +178,9 @@ inner_text_loop:
.include "gr_copy.s"
; .include "wait_a_bit.s"
.include "gr_offsets.s"
.include "gr_offsets_split.s"
.include "zx02_optim.s"
.include "text_help.s"
.include "gr_fast_clear.s"
.include "text_print.s"
@ -108,46 +193,6 @@ story_bg:
compressed_story_data:
.incbin "story/story_data.zx02"
;====================================
; wait for keypress or a few seconds
;====================================
wait_a_bit:
bit KEYRESET
tax
keyloop:
lda #200 ; delay a bit
jsr WAIT
lda KEYPRESS
bmi done_keyloop
; bmi keypress_exit
dex
bne keyloop
done_keyloop:
bit KEYRESET
cmp #'H'|$80
bne really_done_keyloop
bit SET_TEXT
jsr print_help
bit SET_GR
bit PAGE1
ldx #100
jmp keyloop
really_done_keyloop:
rts
wait_until_keypress:
@ -157,3 +202,5 @@ wait_until_keypress:
rts
message:
.byte " ESC TO EXIT / ARROWS TO READ ",0

View File

@ -1,4 +1,5 @@
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv) {
@ -6,12 +7,51 @@ int main(int argc, char **argv) {
char *result;
int inverse=0;
int count,i,length;
while(1) {
result=fgets(string,BUFSIZ,stdin);
if (result==NULL) break;
printf("%s",string);
if (result[0]=='#') {
if (strstr(string,"inverse")) inverse=1;
if (strstr(string,"normal")) inverse=0;
continue;
}
count=0;
length=strlen(string);
if (inverse) {
putchar(' '&0x3f);
}
else {
putchar(' '|0x80);
}
for(i=0;i<length;i++) {
if (string[i]=='\n') continue;
if (inverse) {
putchar(string[i]&0x3f);
}
else {
putchar(string[i]|0x80);
}
}
for(i=0;i<(40-length);i++) {
if (inverse) {
putchar(' '&0x3f);
}
else {
putchar(' '|0x80);
}
}
}
return 0;

View File

@ -24,7 +24,7 @@ JUSTICE WITH AN IRON HAND!
#inverse
EPISONE ONE: MAROONED ON MARS
EPISODE ONE: MAROONED ON MARS
#normal
@ -126,7 +126,7 @@ RETURNED HOME, ONLY TO FIND THE
VORTICON MOTHERSHIP HOVERING OVER THE
EARTH, READY TO DESTROY ALL OF EARTH'S
CITIES AND WONDERS! KEEN MUST SNEAK
ABOART, STOP THE IMMINENT DESTRUCTION
ABOARD, STOP THE IMMINENT DESTRUCTION
OF EARTH, AND FIND A WAY TO NEUTRALIZE
THE MOTHERSHIP! IF HE FAILS...THE
EARTH EXPLODES! (NO PRESSURE.)
@ -135,7 +135,7 @@ EARTH EXPLODES! (NO PRESSURE.)
EPISODE THREE: KEEN MUST DIE!
#normal
KEEN FLIST TO THE PLANET VORTICON VI
KEEN FLIES TO THE PLANET VORTICON VI
TO ONCE AND FOR ALL RID THE GALAXY OF
THE VORTICON MENACE . THE ENTIRE
PLANET IS WAITING FOR HIS ARRIVAL,

View File

@ -157,6 +157,8 @@ HARDTOP_TILES = $B0
ALLHARD_TILES = $B1
SOUNDL = $B2
SOUNDH = $B3
START_LINE_L = $B4 ; story
START_LINE_H = $B5 ; story
WHICH_SLOT = $DA
JS_BUTTON_STATE = $DB