move demo-less, single-load games to TOTAL.DATA

This commit is contained in:
4am 2022-09-05 20:38:43 -04:00
parent 7439fa8f73
commit 592709d66e
47 changed files with 597 additions and 519 deletions

View File

@ -33,7 +33,7 @@ PYTHON=python3
# version 3.1.0 or later # version 3.1.0 or later
EXOMIZER=exomizer mem -q -P23 -lnone EXOMIZER=exomizer mem -q -P23 -lnone
dsk: index asmproboot asmlauncher dsk: index asmproboot asmlauncher extract
cp res/blank.hdv build/"$(DISK)" cp res/blank.hdv build/"$(DISK)"
cp res/_FileInformation.txt build/ cp res/_FileInformation.txt build/
$(CADIUS) ADDFILE build/"$(DISK)" "/$(VOLUME)/" build/LAUNCHER.SYSTEM -C >>build/log $(CADIUS) ADDFILE build/"$(DISK)" "/$(VOLUME)/" build/LAUNCHER.SYSTEM -C >>build/log
@ -56,9 +56,9 @@ dsk: index asmproboot asmlauncher
$(CADIUS) ADDFILE build/"$(DISK)" "/$(VOLUME)/" "$$f" -C >>build/log; \ $(CADIUS) ADDFILE build/"$(DISK)" "/$(VOLUME)/" "$$f" -C >>build/log; \
done done
for f in \ for f in \
res/DEMO \ res/DEMO \
res/TITLE.ANIMATED \ res/TITLE.ANIMATED \
res/ICONS \ res/ICONS \
build/FX \ build/FX \
build/PRELAUNCH; do \ build/PRELAUNCH; do \
rm -f "$$f"/.DS_Store; \ rm -f "$$f"/.DS_Store; \
@ -67,15 +67,19 @@ dsk: index asmproboot asmlauncher
for i in 1 2 3 4 5 6; do \ for i in 1 2 3 4 5 6; do \
$(CADIUS) RENAMEFILE build/"$(DISK)" "/$(VOLUME)/DEMO/SPCARTOON.$${i}$${i}" "SPCARTOON.$${i}." >>build/log; \ $(CADIUS) RENAMEFILE build/"$(DISK)" "/$(VOLUME)/DEMO/SPCARTOON.$${i}$${i}" "SPCARTOON.$${i}." >>build/log; \
done done
$(PARALLEL) '$(CADIUS) EXTRACTVOLUME {} build/X/ >>build/log' ::: res/dsk/*.po
rm -f build/X/**/.DS_Store build/X/**/PRODOS* build/X/**/LOADER.SYSTEM*
$(CADIUS) CREATEFOLDER build/"$(DISK)" "/$(VOLUME)/X/" -C >>build/log $(CADIUS) CREATEFOLDER build/"$(DISK)" "/$(VOLUME)/X/" -C >>build/log
for f in build/X/*; do \ for f in build/X/*; do \
$(CADIUS) ADDFOLDER build/"$(DISK)" "/$(VOLUME)/X/$$(basename $$f)" "$$f" -C >>build/log; \ $(CADIUS) ADDFOLDER build/"$(DISK)" "/$(VOLUME)/X/$$(basename $$f)" "$$f" -C >>build/log; \
done done
bin/changebootloader.sh build/"$(DISK)" build/proboothd bin/changebootloader.sh build/"$(DISK)" build/proboothd
index: preconditions md asmfx asmprelaunch compress extract: preconditions md
$(PARALLEL) '$(CADIUS) EXTRACTVOLUME {} build/X/ >>build/log' ::: res/dsk/*.po
rm -f build/X/**/.DS_Store build/X/**/PRODOS* build/X/**/LOADER.SYSTEM*
for f in $$(grep '^....1' res/GAMES.CONF | awk '!/^$$|^#/' | awk -F, '/,/ { print $$2 }' | awk -F= '{ print $$1 }'); do mv build/X/"$$(basename $$f)"/"$$(basename $$f)"* build/X.INDEXED/; rm -rf build/X/"$$(basename $$f)"; done
(for f in build/X.INDEXED/*; do echo "$$(basename $$f)"; done) | bin/buildindexedfile.sh -a -p build/TOTAL.DATA build/X.INDEXED > build/XSINGLE.IDX
index: preconditions md asmfx asmprelaunch compress extract
# #
# precompute binary data structure for mega-attract mode configuration file # precompute binary data structure for mega-attract mode configuration file
# #
@ -156,6 +160,12 @@ index: preconditions md asmfx asmprelaunch compress
# #
[ -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) [ -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)
# #
# precompute indexed files for single-load game binaries
# note: these can be padded because they are loaded at a time when all of main memory is clobber-able
#
[ -f build/index ] || ((for f in build/X.INDEXED/*; do echo "$$(basename $$f)"; done) | bin/buildindexedfile.sh -a -p build/TOTAL.DATA build/X.INDEXED > build/XSINGLE.IDX)
[ -f build/index ] || bin/addfile.sh build/XSINGLE.IDX build/TOTAL.DATA > src/index/xsingle.idx.a
#
# create search indexes for each variation of (game-requires-joystick) X (game-requires-128K) # 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 # in the form of OKVS data structures, plus game counts in the form of source files
# #
@ -254,7 +264,7 @@ mount: dsk
osascript bin/V2Make.scpt "`pwd`" bin/4cade.vii build/"$(DISK)" osascript bin/V2Make.scpt "`pwd`" bin/4cade.vii build/"$(DISK)"
md: md:
mkdir -p build/X build/FX.INDEXED build/FX build/PRELAUNCH.INDEXED build/PRELAUNCH build/ATTRACT build/SS build/GAMEHELP mkdir -p build/X build/X.INDEXED build/FX build/FX.INDEXED build/PRELAUNCH build/PRELAUNCH.INDEXED build/ATTRACT build/SS build/GAMEHELP
touch build/log touch build/log
clean: clean:

View File

@ -5,7 +5,7 @@
# -p pad sizes within data file to next block size (default off) # -p pad sizes within data file to next block size (default off)
# parameters # parameters
# stdin - input containing list of effects (probably FX.CONF or DFX.CONF) # stdin - input containing list of files (e.g. FX.CONF)
# stdout - binary OKVS data structure # stdout - binary OKVS data structure
# 1 - output filename for data file # 1 - output filename for data file
# 2 - input directory of files to merge into data file # 2 - input directory of files to merge into data file
@ -49,18 +49,25 @@ tr -d "\r" | awk '!/^$|^#|^\[/' > "$records"
# make temp assembly source file that represents the binary OKVS data structure # make temp assembly source file that represents the binary OKVS data structure
source=$(mktemp) source=$(mktemp)
(echo "*=0" # dummy program counter for assembler (echo "*=0" # dummy program counter for assembler
echo "!le16 $(wc -l <"$records"), 0" # OKVS header echo "!le16 $(wc -l <"$records"), 0" # OKVS header
while IFS="=" read -r key value; do while IFS="=" read -r filename dummy; do
echo "!byte ${#key}+7" # OKVS record length key=$(echo "$filename" | awk -F'#' '{ print $1 }')
echo "!byte ${#key}" # OKVS key length addr=$(echo "$filename" | awk -F'#' '{ print $2 }')
echo "!text \"$key\"" # OKVS key if [ "${#addr}" -ne "0" ]; then # if filename is in the form 'NAME#06ADDR' then create extended index record
if [ ! -e "$2/$key" ]; then # if file does not exist, use standard offset and size addr=$(echo "$addr" | cut -c3-) # trim '06' so we get just the starting address
echo "!byte ${#key}+9" # OKVS record length
else
echo "!byte ${#key}+7" # OKVS record length
fi
echo "!byte ${#key}" # OKVS key length
echo "!text \"$key\"" # OKVS key
if [ ! -e "$2/$filename" ]; then # if file does not exist, use standard offset and size
offset="$standardoffset" offset="$standardoffset"
size="$standardsize" size="$standardsize"
else # otherwise calculate offset and size from file and options else # otherwise calculate offset and size from file and options
offset=$(wc -c < "$1") offset=$(wc -c < "$1")
size=$(wc -c < "$2/$key") size=$(wc -c < "$2/$filename")
if [ "$pad" = true ]; then if [ "$pad" = true ]; then
# If offset+size does not cross a block boundary, use file's true size. # If offset+size does not cross a block boundary, use file's true size.
# Otherwise, round up size to the next block boundary. # Otherwise, round up size to the next block boundary.
@ -70,10 +77,11 @@ source=$(mktemp)
size=$(((($offset + $size + 511) & -512) - $offset)) size=$(((($offset + $size + 511) & -512) - $offset))
fi fi
fi fi
cat "$2/$key" >> "$1" # append this file to the end of the merged data file cat "$2/$filename" >> "$1" # append this file to the end of the merged data file
fi fi
echo "!be24 $offset" echo "!be24 $offset"
echo "!le16 $size" echo "!le16 $size"
[ "${#addr}" -ne "0" ] && echo '!le16 $'"$addr"
[ "${#3}" -ne "0" ] && echo "$key,$offset,$size" >> "$3" [ "${#3}" -ne "0" ] && echo "$key,$offset,$size" >> "$3"
done < "$records") > "$source" done < "$records") > "$source"

View File

@ -35,9 +35,10 @@ source=$(mktemp)
if [ -z "$dhgrlog" ]; then if [ -z "$dhgrlog" ]; then
dhgr="0" dhgr="0"
else else
dhgr=$(echo "$key" | cut -c3) # 'has DHGR title screen' flag (0 or 1) dhgr=$(echo "$key" | cut -c3) # 'has DHGR title screen' flag (0 or 1)
fi fi
cheat=$(echo "$key" | cut -c4) # 'cheat category' (0..5) cheat=$(echo "$key" | cut -c4) # 'cheat category' (0..7)
single=$(echo "$key" | cut -c5) # 'single-load' flag (0 or 1)
key=$(echo "$key" | cut -d"," -f2) key=$(echo "$key" | cut -d"," -f2)
if [ "$dhgr" -eq "0" ]; then if [ "$dhgr" -eq "0" ]; then
offset=$hgrlog offset=$hgrlog
@ -55,7 +56,7 @@ source=$(mktemp)
echo "!byte ${#value}" # OKVS value length echo "!byte ${#value}" # OKVS value length
echo "!text \"$value\"" # OKVS value (display name) echo "!text \"$value\"" # OKVS value (display name)
echo "!byte 1" echo "!byte 1"
echo "!byte $((dhgr*128))+$cheat" echo "!byte $((dhgr*128))+$((single*64))+$cheat"
echo "!be24 $offset" echo "!be24 $offset"
echo "!le16 $size" echo "!le16 $size"
done < "$records" done < "$records"

View File

@ -2,7 +2,7 @@
# Master game list # Master game list
# #
# Format: # Format:
# ABCD,directory=name # ABCDE,directory=name
# #
# A=1 if game requires joystick, 0 if playable on keyboard # A=1 if game requires joystick, 0 if playable on keyboard
# B=1 if game requires 128K, 0 if playable on 64K # B=1 if game requires 128K, 0 if playable on 64K
@ -16,460 +16,461 @@
# 5=infinite time # 5=infinite time
# 6=invincibility # 6=invincibility
# 7=has in-game cheats # 7=has in-game cheats
# E=1 if game is single-load and can be stored in TOTAL.DATA
# #
# all other values for A -> ignore entire line (allows inline comments) # all other values for A -> ignore entire line (allows inline comments)
# A line beginning with '[' terminates the parsing # A line beginning with '[' terminates the parsing
# #
1110,SLICKS=8bit-Slicks 11100,SLICKS=8bit-Slicks
0000,A.CITY.DIES=A City Dies 00000,A.CITY.DIES=A City Dies
1001,A.E=A E 10010,A.E=A E
0000,AGENT.U.S.A=Agent U S A 00000,AGENT.U.S.A=Agent U S A
1110,AIRHEART=Airheart 11100,AIRHEART=Airheart
0001,ALCAZAR=Alcazar 00011,ALCAZAR=Alcazar
1001,ALF=Alf: The First Adventure 10010,ALF=Alf: The First Adventure
1001,ALIEN.AMBUSH=Alien Ambush 10010,ALIEN.AMBUSH=Alien Ambush
0001,ALIEN.DOWNPOUR=Alien Downpour 00010,ALIEN.DOWNPOUR=Alien Downpour
0000,ALIEN.LANDER=Alien Lander 00000,ALIEN.LANDER=Alien Lander
0001,ALIEN.MUNCHIES=Alien Munchies 00010,ALIEN.MUNCHIES=Alien Munchies
0001,ALIEN.TYPHOON=Alien Typhoon 00010,ALIEN.TYPHOON=Alien Typhoon
1111,ALIENS=Aliens 11110,ALIENS=Aliens
1006,ANGEL.1=Angel-1 10061,ANGEL.1=Angel-1
0000,ANKH=Ankh 00001,ANKH=Ankh
0001,APE.ESCAPE=Ape Escape 00010,APE.ESCAPE=Ape Escape
0001,AC=Apple Cider Spider 00010,AC=Apple Cider Spider
1001,APPLE.INVADER=Apple Invader 10010,APPLE.INVADER=Apple Invader
0001,APPLE.PANIC=Apple Panic 00011,APPLE.PANIC=Apple Panic
0001,APPLE.ZAP=Apple Zap 00011,APPLE.ZAP=Apple Zap
1001,AO=Apple-Oids 10010,AO=Apple-Oids
0007,AQUATRON=Aquatron 00070,AQUATRON=Aquatron
1007,AB=Arcade Boot Camp 10070,AB=Arcade Boot Camp
1000,ARCHON=Archon 10000,ARCHON=Archon
0000,ARCHON.II=Archon II 00000,ARCHON.II=Archon II
1006,ARCTIC.FOX=Arctic Fox 10060,ARCTIC.FOX=Arctic Fox
0001,AA=Ardy the Aardvark 00010,AA=Ardy the Aardvark
1001,ARENA=Arena 10011,ARENA=Arena
0006,ARGOS=Argos 00060,ARGOS=Argos
1001,ARKANOID=Arkanoid 10010,ARKANOID=Arkanoid
1006,ARTESIANS=Artesians 10060,ARTESIANS=Artesians
1001,AS=Asteroid Blaster 10011,AS=Asteroid Blaster
1001,AXIS.ASSASSIN=Axis Assassin 10010,AXIS.ASSASSIN=Axis Assassin
0000,AZTEC=Aztec 00000,AZTEC=Aztec
1001,BQ=BC's Quest for Tires 10010,BQ=BC's Quest for Tires
1111,BAD.DUDES=Bad Dudes 11110,BAD.DUDES=Bad Dudes
1000,BALLBLAZER=Ballblazer 10001,BALLBLAZER=Ballblazer
0001,BANDITS=Bandits 00010,BANDITS=Bandits
1115,BATMAN=Batman 11150,BATMAN=Batman
0000,BY=Bats in the Belfry 00000,BY=Bats in the Belfry
0001,BATTLE.CRUISER=Battle Cruiser 00011,BATTLE.CRUISER=Battle Cruiser
0001,BATTLEZONE=Battlezone 00010,BATTLEZONE=Battlezone
0001,BEACH.LANDING=Beach Landing 00010,BEACH.LANDING=Beach Landing
0000,B1=Beach-Head 00000,B1=Beach-Head
0000,B2=Beach-Head II 00000,B2=Beach-Head II
0001,BEER.RUN=Beer Run 00010,BEER.RUN=Beer Run
0100,BEJEWELED=Bejeweled 01000,BEJEWELED=Bejeweled
0000,BELLHOP=Bellhop 00000,BELLHOP=Bellhop
0001,BERZAP=Berzap 00010,BERZAP=Berzap
0002,BW=Beyond Castle Wolfenstein 00020,BW=Beyond Castle Wolfenstein
1000,BEZARE=Bezare 10001,BEZARE=Bezare
1000,BEZOFF=Bezoff 10001,BEZOFF=Bezoff
0000,BT=Bill Budge's Trilogy 00001,BT=Bill Budge's Trilogy
1007,BLACK.MAGIC=Black Magic 10070,BLACK.MAGIC=Black Magic
1000,BLISTER.BALL=Blister Ball 10001,BLISTER.BALL=Blister Ball
0000,BLITZKRIEG=Blitzkrieg 00001,BLITZKRIEG=Blitzkrieg
0000,BC=BlockChain 00001,BC=BlockChain
0004,BLOODSUCKERS=Bloodsuckers 00041,BLOODSUCKERS=Bloodsuckers
0000,BOA=Boa 00001,BOA=Boa
0001,BOLO=Bolo 00010,BOLO=Bolo
0001,BH=Bongo's Bash 00011,BH=Bongo's Bash
0001,BORG=Borg 00010,BORG=Borg
1001,BOULDER.DASH=Boulder Dash 10011,BOULDER.DASH=Boulder Dash
1001,BOULDER.DASH.II=Boulder Dash II 10011,BOULDER.DASH.II=Boulder Dash II
0001,BK=Bouncing Kamungas 00010,BK=Bouncing Kamungas
0001,BB=Brainteaser Boulevard 00010,BB=Brainteaser Boulevard
1011,BRUCE.LEE=Bruce Lee 10110,BRUCE.LEE=Bruce Lee
1001,BUBBLE.BOBBLE=Bubble Bobble 10010,BUBBLE.BOBBLE=Bubble Bobble
0007,BR=Buck Rogers: Planet of Zoom 00070,BR=Buck Rogers: Planet of Zoom
0007,BUG.ATTACK=Bug Attack 00071,BUG.ATTACK=Bug Attack
0001,BUG.BATTLE=Bug Battle 00011,BUG.BATTLE=Bug Battle
0003,BU=BurgerTime 00030,BU=BurgerTime
0001,BUZZARD.BAIT=Buzzard Bait 00010,BUZZARD.BAIT=Buzzard Bait
0000,CV=C'est La Vie 00000,CV=C'est La Vie
0004,CALI.RAISINS=California Raisins 00040,CALI.RAISINS=California Raisins
0001,CB=Cannonball Blitz 00010,CB=Cannonball Blitz
0001,CANYON.CLIMBER=Canyon Climber 00011,CANYON.CLIMBER=Canyon Climber
0005,CG=Captain Goodnight 00050,CG=Captain Goodnight
0001,CAPTAIN.POWER=Captain Power 00010,CAPTAIN.POWER=Captain Power
0002,CS=Castle Smurfenstein 00020,CS=Castle Smurfenstein
0002,CW=Castle Wolfenstein 00020,CW=Castle Wolfenstein
0117,CATACOMBS=Catacombs 01170,CATACOMBS=Catacombs
0001,CAVRN.CREATURES=Cavern Creatures 00010,CAVRN.CREATURES=Cavern Creatures
1001,CC=Caverns of Callisto 10010,CC=Caverns of Callisto
1001,CEILING.ZERO=Ceiling Zero 10010,CEILING.ZERO=Ceiling Zero
1001,CENTIPEDE=Centipede 10011,CENTIPEDE=Centipede
0001,CL=Championship Lode Runner 00010,CL=Championship Lode Runner
1001,CHIP.OUT=Chip Out 10011,CHIP.OUT=Chip Out
0000,CHIVALRY=Chivalry 00000,CHIVALRY=Chivalry
1007,CHOPLIFTER=Choplifter 10070,CHOPLIFTER=Choplifter
0001,CHRONO.WARRIOR=Chrono Warrior 00010,CHRONO.WARRIOR=Chrono Warrior
0001,COLLECT=Collect 00011,COLLECT=Collect
0010,COLUMNS=Columns 00100,COLUMNS=Columns
0101,COMMANDO=Commando 01010,COMMANDO=Commando
0003,CONAN=Conan 00030,CONAN=Conan
0001,CONGO=Congo 00011,CONGO=Congo
0001,CONGO.BONGO=Congo Bongo 00010,CONGO.BONGO=Congo Bongo
0000,CQ=Conquering Worlds 00000,CQ=Conquering Worlds
0000,CR=Copts and Robbers 00000,CR=Copts and Robbers
1001,COSMIC.COMBAT=Cosmic Combat 10011,COSMIC.COMBAT=Cosmic Combat
0002,COUNTY.FAIR=County Fair 00021,COUNTY.FAIR=County Fair
0001,CRAZY.MAZEY=Crazy Mazey 00010,CRAZY.MAZEY=Crazy Mazey
0001,CREEPY.CRRIDORS=Creepy Corridors 00011,CREEPY.CRRIDORS=Creepy Corridors
0001,CRICKATEER=Cricketeer 00011,CRICKATEER=Cricketeer
0001,CRIME.WAVE=Crime Wave 00010,CRIME.WAVE=Crime Wave
1001,CRISIS.MOUNTAIN=Crisis Mountain 10010,CRISIS.MOUNTAIN=Crisis Mountain
0001,CROSS.CITY=Cross City 00010,CROSS.CITY=Cross City
0001,CROSSFIRE=Crossfire 00011,CROSSFIRE=Crossfire
0001,CRYSTAL.CASTLES=Crystal Castles 00011,CRYSTAL.CASTLES=Crystal Castles
0001,CUBIT=Cubit 00011,CUBIT=Cubit
0000,CYBER.STRIKE=Cyber Strike 00001,CYBER.STRIKE=Cyber Strike
0001,CYCLOD=Cyclod 00010,CYCLOD=Cyclod
1001,CYCLOTRON=Cyclotron 10010,CYCLOTRON=Cyclotron
0117,DG=D-Generation 01170,DG=D-Generation
0017,DANGEROUS.DAVE=Dangerous Dave 00170,DANGEROUS.DAVE=Dangerous Dave
0117,DD.GOES.NUTZ=Dangerous Dave Goes Nutz 01170,DD.GOES.NUTZ=Dangerous Dave Goes Nutz
0117,DD.RETURNS=Dangerous Dave Returns 01170,DD.RETURNS=Dangerous Dave Returns
0001,DU=Darkstar Unhinged 00010,DU=Darkstar Unhinged
1000,DM=David's Midnight Magic 10000,DM=David's Midnight Magic
0110,DEATH.SWORD=Death Sword 01100,DEATH.SWORD=Death Sword
1000,DEEP.SPACE=Deep Space 10000,DEEP.SPACE=Deep Space
1001,DEFENDER=Defender 10011,DEFENDER=Defender
1001,DJ=Defender (Joe Holt) 10011,DJ=Defender (Joe Holt)
0001,DEMONIC.DECKS=Demonic Decks 00010,DEMONIC.DECKS=Demonic Decks
1001,DEPTH.CHARGE=Depth Charge 10011,DEPTH.CHARGE=Depth Charge
0001,DIAMOND.MINE=Diamond Mine 00011,DIAMOND.MINE=Diamond Mine
0001,DIG.DUG=Dig Dug 00010,DIG.DUG=Dig Dug
1001,DINO.EGGS=Dino Eggs 10010,DINO.EGGS=Dino Eggs
1001,DINO.SMURF=Dino Smurf 10010,DINO.SMURF=Dino Smurf
0000,DOGFIGHT.II=Dogfight II 00001,DOGFIGHT.II=Dogfight II
0001,DONKEY.KONG=Donkey Kong 00010,DONKEY.KONG=Donkey Kong
0000,DOUBLE.TROUBLE=Double Trouble 00000,DOUBLE.TROUBLE=Double Trouble
0001,DRAGONFIRE=Dragonfire 00011,DRAGONFIRE=Dragonfire
1001,DRELBS=Drelbs 10011,DRELBS=Drelbs
0001,DROL=Drol 00010,DROL=Drol
0000,DUNG.BEETLES=Dung Beetles 00000,DUNG.BEETLES=Dung Beetles
0001,EARLY.BIRD=Early Bird 00011,EARLY.BIRD=Early Bird
0001,EI=Eggs-It 00010,EI=Eggs-It
0000,EPOCH=Epoch 00001,EPOCH=Epoch
0005,ES=Escape! 00051,ES=Escape!
0001,EVOLUTION=Evolution 00010,EVOLUTION=Evolution
0001,EXTERMINATOR=Exterminator 00010,EXTERMINATOR=Exterminator
0001,FALCONS=Falcons 00010,FALCONS=Falcons
0006,FAT.CITY=Fat City 00060,FAT.CITY=Fat City
0001,FEDERATION=Federation 00011,FEDERATION=Federation
0004,FIRE.AND.ICE=Fire and Ice 00040,FIRE.AND.ICE=Fire and Ice
0001,FIREBIRD=Firebird 00010,FIREBIRD=Firebird
0000,FIREBUG=Firebug 00000,FIREBUG=Firebug
0001,FLAK=Flak 00011,FLAK=Flak
0110,FLAPPLE.BIRD=Flapple Bird 01100,FLAPPLE.BIRD=Flapple Bird
0000,FLIP.OUT=Flip Out 00000,FLIP.OUT=Flip Out
0001,FLOBYNOID=Flobynoid 00010,FLOBYNOID=Flobynoid
0004,FLOPPY=Floppy 00040,FLOPPY=Floppy
0001,FLY.WARS=Fly Wars 00010,FLY.WARS=Fly Wars
1101,FORCE.7=Force 7 11011,FORCE.7=Force 7
0001,FRAZZLE=Frazzle 00010,FRAZZLE=Frazzle
0001,FREE.FALL=Free Fall 00011,FREE.FALL=Free Fall
0001,FROGGER=Frogger 00011,FROGGER=Frogger
1001,FROGGER.II=Frogger II 10010,FROGGER.II=Frogger II
0001,G.I.JOE=G I Joe 00010,G.I.JOE=G I Joe
0001,GADGETZ=Gadgetz 00011,GADGETZ=Gadgetz
0000,GALACTIC.ATTACK=Galactic Attack 00000,GALACTIC.ATTACK=Galactic Attack
0001,GALAXIAN=Galaxian 00010,GALAXIAN=Galaxian
0001,GALAXY.GATES=Galaxy Gates 00011,GALAXY.GATES=Galaxy Gates
1001,GAMMA.GOBLINS=Gamma Goblins 10010,GAMMA.GOBLINS=Gamma Goblins
0101,GAUNTLET=Gauntlet 01010,GAUNTLET=Gauntlet
1001,GENESIS=Genesis 10011,GENESIS=Genesis
0001,GENETIC.DRIFT=Genetic Drift 00010,GENETIC.DRIFT=Genetic Drift
0001,GENIUS=Genius 00010,GENIUS=Genius
0001,GENIUS.2=Genius 2 00010,GENIUS.2=Genius 2
0001,GENIUS.3=Genius 3 00010,GENIUS.3=Genius 3
1006,GHOSTBUSTERS=Ghostbusters 10060,GHOSTBUSTERS=Ghostbusters
0000,GLUTTON=Glutton 00000,GLUTTON=Glutton
0001,GOLD.RUSH=Gold Rush 00011,GOLD.RUSH=Gold Rush
0001,GORGON=Gorgon 00010,GORGON=Gorgon
0001,GRAPPLE=Grapple 00011,GRAPPLE=Grapple
0001,GREMLINS=Gremlins 00010,GREMLINS=Gremlins
0001,GUARDIAN=Guardian 00011,GUARDIAN=Guardian
0000,GUMBALL=Gumball 00000,GUMBALL=Gumball
1003,H.E.R.O=H E R O 10031,H.E.R.O=H E R O
0000,HADRON=Hadron 00001,HADRON=Hadron
0001,HANDY.DANDY=Handy Dandy 00011,HANDY.DANDY=Handy Dandy
0007,HARD.HAT.MACK=Hard Hat Mack 00070,HARD.HAT.MACK=Hard Hat Mack
1001,HARDHAT=Hardhat 10010,HARDHAT=Hardhat
0001,HEAD.ON=Head On 00011,HEAD.ON=Head On
1111,HEAVY.BARREL=Heavy Barrel 11110,HEAVY.BARREL=Heavy Barrel
0001,HELLSTORM=Hell Storm 00011,HELLSTORM=Hell Storm
0000,HIGH.RISE=High Rise 00000,HIGH.RISE=High Rise
0001,HORIZON.V=Horizon V 00010,HORIZON.V=Horizon V
0001,HUNGRYBOY=Hungryboy 00011,HUNGRYBOY=Hungryboy
0001,HYPER.HEAD.ON=Hyper Head On 00011,HYPER.HEAD.ON=Hyper Head On
0000,IO=I.O. Silver 00000,IO=I.O. Silver
0101,IKARI.WARRIORS=Ikari Warriors 01010,IKARI.WARRIORS=Ikari Warriors
1005,I1=Impossible Mission 10050,I1=Impossible Mission
0117,I2=Impossible Mission II 01170,I2=Impossible Mission II
0111,INDIANA.JONES=Indiana Jones 01110,INDIANA.JONES=Indiana Jones
1000,INFILTRATOR=Infiltrator 10000,INFILTRATOR=Infiltrator
1000,INFILTRATOR.2=Infiltrator 2 10000,INFILTRATOR.2=Infiltrator 2
0111,IE=Into the Eagle's Nest 01110,IE=Into the Eagle's Nest
0001,IP=It's the Pits 00011,IP=It's the Pits
0001,J.BIRD=J-Bird 00010,J.BIRD=J-Bird
0001,JAWBREAKER=Jawbreaker 00011,JAWBREAKER=Jawbreaker
0001,JAWBREAKER.II=Jawbreaker II 00010,JAWBREAKER.II=Jawbreaker II
0006,JELLYFISH=Jellyfish 00061,JELLYFISH=Jellyfish
0001,JOUST=Joust 00011,JOUST=Joust
1001,JOUSTER=Jouster 10011,JOUSTER=Jouster
1001,JOVIAN.ATTACK=Jovian Attack 10011,JOVIAN.ATTACK=Jovian Attack
0001,JUGGLER=Juggler 00011,JUGGLER=Juggler
0001,JUMP.JET=Jump Jet 00011,JUMP.JET=Jump Jet
0001,JUMPMAN=Jumpman 00010,JUMPMAN=Jumpman
0004,JUNGLE.HUNT=Jungle Hunt 00040,JUNGLE.HUNT=Jungle Hunt
1001,KAMIKAZE=Kamikaze 10010,KAMIKAZE=Kamikaze
0006,KARATEKA=Karateka 00060,KARATEKA=Karateka
0001,KID.NIKI=Kid Niki 00010,KID.NIKI=Kid Niki
0001,KUNG.FU.MASTER=Kung Fu Master 00010,KUNG.FU.MASTER=Kung Fu Master
0007,LABYRINTH=Labyrinth 00070,LABYRINTH=Labyrinth
0001,LADY.TUT=Lady Tut 00010,LADY.TUT=Lady Tut
0001,LA=Lamb Chops! 00011,LA=Lamb Chops!
0001,LANCASTER=Lancaster 00010,LANCASTER=Lancaster
1000,LASER.BOUNCE=Laser Bounce 10000,LASER.BOUNCE=Laser Bounce
0001,LAZER.SILK=Lazer Silk 00010,LAZER.SILK=Lazer Silk
0007,LEMMINGS=Lemmings 00070,LEMMINGS=Lemmings
0001,LEMM.SIR=Lemmings (Sirius) 00010,LEMM.SIR=Lemmings (Sirius)
0001,LL=Lethal Labyrinth 00010,LL=Lethal Labyrinth
0000,LP=Little Computer People 00000,LP=Little Computer People
0001,LC=Lock 'n' Chase 00011,LC=Lock 'n' Chase
0007,LODE.RUNNER=Lode Runner 00070,LODE.RUNNER=Lode Runner
1003,LOST.TOMB=Lost Tomb 10030,LOST.TOMB=Lost Tomb
0004,LUNAR.LEEPERS=Lunar Leepers 00040,LUNAR.LEEPERS=Lunar Leepers
0001,M.I.R.V=M I R V 00010,M.I.R.V=M I R V
1000,MAD.BOMBER=Mad Bomber 10001,MAD.BOMBER=Mad Bomber
0001,MAD.RAT=Mad Rat 00011,MAD.RAT=Mad Rat
0001,MANIC.MINER=Manic Miner 00011,MANIC.MINER=Manic Miner
1001,MARAUDER=Marauder 10010,MARAUDER=Marauder
1105,MARBLE.MADNESS=Marble Madness 11050,MARBLE.MADNESS=Marble Madness
0001,MB=Mario Bros. 00011,MB=Mario Bros.
0001,MARS.CARS=Mars Cars 00011,MARS.CARS=Mars Cars
1001,MATING.ZONE=Mating Zone 10010,MATING.ZONE=Mating Zone
0111,MS=Matterhorn Screamer 01110,MS=Matterhorn Screamer
1000,MAXWELL.MANOR=Maxwell Manor 10000,MAXWELL.MANOR=Maxwell Manor
1005,MAZEBLOX=Mazeblox 10050,MAZEBLOX=Mazeblox
0000,MEGABOTS=Megabots 00000,MEGABOTS=Megabots
1001,MICRO.INVADERS=Micro Invaders 10011,MICRO.INVADERS=Micro Invaders
0001,MICROWAVE=Microwave 00010,MICROWAVE=Microwave
1007,MINER.2049ER=Miner 2049er 10070,MINER.2049ER=Miner 2049er
1001,MINER.II=Miner II 10010,MINER.II=Miner II
1001,MI=Ming's Challenge 10010,MI=Ming's Challenge
0005,MINE.SWEEP=Mine Sweep 00051,MINE.SWEEP=Mine Sweep
0001,MINIT.MAN=Minit Man 00010,MINIT.MAN=Minit Man
0007,MINOTAUR=Minotaur 00070,MINOTAUR=Minotaur
1006,MT=Mission on Thunderhead 10060,MT=Mission on Thunderhead
0001,MONSTER.MASH=Monster Mash 00010,MONSTER.MASH=Monster Mash
0001,MZ=Montezuma's Revenge 00011,MZ=Montezuma's Revenge
0001,MOON.PATROL=Moon Patrol 00010,MOON.PATROL=Moon Patrol
0001,MOUSKATTACK=Mouskattack 00011,MOUSKATTACK=Mouskattack
0001,MC=Mr. Cool 00010,MC=Mr. Cool
1001,MD=Mr. Do! 10010,MD=Mr. Do!
1001,MR=Mr. Robot 10011,MR=Mr. Robot
0001,MP=Ms. Pacman 00011,MP=Ms. Pacman
0001,MUTANT=Mutant 00010,MUTANT=Mutant
0000,N.O.R.A.D=N O R A D 00000,N.O.R.A.D=N O R A D
0004,NEON=Neon 00040,NEON=Neon
0001,NEPTUNE=Neptune 00011,NEPTUNE=Neptune
0007,NT=Neut Tower 00071,NT=Neut Tower
1000,NEUTRONS=Neutrons 10000,NEUTRONS=Neutrons
0004,NIBBLER=Nibbler 00040,NIBBLER=Nibbler
0000,NIGHT.CRAWLER=Night Crawler 00001,NIGHT.CRAWLER=Night Crawler
0007,NM=Night Mission Pinball 00070,NM=Night Mission Pinball
0001,NIGHT.STALKER=Night Stalker 00010,NIGHT.STALKER=Night Stalker
0001,NI=Nightmare Gallery 00010,NI=Nightmare Gallery
0001,OM=O'Riley's Mine 00010,OM=O'Riley's Mine
0001,OID.ZONE=Oid Zone 00010,OID.ZONE=Oid Zone
1001,OI=Oil's Well 10010,OI=Oil's Well
0007,ORBITRON=Orbitron 00071,ORBITRON=Orbitron
0000,OW=Out of This World 00000,OW=Out of This World
0001,OUTPOST=Outpost 00011,OUTPOST=Outpost
0000,OUTWORLD=Outworld 00001,OUTWORLD=Outworld
0001,PACMAN=Pacman 00010,PACMAN=Pacman
1000,PAIPEC=Paipec 10001,PAIPEC=Paipec
0001,PB=Pandora's Box 00011,PB=Pandora's Box
0101,PAPERBOY=Paperboy 01010,PAPERBOY=Paperboy
1001,PEEPING.TOM=Peeping Tom 10010,PEEPING.TOM=Peeping Tom
1004,PEGASUS.II=Pegasus II 10040,PEGASUS.II=Pegasus II
1001,PENETRATOR=Penetrator 10010,PENETRATOR=Penetrator
0001,PENGO=Pengo 00010,PENGO=Pengo
1001,PENTAPUS=Pentapus 10010,PENTAPUS=Pentapus
0001,PEST.PATROL=Pest Patrol 00010,PEST.PATROL=Pest Patrol
1001,PHANTOMS.FIVE=Phantoms Five 10011,PHANTOMS.FIVE=Phantoms Five
0001,PR=Pharaoh's Revenge 00010,PR=Pharaoh's Revenge
0001,PHASER.FIRE=Phaser Fire 00010,PHASER.FIRE=Phaser Fire
0000,PHOTAR=Photar 00001,PHOTAR=Photar
0005,PICNIC.PARANOIA=Picnic Paranoia 00051,PICNIC.PARANOIA=Picnic Paranoia
0001,PM=Pie-Man 00010,PM=Pie-Man
0001,PIG.PEN=Pig Pen 00011,PIG.PEN=Pig Pen
0115,PIPE.DREAM=Pipe Dream 01150,PIPE.DREAM=Pipe Dream
1000,PITFALL.II=Pitfall II 10000,PITFALL.II=Pitfall II
0000,PITSTOP.II=Pitstop II 00001,PITSTOP.II=Pitstop II
1001,PLANETOIDS=Planetoids 10011,PLANETOIDS=Planetoids
0001,PLASMANIA=Plasmania 00010,PLASMANIA=Plasmania
1111,PLATOON=Platoon 11110,PLATOON=Platoon
1000,POLLYWOG=Pollywog 10001,POLLYWOG=Pollywog
0001,POOYAN=Pooyan 00010,POOYAN=Pooyan
0114,PP=Prince of Persia 01140,PP=Prince of Persia
0001,PULSAR.II=Pulsar II 00010,PULSAR.II=Pulsar II
1111,QIX=Qix 11110,QIX=Qix
1001,QUADRANT.6112=Quadrant 6112 10010,QUADRANT.6112=Quadrant 6112
0116,RADWARRIOR=Radwarrior 01160,RADWARRIOR=Radwarrior
0007,RM=Raid Over Moscow 00070,RM=Raid Over Moscow
1001,RG=Raiders of the Lost Ring 10011,RG=Raiders of the Lost Ring
0001,RAINBOW.ZONE=Rainbow Zone 00011,RAINBOW.ZONE=Rainbow Zone
0116,RAMPAGE=Rampage 01160,RAMPAGE=Rampage
0001,RANDAMN=Randamn 00010,RANDAMN=Randamn
0000,RASTER.BLASTER=Raster Blaster 00001,RASTER.BLASTER=Raster Blaster
1006,RI=Realm of Impossibility 10060,RI=Realm of Impossibility
0007,REAR.GUARD=Rear Guard 00070,REAR.GUARD=Rear Guard
1000,RED.ALERT=Red Alert 10001,RED.ALERT=Red Alert
1114,RENEGADE=Renegade 11140,RENEGADE=Renegade
0001,REPTON=Repton 00010,REPTON=Repton
0007,RESCUE.RAIDERS=Rescue Raiders 00070,RESCUE.RAIDERS=Rescue Raiders
1001,RETRO.FEVER=Retro Fever 10011,RETRO.FEVER=Retro Fever
1000,RB=Retro-Ball 10001,RB=Retro-Ball
0004,RIBBIT=Ribbit 00041,RIBBIT=Ribbit
1001,ROACH.HOTEL=Roach Hotel 10010,ROACH.HOTEL=Roach Hotel
0005,ROADBLOCK=Roadblock 00051,ROADBLOCK=Roadblock
0117,ROBOCOP=Robocop 01170,ROBOCOP=Robocop
0001,ROBOT.BATTLE=Robot Battle 00011,ROBOT.BATTLE=Robot Battle
0001,ROBOTRON.2084=Robotron 2084 00010,ROBOTRON.2084=Robotron 2084
0001,ROUND.ABOUT=Round About 00010,ROUND.ABOUT=Round About
0001,RUN.FOR.IT=Run For It 00010,RUN.FOR.IT=Run For It
0001,RUSSKI.DUCK=Russki Duck 00011,RUSSKI.DUCK=Russki Duck
0002,SABOTAGE=Sabotage 00021,SABOTAGE=Sabotage
1001,SABOTAGE.II=Sabotage II 10011,SABOTAGE.II=Sabotage II
0006,SADARS.REVENGE=Sadar's Revenge 00061,SADARS.REVENGE=Sadar's Revenge
0001,SAMMY.LIGHTFOOT=Sammy Lightfoot 00010,SAMMY.LIGHTFOOT=Sammy Lightfoot
0006,SANITRON=Sanitron 00061,SANITRON=Sanitron
0001,SARACEN=Saracen 00010,SARACEN=Saracen
0007,SEA.DRAGON=Sea Dragon 00070,SEA.DRAGON=Sea Dragon
0003,SEAFOX=Seafox 00031,SEAFOX=Seafox
0007,SERPENTINE=Serpentine 00070,SERPENTINE=Serpentine
1001,SHAMUS=Shamus 10011,SHAMUS=Shamus
0006,SHEILA=Sheila 00060,SHEILA=Sheila
0001,SHORT.CIRCUIT=Short Circuit 00010,SHORT.CIRCUIT=Short Circuit
1001,SI=Shuttle Intercept 10011,SI=Shuttle Intercept
0006,SC=Situation Critical 00060,SC=Situation Critical
1006,SKYFOX=Skyfox 10060,SKYFOX=Skyfox
0001,SNACK.ATTACK=Snack Attack 00011,SNACK.ATTACK=Snack Attack
0001,SNAKE.BYTE=Snake Byte 00010,SNAKE.BYTE=Snake Byte
0001,SNEAKERS=Sneakers 00010,SNEAKERS=Sneakers
0007,SNOGGLE=Snoggle 00071,SNOGGLE=Snoggle
0110,SO=Soko-Ban 01100,SO=Soko-Ban
1000,SPACE.EGGS=Space Eggs 10000,SPACE.EGGS=Space Eggs
0000,SPACE.KADET=Space Kadet 00001,SPACE.KADET=Space Kadet
0001,SPACE.QUARKS=Space Quarks 00010,SPACE.QUARKS=Space Quarks
0000,SPACE.RACE=Space Race 00001,SPACE.RACE=Space Race
0000,SPACE.RAIDERS=Space Raiders 00001,SPACE.RAIDERS=Space Raiders
1004,SPACE.RESCUE=Space Rescue 10041,SPACE.RESCUE=Space Rescue
1000,SPACE.WARRIOR=Space Warrior 10001,SPACE.WARRIOR=Space Warrior
0007,SPARE.CHANGE=Spare Change 00070,SPARE.CHANGE=Spare Change
0001,SPECTRE=Spectre 00010,SPECTRE=Spectre
0106,SPELLWIELDER=Spellwielder 01060,SPELLWIELDER=Spellwielder
0001,SPIDER.RAID=Spider Raid 00010,SPIDER.RAID=Spider Raid
0116,SPIDERBOT=Spiderbot 01160,SPIDERBOT=Spiderbot
1001,SPINDIZZY=Spindizzy 10011,SPINDIZZY=Spindizzy
1003,SPUTNIK.ATTACK=Sputnik Attack 10030,SPUTNIK.ATTACK=Sputnik Attack
0001,SPY.HUNTER=Spy Hunter 00010,SPY.HUNTER=Spy Hunter
0000,SS=Spy vs Spy 00000,SS=Spy vs Spy
0000,SS2=Spy vs Spy 2 00000,SS2=Spy vs Spy 2
0110,SS3=Spy vs Spy 3 01100,SS3=Spy vs Spy 3
0001,SD=Spy's Demise 00010,SD=Spy's Demise
1000,STAR.AVENGER=Star Avenger 10001,STAR.AVENGER=Star Avenger
0004,STAR.BLAZER=Star Blazer 00040,STAR.BLAZER=Star Blazer
1000,STAR.CLONES=Star Clones 10001,STAR.CLONES=Star Clones
1001,STAR.CRUISER=Star Cruiser 10011,STAR.CRUISER=Star Cruiser
0005,STAR.DANCE=Star Dance 00051,STAR.DANCE=Star Dance
0001,STAR.MAZE=Star Maze 00010,STAR.MAZE=Star Maze
0001,STAR.THIEF=Star Thief 00011,STAR.THIEF=Star Thief
1001,STARBALL=Starball 10010,STARBALL=Starball
1001,STARBLASTER=Starblaster 10011,STARBLASTER=Starblaster
1003,STARGATE=Stargate 10030,STARGATE=Stargate
1006,STARGLIDER=Starglider 10060,STARGLIDER=Starglider
1000,STARMINES=Starmines 10001,STARMINES=Starmines
0000,STATION.5=Station 5 00000,STATION.5=Station 5
0006,STELLAR.7=Stellar 7 00060,STELLAR.7=Stellar 7
0004,SUCCESSION=Succession 00041,SUCCESSION=Succession
0004,SU=Suicide! 00041,SU=Suicide!
0001,SUPER.BUNNY=Super Bunny 00010,SUPER.BUNNY=Super Bunny
0001,SUPER.PUCKMAN=Super Puckman 00011,SUPER.PUCKMAN=Super Puckman
0001,SUPER.TAXMAN.2=Super Taxman 2 00010,SUPER.TAXMAN.2=Super Taxman 2
1001,SUPER.ZAXXON=Super Zaxxon 10010,SUPER.ZAXXON=Super Zaxxon
0001,SWASHBUCKLER=Swashbuckler 00010,SWASHBUCKLER=Swashbuckler
1006,SWORD.OF.SHEOL=Sword of Sheol 10060,SWORD.OF.SHEOL=Sword of Sheol
1004,SYZYGY=Syzygy 10041,SYZYGY=Syzygy
0006,TALON=Talon 00060,TALON=Talon
0001,TAPPER=Tapper 00010,TAPPER=Tapper
0116,TC=TechnoCop 01160,TC=TechnoCop
0001,TELEPORT=Teleport 00010,TELEPORT=Teleport
0001,TERITORY=Teritory 00011,TERITORY=Teritory
0010,TETRIS=Tetris 00100,TETRIS=Tetris
1001,TU=Tharolian Tunnels 10010,TU=Tharolian Tunnels
0001,AF=The Asteroid Field 00011,AF=The Asteroid Field
0000,THE.BILESTOAD=The Bilestoad 00001,THE.BILESTOAD=The Bilestoad
0006,CF=The Caverns of Freitag 00061,CF=The Caverns of Freitag
0111,TS=The Chase on Tom S's Island 01110,TS=The Chase on Tom S's Island
1001,THE.GOONIES=The Goonies 10010,THE.GOONIES=The Goonies
0007,THE.HEIST=The Heist 00070,THE.HEIST=The Heist
1001,LG=The Last Gladiator 10010,LG=The Last Gladiator
1111,THE.LAST.NINJA=The Last Ninja 11110,THE.LAST.NINJA=The Last Ninja
1106,MM=The Movie Monster Game 11060,MM=The Movie Monster Game
0004,THE.SNAPPER=The Snapper 00041,THE.SNAPPER=The Snapper
0000,THE.SPACE.ARK=The Space Ark 00000,THE.SPACE.ARK=The Space Ark
0001,S2=The Spy Strikes Back 00010,S2=The Spy Strikes Back
1000,VV=The Voyage of the Valkyrie 10000,VV=The Voyage of the Valkyrie
0016,THEXDER=Thexder 00160,THEXDER=Thexder
0001,THIEF=Thief 00011,THIEF=Thief
0001,THRESHOLD=Threshold 00010,THRESHOLD=Threshold
0001,THUNDER.BOMBS=Thunder Bombs 00010,THUNDER.BOMBS=Thunder Bombs
1001,TIME.PILOT=Time Pilot 10011,TIME.PILOT=Time Pilot
0001,TITAN.CRONUS=Titan Cronus 00011,TITAN.CRONUS=Titan Cronus
0001,TORAX=Torax 00010,TORAX=Torax
1000,TORPEDO.TERROR=Torpedo Terror 10001,TORPEDO.TERROR=Torpedo Terror
0004,TRACK.ATTACK=Track Attack 00040,TRACK.ATTACK=Track Attack
0001,TREASURE.DIVE=Treasure Dive 00010,TREASURE.DIVE=Treasure Dive
0000,TRIAD=Triad 00001,TRIAD=Triad
1003,TROLLS.TRIBS=Trolls and Tribulations 10031,TROLLS.TRIBS=Trolls and Tribulations
0001,TROMPERS=Trompers 00011,TROMPERS=Trompers
1004,TSUNAMI=Tsunami 10041,TSUNAMI=Tsunami
1007,TB=Tubeway ][ 10070,TB=Tubeway ][
0001,TUNNEL.TERROR=Tunnel Terror 00010,TUNNEL.TERROR=Tunnel Terror
0001,TWERPS=Twerps 00011,TWERPS=Twerps
1001,UD=Up'n Down 10010,UD=Up'n Down
0111,VICTORY.ROAD=Victory Road 01110,VICTORY.ROAD=Victory Road
0000,VIDEO.VEGAS=Video Vegas 00000,VIDEO.VEGAS=Video Vegas
0001,VINDICATOR=Vindicator 00010,VINDICATOR=Vindicator
1001,VIPER.PATROL=Viper Patrol 10010,VIPER.PATROL=Viper Patrol
0001,VORTEX=Vortex 00011,VORTEX=Vortex
0000,WALL.DEFENCE=Wall Defence 00001,WALL.DEFENCE=Wall Defence
0001,WARGLE=Wargle 00010,WARGLE=Wargle
0006,WARP.DESTROYER=Warp Destroyer 00060,WARP.DESTROYER=Warp Destroyer
0001,WAVY.NAVY=Wavy Navy 00010,WAVY.NAVY=Wavy Navy
0000,WAYOUT=Wayout 00000,WAYOUT=Wayout
1111,RR=Who Framed Roger Rabbit 11110,RR=Who Framed Roger Rabbit
1001,WHOMPER.STOMPER=Whomper Stomper 10011,WHOMPER.STOMPER=Whomper Stomper
0000,WILLY.BYTE=Willy Byte 00000,WILLY.BYTE=Willy Byte
1113,WF=Wings of Fury 11130,WF=Wings of Fury
1001,XEVIOUS=Xevious 10010,XEVIOUS=Xevious
0001,ZARGS=Zargs 00011,ZARGS=Zargs
1001,ZAXXON=Zaxxon 10010,ZAXXON=Zaxxon
0005,ZENITH=Zenith 00051,ZENITH=Zenith
1000,ZP=Zero Gravity Pinball 10001,ZP=Zero Gravity Pinball
0001,ZOO.MASTER=Zoo Master 00010,ZOO.MASTER=Zoo Master
[eof] [eof]

View File

@ -189,7 +189,10 @@ HAS_SPEECH = %11000000
; AND masks for game info bitfield (after game display name in gSearchStore) ; AND masks for game info bitfield (after game display name in gSearchStore)
HAS_DHGR_TITLE = %10000000 ; this one is hard-coded via BMI instead of AND/BNE HAS_DHGR_TITLE = %10000000 ; this one is hard-coded via BMI instead of AND/BNE
IS_SINGLE_LOAD = %01000000
CHEAT_CATEGORY = %00001111 CHEAT_CATEGORY = %00001111
; ^^
; ++-- your bits here!
; AND masks for MachineStatus ; AND masks for MachineStatus
HAS_JOYSTICK = %10000000 HAS_JOYSTICK = %10000000

View File

@ -117,28 +117,65 @@ FindGame
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
PlayGame PlayGame
jsr GetGameToLaunch jsr GetGameToLaunch
; A/Y = address of game filename ; A/Y = address of game filename in gSearchIndex
PlayGameInAY PlayGameInAY
+ST16 SAVE +ST16 SAVE
+ST16 @pfile +ST16 @pfile
+ST16 @xfile
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 #IS_SINGLE_LOAD
php
jsr ClearScreens ; avoid seeing code load into the HGR page jsr ClearScreens ; avoid seeing code load into the HGR page
; (clobbers $106, must do now before loading prelaunch code) ; (clobbers $106, must do now before loading prelaunch code)
jsr LoadIndexedFile ; load prelaunch index file jsr LoadIndexedFile ; load prelaunch index file
- !word gSearchCache - !word gSearchCache ; clobber gSearchCache which we no longer need
!word kPrelaunchIndexRecord !word kPrelaunchIndexRecord
jsr okvs_find jsr okvs_find ; find this game's prelaunch index record
!word - !word -
@pfile !word $FDFD ; SMC @pfile !word $FDFD ; SMC
+ST16 @indexRecordPtr +ST16 @prelaunchIndexRecordPtr
jsr LoadIndexedFile jsr LoadIndexedFile ; load this game's prelaunch code into $0106
!word $0106 !word $0106
@indexRecordPtr @prelaunchIndexRecordPtr
!word $FDFD ; SMC !word $FDFD ; SMC
plp
beq @loadFromSubdirectory
bit $ff58
jsr LoadIndexedFile ; load xsingle index file (contains pointers to game binaries)
- !word gSearchCache ; clobber prelaunch index file which we no longer need
!word kXSingleRecord
jsr okvs_find ; find this game's xsingle index record
!word -
@xfile !word $FDFD ; SMC
+ST16 @xsingleIndexRecordPtr
jsr okvs_next_field
ldy #5
lda (PTR), y ; get game load address (stored immediately after index record)
sta @xsingleAddr
iny
lda (PTR), y
sta @xsingleAddr+1
jsr LoadIndexedFile ; load this game binary
@xsingleAddr
!word $FDFD ; SMC
@xsingleIndexRecordPtr
!word $FDFD ; SMC
jmp Launch
@loadFromSubdirectory
; we start by placing the subdirectory name at gPathname+kGameDirectoryLen ; we start by placing the subdirectory name at gPathname+kGameDirectoryLen
; to leave room for the GameDirectory name as the parent ; to leave room for the GameDirectory name as the parent

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 12071461 !be24 14048143
!le16 5108 !le16 5108

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 12019845 !be24 13996527
!le16 5521 !le16 5521

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 11957346 !be24 13934028
!le16 3841 !le16 3841

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 11970867 !be24 13947549
!le16 4264 !le16 4264

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 11987726 !be24 13964408
!le16 5395 !le16 5395

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 12007039 !be24 13983721
!le16 6026 !le16 6026

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 12076569 !be24 14053251
!le16 410 !le16 410

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 12077323 !be24 14054005
!le16 448 !le16 448

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 12077771 !be24 14054453
!le16 303 !le16 303

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 12028006 !be24 14004688
!le16 1640 !le16 1640

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 12077055 !be24 14053737
!le16 67 !le16 67

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 12071402 !be24 14048084
!le16 59 !le16 59

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 12069868 !be24 14046550
!le16 1437 !le16 1437

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 12055060 !be24 14031742
!le16 537 !le16 537

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 12025366 !be24 14002048
!le16 2640 !le16 2640

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 12030004 !be24 14006686
!le16 6780 !le16 6780

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 12076979 !be24 14053661
!le16 76 !le16 76

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 12071305 !be24 14047987
!le16 97 !le16 97

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 12077122 !be24 14053804
!le16 201 !le16 201

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 12055597 !be24 14032279
!le16 4625 !le16 4625

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 12060222 !be24 14036904
!le16 1702 !le16 1702

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 12061924 !be24 14038606
!le16 1087 !le16 1087

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 12063011 !be24 14039693
!le16 3279 !le16 3279

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 12066290 !be24 14042972
!le16 2985 !le16 2985

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 12069275 !be24 14045957
!le16 479 !le16 479

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 12069754 !be24 14046436
!le16 114 !le16 114

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 12078074 !be24 14054756
!le16 2370 !le16 2370

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 12041951 !be24 14018633
!le16 4548 !le16 4548

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 12046499 !be24 14023181
!le16 2236 !le16 2236

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 12013065 !be24 13989747
!le16 6780 !le16 6780

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 11948540 !be24 13925222
!le16 8806 !le16 8806

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 11961187 !be24 13937869
!le16 9680 !le16 9680

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 11975131 !be24 13951813
!le16 12595 !le16 12595

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 11993121 !be24 13969803
!le16 13918 !le16 13918

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 12029646 !be24 14006328
!le16 358 !le16 358

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 12036784 !be24 14013466
!le16 5167 !le16 5167

View File

@ -4,5 +4,5 @@
; This file is automatically generated ; This file is automatically generated
; ;
!byte 0 !byte 0
!be24 12048735 !be24 14025417
!le16 6325 !le16 6325

8
src/index/xsingle.idx.a Normal file
View File

@ -0,0 +1,8 @@
;
; Index record for build/XSINGLE.IDX
;
; This file is automatically generated
;
!byte 0
!be24 13922528
!le16 2694

View File

@ -149,6 +149,9 @@ kDecrunchRecord
kJoystickRecord kJoystickRecord
!source "src/index/joystick.idx.a" !source "src/index/joystick.idx.a"
kXSingleRecord
!source "src/index/xsingle.idx.a"
kTotalDataFile kTotalDataFile
!byte 10 !byte 10
!raw "TOTAL.DATA" !raw "TOTAL.DATA"

View File

@ -34,12 +34,14 @@ InputBuffer
; out: gSearchStore populated ; out: gSearchStore populated
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
ReloadSearchIndex ReloadSearchIndex
jsr LoadIndexedFile ; load appropriate search index into $8200
!word gSearchIndex
!word kSearchIndexRecord
jsr LoadIndexedFile ; load appropriate search cache into $B000 jsr LoadIndexedFile ; load appropriate search cache into $B000
!word gSearchCache !word gSearchCache
!word kSearchCacheRecord !word kSearchCacheRecord
ReloadSearchIndexOnly
jsr LoadIndexedFile ; load appropriate search index into $6000
SearchIndexHandle
!word gSearchIndex
!word kSearchIndexRecord
rts rts
FindTitleInCache FindTitleInCache

View File

@ -71,7 +71,12 @@ MegaAttractMode
bpl MegaAttractMode bpl MegaAttractMode
cmp #$8D ; Enter plays the game shown on screen. cmp #$8D ; Enter plays the game shown on screen.
bne + ; Any other key switches to Search Mode. bne + ; Any other key switches to Search Mode.
jsr ReloadSearchIndexOnly
+LD16 gLastMegaAttractGame +LD16 gLastMegaAttractGame
+ST16 @game
jsr okvs_find
!word SearchIndexHandle
@game !word $FDFD ; SMC
jsr PlayGameInAY ; (might return if user hits Ctrl-Reset) jsr PlayGameInAY ; (might return if user hits Ctrl-Reset)
+ jmp SearchMode + jmp SearchMode