From 8649775d964430c3c4f8dbe3889e76d8ec010b9b Mon Sep 17 00:00:00 2001 From: Natt Akuma Date: Fri, 28 Nov 2025 02:47:40 +0700 Subject: [PATCH] Island transitions, more text --- loader/samples/minexample/minexample.s | 376 +++++++++---------------- 1 file changed, 133 insertions(+), 243 deletions(-) diff --git a/loader/samples/minexample/minexample.s b/loader/samples/minexample/minexample.s index 6d1cfe9..079a5e9 100644 --- a/loader/samples/minexample/minexample.s +++ b/loader/samples/minexample/minexample.s @@ -109,7 +109,7 @@ code_start: ldx #copyright jsr write_txt3 - ldx #$30 + ldx #$00 ldy #$01 jsr init_timer lda #1 @@ -123,12 +123,9 @@ code_start: lda timer_reached beq :- - ldx #250 - ldy #0 + ldx #$90 + ldy #$01 jsr txt_fade_out - lda #64 - sta frame_delay - jsr wait_loop sei jsr set_irq_badguy @@ -169,7 +166,6 @@ code_start: jsr init_2x lda #$0b sta $d011 - ; jmp part_11 jsr clr_txt ldx #art_direct @@ -500,15 +489,8 @@ part_9: ldx #$90 ldy #$01 - ;jsr txt_fade_out - jsr init_timer lda #8 - sta timer - lda #2 - sta timer_mode -: - lda timer_reached - beq :- + jsr txt_fade_out_offset lda #0 sta $d011 @@ -606,7 +588,7 @@ part_9: lda #0 sta vbl lda frame - cmp #$e0 ; TODO + cmp #$e1 bcc :+ jmp @finish : @@ -642,10 +624,18 @@ part_9: jmp @loop @finish: + ldx #$a8 + ldy #$01 + jsr init_timer +: + lda timer_reached + beq :- + lda #$0b + sta $d011 lda #0 - sta timer_mode sta $d015 - ; TODO is there a delay here + lda #3 + sta $dd00 ; we run out of space before the fixed location vector return now jmp part_10 @@ -714,12 +704,7 @@ intro: sta frame_delay jsr wait_loop - ldx #empty_txt - jsr upload_text - ldx #empty_txt - jsr upload_text_bottom + jsr clear_text lda #$0d sta frame_until @@ -736,20 +721,16 @@ intro: sta frame_delay jsr wait_loop + jsr clear_text ldx #too_bad_txt jsr upload_text - ldx #empty_txt - jsr upload_text_bottom lda #50*5 sta frame_delay jsr wait_loop - ldx #empty_txt - jsr upload_text + jsr clear_text lda #$13 sta frame_until @@ -904,14 +885,12 @@ irq_music: bne :+ inc timer+1 : - lda timer+1 - cmp timer_limit+1 - bcc :++ - bne :+ lda timer - cmp timer_limit - bcc :++ -: + sec + sbc timer_limit + lda timer+1 + sbc timer_limit+1 + bcc :+ lda #1 sta timer_reached : @@ -998,23 +977,6 @@ wait_frame_until: : rts - -wait_loop_2x: -@loop: - lda vbl - cmp #2 - bcc @loop - - lda #0 - sta vbl - - dec frame_delay - lda frame_delay - beq :+ - jmp @loop -: - rts - wait_frame_until_2x: @loop: lda vbl @@ -1036,7 +998,6 @@ wait_frame_until_2x: : rts - init_bmp: lda #$0b sta $d011 @@ -1288,29 +1249,15 @@ cloudsname: .byte "clouds", 0 darmtower_txt: - .res (40-32)/2, ' ' - .byte "darm's tower has fallen silent. " - .res (40-32)/2, ' ' - .res (40-32)/2, ' ' - .byte "what should we do? " - .res (40-32)/2, ' ' - -empty_txt: - .res 40, ' ' - .res 40, ' ' + .byte " darm's tower has fallen silent. " + .byte " what should we do? " adol_win: - .res (40-28)/2, ' ' - .byte 34, "it must be adol, let's see " - .res (40-28)/2, ' ' - .res (40-28)/2, ' ' - .byte "how far he'll get!", 34, " " - .res (40-28)/2, ' ' + .byte " ", 34, "it must be adol, let's see " + .byte " how far he'll get!", 34, " " too_bad_txt: - .res (40-16)/2, ' ' - .byte "as you command. " - .res (40-16)/2, ' ' + .byte " as you command. " upload_text: stx text_ptr @@ -1340,6 +1287,16 @@ upload_text_bottom: bpl :- rts +clear_text: + lda #$80 + ldy #39 +: + sta $748, y + sta $748+40+40, y + dey + bpl :- + rts + run_nufli_bmp: lda #$01 sta $81 @@ -1433,9 +1390,28 @@ part_10: ; the sprite data is embedded into first few bitmap pixels ; which are hidden by black border attributes @y = $60 + jsr clr_txt + ldx #total_direct + jsr write_txt2 + ldx #$c0 + ldy #$01 + jsr init_timer + lda #1 + sta timer_mode + ldx #cloudsname jsr load_8000_zx02_2000 +: + lda timer_reached + beq :- + + ldx #$48 + ldy #$01 + lda #$40 + jsr txt_fade_out_offset + jsr init_bmp ldx #0 stx $d010 @@ -1547,6 +1523,11 @@ part_11: jsr load_8000_zx02 cli + jsr clr_txt + ldx #turn_disk + jsr write_txt + jmp end .res ((*+$ff)&$ff00|2)-* @@ -1697,6 +1678,16 @@ art_direct: .byte " art directed by " .byte " seigo oketani " +total_direct: +.byte " total directed by " +.byte " masaya hashimoto " + +presented_by: +.byte " presented by falcom " + +turn_disk: +.byte " insert datadisk in drive 8 " + clr_txt: lda #$80 ldx #0 @@ -1725,190 +1716,84 @@ clr_txt: write_txt5: stx text_ptr sty text_ptr+1 - - ldx #0 ldy #0 -: - lda (text_ptr), y - sec - sbc #$20 - ora #$80 - sta $400+8*40, x - iny - inx - cpx #40 - bne :- - - ldx #0 -: - lda (text_ptr), y - sec - sbc #$20 - ora #$80 - sta $400+10*40, x - iny - inx - cpx #40 - bne :- - - ldx #0 -: - lda (text_ptr), y - sec - sbc #$20 - ora #$80 - sta $400+12*40, x - iny - inx - cpx #40 - bne :- - - ldx #0 -: - lda (text_ptr), y - sec - sbc #$20 - ora #$80 - sta $400+14*40, x - iny - inx - cpx #40 - bne :- - - ldx #0 -: - lda (text_ptr), y - sec - sbc #$20 - ora #$80 - sta $400+16*40, x - iny - inx - cpx #40 - bne :- - rts + lda #<($400+8*40) + ldx #>($400+8*40) + jsr write_txt_to + lda #<($400+10*40) + ldx #>($400+10*40) + jsr write_txt_to + lda #<($400+12*40) + ldx #>($400+12*40) + jsr write_txt_to + lda #<($400+14*40) + ldx #>($400+14*40) + jsr write_txt_to + lda #<($400+16*40) + ldx #>($400+16*40) + jmp write_txt_to write_txt4: stx text_ptr sty text_ptr+1 - - ldx #0 ldy #0 -: - lda (text_ptr), y - sec - sbc #$20 - ora #$80 - sta $400+9*40, x - iny - inx - cpx #40 - bne :- - - ldx #0 -: - lda (text_ptr), y - sec - sbc #$20 - ora #$80 - sta $400+11*40, x - iny - inx - cpx #40 - bne :- - - ldx #0 -: - lda (text_ptr), y - sec - sbc #$20 - ora #$80 - sta $400+13*40, x - iny - inx - cpx #40 - bne :- - - ldx #0 -: - lda (text_ptr), y - sec - sbc #$20 - ora #$80 - sta $400+15*40, x - iny - inx - cpx #40 - bne :- - - rts + lda #<($400+9*40) + ldx #>($400+9*40) + jsr write_txt_to + lda #<($400+11*40) + ldx #>($400+11*40) + jsr write_txt_to + lda #<($400+13*40) + ldx #>($400+13*40) + jsr write_txt_to + lda #<($400+15*40) + ldx #>($400+15*40) + jmp write_txt_to write_txt3: stx text_ptr sty text_ptr+1 - - ldx #0 ldy #0 -: - lda (text_ptr), y - sec - sbc #$20 - ora #$80 - sta $400+10*40, x - iny - inx - cpx #40 - bne :- - - ldx #0 -: - lda (text_ptr), y - sec - sbc #$20 - ora #$80 - sta $400+12*40, x - iny - inx - cpx #40 - bne :- - - ldx #0 -: - lda (text_ptr), y - sec - sbc #$20 - ora #$80 - sta $400+14*40, x - iny - inx - cpx #40 - bne :- - rts + lda #<($400+10*40) + ldx #>($400+10*40) + jsr write_txt_to + lda #<($400+12*40) + ldx #>($400+12*40) + jsr write_txt_to + lda #<($400+14*40) + ldx #>($400+14*40) + jmp write_txt_to write_txt2: stx text_ptr sty text_ptr+1 - - ldx #0 ldy #0 -: - lda (text_ptr), y - sec - sbc #$20 - ora #$80 - sta $400+11*40, x - iny - inx - cpx #40 - bne :- + lda #<($400+11*40) + ldx #>($400+11*40) + jsr write_txt_to + lda #<($400+13*40) + ldx #>($400+13*40) + jmp write_txt_to +write_txt: + stx text_ptr + sty text_ptr+1 + ldy #0 + lda #<($400+12*40) + ldx #>($400+12*40) + ; fall through + +write_txt_to: + sta @dst+1 + stx @dst+2 ldx #0 : lda (text_ptr), y sec sbc #$20 ora #$80 - sta $400+13*40, x +@dst: + sta $400, x iny inx cpx #40 @@ -1916,7 +1801,12 @@ write_txt2: rts txt_fade_out: + lda #0 +txt_fade_out_offset: + pha jsr init_timer + pla + sta timer lda #2 sta timer_mode :