riven: clean up some of the common code

This commit is contained in:
Vince Weaver 2024-07-24 16:08:14 -04:00
parent 6f42fabb94
commit 9a88435c9d
3 changed files with 129 additions and 118 deletions

View File

@ -60,8 +60,8 @@ final movie roto procedure:
Disk00 Map (disk has 35 tracks, each 4k in size)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~$~~~~~~~
T 0 = Qboot
T 0.5 = TITLE 1823 bytes 8S = 0T8S (2048) 400B free
T 1 = QLOAD 2346 bytes 16S = 1T00S (4096) 2k free
T 0.5 = TITLE 1805 bytes 8S = 0T8S (2048) 400B free
T 1 = QLOAD 2314 bytes 16S = 1T00S (4096) 2k free
T 2 = CYAN 32459 bytes = 7T15S (32512) 0k free
T 10 = ATRUS 32493 bytes = 7T15S (32512) 0k free
T 18 = CAPTURED 16696 bytes = 5T (20480) 4k free
@ -72,19 +72,57 @@ T 31 = START 4107 bytes = 4T (16384) 12k free
Disk01 Map (disk has 35 tracks, each 4k in size)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T 0 = Qboot
T 0.5 = TITLE 1823 bytes 8S = 0T8S (2048) 400B free
T 1 = QLOAD 2393 bytes 16S= 1T0S (4096) 2k free
T 0.5 = TITLE 1805 bytes 8S = 0T8S (2048) 400B free
T 1 = QLOAD 2314 bytes 16S= 1T0S (4096) 2k free
T 2 = ARRIVAL 27040 bytes = 7T0S (28672) 1k free
T 9 = ARRIVAL2 15920 bytes = 4T0S (16384) 400B free
T 13 = TELESCOPE 19484 bytes = 6T0S (24576) 5k free
T 13 = TELESCOPE 19482 bytes = 6T0S (24576) 5k free
T 19 = ARRIVAL3 30786 bytes = 7T15S (32512) 2k free
T 27 = STEPS 29647 bytes = 7T15S (32512) 3k free
T 27 = PATH 29647 bytes = 7T15S (32512) 3k free
Disk02 Map (disk has 35 tracks, each 4k in size)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T 0 = Qboot
T 0.5 = TITLE 1805 bytes 8S = 0T8S (2048) 400B free
T 1 = QLOAD 2314 bytes 16S= 1T0S (4096) 2k free
T 2 = STEPS1 9172 bytes = 6T0S (24576) 15k free
T 9 = STEPS3 ???? bytes = 6T0S (24576) ?? free
T 16 = STEPS5 ???? bytes = 6T0S (24576) ?? free
T 22 = TOP 15658 bytes = 5T0S (20480) 5k free
Disk03 Map (disk has 35 tracks, each 4k in size)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T 0 = Qboot
T 0.5 = TITLE 1805 bytes 8S = 0T8S (2048) 400B free
T 1 = QLOAD 2314 bytes 16S= 1T0S (4096) 2k free
T 2 = STEPS1 ???? bytes = 6T0S (24576) 15k free
T 9 = STEPS3 ???? bytes = 6T0S (24576) ?? free
T 16 = OUTSIDE 9582 bytes = 6T0S (24576) ?? free
Disk04 Map (disk has 35 tracks, each 4k in size)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T 0 = Qboot
T 0.5 = TITLE 1805 bytes 8S = 0T8S (2048) 400B free
T 1 = QLOAD 2314 bytes 16S= 1T0S (4096) 2k free
T 2 = BRIDGE2 ???? bytes = 5T0S (20480) 15k free
T 7 = BRIDGE3 ???? bytes = 5T0S (20480) ?? free
T 12 = BRIDGE4 ???? bytes = 5T0S (20480) ?? free
T 17 = TUNNEL1 ???? bytes = 5T0S (20480) ?? free
T 22 = TUNNEL2 ???? bytes = 5T0S (20480) ?? free
T 27 = TUNNEL3 17217 bytes = 5T0S (20480) 3k free
Disk05 Map (disk has 35 tracks, each 4k in size)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T 0 = Qboot
T 0.5 = TITLE 1805 bytes 8S = 0T8S (2048) 400B free
T 1 = QLOAD 2314 bytes 16S= 1T0S (4096) 2k free
T 2 = CHAIR 1195 bytes = 6T0S (24576) 23k free
Disk38 Map (disk has 35 tracks, each 4k in size)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T 0 = Qboot
T 0.5 = TITLE 1823 bytes 8S = 0T8S (2048) 400B free
T 1 = QLOAD 2393 bytes 16S = 1T0S (4096) 2k free
T 0.5 = TITLE 1805 bytes 8S = 0T8S (2048) 400B free
T 1 = QLOAD 2314 bytes 16S = 1T0S (4096) 2k free
T 2 = PROJECTOR 12057 bytes = 7T0S (28672) 16k free
; NOTE: save room for creepy animation, alternate door closed code
@ -92,8 +130,8 @@ T 2 = PROJECTOR 12057 bytes = 7T0S (28672) 16k free
Disk39 Map (disk has 35 tracks, each 4k in size)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T 0 = Qboot
T 0.5 = TITLE 1823 bytes 8S = 0T8S (2048) 400B free
T 1 = QLOAD 2393 bytes 16S = 1T0S (4096) 2k free
T 0.5 = TITLE 1805 bytes 8S = 0T8S (2048) 400B free
T 1 = QLOAD 2314 bytes 16S = 1T0S (4096) 2k free
T 2 = PROJECTOR 23707 bytes 96S = 6T0S (24576) 1k free
T 8 = OUTSIDE 26029 bytes 124S = 7T15S (32512) 6k free
T 17 = MAGSTEPS 11537 bytes 64S = 4T0S (16384) 5k free
@ -104,8 +142,8 @@ T 27 = MOVIE_MAG 32184 bytes 128S = 7T15S (32512)300B free
Disk40 Map (disk has 35 tracks, each 4k in size)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T 0 = Qboot
T 0.5 = TITLE 1823 bytes 8S = 0T8S (2048) 400B free
T 1 = QLOAD 2393 bytes 8S = 0T8S (2048) 300B free
T 0.5 = TITLE 1805 bytes 8S = 0T8S (2048) 400B free
T 1 = QLOAD 2314 bytes 8S = 0T8S (2048) 300B free
T 2 = MAGLEV 30502 bytes = 8T11S (32768) 2k free
T 10 = OUTSIDE 18917 bytes = 5T (20480) 2k free
T 15 = TUNNEL 20983 bytes = 6T (24576) 4k free
@ -116,8 +154,8 @@ T 27 = MOVIE_MAG 32275 bytes 127S = 7T15S (32512)300B free
Disk41 Map (disk has 35 tracks, each 4k in size)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T 0 = Qboot
T 0.5 = TITLE 1823 bytes 8S = 0T8S (2048) 400B free
T 1 = QLOAD 2393 bytes 8S = 0T8S (2048) 300B free
T 0.5 = TITLE 1805 bytes 8S = 0T8S (2048) 400B free
T 1 = QLOAD 2314 bytes 8S = 0T8S (2048) 300B free
T 2 = TUNNEL 30669 bytes 127S= 8T (32512) 2k free
T 10 = STAIRS 25624 = 7T (28672) 3k free
T 17 = COVE 26422 = 7T (28672) 2k free
@ -127,14 +165,30 @@ T 31 = MOVIE_COVE 8299 = 3T (12288) 4k free
Disk43 Map (disk has 35 tracks, each 4k in size)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T 0 = Qboot
T 0.5 = TITLE 1823 bytes 8S = 0T8S (2048) 400B free
T 1 = QLOAD 2393 bytes 8S = 0T8S (2048) 300B free
T 0.5 = TITLE 1805 bytes 8S = 0T8S (2048) 400B free
T 1 = QLOAD 2314 bytes 8S = 0T8S (2048) 300B free
T 2 = CART 23280 bytes = 7T0S (28672) 5k free
T 9 = BRIDGE 18609 bytes = 7T0S (28672) 10k free
T 16 = LOGGED 17570 bytes = 6T0S (24576) 7k free
T 22 = LOGGED2 17584 bytes = 5T0S (20480) 3k free
T 27 = MOVIE_CART32275 bytes 128S = 8T0S (32512)500B free
Disk44 Map (disk has 35 tracks, each 4k in size)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T 0 = Qboot
T 0.5 = TITLE 1805 bytes 8S = 0T8S (2048) 400B free
T 1 = QLOAD 2314 bytes 8S = 0T8S (2048) 300B free
T 2 = FISH 4891 bytes = 7T0S (28672) 5k free
Disk50 Map (disk has 35 tracks, each 4k in size)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T 0 = Qboot
T 0.5 = TITLE 1805 bytes 8S = 0T8S (2048) 400B free
T 1 = QLOAD 2314 bytes 8S = 0T8S (2048) 300B free
T 2 = CHIPPER 12329 bytes = 7T0S (28672) 5k free
graphics notes:
in dark areas, use the shadow tool at 80 or so?

