WIP sky scroller
This commit is contained in:
parent
1e67d3f98b
commit
eda94e147b
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -4,5 +4,6 @@ loader/tools/cc1541/cc1541
|
||||||
|
|
||||||
loader/samples/minexample/*.bak
|
loader/samples/minexample/*.bak
|
||||||
loader/samples/minexample/*.o
|
loader/samples/minexample/*.o
|
||||||
loader/samples/minexample/*.zx0
|
|
||||||
loader/samples/minexample/*.zx0.prg
|
loader/samples/minexample/*.zx0.prg
|
||||||
|
loader/samples/minexample/*.lz.prg
|
||||||
|
loader/samples/minexample/*.tmp
|
||||||
|
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 6 KiB After Width: | Height: | Size: 5.9 KiB |
|
|
@ -137,10 +137,11 @@ ZX0PRGS = \
|
||||||
field.zx0.prg \
|
field.zx0.prg \
|
||||||
falling_star.zx0.prg \
|
falling_star.zx0.prg \
|
||||||
lilia.zx0.prg \
|
lilia.zx0.prg \
|
||||||
lilia_hero.zx0.prg
|
lilia_hero.zx0.prg \
|
||||||
|
sky_scroll.zx0.prg
|
||||||
|
|
||||||
LZS = \
|
LZPRGS = \
|
||||||
tilemap.bin.lz
|
sky_scroll_map.lz.prg
|
||||||
|
|
||||||
|
|
||||||
default: diskimage
|
default: diskimage
|
||||||
|
|
@ -153,12 +154,12 @@ tellarch:
|
||||||
loader: $(LOADER)
|
loader: $(LOADER)
|
||||||
|
|
||||||
$(LOADER): $(LOADERCFG)
|
$(LOADER): $(LOADERCFG)
|
||||||
make -C $(LOADER_SRC) EXTCONFIGPATH=../samples/$(NAME) PLATFORM=$(_PLATFORM_) INSTALL=1800 RESIDENT=0F00 ZP=02 prg
|
make -C $(LOADER_SRC) EXTCONFIGPATH=../samples/$(NAME) PLATFORM=$(_PLATFORM_) INSTALL=0a00 RESIDENT=0900 ZP=02 prg
|
||||||
|
|
||||||
|
|
||||||
assemble: $(ASSEMBLE)
|
assemble: $(ASSEMBLE)
|
||||||
|
|
||||||
$(ASSEMBLE): $(SOURCE) $(LOADER) $(LOADERCFG) $(ZX0PRGS) $(LZS)
|
$(ASSEMBLE): $(SOURCE) $(LOADER) $(LOADERCFG)
|
||||||
$(MKDIR) $(BUILDDIR)
|
$(MKDIR) $(BUILDDIR)
|
||||||
$(MKDIR) $(INTERMDIR)
|
$(MKDIR) $(INTERMDIR)
|
||||||
ifeq ($(_PLATFORM_),c64)
|
ifeq ($(_PLATFORM_),c64)
|
||||||
|
|
@ -172,14 +173,13 @@ endif
|
||||||
|
|
||||||
diskimage: $(DISKIMAGE)
|
diskimage: $(DISKIMAGE)
|
||||||
|
|
||||||
$(DISKIMAGE): $(ASSEMBLE) $(CC1541)
|
$(DISKIMAGE): $(ASSEMBLE) $(CC1541) $(ZX0PRGS) $(LZPRGS)
|
||||||
$(RM) $@
|
$(RM) $@
|
||||||
$(CC1541) -n "ys2 intro" -i otomata \
|
$(CC1541) -n "otomata labs" -i " 2025" \
|
||||||
-f "ys2" -w $< \
|
-f "ys2intro" -w $< \
|
||||||
-f "sid" -w use_this_sid.bin \
|
-f "sid" -w use_this_sid.bin \
|
||||||
-f "badguy" -w badguy.zx0.prg \
|
-f "badguy" -w badguy.zx0.prg \
|
||||||
-f "font" -w font.bin \
|
-f "font" -w font.bin \
|
||||||
-f "scrmap" -w tilemap.bin.lz \
|
|
||||||
-f "intrbmp" -w title_320-prepared.zx0.prg \
|
-f "intrbmp" -w title_320-prepared.zx0.prg \
|
||||||
-f "tower" -w tower.zx0.prg \
|
-f "tower" -w tower.zx0.prg \
|
||||||
-f "towerbm" -w tower_beam.zx0.prg \
|
-f "towerbm" -w tower_beam.zx0.prg \
|
||||||
|
|
@ -187,6 +187,8 @@ $(DISKIMAGE): $(ASSEMBLE) $(CC1541)
|
||||||
-f "fallstar" -w falling_star.zx0.prg \
|
-f "fallstar" -w falling_star.zx0.prg \
|
||||||
-f "lilia" -w lilia.zx0.prg \
|
-f "lilia" -w lilia.zx0.prg \
|
||||||
-f "lilhero" -w lilia_hero.zx0.prg \
|
-f "lilhero" -w lilia_hero.zx0.prg \
|
||||||
|
-f "skyscr" -w sky_scroll.zx0.prg \
|
||||||
|
-f "skyscrmap" -w sky_scroll_map.lz.prg \
|
||||||
$@
|
$@
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -211,15 +213,17 @@ $(ZX02):
|
||||||
make -C $(ZX02_SRC) build/zx02
|
make -C $(ZX02_SRC) build/zx02
|
||||||
|
|
||||||
%.zx0.prg: %.bin $(ZX02)
|
%.zx0.prg: %.bin $(ZX02)
|
||||||
$(ZX02) $< $<.zx0
|
$(ZX02) $< $@.tmp
|
||||||
$(PRINTF) "\x00\x80" | cat - $<.zx0 > $@
|
$(PRINTF) "\x00\x80" | cat - $@.tmp > $@
|
||||||
$(RM) $<.zx0
|
$(RM) $@.tmp
|
||||||
|
|
||||||
%.lz: %
|
%.lz.prg: %.bin
|
||||||
$(PYTHON) aart_lz.py $< $@
|
$(PYTHON) aart_lz.py $< $@.tmp
|
||||||
|
$(PRINTF) "\x00\x90" | cat - $@.tmp > $@
|
||||||
|
$(RM) $@.tmp
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
-$(RM) $(ZX0PRGS) $(LZS)
|
-$(RM) $(ZX0PRGS) $(LZPRGS)
|
||||||
-$(RM) *.o $(ASSEMBLE) $(DISKIMAGE)
|
-$(RM) *.o $(ASSEMBLE) $(DISKIMAGE)
|
||||||
-$(RM) -rf $(INTERMDIR)
|
-$(RM) -rf $(INTERMDIR)
|
||||||
-$(RM) $(BUILDDIR)/loader-c64.prg
|
-$(RM) $(BUILDDIR)/loader-c64.prg
|
||||||
|
|
|
||||||
|
|
@ -43,10 +43,6 @@ copy_start:
|
||||||
sei
|
sei
|
||||||
lda #$35
|
lda #$35
|
||||||
sta $01
|
sta $01
|
||||||
lda #>(code_end-CODE_START_ADDR)
|
|
||||||
sta $ff
|
|
||||||
lda #<(code_end-CODE_START_ADDR)
|
|
||||||
sta $fe
|
|
||||||
|
|
||||||
lda #<CODE_START_ADDR
|
lda #<CODE_START_ADDR
|
||||||
sta $fc
|
sta $fc
|
||||||
|
|
@ -58,26 +54,26 @@ copy_start:
|
||||||
lda #>code_start
|
lda #>code_start
|
||||||
sta $fb
|
sta $fb
|
||||||
|
|
||||||
@copy_loop:
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
ldx #>(code_end-CODE_START_ADDR)
|
||||||
|
beq :+++
|
||||||
|
:
|
||||||
lda ($fa), y
|
lda ($fa), y
|
||||||
sta ($fc), y
|
sta ($fc), y
|
||||||
inc $fc
|
iny
|
||||||
bne :+
|
bne :-
|
||||||
inc $fd
|
|
||||||
:
|
|
||||||
inc $fa
|
|
||||||
bne :+
|
|
||||||
inc $fb
|
inc $fb
|
||||||
|
inc $fd
|
||||||
|
dex
|
||||||
|
bne :-
|
||||||
|
beq :+
|
||||||
:
|
:
|
||||||
lda $fe
|
lda ($fa), y
|
||||||
bne :+
|
sta ($fc), y
|
||||||
dec $ff
|
iny
|
||||||
:
|
:
|
||||||
dec $fe
|
cpy #<(code_end-CODE_START_ADDR)
|
||||||
lda $fe
|
bne :--
|
||||||
ora $ff
|
|
||||||
bne @copy_loop
|
|
||||||
|
|
||||||
lda #$36
|
lda #$36
|
||||||
sta $01
|
sta $01
|
||||||
|
|
@ -86,7 +82,7 @@ copy_start:
|
||||||
sei
|
sei
|
||||||
lda #$35
|
lda #$35
|
||||||
sta $01
|
sta $01
|
||||||
jmp CODE_START_ADDR
|
jmp part_9
|
||||||
|
|
||||||
.res loadraw - *
|
.res loadraw - *
|
||||||
.incbin "../../build/loader-c64.prg", 2
|
.incbin "../../build/loader-c64.prg", 2
|
||||||
|
|
@ -137,16 +133,7 @@ code_start:
|
||||||
|
|
||||||
ldx #<badguy
|
ldx #<badguy
|
||||||
ldy #>badguy
|
ldy #>badguy
|
||||||
jsr loadraw
|
jsr load_8000_zx02_2000
|
||||||
|
|
||||||
lda #0
|
|
||||||
sta ZX0_src
|
|
||||||
lda #$80
|
|
||||||
sta ZX0_src+1
|
|
||||||
lda #0
|
|
||||||
sta ZX0_dst
|
|
||||||
lda #$20
|
|
||||||
jsr zx02
|
|
||||||
|
|
||||||
lda #127
|
lda #127
|
||||||
sta $dc0d
|
sta $dc0d
|
||||||
|
|
@ -189,16 +176,8 @@ code_start:
|
||||||
sei
|
sei
|
||||||
ldx #<introname
|
ldx #<introname
|
||||||
ldy #>introname
|
ldy #>introname
|
||||||
jsr loadraw
|
|
||||||
|
|
||||||
lda #0
|
|
||||||
sta ZX0_src
|
|
||||||
lda #$80
|
|
||||||
sta ZX0_src+1
|
|
||||||
lda #0
|
|
||||||
sta ZX0_dst
|
|
||||||
lda #$10
|
lda #$10
|
||||||
jsr zx02
|
jsr load_8000_zx02
|
||||||
|
|
||||||
ldx #<sidname
|
ldx #<sidname
|
||||||
ldy #>sidname
|
ldy #>sidname
|
||||||
|
|
@ -232,14 +211,8 @@ code_start:
|
||||||
lda #1
|
lda #1
|
||||||
sta timer_mode
|
sta timer_mode
|
||||||
|
|
||||||
lda #0
|
|
||||||
sta ZX0_src
|
|
||||||
lda #$80
|
|
||||||
sta ZX0_src+1
|
|
||||||
lda #0
|
|
||||||
sta ZX0_dst
|
|
||||||
lda #$20
|
lda #$20
|
||||||
jsr zx02
|
jsr zx02_8000
|
||||||
|
|
||||||
:
|
:
|
||||||
lda timer_reached
|
lda timer_reached
|
||||||
|
|
@ -285,15 +258,7 @@ code_start:
|
||||||
|
|
||||||
ldx #<towerbeamname
|
ldx #<towerbeamname
|
||||||
ldy #>towerbeamname
|
ldy #>towerbeamname
|
||||||
jsr loadraw
|
jsr load_8000_zx02_2000
|
||||||
lda #0
|
|
||||||
sta ZX0_src
|
|
||||||
lda #$80
|
|
||||||
sta ZX0_src+1
|
|
||||||
lda #0
|
|
||||||
sta ZX0_dst
|
|
||||||
lda #$20
|
|
||||||
jsr zx02
|
|
||||||
|
|
||||||
:
|
:
|
||||||
lda timer_reached
|
lda timer_reached
|
||||||
|
|
@ -356,15 +321,7 @@ code_start:
|
||||||
|
|
||||||
ldx #<fieldname
|
ldx #<fieldname
|
||||||
ldy #>fieldname
|
ldy #>fieldname
|
||||||
jsr loadraw
|
jsr load_8000_zx02_2000
|
||||||
lda #0
|
|
||||||
sta ZX0_src
|
|
||||||
lda #$80
|
|
||||||
sta ZX0_src+1
|
|
||||||
lda #0
|
|
||||||
sta ZX0_dst
|
|
||||||
lda #$20
|
|
||||||
jsr zx02
|
|
||||||
|
|
||||||
:
|
:
|
||||||
lda timer_reached
|
lda timer_reached
|
||||||
|
|
@ -441,15 +398,7 @@ code_start:
|
||||||
|
|
||||||
ldx #<fallingstarname
|
ldx #<fallingstarname
|
||||||
ldy #>fallingstarname
|
ldy #>fallingstarname
|
||||||
jsr loadraw
|
jsr load_8000_zx02_2000
|
||||||
lda #0
|
|
||||||
sta ZX0_src
|
|
||||||
lda #$80
|
|
||||||
sta ZX0_src+1
|
|
||||||
lda #0
|
|
||||||
sta ZX0_dst
|
|
||||||
lda #$20
|
|
||||||
jsr zx02
|
|
||||||
|
|
||||||
:
|
:
|
||||||
lda timer_reached
|
lda timer_reached
|
||||||
|
|
@ -492,15 +441,7 @@ code_start:
|
||||||
|
|
||||||
ldx #<lilianame
|
ldx #<lilianame
|
||||||
ldy #>lilianame
|
ldy #>lilianame
|
||||||
jsr loadraw
|
jsr load_8000_zx02_2000
|
||||||
lda #0
|
|
||||||
sta ZX0_src
|
|
||||||
lda #$80
|
|
||||||
sta ZX0_src+1
|
|
||||||
lda #0
|
|
||||||
sta ZX0_dst
|
|
||||||
lda #$20
|
|
||||||
jsr zx02
|
|
||||||
|
|
||||||
:
|
:
|
||||||
lda timer_reached
|
lda timer_reached
|
||||||
|
|
@ -547,15 +488,7 @@ code_start:
|
||||||
|
|
||||||
ldx #<liliaheroname
|
ldx #<liliaheroname
|
||||||
ldy #>liliaheroname
|
ldy #>liliaheroname
|
||||||
jsr loadraw
|
jsr load_8000_zx02_2000
|
||||||
lda #0
|
|
||||||
sta ZX0_src
|
|
||||||
lda #$80
|
|
||||||
sta ZX0_src+1
|
|
||||||
lda #0
|
|
||||||
sta ZX0_dst
|
|
||||||
lda #$20
|
|
||||||
jsr zx02
|
|
||||||
|
|
||||||
:
|
:
|
||||||
lda timer_reached
|
lda timer_reached
|
||||||
|
|
@ -571,9 +504,110 @@ code_start:
|
||||||
lda timer_reached
|
lda timer_reached
|
||||||
beq :-
|
beq :-
|
||||||
|
|
||||||
|
part_9:
|
||||||
jsr init_bmp
|
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 *
|
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:
|
intro:
|
||||||
lda #0
|
lda #0
|
||||||
|
|
@ -1116,6 +1150,8 @@ fieldname: .byte "field", 0
|
||||||
fallingstarname: .byte "fallstar", 0
|
fallingstarname: .byte "fallstar", 0
|
||||||
lilianame: .byte "lilia", 0
|
lilianame: .byte "lilia", 0
|
||||||
liliaheroname: .byte "lilhero", 0
|
liliaheroname: .byte "lilhero", 0
|
||||||
|
skyscrname: .byte "skyscr", 0
|
||||||
|
skyscrmapname: .byte "skyscrmap", 0
|
||||||
|
|
||||||
|
|
||||||
darmtower_txt:
|
darmtower_txt:
|
||||||
|
|
@ -1256,6 +1292,24 @@ run_nufli_bmp:
|
||||||
.include "zx02.asm"
|
.include "zx02.asm"
|
||||||
.include "thcmod_lz.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:
|
story_writ:
|
||||||
.res 11, ' '
|
.res 11, ' '
|
||||||
.byte "story written by"
|
.byte "story written by"
|
||||||
|
|
|
||||||
BIN
loader/samples/minexample/sky_scroll.bin
Normal file
BIN
loader/samples/minexample/sky_scroll.bin
Normal file
Binary file not shown.
BIN
loader/samples/minexample/sky_scroll_map.bin
Normal file
BIN
loader/samples/minexample/sky_scroll_map.bin
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in a new issue