fill out Captain Goodnight and Spare Change mini attract modes

This commit is contained in:
4am 2019-06-29 07:32:15 -04:00
parent e16143191f
commit 84640536ff
11 changed files with 68 additions and 17 deletions

View File

@ -2,24 +2,75 @@
# run from project root directory
cat res/games.conf | tr "\r" "\n" | grep "=" | grep -v "^#" | cut -d"," -f2 | cut -d"=" -f1 | \
cat res/games.conf |
tr "\r" "\n" |
grep "=" |
grep -v "^#" |
cut -d"," -f2 |
cut -d"=" -f1 | \
while read game; do
# if I knew how to use awk, this could be O(N) instead of O(N^2)
name=`cat res/games.conf | tr "\r" "\n" | grep "$game=" | cut -d"=" -f2`
# initialize attract mode configuration file for this game
echo "#\n# Attract mode for $name\n#\n" > /tmp/g
# add title screenshot for DHGR games only
[ -f res/title.dhgr/"$game" ] && echo "TITLE.DHGR/$game=8" >> /tmp/g
[ -f res/title.dhgr/"$game" ] &&
echo "TITLE.DHGR/$game=8" >> /tmp/g
# add box art, if any
[ -f res/artwork.shr/"$game" ] && echo "ARTWORK.SHR/$game=9" >> /tmp/g
# TODO add DHGR action screenshots, if any
cat res/ss/ACTDHGR*.CONF | tr "\r" "\n" | grep "$game""$" | cut -d"=" -f1 | sed -e "s/^/ACTION.DHGR\//g" | sed -e "s/$/=8/g" | sort | uniq >> /tmp/g
# add action screenshots, if any
cat res/ss/ACTION*.CONF | tr "\r" "\n" | grep "$game""$" | cut -d"=" -f1 | sed -e "s/^/ACTION.HGR\//g" | sed -e "s/$/=7/g" | sort | uniq >> /tmp/g
[ -f res/artwork.shr/"$game" ] &&
echo "ARTWORK.SHR/$game=9" >> /tmp/g
# add DHGR action screenshots, if any
cat res/ss/ACTDHGR*.CONF |
tr "\r" "\n" |
grep "$game""$" |
cut -d"=" -f1 |
sed -e "s/^/ACTION.DHGR\//g" |
sed -e "s/$/=8/g" |
sort |
uniq >> /tmp/g
# add HGR action screenshots, if any
cat res/ss/ACTION*.CONF |
tr "\r" "\n" |
grep "$game""$" |
cut -d"=" -f1 |
sed -e "s/^/ACTION.HGR\//g" |
sed -e "s/$/=7/g" |
sort |
uniq >> /tmp/g
if [ "$game" == "CAPTN.GOODNIGHT" ]; then
cat res/ss/ACTIONCAPT.CONF |
tr "\r" "\n" |
grep "^CAPT" |
sed -e "s/^/ACTION.HGR\//g" |
sed -e "s/$/=7/g" >> /tmp/g
fi
# add self-running demo, if any
cat res/attract.conf | tr "\r" "\n" | grep "^$game=0" >> /tmp/g
cat res/attract.conf |
tr "\r" "\n" |
grep "^$game=0" >> /tmp/g
if [ "$game" == "SPARE.CHANGE" ]; then
echo "SPCARTOON.1=0" >> /tmp/g
echo "SPCARTOON.2=0" >> /tmp/g
echo "SPCARTOON.3=0" >> /tmp/g
echo "SPCARTOON.4=0" >> /tmp/g
echo "SPCARTOON.5=0" >> /tmp/g
echo "SPCARTOON.6=0" >> /tmp/g
fi
# add eof
echo "\n[eof]" >> /tmp/g
# change line endings
cat /tmp/g | tr "\n" "\r" > res/attract/"$game"
# clean up
rm /tmp/g
done

View File