View File

@ -4,6 +4,8 @@
;==============================
handle_keypress:
.if 0
; first handle joystick
lda JOYSTICK_ENABLED
beq actually_handle_keypress
@ -61,16 +63,22 @@ js_check_down:
done_joystick:
.endif
actually_handle_keypress:
; check for keypress
lda KEYPRESS
bmi keypress
jmp no_keypress
keypress:
; adjust weird Apple II stuff
and #$7f ; clear high bit
cmp #' '
beq handle_input ; make sure not to lose space
@ -79,6 +87,10 @@ keypress:
handle_input:
;==============================
; assume pointer will be moved
; so restore background
pha ; save keypress info
jsr restore_bg_14x14 ; restore old background
@ -88,8 +100,10 @@ handle_input:
pla ; restore keypress info
check_sound:
cmp #$14 ; control-T
bne check_joystick
cmp #$13 ; control-S
bne check_left
; toggle sound
lda SOUND_STATUS
eor #SOUND_DISABLED
@ -97,30 +111,16 @@ check_sound:
jmp done_keypress
; can't be ^J as that's the same as down
check_joystick:
; cmp #$10 ; control-P
cmp #'J'
bne check_left
lda JOYSTICK_ENABLED
eor #1
sta JOYSTICK_ENABLED
jmp done_keypress
;check_load:
; cmp #$C ; control-L
; bne check_save
; jsr load_game
; jmp done_keypress
;check_save:
; cmp #$13 ; control-S
;check_joystick:
; cmp #'J'
; bne check_left
; jsr save_game
; lda JOYSTICK_ENABLED
; eor #1
; sta JOYSTICK_ENABLED
; jmp done_keypress
check_left:
cmp #'A'
beq left_pressed
@ -135,6 +135,8 @@ do_dec_cursor_x:
done_left_pressed:
jmp done_keypress ; done checking input
check_right:
cmp #'D'
beq right_pressed
@ -143,9 +145,8 @@ check_right:
right_pressed:
lda CURSOR_X ; load Xpos
cmp #38 ; if Xpos > 38 don't increment
bcc do_inc_cursor_x ; blt
; cmp #$FE
bcs done_right_pressed
; bcc do_inc_cursor_x ; blt
bcs done_right_pressed ; bge
do_inc_cursor_x:
inc CURSOR_X ; move right one 3.5 pixel column
done_right_pressed:
@ -200,6 +201,11 @@ check_return:
cmp #13
bne done_keypress
;======================================
; extra action if space/return pressed
;======================================
return_pressed:
lda IN_SPECIAL

