dos33fsprogs/games/riven_hgr/NOTES
2024-08-25 01:06:38 -04:00

370 lines
12 KiB
Plaintext

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
but it does mean we can't load right up against $C000 as that's
I/O memory and we'll get weird corruption issues.
MEMORY MAP
$0000-$00FF = zero page
$0100-$01FF = stack
$0200-$02FF = disk stuff
$0300-$03ff = disk/interrupts
$0400-$07ff = lores graphics page1
$0800-$0bff = lores graphics page2
$800-$8ff = (qboot initial sector)
$1000-$11ff = qboot_stage2 (disk code)
$1200-$13ff = QLOAD tables (only need 1 page, but prodos load is 2)
could in theory load to $1000 instead when using HD
$1400-$15FF = HGR lookup tables
$1600-$1FFF = QLOAD = loader code (2k?)
$2000-$3FFF = HGR Page1, lores movie overlays
$4000-$BFFF = our code (up to 32k in theory)
$C000-$CFFF = I/O
$D000-$FFFF = ROM
;================================
; NOTE: for hard-disk image we use 512-byte blocks (not 256-byte sectors)
; so be careful using odd-numbered block lengths!
; This is mostly an issue for the $7F long almost-32k files
; and the 1-block level info files, otherwise we mostly are even
Disk00 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 = 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
T 26 = CHO 19839 bytes = 5T (20480) 0k free
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 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 19482 bytes = 6T0S (24576) 5k free
T 19 = ARRIVAL3 30786 bytes = 7T15S (32512) 2k 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 23639 bytes = 6T0S (24576) 1k free
T 8 = STEPS3 15872 bytes = 6T0S (24576) 9k free
T 14 = TOP 15210 bytes = 4T0S (16384) 1k free
T 18 = BRIDGE 15021 bytes = 4T0S (16384) 1k free
T 22 = ALCOVE 21061 bytes = 6T0S (24575) 3k 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 = DOWNSTEPS 25875 bytes = 7T0S (28672) 3k free
T 9 = DOWNSTEPS3 12448 bytes = 6T0S (24576) 12k free
T 15 = OUTSIDE 27100 bytes = 7T0S (28672) 1k free
T 22 = CAVE 20269 bytes = 6T0S (24576) 4k free
T 28 = DOORWAY 11802 bytes = 6T0S (24576) 12k 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 = BRIDGE1 9027 bytes = 5T0S (20480) 11k free
T 7 = BRIDGE2 8982 bytes = 5T0S (20480) 11k free
T 12 = TUNNEL1 12654 bytes = 5T0S (20480) 8k free
T 17 = TUNNEL3 17217 bytes = 5T0S (20480) 3k free
T 22 = TUNNEL4 22176 bytes = 6T0S (24576) 2k free
T 28 = TUNNEL7 20847 bytes = 6T0S (24576) 4k 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 16480 bytes = 6T0S (24576) 8k free
T 8 = CHAIR2 27064 bytes = 7T0S (28672) 1k free
T 15 = MOV_CHAIR 5414 bytes = 5T0S (20480) 15k free
Disk10 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 = CENTER 23133 bytes = 6T0S (28672) ?k free
T 8 = LEVEL_15 8289 bytes = 3T0S (12288) 4k free
T 11 = LEVEL_21 18289 bytes = 3T0S (12288) ?k free
T 14 = LEVEL_32 8465 bytes = 3T0S (12288) 4k free
T 17 = LEVEL_43 18289 bytes = 3T0S (12288) ?k free
T 20 = LEVEL_54 18289 bytes = 3T0S (12288) ?k free
T 23 = PILLARS 32000 bytes = 7T15S (32512) ?k free
Disk16 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 = BRIDGE 26859 bytes = 7T0S (28672) 2k free
T 9 = BRIDGE2 4984 bytes = 6T0S (24576) 20k free
T 15 = DOME 6813 bytes = 6T0S (24576) 18k free
Disk38 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 = PROJECTOR 12057 bytes = 6T0S (24576) 12k free
T 8 = ENTRY 12568 bytes = 6T0S (24576) 12k free
T 14 = CLOSE 17168 bytes = 6T0S (24576) 5k free
T 20 = MID 13772 bytes = 6T0S (24576) 11k free
; NOTE: save room for creepy animation, alternate door closed code
Disk39 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 = 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
T 21 = MAGLEV 13881 bytes 64S = 4T0S (16384) 3k free
T 25 = MOVIE_FLIP 7790 bytes 32S = 2T0S (8192) 500B free
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 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
T 21 = ORB 13710 bytes 54S= 3T6S (16384) 3k free
T 25 = MOVIE_FLIP 7680 bytes 32S = 2T0S (8192) 500B free
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 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
T 24 = STAIRS2 27139 = 7T (28672) 1k free
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 1805 bytes 8S = 0T8S (2048) 400B free
T 1 = QLOAD 2314 bytes 8S = 0T8S (2048) 300B free
T 2 = CART 23288 bytes = 6T0S (24576) 1k free
T 8 = BRIDGE 18609 bytes = 5T0S (20480) 2k free
T 13 = LOGGED 17570 bytes = 5T0S (20480) 3k free
T 18 = LOGGED3 18594 bytes = 5T0S (20480) 2k free
T 23 = LOGGED4 11845 bytes = 3T0S (12288) 1k free
T 26 = LOGGED5 16894 bytes = 5T0S (20480) 4k free
T 31 = MOVIE_CART 2k 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 = 6T0S (24576) 5k free
T 8 = PATH 18000 bytes = 6T0S (24576) 6k 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?
in bright areas, pumping contrast up to 30 - 40 can help?
disk40: 80/67 in tunnel
Disk notes:
disk0: intro movies
disk1: arrival and area around telescope
disk2: steps up and path to projector?
disk39: projector and maglev, including ride
disk40: jungle island maglev station, sound puzzle clue
also maglev flip and ride back to disk39
disk41: steps up to t-intersection?
X locations
disk42: to left, including sea animal move
disk43: to right, including cart ride
; it's 11 steps (22)
;
API for loading:
+ Disk based:
returns to ????? with LOCATION (no extra action needed)
LEVEL
DISK
set
the code looks up track/sector/length based on these,
changing disk if necessary
+ Prodos/HD based
+ proboothd boots disk
+ loads QLOAD to 1600
DDDD DDDT | TTTT TSSS
((disk+1)<<9)+(T<<3)+(S>>1)
((disk*512) + (T*8) + (S/2)
256k for each 140k disk, offset from there?
up to 128 disks
only one copy of qload/title
7/33
IN_SPECIAL
IN_RIGHT
IN_LEFT
SPECIAL
FF = not special
bottom nibble = directions
1/3/4/8 direction
40 = only point
80 = split screen
SPLIT
if X>20 and forward -> dest1
if X<20 and forward -> dest2
rotating room -- rotates clockwise. B initially blocked
/ \
B / \ -- rotation 0, can get to B and E. C is blocked
/O \Q -- rotation 1, both E and C blocked
/ \ -- rotation 2, E blocked. B + C open
\ /C -- rotation 3, E and Q open
P\__O__/ -- rotation 4, C and P open (pipe)
E can flip telescope controls
can flip wall handle. also another button
flip twice to get to Q, also handle and
button (both needed to get to dome)
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)
settings for rotating toom
80 (shadow) / 81 (bright) / 66 (contrast)
stained glass:
crop to actual size
run "erode"
scale to 192 high
canvas size 280x192
grid 2x2
reduce to 16 colors
paint paint paint
draw border
chair room
shadow 72? 69/45?
or instead levels auto?
inside done:
close one. 80/69 brightness/contrast?