diff --git a/sc2/ChangeLog b/sc2/ChangeLog index 6aff932d6..11af3593d 100644 --- a/sc2/ChangeLog +++ b/sc2/ChangeLog @@ -1,4 +1,5 @@ Changes towards version 0.5: +- Replaced the binary resource indexes by textual ones - SvdB - Some subtitle timing fixes (bug #s 771, 780) - Alex - Entering Planetary Orbit wait screen is back (from DOS) - Alex - Gfx engine changes: now always 32bpp internally (facilitates diff --git a/sc2/content/androsyn.lst b/sc2/content/androsyn.lst new file mode 100644 index 000000000..d92e2a719 --- /dev/null +++ b/sc2/content/androsyn.lst @@ -0,0 +1,16 @@ +00200002 androsyn/andicons.ani +00200004 androsyn/andtext.txt +00200008 androsyn/androsyn.cod +00200102 androsyn/andmicon.ani +00400005 androsyn/andsound.snd +00400006 androsyn/andditty.mod +00400202 androsyn/androsyn.big +00400302 androsyn/androsyn.med +00400402 androsyn/androsyn.sml +00400502 androsyn/bubble.big +00400602 androsyn/bubble.med +00400702 androsyn/bubble.sml +00400802 androsyn/blazer.big +00400902 androsyn/blazer.med +00400a02 androsyn/blazer.sml +00400b02 androsyn/andcap.ani diff --git a/sc2/content/androsyn.shp b/sc2/content/androsyn.shp deleted file mode 100644 index ccfee296c..000000000 Binary files a/sc2/content/androsyn.shp and /dev/null differ diff --git a/sc2/content/arilou.con b/sc2/content/arilou.con deleted file mode 100644 index d10ee2d98..000000000 Binary files a/sc2/content/arilou.con and /dev/null differ diff --git a/sc2/content/arilou.lst b/sc2/content/arilou.lst new file mode 100644 index 000000000..20c2651ed --- /dev/null +++ b/sc2/content/arilou.lst @@ -0,0 +1,13 @@ +00200002 arilou/ariicons.ani +00200004 arilou/aritext.txt +00200008 arilou/arilou.cod +00200102 arilou/arimicon.ani +00400005 arilou/arisound.snd +00400006 arilou/ariditty.mod +00400202 arilou/arilou.big +00400302 arilou/arilou.med +00400402 arilou/arilou.sml +00400502 arilou/warp.big +00400602 arilou/warp.med +00400702 arilou/warp.sml +00400802 arilou/aricap.ani diff --git a/sc2/content/arilou.shp b/sc2/content/arilou.shp deleted file mode 100644 index 4230269e8..000000000 Binary files a/sc2/content/arilou.shp and /dev/null differ diff --git a/sc2/content/blackur.con b/sc2/content/blackur.con deleted file mode 100644 index 024ef0652..000000000 Binary files a/sc2/content/blackur.con and /dev/null differ diff --git a/sc2/content/blackurq.lst b/sc2/content/blackurq.lst new file mode 100644 index 000000000..56b54812a --- /dev/null +++ b/sc2/content/blackurq.lst @@ -0,0 +1,16 @@ +00200002 blackurq/blaicons.ani +00200004 blackurq/blatext.txt +00200008 blackurq/blackurq.cod +00200102 blackurq/blamicon.ani +00400005 blackurq/blasound.snd +00400006 blackurq/bladitty.mod +00400202 blackurq/blackurq.big +00400302 blackurq/blackurq.med +00400402 blackurq/blackurq.sml +00400502 blackurq/buzbig.ani +00400602 blackurq/buzmed.ani +00400702 blackurq/buzsml.ani +00400802 blackurq/gasbig.ani +00400902 blackurq/gasmed.ani +00400a02 blackurq/gassml.ani +00400b02 blackurq/blacap.ani diff --git a/sc2/content/blackurq.shp b/sc2/content/blackurq.shp deleted file mode 100644 index ead583086..000000000 Binary files a/sc2/content/blackurq.shp and /dev/null differ diff --git a/sc2/content/chenjesu.lst b/sc2/content/chenjesu.lst new file mode 100644 index 000000000..e54937e09 --- /dev/null +++ b/sc2/content/chenjesu.lst @@ -0,0 +1,16 @@ +00200002 chenjesu/cheicons.ani +00200004 chenjesu/chetext.txt +00200008 chenjesu/chenjesu.cod +00200102 chenjesu/chemicon.ani +00400005 chenjesu/chesound.snd +00400006 chenjesu/cheditty.mod +00400202 chenjesu/chenjesu.big +00400302 chenjesu/chenjesu.med +00400402 chenjesu/chenjesu.sml +00400502 chenjesu/spark.big +00400602 chenjesu/spark.med +00400702 chenjesu/spark.sml +00400802 chenjesu/doggy.big +00400902 chenjesu/doggy.med +00400a02 chenjesu/doggy.sml +00400b02 chenjesu/checap.ani diff --git a/sc2/content/chenjesu.shp b/sc2/content/chenjesu.shp deleted file mode 100644 index 2f22cab1f..000000000 Binary files a/sc2/content/chenjesu.shp and /dev/null differ diff --git a/sc2/content/chmmr.con b/sc2/content/chmmr.con deleted file mode 100644 index 282be8e81..000000000 Binary files a/sc2/content/chmmr.con and /dev/null differ diff --git a/sc2/content/chmmr.lst b/sc2/content/chmmr.lst new file mode 100644 index 000000000..c3a427c9c --- /dev/null +++ b/sc2/content/chmmr.lst @@ -0,0 +1,16 @@ +00200002 chmmr/chmicons.ani +00200004 chmmr/chmtext.txt +00200008 chmmr/chmmr.cod +00200102 chmmr/chmmicon.ani +00400005 chmmr/chmsound.snd +00400006 chmmr/chmditty.mod +00400202 chmmr/chmmr.big +00400302 chmmr/chmmr.med +00400402 chmmr/chmmr.sml +00400502 chmmr/muzbig.ani +00400602 chmmr/muzmed.ani +00400702 chmmr/muzsml.ani +00400802 chmmr/satbig.ani +00400902 chmmr/satmed.ani +00400a02 chmmr/satsml.ani +00400b02 chmmr/chmcap.ani diff --git a/sc2/content/chmmr.shp b/sc2/content/chmmr.shp deleted file mode 100644 index 7d45d676d..000000000 Binary files a/sc2/content/chmmr.shp and /dev/null differ diff --git a/sc2/content/comandr.con b/sc2/content/comandr.con deleted file mode 100644 index 209db3ac5..000000000 Binary files a/sc2/content/comandr.con and /dev/null differ diff --git a/sc2/content/comm/arilou.lst b/sc2/content/comm/arilou.lst new file mode 100644 index 000000000..64ca0ecc2 --- /dev/null +++ b/sc2/content/comm/arilou.lst @@ -0,0 +1,4 @@ +00200002 comm/arilou/arilou.ani +00200003 comm/arilou/arilou.fon +00200004 comm/arilou/arilou.txt +00200006 comm/arilou/arilou.mod diff --git a/sc2/content/comm/blackur.lst b/sc2/content/comm/blackur.lst new file mode 100644 index 000000000..38a88ae1c --- /dev/null +++ b/sc2/content/comm/blackur.lst @@ -0,0 +1,4 @@ +00200002 comm/blackur/blackur.ani +00200003 comm/blackur/blackur.fon +00200004 comm/blackur/blackur.txt +00200006 comm/blackur/blackur.mod diff --git a/sc2/content/comm/chmmr.lst b/sc2/content/comm/chmmr.lst new file mode 100644 index 000000000..e5218f6e4 --- /dev/null +++ b/sc2/content/comm/chmmr.lst @@ -0,0 +1,5 @@ +00200002 comm/chmmr/chmmr.ani +00200003 comm/chmmr/chmmr.fon +00200004 comm/chmmr/chmmr.txt +00200006 comm/chmmr/chmmr.mod +00200104 comm/chmmr/chmmr.ct diff --git a/sc2/content/comm/comandr.lst b/sc2/content/comm/comandr.lst new file mode 100644 index 000000000..4f44cf015 --- /dev/null +++ b/sc2/content/comm/comandr.lst @@ -0,0 +1,6 @@ +00200002 comm/comandr/comandr.ani +00200003 comm/comandr/comandr.fon +00200004 comm/comandr/comandr.ct +00200006 comm/comandr/comandr.mod +00400104 comm/comandr/comandr.txt +00600204 comm/starbas/starbas.txt diff --git a/sc2/content/comm/druuge.lst b/sc2/content/comm/druuge.lst new file mode 100644 index 000000000..a400d8c61 --- /dev/null +++ b/sc2/content/comm/druuge.lst @@ -0,0 +1,4 @@ +00200002 comm/druuge/druuge.ani +00200003 comm/druuge/druuge.fon +00200004 comm/druuge/druuge.txt +00200006 comm/druuge/druuge.mod diff --git a/sc2/content/comm/ilwrath.lst b/sc2/content/comm/ilwrath.lst new file mode 100644 index 000000000..bea60d559 --- /dev/null +++ b/sc2/content/comm/ilwrath.lst @@ -0,0 +1,4 @@ +00200002 comm/ilwrath/ilwrath.ani +00200003 comm/ilwrath/ilwrath.fon +00200004 comm/ilwrath/ilwrath.txt +00200006 comm/ilwrath/ilwrath.mod diff --git a/sc2/content/comm/melnorm.lst b/sc2/content/comm/melnorm.lst new file mode 100644 index 000000000..25f00f42b --- /dev/null +++ b/sc2/content/comm/melnorm.lst @@ -0,0 +1,5 @@ +00200002 comm/melnorm/melnorm.ani +00200003 comm/melnorm/melnorm.fon +00200004 comm/melnorm/melnorm.txt +00200006 comm/melnorm/melnorm.mod +00200104 comm/melnorm/melnorm.ct diff --git a/sc2/content/comm/mycon.lst b/sc2/content/comm/mycon.lst new file mode 100644 index 000000000..e500cb3dd --- /dev/null +++ b/sc2/content/comm/mycon.lst @@ -0,0 +1,4 @@ +00200002 comm/mycon/mycon.ani +00200003 comm/mycon/mycon.fon +00200004 comm/mycon/mycon.txt +00200006 comm/mycon/mycon.mod diff --git a/sc2/content/comm/orz.lst b/sc2/content/comm/orz.lst new file mode 100644 index 000000000..9d8ab2468 --- /dev/null +++ b/sc2/content/comm/orz.lst @@ -0,0 +1,5 @@ +00200002 comm/orz/orz.ani +00200003 comm/orz/orz.fon +00200004 comm/orz/orz.txt +00200006 comm/orz/orz.mod +00200104 comm/orz/orz.ct diff --git a/sc2/content/comm/pkunk.lst b/sc2/content/comm/pkunk.lst new file mode 100644 index 000000000..0a47ca3cd --- /dev/null +++ b/sc2/content/comm/pkunk.lst @@ -0,0 +1,4 @@ +00200002 comm/pkunk/pkunk.ani +00200003 comm/pkunk/pkunk.fon +00200004 comm/pkunk/pkunk.txt +00200006 comm/pkunk/pkunk.mod diff --git a/sc2/content/comm/shofixt.lst b/sc2/content/comm/shofixt.lst new file mode 100644 index 000000000..20ec471b0 --- /dev/null +++ b/sc2/content/comm/shofixt.lst @@ -0,0 +1,4 @@ +00200002 comm/shofixt/shofixt.ani +00200003 comm/shofixt/shofixt.fon +00200004 comm/shofixt/shofixt.txt +00200006 comm/shofixt/shofixt.mod diff --git a/sc2/content/comm/slyhome.lst b/sc2/content/comm/slyhome.lst new file mode 100644 index 000000000..88fc4c2ea --- /dev/null +++ b/sc2/content/comm/slyhome.lst @@ -0,0 +1,5 @@ +00200002 comm/slyhome/slyhome.ani +00200003 comm/slyhome/slyhome.fon +00200004 comm/slyhome/slyhome.txt +00200006 comm/slyhome/slyhome.mod +00200104 comm/slyhome/slyhome.ct diff --git a/sc2/content/comm/slyland.lst b/sc2/content/comm/slyland.lst new file mode 100644 index 000000000..ded882ddc --- /dev/null +++ b/sc2/content/comm/slyland.lst @@ -0,0 +1,4 @@ +00200002 comm/slyland/slyland.ani +00200003 comm/slyland/slyland.fon +00200004 comm/slyland/slyland.txt +00200006 comm/slyland/slyland.mod diff --git a/sc2/content/comm/spathi.lst b/sc2/content/comm/spathi.lst new file mode 100644 index 000000000..b490c250f --- /dev/null +++ b/sc2/content/comm/spathi.lst @@ -0,0 +1,7 @@ +00200002 comm/spathi/spathi.ani +00200003 comm/spathi/spathi.fon +00200004 comm/spathi/spathi.txt +00400102 comm/spahome/spahome.ani +00400104 comm/spahome/spahome.ct +00400204 comm/spahome/spahome.txt +00600006 comm/spathi/spathi.mod diff --git a/sc2/content/comm/supox.lst b/sc2/content/comm/supox.lst new file mode 100644 index 000000000..b2e416a7f --- /dev/null +++ b/sc2/content/comm/supox.lst @@ -0,0 +1,4 @@ +00200002 comm/supox/supox.ani +00200003 comm/supox/supox.fon +00200004 comm/supox/supox.txt +00200006 comm/supox/supox.mod diff --git a/sc2/content/comm/syreen.lst b/sc2/content/comm/syreen.lst new file mode 100644 index 000000000..88be3d4b7 --- /dev/null +++ b/sc2/content/comm/syreen.lst @@ -0,0 +1,5 @@ +00200002 comm/syreen/syreen.ani +00200003 comm/syreen/syreen.fon +00200004 comm/syreen/syreen.txt +00200006 comm/syreen/syreen.mod +00200104 comm/syreen/syreen.ct diff --git a/sc2/content/comm/talkpet.lst b/sc2/content/comm/talkpet.lst new file mode 100644 index 000000000..5d2ca7af5 --- /dev/null +++ b/sc2/content/comm/talkpet.lst @@ -0,0 +1,5 @@ +00200002 comm/talkpet/talkpet.ani +00200003 comm/talkpet/talkpet.fon +00200004 comm/talkpet/talkpet.txt +00200006 comm/talkpet/talkpet.mod +00200104 comm/talkpet/talkpet.ct diff --git a/sc2/content/comm/thradd.lst b/sc2/content/comm/thradd.lst new file mode 100644 index 000000000..1ed9ac608 --- /dev/null +++ b/sc2/content/comm/thradd.lst @@ -0,0 +1,4 @@ +00200002 comm/thradd/thradd.ani +00200003 comm/thradd/thradd.fon +00200004 comm/thradd/thradd.txt +00200006 comm/thradd/thradd.mod diff --git a/sc2/content/comm/umgah.lst b/sc2/content/comm/umgah.lst new file mode 100644 index 000000000..43ffab919 --- /dev/null +++ b/sc2/content/comm/umgah.lst @@ -0,0 +1,4 @@ +00200002 comm/umgah/umgah.ani +00200003 comm/umgah/umgah.fon +00200004 comm/umgah/umgah.txt +00200006 comm/umgah/umgah.mod diff --git a/sc2/content/comm/urquan.lst b/sc2/content/comm/urquan.lst new file mode 100644 index 000000000..1b7077cf3 --- /dev/null +++ b/sc2/content/comm/urquan.lst @@ -0,0 +1,4 @@ +00200002 comm/urquan/urquan.ani +00200003 comm/urquan/urquan.fon +00200004 comm/urquan/urquan.txt +00200006 comm/urquan/urquan.mod diff --git a/sc2/content/comm/utwig.lst b/sc2/content/comm/utwig.lst new file mode 100644 index 000000000..105a908ee --- /dev/null +++ b/sc2/content/comm/utwig.lst @@ -0,0 +1,4 @@ +00200002 comm/utwig/utwig.ani +00200003 comm/utwig/utwig.fon +00200004 comm/utwig/utwig.txt +00200006 comm/utwig/utwig.mod diff --git a/sc2/content/comm/vux.lst b/sc2/content/comm/vux.lst new file mode 100644 index 000000000..4b9911fd9 --- /dev/null +++ b/sc2/content/comm/vux.lst @@ -0,0 +1,5 @@ +00200002 comm/vux/vux.ani +00200003 comm/vux/vux.fon +00200004 comm/vux/vux.txt +00200006 comm/vux/vux.mod +00200104 comm/vux/vux.ct diff --git a/sc2/content/comm/yehat.lst b/sc2/content/comm/yehat.lst new file mode 100644 index 000000000..002c5a90d --- /dev/null +++ b/sc2/content/comm/yehat.lst @@ -0,0 +1,5 @@ +00200002 comm/yehat/yehat.ani +00200003 comm/yehat/yehat.fon +00200006 comm/yehat/yehat.mod +00400004 comm/yehat/yehat.txt +00600104 comm/rebel/rebel.txt diff --git a/sc2/content/comm/zoqfot.lst b/sc2/content/comm/zoqfot.lst new file mode 100644 index 000000000..573f7ecf9 --- /dev/null +++ b/sc2/content/comm/zoqfot.lst @@ -0,0 +1,4 @@ +00200002 comm/zoqfot/zoqfot.ani +00200003 comm/zoqfot/zoqfot.fon +00200004 comm/zoqfot/zoqfot.txt +00200006 comm/zoqfot/zoqfot.mod diff --git a/sc2/content/druuge.con b/sc2/content/druuge.con deleted file mode 100644 index 70b931f48..000000000 Binary files a/sc2/content/druuge.con and /dev/null differ diff --git a/sc2/content/druuge.lst b/sc2/content/druuge.lst new file mode 100644 index 000000000..47172ff09 --- /dev/null +++ b/sc2/content/druuge.lst @@ -0,0 +1,13 @@ +00200002 druuge/druicons.ani +00200004 druuge/drutext.txt +00200008 druuge/druuge.cod +00200102 druuge/drumicon.ani +00400005 druuge/drusound.snd +00400006 druuge/druditty.mod +00400202 druuge/druuge.big +00400302 druuge/druuge.med +00400402 druuge/druuge.sml +00400502 druuge/canbig.ani +00400602 druuge/canmed.ani +00400702 druuge/cansml.ani +00400802 druuge/drucap.ani diff --git a/sc2/content/druuge.shp b/sc2/content/druuge.shp deleted file mode 100644 index efc8b78ec..000000000 Binary files a/sc2/content/druuge.shp and /dev/null differ diff --git a/sc2/content/human.lst b/sc2/content/human.lst new file mode 100644 index 000000000..c44a8aac4 --- /dev/null +++ b/sc2/content/human.lst @@ -0,0 +1,13 @@ +00200002 human/humicons.ani +00200004 human/humtext.txt +00200008 human/human.cod +00200102 human/hummicon.ani +00400005 human/humsound.snd +00400006 human/humditty.mod +00400202 human/human.big +00400302 human/human.med +00400402 human/human.sml +00400502 human/saturn.big +00400602 human/saturn.med +00400702 human/saturn.sml +00400802 human/humcap.ani diff --git a/sc2/content/human.shp b/sc2/content/human.shp deleted file mode 100644 index 7554d16f6..000000000 Binary files a/sc2/content/human.shp and /dev/null differ diff --git a/sc2/content/ilwrath.con b/sc2/content/ilwrath.con deleted file mode 100644 index ef80dd8c4..000000000 Binary files a/sc2/content/ilwrath.con and /dev/null differ diff --git a/sc2/content/ilwrath.lst b/sc2/content/ilwrath.lst new file mode 100644 index 000000000..2abb6f6a4 --- /dev/null +++ b/sc2/content/ilwrath.lst @@ -0,0 +1,13 @@ +00200002 ilwrath/ilwicons.ani +00200004 ilwrath/ilwtext.txt +00200008 ilwrath/ilwrath.cod +00200102 ilwrath/ilwmicon.ani +00400005 ilwrath/ilwsound.snd +00400006 ilwrath/ilwditty.mod +00400202 ilwrath/ilwrath.big +00400302 ilwrath/ilwrath.med +00400402 ilwrath/ilwrath.sml +00400502 ilwrath/fire.big +00400602 ilwrath/fire.med +00400702 ilwrath/fire.sml +00400802 ilwrath/ilwcap.ani diff --git a/sc2/content/ilwrath.shp b/sc2/content/ilwrath.shp deleted file mode 100644 index 7f3cc1bc5..000000000 Binary files a/sc2/content/ilwrath.shp and /dev/null differ diff --git a/sc2/content/lastbat.lst b/sc2/content/lastbat.lst new file mode 100644 index 000000000..671aafddc --- /dev/null +++ b/sc2/content/lastbat.lst @@ -0,0 +1,12 @@ +00200008 lastbat/lastbat.cod +00400002 lastbat/lastbat.big +00400005 lastbat/lassound.snd +00400102 lastbat/lastbat.med +00400202 lastbat/lastbat.sml +00400302 lastbat/senbig.ani +00400402 lastbat/senmed.ani +00400502 lastbat/sensml.ani +00400602 lastbat/genbig.ani +00400702 lastbat/genmed.ani +00400802 lastbat/gensml.ani +00600902 lastbat/lascap.ani diff --git a/sc2/content/lastbat.sc2 b/sc2/content/lastbat.sc2 deleted file mode 100644 index ac6173f8e..000000000 Binary files a/sc2/content/lastbat.sc2 and /dev/null differ diff --git a/sc2/content/melnorm.con b/sc2/content/melnorm.con deleted file mode 100644 index c31731b02..000000000 Binary files a/sc2/content/melnorm.con and /dev/null differ diff --git a/sc2/content/melnorme.lst b/sc2/content/melnorme.lst new file mode 100644 index 000000000..16eddd6ff --- /dev/null +++ b/sc2/content/melnorme.lst @@ -0,0 +1,16 @@ +00200002 melnorme/melicons.ani +00200004 melnorme/meltext.txt +00200008 melnorme/melnorme.cod +00200102 melnorme/melmicon.ani +00400005 melnorme/melsound.snd +00400006 melnorme/melditty.mod +00400202 melnorme/melnorme.big +00400302 melnorme/melnorme.med +00400402 melnorme/melnorme.sml +00400502 melnorme/pumpbig.ani +00400602 melnorme/pumpmed.ani +00400702 melnorme/pumpsml.ani +00400802 melnorme/confubig.ani +00400902 melnorme/confumed.ani +00400a02 melnorme/confusml.ani +00400b02 melnorme/melcap.ani diff --git a/sc2/content/melnorme.shp b/sc2/content/melnorme.shp deleted file mode 100644 index c84f57a91..000000000 Binary files a/sc2/content/melnorme.shp and /dev/null differ diff --git a/sc2/content/mmrnmhrm.lst b/sc2/content/mmrnmhrm.lst new file mode 100644 index 000000000..1d5b20cf9 --- /dev/null +++ b/sc2/content/mmrnmhrm.lst @@ -0,0 +1,16 @@ +00200002 mmrnmhrm/mmricons.ani +00200004 mmrnmhrm/mmrtext.txt +00200008 mmrnmhrm/mmrnmhrm.cod +00200102 mmrnmhrm/mmrmicon.ani +00400005 mmrnmhrm/mmrsound.snd +00400006 mmrnmhrm/mmrditty.mod +00400202 mmrnmhrm/mmrnmhrm.big +00400302 mmrnmhrm/mmrnmhrm.med +00400402 mmrnmhrm/mmrnmhrm.sml +00400502 mmrnmhrm/torp.big +00400602 mmrnmhrm/torp.med +00400702 mmrnmhrm/torp.sml +00400802 mmrnmhrm/ywing.big +00400902 mmrnmhrm/ywing.med +00400a02 mmrnmhrm/ywing.sml +00400b02 mmrnmhrm/mmrcap.ani diff --git a/sc2/content/mmrnmhrm.shp b/sc2/content/mmrnmhrm.shp deleted file mode 100644 index c6619ce53..000000000 Binary files a/sc2/content/mmrnmhrm.shp and /dev/null differ diff --git a/sc2/content/mycon.con b/sc2/content/mycon.con deleted file mode 100644 index 8a474459f..000000000 Binary files a/sc2/content/mycon.con and /dev/null differ diff --git a/sc2/content/mycon.lst b/sc2/content/mycon.lst new file mode 100644 index 000000000..191cbc93d --- /dev/null +++ b/sc2/content/mycon.lst @@ -0,0 +1,13 @@ +00200002 mycon/mycicons.ani +00200004 mycon/myctext.txt +00200008 mycon/mycon.cod +00200102 mycon/mycmicon.ani +00400005 mycon/mycsound.snd +00400006 mycon/mycditty.mod +00400202 mycon/mycon.big +00400302 mycon/mycon.med +00400402 mycon/mycon.sml +00400502 mycon/plasma.big +00400602 mycon/plasma.med +00400702 mycon/plasma.sml +00400802 mycon/myccap.ani diff --git a/sc2/content/mycon.shp b/sc2/content/mycon.shp deleted file mode 100644 index 999b72d3a..000000000 Binary files a/sc2/content/mycon.shp and /dev/null differ diff --git a/sc2/content/orz.con b/sc2/content/orz.con deleted file mode 100644 index ed9e03460..000000000 Binary files a/sc2/content/orz.con and /dev/null differ diff --git a/sc2/content/orz.lst b/sc2/content/orz.lst new file mode 100644 index 000000000..7797e36e6 --- /dev/null +++ b/sc2/content/orz.lst @@ -0,0 +1,16 @@ +00200002 orz/orzicons.ani +00200004 orz/orztext.txt +00200008 orz/orz.cod +00200102 orz/orzmicon.ani +00400005 orz/orzsound.snd +00400006 orz/orzditty.mod +00400202 orz/orz.big +00400302 orz/orz.med +00400402 orz/orz.sml +00400502 orz/howbig.ani +00400602 orz/howmed.ani +00400702 orz/howsml.ani +00400802 orz/turbig.ani +00400902 orz/turmed.ani +00400a02 orz/tursml.ani +00400b02 orz/orzcap.ani diff --git a/sc2/content/orz.shp b/sc2/content/orz.shp deleted file mode 100644 index 66ddb961e..000000000 Binary files a/sc2/content/orz.shp and /dev/null differ diff --git a/sc2/content/pkunk.con b/sc2/content/pkunk.con deleted file mode 100644 index a3e65ac17..000000000 Binary files a/sc2/content/pkunk.con and /dev/null differ diff --git a/sc2/content/pkunk.lst b/sc2/content/pkunk.lst new file mode 100644 index 000000000..278b26be4 --- /dev/null +++ b/sc2/content/pkunk.lst @@ -0,0 +1,13 @@ +00200002 pkunk/pkuicons.ani +00200004 pkunk/pkutext.txt +00200008 pkunk/pkunk.cod +00200102 pkunk/pkumicon.ani +00400005 pkunk/pkusound.snd +00400006 pkunk/pkuditty.mod +00400202 pkunk/pkunk.big +00400302 pkunk/pkunk.med +00400402 pkunk/pkunk.sml +00400502 pkunk/bugbig.ani +00400602 pkunk/bugmed.ani +00400702 pkunk/bugsml.ani +00400802 pkunk/pkucap.ani diff --git a/sc2/content/pkunk.shp b/sc2/content/pkunk.shp deleted file mode 100644 index 047af6ab0..000000000 Binary files a/sc2/content/pkunk.shp and /dev/null differ diff --git a/sc2/content/probe.lst b/sc2/content/probe.lst new file mode 100644 index 000000000..995d5ab3a --- /dev/null +++ b/sc2/content/probe.lst @@ -0,0 +1,2 @@ +00200002 probe/promicon.ani +00200008 probe/probe.cod diff --git a/sc2/content/probe.sc2 b/sc2/content/probe.sc2 deleted file mode 100644 index da5abdb85..000000000 Binary files a/sc2/content/probe.sc2 and /dev/null differ diff --git a/sc2/content/shofixt.con b/sc2/content/shofixt.con deleted file mode 100644 index b04257ffa..000000000 Binary files a/sc2/content/shofixt.con and /dev/null differ diff --git a/sc2/content/shofixti.lst b/sc2/content/shofixti.lst new file mode 100644 index 000000000..09cad9c00 --- /dev/null +++ b/sc2/content/shofixti.lst @@ -0,0 +1,20 @@ +00200002 shofixti/shoicons.ani +00200004 shofixti/shotext.txt +00200008 shofixti/shofixti.cod +00200102 shofixti/shomicon.ani +00400202 shofixti/shofixti.big +00400302 shofixti/shofixti.med +00400402 shofixti/shofixti.sml +00400502 shofixti/destruct.big +00400602 shofixti/destruct.med +00400702 shofixti/destruct.sml +00400802 shofixti/shocap.ani +00600902 shofixti/oldshof.big +00600a02 shofixti/oldshof.med +00600b02 shofixti/oldshof.sml +00600c02 shofixti/oldcap.ani +00800005 shofixti/shosound.snd +00800006 shofixti/shoditty.mod +00800d02 shofixti/missile.big +00800e02 shofixti/missile.med +00800f02 shofixti/missile.sml diff --git a/sc2/content/shofixti.shp b/sc2/content/shofixti.shp deleted file mode 100644 index 512ac1da8..000000000 Binary files a/sc2/content/shofixti.shp and /dev/null differ diff --git a/sc2/content/sis.dat b/sc2/content/sis.dat deleted file mode 100644 index 17b6a5b7a..000000000 Binary files a/sc2/content/sis.dat and /dev/null differ diff --git a/sc2/content/sis.lst b/sc2/content/sis.lst new file mode 100644 index 000000000..65c284b8b --- /dev/null +++ b/sc2/content/sis.lst @@ -0,0 +1,12 @@ +00200008 sis_ship/sis.cod +00400002 sis_ship/sisicons.ani +00400005 sis_ship/sissound.snd +00400006 sis_ship/sisditty.mod +00400102 sis_ship/sis.big +00400202 sis_ship/sis.med +00400302 sis_ship/sis.sml +00400402 sis_ship/blasbig.ani +00400502 sis_ship/blasmed.ani +00400602 sis_ship/blassml.ani +00400702 sis_ship/siscap.ani +00600802 sis_ship/sishyper.ani diff --git a/sc2/content/slyhome.con b/sc2/content/slyhome.con deleted file mode 100644 index dfc9141e3..000000000 Binary files a/sc2/content/slyhome.con and /dev/null differ diff --git a/sc2/content/slyland.con b/sc2/content/slyland.con deleted file mode 100644 index caf0443fd..000000000 Binary files a/sc2/content/slyland.con and /dev/null differ diff --git a/sc2/content/slylandr.lst b/sc2/content/slylandr.lst new file mode 100644 index 000000000..ca9843740 --- /dev/null +++ b/sc2/content/slylandr.lst @@ -0,0 +1,10 @@ +00200002 slylandr/slyicons.ani +00200004 slylandr/slytext.txt +00200008 slylandr/slylandr.cod +00200102 slylandr/slymicon.ani +00400005 slylandr/slysound.snd +00400006 slylandr/slyditty.mod +00400202 slylandr/slylandr.big +00400302 slylandr/slylandr.med +00400402 slylandr/slylandr.sml +00400502 slylandr/slycap.ani diff --git a/sc2/content/slylandr.shp b/sc2/content/slylandr.shp deleted file mode 100644 index ddb6574e3..000000000 Binary files a/sc2/content/slylandr.shp and /dev/null differ diff --git a/sc2/content/spathi.con b/sc2/content/spathi.con deleted file mode 100644 index a04c0b55c..000000000 Binary files a/sc2/content/spathi.con and /dev/null differ diff --git a/sc2/content/spathi.lst b/sc2/content/spathi.lst new file mode 100644 index 000000000..289176c8b --- /dev/null +++ b/sc2/content/spathi.lst @@ -0,0 +1,16 @@ +00200002 spathi/spaicons.ani +00200004 spathi/spatext.txt +00200008 spathi/spathi.cod +00200102 spathi/spamicon.ani +00400005 spathi/spasound.snd +00400006 spathi/spaditty.mod +00400202 spathi/spathi.big +00400302 spathi/spathi.med +00400402 spathi/spathi.sml +00400502 spathi/missile.big +00400602 spathi/missile.med +00400702 spathi/missile.sml +00400802 spathi/discrim.big +00400902 spathi/discrim.med +00400a02 spathi/discrim.sml +00400b02 spathi/spacap.ani diff --git a/sc2/content/spathi.shp b/sc2/content/spathi.shp deleted file mode 100644 index 357bb7b14..000000000 Binary files a/sc2/content/spathi.shp and /dev/null differ diff --git a/sc2/content/starcon.lst b/sc2/content/starcon.lst new file mode 100644 index 000000000..0ef048332 --- /dev/null +++ b/sc2/content/starcon.lst @@ -0,0 +1,454 @@ +00200004 lbm/scclrtab.ct +00400002 lbm/title.ani +00600007 arilou.lst +00800107 chmmr.lst +00a00207 human.lst +00c00307 orz.lst +00e00407 pkunk.lst +01000507 shofixti.lst +01200607 spathi.lst +01400707 supox.lst +01600807 thradd.lst +01800907 utwig.lst +01a00a07 vux.lst +01c00b07 yehat.lst +01e00c07 melnorme.lst +02000d07 druuge.lst +02200e07 ilwrath.lst +02400f07 mycon.lst +02601007 slylandr.lst +02801107 umgah.lst +02a01207 urquan.lst +02c01307 zoqfot.lst +02e01407 syreen.lst +03001507 blackurq.lst +03201607 androsyn.lst +03401707 chenjesu.lst +03601807 mmrnmhrm.lst +03800003 lbm/starcon.fon +03800102 lbm/status.ani +03800103 lbm/tiny.fon +03800104 lbm/starcon.txt +03800202 lbm/activity.ani +03a00302 lbm/playmenu.ani +03c00203 lbm/micro.fon +03e00402 lbm/flagstat.ani +03e00502 lbm/miscdata.ani +04000005 lbm/menusnd.snd +04200105 lbm/gamesnd.snd +04400602 lbm/stars.ani +04400702 lbm/astbig.ani +04400802 lbm/astmed.ani +04400902 lbm/astsml.ani +04400a02 lbm/blabig.ani +04400b02 lbm/blamed.ani +04400c02 lbm/blasml.ani +04400d02 lbm/boobig.ani +04400e02 lbm/boomed.ani +04400f02 lbm/boosml.ani +04601002 lbm/ambanim.ani +04800204 lbm/hyperpal.ct +04801102 lbm/hyperstr.ani +04a00304 lbm/arispace.ct +04a01202 lbm/arispace.ani +04c00006 lbm/hyper.mod +04e00106 lbm/arispace.mod +05001302 ipanims/obbkgnd.ani +05200404 ipanims/orbplan.ct +05201402 ipanims/sis_ip.ani +05201502 ipanims/orbplan.ani +05201602 ipanims/ip_sun.ani +05400205 ipanims/landsnds.snd +05401702 ipanims/lander.ani +05401802 ipanims/quake.ani +05401902 ipanims/lightnin.ani +05401a02 ipanims/lavaspot.ani +05401b02 ipanims/lndrshld.ani +05401c02 ipanims/launch.ani +05401d02 ipanims/return.ani +05601e02 ipanims/orbview.ani +05801f02 ipanims/eartmask.ani +05a02002 ipanims/lifecan.ani +05c02102 ipanims/lifea.ani +05e02202 ipanims/lifeb.ani +06002302 ipanims/lifec.ani +06202402 ipanims/lifed.ani +06402502 ipanims/lifee.ani +06602602 ipanims/lifef.ani +06802702 ipanims/lifeg.ani +06a02802 ipanims/lifeh.ani +06c02902 ipanims/lifei.ani +06e02a02 ipanims/lifej.ani +07002b02 ipanims/lifek.ani +07202c02 ipanims/lifel.ani +07402d02 ipanims/lifem.ani +07602e02 ipanims/lifen.ani +07802f02 ipanims/lifeo.ani +07a03002 ipanims/lifep.ani +07c03102 ipanims/lifeq.ani +07e03202 ipanims/lifer.ani +08003302 ipanims/lifes.ani +08203402 ipanims/lifet.ani +08403502 ipanims/lifew.ani +08603602 ipanims/lifex.ani +08803702 ipanims/lifey.ani +08a03802 ipanims/lifeu.ani +08c03902 ipanims/lifev.ani +08e03a02 ipanims/lifez.ani +09000504 ipanims/str_cts_.ct +09000604 ipanims/mtl2xlts.xlt +09200704 ipanims/wr1_cts_.ct +09400804 ipanims/rst_xlts.xlt +09600904 ipanims/co2_cts_.ct +09800a04 ipanims/bnd_xlts.xlt +09a00b04 ipanims/ylgscts_.ct +09c00c04 ipanims/lll_cts_.ct +09e00d04 ipanims/ylgscts_.ct +0a000e04 ipanims/den_xlts.xlt +0a200f04 ipanims/mtl_cts_.ct +0a201004 ipanims/mtl1xlts.xlt +0a401104 ipanims/rrr_cts_.ct +0a601204 ipanims/ice_cts_.ct +0a801304 ipanims/ice_xlts.xlt +0aa01404 ipanims/qqq_cts_.ct +0ac01504 ipanims/rst_cts_.ct +0ae01604 ipanims/bnd_cts_.ct +0b001704 ipanims/rdx_cts_.ct +0b201804 ipanims/nnn_cts_.ct +0b401904 ipanims/qqq_cts_.ct +0b601a04 ipanims/rrr_cts_.ct +0b801b04 ipanims/den_cts_.ct +0ba01c04 ipanims/blgscts_.ct +0bc01d04 ipanims/www_cts_.ct +0be01e04 ipanims/grv_cts_.ct +0be01f04 ipanims/grv_xlts.xlt +0c002004 ipanims/vigscts_.ct +0c202104 ipanims/kkk_cts_.ct +0c402204 ipanims/prgscts_.ct +0c602304 ipanims/dst_cts_.ct +0c802404 ipanims/dst_cts_.ct +0ca02504 ipanims/jjj_cts_.ct +0cc02604 ipanims/dst_cts_.ct +0ce02704 ipanims/lit_cts_.ct +0d002804 ipanims/ylgscts_.ct +0d202904 ipanims/vigscts_.ct +0d402a04 ipanims/vigscts_.ct +0d602b04 ipanims/orgscts_.ct +0d802c04 ipanims/rai_cts_.ct +0d802d04 ipanims/rai_xlts.xlt +0da02e04 ipanims/hel_cts_.ct +0da02f04 ipanims/hel_xlts.xlt +0dc03004 ipanims/cry_cts_.ct +0de03104 ipanims/cry_xlts.xlt +0e003204 ipanims/bnd_cts_.ct +0e203304 ipanims/cygscts_.ct +0e403404 ipanims/rdx_cts_.ct +0e403504 ipanims/rdx1xlts.xlt +0e603604 ipanims/co2_cts_.ct +0e803704 ipanims/eme_cts_.ct +0ea03804 ipanims/rst_cts_.ct +0ec03904 ipanims/h2o_xlts.xlt +0ee03a04 ipanims/rdx_cts_.ct +0f003b04 ipanims/h2o_cts_.ct +0f203c04 ipanims/h2o_cts_.ct +0f403d04 ipanims/www_cts_.ct +0f603e04 ipanims/co2_cts_.ct +0f803f04 ipanims/wr1_cts_.ct +0fa04004 ipanims/rub_cts_.ct +0fc04104 ipanims/rrr_cts_.ct +0fe04204 ipanims/bbb_cts_.ct +10004304 ipanims/gasg.xlt +10204404 ipanims/blugasgi.ct +10404504 ipanims/cyagasgi.ct +10604604 ipanims/grngasgi.ct +10804704 ipanims/grygasgi.ct +10a04804 ipanims/oragasgi.ct +10c04904 ipanims/purgasgi.ct +10e04a04 ipanims/redgasgi.ct +11004b04 ipanims/viogasgi.ct +11204c04 ipanims/yelgasgi.ct +11400303 ipanims/lander.fon +11603b02 ipanims/moonbase.ani +11604d04 ipanims/moonbase.txt +11803c02 ipanims/maidens.ani +11804e04 ipanims/maidens.txt +11a04f04 ipanims/chmmrbas.txt +11c03d02 ipanims/aquhelix.ani +11c05004 ipanims/aquhelix.txt +11e03e02 ipanims/drutrans.ani +11e05104 ipanims/drutrans.txt +12003f02 ipanims/taadevic.ani +12005204 ipanims/taadevic.txt +12204002 ipanims/sundevic.ani +12205304 ipanims/sundevic.txt +12404102 ipanims/syrvault.ani +12405404 ipanims/syrvault.txt +12604202 ipanims/urqwreck.ani +12605504 ipanims/urqwreck.txt +12804302 ipanims/utwbomb.ani +12805604 ipanims/utwbomb.txt +12a05704 ipanims/vuxbeast.txt +12c04402 ipanims/eggcase.ani +12c05804 ipanims/eggcase.txt +12e04502 ipanims/spapluto.ani +12e05904 ipanims/spapluto.txt +13005a04 ipanims/burruins.txt +13205b04 ipanims/andruins.txt +13405c04 ipanims/sphere.txt +13605d04 ipanims/spindle.txt +13804602 ipanims/ruins.ani +13a05e04 ipanims/ruins.txt +13c04702 ipanims/umgtrans.ani +13c05f04 ipanims/umgtrans.txt +13e00206 ipanims/space.mod +14000306 ipanims/orbit1.mod +14000406 ipanims/orbit2.mod +14000506 ipanims/orbit3.mod +14000606 ipanims/orbit4.mod +14000706 ipanims/orbit5.mod +14204802 melee/melebkgd.ani +14404902 melee/melee.ani +14600806 lbm/redalert.mod +14604a02 lbm/segue.ani +14804b02 lbm/pickship.ani +14a01907 comm/arilou.lst +14c01a07 comm/chmmr.lst +14e01b07 comm/comandr.lst +15001c07 comm/orz.lst +15201d07 comm/pkunk.lst +15401e07 comm/shofixt.lst +15601f07 comm/spathi.lst +15802007 comm/supox.lst +15a02107 comm/thradd.lst +15c02207 comm/utwig.lst +15e02307 comm/vux.lst +16002407 comm/yehat.lst +16202507 comm/melnorm.lst +16402607 comm/druuge.lst +16602707 comm/ilwrath.lst +16802807 comm/mycon.lst +16a02907 comm/slyland.lst +16c02a07 comm/umgah.lst +16e02b07 comm/urquan.lst +17002c07 comm/zoqfot.lst +17202d07 comm/syreen.lst +17402e07 comm/blackur.lst +17602f07 comm/talkpet.lst +17803007 comm/slyhome.lst +17a00403 lbm/player.fon +17c03107 sis.lst +17e03207 lastbat.lst +18003307 probe.lst +18204c02 lbm/newgame.ani +18404d02 lbm/modules.ani +18604e02 lbm/sismods.ani +18604f02 lbm/outfit.ani +18800906 lbm/outfit.mod +18a05002 lbm/sisblu.ani +18a05102 lbm/shipyard.ani +18c00a06 lbm/shipyard.mod +18e00b06 lbm/starbase.mod +18e05202 lbm/starbase.ani +19005302 lbm/sam__big.ani +19205402 lbm/shie_big.ani +19205502 lbm/shie_med.ani +19205602 lbm/shie_sml.ani +19405702 lbm/ool__big.ani +19405802 lbm/ool__med.ani +19405902 lbm/ool__sml.ani +19605a02 lbm/ytt__big.ani +19605b02 lbm/ytt__med.ani +19605c02 lbm/ytt__sml.ani +19805d02 lbm/deg__big.ani +19805e02 lbm/deg__med.ani +19805f02 lbm/deg__sml.ani +19a06002 lbm/lan__big.ani +19a06102 lbm/lan__med.ani +19a06202 lbm/lan__sml.ani +19c06302 lbm/tre__big.ani +19c06402 lbm/tre__med.ani +19c06502 lbm/tre__sml.ani +19e06602 lbm/ure__big.ani +19e06702 lbm/ure__med.ani +19e06802 lbm/ure__sml.ani +1a006902 lbm/mtl__big.ani +1a006a02 lbm/mtl__med.ani +1a006b02 lbm/mtl__sml.ani +1a206c02 lbm/rad__big.ani +1a206d02 lbm/rad__med.ani +1a206e02 lbm/rad__sml.ani +1a406f02 lbm/opa__big.ani +1a407002 lbm/opa__med.ani +1a407102 lbm/opa__sml.ani +1a607202 lbm/cya__big.ani +1a607302 lbm/cya__med.ani +1a607402 lbm/cya__sml.ani +1a807502 lbm/aci__big.ani +1a807602 lbm/aci__med.ani +1a807702 lbm/aci__sml.ani +1aa07802 lbm/alk__big.ani +1aa07902 lbm/alk__med.ani +1aa07a02 lbm/alk__sml.ani +1ac07b02 lbm/hal__big.ani +1ac07c02 lbm/hal__med.ani +1ac07d02 lbm/hal__sml.ani +1ae07e02 lbm/gre__big.ani +1ae07f02 lbm/gre__med.ani +1ae08002 lbm/gre__sml.ani +1b008102 lbm/cop__big.ani +1b008202 lbm/cop__med.ani +1b008302 lbm/cop__sml.ani +1b208402 lbm/car__big.ani +1b208502 lbm/car__med.ani +1b208602 lbm/car__sml.ani +1b408702 lbm/ult__big.ani +1b408802 lbm/ult__med.ani +1b408902 lbm/ult__sml.ani +1b608a02 lbm/nob__big.ani +1b608b02 lbm/nob__med.ani +1b608c02 lbm/nob__sml.ani +1b808d02 lbm/azu__big.ani +1b808e02 lbm/azu__med.ani +1b808f02 lbm/azu__sml.ani +1ba09002 lbm/cho__big.ani +1ba09102 lbm/cho__med.ani +1ba09202 lbm/cho__sml.ani +1bc09302 lbm/pur__big.ani +1bc09402 lbm/pur__med.ani +1bc09502 lbm/pur__sml.ani +1be09602 lbm/sup__big.ani +1be09702 lbm/sup__med.ani +1be09802 lbm/sup__sml.ani +1c009902 lbm/pel__big.ani +1c009a02 lbm/pel__med.ani +1c009b02 lbm/pel__sml.ani +1c209c02 lbm/dus__big.ani +1c209d02 lbm/dus__med.ani +1c209e02 lbm/dus__sml.ani +1c409f02 lbm/mar__big.ani +1c40a002 lbm/mar__med.ani +1c40a102 lbm/mar__sml.ani +1c60a202 lbm/cim__big.ani +1c60a302 lbm/cim__med.ani +1c60a402 lbm/cim__sml.ani +1c80a502 lbm/inf__big.ani +1c80a602 lbm/inf__med.ani +1c80a702 lbm/inf__sml.ani +1ca0a802 lbm/sel__big.ani +1ca0a902 lbm/sel__med.ani +1ca0aa02 lbm/sel__sml.ani +1cc0ab02 lbm/aur__big.ani +1cc0ac02 lbm/aur__med.ani +1cc0ad02 lbm/aur__sml.ani +1ce0ae02 lbm/flu__big.ani +1ce0af02 lbm/flu__med.ani +1ce0b002 lbm/flu__sml.ani +1d00b102 lbm/ult__big.ani +1d00b202 lbm/ult__med.ani +1d00b302 lbm/ult__sml.ani +1d20b402 lbm/plu__big.ani +1d20b502 lbm/plu__med.ani +1d20b602 lbm/plu__sml.ani +1d40b702 lbm/rai__big.ani +1d40b802 lbm/rai__med.ani +1d40b902 lbm/rai__sml.ani +1d60ba02 lbm/cra__big.ani +1d60bb02 lbm/cra__med.ani +1d60bc02 lbm/cra__sml.ani +1d80bd02 lbm/sap__big.ani +1d80be02 lbm/sap__med.ani +1d80bf02 lbm/sap__sml.ani +1da0c002 lbm/org__big.ani +1da0c102 lbm/org__med.ani +1da0c202 lbm/org__sml.ani +1dc0c302 lbm/xen__big.ani +1dc0c402 lbm/xen__med.ani +1dc0c502 lbm/xen__sml.ani +1de0c602 lbm/red__big.ani +1de0c702 lbm/red__med.ani +1de0c802 lbm/red__sml.ani +1e00c902 lbm/pri__big.ani +1e00ca02 lbm/pri__med.ani +1e00cb02 lbm/pri__sml.ani +1e20cc02 lbm/eme__big.ani +1e20cd02 lbm/eme__med.ani +1e20ce02 lbm/eme__sml.ani +1e40cf02 lbm/chl__big.ani +1e40d002 lbm/chl__med.ani +1e40d102 lbm/chl__sml.ani +1e60d202 lbm/mgn__big.ani +1e60d302 lbm/mgn__med.ani +1e60d402 lbm/mgn__sml.ani +1e80d502 lbm/wat__big.ani +1e80d602 lbm/wat__med.ani +1e80d702 lbm/wat__sml.ani +1ea0d802 lbm/tel__big.ani +1ea0d902 lbm/tel__med.ani +1ea0da02 lbm/tel__sml.ani +1ec0db02 lbm/hyd__big.ani +1ec0dc02 lbm/hyd__med.ani +1ec0dd02 lbm/hyd__sml.ani +1ee0de02 lbm/iod__big.ani +1ee0df02 lbm/iod__med.ani +1ee0e002 lbm/iod__sml.ani +1f00e102 lbm/vin__big.ani +1f00e202 lbm/vin__med.ani +1f00e302 lbm/vin__sml.ani +1f20e402 lbm/rub__big.ani +1f20e502 lbm/rub__med.ani +1f20e602 lbm/rub__sml.ani +1f40e702 lbm/mgm__big.ani +1f40e802 lbm/mgm__med.ani +1f40e902 lbm/mgm__sml.ani +1f60ea02 lbm/cri__big.ani +1f60eb02 lbm/cri__med.ani +1f60ec02 lbm/cri__sml.ani +1f80ed02 lbm/blg__big.ani +1f80ee02 lbm/blg__med.ani +1f80ef02 lbm/blg__sml.ani +1fa0f002 lbm/cyg__big.ani +1fa0f102 lbm/cyg__med.ani +1fa0f202 lbm/cyg__sml.ani +1fc0f302 lbm/gng__big.ani +1fc0f402 lbm/gng__med.ani +1fc0f502 lbm/gng__sml.ani +1fe0f602 lbm/gyg__big.ani +1fe0f702 lbm/gyg__med.ani +1fe0f802 lbm/gyg__sml.ani +2000f902 lbm/org__big.ani +2000fa02 lbm/org__med.ani +2000fb02 lbm/org__sml.ani +2020fc02 lbm/pug__big.ani +2020fd02 lbm/pug__med.ani +2020fe02 lbm/pug__sml.ani +2040ff02 lbm/reg__big.ani +20410002 lbm/reg__med.ani +20410102 lbm/reg__sml.ani +20610202 lbm/vig__big.ani +20610302 lbm/vig__med.ani +20610402 lbm/vig__sml.ani +20810502 lbm/yeg__big.ani +20810602 lbm/yeg__med.ani +20810702 lbm/yeg__sml.ani +20a00c06 lbm/battle.mod +20c10802 lbm/credit00.ani +20e10902 lbm/credit01.ani +21010a02 lbm/credit02.ani +21210b02 lbm/credit03.ani +21410c02 lbm/credit04.ani +21610d02 lbm/credit05.ani +21810e02 lbm/credit06.ani +21a10f02 lbm/credit07.ani +21c11002 lbm/credit08.ani +21e11102 lbm/credit09.ani +22011202 lbm/credit10.ani +22211302 lbm/credit11.ani +22411402 lbm/credit12.ani +22611502 lbm/credit13.ani +22811602 lbm/credit14.ani +22a11702 lbm/credit15.ani +22c11802 lbm/credit16.ani +22e11902 lbm/credit17.ani +23011a02 lbm/credit18.ani +23211b02 lbm/credit19.ani +23400d06 lbm/credits.mod diff --git a/sc2/content/supox.con b/sc2/content/supox.con deleted file mode 100644 index 06d5a3033..000000000 Binary files a/sc2/content/supox.con and /dev/null differ diff --git a/sc2/content/supox.lst b/sc2/content/supox.lst new file mode 100644 index 000000000..406164820 --- /dev/null +++ b/sc2/content/supox.lst @@ -0,0 +1,13 @@ +00200002 supox/supicons.ani +00200004 supox/suptext.txt +00200008 supox/supox.cod +00200102 supox/supmicon.ani +00400005 supox/supsound.snd +00400006 supox/supditty.mod +00400202 supox/supox.big +00400302 supox/supox.med +00400402 supox/supox.sml +00400502 supox/gobbig.ani +00400602 supox/gobmed.ani +00400702 supox/gobsml.ani +00400802 supox/supcap.ani diff --git a/sc2/content/supox.shp b/sc2/content/supox.shp deleted file mode 100644 index 024663643..000000000 Binary files a/sc2/content/supox.shp and /dev/null differ diff --git a/sc2/content/syreen.con b/sc2/content/syreen.con deleted file mode 100644 index 550f61efb..000000000 Binary files a/sc2/content/syreen.con and /dev/null differ diff --git a/sc2/content/syreen.lst b/sc2/content/syreen.lst new file mode 100644 index 000000000..9b2e373d1 --- /dev/null +++ b/sc2/content/syreen.lst @@ -0,0 +1,13 @@ +00200002 syreen/syricons.ani +00200004 syreen/syrtext.txt +00200008 syreen/syreen.cod +00200102 syreen/syrmicon.ani +00400005 syreen/syrsound.snd +00400006 syreen/syrditty.mod +00400202 syreen/syreen.big +00400302 syreen/syreen.med +00400402 syreen/syreen.sml +00400502 syreen/dagger.big +00400602 syreen/dagger.med +00400702 syreen/dagger.sml +00400802 syreen/syrcap.ani diff --git a/sc2/content/syreen.shp b/sc2/content/syreen.shp deleted file mode 100644 index 3c9b01b3f..000000000 Binary files a/sc2/content/syreen.shp and /dev/null differ diff --git a/sc2/content/talkpet.con b/sc2/content/talkpet.con deleted file mode 100644 index 82d96ef18..000000000 Binary files a/sc2/content/talkpet.con and /dev/null differ diff --git a/sc2/content/thradd.con b/sc2/content/thradd.con deleted file mode 100644 index 708255b00..000000000 Binary files a/sc2/content/thradd.con and /dev/null differ diff --git a/sc2/content/thradd.lst b/sc2/content/thradd.lst new file mode 100644 index 000000000..58c3c0f89 --- /dev/null +++ b/sc2/content/thradd.lst @@ -0,0 +1,16 @@ +00200002 thradd/thricons.ani +00200004 thradd/thrtext.txt +00200008 thradd/thradd.cod +00200102 thradd/thrmicon.ani +00400005 thradd/thrsound.snd +00400006 thradd/thrditty.mod +00400202 thradd/thradd.big +00400302 thradd/thradd.med +00400402 thradd/thradd.sml +00400502 thradd/horbig.ani +00400602 thradd/hormed.ani +00400702 thradd/horsml.ani +00400802 thradd/napbig.ani +00400902 thradd/napmed.ani +00400a02 thradd/napsml.ani +00400b02 thradd/thrcap.ani diff --git a/sc2/content/thradd.shp b/sc2/content/thradd.shp deleted file mode 100644 index 1237cab39..000000000 Binary files a/sc2/content/thradd.shp and /dev/null differ diff --git a/sc2/content/umgah.con b/sc2/content/umgah.con deleted file mode 100644 index c139faf66..000000000 Binary files a/sc2/content/umgah.con and /dev/null differ diff --git a/sc2/content/umgah.lst b/sc2/content/umgah.lst new file mode 100644 index 000000000..154edf566 --- /dev/null +++ b/sc2/content/umgah.lst @@ -0,0 +1,14 @@ +00200002 umgah/umgicons.ani +00200004 umgah/umgtext.txt +00200008 umgah/umgah.cod +00200102 umgah/umgmicon.ani +00400005 umgah/umgsound.snd +00400006 umgah/umgditty.mod +00400202 umgah/umgah.big +00400302 umgah/umgah.med +00400402 umgah/umgah.sml +00400502 umgah/spritz.ani +00400602 umgah/cone.big +00400702 umgah/cone.med +00400802 umgah/cone.sml +00400902 umgah/umgcap.ani diff --git a/sc2/content/umgah.shp b/sc2/content/umgah.shp deleted file mode 100644 index 037c39529..000000000 Binary files a/sc2/content/umgah.shp and /dev/null differ diff --git a/sc2/content/urquan.con b/sc2/content/urquan.con deleted file mode 100644 index 211da1e0e..000000000 Binary files a/sc2/content/urquan.con and /dev/null differ diff --git a/sc2/content/urquan.lst b/sc2/content/urquan.lst new file mode 100644 index 000000000..76bdc3865 --- /dev/null +++ b/sc2/content/urquan.lst @@ -0,0 +1,16 @@ +00200002 urquan/urqicons.ani +00200004 urquan/urqtext.txt +00200008 urquan/urquan.cod +00200102 urquan/urqmicon.ani +00400005 urquan/urqsound.snd +00400006 urquan/urqditty.mod +00400202 urquan/urquan.big +00400302 urquan/urquan.med +00400402 urquan/urquan.sml +00400502 urquan/fusion.big +00400602 urquan/fusion.med +00400702 urquan/fusion.sml +00400802 urquan/fight.big +00400902 urquan/fight.med +00400a02 urquan/fight.sml +00400b02 urquan/urqcap.ani diff --git a/sc2/content/urquan.shp b/sc2/content/urquan.shp deleted file mode 100644 index 40b2c51ba..000000000 Binary files a/sc2/content/urquan.shp and /dev/null differ diff --git a/sc2/content/utwig.con b/sc2/content/utwig.con deleted file mode 100644 index 77dd1ece4..000000000 Binary files a/sc2/content/utwig.con and /dev/null differ diff --git a/sc2/content/utwig.lst b/sc2/content/utwig.lst new file mode 100644 index 000000000..663182393 --- /dev/null +++ b/sc2/content/utwig.lst @@ -0,0 +1,13 @@ +00200002 utwig/utwicons.ani +00200004 utwig/utwtext.txt +00200008 utwig/utwig.cod +00200102 utwig/utwmicon.ani +00400005 utwig/utwsound.snd +00400006 utwig/utwditty.mod +00400202 utwig/utwig.big +00400302 utwig/utwig.med +00400402 utwig/utwig.sml +00400502 utwig/lanbig.ani +00400602 utwig/lanmed.ani +00400702 utwig/lansml.ani +00400802 utwig/utwcap.ani diff --git a/sc2/content/utwig.shp b/sc2/content/utwig.shp deleted file mode 100644 index 9276c1816..000000000 Binary files a/sc2/content/utwig.shp and /dev/null differ diff --git a/sc2/content/vux.con b/sc2/content/vux.con deleted file mode 100644 index db8df139c..000000000 Binary files a/sc2/content/vux.con and /dev/null differ diff --git a/sc2/content/vux.lst b/sc2/content/vux.lst new file mode 100644 index 000000000..a3e94fa2f --- /dev/null +++ b/sc2/content/vux.lst @@ -0,0 +1,14 @@ +00200002 vux/vuxicons.ani +00200004 vux/vuxtext.txt +00200008 vux/vux.cod +00200102 vux/vuxmicon.ani +00400005 vux/vuxsound.snd +00400006 vux/vuxditty.mod +00400202 vux/vux.big +00400302 vux/vux.med +00400402 vux/vux.sml +00400502 vux/limpets.big +00400602 vux/limpets.med +00400702 vux/limpets.sml +00400802 vux/slime.ani +00400902 vux/vuxcap.ani diff --git a/sc2/content/vux.shp b/sc2/content/vux.shp deleted file mode 100644 index cdd897776..000000000 Binary files a/sc2/content/vux.shp and /dev/null differ diff --git a/sc2/content/yehat.con b/sc2/content/yehat.con deleted file mode 100644 index 8180b1b86..000000000 Binary files a/sc2/content/yehat.con and /dev/null differ diff --git a/sc2/content/yehat.lst b/sc2/content/yehat.lst new file mode 100644 index 000000000..b0cc9f78f --- /dev/null +++ b/sc2/content/yehat.lst @@ -0,0 +1,16 @@ +00200002 yehat/yehicons.ani +00200004 yehat/yehtext.txt +00200008 yehat/yehat.cod +00200102 yehat/yehmicon.ani +00400005 yehat/yehsound.snd +00400006 yehat/yehditty.mod +00400202 yehat/yehat.big +00400302 yehat/yehat.med +00400402 yehat/yehat.sml +00400502 yehat/missile.big +00400602 yehat/missile.med +00400702 yehat/missile.sml +00400802 yehat/shield.big +00400902 yehat/shield.med +00400a02 yehat/shield.sml +00400b02 yehat/yehcap.ani diff --git a/sc2/content/yehat.shp b/sc2/content/yehat.shp deleted file mode 100644 index b46de60e2..000000000 Binary files a/sc2/content/yehat.shp and /dev/null differ diff --git a/sc2/content/zoqfot.con b/sc2/content/zoqfot.con deleted file mode 100644 index ce1ee3575..000000000 Binary files a/sc2/content/zoqfot.con and /dev/null differ diff --git a/sc2/content/zoqfot.lst b/sc2/content/zoqfot.lst new file mode 100644 index 000000000..2065e7595 --- /dev/null +++ b/sc2/content/zoqfot.lst @@ -0,0 +1,16 @@ +00200002 zoqfot/zoqicons.ani +00200004 zoqfot/zoqtext.txt +00200008 zoqfot/zoqfot.cod +00200102 zoqfot/zoqmicon.ani +00400005 zoqfot/zoqsound.snd +00400006 zoqfot/zoqditty.mod +00400202 zoqfot/zoqfot.big +00400302 zoqfot/zoqfot.med +00400402 zoqfot/zoqfot.sml +00400502 zoqfot/spitbig.ani +00400602 zoqfot/spitmed.ani +00400702 zoqfot/spitsml.ani +00400802 zoqfot/stibig.ani +00400902 zoqfot/stimed.ani +00400a02 zoqfot/stisml.ani +00400b02 zoqfot/zoqcap.ani diff --git a/sc2/content/zoqfot.shp b/sc2/content/zoqfot.shp deleted file mode 100644 index 8b8f0e49d..000000000 Binary files a/sc2/content/zoqfot.shp and /dev/null differ diff --git a/sc2/src/sc2code/libs/Makeinfo b/sc2/src/sc2code/libs/Makeinfo index d626c6c52..19d8a39d8 100644 --- a/sc2/src/sc2code/libs/Makeinfo +++ b/sc2/src/sc2code/libs/Makeinfo @@ -1,5 +1,5 @@ -uqm_SUBDIRS="decomp file graphics input math memory resource sound strings - task threads time uio video" +uqm_SUBDIRS="decomp file graphics input list math memory resource sound + strings task threads time uio video" #if [ "$DEBUG" = 1 ]; then # uqm_SUBDIRS="$UQM_SUBDIRS debug" #fi diff --git a/sc2/src/sc2code/libs/reslib.h b/sc2/src/sc2code/libs/reslib.h index e6abe1b87..7052620f3 100644 --- a/sc2/src/sc2code/libs/reslib.h +++ b/sc2/src/sc2code/libs/reslib.h @@ -24,8 +24,8 @@ #include "memlib.h" #include "libs/uio.h" + typedef DWORD RESOURCE; -typedef RESOURCE *PRESOURCE; typedef BYTE RES_TYPE; typedef COUNT RES_INSTANCE; @@ -35,10 +35,6 @@ typedef COUNT RES_PACKAGE; #define INSTANCE_BITS 13 #define PACKAGE_BITS 11 -#define MAX_TYPES ((1 << TYPE_BITS) - 1) /* zero is invalid */ -#define MAX_INSTANCES (1 << INSTANCE_BITS) -#define MAX_PACKAGES ((1 << PACKAGE_BITS) - 1) /* zero is invalid */ - #define GET_TYPE(res) \ ((RES_TYPE)(res) & (RES_TYPE)((1 << TYPE_BITS) - 1)) #define GET_INSTANCE(res) \ @@ -51,8 +47,12 @@ typedef COUNT RES_PACKAGE; ((RESOURCE)(i) << TYPE_BITS) | \ ((RESOURCE)(t))) + extern const char *_cur_resfile_name; +typedef MEM_HANDLE (ResourceLoadFun) (uio_Stream *fp, DWORD len); +typedef BOOLEAN (ResourceFreeFun) (MEM_HANDLE handle); + extern uio_Stream *res_OpenResFile (uio_DirHandle *dir, const char *filename, const char *mode); extern int ReadResFile (PVOID lpBuf, COUNT size, COUNT count, uio_Stream *fp); @@ -66,21 +66,20 @@ extern long LengthResFile (uio_Stream *fp); extern BOOLEAN res_CloseResFile (uio_Stream *fp); extern BOOLEAN DeleteResFile (uio_DirHandle *dir, const char *filename); -extern MEM_HANDLE InitResourceSystem (const char *resfile, - COUNT resindex_type, BOOLEAN (*FileErrorFunc) (const char *filename)); -extern BOOLEAN UninitResourceSystem (void); -extern BOOLEAN InstallResTypeVectors (COUNT res_type, - MEM_HANDLE (*load_func) (uio_Stream *fp, DWORD len), - BOOLEAN (*free_func) (MEM_HANDLE handle)); +extern MEM_HANDLE InitResourceSystem (const char *resfile, RES_TYPE resType, + BOOLEAN (*FileErrorFun) (const char *filename)); +extern void UninitResourceSystem (void); +extern BOOLEAN InstallResTypeVectors (RES_TYPE res_type, + ResourceLoadFun *loadFun, ResourceFreeFun *freeFun); extern MEM_HANDLE res_GetResource (RESOURCE res); extern MEM_HANDLE res_DetachResource (RESOURCE res); extern BOOLEAN FreeResource (RESOURCE res); extern COUNT CountResourceTypes (void); extern MEM_HANDLE OpenResourceIndexFile (const char *resfile); -extern MEM_HANDLE OpenResourceIndexInstance (DWORD res); -extern MEM_HANDLE SetResourceIndex (MEM_HANDLE hRH); -extern BOOLEAN CloseResourceIndex (MEM_HANDLE hRH); +extern MEM_HANDLE OpenResourceIndexInstance (RESOURCE res); +extern MEM_HANDLE SetResourceIndex (MEM_HANDLE newIndexHandle); +extern BOOLEAN CloseResourceIndex (MEM_HANDLE newIndexHandle); extern MEM_HANDLE GetResourceData (uio_Stream *fp, DWORD length, MEM_FLAGS mem_flags); diff --git a/sc2/src/sc2code/libs/resource/getres.c b/sc2/src/sc2code/libs/resource/getres.c index 52e5f49c7..931d87879 100644 --- a/sc2/src/sc2code/libs/resource/getres.c +++ b/sc2/src/sc2code/libs/resource/getres.c @@ -16,508 +16,210 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include "resintrn.h" -#include "port.h" #include "options.h" +#include "port.h" +#include "resintrn.h" +#include "libs/misc.h" const char *_cur_resfile_name; +// When a file is being loaded, _cur_resfile_name is set to its name. +// At other times, it is NULL. -static BOOLEAN -ValidResource (INDEX_HEADERPTR ResHeaderPtr, RESOURCE res) -{ - if (ResHeaderPtr != NULL_PTR) +static ResourceDesc * +lookupResourceDesc (ResourceIndex *idx, RESOURCE res) { + // Binary search through the resources. + COUNT l, h; + + if (idx->numRes == 0) + return NULL; + + l = 0; + h = idx->numRes; + + while (l + 1 != h) { - RES_PACKAGE res_package; - - res_package = GET_PACKAGE (res); - if (ValidResPackage (ResHeaderPtr, res_package)) - { - RES_TYPE res_type; - - res_type = GET_TYPE (res); - if (ValidResType (ResHeaderPtr, res_type)) - { - COUNT res_instance; - - res_instance = GET_INSTANCE (res); - if (GetInstanceCount (ResHeaderPtr, res_type) > res_instance) - return (TRUE); - } - } - } - - return (FALSE); -} - -static void -dword_convert (PDWORD dword_array, COUNT num_dwords) -{ - PBYTE p = (PBYTE)dword_array; - - do - { - *dword_array++ = MAKE_DWORD ( - MAKE_WORD (p[0], p[1]), - MAKE_WORD (p[2], p[3]) - ); - p += 4; - } while (--num_dwords); -} - -#define PATHLEN 256 - -void -get_resource_filename (INDEX_HEADERPTR ResHeaderPtr, char *pbuf, COUNT - file_index) -{ - UWORD path_offs; - long file_offs; - FILE_INFO file_info; - - file_offs = (long)ResHeaderPtr->file_list_offs + - (long)file_index * FILE_LIST_SIZE; - if (ResHeaderPtr->res_flags & IS_PACKAGED) - memcpy ((PSTR)&file_info, - (PSTR)ResHeaderPtr + (COUNT)file_offs, FILE_LIST_SIZE); - else - { - SeekResFile (ResHeaderPtr->res_fp, file_offs, SEEK_SET); - ReadResFile (&file_info, FILE_LIST_SIZE, 1, ResHeaderPtr->res_fp); - } - - path_offs = MAKE_WORD (file_info.path_offset[0], file_info.path_offset[1]); - if (path_offs != NO_PATH) - { - file_offs = (long)ResHeaderPtr->path_list_offs + path_offs; - if (ResHeaderPtr->res_flags & IS_PACKAGED) - memcpy (pbuf, - (PSTR)ResHeaderPtr + (COUNT)file_offs, PATHLEN); + COUNT m = (l + h) / 2; + if (idx->res[m]->res <= res) + l = m; else - { - SeekResFile (ResHeaderPtr->res_fp, file_offs, SEEK_SET); - ReadResFile (pbuf, PATHLEN, 1, ResHeaderPtr->res_fp); - } - pbuf += strlen (pbuf); - - *pbuf++ = '/'; + h = m; } - { - COUNT i; - char *pstr; - - pstr = file_info.filename; - for (i = 0; i < FILE_NAME_SIZE; ++i) - { - if ((*pbuf++ = *pstr++) == '\0') - { - --pbuf; - if (i == 0) - { -#ifndef PACKAGING - strcpy (pbuf, ResHeaderPtr->index_file_name); -#endif /* PACKAGING */ - return; - } - - break; - } - } - *pbuf++ = '.'; - - pstr = file_info.extension; - for (i = 0; i < EXTENSION_SIZE && (*pbuf++ = *pstr++); ++i) - ; - *pbuf++ = '\0'; - } + if (idx->res[l]->res == res) + return idx->res[l]; + return NULL; } -DWORD -get_packmem_offs (INDEX_HEADERPTR ResHeaderPtr, RES_PACKAGE res_package) -{ - DWORD file_offs; - RES_PACKAGE package; +// Load every resource in a package. +static void +loadPackage (ResourceIndex *idx, RES_PACKAGE pkg) { + COUNT i; - file_offs = ResHeaderPtr->packmem_list_offs; - for (package = 1; package < res_package; ++package) - { - file_offs += (DWORD)PACKMEM_LIST_SIZE - * GET_TYPE (ResHeaderPtr->PackageList[package - 1].packmem_info) - + (DWORD)INSTANCE_LIST_SIZE - * GET_INSTANCE (ResHeaderPtr->PackageList[package - 1].packmem_info); + for (i = 0; i < idx->numRes; i++) { + if (GET_PACKAGE (idx->res[i]->res) != pkg) + continue; + + if (idx->res[i]->handle != NULL_HANDLE) + continue; // Already loaded + + loadResourceDesc (idx, idx->res[i]); } - - return (file_offs); } -//#define DEBUG - MEM_HANDLE -load_package (INDEX_HEADERPTR ResHeaderPtr, RES_PACKAGE res_package) +loadResourceDesc (ResourceIndex *idx, ResourceDesc *desc) { - BOOLEAN DanglingOpen; - MEM_HANDLE hList; - uio_Stream *fp; - COUNT t, num_types, num_instances; - DWORD file_offs, data_len; - RES_HANDLE_LISTPTR ResourceHandleListPtr; - ENCODEPTR TypeEncodePtr; - DATAPTR DataPtr; -#ifdef PACKAGING - extern -#endif /* PACKAGING */ - char file_buf[PATHLEN]; - - num_types = CountPackageTypes (ResHeaderPtr, res_package); - num_instances = CountPackageInstances (ResHeaderPtr, res_package); - - if ((hList = AllocResourceHandleList ( - num_types, num_instances - )) == NULL_HANDLE) + RES_TYPE resType = GET_TYPE (desc->res); + + if (resType >= idx->typeInfo.numTypes || + idx->typeInfo.handlers[resType].loadFun == NULL) { -#ifdef DEBUG - fprintf (stderr, "Unable to allocate resource handle list <%d, %d>\n", - num_types, num_instances); -#endif /* DEBUG */ - return (NULL_HANDLE); + fprintf (stderr, "Warning: Unable to load '%s'; no handler " + "for type %d defined.\n", desc->path, resType); + return NULL_HANDLE; } - LockResourceHandleList (ResHeaderPtr, hList, res_package, - &ResourceHandleListPtr, &TypeEncodePtr, &DataPtr); - ResourceHandleListPtr->flags_and_data_loc = - ResHeaderPtr->PackageList[res_package - 1].flags_and_data_loc; - - DanglingOpen = FALSE; - file_offs = get_packmem_offs (ResHeaderPtr, res_package); - if (!(ResHeaderPtr->res_flags & IS_PACKAGED)) - { - SeekResFile (ResHeaderPtr->res_fp, (long)file_offs, SEEK_SET); - if (ReadResFile ((PSTR)TypeEncodePtr, - (PACKMEM_LIST_SIZE * num_types) - + (INSTANCE_LIST_SIZE * num_instances), - 1, ResHeaderPtr->res_fp) != 1) - { - UnlockResourceHandleList (hList); - FreeResourceHandleList (hList); - - return (NULL_HANDLE); - } - dword_convert (TypeEncodePtr, num_types); - } - else - { - COUNT file_index; - - memcpy (TypeEncodePtr, - (PSTR)((PSTR)ResHeaderPtr + (COUNT)file_offs), - (PACKMEM_LIST_SIZE * num_types) - + (INSTANCE_LIST_SIZE * num_instances)); - dword_convert (TypeEncodePtr, num_types); - - file_index = GET_PACKAGE ( - ResHeaderPtr->PackageList[res_package - 1].packmem_info - ); - get_resource_filename (ResHeaderPtr, file_buf, file_index); - if (!stricmp (ResHeaderPtr->index_file_name, file_buf)) - fp = ResHeaderPtr->res_fp; - else - { - fp = res_OpenResFile (contentDir, file_buf, "rb"); - if (fp) - DanglingOpen = TRUE; - } - - if (fp == NULL) - num_types = 0; - else - { - file_offs = ResourceHandleListPtr->flags_and_data_loc & ~0xFF000000; - if (file_offs) - SeekResFile (fp, (long)file_offs, SEEK_SET); - else if (num_types == 1 && GET_PACKAGE (*TypeEncodePtr) == 1) - { /* if only one thing in this package which is only - * package in its file, let file length be determined - * by the current length of package rather than the - * length at package time. - */ - RES_PACKAGE p; - - for (p = 1; p <= ResHeaderPtr->num_packages; ++p) - { - if (p != res_package - && GET_PACKAGE ( - ResHeaderPtr->PackageList[p - 1].packmem_info) - == file_index) - break; - } - - if (p > ResHeaderPtr->num_packages) - { - data_len = (LengthResFile (fp) + 3) >> 2; - DataPtr[0] = LOBYTE (data_len); - DataPtr[1] = HIBYTE (data_len); - } - } - } - } - - for (t = 0; t < num_types; ++t) - { - RES_TYPE type; - - type = GET_TYPE (*TypeEncodePtr); - num_instances = GET_PACKAGE (*TypeEncodePtr); - while (num_instances--) - { - MEM_HANDLE hData; - - _cur_resfile_name = file_buf; - - hData = NULL_HANDLE; - data_len = MAKE_WORD (DataPtr[0], DataPtr[1]); - if (ResHeaderPtr->res_flags & IS_PACKAGED) - { - if ((data_len <<= 2) == 0) - ; - else if (SeekResFile (fp, (long)file_offs, SEEK_SET)) - ; - else - { - hData = DoLoad (ResHeaderPtr, type, fp, data_len); - if (hData && IsIndexType (ResHeaderPtr, type)) - DanglingOpen = FALSE; -#ifdef DEBUG - if (hData == 0) - fprintf (stderr, "fp = 0x%08lx(%d), type = %u, " - "file_offs = %lu, len = %lu\n", - (unsigned long) fp, - DanglingOpen, type, file_offs, data_len); -#endif /* DEBUG */ - } - file_offs += data_len; - } - else - { - get_resource_filename (ResHeaderPtr, file_buf, (COUNT)data_len); - - fp = res_OpenResFile (contentDir, file_buf, "rb"); - if (fp == NULL) - { -#if 1 // def DEBUG - // HACK: added the 'if' here as not to scare people - // with the warning for this workaround. - // It will go with the new resource system. - // (together with the rest of this file) - if (strcmp(file_buf, "ignored.key") != 0) { - fprintf (stderr, "Can't open '%s'\n", file_buf); - } -#endif /* DEBUG */ - } - else - { - data_len = LengthResFile (fp); -#ifndef PACKAGING - fprintf (stderr, "\t'%s' -- %lu bytes\n", file_buf, - data_len); -#endif /* PACKAGING */ - if (data_len == 0) - hData = NULL_HANDLE; - else - hData = DoLoad (ResHeaderPtr, type, fp, data_len); - if (hData == 0 || !IsIndexType (ResHeaderPtr, type)) - res_CloseResFile (fp); - } - } -#ifdef DEBUG - if (hData == 0) - fprintf (stderr, "Can't create data for '%s' <%lu>\n", - file_buf, data_len); -#endif /* DEBUG */ - - DataPtr[0] = LOBYTE (hData); - DataPtr[1] = HIBYTE (hData); - DataPtr += 2; - - if (hData) - ++ResourceHandleListPtr->num_valid_handles; - - _cur_resfile_name = 0; - } - ++TypeEncodePtr; - } - - if (DanglingOpen) - res_CloseResFile (fp); - - num_instances = ResourceHandleListPtr->num_valid_handles; - UnlockResourceHandleList (hList); - - if (num_instances == 0) - { -#ifdef DEBUG - fprintf (stderr, "Nothing in package!\n"); -#endif /* DEBUG */ - FreeResourceHandleList (hList); - hList = NULL_HANDLE; - } - - return (hList); + desc->handle = loadResource (desc->path, + idx->typeInfo.handlers[resType].loadFun); + return desc->handle; } +MEM_HANDLE +loadResource(const char *path, ResourceLoadFun *loadFun) +{ + uio_Stream *stream; + long dataLen; + MEM_HANDLE handle; + + stream = res_OpenResFile (contentDir, path, "rb"); + if (stream == NULL) + { + fprintf (stderr, "Warning: Can't open '%s'\n", path); + return NULL_HANDLE; + } + + dataLen = LengthResFile (stream); +//#ifdef DEBUG +#if 1 + fprintf (stderr, "\t'%s' -- %lu bytes\n", path, dataLen); +#endif + + if (dataLen == 0) + { + fprintf (stderr, "Warning: Trying to load empty file '%s'.\n", path); + goto err; + } + + _cur_resfile_name = path; + handle = (*loadFun) (stream, dataLen); + _cur_resfile_name = NULL; + res_CloseResFile (stream); + + return handle; + +err: + res_CloseResFile (stream); + return NULL_HANDLE; +} + +// Get a resource by its resource ID. +// For historical reasons, if the resource is not already loaded, +// the *entire* package will be (pre-)loaded. +// NB. It may be better to add an extra flag to res_GetResource() to +// indicate whether you really want this, or add a separate function +// for preloading the entire package. MEM_HANDLE res_GetResource (RESOURCE res) { - MEM_HANDLE hData, hList; - RES_PACKAGE res_package; - RES_TYPE res_type; - RES_INSTANCE res_instance; - RES_HANDLE_LISTPTR ResourceHandleListPtr; - ENCODEPTR TypeEncodePtr; - DATAPTR DataPtr; - INDEX_HEADERPTR ResHeaderPtr; - UWORD hi; + ResourceIndex *resourceIndex; + ResourceDesc *desc; + + resourceIndex = _get_current_index_header (); - ResHeaderPtr = _get_current_index_header (); - if (!ValidResource (ResHeaderPtr, res)) + desc = lookupResourceDesc (resourceIndex, res); + if (desc == NULL) { -#ifdef DEBUG - if (res) - fprintf (stderr, "0x%08lx is not a valid resource!\n", res); -#endif /* DEBUG */ - return (NULL_HANDLE); + fprintf (stderr, "Trying to get undefined resource %08lx\n", + (DWORD) res); + return NULL_HANDLE; } - res_package = GET_PACKAGE (res); + if (desc->handle != NULL_HANDLE) + return desc->handle; - hi = HIWORD (ResHeaderPtr->PackageList[res_package - 1].flags_and_data_loc); - if (HIBYTE (hi) == 0) - // Package is loaded. - hList = (MEM_HANDLE)LOWORD ( - ResHeaderPtr->PackageList[res_package - 1].flags_and_data_loc); - else - { - // Package is not loaded. Load now. - hList = load_package (ResHeaderPtr, res_package); - if (hList == NULL_HANDLE) - { -#ifdef DEBUG - fprintf (stderr, "Unable to load package %u\n", res_package); -#endif /* DEBUG */ - return (NULL_HANDLE); - } + // Load the entire package, for historical reasons. + loadPackage (resourceIndex, GET_PACKAGE (res)); - ResHeaderPtr->PackageList[res_package - 1].flags_and_data_loc = - MAKE_DWORD (hList, 0); - } - - res_type = GET_TYPE (res); - res_instance = GET_INSTANCE (res); - - LockResourceHandleList (ResHeaderPtr, hList, res_package, - &ResourceHandleListPtr, &TypeEncodePtr, &DataPtr); - - while (GET_TYPE (*TypeEncodePtr) != res_type) - { - DataPtr += (GET_PACKAGE (*TypeEncodePtr) << 1); - ++TypeEncodePtr; - } - DataPtr += (res_instance - GET_INSTANCE (*TypeEncodePtr)) << 1; - hData = MAKE_WORD (DataPtr[0], DataPtr[1]); - UnlockResourceHandleList (hList); - -#ifdef DEBUG - if (hData == 0) - fprintf (stderr, "No data for res 0x%08lx\n", res); -#endif /* DEBUG */ - return (hData); + return desc->handle; + // May still be NULL_HANDLE, if the load failed. } -static MEM_HANDLE -get_res_handle (RESOURCE res, BOOLEAN DoDetach) +// NB: this function appears to be never called! +void +res_FreeResource (RESOURCE res) { - MEM_HANDLE hData = NULL_HANDLE; - RES_PACKAGE res_package; - RES_TYPE res_type; - RES_INSTANCE res_instance; - INDEX_HEADERPTR ResHeaderPtr; - UWORD hi; + ResourceDesc *desc; + ResourceFreeFun *freeFun; - ResHeaderPtr = _get_current_index_header (); - if (!ValidResource (ResHeaderPtr, res)) - return (hData); - - res_package = GET_PACKAGE (res); - res_type = GET_TYPE (res); - res_instance = GET_INSTANCE (res); - - hi = HIWORD (ResHeaderPtr->PackageList[res_package - 1].flags_and_data_loc); - if (HIBYTE (hi) == 0) + desc = lookupResourceDesc (_get_current_index_header(), res); + if (desc == NULL) { - MEM_HANDLE hList; - COUNT num_instances; - RES_HANDLE_LISTPTR ResourceHandleListPtr; - ENCODEPTR TypeEncodePtr; - DATAPTR DataPtr; - DWORD flags_and_data_loc; - - hList = LOWORD (ResHeaderPtr->PackageList[res_package - 1].flags_and_data_loc); - LockResourceHandleList (ResHeaderPtr, hList, res_package, - &ResourceHandleListPtr, &TypeEncodePtr, &DataPtr); - - while (GET_TYPE (*TypeEncodePtr) != res_type) - { - DataPtr += (GET_PACKAGE (*TypeEncodePtr) << 1); - ++TypeEncodePtr; - } - DataPtr += (res_instance - GET_INSTANCE (*TypeEncodePtr)) << 1; - hData = MAKE_WORD (DataPtr[0], DataPtr[1]); - if (hData && DoDetach) - { - DataPtr[0] = DataPtr[1] = 0; - --ResourceHandleListPtr->num_valid_handles; - - flags_and_data_loc = ResourceHandleListPtr->flags_and_data_loc; - } - num_instances = ResourceHandleListPtr->num_valid_handles; - UnlockResourceHandleList (hList); - - if (num_instances == 0) - { - FreeResourceHandleList (hList); - - ResHeaderPtr->PackageList[res_package - 1].flags_and_data_loc = - flags_and_data_loc; - } +#ifdef DEBUG + fprintf (stderr, "Warning: trying to free an unrecognised " + "resource.\n"); +#endif + return; + } + + if (desc->handle == NULL_HANDLE) + { +#ifdef DEBUG + fprintf (stderr, "Warning: trying to free not loaded " + "resource.\n"); +#endif + return; } - return (hData); -} - -BOOLEAN -FreeResource (RESOURCE res) -{ - MEM_HANDLE hData; - - hData = get_res_handle (res, FALSE); - if (hData) - { - RES_TYPE res_type; - INDEX_HEADERPTR ResHeaderPtr; - - res_type = GET_TYPE (res); - ResHeaderPtr = _get_current_index_header (); - if (DoFree (ResHeaderPtr, res_type, hData) - && get_res_handle (res, TRUE)) - return (TRUE); - } - - return (FALSE); + ResourceIndex *idx = _get_current_index_header (); + freeFun = idx->typeInfo.handlers[GET_TYPE (res)].freeFun; + (*freeFun) (desc->handle); + desc->handle = NULL_HANDLE; } +// By calling this function the caller will be responsible of unloading +// the resource. If res_GetResource() get called again for this +// resource, a NEW copy will be loaded, regardless of whether a detached +// copy still exists. MEM_HANDLE res_DetachResource (RESOURCE res) { - return (get_res_handle (res, TRUE)); + ResourceDesc *desc; + MEM_HANDLE result; + + desc = lookupResourceDesc (_get_current_index_header(), res); + if (desc == NULL) + { +#ifdef DEBUG + fprintf (stderr, "Warning: trying to detach from an unrecognised " + "resource.\n"); +#endif + return NULL_HANDLE; + } + + if (desc->handle == NULL_HANDLE) + { +#ifdef DEBUG + fprintf (stderr, "Warning: trying to detach from a not loaded " + "resource.\n"); +#endif + return NULL_HANDLE; + } + + result = desc->handle; + desc->handle = NULL_HANDLE; + + return result; } + diff --git a/sc2/src/sc2code/libs/resource/index.h b/sc2/src/sc2code/libs/resource/index.h index 4939e8e47..06a72fdcc 100644 --- a/sc2/src/sc2code/libs/resource/index.h +++ b/sc2/src/sc2code/libs/resource/index.h @@ -23,95 +23,55 @@ typedef struct { - MEM_HANDLE (*load_func) (uio_Stream *fp, DWORD len); - BOOLEAN (*free_func) (MEM_HANDLE handle); -} RES_VECTORS; + RESOURCE res; + char *path; + MEM_HANDLE handle; + //COUNT ref; +} ResourceDesc; typedef struct { - RES_INSTANCE instance_count; - RES_VECTORS func_vectors; -} TYPE_DESC; -typedef TYPE_DESC *PTYPE_DESC; + ResourceLoadFun *loadFun; + ResourceFreeFun *freeFun; +} ResourceHandlers; typedef struct { - RESOURCE packmem_info; - DWORD flags_and_data_loc; - /* data_loc doubles as 3 byte offset into package file or 2 byte - * MEM_HANDLE to package member array with the offset stored in - * the MEM_HANDLE (cuts down on use of near memory). +} ResourceType; + +typedef struct +{ + RES_TYPE numTypes; + /* Number of types in the handlers array (whether NULL or not). + * == the highest stored vector number + 1. */ -} PACKAGE_DESC; -typedef PACKAGE_DESC *PPACKAGE_DESC; - -typedef BYTE RES_FLAGS; -#define IS_PACKAGED ((RES_FLAGS)(1 << 0)) + ResourceHandlers *handlers; +} ResourceTypeInfo; typedef struct { - uio_Stream *res_fp; + ResourceDesc **res; + ResourceTypeInfo typeInfo; + size_t numRes; +} ResourceIndex; - DWORD packmem_list_offs; - DWORD path_list_offs; - DWORD file_list_offs; - RES_PACKAGE num_packages; - RES_TYPE num_types; - RES_FLAGS res_flags; +void +forAllResourceIndices( + void (*callback) (ResourceIndex *idx, void *extra), void *extra); - union - { - DWORD header_len; - struct - { - PPACKAGE_DESC package_list; - PTYPE_DESC type_list; - } lists; - } index_info; - -#ifndef PACKAGING - char index_file_name[36]; - DWORD data_offs; - MEM_HANDLE hPredHeader, hSuccHeader; -#endif /* PACKAGING */ -} INDEX_HEADER; -typedef INDEX_HEADER *PINDEX_HEADER; - -typedef PINDEX_HEADER INDEX_HEADERPTR; - -void forAllResourceIndices( - void (*callback)(INDEX_HEADERPTR ResHeaderPtr, void *extra), - void *extra); - -#define PackageList index_info.lists.package_list -#define TypeList index_info.lists.type_list #define INDEX_HEADER_PRIORITY DEFAULT_MEM_PRIORITY -#define AllocResourceHeader(s) \ - mem_allocate ((s), MEM_ZEROINIT | MEM_PRIMARY, \ - INDEX_HEADER_PRIORITY, MEM_SIMPLE) -#define LockResourceHeader (INDEX_HEADERPTR)mem_lock -#define UnlockResourceHeader mem_unlock -#define FreeResourceHeader mem_release -typedef struct -{ - BYTE path_offset[2]; - char filename[8]; - char extension[3]; -} FILE_INFO; +static inline ResourceIndex * +lockResourceIndex (MEM_HANDLE h) { + return (ResourceIndex *) mem_lock (h); +} +static inline void +unlockResourceIndex (MEM_HANDLE h) { + mem_unlock (h); +} -#define FILE_NAME_SIZE 8 -#define EXTENSION_SIZE 3 -#define NO_PATH 0xFFFF - -#define FILE_LIST_SIZE \ - ((sizeof (BYTE) * 2) + FILE_NAME_SIZE + EXTENSION_SIZE) -#define PACKMEM_LIST_SIZE \ - (sizeof (DWORD)) -#define INSTANCE_LIST_SIZE \ - (sizeof (BYTE) * 2) #endif /* _INDEX_H */ diff --git a/sc2/src/sc2code/libs/resource/resdata.c b/sc2/src/sc2code/libs/resource/resdata.c index 79cff72ff..48db3df1d 100644 --- a/sc2/src/sc2code/libs/resource/resdata.c +++ b/sc2/src/sc2code/libs/resource/resdata.c @@ -18,17 +18,17 @@ #include "resintrn.h" -static INDEX_HEADERPTR CurResHeaderPtr; +static ResourceIndex *curResourceIndex; void -_set_current_index_header (INDEX_HEADERPTR ResHeaderPtr) +_set_current_index_header (ResourceIndex *newResourceIndex) { - CurResHeaderPtr = ResHeaderPtr; + curResourceIndex = newResourceIndex; } -INDEX_HEADERPTR +ResourceIndex * _get_current_index_header (void) { - return (CurResHeaderPtr); + return curResourceIndex; } diff --git a/sc2/src/sc2code/libs/resource/resinit.c b/sc2/src/sc2code/libs/resource/resinit.c index d4f38fd5f..0b0c2b621 100644 --- a/sc2/src/sc2code/libs/resource/resinit.c +++ b/sc2/src/sc2code/libs/resource/resinit.c @@ -17,277 +17,347 @@ */ #include "resintrn.h" +#include "misc.h" #include "options.h" +#include "types.h" +#include "libs/list.h" +#include +#include + + +static bool copyResTypeHandlers (ResourceIndex *dest, + const ResourceIndex *src); +static bool setResTypeHandlers (ResourceIndex *idx, RES_TYPE resType, + const ResourceHandlers *handlers); +static MEM_HANDLE allocResourceIndex(void); +static void freeResourceIndex (MEM_HANDLE h); + + +static List_List *indexList; -static MEM_HANDLE hIndexList; -// Add a package index to the global list of package indices. static void -_add_index_list (MEM_HANDLE hRH) +initIndexList (void) { -#ifndef PACKAGING - INDEX_HEADERPTR ResHeaderPtr; - - ResHeaderPtr = LockResourceHeader (hRH); - strncpy (ResHeaderPtr->index_file_name, _cur_resfile_name, - sizeof (ResHeaderPtr->index_file_name) - 1); - ResHeaderPtr->hPredHeader = 0; - ResHeaderPtr->hSuccHeader = hIndexList; - if (ResHeaderPtr->hSuccHeader) - { - INDEX_HEADERPTR SuccResHeaderPtr; - - SuccResHeaderPtr = LockResourceHeader (hIndexList); - SuccResHeaderPtr->hPredHeader = hRH; - UnlockResourceHeader (hIndexList); - } - UnlockResourceHeader (hRH); -#endif /* PACKAGING */ - - hIndexList = hRH; + indexList = List_newList (); } -// Remove a package index from the global list of package indices. static void -_sub_index_list (MEM_HANDLE hRH) +uninitIndexList (void) { -#ifdef PACKAGING - hIndexList = 0; -#else /* !PACKAGING */ - INDEX_HEADERPTR ResHeaderPtr; - MEM_HANDLE hPred, hSucc; - - ResHeaderPtr = LockResourceHeader (hRH); - - hPred = ResHeaderPtr->hPredHeader; - hSucc = ResHeaderPtr->hSuccHeader; - if (hRH == hIndexList) - hIndexList = hSucc; - - if (hPred) - { - INDEX_HEADERPTR PredResHeaderPtr; - - PredResHeaderPtr = LockResourceHeader (hPred); - PredResHeaderPtr->hSuccHeader = hSucc; - UnlockResourceHeader (hPred); - } - if (hSucc) - { - INDEX_HEADERPTR SuccResHeaderPtr; - - SuccResHeaderPtr = LockResourceHeader (hSucc); - SuccResHeaderPtr->hPredHeader = hPred; - UnlockResourceHeader (hSucc); - } - - UnlockResourceHeader (hRH); -#endif /* PACKAGING */ + List_deleteList (indexList); + indexList = NULL; } -MEM_HANDLE -_GetResFileData (uio_Stream *res_fp, DWORD flen) -{ - UWORD lo_word, hi_word; - DWORD res_offs; - DWORD remainder = 0; - // Initialisation is to keep the compiler quiet. - MEM_SIZE HeaderSize; - INDEX_HEADER h; - INDEX_HEADERPTR ResHeaderPtr; - MEM_HANDLE hRH; - char buf[32]; +void +forAllResourceIndices( + void (*callback) (ResourceIndex *idx, void *extra), + void *extra) { + List_Link *link; - res_offs = TellResFile (res_fp); - - ReadResFile (buf, 1, 22, res_fp); - - h.res_fp = res_fp; - h.res_flags = MAKE_WORD (buf[0], buf[1]) ? IS_PACKAGED : 0; - - lo_word = MAKE_WORD (buf[2], buf[3]); - hi_word = MAKE_WORD (buf[4], buf[5]); - h.packmem_list_offs = MAKE_DWORD (lo_word, hi_word); - - lo_word = MAKE_WORD (buf[6], buf[7]); - hi_word = MAKE_WORD (buf[8], buf[9]); - h.path_list_offs = MAKE_DWORD (lo_word, hi_word); - - lo_word = MAKE_WORD (buf[10], buf[11]); - hi_word = MAKE_WORD (buf[12], buf[13]); - h.file_list_offs = MAKE_DWORD (lo_word, hi_word); - - h.num_packages = (RES_PACKAGE)MAKE_WORD (buf[14], buf[15]); - h.num_types = (RES_TYPE)MAKE_WORD (buf[16], buf[17]); - - lo_word = MAKE_WORD (buf[18], buf[19]); - hi_word = MAKE_WORD (buf[20], buf[21]); - h.index_info.header_len = MAKE_DWORD (lo_word, hi_word); - - HeaderSize = (MEM_SIZE)(sizeof (INDEX_HEADER) - + (sizeof (PACKAGE_DESC) * h.num_packages) - + (sizeof (TYPE_DESC) * h.num_types)); - if (h.res_flags & IS_PACKAGED) + for (link = indexList->first; link != NULL; link = link->next) { - DWORD offs; + ResourceIndex *idx = (ResourceIndex *) link->entry; + (*callback) (idx, extra); + } +} - remainder = h.index_info.header_len - h.packmem_list_offs; - offs = HeaderSize - h.packmem_list_offs; - HeaderSize += remainder; - h.packmem_list_offs += offs; - h.file_list_offs += offs; - h.path_list_offs += offs; + +#if 0 +static ResourceDesc * +lookupResourceIndex (const char *path) +{ + List_Link *link; + + for (link = indexList->first; link != NULL; link = link->next) + { + ResourceDesc *desc = (ResourceDesc *) link->entry; + + if (strcmp (desc->path, path) == 0) + return link->entry; } -#ifndef PACKAGING - { - MEM_HANDLE hNextRH; + return NULL; +} +#endif - h.data_offs = res_offs; - for (hRH = hIndexList; hRH != 0; hRH = hNextRH) +static ResourceDesc * +newResourceDesc (RESOURCE res, char *path) +{ + ResourceDesc *result; + + result = HMalloc (sizeof (ResourceDesc)); + if (result == NULL) + return NULL; + + result->res = res; + result->path = path; + result->handle = NULL_HANDLE; + //result->ref = 0; + return result; +} + +static MEM_HANDLE +loadResourceIndex (uio_Stream *stream, const char *fileName) { + size_t lineNum; + ResourceDesc **descs = NULL; + COUNT numRes; + int numDescsAlloced = 0; + MEM_HANDLE indexHandle = NULL_HANDLE; + ResourceIndex *ndx = NULL; +#ifdef DEBUG + RESOURCE lastResource = 0x00000000; +#endif + + // This loop parses lines of the format " ". + // Resnum is in hex. '#' can be used to add comments. + lineNum = 0; + numRes = 0; + for (;;) + { + char lineBuf[PATH_MAX + 80]; + char *ptr; + char *endResPtr; + char *endPtr; + char *path; + char *newPath; + RESOURCE res; + ResourceDesc *desc; + + if (uio_fgets (lineBuf, sizeof lineBuf, stream) == NULL) { - ResHeaderPtr = LockResourceHeader (hRH); - if (h.data_offs == ResHeaderPtr->data_offs - && strncmp (ResHeaderPtr->index_file_name, - _cur_resfile_name, - sizeof (ResHeaderPtr->index_file_name) - 1) == 0) - return (hRH); /* DON'T UNLOCK IT */ - - hNextRH = ResHeaderPtr->hSuccHeader; - UnlockResourceHeader (hRH); + if (uio_ferror (stream)) + goto err; + else + break; // EOF } - } -#endif /* PACKAGING */ - if ((hRH = AllocResourceHeader (HeaderSize)) - && (ResHeaderPtr = LockResourceHeader (hRH))) - { - *ResHeaderPtr = h; + lineNum++; + // Skip comments. + ptr = strchr (lineBuf, '#'); + if (ptr != NULL) + *ptr = '\0'; + + // Omit leading whitespace. + ptr = lineBuf; + while (isspace (*ptr)) + ptr++; + + // Omit trailing whitespace. + endPtr = ptr + strlen(ptr); + while (endPtr != ptr && isspace (endPtr[-1])) { - RES_PACKAGE p; + endPtr--; + *endPtr = '\0'; + } - ResHeaderPtr->PackageList = (PPACKAGE_DESC)&ResHeaderPtr[1]; - for (p = 0; p < ResHeaderPtr->num_packages; ++p) + // If the line is empty (apart from comments and whitespace) + // go to the next one. + if (*ptr == 0) + continue; + + // Find the separator between the resource number and the path. + endResPtr = ptr; + do { + endResPtr++; + } while (*endResPtr != '\0' && !isspace (*endResPtr)); + + // Skip the separator + path = endResPtr; + while (isspace (*path)) + path++; + + if (*path == 0) + { + // No path present after the line number. + fprintf (stderr, "Resource index '%s': Invalid line %d.\n", + fileName, lineNum); + continue; + } + + // Parse the resource number. + { + *endResPtr = '\0'; + res = strtoul (ptr, &endResPtr, 16); + if (*endResPtr != '\0') { - ReadResFile (buf, 1, 8, res_fp); - - lo_word = MAKE_WORD (buf[0], buf[1]); - hi_word = MAKE_WORD (buf[2], buf[3]); - ResHeaderPtr->PackageList[p].packmem_info = - (RESOURCE)MAKE_DWORD (lo_word, hi_word); - - lo_word = MAKE_WORD (buf[4], buf[5]); - hi_word = MAKE_WORD (buf[6], buf[7]); - ResHeaderPtr->PackageList[p].flags_and_data_loc = - MAKE_DWORD (lo_word, hi_word) + res_offs; + // Invalid characters in the resource number. + fprintf (stderr, "Resource index '%s': Invalid line %d.\n", + fileName, lineNum); + continue; } } +#ifdef DEBUG + // We need the list to be sorted, as we binary search through it. + if (res <= lastResource) { - RES_TYPE t; - INDEX_HEADERPTR CurResHeaderPtr; + fprintf (stderr, "Fatal: resource index '%s' is not sorted " + "on the resource number, or contains a double entry. " + "Problem encountered on line %d.\n", fileName, lineNum); + abort (); + } + lastResource = res; +#endif - CurResHeaderPtr = _get_current_index_header (); - - ResHeaderPtr->TypeList = - (PTYPE_DESC)&ResHeaderPtr->PackageList[ResHeaderPtr->num_packages]; - for (t = 0; t < ResHeaderPtr->num_types; ++t) - { - ReadResFile (buf, 1, 2, res_fp); - - ResHeaderPtr->TypeList[t].instance_count = - MAKE_WORD (buf[0], buf[1]); - if (CurResHeaderPtr) - ResHeaderPtr->TypeList[t].func_vectors = - CurResHeaderPtr->TypeList[t].func_vectors; - } +#define DESC_NUM_INCREMENT 80 + if (numDescsAlloced <= numRes) + { + // Need to enlarge the array of resource descs. + ResourceDesc **newDescs = HRealloc (descs, + sizeof (ResourceDesc *) * + (numDescsAlloced + DESC_NUM_INCREMENT)); + if (newDescs == NULL) + goto err; // Original descs is untouched. + descs = newDescs; + numDescsAlloced += DESC_NUM_INCREMENT; } - if (h.res_flags & IS_PACKAGED) - ReadResFile (&ResHeaderPtr->TypeList[ResHeaderPtr->num_types], - 1, (COUNT)remainder, res_fp); + // Can't use strdup; it doesn't use HMalloc. + newPath = HMalloc (endPtr - path + 1); + if (newPath == NULL) + goto err; + strcpy (newPath, path); - _add_index_list (hRH); + desc = newResourceDesc (res, newPath); + if (desc == NULL) + goto err; - return (hRH); /* DON'T UNLOCK IT */ + descs[numRes] = desc; + numRes++; } - FreeResourceHeader (hRH); - (void) flen; /* Satisfy compiler (unused parameter) */ - return (NULL_HANDLE); + { + ResourceDesc **newDescs = HRealloc (descs, + sizeof (ResourceDesc *) * numRes); + if (newDescs == NULL && numRes != 0) + goto err; // Original descs is untouched. + descs = newDescs; + } + +#ifdef DEBUG + if (numRes == 0) + fprintf (stderr, "Warning: Resource index '%s' contains no valid " + "entries.\n", fileName); +#endif + + indexHandle = allocResourceIndex (); + if (indexHandle == NULL_HANDLE) + goto err; + + ndx = lockResourceIndex (indexHandle); + ndx->res = descs; + ndx->numRes = numRes; + ndx->typeInfo.numTypes = 0; + ndx->typeInfo.handlers = NULL; + List_add (indexList, (void *) ndx); + unlockResourceIndex (indexHandle); + + return indexHandle; + +err: + if (indexHandle != NULL_HANDLE) + freeResourceIndex (indexHandle); + HFree (descs); + return NULL_HANDLE; } +// Get the data associated with a resource of type RES_INDEX +// (In other words, a ResourceIndex) MEM_HANDLE -InitResourceSystem (const char *resfile, COUNT resindex_type, BOOLEAN - (*FileErrorFunc) (const char *filename)) +_GetResFileData (uio_Stream *res_fp, DWORD fileLength) { - MEM_HANDLE h; + MEM_HANDLE handle; + ResourceIndex *ndx; + ResourceIndex *parentNdx; - h = OpenResourceIndexFile (resfile); - if (h) - { - SetResourceIndex (h); +#if 0 + ResourceDesc *desc; - InstallResTypeVectors (resindex_type, - _GetResFileData, FreeResourceHeader); - } + desc = lookupResourceIndex (_cur_resfile_name); + assert(desc != NULL); - (void) FileErrorFunc; /* Satisfy compiler (unused parameter) */ - return (h); + if (desc->handle != NULL_HANDLE) + return desc->handle; +#endif + + handle = loadResourceIndex (res_fp, _cur_resfile_name); + if (handle == NULL_HANDLE) + return NULL_HANDLE; + + ndx = lockResourceIndex (handle); + parentNdx = _get_current_index_header (); + if (parentNdx != NULL) + copyResTypeHandlers (ndx, parentNdx); + + unlockResourceIndex (handle); + + (void) fileLength; + return handle; } BOOLEAN +_ReleaseResFileData (MEM_HANDLE handle) +{ + ResourceIndex *ndx; + + ndx = lockResourceIndex (handle); + if (ndx->typeInfo.handlers != NULL) + HFree (ndx->typeInfo.handlers); + unlockResourceIndex (handle); + mem_release (handle); + return TRUE; +} + +MEM_HANDLE +InitResourceSystem (const char *resfile, RES_TYPE resType, BOOLEAN + (*FileErrorFun) (const char *filename)) +{ + MEM_HANDLE handle; + ResourceIndex *ndx; + + initIndexList (); + + ResourceHandlers handlers; + + handlers.loadFun = _GetResFileData; + handlers.freeFun = _ReleaseResFileData; + + SetResourceIndex (NULL_HANDLE); + handle = loadResource (resfile, handlers.loadFun); + if (handle == NULL_HANDLE) + return NULL_HANDLE; + + ndx = lockResourceIndex (handle); + setResTypeHandlers (ndx, resType, &handlers); + unlockResourceIndex (handle); + + SetResourceIndex (handle); + + (void) FileErrorFun; + return handle; +} + +void UninitResourceSystem (void) { - if (hIndexList) +#if 0 + List_Link *link; + + for (link = indexList->first; link != NULL; link = link->next) { - do - CloseResourceIndex (hIndexList); - while (hIndexList); - - return (TRUE); + ResourceIndex *ndx = (ResourceIndex *) link->entry; + } - - return (FALSE); +#endif + uninitIndexList (); + + SetResourceIndex (NULL_HANDLE); } MEM_HANDLE -OpenResourceIndexFile (const char *resfile) -{ - uio_Stream *res_fp; - char fullname[256]; - - strcpy (fullname, resfile); - res_fp = res_OpenResFile (contentDir, fullname, "rb"); - if (res_fp == 0) - { - sprintf (fullname, "%s.pkg", resfile); - res_fp = res_OpenResFile (contentDir, fullname, "rb"); - if (res_fp == 0) - { - sprintf (fullname, "%s.ndx", resfile); - res_fp = res_OpenResFile (contentDir, fullname, "rb"); - } - } - - if (res_fp) - { - MEM_HANDLE hRH; - - _cur_resfile_name = fullname; - - hRH = _GetResFileData (res_fp, LengthResFile (res_fp)); - /* DO NOT res_CloseResFile!!! */ - - return (hRH); - } - - return (0); -} - -MEM_HANDLE -OpenResourceIndexInstance (DWORD res) +OpenResourceIndexInstance (RESOURCE res) { MEM_HANDLE hRH; @@ -298,135 +368,119 @@ OpenResourceIndexInstance (DWORD res) return (hRH); } +// Sets the current global resource index. +// This is the index res_GetResource() calls will use. MEM_HANDLE -SetResourceIndex (MEM_HANDLE hRH) +SetResourceIndex (MEM_HANDLE newIndexHandle) { - MEM_HANDLE hOldRH; - static MEM_HANDLE hCurResHeader; + static MEM_HANDLE currentIndexHandle; + // NB: currentIndexHandle is locked. + MEM_HANDLE oldIndexHandle; + + if (currentIndexHandle != NULL_HANDLE) + unlockResourceIndex (currentIndexHandle); - if ((hOldRH = hCurResHeader) != hRH) - { - INDEX_HEADERPTR ResHeaderPtr; + oldIndexHandle = currentIndexHandle; + currentIndexHandle = newIndexHandle; - ResHeaderPtr = LockResourceHeader (hRH); - UnlockResourceHeader (hRH); - _set_current_index_header (ResHeaderPtr); - hCurResHeader = hRH; - } + if (currentIndexHandle != NULL_HANDLE) { + ResourceIndex *ndx; - return (hOldRH); + ndx = lockResourceIndex (currentIndexHandle); + _set_current_index_header (ndx); + } else + _set_current_index_header (NULL); + + return oldIndexHandle; } BOOLEAN -CloseResourceIndex (MEM_HANDLE hRH) +CloseResourceIndex (MEM_HANDLE handle) { - if (UnlockResourceHeader (hRH)) - { - uio_Stream *res_fp; - INDEX_HEADERPTR ResHeaderPtr; + ResourceIndex *ndx; + + unlockResourceIndex (handle); - ResHeaderPtr = LockResourceHeader (hRH); -#ifdef DEBUG - { - COUNT i; + ndx = lockResourceIndex (handle); + if (ndx == _get_current_index_header ()) + SetResourceIndex (NULL_HANDLE); - for (i = 0; i < ResHeaderPtr->num_packages; ++i) - { - UWORD hi; + List_remove ((void *) indexList, ndx); + + unlockResourceIndex (handle); - hi = HIWORD (ResHeaderPtr->PackageList[i].flags_and_data_loc); - if (HIBYTE (hi) == 0) - { - MEM_HANDLE hList; - RES_HANDLE_LISTPTR ResourceHandleListPtr; - ENCODEPTR TypeEncodePtr; - DATAPTR DataPtr; + _ReleaseResFileData (handle); - hList = (MEM_HANDLE)LOWORD ( - ResHeaderPtr->PackageList[i].flags_and_data_loc); - LockResourceHandleList (ResHeaderPtr, hList, i + 1, - &ResourceHandleListPtr, &TypeEncodePtr, &DataPtr); - fprintf (stderr, "Package %u has %u instances left\n", - i + 1, ResourceHandleListPtr->num_valid_handles); - UnlockResourceHandleList (hList); - } - } - } -#endif /* DEBUG */ - - _sub_index_list (hRH); - res_fp = ResHeaderPtr->res_fp; - if (ResHeaderPtr == _get_current_index_header ()) - SetResourceIndex (hIndexList); - UnlockResourceHeader (hRH); - FreeResourceHeader (hRH); - - if (res_fp) - { - MEM_HANDLE hNextRH; - - for (hRH = hIndexList; hRH && res_fp; hRH = hNextRH) - { - ResHeaderPtr = LockResourceHeader (hRH); - if (res_fp == ResHeaderPtr->res_fp) - res_fp = 0; - hNextRH = ResHeaderPtr->hSuccHeader; - UnlockResourceHeader (hRH); - } - - if (res_fp) - res_CloseResFile (res_fp); - } - - return (TRUE); - } - - return (FALSE); + return TRUE; } BOOLEAN -InstallResTypeVectors (COUNT res_type, - MEM_HANDLE (*load_func) (uio_Stream *fp, DWORD len), - BOOLEAN (*free_func) (MEM_HANDLE handle)) +InstallResTypeVectors (RES_TYPE resType, ResourceLoadFun *loadFun, + ResourceFreeFun *freeFun) { - INDEX_HEADERPTR ResHeaderPtr; + ResourceHandlers handlers; + handlers.loadFun = loadFun; + handlers.freeFun = freeFun; - ResHeaderPtr = _get_current_index_header (); - if (ValidResType (ResHeaderPtr, res_type)) - { - ResHeaderPtr->TypeList[res_type - 1].func_vectors.load_func = load_func; - ResHeaderPtr->TypeList[res_type - 1].func_vectors.free_func = free_func; + setResTypeHandlers(_get_current_index_header (), resType, &handlers); + return TRUE; +} - return (TRUE); +static bool +setResTypeHandlers (ResourceIndex *idx, RES_TYPE resType, + const ResourceHandlers *handlers) +{ + if (resType >= idx->typeInfo.numTypes) { + // Have to enlarge the handler array. + ResourceHandlers *newHandlers = HRealloc (idx->typeInfo.handlers, + (resType + 1) * sizeof (ResourceHandlers)); + if (newHandlers == NULL) + return false; // idx->typeInfo.handlers is untouched + + // Clear the space for new entries. No need to init the last one; + // it's going to be used immediately. + memset (&newHandlers[idx->typeInfo.numTypes], 0, + (resType - idx->typeInfo.numTypes /* + 1 - 1 */) + * sizeof (ResourceHandlers)); + + idx->typeInfo.handlers = newHandlers; + idx->typeInfo.numTypes = resType + 1; } - return (FALSE); + idx->typeInfo.handlers[resType] = *handlers; + return true; } -COUNT -CountResourceTypes (void) +static bool +copyResTypeHandlers (ResourceIndex *dest, const ResourceIndex *src) { - INDEX_HEADERPTR ResHeaderPtr; + assert (src != dest); - ResHeaderPtr = _get_current_index_header (); - return ((COUNT)ResHeaderPtr->num_types); -} + if (dest->typeInfo.handlers != NULL) + HFree (dest->typeInfo.handlers); -void -forAllResourceIndices( - void (*callback) (INDEX_HEADERPTR ResHeaderPtr, void *extra), - void *extra) { - MEM_HANDLE hRH; - MEM_HANDLE hNextRH; - INDEX_HEADERPTR ResHeaderPtr; + dest->typeInfo.handlers = HMalloc (src->typeInfo.numTypes * + sizeof (ResourceHandlers)); + if (dest->typeInfo.handlers == NULL) + return false; + + memcpy (dest->typeInfo.handlers, src->typeInfo.handlers, + src->typeInfo.numTypes * sizeof (ResourceHandlers)); + dest->typeInfo.numTypes = src->typeInfo.numTypes; + + return true; +} - for (hRH = hIndexList; hRH != 0; hRH = hNextRH) - { - ResHeaderPtr = LockResourceHeader (hRH); - hNextRH = ResHeaderPtr->hSuccHeader; - (*callback) (ResHeaderPtr, extra); - UnlockResourceHeader (hRH); - } + +static MEM_HANDLE +allocResourceIndex (void) { + return mem_allocate (sizeof (ResourceIndex), MEM_PRIMARY, + INDEX_HEADER_PRIORITY, MEM_SIMPLE); +} + +static void +freeResourceIndex (MEM_HANDLE h) { + mem_release (h); } diff --git a/sc2/src/sc2code/libs/resource/resintrn.h b/sc2/src/sc2code/libs/resource/resintrn.h index e9ab5572e..455e47bdd 100644 --- a/sc2/src/sc2code/libs/resource/resintrn.h +++ b/sc2/src/sc2code/libs/resource/resintrn.h @@ -20,59 +20,14 @@ #define _RESINTRN_H #include -#include "reslib.h" +#include "libs/reslib.h" #include "index.h" -typedef struct -{ - DWORD flags_and_data_loc; - COUNT num_valid_handles; -} RES_HANDLE_LIST; -typedef RES_HANDLE_LIST *PRES_HANDLE_LIST; -typedef PRES_HANDLE_LIST RES_HANDLE_LISTPTR; +MEM_HANDLE loadResourceDesc (ResourceIndex *idx, ResourceDesc *desc); +MEM_HANDLE loadResource(const char *path, ResourceLoadFun *loadFun); -typedef PDWORD ENCODEPTR; -typedef PBYTE DATAPTR; - -#define RES_HANDLE_LIST_PRIORITY DEFAULT_MEM_PRIORITY - -#define AllocResourceHandleList(nt,ni) \ - mem_allocate ((MEM_SIZE)(sizeof (RES_HANDLE_LIST) \ - + (PACKMEM_LIST_SIZE * (nt)) \ - + (INSTANCE_LIST_SIZE * (ni))), MEM_ZEROINIT | MEM_PRIMARY, \ - RES_HANDLE_LIST_PRIORITY, MEM_SIMPLE) -#define LockResourceHandleList(pRH,h,p,rp,tp,dp) \ -do \ -{ \ - *(rp) = (RES_HANDLE_LISTPTR)mem_lock ((MEM_HANDLE)h); \ - *(tp) = (ENCODEPTR)&(*(rp))[1]; \ - *(dp) = (DATAPTR)&(*(tp))[CountPackageTypes (pRH,p)]; \ -} while (0) -#define UnlockResourceHandleList(h) mem_unlock((MEM_HANDLE)h) -#define FreeResourceHandleList(h) mem_release((MEM_HANDLE)h) - -#define DoLoad(pRH, t,fp,len) (*(pRH)->TypeList[t-1].func_vectors.load_func)(fp,len) -#define DoFree(pRH, t,h) (*(pRH)->TypeList[t-1].func_vectors.free_func)(h) - -extern MEM_HANDLE _GetResFileData (uio_Stream *res_fp, DWORD flen); -#define IsIndexType(pRH, t) ((pRH)->TypeList[t-1].func_vectors.load_func \ - ==_GetResFileData) - -#define LastResPackage(pRH) ((pRH)->num_packages) -#define LastResType(pRH) ((pRH)->num_types) -#define GetInstanceCount(pRH,t) \ - ((pRH)->TypeList[(t)-1].instance_count) - -#define ValidResPackage(pRH,p) ((p)<=LastResPackage(pRH)) -#define ValidResType(pRH,t) ((t)!=0&&(t)<=LastResType(pRH)) - -#define CountPackageTypes(pRH,p) \ - (COUNT)GET_TYPE ((pRH)->PackageList[(p)-1].packmem_info) -#define CountPackageInstances(pRH,p) \ - (COUNT)GET_INSTANCE ((pRH)->PackageList[(p)-1].packmem_info) - -extern void _set_current_index_header (INDEX_HEADERPTR ResHeaderPtr); -extern INDEX_HEADERPTR _get_current_index_header (void); +void _set_current_index_header (ResourceIndex *newResourceIndex); +ResourceIndex *_get_current_index_header (void); #endif /* _RESINTRN_H */ diff --git a/sc2/src/sc2code/setup.c b/sc2/src/sc2code/setup.c index 1a78f2374..837141f8e 100644 --- a/sc2/src/sc2code/setup.c +++ b/sc2/src/sc2code/setup.c @@ -105,7 +105,7 @@ LoadKernel (int argc, char *argv[]) SetContextFGFrame (Screen); SetFrameHot (Screen, MAKE_HOT_SPOT (0, 0)); - hResIndex = InitResourceSystem ("starcon", RES_INDEX, NULL); + hResIndex = InitResourceSystem ("starcon.lst", RES_INDEX, NULL); if (hResIndex == 0) return FALSE; INIT_INSTANCES ();