hgr: animations: work on animations

This commit is contained in:
Vince Weaver
2026-02-23 01:07:30 -05:00
parent 91dd62b811
commit 1e63c44cda
13 changed files with 1796 additions and 0 deletions
@@ -0,0 +1,76 @@
include ../../../../../Makefile.inc
ZX02 = ~/research/6502_compression/zx02.git/build/zx02 -f
PNG_TO_HGR = ../../../../../utils/hgr-utils/png2hgr
PNG_TO_DHGR = ../../../../../utils/hgr-utils/png2dhgr
PNG_TO_DHGR_RAW = ../../../../../utils/hgr-utils/png2dhgr_raw
PNG_TO_DHGR4 = ../../../../../utils/hgr-utils/png2dhgr4
PNG2GR = ../../../../../utils/gr-utils/png2gr
HGR_SPRITE = ../../../../../utils/hgr-utils/hgr_make_sprite
LINKER_SCRIPTS = ../../../../../linker_scripts/
PNG_TO_HGR_DIFF = ../../../../../utils/hgr-utils/png2hgr_diff
all: \
horse00.bin.zx02 horse00.aux.zx02 \
horse01.bin.zx02 horse01.aux.zx02
####
slots1_slots3_diff.inc: slots1.png slots3.png
$(PNG_TO_HGR_DIFF) slots1.png slots3.png > slots1_slots3_diff.inc
slots3_slots5_diff.inc: slots3.png slots5.png
$(PNG_TO_HGR_DIFF) slots3.png slots5.png > slots3_slots5_diff.inc
slots5_slots7_diff.inc: slots5.png slots7.png
$(PNG_TO_HGR_DIFF) slots5.png slots7.png > slots5_slots7_diff.inc
slots7_slots2_diff.inc: slots7.png slots2.png
$(PNG_TO_HGR_DIFF) slots7.png slots2.png > slots7_slots2_diff.inc
slots2_slots4_diff.inc: slots2.png slots4.png
$(PNG_TO_HGR_DIFF) slots2.png slots4.png > slots2_slots4_diff.inc
slots4_slots6_diff.inc: slots4.png slots6.png
$(PNG_TO_HGR_DIFF) slots4.png slots6.png > slots4_slots6_diff.inc
slots6_slots1_diff.inc: slots6.png slots1.png
$(PNG_TO_HGR_DIFF) slots6.png slots1.png > slots6_slots1_diff.inc
###
horse00.aux.zx02: horse00.AUX
$(ZX02) horse00.AUX horse00.aux.zx02
horse00.AUX: horse00.png
$(PNG_TO_DHGR) horse00.png horse00
horse00.bin.zx02: horse00.BIN
$(ZX02) horse00.BIN horse00.bin.zx02
horse00.BIN: horse00.png
$(PNG_TO_DHGR) horse00.png horse00
###
horse01.aux.zx02: horse01.AUX
$(ZX02) horse01.AUX horse01.aux.zx02
horse01.AUX: horse01.png
$(PNG_TO_DHGR) horse01.png horse01
horse01.bin.zx02: horse01.BIN
$(ZX02) horse01.BIN horse01.bin.zx02
horse01.BIN: horse01.png
$(PNG_TO_DHGR) horse01.png horse01
####
clean:
rm -f *~ *.zx02 *.lst *.o *.hgr *_diff.inc
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

