diff --git a/games/riven_hgr/Makefile b/games/riven_hgr/Makefile index 40105687..b2a63dc9 100644 --- a/games/riven_hgr/Makefile +++ b/games/riven_hgr/Makefile @@ -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 diff --git a/games/riven_hgr/disk00_files/atrus.s b/games/riven_hgr/disk00_files/atrus.s index bb8f74b9..eaab145b 100644 --- a/games/riven_hgr/disk00_files/atrus.s +++ b/games/riven_hgr/disk00_files/atrus.s @@ -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 @@ -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 diff --git a/games/riven_hgr/text_print.s b/games/riven_hgr/text_print.s index 0f26cc64..3ccc36ed 100644 --- a/games/riven_hgr/text_print.s +++ b/games/riven_hgr/text_print.s @@ -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 diff --git a/games/riven_hgr/title.s b/games/riven_hgr/title.s index bc76e8a6..4377afb5 100644 --- a/games/riven_hgr/title.s +++ b/games/riven_hgr/title.s @@ -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