WIP sky scroller

This commit is contained in:
Natt Akuma 2025-11-23 00:09:53 +07:00
parent 1e67d3f98b
commit eda94e147b
8 changed files with 165 additions and 106 deletions

View file

@ -43,10 +43,6 @@ copy_start:
sei
lda #$35
sta $01
lda #>(code_end-CODE_START_ADDR)
sta $ff
lda #<(code_end-CODE_START_ADDR)
sta $fe
lda #<CODE_START_ADDR
sta $fc
@ -58,26 +54,26 @@ copy_start:
lda #>code_start
sta $fb
@copy_loop:
ldy #0
ldx #>(code_end-CODE_START_ADDR)
beq :+++
:
lda ($fa), y
sta ($fc), y
inc $fc
bne :+
inc $fd
:
inc $fa
bne :+
iny
bne :-
inc $fb
inc $fd
dex
bne :-
beq :+
:
lda $fe
bne :+
dec $ff
lda ($fa), y
sta ($fc), y
iny
:
dec $fe
lda $fe
ora $ff
bne @copy_loop
cpy #<(code_end-CODE_START_ADDR)
bne :--
lda #$36
sta $01
@ -86,7 +82,7 @@ copy_start:
sei
lda #$35
sta $01
jmp CODE_START_ADDR
jmp part_9
.res loadraw - *
.incbin "../../build/loader-c64.prg", 2
@ -137,16 +133,7 @@ code_start:
ldx #<badguy
ldy #>badguy
jsr loadraw
lda #0
sta ZX0_src
lda #$80
sta ZX0_src+1
lda #0
sta ZX0_dst
lda #$20
jsr zx02
jsr load_8000_zx02_2000
lda #127
sta $dc0d
@ -189,16 +176,8 @@ code_start:
sei
ldx #<introname
ldy #>introname
jsr loadraw
lda #0
sta ZX0_src
lda #$80
sta ZX0_src+1
lda #0
sta ZX0_dst
lda #$10
jsr zx02
jsr load_8000_zx02
ldx #<sidname
ldy #>sidname
@ -232,14 +211,8 @@ code_start:
lda #1
sta timer_mode
lda #0
sta ZX0_src
lda #$80
sta ZX0_src+1
lda #0
sta ZX0_dst
lda #$20
jsr zx02
jsr zx02_8000
:
lda timer_reached
@ -285,15 +258,7 @@ code_start:
ldx #<towerbeamname
ldy #>towerbeamname
jsr loadraw
lda #0
sta ZX0_src
lda #$80
sta ZX0_src+1
lda #0
sta ZX0_dst
lda #$20
jsr zx02
jsr load_8000_zx02_2000
:
lda timer_reached
@ -356,15 +321,7 @@ code_start:
ldx #<fieldname
ldy #>fieldname
jsr loadraw
lda #0
sta ZX0_src
lda #$80
sta ZX0_src+1
lda #0
sta ZX0_dst
lda #$20
jsr zx02
jsr load_8000_zx02_2000
:
lda timer_reached
@ -441,15 +398,7 @@ code_start:
ldx #<fallingstarname
ldy #>fallingstarname
jsr loadraw
lda #0
sta ZX0_src
lda #$80
sta ZX0_src+1
lda #0
sta ZX0_dst
lda #$20
jsr zx02
jsr load_8000_zx02_2000
:
lda timer_reached
@ -492,15 +441,7 @@ code_start:
ldx #<lilianame
ldy #>lilianame
jsr loadraw
lda #0
sta ZX0_src
lda #$80
sta ZX0_src+1
lda #0
sta ZX0_dst
lda #$20
jsr zx02
jsr load_8000_zx02_2000
:
lda timer_reached
@ -547,15 +488,7 @@ code_start:
ldx #<liliaheroname
ldy #>liliaheroname
jsr loadraw
lda #0
sta ZX0_src
lda #$80
sta ZX0_src+1
lda #0
sta ZX0_dst
lda #$20
jsr zx02
jsr load_8000_zx02_2000
:
lda timer_reached
@ -571,9 +504,110 @@ code_start:
lda timer_reached
beq :-
part_9:
jsr init_bmp
ldx #<skyscrname
ldy #>skyscrname
lda #$70
jsr load_8000_zx02
ldx #<skyscrmapname
ldy #>skyscrmapname
jsr loadraw
ldx #0
ldy #$90
jsr LZ_init_decomp
; $0c00-$0fff buffer 0 tilemap
; $2000-$3fff buffer 0 bitmap
; $4000-$5fff buffer 1 bitmap
; $6000-$63ff buffer 1 tilemap
; $6400-$67ff next buffer CRAM
; $7000-$77ff tileset bitmap
; $7800-$78ff tileset tile colors
; $7900-$79ff tileset CRAM colors
; $9000- compressed tilemap
lda #$38
sta $d018
lda #<((17+4)*40+$c08)
sta text_ptr
lda #>((17+4)*40+$c08)
sta text_ptr+1
ldx #16
:
lda #0
lda text_ptr
sec
sbc #40
sta text_ptr
sta scr_ptr
sta cram_ptr
sta bmp_ptr
lda text_ptr+1
sbc #0
sta text_ptr+1
sta scr_ptr+1
; carry is always set here
adc #$d8-$0c-1
sta cram_ptr+1
adc #<(($20>>3)-$d8)
asl bmp_ptr
rol a
asl bmp_ptr
rol a
asl bmp_ptr
rol a
sta bmp_ptr+1
stx temp+1
jsr drawrow
ldx temp+1
dex
bpl :-
:
stx $d020
inx
jmp :-
jmp *
drawrow:
ldy #0
charloop:
sty temp
lda #$70>>3
sta bmp_addr+1
jsr LZ_get_byte
tax
asl a
rol bmp_addr+1
asl a
rol bmp_addr+1
asl a
rol bmp_addr+1
sta bmp_addr
ldy #0
.repeat 8, I
lda (bmp_addr),y
sta (bmp_ptr),y
iny
.endrepeat
clc
lda bmp_ptr
adc #8
sta bmp_ptr
bne :+
inc bmp_ptr+1
:
ldy temp
lda $7800,x
sta (scr_ptr),y
lda $7900,x
sta (cram_ptr),y
iny
cpy #24
bne charloop
rts
intro:
lda #0
@ -1116,6 +1150,8 @@ fieldname: .byte "field", 0
fallingstarname: .byte "fallstar", 0
lilianame: .byte "lilia", 0
liliaheroname: .byte "lilhero", 0
skyscrname: .byte "skyscr", 0
skyscrmapname: .byte "skyscrmap", 0
darmtower_txt:
@ -1256,6 +1292,24 @@ run_nufli_bmp:
.include "zx02.asm"
.include "thcmod_lz.asm"
zx02_8000:
pha
jmp :+
load_8000_zx02_2000:
lda #$20
load_8000_zx02:
pha
jsr loadraw
:
lda #0
sta ZX0_src
sta ZX0_dst
lda #$80
sta ZX0_src+1
pla
jmp zx02
story_writ:
.res 11, ' '
.byte "story written by"