From 9bdfebdd306d9770bf661adc79a8a78c81cf5c11 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Mon, 29 Jan 2024 00:42:56 -0500 Subject: [PATCH] trogdor: add strongbad scene --- demos/trogdor/Makefile | 18 ++++++++++--- demos/trogdor/NOTES | 9 ++----- demos/trogdor/qload.s | 16 +++++------- demos/trogdor/start.s | 13 ++++++++++ demos/trogdor/strongbad.s | 2 ++ demos/trogdor/trogdor.s | 54 ++++++++------------------------------- 6 files changed, 49 insertions(+), 63 deletions(-) create mode 100644 demos/trogdor/strongbad.s diff --git a/demos/trogdor/Makefile b/demos/trogdor/Makefile index 7e731a7a..4ff4f925 100644 --- a/demos/trogdor/Makefile +++ b/demos/trogdor/Makefile @@ -9,7 +9,7 @@ LINKER_SCRIPTS = ../../linker_scripts/ all: trogdor.dsk trogdor.dsk: QBOOT QLOAD music.inc qload.inc \ - MUSIC TROGDOR TITLE FLAMES COUNTRYSIDE + MUSIC TROGDOR TITLE FLAMES COUNTRYSIDE STRONGBAD cp $(EMPTY_DISK) trogdor.dsk $(DOS33_RAW) trogdor.dsk 0 0 QBOOT 0 1 $(DOS33_RAW) trogdor.dsk 0 2 QBOOT 1 1 @@ -17,7 +17,8 @@ trogdor.dsk: QBOOT QLOAD music.inc qload.inc \ $(DOS33_RAW) trogdor.dsk 1 0 QLOAD 0 0 $(DOS33_RAW) trogdor.dsk 4 0 MUSIC 0 0 $(DOS33_RAW) trogdor.dsk 6 0 FLAMES 0 0 - $(DOS33_RAW) trogdor.dsk 8 0 COUNTRYSIDE 0 0 + $(DOS33_RAW) trogdor.dsk 8 0 COUNTRYSIDE 0 0 + $(DOS33_RAW) trogdor.dsk 9 0 STRONGBAD 0 0 $(DOS33_RAW) trogdor.dsk 11 0 TITLE 0 0 $(DOS33_RAW) trogdor.dsk 12 0 TROGDOR 0 0 @@ -159,6 +160,16 @@ countryside.o: countryside.s \ graphics/flame_sprites.inc ca65 -o countryside.o countryside.s -l countryside.lst +#### + +STRONGBAD: strongbad.o + ld65 -o STRONGBAD strongbad.o -C $(LINKER_SCRIPTS)/apple2_c00.inc + +strongbad.o: strongbad.s \ + graphics/a2_strongbad.hgr.zx02 + ca65 -o strongbad.o strongbad.s -l strongbad.lst + + ### TITLE: title.o @@ -201,5 +212,6 @@ generate_common.o: generate_common.c clean: - rm -f *~ *.o *.lst QBOOT QLOAD MUSIC TROGDOR + rm -f *~ *.o *.lst QBOOT QLOAD \ + MUSIC TROGDOR FLAMES COUNTRYSIDE TITLE STRONGBAD rm -f qload.inc music.inc generate_common diff --git a/demos/trogdor/NOTES b/demos/trogdor/NOTES index 0c13bb1f..cea5c420 100644 --- a/demos/trogdor/NOTES +++ b/demos/trogdor/NOTES @@ -134,18 +134,13 @@ Space: $0300-$0369 = preshift table $0400-$07FF = text/lores PAGE1 $0800-$08ff = QBOOT (can be over-written) + ; need 1623 for strongbad ($657) $0900-$0BFF = text/lores PAGE2 (empty) $0C00-$0FFF = appears empty? $1000-$11FF = QBOOT_STAGE2 - $1200-$188A = QLOAD ($68A, 1676) - ($b12, 2834) - $1200-$1D12 = QLOAD - ; need 1623 for strongbad ($657) - $1C00-$1CFF = mod7_table - $1D00-$1DFF = div7_table + $1200-$1D12 = QLOAD ($b12, 2834) $1E00-$1EFF = hposn_low $1F00-$2000 = hposn_high - $2000-$3FFF = page1 (8k) $4000-$5fff = page2 (8k) $6000-$7fff = off-screen draw (8k) diff --git a/demos/trogdor/qload.s b/demos/trogdor/qload.s index 032708c7..35d242ff 100644 --- a/demos/trogdor/qload.s +++ b/demos/trogdor/qload.s @@ -164,27 +164,27 @@ error_string: which_disk_array: .byte 1,1,1,1 ; MUSIC, TROGDOR, TITLE, FLAMES - .byte 1 ; COUNTRYSIDE + .byte 1,1 ; COUNTRYSIDE, STRONGBAD load_address_array: .byte $D0,$80,$40,$E3 ; MUSIC, TROGDOR, TITLE, FLAMES - .byte $FA ; COUNTRYSIDE + .byte $FA,$09 ; COUNTRYSIDE, STRONGBAD start_address: .byte $D0,$80,$40,$E3 ; MUSIC, TROGDOR, TITLE, FLAMES - .byte $FA ; COUNTRYSIDE + .byte $FA,$09 ; COUNTRYSIDE, STRONGBAD track_array: .byte 4,12,11,6 ; MUSIC, TROGDOR, TITLE, FLAMES - .byte 8 ; COUNTRYSIDE + .byte 8, 9 ; COUNTRYSIDE, STRONGBAD sector_array: .byte 0,0,0,0 ; MUSIC, TROGDOR, TITLE, FLAMES - .byte 0 ; COUNTRYSIDE + .byte 0,0 ; COUNTRYSIDE, STRONGBAD length_array: .byte 32,64,32,24 ; MUSIC, TROGDOR, TITLE, FLAMES - .byte 5 ; COUNTRYSIDE + .byte 5, 7 ; COUNTRYSIDE, STRONGBAD PT3_ENABLE_APPLE_IIC = 1 @@ -205,12 +205,10 @@ PT3_ENABLE_APPLE_IIC = 1 .include "pt3_lib_detect_model.s" .include "pt3_lib_mockingboard_detect.s" -mod7_table = $1c00 -div7_table = $1d00 hposn_low = $1e00 hposn_high = $1f00 - .include "hgr_table.s" + .include "hgr_table.s" .include "hgr_sprite_big_mask.s" .include "horiz_scroll_simple.s" .include "horiz_scroll_skip.s" diff --git a/demos/trogdor/start.s b/demos/trogdor/start.s index 757fe8ed..b7ff24bb 100644 --- a/demos/trogdor/start.s +++ b/demos/trogdor/start.s @@ -203,6 +203,19 @@ load_countryside: jsr load_file + ;======================= + ;======================= + ; Load STRONGBAD + ;======================= + ;======================= +load_strongbad: + + ; load from disk + + lda #5 ; COUNTRYSIDE + sta WHICH_LOAD + jsr load_file + ;======================= ;======================= diff --git a/demos/trogdor/strongbad.s b/demos/trogdor/strongbad.s new file mode 100644 index 00000000..c6c5302b --- /dev/null +++ b/demos/trogdor/strongbad.s @@ -0,0 +1,2 @@ +strongbad_data: +.incbin "graphics/a2_strongbad.hgr.zx02" diff --git a/demos/trogdor/trogdor.s b/demos/trogdor/trogdor.s index 645e27a8..c9d479d6 100644 --- a/demos/trogdor/trogdor.s +++ b/demos/trogdor/trogdor.s @@ -1097,7 +1097,15 @@ done_upside_down_flame: ;====================================== ; strongbad at computer -; TODO + lda #<$900 + sta zx_src_l+1 + lda #>$900 + sta zx_src_h+1 + lda #$20 + jsr zx02_full_decomp + + jsr hgr_page_flip + finished: bit KEYRESET @@ -1121,7 +1129,7 @@ trog04_graphics: .include "wait_keypress.s" -;.include "irq_wait.s" + peasant_data_x1: @@ -1137,49 +1145,7 @@ peasant_data_sprite_x: peasant_data_sprite_y: .byte 92, 30, 91, 2, 8 -; .include "do_flames.s" -.if 0 - - ;========================================= - ; hgr_copy_right - ;========================================= - ; copy right side of $6000 to current page -hgr_copy_right: - lda #0 - sta COPY_Y1 - sta SPRITE_Y - lda #10 - sta SPRITE_X - lda #20 - sta COPY_X1 - lda #20 - sta COPY_WIDTH - lda #191 - sta COPY_Y2 - - jmp hgr_copy_part ; tail call - - - ;========================================= - ; hgr_copy_left - ;========================================= - ; copy left side of $6000 to current page -hgr_copy_left: - lda #0 - sta COPY_X1 - sta COPY_Y1 - sta SPRITE_Y - lda #10 - sta SPRITE_X - lda #20 - sta COPY_WIDTH - lda #191 - sta COPY_Y2 - - jmp hgr_copy_part ; tail call - -.endif ;========================== ; man flames