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
EXOMIZER=exomizer mem -q -P23 -lnone
dsk: index asmproboot asmlauncher
dsk: index asmproboot asmlauncher extract
cp res/blank.hdv build/"$(DISK)"
cp res/_FileInformation.txt build/
$(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; \
done
for f in \
res/DEMO \
res/TITLE.ANIMATED \
res/ICONS \
res/DEMO \
res/TITLE.ANIMATED \
res/ICONS \
build/FX \
build/PRELAUNCH; do \
rm -f "$$f"/.DS_Store; \
@ -67,15 +67,19 @@ dsk: index asmproboot asmlauncher
for i in 1 2 3 4 5 6; do \
$(CADIUS) RENAMEFILE build/"$(DISK)" "/$(VOLUME)/DEMO/SPCARTOON.$${i}$${i}" "SPCARTOON.$${i}." >>build/log; \
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
for f in build/X/*; do \
$(CADIUS) ADDFOLDER build/"$(DISK)" "/$(VOLUME)/X/$$(basename $$f)" "$$f" -C >>build/log; \
done
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
#
@ -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)
#
# 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)
# 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)"
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
clean:

View File

@ -5,7 +5,7 @@
# -p pad sizes within data file to next block size (default off)
# 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
# 1 - output filename for 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
source=$(mktemp)
(echo "*=0" # dummy program counter for assembler
echo "!le16 $(wc -l <"$records"), 0" # OKVS header
while IFS="=" read -r key value; do
echo "!byte ${#key}+7" # OKVS record length
echo "!byte ${#key}" # OKVS key length
echo "!text \"$key\"" # OKVS key
if [ ! -e "$2/$key" ]; then # if file does not exist, use standard offset and size
(echo "*=0" # dummy program counter for assembler
echo "!le16 $(wc -l <"$records"), 0" # OKVS header
while IFS="=" read -r filename dummy; do
key=$(echo "$filename" | awk -F'#' '{ print $1 }')
addr=$(echo "$filename" | awk -F'#' '{ print $2 }')
if [ "${#addr}" -ne "0" ]; then # if filename is in the form 'NAME#06ADDR' then create extended index record
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"
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")
size=$(wc -c < "$2/$key")
size=$(wc -c < "$2/$filename")
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.
@ -70,10 +77,11 @@ source=$(mktemp)
size=$(((($offset + $size + 511) & -512) - $offset))
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
echo "!be24 $offset"
echo "!le16 $size"
[ "${#addr}" -ne "0" ] && echo '!le16 $'"$addr"
[ "${#3}" -ne "0" ] && echo "$key,$offset,$size" >> "$3"
done < "$records") > "$source"

View File

@ -35,9 +35,10 @@ source=$(mktemp)
if [ -z "$dhgrlog" ]; then
dhgr="0"
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
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)
if [ "$dhgr" -eq "0" ]; then
offset=$hgrlog
@ -55,7 +56,7 @@ source=$(mktemp)
echo "!byte ${#value}" # OKVS value length
echo "!text \"$value\"" # OKVS value (display name)
echo "!byte 1"
echo "!byte $((dhgr*128))+$cheat"
echo "!byte $((dhgr*128))+$((single*64))+$cheat"
echo "!be24 $offset"
echo "!le16 $size"
done < "$records"

View File

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

View File

@ -189,7 +189,10 @@ HAS_SPEECH = %11000000
; 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
IS_SINGLE_LOAD = %01000000
CHEAT_CATEGORY = %00001111
; ^^
; ++-- your bits here!
; AND masks for MachineStatus
HAS_JOYSTICK = %10000000

View File

@ -117,28 +117,65 @@ FindGame
;------------------------------------------------------------------------------
PlayGame
jsr GetGameToLaunch
; A/Y = address of game filename
; A/Y = address of game filename in gSearchIndex
PlayGameInAY
+ST16 SAVE
+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
; (clobbers $106, must do now before loading prelaunch code)
jsr LoadIndexedFile ; load prelaunch index file
- !word gSearchCache
- !word gSearchCache ; clobber gSearchCache which we no longer need
!word kPrelaunchIndexRecord
jsr okvs_find
jsr okvs_find ; find this game's prelaunch index record
!word -
@pfile !word $FDFD ; SMC
+ST16 @indexRecordPtr
+ST16 @prelaunchIndexRecordPtr
jsr LoadIndexedFile
jsr LoadIndexedFile ; load this game's prelaunch code into $0106
!word $0106
@indexRecordPtr
@prelaunchIndexRecordPtr
!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
; to leave room for the GameDirectory name as the parent

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -4,5 +4,5 @@
; This file is automatically generated
;
!byte 0
!be24 12048735
!be24 14025417
!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
!source "src/index/joystick.idx.a"
kXSingleRecord
!source "src/index/xsingle.idx.a"
kTotalDataFile
!byte 10
!raw "TOTAL.DATA"

View File

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

View File

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