@ -1 +1 @@
# # Mega-Attract-Mode configuration file # # Mega-Attract-Mode is split into modules. Each module can be a short # slideshow, a self-running demo (like a game's built-in 'attract mode'), or # even just a single screenshot. Modules are run in the order listed here, one # after the next, until interrupted by user input. The last-run module is # tracked in the global prefs file. # # The same format is used by the per-game attract mode configuration files. # # Format: # key=value # # |key| must be unique within this file # # |value| must be one of # 0 = self-running demo (|key| is an executable binary file in /DEMO/) # 1 = HGR title slideshow (|key| is a file in /SS/ containing files in /TITLE.HGR/) # 2 = HGR action slideshow (|key| is a file in /SS/ containing files in /ACTION.HGR/) # 3 = DHGR title slideshow (|key| is a file in /SS/ containing files in /TITLE.DHGR/) # 4 = DHGR action slideshow (|key| is a file in /SS/ containing files in /ACTION.DHGR/) # 5 = SHR box art slideshow (|key| is a file in /SS/ containing files in /ARTWORK.SHR/) # 7 = single HGR file (|key| is arbitrary path from program root directory) # 8 = single DHGR file (|key| is arbitrary path from program root directory) # 9 = single SHR file (|key| is arbitrary path from program root directory) # # Blank lines and lines beginning with '#' are ignored (like this one!) # A line beginning with '[' terminates the parsing # # set 1 FAVORITES1.CONF=1 CARTOON.1=0 CARTOON.2=0 CARTOON.3=0 CARTOON.4=0 CARTOON.5=0 CARTOON.6=0 ACTIONCD1.CONF=2 JUNGLE.HUNT=0 DHGR1.CONF=3 ACTIONPOP.CONF=2 SAMMY.LIGHTFOOT=0 OTHER4.CONF=1 SHR1.CONF=5 # set 2 FAVORITES4.CONF=1 PITFALL.II=0 SYNERGIST.CONF=1 CARTOON.1=0 ACTIONMNO1.CONF=2 CONAN=0 DHGR2.CONF=3 ACTIONCLR1.CONF=2 ATARI.CONF=1 SNEAKERS=0 SHR2.CONF=5 # set 3 IDSI.CONF=1 HARD.HAT.MACK=0 BALLY.CONF=1 MR.DO.CONF=2 BURGERTIME=0 DHGR3.CONF=3 ACTIONS3.CONF=2 GUMBALL=0 S3.CONF=1 STARGATE=0 SHR3.CONF=5 # set 4 FAVORITES3.CONF=1 BOUNCING.KMNGAS=0 BRODERBUND.CONF=1 ACTIONCLR2.CONF=2 LADY.TUT=0 DHGR4.CONF=3 ACTIONAB1.CONF=2 CD2.CONF=1 SPYS.DEMISE=0 SHR4.CONF=5 # set 5 T1.CONF=1 MR.COOL=0 SIRIUS.CONF=1 CARTOON.2=0 ACTIONCLR3.CONF=2 CIDER.SPIDER=0 ACTDHGR1.CONF=4 ACTIONAB2.CONF=2 # 1 SPARE.CHANGE=0 SHR5.CONF=5 # set 6 MATTEL.CONF=1 THUNDERBOMBS=0 FAVORITES2.CONF=1 ACTIONBURG.CONF=2 VINDICATOR=0 # 4 ACTIONEFG2.CONF=2 S1.CONF=1 LODE.RUNNER=0 # 5 # set 7 EFG2.CONF=1 REPTON=0 DATAMOST.CONF=1 ACTIONCLR4.CONF=2 AGENT.USA=0 # 4 # 2 MNO.CONF=1 AQUATRON=0 SHR7.CONF=5 # set 8 SIERRA.CONF=1 POOYAN=0 CD1.CONF=1 CARTOON.3=0 ACTIONPQR1.CONF=2 ALIEN.DOWNPOUR=0 # 4 ACTIONT1.CONF=2 BOLO=0 T2.CONF=1 BUZZARD.BAIT=0 SHR8.CONF=5 # set 9 MICROFUN.CONF=1 GAMMA.GOBLINS=0 OTHER2.CONF=1 ACTIONCLR5.CONF=2 CEILING.ZERO=0 # 4 ACTIONPQR2.CONF=2 P2.CONF=1 ROBOTRON=0 SHR9.CONF=5 # set 10 SYNAPSE.CONF=1 WARP.DESTROYER=0 PICCADILLY.CONF=1 ACTIONT3.CONF=2 WAVY.NAVY=0 # 4 ACTIONT2.CONF=2 CD3.CONF=1 TRACK.AND.FIELD=0 SHR10.CONF=5 # set 11 DATAEAST.CONF=1 PEST.PATROL=0 EA.CONF=1 CARTOON.4=0 ACTIONMNO2.CONF=2 CHOPLIFTER=0 # 4 ACTIONEFG1.CONF=2 HIJKL2.CONF=1 GOONIES=0 # 5 # set 12 SEGA.CONF=1 LOST.TOMB=0 HIJKL.CONF=1 ACTIONEFG3.CONF=2 KARATEKA=0 # 4 ACTIONS2.CONF=2 S2.CONF=1 SNAKE.BYTE=0 SHR12.CONF=5 # set 13 ACTIVISION.CONF=1 DINO.EGGS=0 TAITO.CONF=1 ACTIONHIJ2.CONF=2 ALIEN.RAIN=0 # 4 ACTIONCD2.CONF=2 GEBELLI.CONF=1 SERPENTINE=0 SHR13.CONF=5 # set 14 PENGUIN.CONF=1 PACMAN=0 DATASOFT.CONF=1 CARTOON.5=0 ACTIONAB3.CONF=2 FLIP.OUT=0 # 4 ACTIONHIJ1.CONF=2 QR.CONF=1 PLASMANIA=0 SHR14.CONF=5 # set 15 SUBLOGIC.CONF=1 HIGH.RISE=0 EFG1.CONF=1 ACTIONS1.CONF=2 ORILEYS.MINE=0 # 4 ACTIONCD3.CONF=2 OTHER1.CONF=1 SPY.HUNTER=0 SHR15.CONF=5 # set 16 EPYX.CONF=1 NIBBLER=0 AB.CONF=1 ACTIONPQR3.CONF=2 ALIEN.AMBUSH=0 # 4 ACTIONCAPT.CONF=2 TUBEWAY=0 SHR6.CONF=5 # set 17 P1.CONF=1 PIEMAN=0 OTHER3.CONF=1 CARTOON.6=0 ACTIONHIJ3.CONF=2 CHAMP.LODERUN=0 # 4 # 2 FIREBIRD=0 SHR11.CONF=5 # broken demos #FORMULA.1=0 #SPIDER.RAID=0 #DUNG.BEETLES=0 #STELLAR.7=0 [eof]
# # Mega-Attract-Mode configuration file # # Mega-Attract-Mode is split into modules. Each module can be a short # slideshow, a self-running demo (like a game's built-in 'attract mode'), or # even just a single screenshot. Modules are run in the order listed here, one # after the next, until interrupted by user input. The last-run module is # tracked in the global prefs file. # # The same format is used by the per-game attract mode configuration files. # # Format: # key=value # # |key| must be unique within this file # # |value| must be one of # 0 = self-running demo (|key| is an executable binary file in /DEMO/) # 1 = HGR title slideshow (|key| is a file in /SS/ containing files in /TITLE.HGR/) # 2 = HGR action slideshow (|key| is a file in /SS/ containing files in /ACTION.HGR/) # 3 = DHGR title slideshow (|key| is a file in /SS/ containing files in /TITLE.DHGR/) # 4 = DHGR action slideshow (|key| is a file in /SS/ containing files in /ACTION.DHGR/) # 5 = SHR box art slideshow (|key| is a file in /SS/ containing files in /ARTWORK.SHR/) # 7 = single HGR file (|key| is arbitrary path from program root directory) # 8 = single DHGR file (|key| is arbitrary path from program root directory) # 9 = single SHR file (|key| is arbitrary path from program root directory) # # Blank lines and lines beginning with '#' are ignored (like this one!) # A line beginning with '[' terminates the parsing # # set 1 FAVORITES1.CONF=1 ACTIONCD1.CONF=2 JUNGLE.HUNT=0 DHGR1.CONF=3 ACTIONPOP.CONF=2 SAMMY.LIGHTFOOT=0 OTHER4.CONF=1 SHR1.CONF=5 # set 2 FAVORITES4.CONF=1 PITFALL.II=0 SYNERGIST.CONF=1 CARTOON.1=0 DATAMOST.CONF=1 ACTIONMNO1.CONF=2 CONAN=0 DHGR2.CONF=3 ACTIONCLR1.CONF=2 ATARI.CONF=1 SNEAKERS=0 SHR2.CONF=5 # set 3 IDSI.CONF=1 HARD.HAT.MACK=0 BALLY.CONF=1 MR.DO.CONF=2 BURGERTIME=0 DHGR3.CONF=3 ACTIONS3.CONF=2 GUMBALL=0 S3.CONF=1 STARGATE=0 SHR3.CONF=5 # set 4 FAVORITES3.CONF=1 BOUNCING.KMNGAS=0 BRODERBUND.CONF=1 ACTIONCLR2.CONF=2 LADY.TUT=0 DHGR4.CONF=3 ACTIONAB1.CONF=2 CD2.CONF=1 SPYS.DEMISE=0 SHR4.CONF=5 # set 5 T1.CONF=1 MR.COOL=0 SIRIUS.CONF=1 SPCARTOON.2=0 ACTIONCLR3.CONF=2 CIDER.SPIDER=0 ACTDHGR1.CONF=4 ACTIONAB2.CONF=2 # 1 SPARE.CHANGE=0 SHR5.CONF=5 # set 6 MATTEL.CONF=1 THUNDERBOMBS=0 FAVORITES2.CONF=1 ACTIONBURG.CONF=2 VINDICATOR=0 # 4 ACTIONEFG2.CONF=2 S1.CONF=1 LODE.RUNNER=0 # 5 # set 7 EFG2.CONF=1 REPTON=0 DATAMOST.CONF=1 ACTIONCLR4.CONF=2 AGENT.USA=0 # 4 # 2 MNO.CONF=1 AQUATRON=0 SHR7.CONF=5 # set 8 SIERRA.CONF=1 POOYAN=0 CD1.CONF=1 SPCARTOON.3=0 ACTIONPQR1.CONF=2 ALIEN.DOWNPOUR=0 # 4 ACTIONT1.CONF=2 BOLO=0 T2.CONF=1 BUZZARD.BAIT=0 SHR8.CONF=5 # set 9 MICROFUN.CONF=1 GAMMA.GOBLINS=0 OTHER2.CONF=1 ACTIONCLR5.CONF=2 CEILING.ZERO=0 # 4 ACTIONPQR2.CONF=2 P2.CONF=1 ROBOTRON=0 SHR9.CONF=5 # set 10 SYNAPSE.CONF=1 WARP.DESTROYER=0 PICCADILLY.CONF=1 ACTIONT3.CONF=2 WAVY.NAVY=0 # 4 ACTIONT2.CONF=2 CD3.CONF=1 TRACK.AND.FIELD=0 SHR10.CONF=5 # set 11 DATAEAST.CONF=1 PEST.PATROL=0 EA.CONF=1 SPCARTOON.4=0 ACTIONMNO2.CONF=2 CHOPLIFTER=0 # 4 ACTIONEFG1.CONF=2 HIJKL2.CONF=1 GOONIES=0 # 5 # set 12 SEGA.CONF=1 LOST.TOMB=0 HIJKL.CONF=1 ACTIONEFG3.CONF=2 KARATEKA=0 # 4 ACTIONS2.CONF=2 S2.CONF=1 SNAKE.BYTE=0 SHR12.CONF=5 # set 13 ACTIVISION.CONF=1 DINO.EGGS=0 TAITO.CONF=1 ACTIONHIJ2.CONF=2 ALIEN.RAIN=0 # 4 ACTIONCD2.CONF=2 GEBELLI.CONF=1 SERPENTINE=0 SHR13.CONF=5 # set 14 PENGUIN.CONF=1 PACMAN=0 DATASOFT.CONF=1 SPCARTOON.5=0 ACTIONAB3.CONF=2 FLIP.OUT=0 # 4 ACTIONHIJ1.CONF=2 QR.CONF=1 PLASMANIA=0 SHR14.CONF=5 # set 15 SUBLOGIC.CONF=1 HIGH.RISE=0 EFG1.CONF=1 ACTIONS1.CONF=2 ORILEYS.MINE=0 # 4 ACTIONCD3.CONF=2 OTHER1.CONF=1 SPY.HUNTER=0 SHR15.CONF=5 # set 16 EPYX.CONF=1 NIBBLER=0 AB.CONF=1 ACTIONPQR3.CONF=2 ALIEN.AMBUSH=0 # 4 ACTIONCAPT.CONF=2 TUBEWAY=0 SHR6.CONF=5 # set 17 P1.CONF=1 PIEMAN=0 OTHER3.CONF=1 SPCARTOON.6=0 ACTIONHIJ3.CONF=2 CHAMP.LODERUN=0 # 4 # 2 FIREBIRD=0 SHR11.CONF=5 # broken demos #FORMULA.1=0 #SPIDER.RAID=0 #DUNG.BEETLES=0 #STELLAR.7=0 [eof]

