mirror of
https://github.com/deater/dos33fsprogs.git
synced 2025-08-05 18:25:43 +00:00
riven: change-disk code now actually lets you continue
sort of cleaned up qload code as well
This commit is contained in:
@@ -12,19 +12,22 @@ all: riven_disk01.dsk \
|
||||
|
||||
###
|
||||
|
||||
riven_disk01.dsk: QBOOT QLOAD_01 TITLE_01 \
|
||||
riven_disk01.dsk: QBOOT QLOAD TITLE_01 \
|
||||
disk01_files/DISK01 \
|
||||
disk01_files/LEVEL_ARRIVAL
|
||||
cp $(EMPTY_DISK)/empty.dsk riven_disk01.dsk
|
||||
$(DOS33_RAW) riven_disk01.dsk 0 0 QBOOT 0 1
|
||||
$(DOS33_RAW) riven_disk01.dsk 0 2 QBOOT 1 1
|
||||
$(DOS33_RAW) riven_disk01.dsk 0 4 QBOOT 2 1
|
||||
$(DOS33_RAW) riven_disk01.dsk 1 0 QLOAD_01 0 0
|
||||
$(DOS33_RAW) riven_disk01.dsk 0 8 disk01_files/DISK01 0 0
|
||||
$(DOS33_RAW) riven_disk01.dsk 1 0 QLOAD 0 0
|
||||
$(DOS33_RAW) riven_disk01.dsk 1 8 TITLE_01 0 0
|
||||
$(DOS33_RAW) riven_disk01.dsk 2 0 disk01_files/LEVEL_ARRIVAL 0 0
|
||||
|
||||
###
|
||||
|
||||
riven_disk39.dsk: QBOOT QLOAD_39 TITLE_39 \
|
||||
riven_disk39.dsk: QBOOT QLOAD TITLE_39 \
|
||||
disk39_files/DISK39 \
|
||||
disk39_files/LEVEL_MAGSTEPS \
|
||||
disk39_files/LEVEL_MAGLEV \
|
||||
disk39_files/LEVEL_OUTSIDE \
|
||||
@@ -35,7 +38,8 @@ riven_disk39.dsk: QBOOT QLOAD_39 TITLE_39 \
|
||||
$(DOS33_RAW) riven_disk39.dsk 0 0 QBOOT 0 1
|
||||
$(DOS33_RAW) riven_disk39.dsk 0 2 QBOOT 1 1
|
||||
$(DOS33_RAW) riven_disk39.dsk 0 4 QBOOT 2 1
|
||||
$(DOS33_RAW) riven_disk39.dsk 1 0 QLOAD_39 0 0
|
||||
$(DOS33_RAW) riven_disk39.dsk 0 8 disk39_files/DISK39 0 0
|
||||
$(DOS33_RAW) riven_disk39.dsk 1 0 QLOAD 0 0
|
||||
$(DOS33_RAW) riven_disk39.dsk 1 8 TITLE_39 0 0
|
||||
$(DOS33_RAW) riven_disk39.dsk 2 0 disk39_files/LEVEL_PROJECTOR 0 0
|
||||
$(DOS33_RAW) riven_disk39.dsk 9 0 disk39_files/LEVEL_OUTSIDE 0 0
|
||||
@@ -44,25 +48,29 @@ riven_disk39.dsk: QBOOT QLOAD_39 TITLE_39 \
|
||||
$(DOS33_RAW) riven_disk39.dsk 25 0 disk39_files/MOVIE_MAGLEV_FLIP 0 0
|
||||
$(DOS33_RAW) riven_disk39.dsk 27 0 disk39_files/MOVIE_MAGLEV_RIDE 0 0
|
||||
|
||||
riven_disk40.dsk: QBOOT QLOAD_40 TITLE_40 \
|
||||
riven_disk40.dsk: QBOOT QLOAD TITLE_40 \
|
||||
disk40_files/DISK40 \
|
||||
disk40_files/LEVEL_MAGLEV \
|
||||
disk40_files/LEVEL_OUTSIDE
|
||||
cp $(EMPTY_DISK)/empty.dsk riven_disk40.dsk
|
||||
$(DOS33_RAW) riven_disk40.dsk 0 0 QBOOT 0 1
|
||||
$(DOS33_RAW) riven_disk40.dsk 0 2 QBOOT 1 1
|
||||
$(DOS33_RAW) riven_disk40.dsk 0 4 QBOOT 2 1
|
||||
$(DOS33_RAW) riven_disk40.dsk 1 0 QLOAD_40 0 0
|
||||
$(DOS33_RAW) riven_disk40.dsk 0 8 disk40_files/DISK40 0 0
|
||||
$(DOS33_RAW) riven_disk40.dsk 1 0 QLOAD 0 0
|
||||
$(DOS33_RAW) riven_disk40.dsk 1 8 TITLE_40 0 0
|
||||
$(DOS33_RAW) riven_disk40.dsk 2 0 disk40_files/LEVEL_MAGLEV 0 0
|
||||
$(DOS33_RAW) riven_disk40.dsk 9 0 disk40_files/LEVEL_OUTSIDE 0 0
|
||||
|
||||
riven_disk43.dsk: QBOOT QLOAD_43 TITLE_43 \
|
||||
riven_disk43.dsk: QBOOT QLOAD TITLE_43 \
|
||||
disk43_files/DISK43 \
|
||||
disk43_files/LEVEL_CART
|
||||
cp $(EMPTY_DISK)/empty.dsk riven_disk43.dsk
|
||||
$(DOS33_RAW) riven_disk43.dsk 0 0 QBOOT 0 1
|
||||
$(DOS33_RAW) riven_disk43.dsk 0 2 QBOOT 1 1
|
||||
$(DOS33_RAW) riven_disk43.dsk 0 4 QBOOT 2 1
|
||||
$(DOS33_RAW) riven_disk43.dsk 1 0 QLOAD_43 0 0
|
||||
$(DOS33_RAW) riven_disk43.dsk 0 8 disk43_files/DISK43 0 0
|
||||
$(DOS33_RAW) riven_disk43.dsk 1 0 QLOAD 0 0
|
||||
$(DOS33_RAW) riven_disk43.dsk 1 8 TITLE_43 0 0
|
||||
$(DOS33_RAW) riven_disk43.dsk 2 0 disk43_files/LEVEL_CART 0 0
|
||||
|
||||
@@ -76,67 +84,21 @@ qboot_sector.o: qboot_sector.s qboot_stage2.s
|
||||
|
||||
###
|
||||
|
||||
QLOAD_01: qload_01.o
|
||||
ld65 -o QLOAD_01 qload_01.o -C $(LINKER_SCRIPTS)/apple2_1800.inc
|
||||
QLOAD: qload.o
|
||||
ld65 -o QLOAD qload.o -C $(LINKER_SCRIPTS)/apple2_1800.inc
|
||||
|
||||
qload_01.o: qload.s qboot.inc \
|
||||
qload.o: qload.s qboot.inc \
|
||||
zx02_optim.s wait.s \
|
||||
draw_pointer.s log_table.s \
|
||||
disk01_files/disk01_qload.inc \
|
||||
disk01_files/disk01_defines.inc \
|
||||
graphics_sprites/pointer_sprites.inc \
|
||||
hgr_14x14_sprite.s \
|
||||
keyboard.s
|
||||
ca65 -o qload_01.o qload.s -DDISK=01 -l qload_01.lst
|
||||
|
||||
###
|
||||
|
||||
QLOAD_39: qload_39.o
|
||||
ld65 -o QLOAD_39 qload_39.o -C $(LINKER_SCRIPTS)/apple2_1800.inc
|
||||
|
||||
qload_39.o: qload.s qboot.inc \
|
||||
zx02_optim.s wait.s \
|
||||
draw_pointer.s log_table.s \
|
||||
disk39_files/disk39_qload.inc \
|
||||
disk39_files/disk39_defines.inc \
|
||||
graphics_sprites/pointer_sprites.inc \
|
||||
hgr_14x14_sprite.s \
|
||||
keyboard.s
|
||||
ca65 -o qload_39.o qload.s -DDISK=39 -l qload_39.lst
|
||||
|
||||
###
|
||||
|
||||
QLOAD_40: qload_40.o
|
||||
ld65 -o QLOAD_40 qload_40.o -C $(LINKER_SCRIPTS)/apple2_1800.inc
|
||||
|
||||
qload_40.o: qload.s qboot.inc \
|
||||
zx02_optim.s wait.s \
|
||||
draw_pointer.s log_table.s \
|
||||
disk40_files/disk40_qload.inc \
|
||||
disk40_files/disk40_defines.inc \
|
||||
graphics_sprites/pointer_sprites.inc \
|
||||
hgr_14x14_sprite.s \
|
||||
keyboard.s
|
||||
ca65 -o qload_40.o qload.s -DDISK=40 -l qload_40.lst
|
||||
ca65 -o qload.o qload.s -l qload.lst
|
||||
|
||||
|
||||
####
|
||||
|
||||
QLOAD_43: qload_43.o
|
||||
ld65 -o QLOAD_43 qload_43.o -C $(LINKER_SCRIPTS)/apple2_1800.inc
|
||||
|
||||
qload_43.o: qload.s qboot.inc \
|
||||
zx02_optim.s wait.s \
|
||||
draw_pointer.s log_table.s \
|
||||
disk43_files/disk43_qload.inc \
|
||||
disk43_files/disk43_defines.inc \
|
||||
graphics_sprites/pointer_sprites.inc \
|
||||
hgr_14x14_sprite.s \
|
||||
keyboard.s
|
||||
ca65 -o qload_43.o qload.s -DDISK=43 -l qload_43.lst
|
||||
|
||||
####
|
||||
|
||||
TITLE_01: title_01.o
|
||||
ld65 -o TITLE_01 title_01.o -C $(LINKER_SCRIPTS)/apple2_4000.inc
|
||||
|
||||
@@ -271,15 +233,15 @@ generate_common.o: generate_common.c
|
||||
#change_location = qload_start+$5f9
|
||||
|
||||
|
||||
qload.inc: generate_common QLOAD_01
|
||||
./generate_common -a 0x1800 -s full_decomp qload_01.lst > qload.inc
|
||||
./generate_common -a 0x1800 -s wait qload_01.lst >> qload.inc
|
||||
./generate_common -a 0x1800 -s wait_50xms qload_01.lst >> qload.inc
|
||||
./generate_common -a 0x1800 -s draw_pointer qload_01.lst >> qload.inc
|
||||
./generate_common -a 0x1800 -s save_bg_14x14 qload_01.lst >> qload.inc
|
||||
./generate_common -a 0x1800 -s handle_keypress qload_01.lst >> qload.inc
|
||||
./generate_common -a 0x1800 -s change_location qload_01.lst >> qload.inc
|
||||
./generate_common -a 0x1800 -s move_and_print qload_01.lst >> qload.inc
|
||||
./generate_common -a 0x1800 -s set_normal qload_01.lst >> qload.inc
|
||||
qload.inc: generate_common QLOAD
|
||||
./generate_common -a 0x1800 -s full_decomp qload.lst > qload.inc
|
||||
./generate_common -a 0x1800 -s wait qload.lst >> qload.inc
|
||||
./generate_common -a 0x1800 -s wait_50xms qload.lst >> qload.inc
|
||||
./generate_common -a 0x1800 -s draw_pointer qload.lst >> qload.inc
|
||||
./generate_common -a 0x1800 -s save_bg_14x14 qload.lst >> qload.inc
|
||||
./generate_common -a 0x1800 -s handle_keypress qload.lst >> qload.inc
|
||||
./generate_common -a 0x1800 -s change_location qload.lst >> qload.inc
|
||||
./generate_common -a 0x1800 -s move_and_print qload.lst >> qload.inc
|
||||
./generate_common -a 0x1800 -s set_normal qload.lst >> qload.inc
|
||||
|
||||
|
||||
|
@@ -8,7 +8,7 @@ $0400-$07ff = lores graphics page1
|
||||
$0800-$0bff = lores graphics page2
|
||||
$800-$8ff = (qboot initial sector)
|
||||
$1000-$11ff = qboot_stage2 (disk code)
|
||||
$1200-$12ff = ????
|
||||
$1200-$12ff = QLOAD tables
|
||||
$1300-$16FF = HGR lookup tables
|
||||
$1700-$17FF = ????
|
||||
$1800-$1FFF = QLOAD = loader code (2k?)
|
||||
|
@@ -3,8 +3,17 @@ include ../../../Makefile.inc
|
||||
LINKER_SCRIPTS = ../../../linker_scripts/
|
||||
|
||||
|
||||
all: LEVEL_ARRIVAL
|
||||
all: DISK01 LEVEL_ARRIVAL
|
||||
|
||||
####
|
||||
|
||||
DISK01: disk01.o
|
||||
ld65 -o DISK01 disk01.o -C $(LINKER_SCRIPTS)/apple2_4000.inc
|
||||
|
||||
disk01.o: disk01.s ../zp.inc
|
||||
ca65 -o disk01.o disk01.s -l disk01.lst
|
||||
|
||||
####
|
||||
|
||||
LEVEL_ARRIVAL: level_arrival.o
|
||||
ld65 -o LEVEL_ARRIVAL level_arrival.o -C $(LINKER_SCRIPTS)/apple2_4000.inc
|
||||
|
33
games/riven_hgr/disk01_files/disk01.s
Normal file
33
games/riven_hgr/disk01_files/disk01.s
Normal file
@@ -0,0 +1,33 @@
|
||||
.include "../zp.inc"
|
||||
|
||||
which_disk:
|
||||
.byte $01 ; BCD
|
||||
|
||||
load_address_array:
|
||||
.byte $40,$40,$40,$40 ; TITLE, ARRIVAL
|
||||
.byte $00,$00,$00,$00
|
||||
|
||||
track_array:
|
||||
.byte 1, 2, 2,17 ; TITLE, ARRIVAL
|
||||
.byte 0,0,0,0
|
||||
|
||||
sector_array:
|
||||
.byte 8, 0, 0, 0 ; TITLE, ARRIVAL
|
||||
.byte 0,0,0,0
|
||||
length_array:
|
||||
.byte 16, 128,123, 64 ; TITLE, ARRIVAL
|
||||
.byte 0,0,0,0
|
||||
|
||||
|
||||
disk_exit_disk: ; note: BCD (yes I'm lazy)
|
||||
.byte 0,0,0,0
|
||||
disk_exit_dni_h:
|
||||
.byte 0,0,0,0
|
||||
disk_exit_dni_l:
|
||||
.byte 0,0,0,0
|
||||
disk_exit_load:
|
||||
.byte 0,0,0,0
|
||||
disk_exit_level:
|
||||
.byte 0,0,0,0
|
||||
disk_exit_direction:
|
||||
.byte 0,0,0,0
|
@@ -1,19 +0,0 @@
|
||||
load_address_array:
|
||||
.byte $40,$40,$40,$40 ; TITLE, ARRIVAL
|
||||
|
||||
track_array:
|
||||
.byte 1, 2, 2,17 ; TITLE, ARRIVAL
|
||||
|
||||
sector_array:
|
||||
.byte 8, 0, 0, 0 ; TITLE, ARRIVAL
|
||||
|
||||
length_array:
|
||||
.byte 16, 128,123, 64 ; TITLE, ARRIVAL
|
||||
|
||||
|
||||
disk_exit_disk: ; note: BCD (yes I'm lazy)
|
||||
disk_exit_dni_h:
|
||||
disk_exit_dni_l:
|
||||
disk_exit_load:
|
||||
disk_exit_level:
|
||||
disk_exit_direction:
|
@@ -3,10 +3,22 @@ include ../../../Makefile.inc
|
||||
LINKER_SCRIPTS = ../../../linker_scripts/
|
||||
|
||||
|
||||
all: LEVEL_OUTSIDE LEVEL_PROJECTOR \
|
||||
all: DISK39 \
|
||||
LEVEL_OUTSIDE LEVEL_PROJECTOR \
|
||||
LEVEL_MAGLEV LEVEL_MAGSTEPS \
|
||||
MOVIE_MAGLEV_FLIP MOVIE_MAGLEV_RIDE
|
||||
|
||||
####
|
||||
|
||||
DISK39: disk39.o
|
||||
ld65 -o DISK39 disk39.o -C $(LINKER_SCRIPTS)/apple2_4000.inc
|
||||
|
||||
disk39.o: disk39.s ../zp.inc
|
||||
ca65 -o disk39.o disk39.s -l disk39.lst
|
||||
|
||||
|
||||
###
|
||||
|
||||
LEVEL_OUTSIDE: level_outside.o
|
||||
ld65 -o LEVEL_OUTSIDE level_outside.o -C $(LINKER_SCRIPTS)/apple2_4000.inc
|
||||
|
||||
|
@@ -1,22 +1,33 @@
|
||||
.include "../zp.inc"
|
||||
|
||||
which_disk:
|
||||
.byte $39 ; BCD
|
||||
|
||||
load_address_array:
|
||||
.byte $40,$40,$40,$40 ; TITLE, OUTSIDE, PROJECTOR, MAGSTEPS
|
||||
.byte $40,$40,$40 ; MAGLEV, MOVIE1, MOVIE2
|
||||
.byte $40,$40,$40,$00 ; MAGLEV, MOVIE1, MOVIE2
|
||||
|
||||
track_array:
|
||||
.byte 1, 9, 2,17 ; TITLE, OUTSIDE, PROJECTOR, MAGSTEPS
|
||||
.byte 21,25,27 ; MAGLEV, MOVIE1, MOVIE2
|
||||
.byte 21,25,27,0 ; MAGLEV, MOVIE1, MOVIE2
|
||||
|
||||
sector_array:
|
||||
.byte 8, 0, 0, 0 ; TITLE, OUTSIDE, PROJECTOR, MAGSTEPS
|
||||
.byte 0, 0, 0 ; MAGLEV, MOVIE1, MOVIE2
|
||||
.byte 0, 0, 0, 0 ; MAGLEV, MOVIE1, MOVIE2
|
||||
|
||||
length_array:
|
||||
.byte 16, 123,123, 64 ; TITLE, OUTSIDE, PROJECTOR, MAGSTEPS
|
||||
.byte 64, 32, 128 ; MAGLEV, MOVIE1, MOVIE2
|
||||
.byte 64, 32, 128, 0 ; MAGLEV, MOVIE1, MOVIE2
|
||||
|
||||
disk_exit_disk: ; note: BCD (yes I'm lazy)
|
||||
.byte 0,0,0,0
|
||||
disk_exit_dni_h:
|
||||
.byte 0,0,0,0
|
||||
disk_exit_dni_l:
|
||||
.byte 0,0,0,0
|
||||
disk_exit_load:
|
||||
.byte 0,0,0,0
|
||||
disk_exit_level:
|
||||
.byte 0,0,0,0
|
||||
disk_exit_direction:
|
||||
.byte 0,0,0,0
|
@@ -3,7 +3,15 @@ include ../../../Makefile.inc
|
||||
LINKER_SCRIPTS = ../../../linker_scripts/
|
||||
|
||||
|
||||
all: LEVEL_MAGLEV LEVEL_OUTSIDE
|
||||
all: DISK40 LEVEL_MAGLEV LEVEL_OUTSIDE
|
||||
|
||||
###
|
||||
|
||||
DISK40: disk40.o
|
||||
ld65 -o DISK40 disk40.o -C $(LINKER_SCRIPTS)/apple2_4000.inc
|
||||
|
||||
disk40.o: disk40.s ../zp.inc
|
||||
ca65 -o disk40.o disk40.s -l disk40.lst
|
||||
|
||||
####
|
||||
|
||||
|
58
games/riven_hgr/disk40_files/disk40.s
Normal file
58
games/riven_hgr/disk40_files/disk40.s
Normal file
@@ -0,0 +1,58 @@
|
||||
.include "../zp.inc"
|
||||
|
||||
which_disk:
|
||||
.byte $40 ; BCD
|
||||
|
||||
load_address_array:
|
||||
.byte $40,$40,$40,$00 ; TITLE, MAGLEV, OUTSIDE
|
||||
.byte $00,$00,$00,$00
|
||||
|
||||
track_array:
|
||||
.byte 1, 2, 9,17 ; TITLE, MAGLEV, OUTSIDE
|
||||
.byte 0, 0, 0, 0
|
||||
|
||||
sector_array:
|
||||
.byte 8, 0, 0, 0 ; TITLE, MAGLEV, OUTSIDE
|
||||
.byte 0,0,0,0
|
||||
|
||||
length_array:
|
||||
.byte 16, 96,96, 64 ; TITLE, MAGLEV, OUTSIDE
|
||||
.byte 0,0,0,0
|
||||
|
||||
disk_exit_disk: ; note: BCD (yes I'm lazy)
|
||||
.byte $43 ; CART (DISK43)
|
||||
.byte $00
|
||||
.byte $00
|
||||
.byte $00
|
||||
|
||||
disk_exit_dni_h:
|
||||
.byte $01
|
||||
.byte $00
|
||||
.byte $00
|
||||
.byte $00
|
||||
|
||||
disk_exit_dni_l:
|
||||
.byte $24
|
||||
.byte $00
|
||||
.byte $00
|
||||
.byte $00
|
||||
|
||||
; load_cart / outside_cart / s
|
||||
disk_exit_load:
|
||||
.byte 1 ; LOAD_CART
|
||||
.byte 0
|
||||
.byte 0
|
||||
.byte 0
|
||||
.byte 0
|
||||
|
||||
disk_exit_level:
|
||||
.byte $00 ; OUTSIDE_CART
|
||||
.byte $00
|
||||
.byte $00
|
||||
.byte $00
|
||||
|
||||
disk_exit_direction:
|
||||
.byte DIRECTION_S ; CART
|
||||
.byte $00
|
||||
.byte $00
|
||||
.byte $00
|
@@ -1,35 +0,0 @@
|
||||
load_address_array:
|
||||
.byte $40,$40,$40,$40 ; TITLE, MAGLEV, OUTSIDE
|
||||
|
||||
track_array:
|
||||
.byte 1, 2, 9,17 ; TITLE, MAGLEV, OUTSIDE
|
||||
|
||||
sector_array:
|
||||
.byte 8, 0, 0, 0 ; TITLE, MAGLEV, OUTSIDE
|
||||
|
||||
length_array:
|
||||
.byte 16, 96,96, 64 ; TITLE, MAGLEV, OUTSIDE
|
||||
|
||||
disk_exit_disk: ; note: BCD (yes I'm lazy)
|
||||
.byte $43 ; CART (DISK43)
|
||||
|
||||
disk_exit_dni_h:
|
||||
.byte $01
|
||||
|
||||
disk_exit_dni_l:
|
||||
.byte $24
|
||||
|
||||
; load_cart / outside_cart / s
|
||||
disk_exit_load:
|
||||
.byte 1 ; LOAD_CART
|
||||
|
||||
disk_exit_level:
|
||||
.byte $00 ; OUTSIDE_CART
|
||||
|
||||
disk_exit_direction:
|
||||
.byte DIRECTION_S ; CART
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -6,9 +6,13 @@ PNG_TO_HGR = ../../../../utils/hgr-utils/png2hgr
|
||||
all: outside_graphics.inc
|
||||
|
||||
outside_graphics.inc: \
|
||||
outside_w.hgr.zx02 outside_n.hgr.zx02
|
||||
outside_w.hgr.zx02 outside_n.hgr.zx02 \
|
||||
out_path_e.hgr.zx02 out_path_w.hgr.zx02
|
||||
echo "outside_w_zx02: .incbin \"outside_w.hgr.zx02\"" > outside_graphics.inc
|
||||
echo "outside_n_zx02: .incbin \"outside_n.hgr.zx02\"" >> outside_graphics.inc
|
||||
echo "out_path_e_zx02: .incbin \"out_path_e.hgr.zx02\"" >> outside_graphics.inc
|
||||
echo "out_path_w_zx02: .incbin \"out_path_w.hgr.zx02\"" >> outside_graphics.inc
|
||||
|
||||
|
||||
####
|
||||
|
||||
|
BIN
games/riven_hgr/disk40_files/graphics_outside/out_path_e.png
Normal file
BIN
games/riven_hgr/disk40_files/graphics_outside/out_path_e.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.2 KiB |
BIN
games/riven_hgr/disk40_files/graphics_outside/out_path_w.png
Normal file
BIN
games/riven_hgr/disk40_files/graphics_outside/out_path_w.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.4 KiB |
@@ -3,7 +3,15 @@ include ../../../Makefile.inc
|
||||
LINKER_SCRIPTS = ../../../linker_scripts/
|
||||
|
||||
|
||||
all: LEVEL_CART
|
||||
all: DISK43 LEVEL_CART
|
||||
|
||||
####
|
||||
|
||||
DISK43: disk43.o
|
||||
ld65 -o DISK43 disk43.o -C $(LINKER_SCRIPTS)/apple2_4000.inc
|
||||
|
||||
disk43.o: disk43.s ../zp.inc
|
||||
ca65 -o disk43.o disk43.s -l disk43.lst
|
||||
|
||||
####
|
||||
|
||||
|
34
games/riven_hgr/disk43_files/disk43.s
Normal file
34
games/riven_hgr/disk43_files/disk43.s
Normal file
@@ -0,0 +1,34 @@
|
||||
.include "../zp.inc"
|
||||
|
||||
which_disk:
|
||||
.byte $43 ; BCD
|
||||
|
||||
|
||||
load_address_array:
|
||||
.byte $40,$40,$40,$40 ; TITLE, CART
|
||||
.byte $00,$00,$00,$00
|
||||
|
||||
track_array:
|
||||
.byte 1, 2, 9,17 ; TITLE, CART
|
||||
.byte 0,0,0,0
|
||||
|
||||
sector_array:
|
||||
.byte 8, 0, 0, 0 ; TITLE, CART
|
||||
.byte 0,0,0,0
|
||||
|
||||
length_array:
|
||||
.byte 16, 96,123, 64 ; TITLE, CART
|
||||
.byte 0,0,0,0
|
||||
|
||||
disk_exit_disk: ; note: BCD (yes I'm lazy)
|
||||
.byte 0,0,0,0
|
||||
disk_exit_dni_h:
|
||||
.byte 0,0,0,0
|
||||
disk_exit_dni_l:
|
||||
.byte 0,0,0,0
|
||||
disk_exit_load:
|
||||
.byte 0,0,0,0
|
||||
disk_exit_level:
|
||||
.byte 0,0,0,0
|
||||
disk_exit_direction:
|
||||
.byte 0,0,0,0
|
@@ -1,19 +0,0 @@
|
||||
load_address_array:
|
||||
.byte $40,$40,$40,$40 ; TITLE, CART
|
||||
|
||||
track_array:
|
||||
.byte 1, 2, 9,17 ; TITLE, CART
|
||||
|
||||
sector_array:
|
||||
.byte 8, 0, 0, 0 ; TITLE, CART
|
||||
|
||||
length_array:
|
||||
.byte 16, 96,123, 64 ; TITLE, CART
|
||||
|
||||
disk_exit_disk: ; note: BCD (yes I'm lazy)
|
||||
disk_exit_dni_h:
|
||||
disk_exit_dni_l:
|
||||
disk_exit_load:
|
||||
disk_exit_level:
|
||||
disk_exit_direction:
|
||||
|
@@ -5,6 +5,22 @@
|
||||
; This particular version only supports using a single disk drive
|
||||
; (I have other versions that can look for disks across two drives)
|
||||
|
||||
; it also loads the QLOAD paramaters from disk separately
|
||||
|
||||
QLOAD_TABLE = $1200
|
||||
QLOAD_DISK = $1200
|
||||
LOAD_ADDRESS_ARRAY = QLOAD_TABLE+1
|
||||
TRACK_ARRAY = QLOAD_TABLE+9
|
||||
SECTOR_ARRAY = QLOAD_TABLE+17
|
||||
LENGTH_ARRAY = QLOAD_TABLE+25
|
||||
DISK_EXIT_DISK = QLOAD_TABLE+33
|
||||
DISK_EXIT_DNI_H = QLOAD_TABLE+37
|
||||
DISK_EXIT_DNI_L = QLOAD_TABLE+41
|
||||
DISK_EXIT_LOAD = QLOAD_TABLE+45
|
||||
DISK_EXIT_LEVEL = QLOAD_TABLE+49
|
||||
DISK_EXIT_DIRECTION = QLOAD_TABLE+53
|
||||
|
||||
|
||||
.include "zp.inc"
|
||||
|
||||
.include "hardware.inc"
|
||||
@@ -13,18 +29,18 @@
|
||||
|
||||
.include "qboot.inc"
|
||||
|
||||
.if DISK=01
|
||||
.include "disk01_files/disk01_defines.inc"
|
||||
.endif
|
||||
.if DISK=39
|
||||
.include "disk39_files/disk39_defines.inc"
|
||||
.endif
|
||||
.if DISK=40
|
||||
.include "disk40_files/disk40_defines.inc"
|
||||
.endif
|
||||
.if DISK=43
|
||||
.include "disk43_files/disk43_defines.inc"
|
||||
.endif
|
||||
;.if DISK=01
|
||||
;.include "disk01_files/disk01_defines.inc"
|
||||
;.endif
|
||||
;.if DISK=39
|
||||
;.include "disk39_files/disk39_defines.inc"
|
||||
;.endif
|
||||
;.if DISK=40
|
||||
;.include "disk40_files/disk40_defines.inc"
|
||||
;.endif
|
||||
;.if DISK=43
|
||||
;.include "disk43_files/disk43_defines.inc"
|
||||
;.endif
|
||||
|
||||
|
||||
qload_start:
|
||||
@@ -36,13 +52,18 @@ qload_start:
|
||||
; jsr popwr_init
|
||||
|
||||
; first time entry
|
||||
; start by loading the title screen
|
||||
; also set value indicating this is a warm boot, not disk change
|
||||
|
||||
lda #1
|
||||
sta NEW_GAME
|
||||
|
||||
lda #LOAD_TITLE ; load title
|
||||
; load the QLOAD offsets file to $1200
|
||||
|
||||
jsr load_qload_offsets
|
||||
|
||||
lda QLOAD_DISK ; get disk number (BCD)
|
||||
sta CURRENT_DISK
|
||||
|
||||
lda #0 ; load title, always 0th
|
||||
sta WHICH_LOAD
|
||||
|
||||
lda #1
|
||||
@@ -73,16 +94,17 @@ main_game_loop:
|
||||
load_file:
|
||||
ldx WHICH_LOAD
|
||||
|
||||
lda load_address_array,X
|
||||
|
||||
lda LOAD_ADDRESS_ARRAY,X
|
||||
sta load_address
|
||||
|
||||
lda track_array,X
|
||||
lda TRACK_ARRAY,X
|
||||
sta load_track
|
||||
|
||||
lda sector_array,X
|
||||
lda SECTOR_ARRAY,X
|
||||
sta load_sector
|
||||
|
||||
lda length_array,X
|
||||
lda LENGTH_ARRAY,X
|
||||
sta load_length
|
||||
|
||||
jsr load_new
|
||||
@@ -104,12 +126,14 @@ change_disk:
|
||||
tax
|
||||
|
||||
; set up locations
|
||||
lda DISK_EXIT_DISK,X
|
||||
sta NEW_DISK
|
||||
|
||||
lda disk_exit_load,X
|
||||
lda DISK_EXIT_LOAD,X
|
||||
sta WHICH_LOAD
|
||||
lda disk_exit_level,X
|
||||
lda DISK_EXIT_LEVEL,X
|
||||
sta LOCATION
|
||||
lda disk_exit_direction,X
|
||||
lda DISK_EXIT_DIRECTION,X
|
||||
sta DIRECTION
|
||||
|
||||
; see if disk we want is in drive
|
||||
@@ -138,7 +162,7 @@ change_disk:
|
||||
|
||||
ldy #21
|
||||
|
||||
lda disk_exit_disk,X
|
||||
lda NEW_DISK
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
@@ -149,7 +173,7 @@ change_disk:
|
||||
|
||||
iny
|
||||
|
||||
lda disk_exit_disk,X
|
||||
lda NEW_DISK
|
||||
and #$f
|
||||
clc
|
||||
adc #$30
|
||||
@@ -163,71 +187,48 @@ fnf_keypress:
|
||||
bpl fnf_keypress
|
||||
bit KEYRESET
|
||||
|
||||
;==============================================
|
||||
; actually verify proper disk is there
|
||||
; read T0:S0 and verify proper disk
|
||||
|
||||
;==========================
|
||||
; load QLOAD table
|
||||
; check if disk matches
|
||||
verify_disk:
|
||||
.if 0
|
||||
lda WHICH_LOAD
|
||||
pha
|
||||
|
||||
ldx #LOAD_FIRST_SECTOR ; load track 0 sector 0
|
||||
stx WHICH_LOAD
|
||||
jsr load_qload_offsets
|
||||
|
||||
jsr load_file_no_diskcheck
|
||||
lda QLOAD_TABLE
|
||||
cmp NEW_DISK
|
||||
bne fnf_keypress
|
||||
|
||||
pla
|
||||
sta WHICH_LOAD
|
||||
tax
|
||||
|
||||
; first sector now in $BC00
|
||||
; offset 5B
|
||||
; disk1 = $12
|
||||
; disk2 = $32 ('2')
|
||||
; disk3 = $33 ('3')
|
||||
|
||||
lda $BC5B
|
||||
cmp #$12
|
||||
beq is_disk1
|
||||
cmp #$32
|
||||
beq is_disk2
|
||||
cmp #$33
|
||||
beq is_disk3
|
||||
bne change_disk ; unknown disk
|
||||
|
||||
is_disk1:
|
||||
lda #1
|
||||
bne disk_compare ; bra
|
||||
|
||||
is_disk2:
|
||||
lda #2
|
||||
bne disk_compare ; bra
|
||||
|
||||
is_disk3:
|
||||
lda #3
|
||||
|
||||
disk_compare:
|
||||
cmp which_disk_array,X
|
||||
bne change_disk ; disk mismatch
|
||||
.endif
|
||||
;==============================================
|
||||
; all good, retry original load
|
||||
; all good, continue
|
||||
update_disk:
|
||||
|
||||
; ldx WHICH_LOAD
|
||||
; lda disk_edit_disk,X
|
||||
; sta CURRENT_DISK
|
||||
|
||||
; ldx CURRENT_DRIVE
|
||||
; sta DRIVE1_DISK-1,X ; indexed from 1
|
||||
|
||||
jmp load_file
|
||||
jmp main_game_loop
|
||||
|
||||
|
||||
insert_disk_string:
|
||||
.byte 9,20,"PLEASE INSERT DISK 01.",0 ; 21+22 location of disk number
|
||||
.byte 11,21,"THEN PRESS ANY KEY",0
|
||||
|
||||
|
||||
load_qload_offsets:
|
||||
lda #$12
|
||||
sta load_address
|
||||
|
||||
lda #$0
|
||||
sta load_track
|
||||
|
||||
lda #$8
|
||||
sta load_sector
|
||||
|
||||
lda #$1
|
||||
sta load_length
|
||||
|
||||
jmp load_new
|
||||
|
||||
|
||||
; common includes used by everyone
|
||||
|
||||
.include "zx02_optim.s"
|
||||
@@ -241,21 +242,21 @@ insert_disk_string:
|
||||
.include "gr_offsets.s"
|
||||
|
||||
|
||||
.if DISK=01
|
||||
.include "disk01_files/disk01_qload.inc"
|
||||
.endif
|
||||
;.if DISK=01
|
||||
;.include "disk01_files/disk01_qload.inc"
|
||||
;.endif
|
||||
|
||||
.if DISK=39
|
||||
.include "disk39_files/disk39_qload.inc"
|
||||
.endif
|
||||
;.if DISK=39
|
||||
;.include "disk39_files/disk39_qload.inc"
|
||||
;.endif
|
||||
|
||||
.if DISK=40
|
||||
.include "disk40_files/disk40_qload.inc"
|
||||
.endif
|
||||
;.if DISK=40
|
||||
;.include "disk40_files/disk40_qload.inc"
|
||||
;.endif
|
||||
|
||||
.if DISK=43
|
||||
.include "disk43_files/disk43_qload.inc"
|
||||
.endif
|
||||
;.if DISK=43
|
||||
;.include "disk43_files/disk43_qload.inc"
|
||||
;.endif
|
||||
|
||||
qload_end:
|
||||
|
||||
|
@@ -18,7 +18,7 @@ DRIVE1_DISK = $0B
|
||||
DRIVE2_DISK = $0C
|
||||
DRIVE1_TRACK = $0D
|
||||
DRIVE2_TRACK = $0E
|
||||
|
||||
NEW_DISK = $0F
|
||||
|
||||
|
||||
;; Zero page monitor routines addresses
|
||||
@@ -45,7 +45,6 @@ SEEDH = $4f
|
||||
XMAX = $50
|
||||
|
||||
|
||||
; note 70-7f used by disk code (?) do we need to preserve?
|
||||
|
||||
; We have to save/restore the following values
|
||||
; when loading/storing from disk
|
||||
|
Reference in New Issue
Block a user