From 8559966de2ef9ab41879aa3bb5df896809e9cb77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sun, 31 Jul 2011 23:29:03 +0200 Subject: [PATCH] Remove obsolete files. --- tools/supported/attachtest.cpp | 90 ---- tools/supported/autosearch.cpp | 784 -------------------------------- tools/supported/cleanmap.cpp | 105 ----- tools/supported/expbench.cpp | 104 ----- tools/supported/forcepause.cpp | 49 -- tools/supported/suspendtest.cpp | 61 --- tools/supported/unstuck.cpp | 41 -- tools/supported/vdig.cpp | 208 --------- tools/supported/weather.cpp | 120 ----- 9 files changed, 1562 deletions(-) delete mode 100644 tools/supported/attachtest.cpp delete mode 100644 tools/supported/autosearch.cpp delete mode 100644 tools/supported/cleanmap.cpp delete mode 100644 tools/supported/expbench.cpp delete mode 100644 tools/supported/forcepause.cpp delete mode 100644 tools/supported/suspendtest.cpp delete mode 100644 tools/supported/unstuck.cpp delete mode 100644 tools/supported/vdig.cpp delete mode 100644 tools/supported/weather.cpp diff --git a/tools/supported/attachtest.cpp b/tools/supported/attachtest.cpp deleted file mode 100644 index 0dc509fa7..000000000 --- a/tools/supported/attachtest.cpp +++ /dev/null @@ -1,90 +0,0 @@ -// Attach test -// attachtest - 1000x suspend/resume - -#include -#include -#include -#include -using namespace std; -#include -#include - -int main (void) -{ - bool temporary_terminal = TemporaryTerminal(); - time_t start, end; - double time_diff; - DFHack::ContextManager DFMgr("Memory.xml"); - DFHack::Context* DF; - try - { - DF = DFMgr.getSingleContext(); - DF->Attach(); - DF->Detach(); - } - catch (exception& e) - { - cerr << e.what() << endl; - if(temporary_terminal) - cin.ignore(); - return 1; - } -/* - // attach/detach test - cout << "Testing attach/detach" << endl; - time(&start); - bool all_ok = true; - for (int i = 0; i < 100; i++) - { - cout << "Try " << i << endl; - if(DF.Attach()) - { - if(DF.Detach()) - { - continue; - } - else - { - cout << "cycle " << i << ", detach failed" << endl; - all_ok = false; - } - } - else - { - cout << "cycle " << i << ", attach failed" << endl; - all_ok = false; - } - cout << endl; - } - if(!all_ok) - { - cerr << "failed to attach or detach in cycle! exiting" << endl; - return 1; - } - time(&end); - - time_diff = difftime(end, start); - cout << "attach tests done in " << time_diff << " seconds." << endl; - */ - cout << "Testing suspend/resume" << endl; - DF->Attach(); - time(&start); - for (int i = 0; i < 1000; i++) - { - DF->Suspend(); - if(i%10 == 0) - cout << i / 10 << "%" << endl; - DF->Resume(); - } - time(&end); - DF->Detach(); - time_diff = difftime(end, start); - cout << "suspend tests done in " << time_diff << " seconds." << endl; - - if(temporary_terminal) - { - cout << "Done. Press any key to continue" << endl; - cin.ignore(); - } - return 0; -} diff --git a/tools/supported/autosearch.cpp b/tools/supported/autosearch.cpp deleted file mode 100644 index 824752d60..000000000 --- a/tools/supported/autosearch.cpp +++ /dev/null @@ -1,784 +0,0 @@ -// this is an incremental search tool. It only works on Linux. -// here be dragons... and ugly code :P -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -using namespace std; - -#ifndef LINUX_BUILD - #define WINVER 0x0500 - // this one prevents windows from infecting the global namespace with filth - #define NOMINMAX - #define WIN32_LEAN_AND_MEAN - #include -#endif - -#include -#include "SegmentedFinder.h" -class Token -{ -public: - Token(uint64_t _offset) - { - offset = _offset; - offset_valid = 1; - value_valid = 0; - parent = 0; - } - Token(const std::string & offsetn) - { - full_offset_name = offsetn; - offset_valid = 0; - value_valid = 0; - parent = 0; - } - Token() - { - offset_valid = 0; - value_valid = 0; - parent = 0; - } - virtual ~Token(){}; - virtual bool LoadData(SegmentedFinder * s) = 0; - virtual void EmptyData() - { - value_valid = false; - }; - virtual bool Match(SegmentedFinder * s, uint64_t offset) = 0; - virtual void EmptyOffset() - { - offset_valid = false; - }; - virtual bool AcquireOffset(DFHack::VersionInfo * vinfo) - { - vinfo->getOffset(full_offset_name); - return true; - } - virtual uint32_t Length() = 0; - virtual uint64_t getAbsolute(){if(parent) return parent->getAbsolute() + offset; else return offset;}; - void setParent( Token *par ) - { - par = parent; - } -protected: - uint64_t offset;// offset from the start of the parent token - std::string full_offset_name; - Token * parent; - bool offset_valid :1; - bool value_valid :1; -}; - -class Byte: virtual public Token -{ -public: - Byte(uint64_t _offset):Token(_offset){}; - Byte():Token(){}; - ~Byte(); - virtual bool LoadData(SegmentedFinder * s) - { - if(offset_valid) - { - char * ptr = s->Translate(getAbsolute()); - if(ptr) - { - value = *ptr; - value_valid = true; - return true; - } - } - return false; - }; - // is the loaded data same as data at offset? yes -> set our offset to that. - virtual bool Match(SegmentedFinder * s, uint64_t offs) - { - if(value_valid && (*s->Translate(parent->getAbsolute() + offset)) == value ) - { - if(parent) - offset = offs - parent->getAbsolute(); - else - offset = offs; - return true; - } - return false; - }; - virtual uint32_t Length() - { - return 1; - }; -private: - char value; -}; - -class Short: virtual public Token -{ -public: - Short(uint64_t _offset):Token(_offset){}; - Short():Token(){}; - ~Short(); - virtual bool LoadData(SegmentedFinder * s) - { - if(offset_valid) - { - uint16_t * ptr = s->Translate(getAbsolute()); - if(ptr) - { - value = *ptr; - value_valid = true; - return true; - } - } - return false; - }; - // is the loaded data same as data at offset? yes -> set our offset to that. - virtual bool Match(SegmentedFinder * s, uint64_t offs) - { - if(value_valid && (*s->Translate(parent->getAbsolute() + offset)) == value ) - { - if(parent) - offset = offs - parent->getAbsolute(); - else - offset = offs; - return true; - } - return false; - }; - virtual uint32_t Length() - { - return 2; - }; -private: - uint16_t value; -}; - -class Long: virtual public Token -{ -public: - Long(uint64_t _offset):Token(_offset){}; - Long():Token(){}; - ~Long(); - virtual bool LoadData(SegmentedFinder * s) - { - if(offset_valid) - { - uint32_t * ptr = s->Translate(getAbsolute()); - if(ptr) - { - value = *ptr; - value_valid = true; - return true; - } - } - return false; - }; - // is the loaded data same as data at offset? yes -> set our offset to that. - virtual bool Match(SegmentedFinder * s, uint64_t offs) - { - if(value_valid && (*s->Translate(offs)) == value ) - { - if(parent) - offset = offs - parent->getAbsolute(); - else - offset = offs; - return true; - } - return false; - - }; - virtual uint32_t Length(){return 4;}; -private: - uint32_t value; -}; - -class PtrVector : virtual public Token -{ -public: - PtrVector(uint64_t _offset):Token(_offset){}; - PtrVector():Token(){}; - ~PtrVector(); - virtual uint32_t Length(){return 12;}; -private: - vector value; -}; - -class Pointer: virtual public Token -{ -public: - Pointer(uint64_t _offset):Token(_offset){}; - Pointer():Token(){}; - ~Pointer(); - virtual uint32_t Length(){return 4;}; -private: - uint64_t value; -}; - -class String: virtual public Token -{ -protected: - string value; -}; - -class Struct: virtual public Token -{ -public: - Struct(uint64_t _offset):Token(_offset){}; - Struct():Token(){}; - ~Struct(){}; - void Add( Token * t ){members.push_back(t);}; - virtual uint32_t Length(){return 0;}; // FIXME: temporary solution, should be the minimal length of all the contents combined - virtual bool LoadData(SegmentedFinder* s) - { - bool OK = true; - for(size_t i = 0; i < members.size() && OK; i++) - OK &= members[i]->LoadData(s); - return OK; - }; - // TODO: IMPLEMENT! - virtual bool Match(SegmentedFinder* s, uint64_t offset) - { - return false; - } -private: - vector members; -}; - -class LinuxString: virtual public String -{ -public: - LinuxString(uint64_t _offset):Token(_offset){}; - LinuxString():Token(){}; - ~LinuxString(){}; - virtual uint32_t Length(){return 4;}; - virtual bool LoadData(SegmentedFinder* s) - { - return false; - } - virtual bool Match(SegmentedFinder* s, uint64_t offset) - { - return false; - } - /* - // read string pointer, translate to local scheme - char *str = sf->Translate(*offset); - // verify - if(!str) - return false; - uint32_t length = *(uint32_t *)(offset - 12); - uint32_t capacity = *(uint32_t *)(offset - 8); - if(length > capacity) - return false; - //char * temp = new char[length+1]; - // read data from inside the string structure - //memcpy(temp, str,length + 1); - output = str; - return true; - */ -}; - -class WindowsString: virtual public String -{ -public: - WindowsString(uint64_t _offset):Token(_offset){}; - WindowsString():Token(){}; - ~WindowsString(){}; - virtual uint32_t Length(){return 0x1C;}; // FIXME: pouzivat Memory.xml? - virtual bool LoadData(SegmentedFinder* s) - { - return false; - } - virtual bool Match(SegmentedFinder* s, uint64_t offset) - { - return false; - } - string rdWinString( char * offset, SegmentedFinder & sf ) - { - char * start_offset = offset + 4; // FIXME: pouzivat Memory.xml? - uint32_t length = *(uint32_t *)(offset + 20); // FIXME: pouzivat Memory.xml? - uint32_t capacity = *(uint32_t *)(offset + 24); // FIXME: pouzivat Memory.xml? - char * temp = new char[capacity+1]; - - // read data from inside the string structure - if(capacity < 16) - { - memcpy(temp, start_offset,capacity); - //read(start_offset, capacity, (uint8_t *)temp); - } - else // read data from what the offset + 4 dword points to - { - start_offset = sf.Translate(*(uint32_t*)start_offset); - memcpy(temp, start_offset,capacity); - } - - temp[length] = 0; - string ret = temp; - delete temp; - return ret; - } -}; - -inline void printRange(DFHack::t_memrange * tpr) -{ - std::cout << std::hex << tpr->start << " - " << tpr->end << "|" << (tpr->read ? "r" : "-") << (tpr->write ? "w" : "-") << (tpr->execute ? "x" : "-") << "|" << tpr->name << std::endl; -} - -bool getRanges(DFHack::Process * p, vector & selected_ranges) -{ - vector ranges; - selected_ranges.clear(); - p->getMemRanges(ranges); - cout << "Which range to search? (default is 1-4)" << endl; - for(size_t i = 0; i< ranges.size();i++) - { - cout << dec << "(" << i << ") "; - printRange(&(ranges[i])); - } - int start, end; - while(1) - { - string select; - cout << ">>"; - std::getline(cin, select); - if(select.empty()) - { - // empty input, assume default. observe the length of the memory range vector - // these are hardcoded values, intended for my convenience only - if(p->getDescriptor()->getOS() == DFHack::OS_WINDOWS) - { - start = min(11, (int)ranges.size()); - end = min(14, (int)ranges.size()); - } - else if(p->getDescriptor()->getOS() == DFHack::OS_LINUX) - { - start = min(2, (int)ranges.size()); - end = min(4, (int)ranges.size()); - } - else - { - start = 1; - end = 1; - } - break; - } - // I like the C variants here. much less object clutter - else if(sscanf(select.c_str(), "%d-%d", &start, &end) == 2) - { - start = min(start, (int)ranges.size()); - end = min(end, (int)ranges.size()); - break; - } - else - { - continue; - } - break; - } - end++; - cout << "selected ranges:" <::iterator it; - it = ranges.begin() + start; - while (it != ranges.begin() + end) - { - // check if readable - if((*it).read) - { - selected_ranges.push_back(*it); - printRange(&*it); - } - it++; - } - return true; -} - -bool getNumber (string prompt, int & output, int def, bool pdef = true) -{ - cout << prompt; - if(pdef) - cout << " default=" << def << endl; - while (1) - { - string select; - cout << ">>"; - std::getline(cin, select); - if(select.empty()) - { - output = def; - break; - } - else if( sscanf(select.c_str(), "%d", &output) == 1 ) - { - break; - } - else - { - continue; - } - } - return true; -} - -bool getString (string prompt, string & output) -{ - cout << prompt; - cout << ">>"; - string select; - std::getline(cin, select); - if(select.empty()) - { - return false; - } - else - { - output = select; - return true; - } -} - -// meh -#pragma pack(1) -struct tilecolors -{ - uint16_t fore; - uint16_t back; - uint16_t bright; -}; -#pragma pack() - -void printFound(vector &found, const char * what) -{ - cout << what << ":" << endl; - for(size_t i = 0; i < found.size();i++) - { - cout << hex << "0x" << found[i] << endl; - } -} - -void printFoundStrVec(vector &found, const char * what, SegmentedFinder & s) -{ - cout << what << ":" << endl; - for(size_t i = 0; i < found.size();i++) - { - cout << hex << "0x" << found[i] << endl; - cout << "--------------------------" << endl; - vecTriplet * vt = s.Translate(found[i]); - if(vt) - { - int j = 0; - for(uint32_t idx = vt->start; idx < vt->finish; idx += sizeof(uint32_t)) - { - uint32_t object_ptr; - // deref ptr idx, get ptr to object - if(!s.Read(idx,object_ptr)) - { - cout << "BAD!" << endl; - break; - } - // deref ptr to first object, get ptr to string - uint32_t string_ptr; - if(!s.Read(object_ptr,string_ptr)) - { - cout << "BAD!" << endl; - break; - } - // get string location in our local cache - char * str = s.Translate(string_ptr); - if(!str) - { - cout << "BAD!" << endl; - break; - } - cout << dec << j << ":" << hex << "0x" << object_ptr << " : " << str << endl; - j++; - } - } - else - { - cout << "BAD!" << endl; - break; - } - cout << "--------------------------" << endl; - } -} - -class TokenFactory -{ - DFHack::OSType platform; -public: - TokenFactory(DFHack::OSType platform_in) - { - platform = platform_in; - } - template - T * Build() - { - return new T; - } - template - T * Build(uint64_t offset) - { - return new T(offset); - } -}; -template <> -String * TokenFactory::Build() -{ - switch(platform) - { - case DFHack::OS_WINDOWS: - return new WindowsString(); - case DFHack::OS_LINUX: - case DFHack::OS_APPLE: - return new LinuxString(); - case DFHack::OS_BAD: - return 0; - } -}; -template <> -String * TokenFactory::Build(uint64_t offset) -{ - switch(platform) - { - case DFHack::OS_WINDOWS: - return new WindowsString(offset); - case DFHack::OS_LINUX: - case DFHack::OS_APPLE: - return new LinuxString(offset); - case DFHack::OS_BAD: - return 0; - } -}; - -void autoSearch(DFHack::Context * DF, vector & ranges, DFHack::OSType platform) -{ - cout << "stealing memory..." << endl; - SegmentedFinder sf(ranges, DF); - TokenFactory tf(platform); - cout << "done!" << endl; - Struct maps; - maps.Add(tf.Build()); - maps.Add(tf.Build()); - /* - vector allVectors; - vector filtVectors; - vector to_filter; - - cout << "stealing memory..." << endl; - SegmentedFinder sf(ranges, DF); - cout << "looking for vectors..." << endl; - sf.Find(0,4,allVectors, vectorAll); - - filtVectors = allVectors; - cout << "-------------------" << endl; - cout << "!!LANGUAGE TABLES!!" << endl; - cout << "-------------------" << endl; - - uint64_t kulet_vector; - uint64_t word_table_offset; - uint64_t DWARF_vector; - uint64_t DWARF_object; - - // find lang vector (neutral word table) - to_filter = filtVectors; - sf.Filter("ABBEY",to_filter, vectorStringFirst); - uint64_t lang_addr = to_filter[0]; - - // find dwarven language word table - to_filter = filtVectors; - sf.Filter("kulet",to_filter, vectorStringFirst); - kulet_vector = to_filter[0]; - - // find vector of languages - to_filter = filtVectors; - sf.Filter("DWARF",to_filter, vectorStringFirst); - - // verify - for(int i = 0; i < to_filter.size(); i++) - { - vecTriplet * vec = sf.Translate(to_filter[i]); - if(((vec->finish - vec->start) / 4) == 4) // verified - { - DWARF_vector = to_filter[i]; - DWARF_object = sf.Read(vec->start); - // compute word table offset from dwarf word table and dwarf language object addresses - word_table_offset = kulet_vector - DWARF_object; - break; - } - } - cout << "translation vector: " << hex << "0x" << DWARF_vector << endl; - cout << "lang vector: " << hex << "0x" << lang_addr << endl; - cout << "word table offset: " << hex << "0x" << word_table_offset << endl; - - cout << "-------------" << endl; - cout << "!!MATERIALS!!" << endl; - cout << "-------------" << endl; - // inorganics vector - to_filter = filtVectors; - //sf.Find(257 * 4,4,to_filter,vectorLength); - sf.Filter("IRON",to_filter, vectorString); - sf.Filter("ONYX",to_filter, vectorString); - sf.Filter("RAW_ADAMANTINE",to_filter, vectorString); - sf.Filter("BLOODSTONE",to_filter, vectorString); - printFound(to_filter,"inorganics"); - - // organics vector - to_filter = filtVectors; - sf.Filter(52 * 4,to_filter,vectorLength); - sf.Filter("MUSHROOM_HELMET_PLUMP",to_filter, vectorStringFirst); - printFound(to_filter,"organics"); - - // tree vector - to_filter = filtVectors; - sf.Filter(31 * 4,to_filter,vectorLength); - sf.Filter("MANGROVE",to_filter, vectorStringFirst); - printFound(to_filter,"trees"); - - // plant vector - to_filter = filtVectors; - sf.Filter(21 * 4,to_filter,vectorLength); - sf.Filter("MUSHROOM_HELMET_PLUMP",to_filter, vectorStringFirst); - printFound(to_filter,"plants"); - - // color descriptors - //AMBER, 112 - to_filter = filtVectors; - sf.Filter(112 * 4,to_filter,vectorLength); - sf.Filter("AMBER",to_filter, vectorStringFirst); - printFound(to_filter,"color descriptors"); - if(!to_filter.empty()) - { - uint64_t vec = to_filter[0]; - vecTriplet *vtColors = sf.Translate(vec); - uint32_t colorObj = sf.Read(vtColors->start); - cout << "Amber color:" << hex << "0x" << colorObj << endl; - // TODO: find string 'amber', the floats - } - - // all descriptors - //AMBER, 338 - to_filter = filtVectors; - sf.Filter(338 * 4,to_filter,vectorLength); - sf.Filter("AMBER",to_filter, vectorStringFirst); - printFound(to_filter,"all descriptors"); - - // creature type - //ELEPHANT, ?? (demons abound) - to_filter = filtVectors; - //sf.Find(338 * 4,4,to_filter,vectorLength); - sf.Filter("ELEPHANT",to_filter, vectorString); - sf.Filter("CAT",to_filter, vectorString); - sf.Filter("DWARF",to_filter, vectorString); - sf.Filter("WAMBLER_FLUFFY",to_filter, vectorString); - sf.Filter("TOAD",to_filter, vectorString); - sf.Filter("DEMON_1",to_filter, vectorString); - - vector toad_first = to_filter; - vector elephant_first = to_filter; - sf.Filter("TOAD",toad_first, vectorStringFirst); - sf.Filter("ELEPHANT",elephant_first, vectorStringFirst); - printFoundStrVec(toad_first,"toad-first creature types",sf); - printFound(elephant_first,"elephant-first creature types"); - printFound(to_filter,"all creature types"); - - uint64_t to_use = 0; - if(!elephant_first.empty()) - { - to_use = elephant_first[0]; - vecTriplet *vtCretypes = sf.Translate(to_use); - uint32_t elephant = sf.Read(vtCretypes->start); - uint64_t Eoffset; - cout << "Elephant: 0x" << hex << elephant << endl; - cout << "Elephant: rawname = 0x0" << endl; - uint8_t letter_E = 'E'; - Eoffset = sf.FindInRange (letter_E,equalityP, elephant, 0x300 ); - if(Eoffset) - { - cout << "Elephant: big E = 0x" << hex << Eoffset - elephant << endl; - } - Eoffset = sf.FindInRange ("FEMALE",vectorStringFirst, elephant, 0x300 ); - if(Eoffset) - { - cout << "Elephant: caste vector = 0x" << hex << Eoffset - elephant << endl; - } - Eoffset = sf.FindInRange ("SKIN",vectorStringFirst, elephant, 0x2000 ); - if(Eoffset) - { - cout << "Elephant: extract? vector = 0x" << hex << Eoffset - elephant << endl; - } - tilecolors eletc = {7,0,0}; - Bytestream bs_eletc(&eletc, sizeof(tilecolors)); - cout << bs_eletc; - Eoffset = sf.FindInRange (bs_eletc, findBytestream, elephant, 0x300 ); - if(Eoffset) - { - cout << "Elephant: colors = 0x" << hex << Eoffset - elephant << endl; - } - //cout << "Amber color:" << hex << "0x" << colorObj << endl; - // TODO: find string 'amber', the floats - } - if(!toad_first.empty()) - { - to_use = toad_first[0]; - vecTriplet *vtCretypes = sf.Translate(to_use); - uint32_t toad = sf.Read(vtCretypes->start); - uint64_t Eoffset; - cout << "Toad: 0x" << hex << toad << endl; - cout << "Toad: rawname = 0x0" << endl; - Eoffset = sf.FindInRange (0xF9,equalityP, toad, 0x300 ); - if(Eoffset) - { - cout << "Toad: character (not reliable) = 0x" << hex << Eoffset - toad << endl; - } - Eoffset = sf.FindInRange ("FEMALE",vectorStringFirst, toad, 0x300 ); - if(Eoffset) - { - cout << "Toad: caste vector = 0x" << hex << Eoffset - toad << endl; - } - Eoffset = sf.FindInRange ("SKIN",vectorStringFirst, toad, 0x2000 ); - if(Eoffset) - { - cout << "Toad: extract? vector = 0x" << hex << Eoffset - toad << endl; - } - tilecolors toadtc = {2,0,0}; - Bytestream bs_toadc(&toadtc, sizeof(tilecolors)); - Eoffset = sf.FindInRange (bs_toadc, findBytestream, toad, 0x300 ); - if(Eoffset) - { - cout << "Toad: colors = 0x" << hex << Eoffset - toad << endl; - } - }*/ -} - -int main (void) -{ - string select; - DFHack::ContextManager DFMgr("Memory.xml"); - DFHack::Context * DF = DFMgr.getSingleContext(); - try - { - DF->Attach(); - } - catch (exception& e) - { - cerr << e.what() << endl; - #ifndef LINUX_BUILD - cin.ignore(); - #endif - return 1; - } - DFHack::Process * p = DF->getProcess(); - vector selected_ranges; - getRanges(p,selected_ranges); - - DFHack::VersionInfo *minfo = DF->getMemoryInfo(); - autoSearch(DF,selected_ranges, minfo->getOS()); - #ifndef LINUX_BUILD - cout << "Done. Press any key to continue" << endl; - cin.ignore(); - #endif - return 0; -} diff --git a/tools/supported/cleanmap.cpp b/tools/supported/cleanmap.cpp deleted file mode 100644 index fa07a225e..000000000 --- a/tools/supported/cleanmap.cpp +++ /dev/null @@ -1,105 +0,0 @@ -// Map cleaner. Removes all the snow, mud spills, blood and vomit from map tiles. - -#include -#include -#include -#include -#include -using namespace std; - -#include -#include - -// magic globals. -const uint32_t water_idx = 6; -const uint32_t mud_idx = 12; - -int main (int argc, char** argv) -{ - bool temporary_terminal = TemporaryTerminal(); - bool quiet = false; - for(int i = 1; i < argc; i++) - { - string test = argv[i]; - if(test == "-q") - { - quiet = true; - } - } - - uint32_t x_max,y_max,z_max; - vector splatter; - - DFHack::ContextManager DFMgr("Memory.xml"); - DFHack::Context *DF = DFMgr.getSingleContext(); - try - { - DF->Attach(); - } - catch (exception& e) - { - cerr << e.what() << endl; - if(temporary_terminal) - cin.ignore(); - return 1; - } - DFHack::Maps *Mapz = DF->getMaps(); - - // init the map - if(!Mapz->Start()) - { - cerr << "Can't init map." << endl; - if(temporary_terminal) - cin.ignore(); - return 1; - } - - Mapz->getSize(x_max,y_max,z_max); - - uint8_t zeroes [16][16] = {{0}}; - DFHack::occupancies40d occ; - // walk the map - for(uint32_t x = 0; x< x_max;x++) - { - for(uint32_t y = 0; y< y_max;y++) - { - for(uint32_t z = 0; z< z_max;z++) - { - if(Mapz->isValidBlock(x,y,z)) - { - Mapz->ReadVeins(x,y,z,0,0,&splatter); - Mapz->ReadOccupancy(x,y,z,&occ); - for(int i = 0; i < 16; i++) - for(int j = 0; j < 16; j++) - { - occ[i][j].bits.arrow_color = 0; - occ[i][j].bits.broken_arrows_variant = 0; - } - Mapz->WriteOccupancy(x,y,z,&occ); - for(uint32_t i = 0; i < splatter.size(); i++) - { - DFHack::t_spattervein & vein = splatter[i]; - // filter snow - if(vein.mat1 == water_idx && vein.matter_state == DFHack::state_powder) - continue; - // filter mud - if(vein.mat1 == mud_idx && vein.matter_state == DFHack::state_solid) - continue; - uint32_t addr = vein.address_of; - uint32_t offset = offsetof(DFHack::t_spattervein, intensity); - // TODO: make this actually destroy the objects/remove them from the vector? - // still, this is safe. - DF->WriteRaw(addr + offset,sizeof(zeroes),(uint8_t *) zeroes); - } - } - } - } - } - DF->Detach(); - if (!quiet && temporary_terminal) - { - cout << "Done. Press any key to continue" << endl; - cin.ignore(); - } - return 0; -} diff --git a/tools/supported/expbench.cpp b/tools/supported/expbench.cpp deleted file mode 100644 index 80da929b0..000000000 --- a/tools/supported/expbench.cpp +++ /dev/null @@ -1,104 +0,0 @@ -// This program exports the entire map from DF. Takes roughly 6.6 seconds for 1000 cycles on my Linux machine. ~px - -#include -#include -#include -#include -#include - -using namespace std; - -#include -#include -void print_progress (int current, int total) -{ - if(total < 100) - { - cout << "\b" << current << " / " << total << " %\xd" << std::flush; - } - else - { - if( current % (total/100) == 0 ) - { - int percentage = current / (total/100); - // carridge return, not line feed, so percentage, less console spam :) - cout << "\b" << percentage << " %\xd" << std::flush; // and a flush for good measure - } - } -} - -int main (int numargs, char** args) -{ - bool temporary_terminal = TemporaryTerminal(); - time_t start, end; - double time_diff; - - unsigned int iterations = 0; - if (numargs == 2) - { - istringstream input (args[1],istringstream::in); - input >> iterations; - } - if(iterations == 0) - iterations = 1000; - - uint32_t x_max,y_max,z_max; - uint32_t num_blocks = 0; - uint64_t bytes_read = 0; - DFHack::mapblock40d Block; - DFHack::Maps *Maps = 0; - DFHack::ContextManager DFMgr("Memory.xml"); - DFHack::Context *DF; - try - { - DF = DFMgr.getSingleContext(); - DF->Attach(); - Maps = DF->getMaps(); - } - catch (exception& e) - { - cerr << e.what() << endl; - if(temporary_terminal) - cin.ignore(); - return 1; - } - - time(&start); - - cout << "doing " << iterations << " iterations" << endl; - for(uint32_t i = 0; i< iterations;i++) - { - print_progress (i, iterations); - if(!Maps->Start()) - break; - Maps->getSize(x_max,y_max,z_max); - for(uint32_t x = 0; x< x_max;x++) - { - for(uint32_t y = 0; y< y_max;y++) - { - for(uint32_t z = 0; z< z_max;z++) - { - if(Maps->isValidBlock(x,y,z)) - { - Maps->ReadBlock40d(x, y, z, &Block); - num_blocks ++; - bytes_read += sizeof(DFHack::mapblock40d); - } - } - } - } - Maps->Finish(); - } - DF->Detach(); - time(&end); - time_diff = difftime(end, start); - cout << num_blocks << " blocks read" << endl; - cout << bytes_read / (1024 * 1024) << " MB" << endl; - cout << "map export tests done in " << time_diff << " seconds." << endl; - if(temporary_terminal) - { - cout << "Done. Press any key to continue" << endl; - cin.ignore(); - } - return 0; -} diff --git a/tools/supported/forcepause.cpp b/tools/supported/forcepause.cpp deleted file mode 100644 index 98b9b8a6c..000000000 --- a/tools/supported/forcepause.cpp +++ /dev/null @@ -1,49 +0,0 @@ -// This forces the game to pause. - -#include -#include -#include -using namespace std; - -#include -#include -#include - -int main (int argc, char** argv) -{ - bool temporary_terminal = TemporaryTerminal(); - bool quiet = false; - for(int i = 1; i < argc; i++) - { - string test = argv[i]; - if(test == "-q") - { - quiet = true; - } - } - - DFHack::ContextManager DFMgr("Memory.xml"); - DFHack::Context *DF; - try - { - DF = DFMgr.getSingleContext(); - DF->Attach(); - } - catch (exception& e) - { - cerr << e.what() << endl; - if(!quiet && temporary_terminal) - cin.ignore(); - return 1; - } - - DFHack::World *World =DF->getWorld(); - cout << "Pausing..." << endl; - - World->SetPauseState(true); - DF->Resume(); - cout << "Done. The current game frame will have to finish first. This can take some time on bugged maps." << endl; - if(!quiet && temporary_terminal) - cin.ignore(); - return 0; -} diff --git a/tools/supported/suspendtest.cpp b/tools/supported/suspendtest.cpp deleted file mode 100644 index 2493fcf68..000000000 --- a/tools/supported/suspendtest.cpp +++ /dev/null @@ -1,61 +0,0 @@ -// Test suspend/resume - -#include -#include -#include -#include -#include -using namespace std; - -#include -#include - -int main (void) -{ - bool temporary_terminal = TemporaryTerminal(); - string blah; - DFHack::ContextManager DFMgr("Memory.xml"); - DFHack::Context * DF; - try - { - DF = DFMgr.getSingleContext(); - DF->Attach(); - } - catch (exception& e) - { - cerr << e.what() << endl; - if(temporary_terminal) - cin.ignore(); - return 1; - } - cout << "Attached, DF should be suspended now" << endl; - getline(cin, blah); - - DF->Resume(); - cout << "Resumed, DF should be running" << endl; - getline(cin, blah); - - DF->Suspend(); - cout << "Suspended, DF should be suspended now" << endl; - getline(cin, blah); - - DF->Resume(); - cout << "Resumed, testing ForceResume. Suspend using SysInternals Process Explorer" << endl; - getline(cin, blah); - - DF->ForceResume(); - cout << "ForceResumed. DF should be running." << endl; - getline(cin, blah); - - if(!DF->Detach()) - { - cerr << "Can't detach from DF" << endl; - if(temporary_terminal) - cin.ignore(); - return 1; - } - cout << "Detached, DF should be running again" << endl; - if(temporary_terminal) - getline(cin, blah); - return 0; -} diff --git a/tools/supported/unstuck.cpp b/tools/supported/unstuck.cpp deleted file mode 100644 index 01a4e4c21..000000000 --- a/tools/supported/unstuck.cpp +++ /dev/null @@ -1,41 +0,0 @@ -// Make stuck DF run again. - -#include -#include -#include -#include -#include -using namespace std; - -#include -#include -int main (void) -{ - bool temporary_terminal = TemporaryTerminal(); - string blah; - DFHack::ContextManager DFMgr("Memory.xml"); - DFHack::Context *DF; - try - { - DF = DFMgr.getSingleContext(); - DF->Attach(); - } - catch (exception& e) - { - cerr << e.what() << endl; - if(temporary_terminal) - cin.ignore(); - return 1; - } - - DF->ForceResume(); - cout << "DF should be running again :)" << endl; - getline(cin, blah); - - if(!DF->Detach()) - { - cerr << "Can't detach from DF" << endl; - return 1; - } - return 0; -} diff --git a/tools/supported/vdig.cpp b/tools/supported/vdig.cpp deleted file mode 100644 index c17f0d1ef..000000000 --- a/tools/supported/vdig.cpp +++ /dev/null @@ -1,208 +0,0 @@ -#include -#include // for memset -#include -#include -#include -#include -#include -#include -using namespace std; - -#include -#include -#include -using namespace MapExtras; - -int main (int argc, char* argv[]) -{ - bool temporary_terminal = TemporaryTerminal(); - // Command line options - bool updown = false; - if(argc > 1 && strcmp(argv[1],"-x") == 0) - updown = true; - - DFHack::ContextManager DFMgr("Memory.xml"); - DFHack::Context * DF; - try - { - DF = DFMgr.getSingleContext(); - DF->Attach(); - } - catch (exception& e) - { - cerr << e.what() << endl; - if(temporary_terminal) - cin.ignore(); - return 1; - } - - uint32_t x_max,y_max,z_max; - DFHack::Maps * Maps = DF->getMaps(); - DFHack::Gui * Gui = DF->getGui(); - - // init the map - if(!Maps->Start()) - { - cerr << "Can't init map. Make sure you have a map loaded in DF." << endl; - DF->Detach(); - if(temporary_terminal) - cin.ignore(); - return 1; - } - - int32_t cx, cy, cz; - Maps->getSize(x_max,y_max,z_max); - uint32_t tx_max = x_max * 16; - uint32_t ty_max = y_max * 16; - - Gui->getCursorCoords(cx,cy,cz); - while(cx == -30000) - { - cerr << "Cursor is not active. Point the cursor at a vein." << endl; - DF->Resume(); - cin.ignore(); - DF->Suspend(); - Gui->getCursorCoords(cx,cy,cz); - } - DFHack::DFCoord xy ((uint32_t)cx,(uint32_t)cy,cz); - if(xy.x == 0 || xy.x == tx_max - 1 || xy.y == 0 || xy.y == ty_max - 1) - { - cerr << "I won't dig the borders. That would be cheating!" << endl; - DF->Detach(); - if(temporary_terminal) - cin.ignore(); - return 1; - } - MapCache * MCache = new MapCache(Maps); - - DFHack::t_designation des = MCache->designationAt(xy); - int16_t tt = MCache->tiletypeAt(xy); - int16_t veinmat = MCache->veinMaterialAt(xy); - - if( veinmat == -1 ) - { - cerr << "This tile is non-vein. Bye :)" << endl; - delete MCache; - DF->Detach(); - if(temporary_terminal) - cin.ignore(); - return 1; - } - printf("%d/%d/%d tiletype: %d, veinmat: %d, designation: 0x%x ... DIGGING!\n", cx,cy,cz, tt, veinmat, des.whole); - stack flood; - flood.push(xy); - - - while( !flood.empty() ) - { - DFHack::DFCoord current = flood.top(); - flood.pop(); - int16_t vmat2 = MCache->veinMaterialAt(current); - tt = MCache->tiletypeAt(current); - if(!DFHack::isWallTerrain(tt)) - continue; - if(vmat2!=veinmat) - continue; - - // found a good tile, dig+unset material - DFHack::t_designation des = MCache->designationAt(current); - DFHack::t_designation des_minus; - DFHack::t_designation des_plus; - des_plus.whole = des_minus.whole = 0; - int16_t vmat_minus = -1; - int16_t vmat_plus = -1; - bool below = 0; - bool above = 0; - if(updown) - { - if(MCache->testCoord(current-1)) - { - below = 1; - des_minus = MCache->designationAt(current-1); - vmat_minus = MCache->veinMaterialAt(current-1); - } - - if(MCache->testCoord(current+1)) - { - above = 1; - des_plus = MCache->designationAt(current+1); - vmat_plus = MCache->veinMaterialAt(current+1); - } - } - if(MCache->testCoord(current)) - { - MCache->clearMaterialAt(current); - if(current.x < tx_max - 2) - { - flood.push(DFHack::DFCoord(current.x + 1, current.y, current.z)); - if(current.y < ty_max - 2) - { - flood.push(DFHack::DFCoord(current.x + 1, current.y + 1,current.z)); - flood.push(DFHack::DFCoord(current.x, current.y + 1,current.z)); - } - if(current.y > 1) - { - flood.push(DFHack::DFCoord(current.x + 1, current.y - 1,current.z)); - flood.push(DFHack::DFCoord(current.x, current.y - 1,current.z)); - } - } - if(current.x > 1) - { - flood.push(DFHack::DFCoord(current.x - 1, current.y,current.z)); - if(current.y < ty_max - 2) - { - flood.push(DFHack::DFCoord(current.x - 1, current.y + 1,current.z)); - flood.push(DFHack::DFCoord(current.x, current.y + 1,current.z)); - } - if(current.y > 1) - { - flood.push(DFHack::DFCoord(current.x - 1, current.y - 1,current.z)); - flood.push(DFHack::DFCoord(current.x, current.y - 1,current.z)); - } - } - if(updown) - { - if(current.z > 0 && below && vmat_minus == vmat2) - { - flood.push(current-1); - - if(des_minus.bits.dig == DFHack::designation_d_stair) - des_minus.bits.dig = DFHack::designation_ud_stair; - else - des_minus.bits.dig = DFHack::designation_u_stair; - MCache->setDesignationAt(current-1,des_minus); - - des.bits.dig = DFHack::designation_d_stair; - } - if(current.z < z_max - 1 && above && vmat_plus == vmat2) - { - flood.push(current+ 1); - - if(des_plus.bits.dig == DFHack::designation_u_stair) - des_plus.bits.dig = DFHack::designation_ud_stair; - else - des_plus.bits.dig = DFHack::designation_d_stair; - MCache->setDesignationAt(current+1,des_plus); - - if(des.bits.dig == DFHack::designation_d_stair) - des.bits.dig = DFHack::designation_ud_stair; - else - des.bits.dig = DFHack::designation_u_stair; - } - } - if(des.bits.dig == DFHack::designation_no) - des.bits.dig = DFHack::designation_default; - MCache->setDesignationAt(current,des); - } - } - MCache->WriteAll(); - delete MCache; - DF->Detach(); - if(temporary_terminal) - { - cout << "Done. Press any key to continue" << endl; - cin.ignore(); - } - return 0; -} - diff --git a/tools/supported/weather.cpp b/tools/supported/weather.cpp deleted file mode 100644 index 8e8a936bc..000000000 --- a/tools/supported/weather.cpp +++ /dev/null @@ -1,120 +0,0 @@ -// Just show some position data - -#include -#include -#include -#include -#include -#include -#include - -#define DFHACK_WANT_MISCUTILS -#define DFHACK_WANT_TILETYPES -#include - -using namespace DFHack; - -void printWeather(DFHack::WeatherType current) -{ - switch (current) - { - case CLEAR: - cout << "The sky is clear." << endl; - cout << "Options:" << endl; - cout << "'r' to make it rain." << endl; - cout << "'s' to make it snow." << endl; - break; - case RAINING: - cout << "It is raining." << endl; - cout << "Options:" << endl; - cout << "'c' to clear the sky." << endl; - cout << "'s' to make it snow." << endl; - break; - case SNOWING: - cout << "It is snowing." << endl; - cout << "Options:" << endl; - cout << "'c' to clear the sky." << endl; - cout << "'r' to make it rain." << endl; - break; - } - cout << "'q' to quit." << endl; - cout << "anything else to refresh" << endl; - cout << ">"; -} - -using namespace DFHack; -int main (int argc, char** argv) -{ - string command = ""; - bool quiet = false; - bool cmdarg = false; - for(int i = 1; i < argc; i++) - { - string test = argv[i]; - if(test == "-q") - { - quiet = true; - } - else - { - command = test; - cmdarg = true; - } - } - - DFHack::ContextManager DFMgr("Memory.xml"); - DFHack::Context *DF = DFMgr.getSingleContext(); - - try - { - DF->Attach(); - } - catch (std::exception& e) - { - std::cerr << e.what() << std::endl; - #ifndef LINUX_BUILD - cin.ignore(); - #endif - return 1; - } - - World *W = DF->getWorld(); - W->Start(); - bool end = false; - while(!end) - { - WeatherType current = (WeatherType) W->ReadCurrentWeather(); - DF->Resume(); - printWeather(current); - if (command == "") getline(cin, command); // only read from stdin if command hasn't been passed on the console - DF->Suspend(); - if(command == "c") - { - W->SetCurrentWeather(CLEAR); - } - else if(command == "r") - { - W->SetCurrentWeather(RAINING); - } - else if(command == "s") - { - W->SetCurrentWeather(SNOWING); - } - else if(command == "q") - { - end = true; - } - command = ""; - if(cmdarg) end = true; // exit the loop when a cmd line arg has been passed. - } - #ifndef LINUX_BUILD - if (!quiet) - { - std::cout << "Done. Press any key to continue" << std::endl; - cin.ignore(); - } - #endif - DF->Resume(); - DF->Detach(); - return 0; -}