View File

@ -1 +1 @@
# # Attract mode for Captain Goodnight # ARTWORK.SHR/CAPTN.GOODNIGHT=9 ACTION.HGR/CAPTN.GOODNIGHT=7 [eof]
# # Attract mode for Captain Goodnight # ARTWORK.SHR/CAPTN.GOODNIGHT=9 ACTION.HGR/CAPTN.GOODNIGHT=7 ACTION.HGR/CAPTN.GOODNIGH1=7 ACTION.HGR/CAPTN.GOODNIGH2=7 ACTION.HGR/CAPTN.GOODNIGH3=7 ACTION.HGR/CAPTN.GOODNIGH4=7 ACTION.HGR/CAPTN.GOODNIGH5=7 ACTION.HGR/CAPTN.GOODNIGH6=7 ACTION.HGR/CAPTN.GOODNIGH7=7 ACTION.HGR/CAPTN.GOODNIGH8=7 ACTION.HGR/CAPTN.GOODNIGH9=7 [eof]

View File

@ -1 +1 @@
# # Attract mode for Spare Change # ARTWORK.SHR/SPARE.CHANGE=9 ACTION.HGR/SPARE.CHANGE=7 SPARE.CHANGE=0 [eof]
# # Attract mode for Spare Change # ARTWORK.SHR/SPARE.CHANGE=9 ACTION.HGR/SPARE.CHANGE=7 SPARE.CHANGE=0 SPCARTOON.1=0 SPCARTOON.2=0 SPCARTOON.3=0 SPCARTOON.4=0 SPCARTOON.5=0 SPCARTOON.6=0 [eof]

