From 9eaa5e61b76c55cf3039c4e0d067730794e6246b Mon Sep 17 00:00:00 2001 From: 4am Date: Mon, 15 Nov 2021 20:25:32 -0500 Subject: [PATCH] Titles refactoring (#439) * Add titles to TOTAL.DATA * update constants * fix res/TITLE.DHGR/FLAPPLE.BIRD file size --- Makefile | 85 +++--- bin/buildindexedfile.sh | 28 +- bin/buildsearch.sh | 25 +- res/TITLE.DHGR/FLAPPLE.BIRD | Bin 16376 -> 16384 bytes res/TITLE.DHGR/_FileInformation.txt | 37 --- res/TITLE.HGR/_FileInformation.txt | 384 ---------------------------- src/constants.a | 2 +- src/glue.prorwts2.a | 76 +----- src/glue.prorwts2.lc2.a | 22 -- src/index/artwork.idx.a | 2 +- src/index/attract.idx.a | 2 +- src/index/cache00.idx.a | 2 +- src/index/cache01.idx.a | 2 +- src/index/cache10.idx.a | 2 +- src/index/cache11.idx.a | 2 +- src/index/dfx.idx.a | 2 +- src/index/dhgr.idx.a | 2 +- src/index/dtitle.idx.a | 8 + src/index/fx.idx.a | 2 +- src/index/gamehelp.idx.a | 2 +- src/index/gr.idx.a | 2 +- src/index/hgr0.idx.a | 2 +- src/index/hgr1.idx.a | 2 +- src/index/hgr2.idx.a | 2 +- src/index/hgr3.idx.a | 2 +- src/index/hgr4.idx.a | 2 +- src/index/hgr5.idx.a | 2 +- src/index/hgr6.idx.a | 2 +- src/index/miniattract.idx.a | 2 +- src/index/prelaunch.idx.a | 2 +- src/index/search00.idx.a | 2 +- src/index/search01.idx.a | 4 +- src/index/search10.idx.a | 4 +- src/index/search11.idx.a | 4 +- src/index/slideshow.idx.a | 2 +- src/index/title.idx.a | 8 + src/prodos.path.a | 14 +- src/ui.attract.dhgr.a | 37 ++- src/ui.attract.hgr.a | 19 +- src/ui.common.a | 6 +- src/ui.offscreen.a | 169 ++++++------ src/ui.overlay.a | 15 +- 42 files changed, 293 insertions(+), 698 deletions(-) delete mode 100644 res/TITLE.DHGR/_FileInformation.txt delete mode 100644 res/TITLE.HGR/_FileInformation.txt create mode 100644 src/index/dtitle.idx.a create mode 100644 src/index/title.idx.a diff --git a/Makefile b/Makefile index f6979e324..a4dee8cd9 100644 --- a/Makefile +++ b/Makefile @@ -36,8 +36,6 @@ dsk: index asmproboot asmlauncher # # create _FileInformation.txt files for subdirectories # - bin/buildfileinfo.sh res/TITLE.HGR "06" "4000" - bin/buildfileinfo.sh res/TITLE.DHGR "06" "4000" bin/buildfileinfo.sh res/ICONS "CA" "0000" bin/buildfileinfo.sh build/FX "06" "6000" bin/buildfileinfo.sh build/PRELAUNCH "06" "0106" @@ -60,8 +58,6 @@ dsk: index asmproboot asmlauncher $(CADIUS) ADDFILE build/"$(DISK)" "/$(VOLUME)/" "$$f" >>build/log; \ done for f in \ - res/TITLE.HGR \ - res/TITLE.DHGR \ res/DEMO \ res/TITLE.ANIMATED \ res/ICONS \ @@ -84,88 +80,98 @@ dsk: index asmproboot asmlauncher bin/changebootloader.sh build/"$(DISK)" build/proboothd index: md asmfx asmprelaunch compress -# note: even though individual lines check individual files, you really want -# to re-run this with a clean build/ directory if anything changes, because -# everything is interconnected within TOTAL.DATA # # precompute binary data structure for mega-attract mode configuration file # - [ -f build/ATTRACT.IDX ] || (bin/buildokvs.sh < res/ATTRACT.CONF > build/ATTRACT.IDX) + [ -f build/index ] || (bin/buildokvs.sh < res/ATTRACT.CONF > build/ATTRACT.IDX) # # precompute binary data structure and substitute special characters # in game help and other all-text pages # - [ -f build/HELPTEXT ] || (bin/converthelp.sh res/HELPTEXT build/HELPTEXT) - [ -f build/CREDITS ] || (bin/converthelp.sh res/CREDITS build/CREDITS) - for f in res/GAMEHELP/*; do \ - [ -f build/GAMEHELP/"$$(basename $$f)" ] || (bin/converthelp.sh "$$f" build/GAMEHELP/"$$(basename $$f)"); \ - done + [ -f build/index ] || (bin/converthelp.sh res/HELPTEXT build/HELPTEXT) + [ -f build/index ] || (bin/converthelp.sh res/CREDITS build/CREDITS) + [ -f build/index ] || (for f in res/GAMEHELP/*; do \ + bin/converthelp.sh "$$f" build/GAMEHELP/"$$(basename $$f)"; \ + done) # -# create search indexes for each variation of (game-requires-joystick) X (game-requires-128K) -# in the form of OKVS data structures, plus game counts in the form of source files +# create a version of GAMES.CONF without comments or blank lines # - [ -f build/GAMES.CONF ] || (awk '!/^$$|^#/' < res/GAMES.CONF > build/GAMES.CONF) - [ -f build/SEARCH00.IDX ] || (grep "^00" < build/GAMES.CONF | bin/buildsearch.sh src/index/count00.a > build/SEARCH00.IDX) - [ -f build/SEARCH01.IDX ] || (grep "^0" < build/GAMES.CONF | bin/buildsearch.sh src/index/count01.a > build/SEARCH01.IDX) - [ -f build/SEARCH10.IDX ] || (grep "^.0" < build/GAMES.CONF | bin/buildsearch.sh src/index/count10.a > build/SEARCH10.IDX) - [ -f build/SEARCH11.IDX ] || (bin/buildsearch.sh src/index/count11.a < build/GAMES.CONF > build/SEARCH11.IDX) + [ -f build/index ] || (awk '!/^$$|^#/' < res/GAMES.CONF > build/GAMES.CONF) # -# create a sorted list of game filenames, without metadata or display names +# create a list of all game filenames, without metadata or display names, sorted by game filename # - [ -f build/GAMES.SORTED ] || (awk -F, '/,/ { print $$2 }' < build/GAMES.CONF | awk -F= '{ print $$1 }' | sort > build/GAMES.SORTED) + [ -f build/index ] || (awk -F, '/,/ { print $$2 }' < build/GAMES.CONF | awk -F= '{ print $$1 }' | sort > build/GAMES.SORTED) # # precompute indexed files for prelaunch # note: prelaunch must be first in TOTAL.DATA due to a hack in LoadStandardPrelaunch # note 2: these can not be padded because they are loaded at $0106 and padding would clobber the stack # - [ -f build/PRELAUNCH.IDX ] || (bin/buildindexedfile.sh build/TOTAL.DATA build/PRELAUNCH.INDEXED < build/GAMES.SORTED > build/PRELAUNCH.IDX) + [ -f build/index ] || (bin/buildindexedfile.sh build/TOTAL.DATA build/PRELAUNCH.INDEXED < build/GAMES.SORTED > build/PRELAUNCH.IDX) +# +# precompute indexed files for HGR & DHGR titles +# note: these are not padded because they are all an exact block-multiple anyway +# + [ -f build/index ] || bin/padto.sh build/TOTAL.DATA + [ -f build/index ] || ((for f in res/TITLE.HGR/*; do echo "$$(basename $$f)"; done) | bin/buildindexedfile.sh -a build/TOTAL.DATA res/TITLE.HGR build/HGR.TITLES.LOG > build/TITLE.IDX) + [ -f build/index ] || ((for f in res/TITLE.DHGR/*; do echo "$$(basename $$f)"; done) | bin/buildindexedfile.sh -a build/TOTAL.DATA res/TITLE.DHGR build/DHGR.TITLES.LOG > build/DTITLE.IDX) # # precompute indexed files for game help +# note: these can be padded because they're loaded into $800 at a time when $800..$1FFF is clobber-able # - [ -f build/GAMEHELP.IDX ] || (bin/buildindexedfile.sh -p -a build/TOTAL.DATA build/GAMEHELP < build/GAMES.SORTED > build/GAMEHELP.IDX) + [ -f build/index ] || (bin/buildindexedfile.sh -p -a build/TOTAL.DATA build/GAMEHELP < build/GAMES.SORTED > build/GAMEHELP.IDX) # # precompute indexed files for slideshows +# note: these can be padded because they're loaded into $800 at a time when $800..$1FFF is clobber-able # - [ -f build/SLIDESHOW.IDX ] || ((for f in res/SS/*; do \ + [ -f build/index ] || ((for f in res/SS/*; do \ [ $$(echo "$$(basename $$f)" | cut -c-3) = "ACT" ] && \ bin/buildaction.sh build/GAMES.CONF < "$$f" > "build/SS/$$(basename $$f)" || \ bin/buildtitle.sh build/GAMES.CONF < "$$f" > "build/SS/$$(basename $$f)"; \ echo "$$(basename $$f)"; \ done) | bin/buildindexedfile.sh -p -a build/TOTAL.DATA build/SS > build/SLIDESHOW.IDX) - [ -f build/MINIATTRACT.IDX ] || ((for f in res/ATTRACT/*; do \ + [ -f build/index ] || ((for f in res/ATTRACT/*; do \ bin/buildokvs.sh < "$$f" > "build/ATTRACT/$$(basename $$f)"; \ echo "$$(basename $$f)"; \ done) | bin/buildindexedfile.sh -p -a build/TOTAL.DATA build/ATTRACT > build/MINIATTRACT.IDX) # # precompute indexed files for graphic effects +# note: these can be padded because they're loaded into $6000 at a time when $6000..$BEFF is clobber-able # - [ -f build/FX.IDX ] || (bin/buildindexedfile.sh -p -a build/TOTAL.DATA build/FX.INDEXED < res/FX.CONF > build/FX.IDX) - [ -f build/DFX.IDX ] || (bin/buildindexedfile.sh -p -a build/TOTAL.DATA build/FX.INDEXED < res/DFX.CONF > build/DFX.IDX) + [ -f build/index ] || (bin/buildindexedfile.sh -p -a build/TOTAL.DATA build/FX.INDEXED < res/FX.CONF > build/FX.IDX) + [ -f build/index ] || (bin/buildindexedfile.sh -p -a build/TOTAL.DATA build/FX.INDEXED < res/DFX.CONF > build/DFX.IDX) # # precompute indexed files for HGR & DHGR action screenshots # note: these can not be padded because they are compressed and the decompressor needs the exact size # - [ -f build/HGR0.IDX ] || ((for f in res/ACTION.HGR/[ABCD]*; do echo "$$(basename $$f)"; done) | bin/buildindexedfile.sh -a build/TOTAL.DATA res/ACTION.HGR > build/HGR0.IDX) - [ -f build/HGR1.IDX ] || ((for f in res/ACTION.HGR/[EFGH]*; do echo "$$(basename $$f)"; done) | bin/buildindexedfile.sh -a build/TOTAL.DATA res/ACTION.HGR > build/HGR1.IDX) - [ -f build/HGR2.IDX ] || ((for f in res/ACTION.HGR/[IJKL]*; do echo "$$(basename $$f)"; done) | bin/buildindexedfile.sh -a build/TOTAL.DATA res/ACTION.HGR > build/HGR2.IDX) - [ -f build/HGR3.IDX ] || ((for f in res/ACTION.HGR/[MNOP]*; do echo "$$(basename $$f)"; done) | bin/buildindexedfile.sh -a build/TOTAL.DATA res/ACTION.HGR > build/HGR3.IDX) - [ -f build/HGR4.IDX ] || ((for f in res/ACTION.HGR/[QRST]*; do echo "$$(basename $$f)"; done) | bin/buildindexedfile.sh -a build/TOTAL.DATA res/ACTION.HGR > build/HGR4.IDX) - [ -f build/HGR5.IDX ] || ((for f in res/ACTION.HGR/[UVWX]*; do echo "$$(basename $$f)"; done) | bin/buildindexedfile.sh -a build/TOTAL.DATA res/ACTION.HGR > build/HGR5.IDX) - [ -f build/HGR6.IDX ] || ((for f in res/ACTION.HGR/[YZ]*; do echo "$$(basename $$f)"; done) | bin/buildindexedfile.sh -a build/TOTAL.DATA res/ACTION.HGR > build/HGR6.IDX) - [ -f build/DHGR.IDX ] || ((for f in res/ACTION.DHGR/*; do echo "$$(basename $$f)"; done) | bin/buildindexedfile.sh -a build/TOTAL.DATA res/ACTION.DHGR > build/DHGR.IDX) + [ -f build/index ] || ((for f in res/ACTION.HGR/[ABCD]*; do echo "$$(basename $$f)"; done) | bin/buildindexedfile.sh -a build/TOTAL.DATA res/ACTION.HGR > build/HGR0.IDX) + [ -f build/index ] || ((for f in res/ACTION.HGR/[EFGH]*; do echo "$$(basename $$f)"; done) | bin/buildindexedfile.sh -a build/TOTAL.DATA res/ACTION.HGR > build/HGR1.IDX) + [ -f build/index ] || ((for f in res/ACTION.HGR/[IJKL]*; do echo "$$(basename $$f)"; done) | bin/buildindexedfile.sh -a build/TOTAL.DATA res/ACTION.HGR > build/HGR2.IDX) + [ -f build/index ] || ((for f in res/ACTION.HGR/[MNOP]*; do echo "$$(basename $$f)"; done) | bin/buildindexedfile.sh -a build/TOTAL.DATA res/ACTION.HGR > build/HGR3.IDX) + [ -f build/index ] || ((for f in res/ACTION.HGR/[QRST]*; do echo "$$(basename $$f)"; done) | bin/buildindexedfile.sh -a build/TOTAL.DATA res/ACTION.HGR > build/HGR4.IDX) + [ -f build/index ] || ((for f in res/ACTION.HGR/[UVWX]*; do echo "$$(basename $$f)"; done) | bin/buildindexedfile.sh -a build/TOTAL.DATA res/ACTION.HGR > build/HGR5.IDX) + [ -f build/index ] || ((for f in res/ACTION.HGR/[YZ]*; do echo "$$(basename $$f)"; done) | bin/buildindexedfile.sh -a build/TOTAL.DATA res/ACTION.HGR > build/HGR6.IDX) + [ -f build/index ] || ((for f in res/ACTION.DHGR/*; do echo "$$(basename $$f)"; done) | bin/buildindexedfile.sh -a build/TOTAL.DATA res/ACTION.DHGR > build/DHGR.IDX) # # precompute indexed files for GR action screenshots # note: these can be padded because they are not compressed # - [ -f build/GR.IDX ] || ((for f in res/ACTION.GR/*; do echo "$$(basename $$f)"; done) | bin/buildindexedfile.sh -a -p build/TOTAL.DATA res/ACTION.GR > build/GR.IDX) + [ -f build/index ] || ((for f in res/ACTION.GR/*; do echo "$$(basename $$f)"; done) | bin/buildindexedfile.sh -a -p build/TOTAL.DATA res/ACTION.GR > build/GR.IDX) # # precompute indexed files for SHR artwork # note: these can not be padded because they are compressed and the decompressor needs the exact size # - [ -f build/ARTWORK.IDX ] || ((for f in res/ARTWORK.SHR/*; do \ + [ -f build/index ] || ((for f in res/ARTWORK.SHR/*; do \ echo "$$(basename $$f)"; \ done) | bin/buildindexedfile.sh -a build/TOTAL.DATA res/ARTWORK.SHR > build/ARTWORK.IDX) # +# create search indexes for each variation of (game-requires-joystick) X (game-requires-128K) +# in the form of OKVS data structures, plus game counts in the form of source files +# + [ -f build/index ] || (grep "^00" < build/GAMES.CONF | bin/buildsearch.sh src/index/count00.a build/HGR.TITLES.LOG build/DHGR.TITLES.LOG > build/SEARCH00.IDX) + [ -f build/index ] || (grep "^0" < build/GAMES.CONF | bin/buildsearch.sh src/index/count01.a build/HGR.TITLES.LOG build/DHGR.TITLES.LOG > build/SEARCH01.IDX) + [ -f build/index ] || (grep "^.0" < build/GAMES.CONF | bin/buildsearch.sh src/index/count10.a build/HGR.TITLES.LOG build/DHGR.TITLES.LOG > build/SEARCH10.IDX) + [ -f build/index ] || (bin/buildsearch.sh src/index/count11.a build/HGR.TITLES.LOG build/DHGR.TITLES.LOG < build/GAMES.CONF > build/SEARCH11.IDX) +# # add IDX files to the combined index file and generate # the index records that callers use to reference them # @@ -185,6 +191,8 @@ index: md asmfx asmprelaunch compress bin/addfile.sh build/GAMEHELP.IDX build/TOTAL.IDX > src/index/gamehelp.idx.a bin/addfile.sh build/SLIDESHOW.IDX build/TOTAL.IDX > src/index/slideshow.idx.a bin/addfile.sh build/MINIATTRACT.IDX build/TOTAL.IDX > src/index/miniattract.idx.a + bin/addfile.sh build/TITLE.IDX build/TOTAL.IDX > src/index/title.idx.a + bin/addfile.sh build/DTITLE.IDX build/TOTAL.IDX > src/index/dtitle.idx.a bin/addfile.sh build/HGR0.IDX build/TOTAL.IDX > src/index/hgr0.idx.a bin/addfile.sh build/HGR1.IDX build/TOTAL.IDX > src/index/hgr1.idx.a bin/addfile.sh build/HGR2.IDX build/TOTAL.IDX > src/index/hgr2.idx.a @@ -195,6 +203,7 @@ index: md asmfx asmprelaunch compress bin/addfile.sh build/DHGR.IDX build/TOTAL.IDX > src/index/dhgr.idx.a bin/addfile.sh build/GR.IDX build/TOTAL.IDX > src/index/gr.idx.a bin/addfile.sh build/ARTWORK.IDX build/TOTAL.IDX > src/index/artwork.idx.a + touch build/index asmlauncher: md $(ACME) -DBUILDNUMBER=`git rev-list --count HEAD` src/4cade.a 2>build/relbase.log diff --git a/bin/buildindexedfile.sh b/bin/buildindexedfile.sh index c87c7e0f4..359946cef 100755 --- a/bin/buildindexedfile.sh +++ b/bin/buildindexedfile.sh @@ -9,6 +9,7 @@ # stdout - binary OKVS data structure # 1 - output filename for data file # 2 - input directory of files to merge into data file +# 3 - (optional) output filename for log of key,offset,size pad=false append=false @@ -29,6 +30,11 @@ if [ "$append" = false ]; then fi touch "$1" +if [ "${#3}" -ne "0" ]; then + rm -f "$3" + touch "$3" +fi + # if there is a file called "STANDARD" in the input directory, add it now # because we will reuse it for any files that don't exist if [ -f "$2"/STANDARD ]; then @@ -49,30 +55,26 @@ source=$(mktemp) echo "!byte ${#key}+7" # OKVS record length echo "!byte ${#key}" # OKVS key length echo "!text \"$key\"" # OKVS key - if [ -f "$2/$key" ]; then # if file exists, determine offset and size + if [ ! -e "$2/$key" ]; then # if file does not exist, use standard offset and size + offset="$standardoffset" + size="$standardsize" + else # otherwise calculate offset and size from file and options offset=$(wc -c < "$1") - echo "!be24 $offset" # offset into merged data file - echo -n "!le16 " size=$(wc -c < "$2/$key") if [ "$pad" = true ]; then # If offset+size does not cross a block boundary, use file's true size. # Otherwise, round up size to the next block boundary. # This padding does not get added to the file; it is just an # optimization to avoid a partial copy on the last block read. - if [ $(($offset / 512)) -eq $((($offset + $size) / 512)) ]; then - echo "$size" - else - echo "$(((($offset + $size + 511) & -512) - $offset))" + if [ $(($offset / 512)) -ne $((($offset + $size) / 512)) ]; then + size=$(((($offset + $size + 511) & -512) - $offset)) fi - else - # Caller said never pad, so always use file's true size. - echo "$size" fi cat "$2/$key" >> "$1" # append this file to the end of the merged data file - else # if file does not exist, reuse STANDARD file - echo "!be24 $standardoffset" - echo "!le16 $standardsize" fi + echo "!be24 $offset" + echo "!le16 $size" + [ "${#3}" -ne "0" ] && echo "$key,$offset,$size" >> "$3" done < "$records") > "$source" # assemble temp source file into binary OKVS data structure, then output that diff --git a/bin/buildsearch.sh b/bin/buildsearch.sh index 0e877ff5d..2af64f5de 100755 --- a/bin/buildsearch.sh +++ b/bin/buildsearch.sh @@ -1,9 +1,21 @@ #!/bin/bash +# parameters +# stdin - input containing list of game metadata, filename, display name (e.g. GAMES.CONF or some subset of it) +# stdout - binary OKVS data structure +# 1 - output filename for game count in assembler code format +# 2 - input filename of HGR titles, offsets, and sizes +# 3 - input filename of DHGR titles, offsets, and sizes + # make temp file with just the key/value pairs (strip blank lines, comments, eof marker) records=$(mktemp) awk '!/^$|^#|^\[/' > "$records" +# read logs of offsets & sizes for HGR and DHGR titles +# that were generated by an earlier script +hgrlog=$(< "$2") +dhgrlog=$(< "$3") + # generate source file with game count (echo ";" echo "; Game count" @@ -20,13 +32,24 @@ source=$(mktemp) dhgr=$(echo "$key" | cut -c3) # 'has DHGR title screen' flag (0 or 1) cheat=$(echo "$key" | cut -c4) # 'cheat category' (0..5) key=$(echo "$key" | cut -d"," -f2) - echo "!byte ${#key}+${#value}+5" # OKVS record length + if [ "$dhgr" -eq "0" ]; then + offset=$hgrlog + size=$hgrlog + else + offset=$dhgrlog + size=$dhgrlog + fi + offset=$(echo "$offset" | awk -F, '/^'"$key"',/ { print $2 }') + size=$(echo "$size" | awk -F, '/^'"$key"',/ { print $3 }') + echo "!byte ${#key}+${#value}+10" # OKVS record length echo "!byte ${#key}" # OKVS key length echo "!text \"$key\"" # OKVS key (filename) echo "!byte ${#value}" # OKVS value length echo "!text \"$value\"" # OKVS value (display name) echo "!byte 1" echo "!byte $((dhgr*128))+$cheat" + echo "!be24 $offset" + echo "!le16 $size" done < "$records") > "$source" # assemble temp source file into binary OKVS data structure, then output that diff --git a/res/TITLE.DHGR/FLAPPLE.BIRD b/res/TITLE.DHGR/FLAPPLE.BIRD index 7be9c7b92787fe98ef36433302a5a5020b58541f..476bd73a9ae52a96992f100352a60443b82fcc9b 100644 GIT binary patch delta 17 TcmexS-_XFg;fFm30~7!NJgfw0 delta 8 PcmZo@VEj?P;fFl{5}^cO diff --git a/res/TITLE.DHGR/_FileInformation.txt b/res/TITLE.DHGR/_FileInformation.txt deleted file mode 100644 index 96b379af0..000000000 --- a/res/TITLE.DHGR/_FileInformation.txt +++ /dev/null @@ -1,37 +0,0 @@ -# This file is automatically generated - -AIRHEART=Type(06),AuxType(4000),Access(C3) -ALIENS=Type(06),AuxType(4000),Access(C3) -BAD.DUDES=Type(06),AuxType(4000),Access(C3) -BATMAN=Type(06),AuxType(4000),Access(C3) -BRUCE.LEE=Type(06),AuxType(4000),Access(C3) -COLUMNS=Type(06),AuxType(4000),Access(C3) -DEATH.SWORD=Type(06),AuxType(4000),Access(C3) -DG=Type(06),AuxType(4000),Access(C3) -FLAPPLE.BIRD=Type(06),AuxType(4000),Access(C3) -HEAVY.BARREL=Type(06),AuxType(4000),Access(C3) -I2=Type(06),AuxType(4000),Access(C3) -IE=Type(06),AuxType(4000),Access(C3) -INDIANA.JONES=Type(06),AuxType(4000),Access(C3) -MS=Type(06),AuxType(4000),Access(C3) -PIPE.DREAM=Type(06),AuxType(4000),Access(C3) -PLATOON=Type(06),AuxType(4000),Access(C3) -PP=Type(06),AuxType(4000),Access(C3) -QIX=Type(06),AuxType(4000),Access(C3) -RADWARRIOR=Type(06),AuxType(4000),Access(C3) -RAMPAGE=Type(06),AuxType(4000),Access(C3) -RENEGADE=Type(06),AuxType(4000),Access(C3) -ROBOCOP=Type(06),AuxType(4000),Access(C3) -RR=Type(06),AuxType(4000),Access(C3) -SLICKS=Type(06),AuxType(4000),Access(C3) -SO=Type(06),AuxType(4000),Access(C3) -SPIDERBOT=Type(06),AuxType(4000),Access(C3) -SS3=Type(06),AuxType(4000),Access(C3) -TC=Type(06),AuxType(4000),Access(C3) -TETRIS=Type(06),AuxType(4000),Access(C3) -THE.LAST.NINJA=Type(06),AuxType(4000),Access(C3) -THEXDER=Type(06),AuxType(4000),Access(C3) -TS=Type(06),AuxType(4000),Access(C3) -VICTORY.ROAD=Type(06),AuxType(4000),Access(C3) -WF=Type(06),AuxType(4000),Access(C3) -_FileInformation.txt=Type(06),AuxType(4000),Access(C3) diff --git a/res/TITLE.HGR/_FileInformation.txt b/res/TITLE.HGR/_FileInformation.txt deleted file mode 100644 index 179c30476..000000000 --- a/res/TITLE.HGR/_FileInformation.txt +++ /dev/null @@ -1,384 +0,0 @@ -# This file is automatically generated - -A.CITY.DIES=Type(06),AuxType(4000),Access(C3) -A.E=Type(06),AuxType(4000),Access(C3) -AA=Type(06),AuxType(4000),Access(C3) -AB=Type(06),AuxType(4000),Access(C3) -AC=Type(06),AuxType(4000),Access(C3) -AF=Type(06),AuxType(4000),Access(C3) -AGENT.U.S.A=Type(06),AuxType(4000),Access(C3) -ALCAZAR=Type(06),AuxType(4000),Access(C3) -ALIEN.AMBUSH=Type(06),AuxType(4000),Access(C3) -ALIEN.DOWNPOUR=Type(06),AuxType(4000),Access(C3) -ALIEN.LANDER=Type(06),AuxType(4000),Access(C3) -ALIEN.MUNCHIES=Type(06),AuxType(4000),Access(C3) -ALIEN.TYPHOON=Type(06),AuxType(4000),Access(C3) -ANKH=Type(06),AuxType(4000),Access(C3) -AO=Type(06),AuxType(4000),Access(C3) -APE.ESCAPE=Type(06),AuxType(4000),Access(C3) -APPLE.INVADER=Type(06),AuxType(4000),Access(C3) -APPLE.PANIC=Type(06),AuxType(4000),Access(C3) -AQUATRON=Type(06),AuxType(4000),Access(C3) -ARCHON=Type(06),AuxType(4000),Access(C3) -ARCHON.II=Type(06),AuxType(4000),Access(C3) -ARCTIC.FOX=Type(06),AuxType(4000),Access(C3) -ARENA=Type(06),AuxType(4000),Access(C3) -ARGOS=Type(06),AuxType(4000),Access(C3) -ARKANOID=Type(06),AuxType(4000),Access(C3) -ARTESIANS=Type(06),AuxType(4000),Access(C3) -AS=Type(06),AuxType(4000),Access(C3) -AXIS.ASSASSIN=Type(06),AuxType(4000),Access(C3) -AZTEC=Type(06),AuxType(4000),Access(C3) -B1=Type(06),AuxType(4000),Access(C3) -B2=Type(06),AuxType(4000),Access(C3) -BALLBLAZER=Type(06),AuxType(4000),Access(C3) -BANDITS=Type(06),AuxType(4000),Access(C3) -BATTLE.CRUISER=Type(06),AuxType(4000),Access(C3) -BATTLEZONE=Type(06),AuxType(4000),Access(C3) -BB=Type(06),AuxType(4000),Access(C3) -BC=Type(06),AuxType(4000),Access(C3) -BEACH.LANDING=Type(06),AuxType(4000),Access(C3) -BEER.RUN=Type(06),AuxType(4000),Access(C3) -BEJEWELED=Type(06),AuxType(4000),Access(C3) -BELLHOP=Type(06),AuxType(4000),Access(C3) -BERZAP=Type(06),AuxType(4000),Access(C3) -BEZARE=Type(06),AuxType(4000),Access(C3) -BEZOFF=Type(06),AuxType(4000),Access(C3) -BH=Type(06),AuxType(4000),Access(C3) -BK=Type(06),AuxType(4000),Access(C3) -BLACK.MAGIC=Type(06),AuxType(4000),Access(C3) -BLISTER.BALL=Type(06),AuxType(4000),Access(C3) -BOA=Type(06),AuxType(4000),Access(C3) -BOLO=Type(06),AuxType(4000),Access(C3) -BORG=Type(06),AuxType(4000),Access(C3) -BOULDER.DASH=Type(06),AuxType(4000),Access(C3) -BOULDER.DASH.II=Type(06),AuxType(4000),Access(C3) -BQ=Type(06),AuxType(4000),Access(C3) -BR=Type(06),AuxType(4000),Access(C3) -BRUCE.LEE=Type(06),AuxType(4000),Access(C3) -BT=Type(06),AuxType(4000),Access(C3) -BU=Type(06),AuxType(4000),Access(C3) -BUBBLE.BOBBLE=Type(06),AuxType(4000),Access(C3) -BUG.ATTACK=Type(06),AuxType(4000),Access(C3) -BUG.BATTLE=Type(06),AuxType(4000),Access(C3) -BUZZARD.BAIT=Type(06),AuxType(4000),Access(C3) -BW=Type(06),AuxType(4000),Access(C3) -BY=Type(06),AuxType(4000),Access(C3) -CANYON.CLIMBER=Type(06),AuxType(4000),Access(C3) -CAPTAIN.POWER=Type(06),AuxType(4000),Access(C3) -CB=Type(06),AuxType(4000),Access(C3) -CC=Type(06),AuxType(4000),Access(C3) -CEILING.ZERO=Type(06),AuxType(4000),Access(C3) -CENTIPEDE=Type(06),AuxType(4000),Access(C3) -CF=Type(06),AuxType(4000),Access(C3) -CG=Type(06),AuxType(4000),Access(C3) -CHIP.OUT=Type(06),AuxType(4000),Access(C3) -CHIVALRY=Type(06),AuxType(4000),Access(C3) -CHOPLIFTER=Type(06),AuxType(4000),Access(C3) -CL=Type(06),AuxType(4000),Access(C3) -COLUMNS=Type(06),AuxType(4000),Access(C3) -COMMANDO=Type(06),AuxType(4000),Access(C3) -CONAN=Type(06),AuxType(4000),Access(C3) -CONGO=Type(06),AuxType(4000),Access(C3) -CONGO.BONGO=Type(06),AuxType(4000),Access(C3) -COSMIC.COMBAT=Type(06),AuxType(4000),Access(C3) -COUNTY.FAIR=Type(06),AuxType(4000),Access(C3) -CQ=Type(06),AuxType(4000),Access(C3) -CR=Type(06),AuxType(4000),Access(C3) -CRAZY.MAZEY=Type(06),AuxType(4000),Access(C3) -CRICKATEER=Type(06),AuxType(4000),Access(C3) -CRIME.WAVE=Type(06),AuxType(4000),Access(C3) -CRISIS.MOUNTAIN=Type(06),AuxType(4000),Access(C3) -CROSSFIRE=Type(06),AuxType(4000),Access(C3) -CRYSTAL.CASTLES=Type(06),AuxType(4000),Access(C3) -CS=Type(06),AuxType(4000),Access(C3) -CUBIT=Type(06),AuxType(4000),Access(C3) -CV=Type(06),AuxType(4000),Access(C3) -CW=Type(06),AuxType(4000),Access(C3) -CYBER.STRIKE=Type(06),AuxType(4000),Access(C3) -CYCLOD=Type(06),AuxType(4000),Access(C3) -DANGEROUS.DAVE=Type(06),AuxType(4000),Access(C3) -DEEP.SPACE=Type(06),AuxType(4000),Access(C3) -DEFENDER=Type(06),AuxType(4000),Access(C3) -DEMONIC.DECKS=Type(06),AuxType(4000),Access(C3) -DEPTH.CHARGE=Type(06),AuxType(4000),Access(C3) -DIAMOND.MINE=Type(06),AuxType(4000),Access(C3) -DIG.DUG=Type(06),AuxType(4000),Access(C3) -DINO.EGGS=Type(06),AuxType(4000),Access(C3) -DINO.SMURF=Type(06),AuxType(4000),Access(C3) -DIVE.BOMBER=Type(06),AuxType(4000),Access(C3) -DJ=Type(06),AuxType(4000),Access(C3) -DM=Type(06),AuxType(4000),Access(C3) -DOGFIGHT.II=Type(06),AuxType(4000),Access(C3) -DONKEY.KONG=Type(06),AuxType(4000),Access(C3) -DOUBLE.TROUBLE=Type(06),AuxType(4000),Access(C3) -DRAGONFIRE=Type(06),AuxType(4000),Access(C3) -DRELBS=Type(06),AuxType(4000),Access(C3) -DROL=Type(06),AuxType(4000),Access(C3) -DU=Type(06),AuxType(4000),Access(C3) -DUNG.BEETLES=Type(06),AuxType(4000),Access(C3) -EARLY.BIRD=Type(06),AuxType(4000),Access(C3) -EI=Type(06),AuxType(4000),Access(C3) -EPOCH=Type(06),AuxType(4000),Access(C3) -ES=Type(06),AuxType(4000),Access(C3) -EVOLUTION=Type(06),AuxType(4000),Access(C3) -EXTERMINATOR=Type(06),AuxType(4000),Access(C3) -FALCONS=Type(06),AuxType(4000),Access(C3) -FAT.CITY=Type(06),AuxType(4000),Access(C3) -FEDERATION=Type(06),AuxType(4000),Access(C3) -FIREBIRD=Type(06),AuxType(4000),Access(C3) -FIREBUG=Type(06),AuxType(4000),Access(C3) -FLIP.OUT=Type(06),AuxType(4000),Access(C3) -FLY.WARS=Type(06),AuxType(4000),Access(C3) -FORCE.7=Type(06),AuxType(4000),Access(C3) -FRAZZLE=Type(06),AuxType(4000),Access(C3) -FREE.FALL=Type(06),AuxType(4000),Access(C3) -FROGGER=Type(06),AuxType(4000),Access(C3) -FROGGER.II=Type(06),AuxType(4000),Access(C3) -FS2=Type(06),AuxType(4000),Access(C3) -G.I.JOE=Type(06),AuxType(4000),Access(C3) -GALACTIC.ATTACK=Type(06),AuxType(4000),Access(C3) -GALAXIAN=Type(06),AuxType(4000),Access(C3) -GALAXY.GATES=Type(06),AuxType(4000),Access(C3) -GAMMA.GOBLINS=Type(06),AuxType(4000),Access(C3) -GAUNTLET=Type(06),AuxType(4000),Access(C3) -GENESIS=Type(06),AuxType(4000),Access(C3) -GENETIC.DRIFT=Type(06),AuxType(4000),Access(C3) -GENIUS=Type(06),AuxType(4000),Access(C3) -GENIUS.2=Type(06),AuxType(4000),Access(C3) -GENIUS.3=Type(06),AuxType(4000),Access(C3) -GHOSTBUSTERS=Type(06),AuxType(4000),Access(C3) -GOLD.RUSH=Type(06),AuxType(4000),Access(C3) -GORGON=Type(06),AuxType(4000),Access(C3) -GRAPPLE=Type(06),AuxType(4000),Access(C3) -GREMLINS=Type(06),AuxType(4000),Access(C3) -GUARDIAN=Type(06),AuxType(4000),Access(C3) -GUMBALL=Type(06),AuxType(4000),Access(C3) -H.E.R.O=Type(06),AuxType(4000),Access(C3) -HADRON=Type(06),AuxType(4000),Access(C3) -HANDY.DANDY=Type(06),AuxType(4000),Access(C3) -HARD.HAT.MACK=Type(06),AuxType(4000),Access(C3) -HEAD.ON=Type(06),AuxType(4000),Access(C3) -HIGH.RISE=Type(06),AuxType(4000),Access(C3) -HORIZON.V=Type(06),AuxType(4000),Access(C3) -HUNGRYBOY=Type(06),AuxType(4000),Access(C3) -HYPER.HEAD.ON=Type(06),AuxType(4000),Access(C3) -I1=Type(06),AuxType(4000),Access(C3) -IKARI.WARRIORS=Type(06),AuxType(4000),Access(C3) -INFILTRATOR=Type(06),AuxType(4000),Access(C3) -INFILTRATOR.2=Type(06),AuxType(4000),Access(C3) -IO=Type(06),AuxType(4000),Access(C3) -IP=Type(06),AuxType(4000),Access(C3) -JAWBREAKER=Type(06),AuxType(4000),Access(C3) -JAWBREAKER.II=Type(06),AuxType(4000),Access(C3) -JELLYFISH=Type(06),AuxType(4000),Access(C3) -JOUST=Type(06),AuxType(4000),Access(C3) -JUGGLER=Type(06),AuxType(4000),Access(C3) -JUMP.JET=Type(06),AuxType(4000),Access(C3) -JUMPMAN=Type(06),AuxType(4000),Access(C3) -JUNGLE.HUNT=Type(06),AuxType(4000),Access(C3) -KAMIKAZE=Type(06),AuxType(4000),Access(C3) -KARATEKA=Type(06),AuxType(4000),Access(C3) -KID.NIKI=Type(06),AuxType(4000),Access(C3) -KUNG.FU.MASTER=Type(06),AuxType(4000),Access(C3) -LA=Type(06),AuxType(4000),Access(C3) -LABYRINTH=Type(06),AuxType(4000),Access(C3) -LADY.TUT=Type(06),AuxType(4000),Access(C3) -LANCASTER=Type(06),AuxType(4000),Access(C3) -LASER.BOUNCE=Type(06),AuxType(4000),Access(C3) -LAZER.SILK=Type(06),AuxType(4000),Access(C3) -LC=Type(06),AuxType(4000),Access(C3) -LEMMINGS=Type(06),AuxType(4000),Access(C3) -LG=Type(06),AuxType(4000),Access(C3) -LL=Type(06),AuxType(4000),Access(C3) -LODE.RUNNER=Type(06),AuxType(4000),Access(C3) -LOST.TOMB=Type(06),AuxType(4000),Access(C3) -LP=Type(06),AuxType(4000),Access(C3) -LUNAR.LEEPERS=Type(06),AuxType(4000),Access(C3) -M.I.R.V=Type(06),AuxType(4000),Access(C3) -MAD.BOMBER=Type(06),AuxType(4000),Access(C3) -MAD.RAT=Type(06),AuxType(4000),Access(C3) -MANIC.MINER=Type(06),AuxType(4000),Access(C3) -MARAUDER=Type(06),AuxType(4000),Access(C3) -MARBLE.MADNESS=Type(06),AuxType(4000),Access(C3) -MARS.CARS=Type(06),AuxType(4000),Access(C3) -MATING.ZONE=Type(06),AuxType(4000),Access(C3) -MAXWELL.MANOR=Type(06),AuxType(4000),Access(C3) -MAZEBLOX=Type(06),AuxType(4000),Access(C3) -MB=Type(06),AuxType(4000),Access(C3) -MC=Type(06),AuxType(4000),Access(C3) -MD=Type(06),AuxType(4000),Access(C3) -MEGABOTS=Type(06),AuxType(4000),Access(C3) -MI=Type(06),AuxType(4000),Access(C3) -MICRO.INVADERS=Type(06),AuxType(4000),Access(C3) -MICROWAVE=Type(06),AuxType(4000),Access(C3) -MINER.2049ER=Type(06),AuxType(4000),Access(C3) -MINER.II=Type(06),AuxType(4000),Access(C3) -MINIT.MAN=Type(06),AuxType(4000),Access(C3) -MINOTAUR=Type(06),AuxType(4000),Access(C3) -MM=Type(06),AuxType(4000),Access(C3) -MONSTER.MASH=Type(06),AuxType(4000),Access(C3) -MOON.PATROL=Type(06),AuxType(4000),Access(C3) -MOUSKATTACK=Type(06),AuxType(4000),Access(C3) -MP=Type(06),AuxType(4000),Access(C3) -MR=Type(06),AuxType(4000),Access(C3) -MT=Type(06),AuxType(4000),Access(C3) -MZ=Type(06),AuxType(4000),Access(C3) -N.O.R.A.D=Type(06),AuxType(4000),Access(C3) -NEON=Type(06),AuxType(4000),Access(C3) -NEPTUNE=Type(06),AuxType(4000),Access(C3) -NEUTRONS=Type(06),AuxType(4000),Access(C3) -NI=Type(06),AuxType(4000),Access(C3) -NIBBLER=Type(06),AuxType(4000),Access(C3) -NIGHT.STALKER=Type(06),AuxType(4000),Access(C3) -NM=Type(06),AuxType(4000),Access(C3) -NT=Type(06),AuxType(4000),Access(C3) -OI=Type(06),AuxType(4000),Access(C3) -OID.ZONE=Type(06),AuxType(4000),Access(C3) -OM=Type(06),AuxType(4000),Access(C3) -ON.THE.RUN=Type(06),AuxType(4000),Access(C3) -ORBITRON=Type(06),AuxType(4000),Access(C3) -OUTPOST=Type(06),AuxType(4000),Access(C3) -OUTWORLD=Type(06),AuxType(4000),Access(C3) -OW=Type(06),AuxType(4000),Access(C3) -PACMAN=Type(06),AuxType(4000),Access(C3) -PAPERBOY=Type(06),AuxType(4000),Access(C3) -PB=Type(06),AuxType(4000),Access(C3) -PEEPING.TOM=Type(06),AuxType(4000),Access(C3) -PEGASUS.II=Type(06),AuxType(4000),Access(C3) -PENETRATOR=Type(06),AuxType(4000),Access(C3) -PENGO=Type(06),AuxType(4000),Access(C3) -PENTAPUS=Type(06),AuxType(4000),Access(C3) -PEST.PATROL=Type(06),AuxType(4000),Access(C3) -PHANTOMS.FIVE=Type(06),AuxType(4000),Access(C3) -PHASER.FIRE=Type(06),AuxType(4000),Access(C3) -PHOTAR=Type(06),AuxType(4000),Access(C3) -PICNIC.PARANOIA=Type(06),AuxType(4000),Access(C3) -PIG.PEN=Type(06),AuxType(4000),Access(C3) -PITFALL.II=Type(06),AuxType(4000),Access(C3) -PITSTOP.II=Type(06),AuxType(4000),Access(C3) -PLANETOIDS=Type(06),AuxType(4000),Access(C3) -PLASMANIA=Type(06),AuxType(4000),Access(C3) -PM=Type(06),AuxType(4000),Access(C3) -POLLYWOG=Type(06),AuxType(4000),Access(C3) -POOYAN=Type(06),AuxType(4000),Access(C3) -PR=Type(06),AuxType(4000),Access(C3) -PULSAR.II=Type(06),AuxType(4000),Access(C3) -QUADRANT.6112=Type(06),AuxType(4000),Access(C3) -RANDAMN=Type(06),AuxType(4000),Access(C3) -RASTER.BLASTER=Type(06),AuxType(4000),Access(C3) -RB=Type(06),AuxType(4000),Access(C3) -REAR.GUARD=Type(06),AuxType(4000),Access(C3) -RED.ALERT=Type(06),AuxType(4000),Access(C3) -REPTON=Type(06),AuxType(4000),Access(C3) -RESCUE.RAIDERS=Type(06),AuxType(4000),Access(C3) -RETRO.FEVER=Type(06),AuxType(4000),Access(C3) -RG=Type(06),AuxType(4000),Access(C3) -RI=Type(06),AuxType(4000),Access(C3) -RIBBIT=Type(06),AuxType(4000),Access(C3) -RM=Type(06),AuxType(4000),Access(C3) -ROACH.HOTEL=Type(06),AuxType(4000),Access(C3) -ROADBLOCK=Type(06),AuxType(4000),Access(C3) -ROBOT.BATTLE=Type(06),AuxType(4000),Access(C3) -ROBOTRON.2084=Type(06),AuxType(4000),Access(C3) -ROUND.ABOUT=Type(06),AuxType(4000),Access(C3) -RUN.FOR.IT=Type(06),AuxType(4000),Access(C3) -RUSSKI.DUCK=Type(06),AuxType(4000),Access(C3) -S2=Type(06),AuxType(4000),Access(C3) -SABOTAGE=Type(06),AuxType(4000),Access(C3) -SAMMY.LIGHTFOOT=Type(06),AuxType(4000),Access(C3) -SARACEN=Type(06),AuxType(4000),Access(C3) -SC=Type(06),AuxType(4000),Access(C3) -SD=Type(06),AuxType(4000),Access(C3) -SEA.DRAGON=Type(06),AuxType(4000),Access(C3) -SEAFOX=Type(06),AuxType(4000),Access(C3) -SERPENTINE=Type(06),AuxType(4000),Access(C3) -SHAMUS=Type(06),AuxType(4000),Access(C3) -SHORT.CIRCUIT=Type(06),AuxType(4000),Access(C3) -SI=Type(06),AuxType(4000),Access(C3) -SKYFOX=Type(06),AuxType(4000),Access(C3) -SNACK.ATTACK=Type(06),AuxType(4000),Access(C3) -SNAKE.BYTE=Type(06),AuxType(4000),Access(C3) -SNEAKERS=Type(06),AuxType(4000),Access(C3) -SNOGGLE=Type(06),AuxType(4000),Access(C3) -SOLO.FLIGHT=Type(06),AuxType(4000),Access(C3) -SPACE.EGGS=Type(06),AuxType(4000),Access(C3) -SPACE.KADET=Type(06),AuxType(4000),Access(C3) -SPACE.QUARKS=Type(06),AuxType(4000),Access(C3) -SPACE.RAIDERS=Type(06),AuxType(4000),Access(C3) -SPARE.CHANGE=Type(06),AuxType(4000),Access(C3) -SPECTRE=Type(06),AuxType(4000),Access(C3) -SPELLWIELDER=Type(06),AuxType(4000),Access(C3) -SPIDER.RAID=Type(06),AuxType(4000),Access(C3) -SPINDIZZY=Type(06),AuxType(4000),Access(C3) -SPUTNIK.ATTACK=Type(06),AuxType(4000),Access(C3) -SPY.HUNTER=Type(06),AuxType(4000),Access(C3) -SS=Type(06),AuxType(4000),Access(C3) -SS2=Type(06),AuxType(4000),Access(C3) -STAR.AVENGER=Type(06),AuxType(4000),Access(C3) -STAR.BLAZER=Type(06),AuxType(4000),Access(C3) -STAR.CLONES=Type(06),AuxType(4000),Access(C3) -STAR.CRUISER=Type(06),AuxType(4000),Access(C3) -STAR.DANCE=Type(06),AuxType(4000),Access(C3) -STAR.MAZE=Type(06),AuxType(4000),Access(C3) -STAR.THIEF=Type(06),AuxType(4000),Access(C3) -STARBALL=Type(06),AuxType(4000),Access(C3) -STARBLASTER=Type(06),AuxType(4000),Access(C3) -STARGATE=Type(06),AuxType(4000),Access(C3) -STARGLIDER=Type(06),AuxType(4000),Access(C3) -STARMINES=Type(06),AuxType(4000),Access(C3) -STATION.5=Type(06),AuxType(4000),Access(C3) -STELLAR.7=Type(06),AuxType(4000),Access(C3) -SU=Type(06),AuxType(4000),Access(C3) -SUCCESSION=Type(06),AuxType(4000),Access(C3) -SUPER.BUNNY=Type(06),AuxType(4000),Access(C3) -SUPER.HUEY=Type(06),AuxType(4000),Access(C3) -SUPER.PUCKMAN=Type(06),AuxType(4000),Access(C3) -SUPER.TAXMAN.2=Type(06),AuxType(4000),Access(C3) -SUPER.ZAXXON=Type(06),AuxType(4000),Access(C3) -SWASHBUCKLER=Type(06),AuxType(4000),Access(C3) -TALON=Type(06),AuxType(4000),Access(C3) -TAPPER=Type(06),AuxType(4000),Access(C3) -TB=Type(06),AuxType(4000),Access(C3) -TELEPORT=Type(06),AuxType(4000),Access(C3) -TERITORY=Type(06),AuxType(4000),Access(C3) -TETRIS=Type(06),AuxType(4000),Access(C3) -THE.BILESTOAD=Type(06),AuxType(4000),Access(C3) -THE.DAM.BUSTERS=Type(06),AuxType(4000),Access(C3) -THE.GOONIES=Type(06),AuxType(4000),Access(C3) -THE.HEIST=Type(06),AuxType(4000),Access(C3) -THE.SNAPPER=Type(06),AuxType(4000),Access(C3) -THE.SPACE.ARK=Type(06),AuxType(4000),Access(C3) -THEXDER=Type(06),AuxType(4000),Access(C3) -THIEF=Type(06),AuxType(4000),Access(C3) -THRESHOLD=Type(06),AuxType(4000),Access(C3) -THUNDER.BOMBS=Type(06),AuxType(4000),Access(C3) -TIME.PILOT=Type(06),AuxType(4000),Access(C3) -TITAN.CRONUS=Type(06),AuxType(4000),Access(C3) -TOMAHAWK=Type(06),AuxType(4000),Access(C3) -TORAX=Type(06),AuxType(4000),Access(C3) -TRACK.ATTACK=Type(06),AuxType(4000),Access(C3) -TRIAD=Type(06),AuxType(4000),Access(C3) -TROMPERS=Type(06),AuxType(4000),Access(C3) -TSUNAMI=Type(06),AuxType(4000),Access(C3) -TU=Type(06),AuxType(4000),Access(C3) -TUNNEL.TERROR=Type(06),AuxType(4000),Access(C3) -TWERPS=Type(06),AuxType(4000),Access(C3) -UD=Type(06),AuxType(4000),Access(C3) -VIDEO.VEGAS=Type(06),AuxType(4000),Access(C3) -VINDICATOR=Type(06),AuxType(4000),Access(C3) -VORTEX=Type(06),AuxType(4000),Access(C3) -VV=Type(06),AuxType(4000),Access(C3) -WALL.DEFENCE=Type(06),AuxType(4000),Access(C3) -WARGLE=Type(06),AuxType(4000),Access(C3) -WARP.DESTROYER=Type(06),AuxType(4000),Access(C3) -WAVY.NAVY=Type(06),AuxType(4000),Access(C3) -WAYOUT=Type(06),AuxType(4000),Access(C3) -WHOMPER.STOMPER=Type(06),AuxType(4000),Access(C3) -WILLY.BYTE=Type(06),AuxType(4000),Access(C3) -XEVIOUS=Type(06),AuxType(4000),Access(C3) -ZARGS=Type(06),AuxType(4000),Access(C3) -ZAXXON=Type(06),AuxType(4000),Access(C3) -ZENITH=Type(06),AuxType(4000),Access(C3) -ZOO.MASTER=Type(06),AuxType(4000),Access(C3) -_FileInformation.txt=Type(06),AuxType(4000),Access(C3) diff --git a/src/constants.a b/src/constants.a index 3a61ef39f..52dd73c7a 100644 --- a/src/constants.a +++ b/src/constants.a @@ -201,7 +201,7 @@ PRELAUNCH_STANDARD_SIZE = 61 ; LoadStandardPrelaunch, eventually to be d iCurBlockLo = $D601 ; constant iCurBlockHi = $D603 ; constant launchpatch = $D853 ; glue.launch.a -iAddToPath = $FEA5 ; Roger Rabbit, avoid, use Infiltrator 2 style instead +iAddToPath = $FEB0 ; Roger Rabbit, avoid, use Infiltrator 2 style instead itraverse = $DB31 ; Roger Rabbit, avoid, use Infiltrator 2 style instead ldrlo = $55 ; constant ldrhi = $56 ; constant diff --git a/src/glue.prorwts2.a b/src/glue.prorwts2.a index 511f6e805..f143436a2 100644 --- a/src/glue.prorwts2.a +++ b/src/glue.prorwts2.a @@ -6,11 +6,8 @@ ; Public functions ; - LoadFile ; - LoadAuxFile -; - LoadDHRFile ; - LoadIndexedFile -; -; Public variables -; - gRootDirectory +; - LoadAuxIndexedFile ; ; A general note about paths: ; @@ -35,8 +32,8 @@ ; PROGRAM ROOT DIRECTORY. ;------------------------------------------------------------------------------ -; LoadFile -; Load a file into memory all at once, using ProRWTS2 +; LoadFile/LoadAuxFile +; Load a file into main or auxiliary memory, all at once, using ProRWTS2 ; ; supports paths, see note ; @@ -51,43 +48,8 @@ LoadFile ldx #7 bne .loadcommon - -;------------------------------------------------------------------------------ -; LoadAuxFile -; Load a file into aux memory all at once, using ProRWTS2 -; -; supports paths, see note -; -; in: stack contains 6 bytes of parameters: -; +1 [word] address of length-prefixed pathname -; +3 [word] address of length-prefixed filename -; +5 [word] address to load file, or 0 to use file's default address -; out: all flags clobbered -; all registers clobbered -; gPathname clobbered -;------------------------------------------------------------------------------ LoadAuxFile ldx #6 - bne .loadcommon - -;------------------------------------------------------------------------------ -; LoadDHRFile -; load .A2FC file (uncompressed double hi-res graphics) into memory -; all at once, using ProRWTS2 -; first $2000 bytes of file are loaded into auxiliary memory $4000..$5FFF -; second $2000 bytes of file are loaded into main memory $4000..$4FFF -; -; supports paths, see note -; -; in: stack contains 4 bytes of parameters: -; +1 [word] address of length-prefixed pathname -; +3 [word] address of length-prefixed filename -; out: all flags clobbered -; all registers clobbered -; stack set to next instruction after parameters -;------------------------------------------------------------------------------ -LoadDHRFile - ldx #$84 .loadcommon pla sta PARAM @@ -117,19 +79,17 @@ LoadDHRFile +LDPARAMPTR 5, ldrlo ; set load address + jsr SwitchToBank2 plp - bmi ++ bcc + jsr LoadFileInternal jmp SwitchToBank1 + ldx #1 ; request aux memory jsr LoadFileAuxInternal jmp SwitchToBank1 -++ jsr LoadDHRFileInternal - jmp SwitchToBank1 ;------------------------------------------------------------------------------ -; LoadAuxIndexedFile -; Load a file from inside an indexed file, all at once into auxiliary memory +; LoadIndexedFile/LoadAuxIndexedFile +; Load a file from inside an indexed file, all at once, into main or auxiliary +; memory ; ; To save disk space, some collections of small, related files (e.g. per-game ; help files) are merged into a single data file with an associated index file. @@ -137,37 +97,19 @@ LoadDHRFile ; data file) and a length. ; ; Callers are responsible for loading the index file and finding the relevant -; record within the index. Most callers use okvs_find() for this. +; record within the index. Most callers use okvs_find() for this, although some +; have hard-coded records generated at build time. ; ; in: stack contains 6 bytes of parameters: ; +1 [word] pointer to filename of merged data file ; +3 [word] address of load destination -; +5 [word] pointer to index record (see note) +; +5 [word] pointer to index record ; out: all flags clobbered ; all registers clobbered ;------------------------------------------------------------------------------ LoadAuxIndexedFile lda #$EE ; INC +HIDE_NEXT_2_BYTES -;------------------------------------------------------------------------------ -; LoadIndexedFile -; Load a file from inside an indexed file, all at once -; -; To save disk space, some collections of small, related files (e.g. per-game -; help files) are merged into a single data file with an associated index file. -; The index stores the original filename along with an offset (into the merged -; data file) and a length. -; -; Callers are responsible for loading the index file and finding the relevant -; record within the index. Most callers use okvs_find() for this. -; -; in: stack contains 6 bytes of parameters: -; +1 [word] pointer to filename of merged data file -; +3 [word] address of load destination -; +5 [word] pointer to index record (see note) -; out: all flags clobbered -; all registers clobbered -;------------------------------------------------------------------------------ LoadIndexedFile lda #$8D ; STA sta @iauxreq diff --git a/src/glue.prorwts2.lc2.a b/src/glue.prorwts2.lc2.a index 0aa0b9bd9..2aa29c89b 100644 --- a/src/glue.prorwts2.lc2.a +++ b/src/glue.prorwts2.lc2.a @@ -35,28 +35,6 @@ LoadFileInternal_SizePatch JumpOpen jmp hddopendir ; exit via ProRWTS2 -LoadDHRFileInternal - +LDADDR gPathname - +ST16 namlo ; set filename - jsr traverse ; go to subdirectory, set up filename for read - lda #$20 - sta sizehi - asl - sta ldrhi ; into $4000 - lda #cmdread ; read (instead of write) - sta reqcmd - ;;lda #1 ; 1 = read into aux memory - sta auxreq - lsr ; read first $2000 bytes - sta sizelo - sta ldrlo - jsr hddopendir ; call ProRWTS2 - lda #$20 ; read next $2000 bytes - sta sizehi - dec auxreq ; 0 = read into main memory - clc ; not a subdirectory - jmp hddrdwrpart ; call ProRWTS2 - SaveSmallFileInternal +LDADDR gPathname +ST16 namlo ; set filename for ProRWTS2 diff --git a/src/index/artwork.idx.a b/src/index/artwork.idx.a index 85a45eca4..34d5640cd 100644 --- a/src/index/artwork.idx.a +++ b/src/index/artwork.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 95671 + !be24 108539 !le16 4186 diff --git a/src/index/attract.idx.a b/src/index/attract.idx.a index 3697f60a2..e7338db35 100644 --- a/src/index/attract.idx.a +++ b/src/index/attract.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 55279 + !be24 61954 !le16 5174 diff --git a/src/index/cache00.idx.a b/src/index/cache00.idx.a index bf1390500..4466c9c0d 100644 --- a/src/index/cache00.idx.a +++ b/src/index/cache00.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 6152 + !be24 7472 !le16 3580 diff --git a/src/index/cache01.idx.a b/src/index/cache01.idx.a index a71a07dcd..4ad751a53 100644 --- a/src/index/cache01.idx.a +++ b/src/index/cache01.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 16468 + !be24 19228 !le16 3940 diff --git a/src/index/cache10.idx.a b/src/index/cache10.idx.a index 163199876..4c661265c 100644 --- a/src/index/cache10.idx.a +++ b/src/index/cache10.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 29225 + !be24 33845 !le16 4615 diff --git a/src/index/cache11.idx.a b/src/index/cache11.idx.a index e6de56b07..c553869e5 100644 --- a/src/index/cache11.idx.a +++ b/src/index/cache11.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 43585 + !be24 50260 !le16 5562 diff --git a/src/index/dfx.idx.a b/src/index/dfx.idx.a index fd66a0a4b..d95d7371e 100644 --- a/src/index/dfx.idx.a +++ b/src/index/dfx.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 62599 + !be24 69274 !le16 1242 diff --git a/src/index/dhgr.idx.a b/src/index/dhgr.idx.a index 9747dbfca..279eabff7 100644 --- a/src/index/dhgr.idx.a +++ b/src/index/dhgr.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 94329 + !be24 107197 !le16 1249 diff --git a/src/index/dtitle.idx.a b/src/index/dtitle.idx.a new file mode 100644 index 000000000..1d122722d --- /dev/null +++ b/src/index/dtitle.idx.a @@ -0,0 +1,8 @@ +; +; Index record for build/DTITLE.IDX +; +; This file is automatically generated +; + !byte 0 + !be24 93345 + !le16 464 diff --git a/src/index/fx.idx.a b/src/index/fx.idx.a index 152ed9110..4b1bb0a31 100644 --- a/src/index/fx.idx.a +++ b/src/index/fx.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 60453 + !be24 67128 !le16 2146 diff --git a/src/index/gamehelp.idx.a b/src/index/gamehelp.idx.a index 17c10259b..df5177df2 100644 --- a/src/index/gamehelp.idx.a +++ b/src/index/gamehelp.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 63841 + !be24 70516 !le16 6132 diff --git a/src/index/gr.idx.a b/src/index/gr.idx.a index 39e6690fb..15ac46f4e 100644 --- a/src/index/gr.idx.a +++ b/src/index/gr.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 95578 + !be24 108446 !le16 93 diff --git a/src/index/hgr0.idx.a b/src/index/hgr0.idx.a index dc99dcb29..3a5e4110a 100644 --- a/src/index/hgr0.idx.a +++ b/src/index/hgr0.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 80941 + !be24 93809 !le16 4364 diff --git a/src/index/hgr1.idx.a b/src/index/hgr1.idx.a index baf8ab029..35e6ba3eb 100644 --- a/src/index/hgr1.idx.a +++ b/src/index/hgr1.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 85305 + !be24 98173 !le16 1516 diff --git a/src/index/hgr2.idx.a b/src/index/hgr2.idx.a index 1b3b2e50a..60719917e 100644 --- a/src/index/hgr2.idx.a +++ b/src/index/hgr2.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 86821 + !be24 99689 !le16 1031 diff --git a/src/index/hgr3.idx.a b/src/index/hgr3.idx.a index ab24918d4..03188b82d 100644 --- a/src/index/hgr3.idx.a +++ b/src/index/hgr3.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 87852 + !be24 100720 !le16 3237 diff --git a/src/index/hgr4.idx.a b/src/index/hgr4.idx.a index e5ee3d5ed..c97db99a3 100644 --- a/src/index/hgr4.idx.a +++ b/src/index/hgr4.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 91089 + !be24 103957 !le16 2694 diff --git a/src/index/hgr5.idx.a b/src/index/hgr5.idx.a index 7b0f00a14..b30b3bff1 100644 --- a/src/index/hgr5.idx.a +++ b/src/index/hgr5.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 93783 + !be24 106651 !le16 441 diff --git a/src/index/hgr6.idx.a b/src/index/hgr6.idx.a index dc5851970..083237c18 100644 --- a/src/index/hgr6.idx.a +++ b/src/index/hgr6.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 94224 + !be24 107092 !le16 105 diff --git a/src/index/miniattract.idx.a b/src/index/miniattract.idx.a index 971eb8458..c4ab128bb 100644 --- a/src/index/miniattract.idx.a +++ b/src/index/miniattract.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 74809 + !be24 81484 !le16 6132 diff --git a/src/index/prelaunch.idx.a b/src/index/prelaunch.idx.a index 6dc0d0fd4..59c07bdfa 100644 --- a/src/index/prelaunch.idx.a +++ b/src/index/prelaunch.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 49147 + !be24 55822 !le16 6132 diff --git a/src/index/search00.idx.a b/src/index/search00.idx.a index ff7027ff5..17b97b07d 100644 --- a/src/index/search00.idx.a +++ b/src/index/search00.idx.a @@ -5,4 +5,4 @@ ; !byte 0 !be24 0 - !le16 6152 + !le16 7472 diff --git a/src/index/search01.idx.a b/src/index/search01.idx.a index 591055dfb..4762d07be 100644 --- a/src/index/search01.idx.a +++ b/src/index/search01.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 9732 - !le16 6736 + !be24 11052 + !le16 8176 diff --git a/src/index/search10.idx.a b/src/index/search10.idx.a index dbe0d8eb8..83bc64886 100644 --- a/src/index/search10.idx.a +++ b/src/index/search10.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 20408 - !le16 8817 + !be24 23168 + !le16 10677 diff --git a/src/index/search11.idx.a b/src/index/search11.idx.a index 311a4a6ae..dcb5c7941 100644 --- a/src/index/search11.idx.a +++ b/src/index/search11.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 33840 - !le16 9745 + !be24 38460 + !le16 11800 diff --git a/src/index/slideshow.idx.a b/src/index/slideshow.idx.a index d66ee7286..22a83c472 100644 --- a/src/index/slideshow.idx.a +++ b/src/index/slideshow.idx.a @@ -4,5 +4,5 @@ ; This file is automatically generated ; !byte 0 - !be24 69973 + !be24 76648 !le16 4836 diff --git a/src/index/title.idx.a b/src/index/title.idx.a new file mode 100644 index 000000000..eb09cfd5c --- /dev/null +++ b/src/index/title.idx.a @@ -0,0 +1,8 @@ +; +; Index record for build/TITLE.IDX +; +; This file is automatically generated +; + !byte 0 + !be24 87616 + !le16 5729 diff --git a/src/prodos.path.a b/src/prodos.path.a index 37e3b35cd..6db216ef8 100644 --- a/src/prodos.path.a +++ b/src/prodos.path.a @@ -84,6 +84,12 @@ kDFXIndexRecord kGameHelpIndexRecord !source "src/index/gamehelp.idx.a" +kHGRTitleIndexRecord + !source "src/index/title.idx.a" + +kDHGRTitleIndexRecord + !source "src/index/dtitle.idx.a" + kSHRArtworkIndexRecord !source "src/index/artwork.idx.a" @@ -132,14 +138,6 @@ kTotalIndexFile !byte 9 !raw "TOTAL.IDX" -kHGRTitleDirectory - !byte 10 - !raw "TITLE.HGR/" - -kDHGRTitleDirectory - !byte 11 - !raw "TITLE.DHGR/" - kAnimatedTitleDirectory !byte 15 !raw "TITLE.ANIMATED/" diff --git a/src/ui.attract.dhgr.a b/src/ui.attract.dhgr.a index 66ace9146..7b1baf42c 100644 --- a/src/ui.attract.dhgr.a +++ b/src/ui.attract.dhgr.a @@ -27,7 +27,7 @@ ;------------------------------------------------------------------------------ DHGRTitleSlideshow bit MachineStatus ; only run DHGR slideshow if we have 128K - bvc DHGRRTS + bvc DHGRRTS0 jsr LoadDHGRTransition ; load transition effect code at $6000 jsr BlankDHGR ; switch to DHGR mode with initial blank screen jsr okvs_iter ; cycle through all listed DHGR files @@ -48,7 +48,7 @@ DHGRTitleSlideshow ;------------------------------------------------------------------------------ DHGRActionSlideshow bit MachineStatus ; only run DHGR slideshow if we have 128K - bvc DHGRRTS + bvc DHGRRTS0 jsr LoadDHGRTransition ; load transition effect code at $6000 jsr BlankDHGR ; switch to DHGR mode with initial blank screen jsr okvs_iter ; cycle through all listed DHGR files @@ -69,7 +69,7 @@ DHGRActionSlideshow ;------------------------------------------------------------------------------ DHGRSingle bit MachineStatus ; only show DHGR screenshots if we have 128K - bvc DHGRRTS + bvc DHGRRTS0 +ST16 IndexedDHGRFilename jsr BlankDHGR ; switch to DHGR mode with initial blank screen jsr LoadIndexedDHGRFile ; load compressed DHGR screenshot at aux $3FF8 @@ -106,7 +106,7 @@ HGRMode GRMode bit $C052 bit $C050 -DHGRRTS rts +DHGRRTS0 rts ;------------------------------------------------------------------------------ ; ForceHGRMode @@ -156,7 +156,7 @@ LoadDHGRTransition !word $6000 @indexRecordPtr !word $FDFD ; SMC - rts +DHGRRTS1 rts ;------------------------------------------------------------------------------ ; DHGRTitleCallback [private] @@ -172,7 +172,7 @@ LoadDHGRTransition ;------------------------------------------------------------------------------ DHGRTitleCallback bit KBD - bmi DHGRRTS + bmi DHGRRTS1 +ST16 + +ST16 gLastMegaAttractGame @@ -181,16 +181,27 @@ DHGRTitleCallback ; if game is not found (C will be set here), it means it can't be played on ; this machine due to memory or joystick requirements, so we don't display ; it in slideshows - bcs DHGRRTS + bcs DHGRRTS1 +LD16 WINDEX ; save game index in case user hits RETURN +ST16 gGameToLaunch ; while it's visible (we'll launch it) - ; load DHGR screenshot at $4000/main and $4000/aux - jsr LoadDHRFile - !word kDHGRTitleDirectory -+ !word $FDFD + jsr LoadIndexedFile ; load index file into $4000 + !word kTotalIndexFile +- !word $4000 + !word kDHGRTitleIndexRecord + jsr okvs_get + !word - ++ !word $FDFD ; SMC + + jsr SwitchToBank2 + ldy #4 +- lda (PTR), y + sta OKVS_CACHE + 1, y + dey + bpl - + jsr LoadIndexedDHRFile jmp ExecuteTransitionAt6000AndWait ;------------------------------------------------------------------------------ @@ -207,7 +218,7 @@ DHGRTitleCallback ;------------------------------------------------------------------------------ DHGRActionCallback bit KBD - bmi DHGRRTS + bmi DHGRRTS1 +ST16 IndexedDHGRFilename @@ -215,7 +226,7 @@ DHGRActionCallback ; if game name is not found (C will be set here), it means the game ; can't be played due to memory or joystick requirements, so we hide ; it from slideshows - bcs DHGRRTS + bcs DHGRRTS1 jsr LoadIndexedDHGRFile jsr DecompressDHGR diff --git a/src/ui.attract.hgr.a b/src/ui.attract.hgr.a index 389d51045..74bacd997 100644 --- a/src/ui.attract.hgr.a +++ b/src/ui.attract.hgr.a @@ -104,7 +104,7 @@ HGRTitleCallback bit KBD bmi HGRRTS - +ST16 + + +ST16 @fname +ST16 gLastMegaAttractGame jsr FindGame @@ -116,10 +116,21 @@ HGRTitleCallback +LD16 WINDEX ; save game index in case user hits RETURN +ST16 gGameToLaunch ; while it's visible (we'll launch it) - jsr LoadFile ; load HGR screenshot at $4000 - !word kHGRTitleDirectory -+ !word $FDFD ; SMC + jsr LoadIndexedFile ; load index file into $4000 + !word kTotalIndexFile +- !word $4000 + !word kHGRTitleIndexRecord + + jsr okvs_find + !word - +@fname !word $FDFD ; SMC + +ST16 @indexRecordPtr + + jsr LoadIndexedFile ; load HGR graphic at $4000 + !word kTotalDataFile !word $4000 +@indexRecordPtr + !word $FDFD ; SMC jsr UnpackHGRTitle jmp ExecuteTransitionAt6000AndWait diff --git a/src/ui.common.a b/src/ui.common.a index 4b0a3e9d1..19fce43f1 100755 --- a/src/ui.common.a +++ b/src/ui.common.a @@ -68,6 +68,8 @@ BlankDHGR sta WRITEAUXMEM jsr ClearHGR1 ; clear hi-res screen 1 in auxmem sta WRITEMAINMEM + lda #1 + sta OffscreenPage ; /!\ execution falls through here to DHGRMode ;------------------------------------------------------------------------------ @@ -92,9 +94,9 @@ DHGRMode sta DHIRESOFF sta DHIRESON ; then turn DHGR on - bit PAGE1 + jsr ToggleOffscreenPage + jsr ShowOtherPage lda #1 - sta OffscreenPage sta gMachineInDHGRMode jsr UnwaitForVBL jmp HGRMode diff --git a/src/ui.offscreen.a b/src/ui.offscreen.a index cd42802f2..88f178f4f 100644 --- a/src/ui.offscreen.a +++ b/src/ui.offscreen.a @@ -8,8 +8,10 @@ ; - LoadCoverOffscreen ; - LoadHelpOffscreen ; - LoadGameTitleOffscreen +; - UnpackHGRTitle ; - ResyncPage ; - ShowOtherPage +; - ShowOtherDHGRPage ; - ToggleOffscreenPage ; - ClearScreens ; - ClearOffscreen @@ -85,45 +87,107 @@ LoadOffscreenFromAY LoadGameTitleOffscreen ; in: gGameToLaunch = index into gSearchStore (word) jsr GetGameToLaunch - +ST16 @fname - bit MachineStatus ; if < 128K, don't bother checking for DHGR title - bvc @hgr jsr okvs_next_field jsr okvs_next_field_PTR_is_already_set ; (PTR) -> length-prefixed game info bitfield ; Y = 0 iny ; Y = 1 lda (PTR), y ; A = game info bitfield - ;;and #HAS_DHGR_TITLE - bmi @dhgr -@hgr + bpl .LoadHGRGameTitleOffscreen ; bit 7 = 1 if game has DHGR title, 0 if HGR title + + jsr SwitchToBank2 +- iny + lda (PTR), y + sta OKVS_CACHE-1, y + cpy #6 + bne - +LoadIndexedDHRFile + jsr SwitchToBank2 + lda #0 + sta OKVS_CACHE + lda #$20 ; load first $2000 bytes into auxiliary memory + sta OKVS_CACHE + 5 + jsr GetOffscreenAddress + sta @dhgr_addr_aux + 1 + sta @dhgr_addr_main + 1 + jsr LoadAuxIndexedFile + !word kTotalDataFile +@dhgr_addr_aux + !word $FD00 ; SMC high byte + !word OKVS_CACHE + jsr SwitchToBank2 + lda OKVS_CACHE + 2 ; offset += $2000 (note: stored in big-endian) + clc + adc #$20 + sta OKVS_CACHE + 2 + bcc + + inc OKVS_CACHE + 1 ++ jsr LoadIndexedFile ; load next $2000 bytes into main memory + !word kTotalDataFile +@dhgr_addr_main + !word $FD00 ; SMC high byte + !word OKVS_CACHE + rts + +.LoadHGRGameTitleOffscreen jsr ForceHGRMode jsr GetOffscreenAddress - sta @addrhi - + sta @hgr_addr + 1 eor #$1F sta @poke+2 sta @peek+2 -@poke sta $3FFD ; SMC - clear screen hole before load - - jsr LoadFile - !word kHGRTitleDirectory -@fname !word $FDFD ; SMC - !byte $00 -@addrhi !byte $FD ; SMC - -@peek lda $3FFD ; SMC +@poke sta $3FFD ; SMC high byte to clear screen hole before load + +LD16 PTR + +ST16 @hgrIndexRecordPtr + jsr LoadIndexedFile + !word kTotalDataFile +@hgr_addr + !word $FD00 ; SMC high byte +@hgrIndexRecordPtr + !word $FDFD ; SMC +@peek lda $3FFD ; SMC high byte cmp #$4C ; Check if screen hole now contains a JMP beq OFFSCREENRTS ; if so, file was not packed, so skip unpack - jmp UnpackHGRTitle - -@dhgr - jsr BlankDHGR - +LD16 @fname - +ST16 + - jsr LoadDHRFile - !word kDHGRTitleDirectory -+ !word $FDFD + ; /!\ execution falls through here to UnpackHGRTitle +;------------------------------------------------------------------------------ +; UnpackHGRTitle +; unpack data from screen holes of the off screen HGR page +; +;------------------------------------------------------------------------------ +UnpackHGRTitle + jsr GetOffscreenAddress + sta src+2 + ora #$1E + sta dest+2 + lda #$00 + sta src+1 + sta dest+1 + lda #3 + sta $E0 +loop + ldx #0 +-- ldy #$78 +src +- lda $0000,y ;smc +dest + sta $0000,x ;smc + inx + iny + bpl - + tya ; y = #$80 + eor src+1 + sta src+1 + bne + + inc src+2 ++ cpx #$78 + bne -- + lda dest+1 + eor #$80 + sta dest+1 + bne + + inc dest+2 ++ dec $E0 + bpl loop OFFSCREENRTS rts @@ -209,6 +273,10 @@ ShowOtherPage + bit PAGE1 ; show page 1 rts +ShowOtherDHGRPage + jsr ToggleOffscreenPage + jmp DHGRMode + ;------------------------------------------------------------------------------ ; ToggleOffscreenPage ; switch the internal variable that tracks which HGR page is showing @@ -223,52 +291,3 @@ ToggleOffscreenPage eor #$01 sta OffscreenPage rts - -;------------------------------------------------------------------------------ -; UnpackHGRTitle -; unpack data from screen holes of the off screen HGR page -; -;------------------------------------------------------------------------------ -UnpackHGRTitle - jsr GetOffscreenAddress - sta src+2 - ora #$1E - sta dest+2 - lda #$00 - sta src+1 - sta dest+1 - - lda #3 - sta $E0 - -loop - ldx #0 --- ldy #$78 -src -- lda $0000,y ;smc -dest - sta $0000,x ;smc - inx - iny - bpl - - tya ; y = #$80 - eor src+1 - sta src+1 - bne + - inc src+2 - -+ cpx #$78 - bne -- - - lda dest+1 - eor #$80 - sta dest+1 - bne + - inc dest+2 - -+ dec $E0 - bpl loop - - rts - - diff --git a/src/ui.overlay.a b/src/ui.overlay.a index 6361893ee..0e3fe3c5d 100644 --- a/src/ui.overlay.a +++ b/src/ui.overlay.a @@ -261,8 +261,12 @@ gDrawingOnscreen=*+1 jsr MaybeRedrawUIForDHGR ; transform for DHGR if this is a DHGR title screen @uidone lda #0 sta gDrawingOnscreen - clc - jmp ShowOtherPage + bit MachineStatus + bvc + + bit gGameToLaunchInfo + bpl + + jmp ShowOtherDHGRPage ++ jmp ShowOtherPage CheckCheats ldx #kCheatsEnabled @@ -277,11 +281,12 @@ gGameToLaunchInfo=*+1 sta SAVE lda kCheatDescriptionHi,x sta SAVE+1 -- rts +OVERLAYRTS + rts MaybeRedrawUIForDHGR bit MachineStatus - bvc - + bvc OVERLAYRTS bit gGameToLaunchInfo - bpl - + bpl OVERLAYRTS jmp RedrawForDHGR