From 64c21a5e0a3fa844b515cbb5f3210fe0948419ff Mon Sep 17 00:00:00 2001 From: hendricks266 Date: Mon, 26 Nov 2012 08:37:36 +0000 Subject: [PATCH] Add "dump_used_assets.m32" to samples. This script can be used to extract what tilenum and sound IDs are used in maps. git-svn-id: https://svn.eduke32.com/eduke32@3241 1a8010ca-5511-0410-912e-c29ae57300e0 --- .../package/samples/dump_used_assets.m32 | 361 ++++++++++++++++++ 1 file changed, 361 insertions(+) create mode 100644 polymer/eduke32/package/samples/dump_used_assets.m32 diff --git a/polymer/eduke32/package/samples/dump_used_assets.m32 b/polymer/eduke32/package/samples/dump_used_assets.m32 new file mode 100644 index 000000000..ad8a8320e --- /dev/null +++ b/polymer/eduke32/package/samples/dump_used_assets.m32 @@ -0,0 +1,361 @@ +/* + To begin, type in the console: + + include dump_used_assets + enableevent all + + Open your map. + In 2D mode, press CTRL+C to search for the tiles and sounds used in the current map. + You can set the gamevar "verbose" to 1 if you want verbose .csv formatted information that would normally clog up the output. + Tip: With pk_quickmapcycling enabled, Ctrl-(LShift-)X loads the next (previous) map in a directory. + + The results from every map will be accumulated into master lists. + When you have searched for tiles in all desired maps, press CTRL+D to print the finished lists. + + The results will be printed in mapster32.log. +*/ + +include names.h + +gamearray usedTiles MAXTILES +gamearray usedSounds MAXSOUNDS + +definequote 0 +definequote 1 %ld + + +definequote 11 sprite,%ld, +definequote 12 floor,%ld, +definequote 13 ceiling,%ld, +definequote 14 wall,%ld, +definequote 15 overwall,%ld, + +definequote 21 MUSICANDSFX triggered,%ld, +definequote 22 MUSICANDSFX ambient,%ld, +definequote 23 sector one-time,%ld, +definequote 24 MIKE,%ld, +definequote 25 switch,%ld, +definequote 26 MIRROR,%ld, +definequote 27 sector 65534,%ld, +definequote 28 doortile,%ld, + +definequote 101 Searching for tiles used in current map... +definequote 102 Tile search finished. +definequote 103 Dumping tiles, cumulatively... +definequote 104 Tile dump finished. +definequote 105 Searching for sounds used in current map... +definequote 106 Sound search finished. +definequote 107 Dumping sounds, cumulatively... +definequote 108 Sound dump finished. +definequote 109 Search finished. +definequote 110 Dump finished. + +gamevar variable 0 0 + +gamevar verbose 0 0 + +gamevar index 0 0 + +gamevar flag 0 0 +gamevar input 0 0 + + +defstate tile_search + quote 101 + + for variable allsprites + { + set index .picnum + ifge index 0 ifle index MAXTILES set usedTiles[index] 1 + ife verbose 1 + { + qsprintf 0 11 .picnum + quote 0 + } + } + for variable allsectors + { + set index sector[variable].floorpicnum + ifge index 0 ifle index MAXTILES set usedTiles[index] 2 + set index sector[variable].ceilingpicnum + ifge index 0 ifle index MAXTILES set usedTiles[index] 3 + ife verbose 1 + { + qsprintf 0 12 sector[variable].floorpicnum + quote 0 + qsprintf 0 13 sector[variable].ceilingpicnum + quote 0 + } + } + for variable allwalls + { + set index wall[variable].picnum + ifge index 0 ifle index MAXTILES set usedTiles[index] 4 + set index wall[variable].overpicnum + ifge index 0 ifle index MAXTILES set usedTiles[index] 5 + ife verbose 1 + { + qsprintf 0 14 wall[variable].picnum + quote 0 + qsprintf 0 15 wall[variable].overpicnum + quote 0 + } + } + + quote 102 +ends + +defstate tile_dump + quote 103 + + for variable range MAXTILES + ifn usedTiles[variable] 0 + { + qsprintf 0 1 variable + quote 0 + } + + quote 104 +ends + + +// these long "ife" lists exist because switch/case is broken/was broken at the original time of writing + +// the three commented switches do not play sounds because their hitag is used for setting a multi-switch combination +defstate switch_identify + ife input ACCESSSWITCH set flag 1 + ife input SLOTDOOR set flag 1 ife input 133 set flag 1 + ife input LIGHTSWITCH set flag 1 ife input 135 set flag 1 + ife input SPACEDOORSWITCH set flag 1 ife input 137 set flag 1 + ife input SPACELIGHTSWITCH set flag 1 ife input 139 set flag 1 + ife input FRANKENSTINESWITCH set flag 1 ife input 141 set flag 1 + ife input MULTISWITCH set flag 1 ife input 147 set flag 1 ife input 148 set flag 1 ife input 149 set flag 1 + // ife input DIPSWITCH set flag 1 ife input 163 set flag 1 + ife input DIPSWITCH2 set flag 1 ife input 165 set flag 1 + // ife input TECHSWITCH set flag 1 ife input 167 set flag 1 + ife input DIPSWITCH3 set flag 1 ife input 169 set flag 1 + ife input ACCESSSWITCH2 set flag 1 + ife input LIGHTSWITCH2 set flag 1 ife input 713 set flag 1 + ife input POWERSWITCH1 set flag 1 ife input 861 set flag 1 + ife input LOCKSWITCH1 set flag 1 ife input 863 set flag 1 + ife input POWERSWITCH2 set flag 1 ife input 865 set flag 1 + ife input HANDSWITCH set flag 1 ife input 1112 set flag 1 + ife input PULLSWITCH set flag 1 ife input 1123 set flag 1 + // ife input ALIENSWITCH set flag 1 ife input 1143 set flag 1 +ends + +defstate doortile_identify + ife input DOORTILE1 set flag 1 + ife input DOORTILE2 set flag 1 + ife input DOORTILE3 set flag 1 + ife input DOORTILE4 set flag 1 + ife input DOORTILE5 set flag 1 + ife input DOORTILE6 set flag 1 + ife input DOORTILE7 set flag 1 + ife input DOORTILE8 set flag 1 + ife input DOORTILE9 set flag 1 + ife input DOORTILE10 set flag 1 + ife input DOORTILE11 set flag 1 + ife input DOORTILE12 set flag 1 + ife input DOORTILE14 set flag 1 + ife input DOORTILE15 set flag 1 + ife input DOORTILE16 set flag 1 + ife input DOORTILE17 set flag 1 + ife input DOORTILE18 set flag 1 + ife input DOORTILE19 set flag 1 + ife input DOORTILE20 set flag 1 + ife input DOORTILE21 set flag 1 + ife input DOORTILE22 set flag 1 + ife input DOORTILE23 set flag 1 +ends + +defstate sound_search + quote 105 + + for variable allsprites, ifactor MUSICANDSFX, ifl .lotag 1000 // rule out echo effect + { +// This is how the code SHOULD be: +// activation sounds / triggered sounds (e.g. elevators) + sectgetlotag + ifn LOTAG 0, ifl LOTAG 10000 + { + ifn .lotag 0 ifl .lotag 500 + { + set index .lotag + ifge index 0 ifle index MAXSOUNDS set usedSounds[index] 1 + ife verbose 1 + { + qsprintf 0 21 .lotag + quote 0 + } + } + ifn .hitag 0 ifl .hitag 500 + { + set index .hitag + ifge index 0 ifle index MAXSOUNDS set usedSounds[index] 1 + ife verbose 1 + { + qsprintf 0 21 .hitag + quote 0 + } + } + } +// ambient sounds + else + { + ifn .lotag 0 ifl .lotag 500 + { + set index .lotag + ifge index 0 ifle index MAXSOUNDS set usedSounds[index] 2 + ife verbose 1 + { + qsprintf 0 22 .lotag + quote 0 + } + } + } + } + +// one-time sector sounds + for variable allsectors, ifge sector[variable].lotag 10000, ifl sector[variable].lotag 16383 + { + set index sector[variable].lotag + subvar index 10000 + ifge index 0 ifle index MAXSOUNDS set usedSounds[index] 3 + ife verbose 1 + { + qsprintf 0 23 index + quote 0 + } + } + +// mikesnd + for variable allsprites, ifactor MIKE + { + set index .hitag // this one's clever -- by default it will play sound 0, as seen in E4L7 + ifge index 0 ifle index MAXSOUNDS set usedSounds[index] 4 + ife verbose 1 + { + qsprintf 0 24 .hitag + quote 0 + } + } + +// switches + for variable allsprites + { + set flag 0 + set input .picnum + state switch_identify + ife flag 1, ifn .hitag 0 + { + set index .hitag + ifge index 0 ifle index MAXSOUNDS set usedSounds[index] 5 + ife verbose 1 + { + qsprintf 0 25 .hitag + quote 0 + } + } + } + +// mirror + for variable allwalls + { + set index 0 + ife wall[variable].picnum MIRROR set index wall[variable].lotag + ife wall[variable].overpicnum MIRROR set index wall[variable].lotag + ifn index 0 + { + ifge index 0 ifle index MAXSOUNDS set usedSounds[index] 6 + ife verbose 1 + { + qsprintf 0 26 index + quote 0 + } + } + } + +// sector lotag 65534 (E1L2 ending) customexitsound + for variable allsectors, ife sector[variable].lotag 65534 + { + set index sector[variable].hitag + ifge index 0 ifle index MAXSOUNDS set usedSounds[index] 7 + ife verbose 1 + { + qsprintf 0 27 sector[variable].hitag + quote 0 + } + } + +// doortiles + for variable allsprites + { + set flag 0 + set input .picnum + state doortile_identify + ife flag 1, ifn .hitag 0 + { + set index .hitag + ifge index 0 ifle index MAXSOUNDS set usedSounds[index] 8 + ife verbose 1 + { + qsprintf 0 28 .hitag + quote 0 + } + } + } + for variable allwalls + { + set flag 0 + set input wall[variable].picnum + state doortile_identify + set input wall[variable].overpicnum + state doortile_identify + ife flag 1, ifn wall[variable].lotag 0, ifn wall[variable].hitag 0 + { + set index wall[variable].hitag + ifge index 0 ifle index MAXSOUNDS set usedSounds[index] 8 + ife verbose 1 + { + qsprintf 0 28 wall[variable].hitag + quote 0 + } + } + } + + quote 106 +ends + +defstate sound_dump + quote 107 + + for variable range MAXSOUNDS + ifn usedSounds[variable] 0 + { + qsprintf 0 1 variable + quote 0 + } + + quote 108 +ends + + + +onevent EVENT_KEYS2D + ifeitherctrl + { + ifhitkey KEY_V // find + { + state tile_search + state sound_search + quote 109 + } + ifhitkey KEY_D // dump + { + state tile_dump + state sound_dump + quote 110 + } + } +endevent