mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-09-13 12:56:30 +00:00
ootw: c5: add bare-bones level5
This commit is contained in:
parent
b0981bb2c4
commit
038a7fc033
@ -7,7 +7,7 @@ PNG2LZ4 = ../gr-utils/png2lz4
|
|||||||
|
|
||||||
all: ootw.dsk
|
all: ootw.dsk
|
||||||
|
|
||||||
ootw.dsk: HELLO LOADER INTRO OOTW_C1 OOTW_C2 OOTW_C3 OOTW_C4
|
ootw.dsk: HELLO LOADER INTRO OOTW_C1 OOTW_C2 OOTW_C3 OOTW_C5
|
||||||
cp empty.dsk ootw.dsk
|
cp empty.dsk ootw.dsk
|
||||||
$(DOS33) -y ootw.dsk SAVE A HELLO
|
$(DOS33) -y ootw.dsk SAVE A HELLO
|
||||||
$(DOS33) -y ootw.dsk BSAVE -a 0x1400 LOADER
|
$(DOS33) -y ootw.dsk BSAVE -a 0x1400 LOADER
|
||||||
@ -16,6 +16,7 @@ ootw.dsk: HELLO LOADER INTRO OOTW_C1 OOTW_C2 OOTW_C3 OOTW_C4
|
|||||||
$(DOS33) -y ootw.dsk BSAVE -a 0x1700 OOTW_C2
|
$(DOS33) -y ootw.dsk BSAVE -a 0x1700 OOTW_C2
|
||||||
$(DOS33) -y ootw.dsk BSAVE -a 0x1700 OOTW_C3
|
$(DOS33) -y ootw.dsk BSAVE -a 0x1700 OOTW_C3
|
||||||
$(DOS33) -y ootw.dsk BSAVE -a 0x1700 OOTW_C4
|
$(DOS33) -y ootw.dsk BSAVE -a 0x1700 OOTW_C4
|
||||||
|
$(DOS33) -y ootw.dsk BSAVE -a 0x1700 OOTW_C5
|
||||||
# $(DOS33) -y ootw.dsk BSAVE -a 0x1700 AUDIO_TEST
|
# $(DOS33) -y ootw.dsk BSAVE -a 0x1700 AUDIO_TEST
|
||||||
# $(DOS33) -y ootw.dsk BSAVE -a 0x2000 COMPRESS-TEST
|
# $(DOS33) -y ootw.dsk BSAVE -a 0x2000 COMPRESS-TEST
|
||||||
|
|
||||||
@ -99,6 +100,20 @@ ootw_c4.o: ootw_c4.s \
|
|||||||
ootw_graphics/l4city/ootw_c4_city.inc
|
ootw_graphics/l4city/ootw_c4_city.inc
|
||||||
ca65 -o ootw_c4.o ootw_c4.s -l ootw_c4.lst
|
ca65 -o ootw_c4.o ootw_c4.s -l ootw_c4.lst
|
||||||
|
|
||||||
|
###
|
||||||
|
|
||||||
|
OOTW_C5: ootw_c5.o
|
||||||
|
ld65 -o OOTW_C5 ootw_c5.o -C ../linker_scripts/apple2_1700.inc
|
||||||
|
|
||||||
|
ootw_c5.o: ootw_c5.s \
|
||||||
|
gr_copy.s gr_copy_offset.s gr_fast_clear.s gr_pageflip.s gr_unrle.s \
|
||||||
|
gr_putsprite.s gr_putsprite_flipped.s gr_putsprite_crop.s \
|
||||||
|
keyboard.s gr_run_sequence.s physicist.s ootw_c5_cave.s \
|
||||||
|
door.s \
|
||||||
|
ootw_graphics/sprites/physicist.inc \
|
||||||
|
ootw_graphics/l5cave/ootw_c5_cave.inc
|
||||||
|
ca65 -o ootw_c5.o ootw_c5.s -l ootw_c5.lst
|
||||||
|
|
||||||
|
|
||||||
####
|
####
|
||||||
|
|
||||||
|
104
ootw/ootw_c5.s
Normal file
104
ootw/ootw_c5.s
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
; Ootw for Apple II Lores
|
||||||
|
; Checkpoint5 (accidentally in a coal mine it was found)
|
||||||
|
|
||||||
|
; by Vince "Deater" Weaver <vince@deater.net>
|
||||||
|
|
||||||
|
.include "zp.inc"
|
||||||
|
.include "hardware.inc"
|
||||||
|
|
||||||
|
|
||||||
|
ootw_c5:
|
||||||
|
|
||||||
|
; Initialize some variables
|
||||||
|
|
||||||
|
ootw_c5_restart:
|
||||||
|
|
||||||
|
jsr ootw_cave_init
|
||||||
|
|
||||||
|
;=========================
|
||||||
|
; c5_new_cave
|
||||||
|
;=========================
|
||||||
|
; enter new cave on level5
|
||||||
|
|
||||||
|
c5_new_cave:
|
||||||
|
lda #0
|
||||||
|
sta GAME_OVER
|
||||||
|
|
||||||
|
jsr ootw_cave
|
||||||
|
|
||||||
|
c5_check_done:
|
||||||
|
lda GAME_OVER
|
||||||
|
cmp #$ff
|
||||||
|
beq quit_level
|
||||||
|
|
||||||
|
; only exit if done level
|
||||||
|
; FIXME: or quit pressed?
|
||||||
|
|
||||||
|
lda WHICH_JAIL
|
||||||
|
cmp #11
|
||||||
|
bne c5_new_cave
|
||||||
|
|
||||||
|
|
||||||
|
;===========================
|
||||||
|
; quit_level
|
||||||
|
;===========================
|
||||||
|
|
||||||
|
quit_level:
|
||||||
|
jsr TEXT
|
||||||
|
jsr HOME
|
||||||
|
lda KEYRESET ; clear strobe
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta DRAW_PAGE
|
||||||
|
|
||||||
|
lda #<end_message
|
||||||
|
sta OUTL
|
||||||
|
lda #>end_message
|
||||||
|
sta OUTH
|
||||||
|
|
||||||
|
jsr move_and_print
|
||||||
|
jsr move_and_print
|
||||||
|
|
||||||
|
wait_loop:
|
||||||
|
lda KEYPRESS
|
||||||
|
bpl wait_loop
|
||||||
|
|
||||||
|
lda KEYRESET ; clear strobe
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta GAME_OVER
|
||||||
|
|
||||||
|
jmp ootw_c5_restart
|
||||||
|
|
||||||
|
|
||||||
|
end_message:
|
||||||
|
.byte 8,10,"PRESS RETURN TO CONTINUE",0
|
||||||
|
.byte 11,20,"ACCESS CODE: CAVE",0
|
||||||
|
|
||||||
|
.include "ootw_c5_cave.s"
|
||||||
|
.include "text_print.s"
|
||||||
|
.include "gr_pageflip.s"
|
||||||
|
.include "gr_unrle.s"
|
||||||
|
.include "gr_fast_clear.s"
|
||||||
|
.include "gr_copy.s"
|
||||||
|
.include "gr_copy_offset.s"
|
||||||
|
.include "gr_putsprite.s"
|
||||||
|
.include "gr_putsprite_flipped.s"
|
||||||
|
.include "gr_putsprite_crop.s"
|
||||||
|
.include "gr_offsets.s"
|
||||||
|
.include "gr_offsets_hl.s"
|
||||||
|
.include "random16.s"
|
||||||
|
.include "keyboard.s"
|
||||||
|
|
||||||
|
.include "physicist.s"
|
||||||
|
.include "alien.s"
|
||||||
|
|
||||||
|
.include "door.s"
|
||||||
|
|
||||||
|
; room backgrounds
|
||||||
|
.include "ootw_graphics/l5cave/ootw_c5_cave.inc"
|
||||||
|
; sprites
|
||||||
|
.include "ootw_graphics/sprites/physicist.inc"
|
||||||
|
.include "ootw_graphics/sprites/alien.inc"
|
||||||
|
|
||||||
|
|
324
ootw/ootw_c5_cave.s
Normal file
324
ootw/ootw_c5_cave.s
Normal file
@ -0,0 +1,324 @@
|
|||||||
|
; Ootw Checkpoint5 -- Running around the Caves
|
||||||
|
|
||||||
|
|
||||||
|
; call once before entering cave for first time
|
||||||
|
ootw_cave_init:
|
||||||
|
lda #0
|
||||||
|
sta PHYSICIST_STATE
|
||||||
|
sta WHICH_CAVE
|
||||||
|
|
||||||
|
lda #1
|
||||||
|
sta HAVE_GUN
|
||||||
|
sta DIRECTION ; right
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta PHYSICIST_X
|
||||||
|
lda #20
|
||||||
|
sta PHYSICIST_Y
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
;===========================
|
||||||
|
; enter new room in cave
|
||||||
|
;===========================
|
||||||
|
|
||||||
|
ootw_cave:
|
||||||
|
|
||||||
|
;==============================
|
||||||
|
; each room init
|
||||||
|
|
||||||
|
; lda #0
|
||||||
|
; sta ON_ELEVATOR
|
||||||
|
; sta TELEPORTING
|
||||||
|
|
||||||
|
;==============================
|
||||||
|
; setup per-room variables
|
||||||
|
|
||||||
|
lda WHICH_CAVE
|
||||||
|
bne cave1
|
||||||
|
|
||||||
|
; Room0 entrance
|
||||||
|
cave0:
|
||||||
|
lda #(0+128)
|
||||||
|
sta LEFT_LIMIT
|
||||||
|
lda #(38+128)
|
||||||
|
sta RIGHT_LIMIT
|
||||||
|
|
||||||
|
; set right exit
|
||||||
|
lda #1
|
||||||
|
sta cer_smc+1
|
||||||
|
|
||||||
|
; set left exit
|
||||||
|
lda #0
|
||||||
|
sta cel_smc+1
|
||||||
|
|
||||||
|
lda #14
|
||||||
|
sta PHYSICIST_Y
|
||||||
|
|
||||||
|
; load background
|
||||||
|
lda #>(entrance_rle)
|
||||||
|
sta GBASH
|
||||||
|
lda #<(entrance_rle)
|
||||||
|
|
||||||
|
jmp cave_setup_done
|
||||||
|
|
||||||
|
; hallway with weird ceiling
|
||||||
|
cave1:
|
||||||
|
; cmp #1
|
||||||
|
; bne cave2
|
||||||
|
|
||||||
|
; lda #(-4+128)
|
||||||
|
; sta LEFT_LIMIT
|
||||||
|
; lda #(39+128)
|
||||||
|
; sta RIGHT_LIMIT
|
||||||
|
|
||||||
|
; set right exit
|
||||||
|
; lda #2
|
||||||
|
; sta cer_smc+1
|
||||||
|
|
||||||
|
; set left exit
|
||||||
|
; lda #0
|
||||||
|
; sta cel_smc+1
|
||||||
|
|
||||||
|
; lda #8
|
||||||
|
; sta PHYSICIST_Y
|
||||||
|
|
||||||
|
; load background
|
||||||
|
; lda #>(hallway_rle)
|
||||||
|
; sta GBASH
|
||||||
|
; lda #<(hallway_rle)
|
||||||
|
|
||||||
|
jmp cave_setup_done
|
||||||
|
|
||||||
|
cave_setup_done:
|
||||||
|
|
||||||
|
sta GBASL
|
||||||
|
lda #$c ; load to page $c00
|
||||||
|
jsr load_rle_gr ; tail call
|
||||||
|
|
||||||
|
|
||||||
|
ootw_cave_already_set:
|
||||||
|
;===========================
|
||||||
|
; Enable graphics
|
||||||
|
|
||||||
|
bit LORES
|
||||||
|
bit SET_GR
|
||||||
|
bit FULLGR
|
||||||
|
|
||||||
|
;===========================
|
||||||
|
; Setup pages (is this necessary?)
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta DRAW_PAGE
|
||||||
|
lda #1
|
||||||
|
sta DISP_PAGE
|
||||||
|
|
||||||
|
;=================================
|
||||||
|
; setup vars
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta GAIT
|
||||||
|
sta GAME_OVER
|
||||||
|
|
||||||
|
;============================
|
||||||
|
;============================
|
||||||
|
; Cave Loop
|
||||||
|
;============================
|
||||||
|
;============================
|
||||||
|
cave_loop:
|
||||||
|
|
||||||
|
;================================
|
||||||
|
; copy background to current page
|
||||||
|
|
||||||
|
jsr gr_copy_to_current
|
||||||
|
|
||||||
|
;==================================
|
||||||
|
; draw background action
|
||||||
|
|
||||||
|
lda WHICH_CAVE
|
||||||
|
|
||||||
|
bg_cave0:
|
||||||
|
|
||||||
|
; cmp #0
|
||||||
|
; bne c4_no_bg_action
|
||||||
|
|
||||||
|
; lda FRAMEL
|
||||||
|
; and #$c
|
||||||
|
; lsr
|
||||||
|
; tay
|
||||||
|
|
||||||
|
|
||||||
|
; lda #11
|
||||||
|
; sta XPOS
|
||||||
|
; lda #24
|
||||||
|
; sta YPOS
|
||||||
|
|
||||||
|
; lda recharge_bg_progression,Y
|
||||||
|
; sta INL
|
||||||
|
; lda recharge_bg_progression+1,Y
|
||||||
|
; sta INH
|
||||||
|
|
||||||
|
; jsr put_sprite
|
||||||
|
|
||||||
|
c5_no_bg_action:
|
||||||
|
|
||||||
|
;===============================
|
||||||
|
; check keyboard
|
||||||
|
|
||||||
|
jsr handle_keypress
|
||||||
|
|
||||||
|
;===============================
|
||||||
|
; move physicist
|
||||||
|
;===============================
|
||||||
|
|
||||||
|
jsr move_physicist
|
||||||
|
|
||||||
|
;===============================
|
||||||
|
; move friend
|
||||||
|
;===============================
|
||||||
|
|
||||||
|
; jsr move_friend
|
||||||
|
|
||||||
|
|
||||||
|
;===============
|
||||||
|
; check room limits
|
||||||
|
|
||||||
|
jsr check_screen_limit
|
||||||
|
|
||||||
|
|
||||||
|
;===============
|
||||||
|
; draw physicist
|
||||||
|
|
||||||
|
jsr draw_physicist
|
||||||
|
|
||||||
|
;===============
|
||||||
|
; draw friend
|
||||||
|
|
||||||
|
; jsr draw_friend
|
||||||
|
|
||||||
|
c5_done_draw_friend:
|
||||||
|
|
||||||
|
|
||||||
|
;========================
|
||||||
|
; draw foreground action
|
||||||
|
|
||||||
|
; lda WHICH_CAVE
|
||||||
|
; cmp #2
|
||||||
|
; bne c4_no_fg_action
|
||||||
|
|
||||||
|
;c2_draw_cart:
|
||||||
|
;
|
||||||
|
; lda CART_X
|
||||||
|
; sta XPOS
|
||||||
|
; lda #36
|
||||||
|
; sta YPOS
|
||||||
|
; lda #<cart_sprite
|
||||||
|
; sta INL
|
||||||
|
; lda #>cart_sprite
|
||||||
|
; sta INH
|
||||||
|
; jsr put_sprite_crop
|
||||||
|
; jmp c2_no_fg_action
|
||||||
|
|
||||||
|
c5_no_fg_action:
|
||||||
|
|
||||||
|
;====================
|
||||||
|
; activate fg objects
|
||||||
|
;====================
|
||||||
|
;c2_fg_check_jail1:
|
||||||
|
; lda WHICH_JAIL
|
||||||
|
; cmp #1
|
||||||
|
; bne c2_fg_check_jail2
|
||||||
|
;
|
||||||
|
; lda CART_OUT
|
||||||
|
; bne c2_fg_check_jail2
|
||||||
|
;
|
||||||
|
; inc CART_OUT
|
||||||
|
|
||||||
|
|
||||||
|
;================
|
||||||
|
; move fg objects
|
||||||
|
;================
|
||||||
|
c4_move_fg_objects:
|
||||||
|
|
||||||
|
; lda CART_OUT
|
||||||
|
; cmp #1
|
||||||
|
; bne cart_not_out
|
||||||
|
|
||||||
|
; move cart
|
||||||
|
|
||||||
|
; lda FRAMEL
|
||||||
|
; and #$3
|
||||||
|
; bne cart_not_out
|
||||||
|
;
|
||||||
|
; inc CART_X
|
||||||
|
; lda CART_X
|
||||||
|
; cmp #39
|
||||||
|
; bne cart_not_out
|
||||||
|
; inc CART_OUT
|
||||||
|
|
||||||
|
|
||||||
|
;===============
|
||||||
|
; page flip
|
||||||
|
|
||||||
|
jsr page_flip
|
||||||
|
|
||||||
|
;================
|
||||||
|
; inc frame count
|
||||||
|
|
||||||
|
inc FRAMEL
|
||||||
|
bne cave_frame_no_oflo
|
||||||
|
inc FRAMEH
|
||||||
|
cave_frame_no_oflo:
|
||||||
|
|
||||||
|
;==========================
|
||||||
|
; check if done this level
|
||||||
|
;==========================
|
||||||
|
|
||||||
|
lda GAME_OVER
|
||||||
|
beq still_in_cave
|
||||||
|
|
||||||
|
cmp #$ff ; if $ff, we died
|
||||||
|
beq done_cave
|
||||||
|
|
||||||
|
;===============================
|
||||||
|
; check if exited room to right
|
||||||
|
cmp #1
|
||||||
|
beq cave_exit_left
|
||||||
|
|
||||||
|
;=================
|
||||||
|
; exit to right
|
||||||
|
|
||||||
|
cave_right_yes_exit:
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta PHYSICIST_X
|
||||||
|
cer_smc:
|
||||||
|
lda #$0 ; smc+1 = exit location
|
||||||
|
sta WHICH_CAVE
|
||||||
|
jmp done_cave
|
||||||
|
|
||||||
|
;=====================
|
||||||
|
; exit to left
|
||||||
|
|
||||||
|
cave_exit_left:
|
||||||
|
|
||||||
|
lda #37
|
||||||
|
sta PHYSICIST_X
|
||||||
|
cel_smc:
|
||||||
|
lda #0 ; smc+1
|
||||||
|
sta WHICH_CAVE
|
||||||
|
jmp done_cave
|
||||||
|
|
||||||
|
; loop forever
|
||||||
|
still_in_cave:
|
||||||
|
lda #0
|
||||||
|
sta GAME_OVER
|
||||||
|
|
||||||
|
jmp cave_loop
|
||||||
|
|
||||||
|
done_cave:
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
|
23
ootw/ootw_graphics/l5cave/ootw_c5_cave.inc
Normal file
23
ootw/ootw_graphics/l5cave/ootw_c5_cave.inc
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
entrance_rle: .byte $28 ; ysize=48
|
||||||
|
.byte $A0,$17,$00, $20, $A0,$26,$00, $02, $A6,$00, $02, $20,$20
|
||||||
|
.byte $AA,$00, $20, $A0,$12,$00, $22, $AA,$00, $06,$06, $A3,$20
|
||||||
|
.byte $A3,$00, $20, $00, $22, $A0,$11,$00, $22, $A0,$13,$00
|
||||||
|
.byte $22, $00, $22, $20, $00,$00, $A3,$20, $26
|
||||||
|
.byte $06, $02,$02, $20,$20, $A3,$00, $20, $02, $A0,$14,$00
|
||||||
|
.byte $22, $00, $02, $22, $AB,$00, $A4,$02, $A0,$15,$00
|
||||||
|
.byte $22, $00,$00, $02, $A0,$24,$00, $22, $A0,$20,$00, $02,$02
|
||||||
|
.byte $66, $60, $A4,$00, $22, $A0,$21,$00, $20, $22
|
||||||
|
.byte $A4,$00, $22, $AA,$00, $60, $A0,$16,$00, $62, $60
|
||||||
|
.byte $A4,$00, $22, $AB,$00, $66, $A0,$11,$00, $20, $22
|
||||||
|
.byte $00,$00, $06, $66, $60, $A3,$00, $22, $A9,$00
|
||||||
|
.byte $20,$20, $06, $A0,$15,$00, $22, $02, $06, $A3,$00
|
||||||
|
.byte $22, $AB,$00, $02, $22, $A0,$14,$00, $02, $60
|
||||||
|
.byte $62, $60,$60, $00,$00, $02, $20, $AA,$00, $22
|
||||||
|
.byte $AA,$00, $A3,$20, $22, $02,$02, $06, $00,$00, $02
|
||||||
|
.byte $A7,$00, $20, $02, $00,$00, $A5,$20, $00,$00, $02
|
||||||
|
.byte $20, $A4,$00, $A4,$26, $06, $02,$02, $A0,$10,$00, $02
|
||||||
|
.byte $00, $A3,$02, $A7,$00, $22, $A0,$27,$00, $02, $20
|
||||||
|
.byte $A0,$27,$00, $22, $A0,$27,$00, $22, $A0,$27,$00, $22, $A0,$27,$00
|
||||||
|
.byte $22, $A0,$27,$00, $62, $A0,$27,$00, $66, $A0,$27,$00, $66
|
||||||
|
.byte $A0,$18,$00
|
||||||
|
.byte $A1
|
@ -133,7 +133,7 @@ EXIT_COUNT = $E2 ; C1 pool
|
|||||||
WHICH_SLUG = $E2 ; C1
|
WHICH_SLUG = $E2 ; C1
|
||||||
TELEPORTING = $E2 ; C2 jail
|
TELEPORTING = $E2 ; C2 jail
|
||||||
|
|
||||||
WHICH_CAVE = $E3 ; C1
|
WHICH_CAVE = $E3 ; C1,C5
|
||||||
WHICH_JAIL = $E3 ; C2
|
WHICH_JAIL = $E3 ; C2
|
||||||
WHICH_ROOM = $E3 ; C4
|
WHICH_ROOM = $E3 ; C4
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user