riven: patch things so it automatically uses lowercase on Apple II+

This commit is contained in:
Vince Weaver 2024-07-01 14:48:25 -04:00
parent 5bde6743e6
commit 696ac3d4f1
4 changed files with 85 additions and 42 deletions

View File

@ -163,6 +163,7 @@ QLOAD: qload.o
qload.o: qload.s qboot.inc \
zx02_optim.s wait.s \
gr_offsets.s text_print.s \
draw_pointer.s log_table.s \
disk40_files/disk40_defines.inc \
graphics_sprites/pointer_sprites.inc \
@ -364,7 +365,9 @@ qload.inc: generate_common QLOAD
./generate_common -a 0x1600 -s change_location qload.lst >> qload.inc
./generate_common -a 0x1600 -s move_and_print qload.lst >> qload.inc
./generate_common -a 0x1600 -s move_and_print_list qload.lst >> qload.inc
./generate_common -a 0x1600 -s clear_bottom qload.lst >> qload.inc
./generate_common -a 0x1600 -s set_normal qload.lst >> qload.inc
./generate_common -a 0x1600 -s force_uppercase qload.lst >> qload.inc

View File

@ -35,6 +35,9 @@ atrus_start:
;===============================
atrus_loop:
; clear bottom text
jsr clear_bottom
; decompress graphics
@ -111,26 +114,26 @@ atrus_graphics:
; cross a page boundary
dialog_l:
.byte <dialog0 ; nothing
.byte <dialog1 ;
.byte <dialog0 ; nothing
.byte <dialog0 ; nothing
.byte <dialog0 ; nothing
.byte <dialog0 ; nothing
.byte <dialog0 ; nothing
.byte <dialog0 ; nothing
.byte <dialog1 ; returned
.byte <dialog2 ; history
.byte <dialog3 ; nothing
.byte <dialog4 ; nothing
.byte <dialog5 ; nothing
.byte <dialog6 ; nothing
.byte <dialog7 ; nothing
.byte <dialog0 ; nothing
.byte <dialog0 ; nothing
.byte <dialog0 ; nothing
dialog_h:
.byte >dialog0 ; nothing
.byte >dialog1 ;
.byte >dialog0 ; nothing
.byte >dialog0 ; nothing
.byte >dialog0 ; nothing
.byte >dialog0 ; nothing
.byte >dialog0 ; nothing
.byte >dialog0 ; nothing
.byte >dialog1 ; returned
.byte >dialog2 ; history
.byte >dialog3 ; nothing
.byte >dialog4 ; nothing
.byte >dialog5 ; nothing
.byte >dialog6 ; nothing
.byte >dialog7 ; nothing
.byte >dialog0 ; nothing
.byte >dialog0 ; nothing
.byte >dialog0 ; nothing
@ -142,44 +145,44 @@ dialog_h:
dialog0:
.byte 0,20," ",0,$ff
dialog1:
dialog1: ; returned
; [welcoming player back]
.byte 0,20,"Thank God you've returned.",0
.byte 0,21,"I need your help.",0
.byte 7,20,"Thank God you've returned.",0
.byte 11,22,"I need your help.",0
.byte $FF
dialog2:
.byte 0,20,"There's a great deal of history that",0
dialog2: ; history
.byte 2,20,"There's a great deal of history that",0
.byte 0,21,"you should know, but I'm afraid that...",0
.byte 0,22,"I must continue my writing. Here.",0
.byte 6,22,"I must continue my writing.",0
.byte $FF
dialog3:
;[hands player his journal]
.byte 0,20,"Most of what you'll need to know is in",0
.byte 0,21,"there.",0
.byte 0,22,"Keep it well hidden.",0
.byte 3,20,"Here. Most of what you'll need to",0
.byte 11,21,"know is in there.",0
.byte 10,23,"Keep it well hidden.",0
.byte $FF
dialog4:
;[picks up the book]
.byte 0,20,"For reasons you'll discover, I can't",0
.byte 0,21,"send you to Riven with a way out, but",0
.byte 0,22,"I can give you this.",0
.byte 2,20,"For reasons you'll discover, I can't",0
.byte 1,21,"send you to Riven with a way out, but",0
.byte 10,22,"I can give you this.",0
.byte $FF
dialog5:
.byte 0,20,"It appears to be a Linking Book, back",0
.byte 0,21,"here to D'ni, but it's actually a",0
.byte 0,22,"one-man prison. You'll need it,",0
.byte 0,23,"I'm afraid, to capture Gehn.",0
.byte 1,20,"It appears to be a Linking Book, back",0
.byte 3,21,"here to D'ni, but it's actually a",0
.byte 4,22,"one-man prison. You'll need it,",0
.byte 6,23,"I'm afraid, to capture Gehn.",0
;[hands player the Prison book]
.byte $FF
dialog6:
.byte 0,20,"Once you've found Catherine, signal me,",0
.byte 0,21,"and I'll come with a Linking Book",0
.byte 0,22,"to bring us back.",0
.byte 3,21,"and I'll come with a Linking Book",0
.byte 11,22,"to bring us back.",0
.byte $FF
dialog7:
@ -188,7 +191,7 @@ dialog7:
; re-opens to the first page, holds it up,",0
; showing glitchy panel]
.byte 0,20,"There's also a chance, if all goes",0
.byte 0,21,"well, that I might be able to get you",0
.byte 0,22,"back to the place that you came from.",0
.byte 3,20,"There's also a chance, if all goes",0
.byte 1,21,"well, that I might be able to get you",0
.byte 1,22,"back to the place that you came from.",0
.byte $FF

View File

@ -43,6 +43,16 @@ print_string:
print_string_loop:
lda (OUTL),Y
beq done_print_string
; adjust for upper/lowercase
cmp #$60
bcc not_lowercase
ps_smc2:
and #$ff
not_lowercase:
; adjust for inverse/flash/normal
ps_smc1:
and #$3f ; make sure we are inverse
sta (BASL),Y
@ -60,6 +70,16 @@ done_print_string:
rts
; want $E1 -> $81
; 1110 1000
; so and with $9f?
force_uppercase:
lda #$9f
sta ps_smc2+1
rts
; set normal text
set_normal:
lda #$80
@ -72,11 +92,12 @@ set_normal:
; restore inverse text
set_inverse:
lda #$29
sta ps_smc1
lda #$3f
lda #$3f ;
sta ps_smc1+1
lda #$29 ; and
sta ps_smc1
rts
@ -100,15 +121,16 @@ clear_bottom:
clear_bottom_loop_outer:
txa
asl
lda gr_offsets,X
tay
lda gr_offsets,Y
sta OUTL
inx
lda gr_offsets,X
iny
lda gr_offsets,Y
sta OUTH
lda #' '+$80
clear_bottom_loop_inner:
ldy #39
clear_bottom_loop_inner:
sta (OUTL),Y
dey
bpl clear_bottom_loop_inner

View File

@ -116,6 +116,21 @@ print_model:
jmp print_model
print_model_done:
;===========================
; patch lowercase printing
;===========================
; urgh, II,+ patch, e/c/gs no? there are other
; corner cases we're going to miss here
lda APPLEII_MODEL
cmp #'+'
beq patch_uppercase
cmp #' '
bne no_patch_uppercase
patch_uppercase:
jsr force_uppercase
no_patch_uppercase:
;==========================
; wait a bit