View File

@ -63,12 +63,6 @@
riven_title:
;===========================
; print the title message that used to be
; in hello.bas
;===================
; init screen
;===================
@ -77,18 +71,14 @@ riven_title:
jsr HOME
bit KEYRESET
; set disk#
; set disk# (DISK provided at compile time)
lda #48+(DISK/10)
sta title_text+28
lda #48+(DISK-((DISK/10)*10))
sta title_text+29
; clear text screen
; jsr clear_all
; setup text screen
lda #0
sta DRAW_PAGE
@ -97,45 +87,40 @@ riven_title:
jsr set_normal
; print messages
; print the title screen text
lda #<title_text
sta OUTL
lda #>title_text
sta OUTH
; print the text
jsr move_and_print_list
loader_start:
;===================
; detect hardware
jsr hardware_detect
;=============================
; set up model string to print
lda #<model_string
sta OUTL
lda #>model_string
sta OUTH
lda APPLEII_MODEL
sta model_string+17
sta model_string+19
; special case IIgs, need to print two characters
cmp #'g'
bne go_print
lda #'s'
sta model_string+18
sta model_string+20
go_print:
ldy #0
print_model:
lda (OUTL),Y
beq print_model_done
ora #$80
sta $7d0,Y
iny
jmp print_model
print_model_done:
jsr move_and_print
;===========================
; patch lowercase printing
@ -208,7 +193,7 @@ no_patch_uppercase:
not_a_iigs:
;===================
; Load hires graphics
; Load title graphic
;===================
reload_everything:
@ -223,7 +208,7 @@ reload_everything:
;===================================
; detect if we have a language card
; and load sound into it if possible
; we will use it for sound later if detected
;===================================
lda #0
@ -237,28 +222,10 @@ reload_everything:
ora #SOUND_IN_LC
sta SOUND_STATUS
; load sounds into LC
; read ram, write ram, use $d000 bank1
; bit $C08B
; bit $C08B
; lda #<linking_noise_compressed
; sta getsrc_smc+1
; lda #>linking_noise_compressed
; sta getsrc_smc+2
; lda #$D0 ; decompress to $D000
; jsr decompress_lzsa2_fast
;blah:
; read rom, nowrite, use $d000 bank1
; bit $C08A
no_language_card:
; currently no music so no need for Mockingboard code
;===================================
; Setup Mockingboard
;===================================
@ -311,6 +278,9 @@ done_setup_sound:
; init
;===================================
; we currently don't do this as we were over-writing
; things that shouldn't. It is living dangerously
; not clearing things out though
; clear out zero page values to 0
; clear everything from $80 .. $A0?
@ -325,6 +295,7 @@ done_setup_sound:
lda #0
sta LEVEL_OVER
sta BEACH_ANIMALS_SEEN
; sta JOYSTICK_ENABLED
; init hi-res graphics
@ -332,19 +303,14 @@ done_setup_sound:
sta HGR_PAGE
jsr hgr_make_tables
; lda #0
; sta JOYSTICK_ENABLED
; sta UPDATE_POINTER
; sta HOLDING_ITEM
; sta HOLDING_PAGE
; initial cursor location
lda #20
sta CURSOR_X
sta CURSOR_Y
;===================================
; Do Intro Sequence
; Wait a bit
;===================================
; wait a bit at LOAD screen
@ -360,14 +326,11 @@ done_setup_sound:
jsr clear_bottom
bit TEXTGR
; print messages
; print text
lda #<menu_text
sta OUTL
lda #>menu_text
sta OUTH
; print the text
jsr move_and_print_list
lda #0
@ -425,17 +388,8 @@ done_pointer_loop:
; we ever implement save game support
game_new:
; FIXME: how to convince other disks to swap to DISK0
; without wasting a disk-exit spot
; lda #$E0|3 ; LOAD_CYAN
; sta WHICH_LOAD ; CYAN opener
; lda #0 ; not needed...
; sta LOCATION
; lda #DIRECTION_N
; sta DIRECTION
; there must be a way to do this better, but for now waste
; a disk change slot on each disk with the opener
lda #$E0|3
sta LEVEL_OVER
@ -606,10 +560,7 @@ game_continue:
.include "lc_detect.s"
model_string:
.byte "DETECTED APPLE II",0,0,0
.byte 0,23,"DETECTED APPLE II",0,0,0
riven_title_image:
.incbin "graphics_title/riven_title.hgr.zx02"