View File

@ -17,12 +17,6 @@ BURGERTIME.4=Type(F1),AuxType(0C00),Access(C3)
BURGERTIME.5=Type(F1),AuxType(6000),Access(C3)
BUZZARD.BAIT=Type(06),AuxType(0300),Access(C3)
BUZZARD.BAIT.1=Type(F1),AuxType(0000),Access(C3)
CARTOON.1=Type(06),AuxType(02D0),Access(C3)
CARTOON.2=Type(06),AuxType(02D0),Access(C3)
CARTOON.3=Type(06),AuxType(02D0),Access(C3)
CARTOON.4=Type(06),AuxType(02D0),Access(C3)
CARTOON.5=Type(06),AuxType(02D0),Access(C3)
CARTOON.6=Type(06),AuxType(02D0),Access(C3)
CEILING.ZERO=Type(06),AuxType(0300),Access(C3)
CEILING.ZERO.1=Type(F1),AuxType(0000),Access(C3)
CHAMP.LODERUN=Type(06),AuxType(0800),Access(C3)
@ -130,6 +124,12 @@ SPARE.CHANGE.K=Type(F1),AuxType(9600),Access(C3)
SPARE.CHANGE.L=Type(F1),AuxType(9600),Access(C3)
SPARE.CHANGE.S=Type(F1),AuxType(9600),Access(C3)
SPARE.CHANGE.Z=Type(F1),AuxType(B400),Access(C3)
SPCARTOON.1=Type(06),AuxType(02D0),Access(C3)
SPCARTOON.2=Type(06),AuxType(02D0),Access(C3)
SPCARTOON.3=Type(06),AuxType(02D0),Access(C3)
SPCARTOON.4=Type(06),AuxType(02D0),Access(C3)
SPCARTOON.5=Type(06),AuxType(02D0),Access(C3)
SPCARTOON.6=Type(06),AuxType(02D0),Access(C3)
SPIDER.RAID=Type(06),AuxType(0300),Access(C3)
SPIDER.RAID.1=Type(F1),AuxType(0000),Access(C3)
SPY.HUNTER=Type(06),AuxType(0B87),Access(C3)