riven: start animating chair
@ -139,7 +139,8 @@ riven_disk04.dsk: QBOOT QLOAD TITLE_04 \
|
||||
riven_disk05.dsk: QBOOT QLOAD TITLE_05 \
|
||||
disk05_files/DISK05 \
|
||||
disk05_files/LEVEL_CHAIR \
|
||||
disk05_files/LEVEL_CHAIR2
|
||||
disk05_files/LEVEL_CHAIR2 \
|
||||
disk05_files/MOVIE_CHAIR
|
||||
cp $(EMPTY_DISK)/empty.dsk riven_disk05.dsk
|
||||
$(DOS33_RAW) riven_disk05.dsk 0 0 QBOOT 0 1
|
||||
$(DOS33_RAW) riven_disk05.dsk 0 2 QBOOT 1 1
|
||||
@ -149,6 +150,7 @@ riven_disk05.dsk: QBOOT QLOAD TITLE_05 \
|
||||
$(DOS33_RAW) riven_disk05.dsk 1 0 QLOAD 0 0
|
||||
$(DOS33_RAW) riven_disk05.dsk 2 0 disk05_files/LEVEL_CHAIR 0 0
|
||||
$(DOS33_RAW) riven_disk05.dsk 8 0 disk05_files/LEVEL_CHAIR2 0 0
|
||||
$(DOS33_RAW) riven_disk05.dsk 15 0 disk05_files/MOVIE_CHAIR 0 0
|
||||
|
||||
|
||||
###
|
||||
@ -628,6 +630,9 @@ disk05_files/LEVEL_CHAIR:
|
||||
disk05_files/LEVEL_CHAIR2:
|
||||
cd disk05_files && make
|
||||
|
||||
disk05_files/MOVIE_CHAIR:
|
||||
cd disk05_files && make
|
||||
|
||||
####
|
||||
|
||||
disk10_files/LEVEL_INSIDE:
|
||||
@ -858,6 +863,7 @@ riven_hgr.2mg: dts_block PROBOOTHD QLOAD_HD \
|
||||
disk05_files/DISK05 \
|
||||
disk05_files/LEVEL_CHAIR \
|
||||
disk05_files/LEVEL_CHAIR2 \
|
||||
disk05_files/MOVIE_CHAIR \
|
||||
disk10_files/DISK10 \
|
||||
disk10_files/LEVEL_INSIDE \
|
||||
disk10_files/LEVEL_STAINED \
|
||||
@ -937,6 +943,7 @@ riven_hgr.2mg: dts_block PROBOOTHD QLOAD_HD \
|
||||
$(PRODOS_RAW) riven_hgr.2mg `./dts_block 5 0 2` disk05_files/DISK05 0 0
|
||||
$(PRODOS_RAW) riven_hgr.2mg `./dts_block 5 2 0` disk05_files/LEVEL_CHAIR 0 0
|
||||
$(PRODOS_RAW) riven_hgr.2mg `./dts_block 5 8 0` disk05_files/LEVEL_CHAIR2 0 0
|
||||
$(PRODOS_RAW) riven_hgr.2mg `./dts_block 5 15 0` disk05_files/MOVIE_CHAIR 0 0
|
||||
$(PRODOS_RAW) riven_hgr.2mg `./dts_block 10 0 2` disk10_files/DISK10 0 0
|
||||
$(PRODOS_RAW) riven_hgr.2mg `./dts_block 10 2 0` disk10_files/LEVEL_INSIDE 0 0
|
||||
$(PRODOS_RAW) riven_hgr.2mg `./dts_block 10 8 0` disk10_files/LEVEL_STAINED 0 0
|
||||
|
@ -1,3 +1,19 @@
|
||||
Things missing:
|
||||
~~~~~~~~~~~~~~~
|
||||
+ DISK05
|
||||
the blue viewer should show if maglev is there or not
|
||||
|
||||
+ DISK38
|
||||
The graphics should be different for essentially all views (more light)
|
||||
when door is open
|
||||
Should see maglev out the door if it's there
|
||||
|
||||
+ DISK39
|
||||
Maglev should not be there at first, and should arrive when press button
|
||||
Should be full movie of maglev arriving
|
||||
Should handle case of being outside temple when door is closed
|
||||
|
||||
|
||||
|
||||
REMEMBER! QLOAD actually trashes 2 bytes above the top of the load
|
||||
for most of this we re-write those bytes and it doesn't matter
|
||||
@ -24,32 +40,6 @@ $D000-$FFFF = ROM
|
||||
|
||||
|
||||
|
||||
image conversion
|
||||
scummvm/vokoscreen capture
|
||||
crop
|
||||
scale to 140x201
|
||||
convert
|
||||
re-scale and crop to 280x192
|
||||
|
||||
(old) map to 12 colors and eyeball which?
|
||||
(old) contrast/bright 57/3 (note: not always or even often)
|
||||
|
||||
dark areas, crank shadow removal to 80?
|
||||
|
||||
on some hard to define areas crank contrast to 50?
|
||||
|
||||
on atrus movie go to color levels and hit "auto" before iipix
|
||||
|
||||
final movie roto procedure:
|
||||
scale to 40x50
|
||||
crop to 40x48
|
||||
add layer
|
||||
paste overlay mask on top
|
||||
rotoscope
|
||||
copy to new image
|
||||
convert to indexed apple II palette
|
||||
scale to 80x48
|
||||
save
|
||||
|
||||
;================================
|
||||
; NOTE: for hard-disk image we use 512-byte blocks (not 256-byte sectors)
|
||||
@ -122,6 +112,7 @@ T 0.5 = TITLE 1805 bytes 8S = 0T8S (2048) 400B free
|
||||
T 1 = QLOAD 2314 bytes 16S= 1T0S (4096) 2k free
|
||||
T 2 = CHAIR 14263 bytes = 6T0S (24576) 10k free
|
||||
T 8 = CHAIR2 27064 bytes = 7T0S (28672) 1k free
|
||||
T 15 = MOV_CHAIR 20480 bytes = 5T0S (20480) 1k free
|
||||
|
||||
|
||||
Disk10 Map (disk has 35 tracks, each 4k in size)
|
||||
@ -312,6 +303,35 @@ rotating room -- rotates clockwise. B initially blocked
|
||||
rotate button at B as well
|
||||
|
||||
|
||||
|
||||
image conversion
|
||||
scummvm/vokoscreen capture
|
||||
crop
|
||||
scale to 140x201
|
||||
convert
|
||||
re-scale and crop to 280x192
|
||||
|
||||
(old) map to 12 colors and eyeball which?
|
||||
(old) contrast/bright 57/3 (note: not always or even often)
|
||||
|
||||
dark areas, crank shadow removal to 80?
|
||||
|
||||
on some hard to define areas crank contrast to 50?
|
||||
|
||||
on atrus movie go to color levels and hit "auto" before iipix
|
||||
|
||||
final movie roto procedure:
|
||||
scale to 40x50
|
||||
crop to 40x48
|
||||
add layer
|
||||
paste overlay mask on top
|
||||
rotoscope
|
||||
copy to new image
|
||||
convert to indexed apple II palette
|
||||
scale to 80x48
|
||||
save
|
||||
|
||||
|
||||
settings for temple
|
||||
80 (shadow)
|
||||
|
||||
|
@ -1,5 +1,28 @@
|
||||
disk01:
|
||||
General:
|
||||
press escape to skip cutscenes?
|
||||
|
||||
+ disk handling code
|
||||
+ on every load check to make sure disk hasn't been swapped?
|
||||
can put expected disk number at beginning of each thing
|
||||
we load and compare against it
|
||||
+ allow pressing escape to back-out disk change?
|
||||
|
||||
+ Keyboard handling
|
||||
- Better keyboard handling on IIe
|
||||
-> was actually one of the main reasons I started working on this
|
||||
|
||||
qload:
|
||||
+ move flip_pages.s into QLOAD
|
||||
|
||||
|
||||
title:
|
||||
|
||||
disk00:
|
||||
|
||||
|
||||
|
||||
disk01:
|
||||
+ maybe redo opening graphics
|
||||
|
||||
disk02: (steps)
|
||||
one E
|
||||
@ -24,63 +47,23 @@ disk03: (down other side)
|
||||
allow walking through doorway depending on room rotation
|
||||
|
||||
disk04: bridge
|
||||
|
||||
bridge2 (nsew)
|
||||
bridge3 (nsew)
|
||||
bridge4 (nsew)
|
||||
tunnel1 (ew)
|
||||
tunnel2 (ew)
|
||||
tunnel3 (new) door open)
|
||||
add missing N/S views
|
||||
allow clicking on chair room door to go direct there
|
||||
|
||||
disk05: control room
|
||||
in1
|
||||
in2 (plays movie of opening)
|
||||
in3
|
||||
in4 seat
|
||||
temple view
|
||||
sub view
|
||||
possibly animation of lowering when button pressed/pull handle
|
||||
blue view should have maglev there/not
|
||||
orange view should animate opening door
|
||||
|
||||
disk06: more tunnel
|
||||
tunnel4
|
||||
tunnel5
|
||||
tunnel6
|
||||
tunnel7
|
||||
tunnel8 (door)
|
||||
tunnel9 (looking into temple)
|
||||
allow clicking on cair room to go direct here
|
||||
animate opening door?
|
||||
|
||||
disk10:
|
||||
figure out rotation
|
||||
|
||||
|
||||
+ disk handling code
|
||||
+ on every load check to make sure disk hasn't been swapped?
|
||||
can put expected disk number at beginning of each thing
|
||||
we load and compare against it
|
||||
+ allow pressing escape to back-out disk change?
|
||||
|
||||
+ Keyboard handling
|
||||
- Better keyboard handling on IIe
|
||||
-> was actually one of the main reasons I started working on this
|
||||
|
||||
qload:
|
||||
+ move flip_pages.s into QLOAD
|
||||
|
||||
title:
|
||||
|
||||
disk00:
|
||||
+ cyan intro
|
||||
use page flipping on Apple IIe with auxmem?
|
||||
+ atrus intro
|
||||
+ capture movie:
|
||||
+ opening movie: implement it
|
||||
ESC key... in wait_a_bit write to WAIT_KEYPRESS
|
||||
allow skipping chunks of it
|
||||
|
||||
disk01:
|
||||
+ maybe redo opening graphics
|
||||
|
||||
disk38:
|
||||
-> complete things
|
||||
|
||||
|
||||
disk39:
|
||||
-> try to fit last little bit of maglev sequence
|
||||
+ do the handle animation at end?
|
||||
@ -88,19 +71,25 @@ disk39:
|
||||
+ if out of room in RAM (but not disk)
|
||||
optionally load tail end
|
||||
to language card on machines that have it?
|
||||
|
||||
disk40:
|
||||
-> implement maglev flip
|
||||
-> implement maglev back
|
||||
|
||||
disk41:
|
||||
-> see if we can implement left/straight right/straight
|
||||
options for fork-in-road type situations
|
||||
-> allow going down where animals were, see ball?
|
||||
|
||||
|
||||
disk43:
|
||||
-> implement cart
|
||||
-> implement cart ride (maybe move to disk50)
|
||||
-> fix up graphics
|
||||
-> fix up path
|
||||
-> again, figure out fork-in-road handling
|
||||
-> batter fork-in-road handling
|
||||
|
||||
disk44:
|
||||
-> more path
|
||||
-> fish mouth
|
||||
-> probably move fish to own disk
|
||||
|
||||
disk50:
|
||||
-> implement reverse cart
|
||||
|
@ -3,7 +3,7 @@ include ../../../Makefile.inc
|
||||
LINKER_SCRIPTS = ../../../linker_scripts/
|
||||
|
||||
|
||||
all: DISK05 LEVEL_CHAIR LEVEL_CHAIR2
|
||||
all: DISK05 LEVEL_CHAIR LEVEL_CHAIR2 MOVIE_CHAIR
|
||||
|
||||
####
|
||||
|
||||
@ -37,6 +37,17 @@ level_chair2.o: level_chair2.s \
|
||||
graphics_chair2/chair2_graphics.inc
|
||||
ca65 -o level_chair2.o level_chair2.s -l level_chair2.lst
|
||||
|
||||
####
|
||||
|
||||
MOVIE_CHAIR: movie_chair.o
|
||||
ld65 -o MOVIE_CHAIR movie_chair.o -C $(LINKER_SCRIPTS)/apple2_4000.inc
|
||||
|
||||
movie_chair.o: movie_chair.s \
|
||||
../flip_pages.s ../disk00_files/draw_scene.s \
|
||||
../zp.inc ../hardware.inc ../qload.inc \
|
||||
../common_defines.inc disk05_defines.inc \
|
||||
movie_chair/movie_chair.inc
|
||||
ca65 -o movie_chair.o movie_chair.s -l movie_chair.lst
|
||||
|
||||
####
|
||||
|
||||
|
@ -9,19 +9,19 @@ which_disk_bin:
|
||||
.byte 5
|
||||
|
||||
load_address_array:
|
||||
.byte $40,$40,$40,$40 ; TITLE, CHAIR, CHAIR2
|
||||
.byte $40,$40,$40,$40 ; TITLE, CHAIR, CHAIR2, MOVIE_CHAIR
|
||||
.byte $40,$00,$00,$00 ;
|
||||
|
||||
track_array:
|
||||
.byte 0, 2, 8,16 ; TITLE, CHAIR, CHAIR2
|
||||
.byte 0, 2, 8,15 ; TITLE, CHAIR, CHAIR2, MOVIE_CHAIR
|
||||
.byte 22,0,0,0 ;
|
||||
|
||||
sector_array:
|
||||
.byte 8, 0, 0, 0 ; TITLE, CHAIR, CHAIR2
|
||||
.byte 8, 0, 0, 0 ; TITLE, CHAIR, CHAIR2, MOVIE_CHAIR
|
||||
.byte 0,0,0,0 ;
|
||||
|
||||
length_array:
|
||||
.byte 8, 96,112, 96 ; TITLE, CHAIR, CHARI2
|
||||
.byte 8, 96,112,80 ; TITLE, CHAIR, CHAIR2, MOVIE_CHAIR
|
||||
.byte 80,0,0,0
|
||||
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
LOAD_TITLE_05 = 0
|
||||
LOAD_CHAIR = 1
|
||||
LOAD_CHAIR2 = 2
|
||||
MOVIE_CHAIR = 3
|
||||
|
||||
;================================
|
||||
; Level definitions
|
||||
|
@ -15,14 +15,12 @@ chair_start:
|
||||
; init screen
|
||||
;===================
|
||||
|
||||
; jsr TEXT
|
||||
; jsr HOME
|
||||
bit KEYRESET
|
||||
; bit KEYRESET
|
||||
|
||||
bit SET_GR
|
||||
bit PAGE1
|
||||
bit HIRES
|
||||
bit FULLGR
|
||||
; bit SET_GR
|
||||
; bit PAGE1
|
||||
; bit HIRES
|
||||
; bit FULLGR
|
||||
|
||||
;========================
|
||||
; set up location
|
||||
@ -55,16 +53,23 @@ chair_start:
|
||||
; init
|
||||
;===================================
|
||||
|
||||
; done in title
|
||||
|
||||
; lda #$20
|
||||
; sta HGR_PAGE
|
||||
; jsr hgr_make_tables
|
||||
|
||||
jsr change_location
|
||||
|
||||
jsr save_bg_14x14 ; save old bg
|
||||
|
||||
;===================
|
||||
; init screen
|
||||
;===================
|
||||
|
||||
bit KEYRESET
|
||||
|
||||
bit SET_GR
|
||||
bit PAGE1
|
||||
bit HIRES
|
||||
bit FULLGR
|
||||
|
||||
|
||||
game_loop:
|
||||
|
||||
;===================================
|
||||
|
@ -24,7 +24,7 @@ location0:
|
||||
|
||||
; RIVEN_ENTRANCE -- entrance to chair room
|
||||
location1:
|
||||
.byte RIVEN_CHAIR ; north exit
|
||||
.byte MOVIE_CHAIR<<4|0 ; north exit
|
||||
.byte RIVEN_ENTRANCE_OPEN ; south exit
|
||||
.byte $ff ; east exit
|
||||
.byte $ff ; west exit
|
||||
|
144
games/riven_hgr/disk05_files/movie_chair.s
Normal file
@ -0,0 +1,144 @@
|
||||
; The Chair lo-res movie
|
||||
|
||||
; by deater (Vince Weaver) <vince@deater.net>
|
||||
|
||||
.include "../zp.inc"
|
||||
.include "../hardware.inc"
|
||||
.include "../qload.inc"
|
||||
|
||||
.include "disk05_defines.inc"
|
||||
|
||||
NUM_OVERLAYS = 15
|
||||
|
||||
captured_bg = chair_base
|
||||
|
||||
chair_start:
|
||||
|
||||
;===================
|
||||
; Setup lo-res graphics
|
||||
;===================
|
||||
|
||||
; clear it first
|
||||
|
||||
jsr clear_gr_all
|
||||
|
||||
bit SET_GR
|
||||
bit LORES
|
||||
bit FULLGR
|
||||
bit PAGE1
|
||||
|
||||
lda #0
|
||||
sta SCENE_COUNT
|
||||
|
||||
lda #4
|
||||
sta DRAW_PAGE
|
||||
|
||||
bit KEYRESET
|
||||
|
||||
;===============================
|
||||
;===============================
|
||||
; play sound effect?
|
||||
;===============================
|
||||
;===============================
|
||||
|
||||
|
||||
;===============================
|
||||
;===============================
|
||||
; chair opens
|
||||
;===============================
|
||||
;===============================
|
||||
|
||||
lda #<chair_base
|
||||
sta scene_bg_l_smc+1
|
||||
|
||||
lda #>chair_base
|
||||
sta scene_bg_h_smc+1
|
||||
|
||||
lda #0
|
||||
sta WHICH_OVERLAY
|
||||
chair_loop:
|
||||
|
||||
; draw scene with overlay
|
||||
; switch background
|
||||
|
||||
lda WHICH_OVERLAY
|
||||
|
||||
jsr draw_scene
|
||||
|
||||
; flip pages
|
||||
|
||||
jsr flip_pages
|
||||
|
||||
inc WHICH_OVERLAY
|
||||
lda WHICH_OVERLAY
|
||||
cmp #NUM_OVERLAYS
|
||||
beq done_chair
|
||||
|
||||
; in theory we are 500ms (10*50) long here...
|
||||
|
||||
ldx #7
|
||||
jsr wait_a_bit
|
||||
|
||||
jmp chair_loop
|
||||
|
||||
|
||||
done_chair:
|
||||
|
||||
|
||||
;======================
|
||||
; done, move on to next
|
||||
;======================
|
||||
|
||||
bit KEYRESET
|
||||
|
||||
lda #LOAD_CHAIR
|
||||
sta WHICH_LOAD
|
||||
|
||||
lda #RIVEN_CHAIR
|
||||
sta LOCATION
|
||||
|
||||
lda #$1
|
||||
sta LEVEL_OVER
|
||||
|
||||
rts
|
||||
|
||||
.include "../flip_pages.s"
|
||||
.include "../disk00_files/draw_scene.s"
|
||||
|
||||
frames_l:
|
||||
.byte <overlay04 ; 0
|
||||
.byte <overlay05 ; 1
|
||||
.byte <overlay06 ; 2
|
||||
.byte <overlay07 ; 3
|
||||
.byte <overlay08 ; 4
|
||||
.byte <empty ; 5
|
||||
.byte <empty ; 6
|
||||
.byte <empty ; 7
|
||||
.byte <empty ; 8
|
||||
.byte <empty ; 9
|
||||
.byte <empty ; 10
|
||||
.byte <empty ; 11
|
||||
.byte <empty ; 12
|
||||
.byte <empty ; 13
|
||||
.byte <empty ; 14
|
||||
|
||||
frames_h:
|
||||
.byte >overlay04 ; 0
|
||||
.byte >overlay05 ; 1
|
||||
.byte >overlay06 ; 2
|
||||
.byte >overlay07 ; 3
|
||||
.byte >overlay08 ; 4
|
||||
.byte >empty ; 5
|
||||
.byte >empty ; 6
|
||||
.byte >empty ; 7
|
||||
.byte >empty ; 8
|
||||
.byte >empty ; 9
|
||||
.byte >empty ; 10
|
||||
.byte >empty ; 11
|
||||
.byte >empty ; 12
|
||||
.byte >empty ; 13
|
||||
.byte >empty ; 14
|
||||
|
||||
chair_graphics:
|
||||
.include "movie_chair/movie_chair.inc"
|
||||
|
40
games/riven_hgr/disk05_files/movie_chair/Makefile
Normal file
@ -0,0 +1,40 @@
|
||||
include ../../../../Makefile.inc
|
||||
|
||||
ZX02 = ~/research/6502_compression/zx02.git/build/zx02
|
||||
PNG2GR = ../../../../utils/gr-utils/png2gr
|
||||
|
||||
all: movie_chair.inc
|
||||
|
||||
movie_chair.inc: \
|
||||
chair_base.gr.zx02 \
|
||||
empty.gr.zx02 \
|
||||
overlay04.gr.zx02 overlay05.gr.zx02 overlay06.gr.zx02 \
|
||||
overlay07.gr.zx02 overlay08.gr.zx02
|
||||
echo "chair_base: .incbin \"chair_base.gr.zx02\"" > movie_chair.inc
|
||||
echo "empty: .incbin \"empty.gr.zx02\"" >> movie_chair.inc
|
||||
echo "overlay04: .incbin \"overlay04.gr.zx02\"" >> movie_chair.inc
|
||||
echo "overlay05: .incbin \"overlay05.gr.zx02\"" >> movie_chair.inc
|
||||
echo "overlay06: .incbin \"overlay06.gr.zx02\"" >> movie_chair.inc
|
||||
echo "overlay07: .incbin \"overlay07.gr.zx02\"" >> movie_chair.inc
|
||||
echo "overlay08: .incbin \"overlay08.gr.zx02\"" >> movie_chair.inc
|
||||
|
||||
|
||||
|
||||
|
||||
####
|
||||
|
||||
%.gr: %.png
|
||||
$(PNG2GR) $< $@
|
||||
|
||||
%.gr.zx02: %.gr
|
||||
$(ZX02) -f $< $@
|
||||
|
||||
####
|
||||
|
||||
clean:
|
||||
rm -f *~ *.o *.lst *.zx02 *.gr movie_maglev_ride.inc
|
||||
|
||||
distclean:
|
||||
rm -f *~ *.o *.lst *.zx02 *.gr movie_maglev_ride.inc
|
||||
cd overlays && make clean
|
||||
|
BIN
games/riven_hgr/disk05_files/movie_chair/chair_base.png
Normal file
After Width: | Height: | Size: 871 B |
BIN
games/riven_hgr/disk05_files/movie_chair/empty.png
Normal file
After Width: | Height: | Size: 640 B |
BIN
games/riven_hgr/disk05_files/movie_chair/overlay04.png
Normal file
After Width: | Height: | Size: 750 B |
BIN
games/riven_hgr/disk05_files/movie_chair/overlay05.png
Normal file
After Width: | Height: | Size: 766 B |
BIN
games/riven_hgr/disk05_files/movie_chair/overlay06.png
Normal file
After Width: | Height: | Size: 759 B |
BIN
games/riven_hgr/disk05_files/movie_chair/overlay07.png
Normal file
After Width: | Height: | Size: 774 B |
BIN
games/riven_hgr/disk05_files/movie_chair/overlay08.png
Normal file
After Width: | Height: | Size: 767 B |