+114
View File
@@ -0,0 +1,114 @@
include ../../../../Makefile.inc
DOS33 = ../../../../utils/dos33fs-utils/dos33
DOS33_RAW = ../../../../utils/dos33fs-utils/dos33_raw
EMPTY_DISK = ../../../../empty_disk/empty.dsk
TOKENIZE = ../../../../utils/asoft_basic-utils/tokenize_asoft
LINKER_SCRIPTS = ../../../../linker_scripts/
all: farm.dsk
farm.dsk: QBOOT QLOAD \
qload.inc \
BG_LOAD \
ANIMATION
cp $(EMPTY_DISK) farm.dsk
$(DOS33_RAW) farm.dsk 0 0 QBOOT 0 1
$(DOS33_RAW) farm.dsk 0 2 QBOOT 1 1
$(DOS33_RAW) farm.dsk 0 4 QBOOT 2 1
$(DOS33_RAW) farm.dsk 1 0 QLOAD 0 0
$(DOS33_RAW) farm.dsk 2 0 BG_LOAD 0 0
$(DOS33_RAW) farm.dsk 5 0 ANIMATION 0 0
####
BG_LOAD: bg_load.o
ld65 -o BG_LOAD bg_load.o -C $(LINKER_SCRIPTS)/apple2_6000.inc
bg_load.o: bg_load.s \
zp.inc ../hardware.inc qload.inc common_defines.inc \
graphics/a2_gentfish_farm01.hgr.zx02 \
graphics/a2_gentfish_farm02.hgr.zx02
ca65 -o bg_load.o bg_load.s -l bg_load.lst
####
ANIMATION: animation.o
ld65 -o ANIMATION animation.o -C $(LINKER_SCRIPTS)/apple2_6000.inc
animation.o: animation.s \
zp.inc ../hardware.inc qload.inc common_defines.inc \
graphics/a2_gentfish_farm01.hgr.zx02 \
graphics/a2_gentfish_farm02.hgr.zx02
ca65 -o animation.o animation.s -l animation.lst
####
QBOOT: qboot_sector.o
ld65 -o QBOOT qboot_sector.o -C $(LINKER_SCRIPTS)/apple2_800.inc
qboot_sector.o: qboot_sector.s qboot_stage2.s
ca65 -o qboot_sector.o qboot_sector.s -l qboot_sector.lst
####
QLOAD: qload.o
ld65 -o QLOAD qload.o -C $(LINKER_SCRIPTS)/apple2_1200.inc
qload.o: zp.inc ../hardware.inc common_defines.inc qload.s \
../gr_offsets.s \
../wait.s ../wait_a_bit.s \
../gr_fast_clear.s \
../text_print.s start.s \
../hgr_table.s \
../hgr_page_flip.s \
../hgr_clear_screen.s
ca65 -o qload.o qload.s -l qload.lst
####
qload.inc: ../generate_common QLOAD
../generate_common -a 0x1200 -s load_file qload.lst > qload.inc
../generate_common -a 0x1200 -s clear_all qload.lst >> qload.inc
../generate_common -a 0x1200 -s clear_all_color qload.lst >> qload.inc
../generate_common -a 0x1200 -s set_normal qload.lst >> qload.inc
../generate_common -a 0x1200 -s set_inverse qload.lst >> qload.inc
../generate_common -a 0x1200 -s wait qload.lst >> qload.inc
../generate_common -a 0x1200 -s wait_a_bit qload.lst >> qload.inc
../generate_common -a 0x1200 -s wait_50ms qload.lst >> qload.inc
../generate_common -a 0x1200 -s move_and_print qload.lst >> qload.inc
../generate_common -a 0x1200 -s clear_bottom qload.lst >> qload.inc
../generate_common -a 0x1200 -s clear_bottoms qload.lst >> qload.inc
../generate_common -a 0x1200 -s clear_screens qload.lst >> qload.inc
../generate_common -a 0x1200 -s clear_top qload.lst >> qload.inc
../generate_common -a 0x1200 -s zx02_full_decomp qload.lst >> qload.inc
../generate_common -a 0x1200 -s zx_src_h qload.lst >> qload.inc
../generate_common -a 0x1200 -s zx_src_l qload.lst >> qload.inc
../generate_common -a 0x1200 -s wait_until_keypress qload.lst >> qload.inc
../generate_common -a 0x1200 -s wait_50xms qload.lst >> qload.inc
../generate_common -a 0x1200 -s hgr_page_flip qload.lst >> qload.inc
../generate_common -a 0x1200 -s gr_offsets qload.lst >> qload.inc
../generate_common -a 0x1200 -s hgr_clear_screen qload.lst >> qload.inc
../generate_common -a 0x1200 -s hgr_page1_clearscreen qload.lst >> qload.inc
../generate_common -a 0x1200 -s hgr_page2_clearscreen qload.lst >> qload.inc
####
generate_common: generate_common.o
$(CC) $(LFLAGS) -o generate_common generate_common.o
generate_common.o: generate_common.c
$(CC) $(CFLAGS) -c generate_common.c
###
clean:
rm -f *~ *.o *.lst ANIMATION QBOOT QLOAD BG_LOAD generate_common
rm -f qload.inc qload2.inc
+321
View File
@@ -0,0 +1,321 @@
.include "zp.inc"
.include "../hardware.inc"
.include "qload.inc"
;.include "music.inc"
.include "common_defines.inc"
;=======================================
; draw farmtown by gentfish
;=======================================
gentfsh_farm:
bit KEYRESET ; just to be safe
;=================================
; init vars
;=================================
lda #3
sta FRAME_RATE
;=================================
; init graphics
;=================================
bit SET_GR
bit HIRES
bit FULLGR
bit PAGE2 ; display page1
.if 0
;=======================
; start music
lda SOUND_STATUS
and #SOUND_MOCKINGBOARD
beq no_music
yes_music:
cli
no_music:
.endif
lda #0
sta DRAW_PAGE
sta WHICH
animation_loop:
; draw page1, view page2
ldx WHICH
ldy patches_page1_h,X
lda patches_page1_l,X
tax
jsr patch_graphics
jsr wait_some
; jsr wait_until_keypress
jsr hgr_page_flip
; draw page2, view page1
jsr wait_some
; jsr wait_until_keypress
ldx WHICH
ldy patches_page2_h,X
lda patches_page2_l,X
tax
jsr patch_graphics
jsr hgr_page_flip
inc WHICH
lda WHICH
cmp #24
bne no_oflo
lda #0 ; wrap at 48
sta WHICH
no_oflo:
;=====================
; handle keyboard
lda KEYPRESS
bpl keep_going
bit KEYRESET
check_g:
cmp #'G'+$80
bne check_o
jsr make_green
jmp keep_going
check_o:
cmp #'O'+$80
bne check_plus
jsr make_orange
jmp keep_going
check_plus:
cmp #'+'+$80
bne check_minus
inc FRAME_RATE
jmp keep_going
check_minus:
cmp #'-'+$80
bne keep_going
dec FRAME_RATE ; minimum 0
bpl keep_going
lda #0
sta FRAME_RATE
beq keep_going ; bra
keep_going:
jmp animation_loop
;===================================
; wait some losers
wait_some:
; lda SOUND_STATUS
; and #SOUND_MOCKINGBOARD
; bne wait_mockingboard
wait_nomock:
lda FRAME_RATE
jmp wait_50ms
;wait_mockingboard:
; lda FRAME_RATE
; jmp wait_ticks
.include "../patch_graphics.s"
.include "../change_palette.s"
farm01_farm03_diff: .include "graphics/a2_gentfish_farm01_03_diff.inc"
farm03_farm05_diff: .include "graphics/a2_gentfish_farm03_05_diff.inc"
farm05_farm07_diff: .include "graphics/a2_gentfish_farm05_07_diff.inc"
farm07_farm09_diff: .include "graphics/a2_gentfish_farm07_09_diff.inc"
farm09_farm11_diff: .include "graphics/a2_gentfish_farm09_11_diff.inc"
farm11_farm13_diff: .include "graphics/a2_gentfish_farm11_13_diff.inc"
farm13_farm15_diff: .include "graphics/a2_gentfish_farm13_15_diff.inc"
farm15_farm17_diff: .include "graphics/a2_gentfish_farm15_17_diff.inc"
farm17_farm19_diff: .include "graphics/a2_gentfish_farm17_19_diff.inc"
farm19_farm21_diff: .include "graphics/a2_gentfish_farm19_21_diff.inc"
farm21_farm23_diff: .include "graphics/a2_gentfish_farm21_23_diff.inc"
farm23_farm25_diff: .include "graphics/a2_gentfish_farm23_25_diff.inc"
farm25_farm27_diff: .include "graphics/a2_gentfish_farm25_27_diff.inc"
farm27_farm29_diff: .include "graphics/a2_gentfish_farm27_29_diff.inc"
farm29_farm31_diff: .include "graphics/a2_gentfish_farm29_31_diff.inc"
farm31_farm33_diff: .include "graphics/a2_gentfish_farm31_33_diff.inc"
farm33_farm35_diff: .include "graphics/a2_gentfish_farm33_35_diff.inc"
farm35_farm37_diff: .include "graphics/a2_gentfish_farm35_37_diff.inc"
farm37_farm39_diff: .include "graphics/a2_gentfish_farm37_39_diff.inc"
farm39_farm41_diff: .include "graphics/a2_gentfish_farm39_41_diff.inc"
farm41_farm43_diff: .include "graphics/a2_gentfish_farm41_43_diff.inc"
farm43_farm45_diff: .include "graphics/a2_gentfish_farm43_45_diff.inc"
farm45_farm47_diff: .include "graphics/a2_gentfish_farm45_47_diff.inc"
farm47_farm01_diff: .include "graphics/a2_gentfish_farm47_01_diff.inc"
farm02_farm04_diff: .include "graphics/a2_gentfish_farm02_04_diff.inc"
farm04_farm06_diff: .include "graphics/a2_gentfish_farm04_06_diff.inc"
farm06_farm08_diff: .include "graphics/a2_gentfish_farm06_08_diff.inc"
farm08_farm10_diff: .include "graphics/a2_gentfish_farm08_10_diff.inc"
farm10_farm12_diff: .include "graphics/a2_gentfish_farm10_12_diff.inc"
farm12_farm14_diff: .include "graphics/a2_gentfish_farm12_14_diff.inc"
farm14_farm16_diff: .include "graphics/a2_gentfish_farm14_16_diff.inc"
farm16_farm18_diff: .include "graphics/a2_gentfish_farm16_18_diff.inc"
farm18_farm20_diff: .include "graphics/a2_gentfish_farm18_20_diff.inc"
farm20_farm22_diff: .include "graphics/a2_gentfish_farm20_22_diff.inc"
farm22_farm24_diff: .include "graphics/a2_gentfish_farm22_24_diff.inc"
farm24_farm26_diff: .include "graphics/a2_gentfish_farm24_26_diff.inc"
farm26_farm28_diff: .include "graphics/a2_gentfish_farm26_28_diff.inc"
farm28_farm30_diff: .include "graphics/a2_gentfish_farm28_30_diff.inc"
farm30_farm32_diff: .include "graphics/a2_gentfish_farm30_32_diff.inc"
farm32_farm34_diff: .include "graphics/a2_gentfish_farm32_34_diff.inc"
farm34_farm36_diff: .include "graphics/a2_gentfish_farm34_36_diff.inc"
farm36_farm38_diff: .include "graphics/a2_gentfish_farm36_38_diff.inc"
farm38_farm40_diff: .include "graphics/a2_gentfish_farm38_40_diff.inc"
farm40_farm42_diff: .include "graphics/a2_gentfish_farm40_42_diff.inc"
farm42_farm44_diff: .include "graphics/a2_gentfish_farm42_44_diff.inc"
farm44_farm46_diff: .include "graphics/a2_gentfish_farm44_46_diff.inc"
farm46_farm48_diff: .include "graphics/a2_gentfish_farm46_48_diff.inc"
farm48_farm02_diff: .include "graphics/a2_gentfish_farm48_02_diff.inc"
patches_page1_l:
.byte <farm01_farm03_diff
.byte <farm03_farm05_diff
.byte <farm05_farm07_diff
.byte <farm07_farm09_diff
.byte <farm09_farm11_diff
.byte <farm11_farm13_diff
.byte <farm13_farm15_diff
.byte <farm15_farm17_diff
.byte <farm17_farm19_diff
.byte <farm19_farm21_diff
.byte <farm21_farm23_diff
.byte <farm23_farm25_diff
.byte <farm25_farm27_diff
.byte <farm27_farm29_diff
.byte <farm29_farm31_diff
.byte <farm31_farm33_diff
.byte <farm33_farm35_diff
.byte <farm35_farm37_diff
.byte <farm37_farm39_diff
.byte <farm39_farm41_diff
.byte <farm41_farm43_diff
.byte <farm43_farm45_diff
.byte <farm45_farm47_diff
.byte <farm47_farm01_diff
patches_page1_h:
.byte >farm01_farm03_diff
.byte >farm03_farm05_diff
.byte >farm05_farm07_diff
.byte >farm07_farm09_diff
.byte >farm09_farm11_diff
.byte >farm11_farm13_diff
.byte >farm13_farm15_diff
.byte >farm15_farm17_diff
.byte >farm17_farm19_diff
.byte >farm19_farm21_diff
.byte >farm21_farm23_diff
.byte >farm23_farm25_diff
.byte >farm25_farm27_diff
.byte >farm27_farm29_diff
.byte >farm29_farm31_diff
.byte >farm31_farm33_diff
.byte >farm33_farm35_diff
.byte >farm35_farm37_diff
.byte >farm37_farm39_diff
.byte >farm39_farm41_diff
.byte >farm41_farm43_diff
.byte >farm43_farm45_diff
.byte >farm45_farm47_diff
.byte >farm47_farm01_diff
patches_page2_l:
.byte <farm02_farm04_diff
.byte <farm04_farm06_diff
.byte <farm06_farm08_diff
.byte <farm08_farm10_diff
.byte <farm10_farm12_diff
.byte <farm12_farm14_diff
.byte <farm14_farm16_diff
.byte <farm16_farm18_diff
.byte <farm18_farm20_diff
.byte <farm20_farm22_diff
.byte <farm22_farm24_diff
.byte <farm24_farm26_diff
.byte <farm26_farm28_diff
.byte <farm28_farm30_diff
.byte <farm30_farm32_diff
.byte <farm32_farm34_diff
.byte <farm34_farm36_diff
.byte <farm36_farm38_diff
.byte <farm38_farm40_diff
.byte <farm40_farm42_diff
.byte <farm42_farm44_diff
.byte <farm44_farm46_diff
.byte <farm46_farm48_diff
.byte <farm48_farm02_diff
patches_page2_h:
.byte >farm02_farm04_diff
.byte >farm04_farm06_diff
.byte >farm06_farm08_diff
.byte >farm08_farm10_diff
.byte >farm10_farm12_diff
.byte >farm12_farm14_diff
.byte >farm14_farm16_diff
.byte >farm16_farm18_diff
.byte >farm18_farm20_diff
.byte >farm20_farm22_diff
.byte >farm22_farm24_diff
.byte >farm24_farm26_diff
.byte >farm26_farm28_diff
.byte >farm28_farm30_diff
.byte >farm30_farm32_diff
.byte >farm32_farm34_diff
.byte >farm34_farm36_diff
.byte >farm36_farm38_diff
.byte >farm38_farm40_diff
.byte >farm40_farm42_diff
.byte >farm42_farm44_diff
.byte >farm44_farm46_diff
.byte >farm46_farm48_diff
.byte >farm48_farm02_diff
+53
View File
@@ -0,0 +1,53 @@
.include "zp.inc"
.include "../hardware.inc"
.include "qload.inc"
.include "common_defines.inc"
;=======================================
; load backgrounds from animation
;=======================================
load_bg:
bit KEYRESET ; just to be safe
;=================================
; init vars
;=================================
;===================================
; decompress first graphic to page1
lda #$0
sta DRAW_PAGE
lda #<bg1_graphic
sta zx_src_l+1
lda #>bg1_graphic
sta zx_src_h+1
lda #$20
jsr zx02_full_decomp
;====================================
; decompress second graphics to page2
lda #<bg2_graphic
sta zx_src_l+1
lda #>bg2_graphic
sta zx_src_h+1
lda #$40
jsr zx02_full_decomp
rts
bg1_graphic:
.incbin "graphics/a2_gentfish_farm01.hgr.zx02"
bg2_graphic:
.incbin "graphics/a2_gentfish_farm02.hgr.zx02"
@@ -0,0 +1,213 @@
include ../../../../../Makefile.inc
ZX02 = ~/research/6502_compression/zx02.git/build/zx02 -f
PNG_TO_HGR = ../../../../../utils/hgr-utils/png2hgr
PNG_TO_DHGR = ../../../../../utils/hgr-utils/png2dhgr
PNG_TO_DHGR_RAW = ../../../../../utils/hgr-utils/png2dhgr_raw
PNG_TO_DHGR4 = ../../../../../utils/hgr-utils/png2dhgr4
PNG2GR = ../../../../../utils/gr-utils/png2gr
HGR_SPRITE = ../../../../../utils/hgr-utils/hgr_make_sprite
LINKER_SCRIPTS = ../../../../../linker_scripts/
PNG_TO_HGR_DIFF = ../../../../../utils/hgr-utils/png2hgr_diff
all: \
a2_gentfish_farm01.hgr.zx02 \
a2_gentfish_farm02.hgr.zx02 \
a2_gentfish_farm01_03_diff.inc a2_gentfish_farm03_05_diff.inc \
a2_gentfish_farm05_07_diff.inc a2_gentfish_farm07_09_diff.inc \
a2_gentfish_farm09_11_diff.inc a2_gentfish_farm11_13_diff.inc \
a2_gentfish_farm13_15_diff.inc a2_gentfish_farm15_17_diff.inc \
a2_gentfish_farm17_19_diff.inc a2_gentfish_farm19_21_diff.inc \
a2_gentfish_farm21_23_diff.inc a2_gentfish_farm23_25_diff.inc \
a2_gentfish_farm25_27_diff.inc a2_gentfish_farm27_29_diff.inc \
a2_gentfish_farm29_31_diff.inc a2_gentfish_farm31_33_diff.inc \
a2_gentfish_farm33_35_diff.inc a2_gentfish_farm35_37_diff.inc \
a2_gentfish_farm37_39_diff.inc a2_gentfish_farm39_41_diff.inc \
a2_gentfish_farm41_43_diff.inc a2_gentfish_farm43_45_diff.inc \
a2_gentfish_farm45_47_diff.inc a2_gentfish_farm47_01_diff.inc \
a2_gentfish_farm02_04_diff.inc a2_gentfish_farm04_06_diff.inc \
a2_gentfish_farm06_08_diff.inc a2_gentfish_farm08_10_diff.inc \
a2_gentfish_farm10_12_diff.inc a2_gentfish_farm12_14_diff.inc \
a2_gentfish_farm14_16_diff.inc a2_gentfish_farm16_18_diff.inc \
a2_gentfish_farm18_20_diff.inc a2_gentfish_farm20_22_diff.inc \
a2_gentfish_farm22_24_diff.inc a2_gentfish_farm24_26_diff.inc \
a2_gentfish_farm26_28_diff.inc a2_gentfish_farm28_30_diff.inc \
a2_gentfish_farm30_32_diff.inc a2_gentfish_farm32_34_diff.inc \
a2_gentfish_farm34_36_diff.inc a2_gentfish_farm36_38_diff.inc \
a2_gentfish_farm38_40_diff.inc a2_gentfish_farm40_42_diff.inc \
a2_gentfish_farm42_44_diff.inc a2_gentfish_farm44_46_diff.inc \
a2_gentfish_farm46_48_diff.inc a2_gentfish_farm48_02_diff.inc
####
a2_gentfish_farm01.hgr.zx02: a2_gentfish_farm01.hgr
$(ZX02) a2_gentfish_farm01.hgr a2_gentfish_farm01.hgr.zx02
a2_gentfish_farm01.hgr: a2_gentfish_farm01.png
$(PNG_TO_HGR) a2_gentfish_farm01.png > a2_gentfish_farm01.hgr
####
a2_gentfish_farm02.hgr.zx02: a2_gentfish_farm02.hgr
$(ZX02) a2_gentfish_farm02.hgr a2_gentfish_farm02.hgr.zx02
a2_gentfish_farm02.hgr: a2_gentfish_farm02.png
$(PNG_TO_HGR) a2_gentfish_farm02.png > a2_gentfish_farm02.hgr
####
a2_gentfish_farm01_03_diff.inc: a2_gentfish_farm01.png a2_gentfish_farm03.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm01.png a2_gentfish_farm03.png > a2_gentfish_farm01_03_diff.inc
a2_gentfish_farm03_05_diff.inc: a2_gentfish_farm03.png a2_gentfish_farm05.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm03.png a2_gentfish_farm05.png > a2_gentfish_farm03_05_diff.inc
a2_gentfish_farm05_07_diff.inc: a2_gentfish_farm05.png a2_gentfish_farm07.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm05.png a2_gentfish_farm07.png > a2_gentfish_farm05_07_diff.inc
a2_gentfish_farm07_09_diff.inc: a2_gentfish_farm07.png a2_gentfish_farm09.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm07.png a2_gentfish_farm09.png > a2_gentfish_farm07_09_diff.inc
a2_gentfish_farm09_11_diff.inc: a2_gentfish_farm09.png a2_gentfish_farm11.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm09.png a2_gentfish_farm11.png > a2_gentfish_farm09_11_diff.inc
a2_gentfish_farm11_13_diff.inc: a2_gentfish_farm11.png a2_gentfish_farm13.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm11.png a2_gentfish_farm13.png > a2_gentfish_farm11_13_diff.inc
a2_gentfish_farm13_15_diff.inc: a2_gentfish_farm13.png a2_gentfish_farm15.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm13.png a2_gentfish_farm15.png > a2_gentfish_farm13_15_diff.inc
a2_gentfish_farm15_17_diff.inc: a2_gentfish_farm15.png a2_gentfish_farm17.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm15.png a2_gentfish_farm17.png > a2_gentfish_farm15_17_diff.inc
a2_gentfish_farm17_19_diff.inc: a2_gentfish_farm17.png a2_gentfish_farm19.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm17.png a2_gentfish_farm19.png > a2_gentfish_farm17_19_diff.inc
a2_gentfish_farm19_21_diff.inc: a2_gentfish_farm19.png a2_gentfish_farm21.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm19.png a2_gentfish_farm21.png > a2_gentfish_farm19_21_diff.inc
a2_gentfish_farm21_23_diff.inc: a2_gentfish_farm21.png a2_gentfish_farm23.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm21.png a2_gentfish_farm23.png > a2_gentfish_farm21_23_diff.inc
a2_gentfish_farm23_25_diff.inc: a2_gentfish_farm23.png a2_gentfish_farm25.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm23.png a2_gentfish_farm25.png > a2_gentfish_farm23_25_diff.inc
a2_gentfish_farm25_27_diff.inc: a2_gentfish_farm25.png a2_gentfish_farm27.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm25.png a2_gentfish_farm27.png > a2_gentfish_farm25_27_diff.inc
a2_gentfish_farm27_29_diff.inc: a2_gentfish_farm27.png a2_gentfish_farm29.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm27.png a2_gentfish_farm29.png > a2_gentfish_farm27_29_diff.inc
a2_gentfish_farm29_31_diff.inc: a2_gentfish_farm29.png a2_gentfish_farm31.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm29.png a2_gentfish_farm31.png > a2_gentfish_farm29_31_diff.inc
a2_gentfish_farm31_33_diff.inc: a2_gentfish_farm31.png a2_gentfish_farm33.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm31.png a2_gentfish_farm33.png > a2_gentfish_farm31_33_diff.inc
a2_gentfish_farm33_35_diff.inc: a2_gentfish_farm33.png a2_gentfish_farm35.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm33.png a2_gentfish_farm35.png > a2_gentfish_farm33_35_diff.inc
a2_gentfish_farm35_37_diff.inc: a2_gentfish_farm35.png a2_gentfish_farm37.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm35.png a2_gentfish_farm37.png > a2_gentfish_farm35_37_diff.inc
a2_gentfish_farm37_39_diff.inc: a2_gentfish_farm37.png a2_gentfish_farm39.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm37.png a2_gentfish_farm39.png > a2_gentfish_farm37_39_diff.inc
a2_gentfish_farm39_41_diff.inc: a2_gentfish_farm39.png a2_gentfish_farm41.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm39.png a2_gentfish_farm41.png > a2_gentfish_farm39_41_diff.inc
a2_gentfish_farm41_43_diff.inc: a2_gentfish_farm41.png a2_gentfish_farm43.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm41.png a2_gentfish_farm43.png > a2_gentfish_farm41_43_diff.inc
a2_gentfish_farm43_45_diff.inc: a2_gentfish_farm43.png a2_gentfish_farm45.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm43.png a2_gentfish_farm45.png > a2_gentfish_farm43_45_diff.inc
a2_gentfish_farm45_47_diff.inc: a2_gentfish_farm45.png a2_gentfish_farm47.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm45.png a2_gentfish_farm47.png > a2_gentfish_farm45_47_diff.inc
a2_gentfish_farm47_01_diff.inc: a2_gentfish_farm47.png a2_gentfish_farm01.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm47.png a2_gentfish_farm01.png > a2_gentfish_farm47_01_diff.inc
####
a2_gentfish_farm02_04_diff.inc: a2_gentfish_farm02.png a2_gentfish_farm04.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm02.png a2_gentfish_farm04.png > a2_gentfish_farm02_04_diff.inc
a2_gentfish_farm04_06_diff.inc: a2_gentfish_farm04.png a2_gentfish_farm06.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm04.png a2_gentfish_farm06.png > a2_gentfish_farm04_06_diff.inc
a2_gentfish_farm06_08_diff.inc: a2_gentfish_farm06.png a2_gentfish_farm08.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm06.png a2_gentfish_farm08.png > a2_gentfish_farm06_08_diff.inc
a2_gentfish_farm08_10_diff.inc: a2_gentfish_farm08.png a2_gentfish_farm10.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm08.png a2_gentfish_farm10.png > a2_gentfish_farm08_10_diff.inc
a2_gentfish_farm10_12_diff.inc: a2_gentfish_farm10.png a2_gentfish_farm12.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm10.png a2_gentfish_farm12.png > a2_gentfish_farm10_12_diff.inc
a2_gentfish_farm12_14_diff.inc: a2_gentfish_farm12.png a2_gentfish_farm14.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm12.png a2_gentfish_farm14.png > a2_gentfish_farm12_14_diff.inc
a2_gentfish_farm14_16_diff.inc: a2_gentfish_farm14.png a2_gentfish_farm16.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm14.png a2_gentfish_farm16.png > a2_gentfish_farm14_16_diff.inc
a2_gentfish_farm16_18_diff.inc: a2_gentfish_farm16.png a2_gentfish_farm18.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm16.png a2_gentfish_farm18.png > a2_gentfish_farm16_18_diff.inc
a2_gentfish_farm18_20_diff.inc: a2_gentfish_farm18.png a2_gentfish_farm20.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm18.png a2_gentfish_farm20.png > a2_gentfish_farm18_20_diff.inc
a2_gentfish_farm20_22_diff.inc: a2_gentfish_farm20.png a2_gentfish_farm22.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm20.png a2_gentfish_farm22.png > a2_gentfish_farm20_22_diff.inc
a2_gentfish_farm22_24_diff.inc: a2_gentfish_farm22.png a2_gentfish_farm24.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm22.png a2_gentfish_farm24.png > a2_gentfish_farm22_24_diff.inc
a2_gentfish_farm24_26_diff.inc: a2_gentfish_farm24.png a2_gentfish_farm26.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm24.png a2_gentfish_farm26.png > a2_gentfish_farm24_26_diff.inc
a2_gentfish_farm26_28_diff.inc: a2_gentfish_farm26.png a2_gentfish_farm28.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm26.png a2_gentfish_farm28.png > a2_gentfish_farm26_28_diff.inc
a2_gentfish_farm28_30_diff.inc: a2_gentfish_farm28.png a2_gentfish_farm30.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm28.png a2_gentfish_farm30.png > a2_gentfish_farm28_30_diff.inc
a2_gentfish_farm30_32_diff.inc: a2_gentfish_farm30.png a2_gentfish_farm32.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm30.png a2_gentfish_farm32.png > a2_gentfish_farm30_32_diff.inc
a2_gentfish_farm32_34_diff.inc: a2_gentfish_farm32.png a2_gentfish_farm34.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm32.png a2_gentfish_farm34.png > a2_gentfish_farm32_34_diff.inc
a2_gentfish_farm34_36_diff.inc: a2_gentfish_farm34.png a2_gentfish_farm36.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm34.png a2_gentfish_farm36.png > a2_gentfish_farm34_36_diff.inc
a2_gentfish_farm36_38_diff.inc: a2_gentfish_farm36.png a2_gentfish_farm38.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm36.png a2_gentfish_farm38.png > a2_gentfish_farm36_38_diff.inc
a2_gentfish_farm38_40_diff.inc: a2_gentfish_farm38.png a2_gentfish_farm40.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm38.png a2_gentfish_farm40.png > a2_gentfish_farm38_40_diff.inc
a2_gentfish_farm40_42_diff.inc: a2_gentfish_farm40.png a2_gentfish_farm42.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm40.png a2_gentfish_farm42.png > a2_gentfish_farm40_42_diff.inc
a2_gentfish_farm42_44_diff.inc: a2_gentfish_farm42.png a2_gentfish_farm44.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm42.png a2_gentfish_farm44.png > a2_gentfish_farm42_44_diff.inc
a2_gentfish_farm44_46_diff.inc: a2_gentfish_farm44.png a2_gentfish_farm46.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm44.png a2_gentfish_farm46.png > a2_gentfish_farm44_46_diff.inc
a2_gentfish_farm46_48_diff.inc: a2_gentfish_farm46.png a2_gentfish_farm48.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm46.png a2_gentfish_farm48.png > a2_gentfish_farm46_48_diff.inc
a2_gentfish_farm48_02_diff.inc: a2_gentfish_farm48.png a2_gentfish_farm02.png
$(PNG_TO_HGR_DIFF) a2_gentfish_farm48.png a2_gentfish_farm02.png > a2_gentfish_farm48_02_diff.inc
####
clean:
rm -f *~ *.zx02 *.lst *.o *.hgr *_diff.inc
+244
View File
@@ -0,0 +1,244 @@
; fast seek/multi-read
; copyright (c) Peter Ferrie 2015-16
; Paramaters for loading QLOAD
sectors = 14 ; user-defined
firsttrk = 1 ; user-defined, first track to read
firstsec = 0 ; user-defined, first sector to read
address = $12 ; user-defined
entry = $1200 ; user-defined
version = 1
;memory usage:
;256 bytes ($200-2ff) static table
grouped = $200
; stay away from interrupt vectors at $3fe !!!
;106 bytes ($300-369) static table
preshift = $300
zvalue = $fd ; only during init
znibble = $fe ; only during init
zmask = $ff ; only during init
WHICH_SLOT = $DA
; $26/$27 sector read location (ROM)
; $3D sector number (ROM)
; at entry (at least on AppleWin) A=1, X=60 (slot<<4), Y=0
; qkumba says cffa cards leave Y at $10
; 26/27 = 00/09
; 3D = 1
; For Disk II booting, the firmware loads track0/sector0
; to $800 and then jumps to $801
.org $800
.byte 1 ; number of sectors for ROM to load
boot_entry:
; this code loads two sectors up to $10/$11
; assume A=1 coming in here
lsr ; check sector number
; A=0, carry=1
tay ; Y=0
adc #$0f ; A=$10 (destintation)
sta $27 ; set or update address as needed
cmp #$12
; 10 11 12 (1 1 1)
; be, bf, c0 (1011 1011 1100)
; so if hit $c000 we are done
beq done_load_2 ; branch if loaded 2
inc $3d ; increment sector (faster to find)
; call to the read routine in proper slot
; using rts to jump indirect to
; $CX5C
; this routine reads sector in $3D on track in $41
; to address in $26/$27
; when it's done it jumps back to $801
stx WHICH_SLOT ; save for later
txa ; x is slot# << 4
lsr
lsr
lsr
lsr
ora #$c0 ; slot to PROM base
pha
lda #$5b ;read-1
pha
rts ; return used to call $CX5C in DISK II ROM
done_load_2:
; patch self modifying code for Q6L read
txa
ora #$8c ; slot to Q6L
; Q6L?
; if slot 6, after this A is $EC
; Y should be 2 here
patch_loop:
iny
ldx patchtbl-3, Y
sta code_begin, X ; replace placeholders with Q6L
; BE02 = EC? lda c0ec
; so sets to c08c (Q6L)
bne patch_loop
; patch self-modifying code for turning motor off
and #$f8 ; MOTOROFF (c088) -> c0e8
sta slotpatch7+1
; patch self-modifying code for turning motor on
clc
adc #1 ; MOTORON (c089) -> c0e9
sta slotpatch9+1
; patch self-modifying code for phase off
eor #9 ; PHASEOFF (c080)
sta slotpatch8+1
ldx #$3f
stx zmask
inx
ldy #$7f
bne skip_ahead ; branch always
; pad with zeros until $839
; $839 is the entry point
; adjusts address at $8FE to be entry point
; jumps to boot 2
;.res $839-*
; lda #>(entry-1)
; pha
; lda #<(entry-1)
; pha
; jsr preread
; jmp $1000 ; stage2 entry point
patchtbl:
.byte <(slotpatch1+1), <(slotpatch2+1), <(slotpatch3+1)
.byte <(slotpatch4+1), <(slotpatch5+1), <(slotpatch6+1)
indextbl: ;the 0 also terminates the patchtbl list!
.byte 0, 2, 1, 3
;construct denibbilisation table
;pre-shifted for interleave read
skip_ahead:
loopaa:
sty znibble
tya
asl
bit znibble
beq loopz
ora znibble
eor #$ff
and #$7e
loopa:
bcs loopz
lsr
bne loopa
dex
txa
asl
asl
sta preshift-$16, Y
loopz:
dey
bne loopaa
;construct 2-bit group table
sty zvalue
loopbb:
lsr zmask
lsr zmask
loopb:
lda indextbl, X
sta grouped, Y
inc zvalue
lda zvalue
and zmask
bne loopy
inx
txa
and #3
tax
loopy:
iny
iny
iny
iny
cpy #3
bcs loopb
iny
cpy #3
bcc loopbb
lda #>(entry-1)
pha
lda #<(entry-1)
pha
jsr preread
; seek backward support
; sty startsec+1
; sta tmpadr+1
; stx total+1
jmp seekread
preread:
;copy post-read if necessary
;push post-read address here
; pla
; tax
; pla
; tay
; lda #>(postread-1)
; pha
; lda #<(postread-1)
; pha
; tya
; pha
; txa
; pha
lda #<(firsttrk*2)
sta phase+1
ldx #sectors
lda #address
ldy #firstsec
rts
end_code:
.res $8fe-*
; traditionally, entry point to jump to at end of loading
; $1000 in this case
;*=$8fe
.byte $10, $00
.include "qboot_stage2.s"
+382
View File
@@ -0,0 +1,382 @@
; the following lives on sectors $0E and $0D
; why?
; request sector 2 and 4, and the interleave is
; beneath apple dos (3-23)
; Physical (firmware) : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
; DOS33 mapping : 0, 7, 14, 6, 13, 5, 12, 4, 11, 3, 10, 2, 9, 1, 8, 15
; Beneath Apple DOS
; p86 (dos reference)
;
;WAIT = $FCA8 ;; delay 1/2(26+27A+5A^2) us
WAIT = norom_wait
.org $1000
code_begin:
.byte version
readnib:
slotpatch1: ; smc
lda $c0d1 ; gets set to C08C (Q6L) read
bpl readnib
rts
;fill address array for one track
seekread:
sty startsec+1
sta tmpadr+1
stx total+1
inittrk:
sec
lda #$10
sbc startsec+1
cmp total+1
bcs it_skip
tax
it_skip:
stx partial1
stx partial2
jsr seek
startsec:
ldy #$d1
tmpadr:
tmpadr_loop:
lda #$d1
sta addrtbl, y
inc tmpadr+1
iny
dec partial1
bne tmpadr_loop
;====================================
; read a sector
;====================================
; first address field
;====================================
; starts with $D5 $AA $96
; then XX YY volume
; then XX YY track
; then XX YY sector
; then XX YY checksum
; then ends with $DE $AA $EB
;====================================
; data field
;====================================
; starts with $D5 $AA $AD
; 342 bytes of data
; XX checksum
; ends with $DE $AA $EB
read:
outer_read:
jsr readnib
inner_read:
cmp #$d5 ; look for $D5 part of addr field
bne outer_read
jsr readnib ; look for $D5 $AA
cmp #$aa
bne inner_read
; look for $D5 $AA $AD
tay ; we need Y=#$AA later
jsr readnib
eor #$ad ; zero A if match
beq check_mode
; if not #$AD, then #$96 is assumed
; so in address field
ldy #2 ; volume, track, sector
another:
jsr readnib
rol ; set carry
sta sector+1
jsr readnib
and sector+1
dey
bpl another
tay
ldx addrtbl, Y ; fetch corresponding address
beq read ; done?
sta sector+1 ; store index for later
stx adrpatch1+2
stx adrpatch8+2
stx adrpatch2+2
stx adrpatch3+2
stx adrpatch5+2
stx adrpatch7+2
inx
stx adrpatch9+2
dex
dex
stx adrpatch4+2
stx adrpatch6+2
ldy #$fe
loop2:
adrpatch1:
lda $d102, Y
pha
iny
bne loop2
branch_read:
bcs read ; branch always
check_mode:
cpx #0
beq read ; loop if not expecting #$AD
loop33:
sta tmpval+1 ; zero rolling checksum
slotpatch2:
loop4:
ldx $c0d1
bpl loop4
lda preshift-$96, X
adrpatch2:
sta $d102, Y ; store 2-bit array
tmpval:
eor #$d1
iny
bne loop33
ldy #$aa
slotpatch3:
loop5:
ldx $c0d1
bpl loop5
eor preshift-$96, X
adrpatch3:
ldx $d102, Y ; bit2tbl
eor grouped+2, X ; first 86 nibbles use group bits 0-1
adrpatch4:
sta $d156, y
iny
bne loop5
and #$fc
ldy #$aa
slotpatch4:
loop6:
ldx $c0d1
bpl loop6
eor preshift-$96, X
adrpatch5:
ldx $d102, Y ; bit2tbl
eor grouped+1, X ; second 86 nibbles use group bits 2-3
adrpatch6:
sta $d1ac, Y
iny
bne loop6
and #$fc
ldx #$ac
slotpatch5:
loop7:
ldy $c0d1
bpl loop7
eor preshift-$96, Y
adrpatch7:
ldy $d100, X ; bit2tbl
eor grouped, Y ; last 84 nibbles use group bits 4-5
adrpatch8:
sta $d100, x
inx
bne loop7
and #$fc
slotpatch6:
loop8:
ldy $c0d1
bpl loop8
eor preshift-$96, Y
cmp #1 ; carry = !zero
ldy #1
loop9:
pla
adrpatch9:
sta $d100, Y
dey
bpl loop9
branch_read2:
bcs branch_read ; branch if checksum failure
sector:
ldy #$d1
txa
sta addrtbl, Y ; zero corresponding address
dec total+1
dec partial2 ; adjust remaining count
; (faster than looping over array)
sec
bne branch_read2 ; read all requested sectors in one track
sta startsec+1 ; this was missing from original code
; leading to trouble on wrap around
; it not starting at sector0
total:
ldx #$d1
beq driveoff
inc phase+1
inc phase+1 ; update current track
jmp inittrk
driveoff:
slotpatch7:
lda $c0d1
seekret:
rts
seek:
ldx #0
stx step+1
copy_cur:
curtrk:
lda #0
sta tmpval+1
sec
phase:
sbc #$d1
beq seekret
; if seek backwards
bcs sback
eor #$ff
inc curtrk+1
bcc ssback
sback:
adc #$fe
dec curtrk+1
ssback:
cmp step+1
bcc loop10
step:
lda #$d1
loop10:
cmp #8
bcs loop11
tay
sec
loop11:
lda curtrk+1
ldx step1, Y
bne loop12
loopmmm:
clc
lda tmpval+1
ldx step2, Y
loop12:
stx sector+1
and #3
rol
tax
slotpatch8:
sta $c0d1, X
loopmm:
ldx #$13
loopm:
dex
bne loopm
dec sector+1
bne loopmm
lsr
bcs loopmmm
inc step+1
bne copy_cur
step1: .byte 1, $30, $28, $24, $20, $1e, $1d, $1c
step2: .byte $70, $2c, $26, $22, $1f, $1e, $1d, $1c
addrtbl: .res 16
partial1: .byte $00
partial2: .byte $00
code_end:
;==========================
; enable drive motor
;==========================
driveon:
slotpatch9:
lda $c0d1
; wait 1s
ldx #6
wait_1s:
lda #255
jsr WAIT
dex
bne wait_1s
rts
load_new:
jsr driveon
lda load_track
asl ; track to start*2
sta phase+1
lda load_sector
tay ; sector to start
lda load_length ; length
tax
lda load_address ; address to load
jsr seekread
rts
load_address:
.byte $00
load_track:
.byte $00
load_sector:
.byte $00
load_length:
.byte $00
; copy of ROM wait
; because we might disable ROM
norom_wait:
sec
wait2:
pha
wait3:
sbc #$01
bne wait3
pla
sbc #$01
bne wait2
rts
wait_end:
+23
View File
@@ -0,0 +1,23 @@
load_file =$1207
clear_all =$1300
clear_all_color =$1325
set_normal =$1385
set_inverse =$1390
wait =$1237
wait_a_bit =$124e
wait_50ms =$1243
move_and_print =$1343
clear_bottom =$12c2
clear_bottoms =$12eb
clear_screens =$1262
clear_top =$1277
zx02_full_decomp =$1417
zx_src_h =$141d
zx_src_l =$1419
wait_until_keypress =$140e
wait_50xms =$1245
hgr_page_flip =$13fb
gr_offsets =$13a5
hgr_clear_screen =$14a5
hgr_page1_clearscreen =$14ad
hgr_page2_clearscreen =$1513
+94
View File
@@ -0,0 +1,94 @@
; Loader for Surprise
.include "zp.inc"
.include "../hardware.inc"
.include "common_defines.inc"
.include "qboot.inc"
qload_start:
; init the write code
; lda WHICH_SLOT
; jsr popwr_init
; first time entry
; start by loading text title
; lda #0 ; load ZW engine
; sta WHICH_LOAD
lda #1
sta CURRENT_DISK ; current disk number
; jsr load_file
jmp surprise_start
; jmp $2000 ; jump to ZW
;====================================
; loads file specified by WHICH_LOAD
;====================================
load_file:
ldx WHICH_LOAD
; lda which_disk_array,X
; cmp CURRENT_DISK
; bne change_disk
load_file_no_diskcheck:
lda load_address_array,X
sta load_address
lda track_array,X
sta load_track
lda sector_array,X
sta load_sector
lda length_array,X
sta load_length
jsr load_new
rts
which_disk_array:
.byte 1,1,1 ; ???, BG_LOAD, ANIMATION
load_address_array:
.byte $D0,$60,$60 ; ???, BG_LOAD, ANIMATION
start_address:
.byte $D0,$60,$60 ; ???, BG_LOAD, ANIMATION
track_array:
.byte 2,2,5 ; ???, BG_LOAD, ANIMATION
sector_array:
.byte 0,0,0 ; ???, BG_LOAD, ANIMATION
length_array:
.byte 48,32,32 ; ???, BG_LOAD, ANIMATION
.include "../wait.s"
.include "../wait_a_bit.s"
.include "../gr_fast_clear.s"
.include "../text_print.s"
.include "../gr_offsets.s"
.include "../hgr_table.s"
.include "../hgr_page_flip.s"
.include "../wait_keypress.s"
.include "../zx02_optim.s"
.include "../hgr_clear_screen.s"
.include "start.s"
qload_end:
.assert (>qload_end - >qload_start) < $e , error, "loader too big"
+109
View File
@@ -0,0 +1,109 @@
; surprise startup
;
; by deater (Vince Weaver) <vince@deater.net>
DEBUG=0
surprise_start:
;=====================
; initializations
;=====================
bit PAGE1
bit KEYRESET
; init vars
lda #0
sta DRAW_PAGE
;=====================
; clear text screen
lda #$A0
jsr clear_top_a
jsr clear_bottom
; print start message
jsr set_normal
lda #<start_message
sta OUTL
lda #>start_message
sta OUTH
jsr move_and_print_list
;=========================================
;=========================================
; start loading the demo
;=========================================
;=========================================
jsr hgr_make_tables
;=======================
;=======================
; Run BG_LOAD
;=======================
;=======================
; load from disk
lda #PART_BG_LOAD
sta WHICH_LOAD
jsr load_file
; Do decompress
jsr $6000
;=======================
;=======================
; setup graphics
;=======================
;=======================
bit SET_GR
bit HIRES
bit FULLGR
bit PAGE2 ; display page1
oog:
jsr wait_until_keypress
jsr hgr_page_flip
jmp oog
;=======================
;=======================
; Run ANIMATION
;=======================
;=======================
; load from disk
lda #PART_ANIMATION ; Load bucket
sta WHICH_LOAD
jsr load_file
; Run Animation
jsr $6000
blah:
jmp blah
start_message: ;01234567890123456789012345678901234567890
.byte 0,0,"LOADING SURPRISE",0
.byte $FF
+167
View File
@@ -0,0 +1,167 @@
;==================
;==================
; Zero Page Usage
;==================
;==================
; ZX0 decompression addresses
ZX0_src = $00
ZX0_dst = $02
offset = $04
bitr = $06
pntr = $07
WHICH_LOAD = $09
CURRENT_DISK = $0A
; Zero page monitor routines addresses
; We don't use the monitor but we use some of these anyway
WNDLFT = $20
WNDWDTH = $21
WNDTOP = $22
WNDBTM = $23
CH = $24
CV = $25
GBASL = $26
GBASH = $27
BASL = $28
BASH = $29
H2 = $2C
V2 = $2D
MASK = $2E
COLOR = $30
;INVFLG = $32
WIPEL = $3C ; used by input for wipes?
WIPEH = $3D
WHICH_TRACK = $54
;==========================
; $60-$6F
;==========================
DISP_PAGE = $6E
DRAW_PAGE = $6F
;================================================
; $B0 ... $BF for common things, don't mess with
;================================================
FRAME = $B8
FRAMEL = $B8
FRAMEH = $B9
WHICH_SLOT = $BA ; from boot sector
SECOND_COUNTDOWN= $BB
BTC_L = $BC
BTC_H = $BD ; audio
; Used when sprite drawing
CURSOR_X = $BE
CURSOR_Y = $BF
;==============================================
; $C0-$CF available
;==============================================
; woz
BALL_STATE = $C0 ; C0..C7
BALL_OFFSET = $C8 ; C8..CF
; four-color/plasma
XPOS = $C8
YPOS = $C9
AUXOUTL = $CA
AUXOUTH = $CB
MAIN1 = $CC
AUX1 = $CD
MAIN0 = $CE
AUX0 = $CF
; repack
CURRENT_COL = $CC ; dhgr_repack
CURRENT_ROW = $CD ; dhgr_repack
;==============================================
; $D0-$DB can re-use in each file
;==============================================
; repack
REPACK_TMP = $D0 ; $D0...$D7
; start/font fall
TEXT_Y = $D2
; intro: scrolling
SCROLL_COUNT = $D0
INDEX = $D1
DEST_OFFSET = $D2
SRC_OFFSET = $D3
LENGTH = $D4
; woz
ROW = $D0 ; martymation
FAKE_HGR_PAGE = $D1
FAKE_HGR_BITS = $D2
FAKE_HGR_SHAPE = $D3
FAKE_HGR_SHAPE2 = $D4
WHICH_BALL = $D5
ORBITS = $D6
NEXT_BALL = $D7
ERASE_COUNT = $D8
BALL_X = $D9
; four color
CURRENT = $D0
LEFT = $D1
XSTART = $D2
XEND = $D3
COLORSG = $D4
COLORSF = $D5
COLORSE = $D6
COLORSD = $D7
COLORSC = $D8
COLORSB = $D9
COLORSA = $DA
ODD = $DB
; Plasma
COMPT1 = $D0
COMPT2 = $D1
PARAM1 = $D2
PARAM2 = $D3
PARAM3 = $D4
PARAM4 = $D5
COUNT = $D6
;
TEMP_VOL = $D9
WHICH = $DA
FRAME_RATE = $DB
;==============================================
; $DC-$DF we use for in/out pointers
;==============================================
INL = $DC
INH = $DD
OUTL = $DE
OUTH = $DF
;==========================
; $E0-$FD for PT3 Player
;==========================
;.include "pt3_lib_zp.inc"