mirror of
https://github.com/HarbourMasters/Shipwright
synced 2026-05-25 07:32:48 -04:00
Compare commits
954 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 36b42635d6 | |||
| 4a029cc6cf | |||
| 57ba36b063 | |||
| 4173eadae2 | |||
| 1b6dd8a0fe | |||
| dd6a8b5084 | |||
| f4c871e35c | |||
| 8e808c4305 | |||
| 03c3eef193 | |||
| 42a5f46e5e | |||
| 7878b8f3e4 | |||
| 7906d70485 | |||
| dd62d0882e | |||
| 6e88a3706c | |||
| d102506fba | |||
| 7c7f032e0e | |||
| da8f80bb28 | |||
| 63f763a556 | |||
| 83541f4605 | |||
| 43b7ca96d7 | |||
| c00edb928b | |||
| b0510d78f8 | |||
| fd3872ae30 | |||
| aa00cba76e | |||
| 18208cc993 | |||
| b310d675f1 | |||
| eb081dc719 | |||
| e883f27436 | |||
| f563ac733f | |||
| a133be625e | |||
| 06e8a5af41 | |||
| f1070a2e74 | |||
| 02c0caff4f | |||
| 2ad0b37fa5 | |||
| 6b6a352205 | |||
| 37ffc8b9c8 | |||
| d75b38d457 | |||
| 36e40665bb | |||
| 9804035dc0 | |||
| 973ec52b2a | |||
| d61b398f41 | |||
| af13595aae | |||
| 97211093f3 | |||
| 15e22349df | |||
| 8888fb2ec1 | |||
| dc3c0dd9c8 | |||
| 08915e5684 | |||
| 083ceb4423 | |||
| 87125ae334 | |||
| c487e4ba0b | |||
| 1b141fd68c | |||
| 694c6c9832 | |||
| c6a875eb5c | |||
| 677c4845f6 | |||
| 7fb8902e7f | |||
| 58c097cfb9 | |||
| 6265613bc7 | |||
| c21b2e8f00 | |||
| b3c7edcf76 | |||
| c2ff12c3e8 | |||
| dbc4d8199e | |||
| 0e1248f840 | |||
| 7a516c72c3 | |||
| a927a881fc | |||
| ac1a87730e | |||
| cf881d7d25 | |||
| 41eb6c585d | |||
| ee505fc47d | |||
| 7758749770 | |||
| da893a5b86 | |||
| e412a8b55e | |||
| 5a0b854c5c | |||
| bf2420f7d3 | |||
| 50d6836b4a | |||
| da677682cd | |||
| 11b6ce819d | |||
| 5ee86cb558 | |||
| 3a2fcc9604 | |||
| fde05e65c0 | |||
| 00fb12134a | |||
| fa8d64ec3a | |||
| b4740d131f | |||
| ec2222347e | |||
| 3d0d97d6b5 | |||
| 2b78bea475 | |||
| 28b7f23769 | |||
| 784cb98d7f | |||
| d47746eab1 | |||
| 936c493b9e | |||
| d628bafe29 | |||
| d83c6f1753 | |||
| e1b83b6eb4 | |||
| d2153d601c | |||
| 98be9a8472 | |||
| 5d2b5559c8 | |||
| b54f6daa27 | |||
| c5acef2957 | |||
| b5b5a58302 | |||
| d6d7ffd3da | |||
| 66c2fdaacd | |||
| f6fa3c74c7 | |||
| 22c963c0a0 | |||
| e97ba37a5e | |||
| b18cc9d628 | |||
| 978b325a30 | |||
| 006506240f | |||
| f712068a17 | |||
| 55e79cd9d2 | |||
| c9aafcf7c5 | |||
| 34d6212ab2 | |||
| e76890a796 | |||
| e2e0a070ea | |||
| d53c8588e2 | |||
| 941cf65227 | |||
| e1f95a5ad9 | |||
| 18a26b480e | |||
| 67bbeca809 | |||
| eda5a6ac91 | |||
| a2d4f4766d | |||
| a9f3aedf8e | |||
| 9686a7ca4c | |||
| e80e3440e1 | |||
| 4cda92462a | |||
| 4a0269b3b1 | |||
| 4d81c28738 | |||
| 3b844375b7 | |||
| f1dc980de8 | |||
| 6daf357fd9 | |||
| d2fa0d6485 | |||
| b14fb37b81 | |||
| edb5261b07 | |||
| 8118947ab0 | |||
| 0ce0ab1260 | |||
| 64aca78450 | |||
| 584a4ad818 | |||
| bf505dba5c | |||
| 776219fb52 | |||
| a572c11f4f | |||
| 05136c13b7 | |||
| c2fed1a382 | |||
| 90067be132 | |||
| 80863fc7f2 | |||
| c0b9171f98 | |||
| b70ad81f57 | |||
| 0573a1b2ac | |||
| b774252f0c | |||
| 3792b03a7d | |||
| 927ffd0b8b | |||
| d6ebce068d | |||
| 4680641514 | |||
| ca08680a12 | |||
| 70d7d66d0c | |||
| d735616020 | |||
| 168e84498f | |||
| ed1708508a | |||
| e12e1d67c6 | |||
| d39a1a0bdf | |||
| f87f636828 | |||
| eed3942b81 | |||
| f5112a709a | |||
| f6bb46a0dc | |||
| 51e4485966 | |||
| ad8179287e | |||
| 0971b9aa78 | |||
| 9bc6aac81e | |||
| ad3efccb88 | |||
| f4c1332159 | |||
| 72981221ad | |||
| 6723f4c7c2 | |||
| f9621dcc17 | |||
| 10ce3c88fb | |||
| ea92a2e123 | |||
| b43eb2d0bd | |||
| d09172d74d | |||
| 6b0338a37d | |||
| 6206cd7db0 | |||
| 01b7fedc35 | |||
| 71b1db1fb6 | |||
| b4614acf70 | |||
| cd37a56161 | |||
| eb632ccb50 | |||
| 0f2e7db8e0 | |||
| a3d0962054 | |||
| 46a421f933 | |||
| b7f9960a60 | |||
| b46c7a0607 | |||
| ee9ea3f2bd | |||
| a31256d956 | |||
| 7a9160ed78 | |||
| 42bce9d33e | |||
| fabe051d3d | |||
| 8945b2ed48 | |||
| d575a3dda6 | |||
| 37dd045bd2 | |||
| 651e0ddad4 | |||
| 68e7f2e6c1 | |||
| b989ef4f7f | |||
| 789cf13aae | |||
| 86faa42acf | |||
| d623ac5918 | |||
| 4a3e43f73f | |||
| 094388187f | |||
| 791f7774a5 | |||
| e88000aeb0 | |||
| d34a6d7666 | |||
| 3bcc9514ab | |||
| 15fba97949 | |||
| 6766719969 | |||
| 6484d9354d | |||
| 23fb885e09 | |||
| 81cd594704 | |||
| 797d9fab7c | |||
| 96c2033361 | |||
| 7b11509010 | |||
| a4804d7290 | |||
| 5751b5c278 | |||
| f97f9ae422 | |||
| c7ccd6dbff | |||
| 1f351418e1 | |||
| e4b58e5a0c | |||
| 0d9c390526 | |||
| b924831eba | |||
| 317de33a8b | |||
| fa090c51f6 | |||
| e63d84bd7d | |||
| 5581f45050 | |||
| b6934b34db | |||
| 5453c68399 | |||
| 4ea7f8371f | |||
| c803ff65ce | |||
| 0e10b59307 | |||
| 4bf4ad3359 | |||
| f80ba4102a | |||
| a4334ecb02 | |||
| a8fea61bda | |||
| 1f5d323d89 | |||
| cf639b1d51 | |||
| 59baf24dc6 | |||
| 9b33827d02 | |||
| 9afbe42720 | |||
| 7f233de502 | |||
| ed9378375d | |||
| e51e7f3d45 | |||
| cb2410d9c5 | |||
| b2ac01bc98 | |||
| 1794683d3a | |||
| c70e3f38b1 | |||
| aadabe1ecd | |||
| 7f58ef14ee | |||
| 8efeceb236 | |||
| 9a126dec4e | |||
| 7ef3fff869 | |||
| 1ebca42f46 | |||
| 93d0d7443a | |||
| c23457d666 | |||
| d397c1d871 | |||
| 2f5f089e7f | |||
| facd1723f8 | |||
| 5f913cb9bf | |||
| 739434e3e4 | |||
| 78ad282056 | |||
| d61d4e508a | |||
| bd86c792c3 | |||
| dffcbb035e | |||
| 0f7a88bd5a | |||
| 97adc4a7f2 | |||
| 6190388164 | |||
| 8c9d067657 | |||
| 6d3d5e7da5 | |||
| 212d774613 | |||
| e68fac14c8 | |||
| 7675309e3f | |||
| 4ce19e1448 | |||
| fd379896d6 | |||
| 8431cddb14 | |||
| 2d60c772bf | |||
| 6d0d608e38 | |||
| fe02818d51 | |||
| db33604171 | |||
| 27e0f19dac | |||
| b89cc25df3 | |||
| 7267b60a26 | |||
| 67d5ba08ab | |||
| 1de525900d | |||
| 352b46c1f5 | |||
| 1bf7771981 | |||
| c1659d3dcf | |||
| b3c3882b12 | |||
| d80742d882 | |||
| a007bfd14a | |||
| 7eba85c3b4 | |||
| d9443d98f0 | |||
| 73447f05ab | |||
| 85c4cd3863 | |||
| cec0bc6fca | |||
| 53229f0905 | |||
| 18013e1ae0 | |||
| 61c68666d6 | |||
| bb8152b376 | |||
| 480053dfaa | |||
| eae97cff79 | |||
| 4d30cc50a1 | |||
| 4ed82c71dc | |||
| 9389ceb8c1 | |||
| b4f4e36acb | |||
| d332c3d9d6 | |||
| b59c9cdf02 | |||
| 8c25e9a992 | |||
| 4f29833476 | |||
| d648c7275c | |||
| a1ed35e5bd | |||
| 206f63f9e6 | |||
| 7a45380123 | |||
| 99ecccfaab | |||
| 7dd6f59b8b | |||
| 361a986b8e | |||
| b98c8b4abb | |||
| 582f084973 | |||
| 2f9874c68f | |||
| 47ad3bdc47 | |||
| 9d12813282 | |||
| 3bb234e6a6 | |||
| 44bf5af33a | |||
| 0193489b00 | |||
| a6092c21d4 | |||
| 02c50cd0c4 | |||
| fa0a66695c | |||
| 6818247317 | |||
| e8d2b0cceb | |||
| 5a97e9f0de | |||
| d0968a99c1 | |||
| 0ed8c277e8 | |||
| 477cf7f6ec | |||
| 59dc52f394 | |||
| 822476373b | |||
| 4c9e4b2d84 | |||
| 2ff5d54592 | |||
| cd01e8b778 | |||
| 8bdc4458c7 | |||
| 5f718932e6 | |||
| 3fc783b832 | |||
| c36b891d9b | |||
| fb64a11d38 | |||
| 26a4622982 | |||
| 257cd92208 | |||
| 2d9129084e | |||
| d6ce37ce7e | |||
| 6da8ffae11 | |||
| 62f56a4791 | |||
| 294684213a | |||
| ab691e64db | |||
| 3a9dd95abc | |||
| 706e57dd7b | |||
| d180b8a299 | |||
| 50bc5de2da | |||
| 4a15e113f7 | |||
| 1160fb2b15 | |||
| 27b3644335 | |||
| b6af684583 | |||
| 1ca64b1fdf | |||
| 3c1d28b081 | |||
| 5d0452d1dc | |||
| 87ed5fedfd | |||
| d05295aad2 | |||
| 9f2eb46663 | |||
| c1155bb08c | |||
| 661946b4f5 | |||
| 780e9f4669 | |||
| a33c3d606a | |||
| a21998c489 | |||
| dca922ade8 | |||
| 5f6d0939bd | |||
| ffb3523cb5 | |||
| 01347dc9f9 | |||
| 62d9390c9b | |||
| 44bdfe552c | |||
| d3c2c0ec7d | |||
| bd787719b8 | |||
| d4bd953c0b | |||
| 474eee5d98 | |||
| 38ecb6cfff | |||
| ccf1bffd4f | |||
| 1de5b72802 | |||
| bd95fe616b | |||
| d299284751 | |||
| b3d3148383 | |||
| 2ad78887b9 | |||
| 1ca12feaed | |||
| 84236e7ac3 | |||
| 1cbaa592d0 | |||
| df756b2ce0 | |||
| c7c16c39b0 | |||
| 059045481c | |||
| 44dbd3a8a9 | |||
| 753031df17 | |||
| 52f22275e3 | |||
| c19beca980 | |||
| eb49053e73 | |||
| d08b1d277e | |||
| e41873fff4 | |||
| dfa929a16f | |||
| 880e3928cf | |||
| 41d1bbe137 | |||
| e519caa554 | |||
| 1d208c7dc2 | |||
| 2edc81ee2d | |||
| 21c585b2ce | |||
| b5dc097587 | |||
| cddca2700a | |||
| 17b3f65276 | |||
| 75a4d2cf99 | |||
| 795ee54f2b | |||
| 3633bdeeaf | |||
| c5f66373c3 | |||
| 2d1aa1d13a | |||
| 32abe61554 | |||
| 235cef6abf | |||
| e871b53afc | |||
| dabb83fccf | |||
| 046b7e8949 | |||
| 97d1f0e46c | |||
| edfa369639 | |||
| 169f757954 | |||
| 4745f73655 | |||
| 660897ff63 | |||
| 37afdbd84c | |||
| 9679075cba | |||
| 5e5e57ea8f | |||
| 9118788149 | |||
| cc28a1444d | |||
| c65a40f432 | |||
| 9e8335c1f0 | |||
| 10cb23ad74 | |||
| 2daddd8a5a | |||
| d45968270a | |||
| e04b2c80b6 | |||
| 1ed45e1433 | |||
| ee1270f346 | |||
| 98c771cf2c | |||
| 69d2b5b3a3 | |||
| f57a912ca1 | |||
| 4eaf70b859 | |||
| 3f2111a3e6 | |||
| 1165e70434 | |||
| 93bea4c151 | |||
| 46df17e29f | |||
| 9c57ed6642 | |||
| 8417db65c7 | |||
| 16f52c03b9 | |||
| 1ed58c4a99 | |||
| cd096ce5e9 | |||
| 06338d864f | |||
| 873995199b | |||
| b2b7cf2374 | |||
| 0ae5c4c0f2 | |||
| a81ecfcfcc | |||
| 31511af130 | |||
| d9277530a2 | |||
| 219804cbe4 | |||
| cb6876792e | |||
| f7db8868d0 | |||
| 379649bead | |||
| 14a87f83b3 | |||
| e9ba8f734f | |||
| 248f49b3bf | |||
| 2b72b10356 | |||
| 7c6d8a6b9c | |||
| 4d65a5ff73 | |||
| cff73cccf0 | |||
| 7b04f67884 | |||
| 97ad234c8c | |||
| 2159c006fc | |||
| c9fdf8a480 | |||
| 3de58774ba | |||
| 66ec623542 | |||
| 3aa93b9855 | |||
| eab3b5bd7f | |||
| 37bf9b36ad | |||
| c25089b98f | |||
| 0fd779f002 | |||
| 6b50b50a6c | |||
| c9497060e9 | |||
| a7c94bba8c | |||
| 4ccc2bb12f | |||
| e3267a4e9b | |||
| 926fd3f406 | |||
| e04bc6037e | |||
| d4c1c40c1d | |||
| 89e07f8dbb | |||
| d1a2f98524 | |||
| 24856a6e8c | |||
| 42383a1fe1 | |||
| 4371b58223 | |||
| ef3dd96eb4 | |||
| ee184b5a51 | |||
| a1f92d76ab | |||
| 60e713855a | |||
| 0f34b991aa | |||
| 1c9195373d | |||
| c78d2828a7 | |||
| 4515fac467 | |||
| 260669f981 | |||
| 58f3786a35 | |||
| 38c7d66788 | |||
| e8bfa61fc2 | |||
| 537722d57a | |||
| a34b2b56fe | |||
| fd0fb25de1 | |||
| a2d64864dd | |||
| 2fbdd056ed | |||
| 1ad2931f80 | |||
| 306cfd0654 | |||
| 2b99e65d24 | |||
| 0b7137b8b0 | |||
| c5e84c17a5 | |||
| f865db5444 | |||
| a5df9dddf0 | |||
| a9c3c7541e | |||
| a31be1f3d1 | |||
| e5b59742ae | |||
| 8615418630 | |||
| b8602994fb | |||
| 923bf3b0e4 | |||
| 21142bdb26 | |||
| 5ce2ecd6c8 | |||
| b730af5e8a | |||
| f9b831d5c0 | |||
| e7c2aff97e | |||
| 668f9bee10 | |||
| 818d5f90a8 | |||
| d63c0077ee | |||
| c14e4f387c | |||
| 39a50a406b | |||
| 9f5618def4 | |||
| 82f790d082 | |||
| a58ddd4f55 | |||
| cc22fe17bb | |||
| 447e68a659 | |||
| 0f84682bc0 | |||
| 284a7fba95 | |||
| b96bd4ea9d | |||
| 8535568f53 | |||
| 1f1de82bb8 | |||
| 65016499ab | |||
| efd4b26f3d | |||
| 0fc75bb873 | |||
| 375932f43b | |||
| fd06827e2b | |||
| 57fb04accc | |||
| ba74653f61 | |||
| bd22074ec8 | |||
| e42b18cf71 | |||
| 77e7080a8c | |||
| 77fc202694 | |||
| d3436fc1e4 | |||
| d5db4a86bd | |||
| f8e3dcd7c0 | |||
| 1435b5d314 | |||
| abcf713cc1 | |||
| 5bf4128add | |||
| 53fc151453 | |||
| 14df96eacd | |||
| a7ed748973 | |||
| 43503ead83 | |||
| 39d8b77b02 | |||
| 36b9b9519d | |||
| 7d0af303ec | |||
| 5549ad9388 | |||
| 950f954c89 | |||
| b56426a67d | |||
| 45cb350b7a | |||
| b4eebbbcd6 | |||
| 73ff7ef3da | |||
| a142d94c36 | |||
| 4e75488567 | |||
| e945a86d46 | |||
| 5a872f85e1 | |||
| 8a6ee00a21 | |||
| b0278de3a8 | |||
| 3a65119267 | |||
| d6eb59d0af | |||
| 1763d0bfce | |||
| 029d7bcda3 | |||
| 8d4b15325a | |||
| f7bcbe3049 | |||
| e66c4751ea | |||
| 5dc5c85588 | |||
| dd42cca2cf | |||
| bb90be6748 | |||
| 3e6307bf96 | |||
| 36d37d97bd | |||
| 587c46cacf | |||
| ac8acaeba4 | |||
| 93e69c924d | |||
| 73ebcf2b1b | |||
| 72ebeaad3b | |||
| f29fb01887 | |||
| 3d24f3f595 | |||
| bf0935a5a2 | |||
| 1f1b81ab40 | |||
| b9a8118e33 | |||
| f581e3e79f | |||
| 2a2ef17302 | |||
| 34ef1d2fd0 | |||
| bb6f5abbbf | |||
| 960a29e513 | |||
| aeaaa54e0d | |||
| 3f10195c0e | |||
| c930bd0138 | |||
| 0a629ea6e9 | |||
| 6c94c8690e | |||
| 510ef9b60c | |||
| 2b40e66fa4 | |||
| 28073fbb19 | |||
| ef2f4f799c | |||
| c49cee3521 | |||
| b3e299dbde | |||
| 941c19f2c3 | |||
| bd68e29bfb | |||
| 4c99fc497c | |||
| b8334e5757 | |||
| ce36822c80 | |||
| 1ec0161247 | |||
| dcb1b59c1b | |||
| 510a38a6bc | |||
| 7bca63a800 | |||
| aa98408e00 | |||
| 416173fa79 | |||
| 99e3d9a899 | |||
| 5d3b21bd2b | |||
| a0e9ca9a9c | |||
| 262d067870 | |||
| 44874a0763 | |||
| 9fe268abc7 | |||
| 114c6e01d9 | |||
| 746c7a5303 | |||
| b8c9f7f1ce | |||
| 3cd5d75f6f | |||
| 08bd76d25c | |||
| 5b43e4652f | |||
| d0ce76e5c6 | |||
| 19ac30b918 | |||
| b3396446af | |||
| 3dc33b6f84 | |||
| 008af18951 | |||
| 5fcddaa066 | |||
| 15b28370fc | |||
| 9e313dd18b | |||
| bff206e30b | |||
| c5df54ae27 | |||
| c82df705a6 | |||
| 3e1cb17e22 | |||
| 83aee6d7e1 | |||
| b66174c3ec | |||
| 919cad0e51 | |||
| 61760401bc | |||
| b83cd172b2 | |||
| b889880cc7 | |||
| 9cf537eaff | |||
| 36eb47e631 | |||
| 4ddb2d81b7 | |||
| 405e6019d2 | |||
| 4e9ef65967 | |||
| 2a1145785e | |||
| 04bb9cd48e | |||
| 45e18f9aca | |||
| c927403fa5 | |||
| fde3c8e98f | |||
| da724c0632 | |||
| 1225a381ab | |||
| a8a3516e59 | |||
| 129882c79f | |||
| 8b63cf93d8 | |||
| 8a7aa5fa53 | |||
| 9e851ebd93 | |||
| aa66e01740 | |||
| 394939347c | |||
| bda5ba8cbc | |||
| f00178e45d | |||
| a46bee9535 | |||
| a7d8362787 | |||
| 1cb3cd5509 | |||
| 1feef9d5d6 | |||
| f3dda92e78 | |||
| 4f492e9f63 | |||
| 96a18391a8 | |||
| 35e15389ac | |||
| 9bd225f3bf | |||
| f1b81b7f82 | |||
| 257cc41d2b | |||
| e39961dc4b | |||
| de86227d01 | |||
| 00025f2318 | |||
| e4fe289f70 | |||
| 24567eeeb6 | |||
| b38e0a6b15 | |||
| 55fa1996ba | |||
| 6478df046a | |||
| ffc22fe8c4 | |||
| 5b7dad1de2 | |||
| c6622e6c87 | |||
| cf872d1e0d | |||
| ac2127094b | |||
| 3444868b95 | |||
| d01d6ff3d1 | |||
| 376860af9d | |||
| e87921f6be | |||
| 8cbc4d27eb | |||
| 596d5b478b | |||
| f9c86c9821 | |||
| d87df5f670 | |||
| 6c34c03cdf | |||
| c08439a562 | |||
| 38ec6ea702 | |||
| 065291d2c7 | |||
| 95cfce0ded | |||
| af8c5ab978 | |||
| b5d5930fed | |||
| 72fcd19a9e | |||
| 3b1d82c3ca | |||
| c92524a90e | |||
| 51e58b9e13 | |||
| 5ec6c01a78 | |||
| e0ff6311ef | |||
| d42c0ca23f | |||
| a4460c26ef | |||
| e1affbdf9a | |||
| 902b842bcb | |||
| 23946d5798 | |||
| 05340a926a | |||
| 0bfe2fec67 | |||
| 332f8f93fb | |||
| 0320107fc0 | |||
| fc7da35054 | |||
| 6f5ce7d715 | |||
| 0067a69795 | |||
| ca6f8f8963 | |||
| e4ce541fcf | |||
| 22a305028f | |||
| fa21734a98 | |||
| fca79ae92a | |||
| ea0ea0366b | |||
| daec428cb3 | |||
| 08c161fd13 | |||
| 29d4cd27c4 | |||
| 7913398110 | |||
| ccab94c765 | |||
| 90a33e9756 | |||
| 14ca2ab377 | |||
| aaa1fafd51 | |||
| 83c07645f4 | |||
| 533c216ad3 | |||
| 4669235f62 | |||
| 78b3c1ae47 | |||
| 72125bbd1e | |||
| a35c4abc30 | |||
| fb270dbab9 | |||
| 5fd0100ad0 | |||
| 17e09d5fd3 | |||
| 40f13ff2e6 | |||
| d1357b902d | |||
| 0ce37a4126 | |||
| e56af6a7a3 | |||
| b359d642f4 | |||
| 2192ae0a25 | |||
| 0b2c264a60 | |||
| 0993337721 | |||
| 6ccd3ede1a | |||
| a3cf852267 | |||
| 226dd3a828 | |||
| 2115111ea8 | |||
| c0cd3b5400 | |||
| 49e15d342d | |||
| bb44350a8f | |||
| 6229233b5f | |||
| d36b641bfb | |||
| bc6def77a4 | |||
| 72bacabf45 | |||
| 52091c2912 | |||
| d3c869871d | |||
| 7a4da43d7b | |||
| 9f82457830 | |||
| 8bb988675d | |||
| 076887e71f | |||
| d8d1388ec6 | |||
| bd6e637fee | |||
| 6dbb085a82 | |||
| b9c5b34eba | |||
| a72ebbe84d | |||
| 3e01b25573 | |||
| f217b9bb97 | |||
| 4e15f0b3d1 | |||
| e6c959e500 | |||
| bc65a38a55 | |||
| 92c8ecb726 | |||
| 247360cbf0 | |||
| 2478ed86eb | |||
| 2e84a351b1 | |||
| 24fd3f1cdd | |||
| 2b0af54f88 | |||
| 90f849dfcf | |||
| 45e5e5ca72 | |||
| bcd57f45b2 | |||
| 0a8db6d8a6 | |||
| b3d19eee3a | |||
| 3bc0564d9a | |||
| a3a65a1722 | |||
| 635fb71b76 | |||
| 5746305157 | |||
| a790638bf5 | |||
| fdd613f41e | |||
| 9eb5ff6136 | |||
| e2c801a2ac | |||
| 0adad641a6 | |||
| 4aeed97e3a | |||
| 1719986a35 | |||
| 888662267f | |||
| 3013c18e13 | |||
| 8ba5d827c5 | |||
| c7e552fc5f | |||
| bf2825e9a5 | |||
| a5651742ba | |||
| a12e8b68ae | |||
| f8b47b36bf | |||
| b054abbd65 | |||
| 234283f465 | |||
| fca0566cef | |||
| 3f74e82a22 | |||
| 6d2e1a603f | |||
| 108cd8efc8 | |||
| fe3e534938 | |||
| ea78c7ea1e | |||
| 09432ee7f4 | |||
| 2e1a0b5144 | |||
| e55dcfa0a0 | |||
| 091983b3e3 | |||
| 47331a904f | |||
| 3d85fa1f3f | |||
| 1b7a613054 | |||
| 5bb7e94cc4 | |||
| f1e85d1e72 | |||
| c5f120b6f8 | |||
| 8c18b4b057 | |||
| 43294d66b5 | |||
| 18d2bac409 | |||
| e646f80f41 | |||
| c99f10169e | |||
| d0c5e7aa0e | |||
| e4dd7027a9 | |||
| d009c2a539 | |||
| 8526e3ee2a | |||
| 589557be9c | |||
| 5b52e7e570 | |||
| 86869085cd | |||
| ffaafb8b4e | |||
| 4f72923fcd | |||
| 4a8a7f5c7d | |||
| c7ad92e09a | |||
| 444026038e | |||
| 8828d8a170 | |||
| 4c74acdd29 | |||
| bd5a563dae | |||
| c66c874549 | |||
| 700bce684d | |||
| 2425ffe27b | |||
| f5d983d06b | |||
| 73194eee14 | |||
| 60cbfd67be | |||
| 02930be9ee | |||
| eea5135d62 | |||
| 486f673df5 | |||
| 1f663dda7b | |||
| 9c2c443a6a | |||
| 0e6ca5361e | |||
| b82871e62f | |||
| 4869eea968 | |||
| 6991549cde | |||
| f5f2205d0f | |||
| 0ea9612b7e | |||
| eecad3dc15 | |||
| baf366c086 | |||
| caebcc4f9a | |||
| 53e45e879e | |||
| 3c471f2fc5 | |||
| 1f3a6b928f | |||
| ffa4a11148 | |||
| 576842ac74 | |||
| bb3227a7c2 | |||
| 17858fb67c | |||
| eb97186f73 | |||
| 5a40f39494 | |||
| 73ede53447 | |||
| 7d26b322f5 | |||
| 6860600648 | |||
| b540b7fcfc | |||
| 0ee779f94a | |||
| 8db83099bb | |||
| f05d006479 | |||
| f65486d82d | |||
| ffeb2afcb7 | |||
| f5a3d3c4bf | |||
| f66178772d | |||
| 0ec9fc2ecf | |||
| a36243f95f | |||
| a01392c40e | |||
| ceef4a9453 | |||
| fe6dbd2a5b | |||
| a11038f515 | |||
| 1dcd24e7e2 | |||
| 1aa08caade | |||
| 0ef2d0c750 | |||
| e164819339 | |||
| 03a5c7ed29 | |||
| beb454d000 | |||
| 9a7c63c46c | |||
| 06fd7f662a | |||
| 3e8c48c116 | |||
| f20ab2c260 | |||
| 64327fafb1 | |||
| c1eb71fa33 | |||
| a59317627f | |||
| e8837cf247 | |||
| 407a9c5371 | |||
| 2b4b44f698 | |||
| a029827944 | |||
| 1e938866ac | |||
| 6acb8d20b4 | |||
| ea91d36351 | |||
| 6f49bc9a56 | |||
| 529c5f642d | |||
| c80f9fbd57 | |||
| 572e9fb9d0 | |||
| e7e80c2c95 | |||
| 8bb9dd8aba | |||
| 438fa8954c | |||
| 5d967f8e8c | |||
| 511397c34b | |||
| 5505336a8a | |||
| 98ddacef01 | |||
| 6aa8894125 | |||
| e1be01cb6d | |||
| f3fe43b912 | |||
| 25468cf722 | |||
| dae8035314 | |||
| 4a24b5afb4 | |||
| a9b56e78e2 | |||
| d528160684 | |||
| 3ab0c45bdb | |||
| 2722b688be | |||
| 2da6a2a78f | |||
| 8a565f910a | |||
| 2a92ae5278 | |||
| 4a05b32755 | |||
| f93d3c1af6 |
+447
@@ -0,0 +1,447 @@
|
||||
# Cache files
|
||||
__pycache__/
|
||||
.pyc
|
||||
.DS_Store
|
||||
|
||||
# Text editor remnants
|
||||
.vscode/
|
||||
.vs/
|
||||
.idea/
|
||||
cmake-build-debug
|
||||
venv/
|
||||
.cache/
|
||||
|
||||
# Project-specific ignores
|
||||
build/
|
||||
expected/
|
||||
notes/
|
||||
baserom/
|
||||
docs/doxygen/
|
||||
*.elf
|
||||
*.sra
|
||||
*.z64
|
||||
*.n64
|
||||
*.v64
|
||||
*.map
|
||||
*.dump
|
||||
out.txt
|
||||
*.sln
|
||||
*.vcxproj
|
||||
*.vcxproj.user
|
||||
*.vcxproj.filters
|
||||
|
||||
# Tool artifacts
|
||||
tools/mipspro7.2_compiler/
|
||||
tools/overlayhelpers/batchdisasm/output/*
|
||||
tools/overlayhelpers/batchdisasm/output2/*
|
||||
tools/overlayhelpers/batchdisasm/mipsdisasm/*
|
||||
tools/disasm/output/*
|
||||
tools/asmsplitter/asm/*
|
||||
tools/asmsplitter/c/*
|
||||
ctx.c
|
||||
tools/*dSYM/
|
||||
graphs/
|
||||
|
||||
# Assets
|
||||
*.png
|
||||
*.jpg
|
||||
*.mdli
|
||||
*.anmi
|
||||
*.obj
|
||||
*.mtl
|
||||
*.fbx
|
||||
!*_custom*
|
||||
.extracted-assets.json
|
||||
|
||||
# Docs
|
||||
!docs/tutorial/
|
||||
|
||||
# Per-user configuration
|
||||
.python-version
|
||||
|
||||
|
||||
## Ignore Visual Studio temporary files, build results, and
|
||||
## files generated by popular Visual Studio add-ons.
|
||||
##
|
||||
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
|
||||
|
||||
# User-specific files
|
||||
*.suo
|
||||
*.user
|
||||
*.userosscache
|
||||
*.sln.docstates
|
||||
|
||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||
*.userprefs
|
||||
|
||||
# Build results
|
||||
[Dd]ebug/
|
||||
[Dd]ebugPublic/
|
||||
[Rr]elease/
|
||||
[Rr]eleases/
|
||||
x64/
|
||||
x86/
|
||||
bld/
|
||||
[Bb]in/
|
||||
[Oo]bj/
|
||||
[Ll]og/
|
||||
|
||||
# Visual Studio 2015/2017 cache/options directory
|
||||
.vs/
|
||||
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||
#wwwroot/
|
||||
|
||||
# Visual Studio 2017 auto generated files
|
||||
Generated\ Files/
|
||||
|
||||
# MSTest test Results
|
||||
[Tt]est[Rr]esult*/
|
||||
[Bb]uild[Ll]og.*
|
||||
|
||||
# NUNIT
|
||||
*.VisualState.xml
|
||||
TestResult.xml
|
||||
|
||||
# Build Results of an ATL Project
|
||||
[Dd]ebugPS/
|
||||
[Rr]eleasePS/
|
||||
dlldata.c
|
||||
|
||||
# Benchmark Results
|
||||
BenchmarkDotNet.Artifacts/
|
||||
|
||||
# .NET Core
|
||||
project.lock.json
|
||||
project.fragment.lock.json
|
||||
artifacts/
|
||||
**/Properties/launchSettings.json
|
||||
|
||||
# StyleCop
|
||||
StyleCopReport.xml
|
||||
|
||||
# Files built by Visual Studio
|
||||
*_i.c
|
||||
*_p.c
|
||||
*_i.h
|
||||
*.ilk
|
||||
*.meta
|
||||
*.obj
|
||||
*.iobj
|
||||
*.pch
|
||||
*.pdb
|
||||
*.ipdb
|
||||
*.pgc
|
||||
*.pgd
|
||||
*.rsp
|
||||
*.sbr
|
||||
*.tlb
|
||||
*.tli
|
||||
*.tlh
|
||||
*.tmp
|
||||
*.tmp_proj
|
||||
*.log
|
||||
*.vspscc
|
||||
*.vssscc
|
||||
.builds
|
||||
*.pidb
|
||||
*.svclog
|
||||
*.scc
|
||||
|
||||
# Chutzpah Test files
|
||||
_Chutzpah*
|
||||
|
||||
# Visual C++ cache files
|
||||
ipch/
|
||||
*.aps
|
||||
*.ncb
|
||||
*.opendb
|
||||
*.opensdf
|
||||
*.sdf
|
||||
*.cachefile
|
||||
*.VC.db
|
||||
*.VC.VC.opendb
|
||||
|
||||
# Visual Studio profiler
|
||||
*.psess
|
||||
*.vsp
|
||||
*.vspx
|
||||
*.sap
|
||||
|
||||
# Visual Studio Trace Files
|
||||
*.e2e
|
||||
|
||||
# TFS 2012 Local Workspace
|
||||
$tf/
|
||||
|
||||
# Guidance Automation Toolkit
|
||||
*.gpState
|
||||
|
||||
# ReSharper is a .NET coding add-in
|
||||
_ReSharper*/
|
||||
*.[Rr]e[Ss]harper
|
||||
*.DotSettings.user
|
||||
|
||||
# JustCode is a .NET coding add-in
|
||||
.JustCode
|
||||
|
||||
# TeamCity is a build add-in
|
||||
_TeamCity*
|
||||
|
||||
# DotCover is a Code Coverage Tool
|
||||
*.dotCover
|
||||
|
||||
# AxoCover is a Code Coverage Tool
|
||||
.axoCover/*
|
||||
!.axoCover/settings.json
|
||||
|
||||
# Visual Studio code coverage results
|
||||
*.coverage
|
||||
*.coveragexml
|
||||
|
||||
# NCrunch
|
||||
_NCrunch_*
|
||||
.*crunch*.local.xml
|
||||
nCrunchTemp_*
|
||||
|
||||
# MightyMoose
|
||||
*.mm.*
|
||||
AutoTest.Net/
|
||||
|
||||
# Web workbench (sass)
|
||||
.sass-cache/
|
||||
|
||||
# Installshield output folder
|
||||
[Ee]xpress/
|
||||
|
||||
# DocProject is a documentation generator add-in
|
||||
DocProject/buildhelp/
|
||||
DocProject/Help/*.HxT
|
||||
DocProject/Help/*.HxC
|
||||
DocProject/Help/*.hhc
|
||||
DocProject/Help/*.hhk
|
||||
DocProject/Help/*.hhp
|
||||
DocProject/Help/Html2
|
||||
DocProject/Help/html
|
||||
|
||||
# Click-Once directory
|
||||
publish/
|
||||
|
||||
# Publish Web Output
|
||||
*.[Pp]ublish.xml
|
||||
*.azurePubxml
|
||||
# Note: Comment the next line if you want to checkin your web deploy settings,
|
||||
# but database connection strings (with potential passwords) will be unencrypted
|
||||
*.pubxml
|
||||
*.publishproj
|
||||
|
||||
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
||||
# checkin your Azure Web App publish settings, but sensitive information contained
|
||||
# in these scripts will be unencrypted
|
||||
PublishScripts/
|
||||
|
||||
# NuGet Packages
|
||||
*.nupkg
|
||||
# The packages folder can be ignored because of Package Restore
|
||||
**/[Pp]ackages/*
|
||||
# except build/, which is used as an MSBuild target.
|
||||
!**/[Pp]ackages/build/
|
||||
# Uncomment if necessary however generally it will be regenerated when needed
|
||||
#!**/[Pp]ackages/repositories.config
|
||||
# NuGet v3's project.json files produces more ignorable files
|
||||
*.nuget.props
|
||||
*.nuget.targets
|
||||
|
||||
# Microsoft Azure Build Output
|
||||
csx/
|
||||
*.build.csdef
|
||||
|
||||
# Microsoft Azure Emulator
|
||||
ecf/
|
||||
rcf/
|
||||
|
||||
# Windows Store app package directories and files
|
||||
AppPackages/
|
||||
BundleArtifacts/
|
||||
Package.StoreAssociation.xml
|
||||
_pkginfo.txt
|
||||
*.appx
|
||||
|
||||
# Visual Studio cache files
|
||||
# files ending in .cache can be ignored
|
||||
*.[Cc]ache
|
||||
# but keep track of directories ending in .cache
|
||||
!*.[Cc]ache/
|
||||
|
||||
# Others
|
||||
ClientBin/
|
||||
~$*
|
||||
*~
|
||||
*.dbmdl
|
||||
*.dbproj.schemaview
|
||||
*.jfm
|
||||
*.pfx
|
||||
*.publishsettings
|
||||
orleans.codegen.cs
|
||||
|
||||
# Including strong name files can present a security risk
|
||||
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
|
||||
#*.snk
|
||||
|
||||
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
||||
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
||||
#bower_components/
|
||||
|
||||
# RIA/Silverlight projects
|
||||
Generated_Code/
|
||||
|
||||
# Backup & report files from converting an old project file
|
||||
# to a newer Visual Studio version. Backup files are not needed,
|
||||
# because we have git ;-)
|
||||
_UpgradeReport_Files/
|
||||
Backup*/
|
||||
UpgradeLog*.XML
|
||||
UpgradeLog*.htm
|
||||
ServiceFabricBackup/
|
||||
*.rptproj.bak
|
||||
|
||||
# SQL Server files
|
||||
*.mdf
|
||||
*.ldf
|
||||
*.ndf
|
||||
|
||||
# Business Intelligence projects
|
||||
*.rdl.data
|
||||
*.bim.layout
|
||||
*.bim_*.settings
|
||||
*.rptproj.rsuser
|
||||
|
||||
# Microsoft Fakes
|
||||
FakesAssemblies/
|
||||
|
||||
# GhostDoc plugin setting file
|
||||
*.GhostDoc.xml
|
||||
|
||||
# Node.js Tools for Visual Studio
|
||||
.ntvs_analysis.dat
|
||||
node_modules/
|
||||
|
||||
# Visual Studio 6 build log
|
||||
*.plg
|
||||
|
||||
# Visual Studio 6 workspace options file
|
||||
*.opt
|
||||
|
||||
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
||||
*.vbw
|
||||
|
||||
# Visual Studio LightSwitch build output
|
||||
**/*.HTMLClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/ModelManifest.xml
|
||||
**/*.Server/GeneratedArtifacts
|
||||
**/*.Server/ModelManifest.xml
|
||||
_Pvt_Extensions
|
||||
|
||||
# Paket dependency manager
|
||||
.paket/paket.exe
|
||||
paket-files/
|
||||
|
||||
# FAKE - F# Make
|
||||
.fake/
|
||||
|
||||
# JetBrains Rider
|
||||
.idea/
|
||||
*.sln.iml
|
||||
|
||||
# CodeRush
|
||||
.cr/
|
||||
|
||||
# Python Tools for Visual Studio (PTVS)
|
||||
__pycache__/
|
||||
*.pyc
|
||||
|
||||
# Cake - Uncomment if you are using it
|
||||
# tools/**
|
||||
# !tools/packages.config
|
||||
|
||||
# Tabs Studio
|
||||
*.tss
|
||||
|
||||
# Telerik's JustMock configuration file
|
||||
*.jmconfig
|
||||
|
||||
# BizTalk build output
|
||||
*.btp.cs
|
||||
*.btm.cs
|
||||
*.odx.cs
|
||||
*.xsd.cs
|
||||
|
||||
# OpenCover UI analysis results
|
||||
OpenCover/
|
||||
|
||||
# Azure Stream Analytics local run output
|
||||
ASALocalRun/
|
||||
|
||||
# MSBuild Binary and Structured Log
|
||||
*.binlog
|
||||
|
||||
# NVidia Nsight GPU debugger configuration file
|
||||
*.nvuser
|
||||
|
||||
# MFractors (Xamarin productivity tool) working folder
|
||||
.mfractor/
|
||||
|
||||
*.out
|
||||
*.o
|
||||
*.d
|
||||
lib/libgfxd/libgfxd.a
|
||||
ExporterTest/ExporterTest.a
|
||||
ZAPDUtils/ZAPDUtils.a
|
||||
.vscode/
|
||||
build/
|
||||
external/
|
||||
ZAPDUtils/build/
|
||||
ZAPD/BuildInfo.h
|
||||
|
||||
DebugObj/*
|
||||
ReleaseObj/*
|
||||
.tags
|
||||
tags
|
||||
oot.otr
|
||||
*.sav
|
||||
shipofharkinian.ini
|
||||
shipofharkinian.json
|
||||
imgui.ini
|
||||
|
||||
# Switch Stuff
|
||||
|
||||
*.nro
|
||||
*.nacp
|
||||
ZAPDTR/ZAPDUtils/lib/*
|
||||
!/soh/icon.jpg
|
||||
|
||||
# Xcode
|
||||
xcuserdata/
|
||||
*.xcconfig
|
||||
*.xcodeproj/*
|
||||
!*.xcodeproj/project.pbxproj
|
||||
!*.xcodeproj/xcshareddata/
|
||||
!*.xcworkspace/contents.xcworkspacedata
|
||||
/*.gcno
|
||||
**/xcshareddata/WorkspaceSettings.xcsettings
|
||||
|
||||
# cmake
|
||||
CMakeLists.txt.user
|
||||
CMakeCache.txt
|
||||
CMakeFiles
|
||||
CMakeScripts
|
||||
Testing
|
||||
Makefile
|
||||
cmake_install.cmake
|
||||
install_manifest.txt
|
||||
compile_commands.json
|
||||
CTestTestfile.cmake
|
||||
_deps
|
||||
*/extract_assets_cmake*
|
||||
/build*
|
||||
build.c
|
||||
+213
@@ -0,0 +1,213 @@
|
||||
# Building Ship of Harkinian
|
||||
|
||||
## Windows
|
||||
|
||||
Requires:
|
||||
* At least 8GB of RAM (machines with 4GB have seen complier failures)
|
||||
* Visual Studio 2022 Community Edition with the C++ feature set
|
||||
* One of the Windows SDKs that comes with Visual Studio, for example the current Windows 10 version 10.0.19041.0
|
||||
* The `MSVC v142 - VS 2019 C++ build tools` component of Visual Studio
|
||||
* Python 3 (can be installed manually or as part of Visual Studio)
|
||||
* Git (can be installed manually or as part of Visual Studio)
|
||||
* Cmake (can be installed via chocolatey or manually)
|
||||
|
||||
During installation, check the "Desktop development with C++" feature set:
|
||||
|
||||

|
||||
Doing so should also check one of the Windows SDKs by default. Then, in the installation details in the right-hand column, make sure you also check the v142 toolset.
|
||||
|
||||
You can also find the v142 toolset by searching through the individual components tab:
|
||||
|
||||

|
||||
While you're there, you can also install Python 3 and Git if needed.
|
||||
|
||||
1. Clone the Ship of Harkinian repository
|
||||
2. Place one or more [compatible](#compatible-roms) roms in the `OTRExporter` directory with namings of your choice
|
||||
|
||||
_Note: Instructions assume using powershell_
|
||||
```powershell
|
||||
# Navigate to the Shipwright repo within powershell. ie: cd "C:\yourpath\Shipwright"
|
||||
cd Shipwright
|
||||
|
||||
# Setup cmake project
|
||||
& 'C:\Program Files\CMake\bin\cmake' -S . -B "build/x64" -G "Visual Studio 17 2022" -T v142 -A x64 # -DCMAKE_BUILD_TYPE:STRING=Release (if you're packaging)
|
||||
# or for VS2019
|
||||
& 'C:\Program Files\CMake\bin\cmake' -S . -B "build/x64" -G "Visual Studio 16 2019" -T v142 -A x64
|
||||
# Extract assets & generate OTR (run this anytime you need to regenerate OTR)
|
||||
& 'C:\Program Files\CMake\bin\cmake.exe' --build .\build\x64 --target ExtractAssets # --config Release (if you're packaging)
|
||||
# Compile project
|
||||
& 'C:\Program Files\CMake\bin\cmake.exe' --build .\build\x64 # --config Release (if you're packaging)
|
||||
|
||||
# Now you can run the executable in .\build\x64
|
||||
|
||||
# If you need to clean the project you can run
|
||||
& 'C:\Program Files\CMake\bin\cmake.exe' --build .\build\x64 --target clean
|
||||
```
|
||||
|
||||
### Developing SoH
|
||||
With the cmake build system you have two options for working on the project:
|
||||
|
||||
#### Visual Studio
|
||||
To develop using Visual Studio you only need to use cmake to generate the solution file:
|
||||
```powershell
|
||||
# Generates Ship.sln at `build/x64` for Visual Studio 2022
|
||||
& 'C:\Program Files\CMake\bin\cmake' -S . -B "build/x64" -G "Visual Studio 17 2022" -T v142 -A x64
|
||||
# or for Visual Studio 2019
|
||||
& 'C:\Program Files\CMake\bin\cmake' -S . -B "build/x64" -G "Visual Studio 16 2019" -T v142 -A x64
|
||||
```
|
||||
|
||||
#### Visual Studio Code or another editor
|
||||
To develop using Visual Studio Code or another editor you only need to open the repository in it.
|
||||
To build you'll need to follow the instructions from the building section.
|
||||
|
||||
_Note: If you're using Visual Studio Code, the [cpack plugin](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools) makes it very easy to just press run and debug._
|
||||
|
||||
_Experimental: You can also use another build system entirely rather than MSVC like [Ninja](https://ninja-build.org/) for possibly better performance._
|
||||
|
||||
|
||||
### Generating the distributable
|
||||
After compiling the project you can generate the distributable by running:
|
||||
```powershell
|
||||
# Go to build folder
|
||||
cd "build/x64"
|
||||
# Generate
|
||||
& 'C:\Program Files\CMake\bin\cpack.exe' -G ZIP
|
||||
```
|
||||
|
||||
## Linux
|
||||
Requires `gcc >= 10, x11, curl, python3, sdl2 >= 2.0.22, libpng, glew >= 2.2, ninja, cmake, lld`
|
||||
|
||||
**Important: For maximum performance make sure you have ninja build tools installed!**
|
||||
|
||||
_Note: If you're using Visual Studio Code, the [cpack plugin](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools) makes it very easy to just press run and debug._
|
||||
|
||||
```bash
|
||||
# Clone the repo
|
||||
git clone https://github.com/HarbourMasters/Shipwright.git
|
||||
cd Shipwright
|
||||
# Copy the baserom to the OTRExporter folder
|
||||
cp <path to your ROM> OTRExporter
|
||||
# Generate Ninja project
|
||||
cmake -H. -Bbuild-cmake -GNinja # -DCMAKE_BUILD_TYPE:STRING=Release (if you're packaging)
|
||||
# Extract assets & generate OTR (run this anytime you need to regenerate OTR)
|
||||
cmake --build build-cmake --target ExtractAssets
|
||||
# Compile the project
|
||||
cmake --build build-cmake # --config Release (if you're packaging)
|
||||
|
||||
# Now you can run the executable in ./build-cmake/soh/soh.elf
|
||||
# To develop the project open the repository in VSCode (or your preferred editor)
|
||||
|
||||
# If you need to clean the project you can run
|
||||
cmake --build build-cmake --target clean
|
||||
```
|
||||
|
||||
### Generating a distributable
|
||||
After compiling the project you can generate a distributable by running of the following:
|
||||
```bash
|
||||
# Go to build folder
|
||||
cd build-cmake
|
||||
# Generate
|
||||
cpack -G DEB
|
||||
cpack -G ZIP
|
||||
cpack -G External (creates appimage)
|
||||
```
|
||||
|
||||
## macOS
|
||||
Requires Xcode (or xcode-tools) && `sdl2, libpng, glew, ninja, cmake` (can be installed via homebrew, macports, etc)
|
||||
|
||||
**Important: For maximum performance make sure you have ninja build tools installed!**
|
||||
|
||||
_Note: If you're using Visual Studio Code, the [cpack plugin](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools) makes it very easy to just press run and debug._
|
||||
|
||||
```bash
|
||||
# Clone the repo
|
||||
git clone https://github.com/HarbourMasters/Shipwright.git
|
||||
cd ShipWright
|
||||
# Copy the baserom to the OTRExporter folder
|
||||
cp <path to your ROM> OTRExporter
|
||||
# Generate Ninja project
|
||||
cmake -H. -Bbuild-cmake -GNinja # -DCMAKE_BUILD_TYPE:STRING=Release (if you're packaging)
|
||||
# Extract assets & generate OTR (run this anytime you need to regenerate OTR)
|
||||
cmake --build build-cmake --target ExtractAssets
|
||||
# Compile the project
|
||||
cmake --build build-cmake # --config Release (if you're packaging)
|
||||
|
||||
# Copy oot.otr into the Application Support directory
|
||||
cp build-cmake/soh/oot.otr ~/Library/Application\ Support/com.shipofharkinian.soh/
|
||||
|
||||
# Now you can run the executable file:
|
||||
./build-cmake/soh/soh-macos
|
||||
# To develop the project open the repository in VSCode (or your preferred editor)
|
||||
|
||||
# If you need to clean the project you can run
|
||||
cmake --build build-cmake --target clean
|
||||
```
|
||||
|
||||
### Generating a distributable
|
||||
After compiling the project you can generate a distributable by running of the following:
|
||||
```bash
|
||||
# Go to build folder
|
||||
cd build-cmake
|
||||
# Generate
|
||||
cpack
|
||||
```
|
||||
|
||||
## Switch
|
||||
1. Requires that your build machine is setup with the tools necessary for your platform above
|
||||
2. Requires that you have the switch build tools installed
|
||||
3. Clone the Ship of Harkinian repository
|
||||
4. Place one or more [compatible](#compatible-roms) roms in the `OTRExporter` directory with namings of your choice
|
||||
|
||||
```bash
|
||||
cd Shipwright
|
||||
# Setup cmake project for your host machine
|
||||
cmake -H. -Bbuild-cmake -GNinja
|
||||
# Extract assets & generate OTR (run this anytime you need to regenerate OTR)
|
||||
cmake --build build-cmake --target ExtractAssets
|
||||
# Setup cmake project for building for Switch
|
||||
cmake -H. -Bbuild-switch -GNinja -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/Switch.cmake
|
||||
# Build project and generate nro
|
||||
cmake --build build-switch --target soh_nro
|
||||
|
||||
# Now you can run the executable in ./build-switch/soh/soh.nro
|
||||
# To develop the project open the repository in VSCode (or your preferred editor)
|
||||
```
|
||||
|
||||
## Wii U
|
||||
1. Requires that your build machine is setup with the tools necessary for your platform above
|
||||
2. Requires that you have the Wii U build tools installed
|
||||
3. Clone the Ship of Harkinian repository
|
||||
4. Place one or more [compatible](#compatible-roms) roms in the `OTRExporter` directory with namings of your choice
|
||||
|
||||
```bash
|
||||
cd Shipwright
|
||||
# Setup cmake project for your host machine
|
||||
cmake -H. -Bbuild-cmake -GNinja
|
||||
# Extract assets & generate OTR (run this anytime you need to regenerate OTR)
|
||||
cmake --build build-cmake --target ExtractAssets
|
||||
# Setup cmake project for building for Wii U
|
||||
cmake -H. -Bbuild-wiiu -GNinja -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/WiiU.cmake # -DCMAKE_BUILD_TYPE:STRING=Release (if you're packaging)
|
||||
# Build project and generate rpx
|
||||
cmake --build build-wiiu --target soh # --target soh_wuhb (for building .wuhb)
|
||||
|
||||
# Now you can run the executable in ./build-wiiu/soh/soh.rpx or the Wii U Homebrew Bundle in ./build-wiiu/soh/soh.wuhb
|
||||
# To develop the project open the repository in VSCode (or your preferred editor)
|
||||
```
|
||||
|
||||
# Compatible Roms
|
||||
```
|
||||
OOT_PAL_GC checksum 0x09465AC3
|
||||
OOT_PAL_GC_DBG1 checksum 0x871E1C92 (debug non-master quest)
|
||||
```
|
||||
|
||||
# OTRExporter Usage
|
||||
|
||||
The OTRExporter exports an `oot.otr` archive file which Ship of Harkinian requires to play.
|
||||
|
||||
Use the `extract_assets.py` script file to run the exporter using any of the following methods:
|
||||
1) Double click on the script after placing one or more roms in the directory.
|
||||
2) Drag & Drop a rom onto the script.
|
||||
3) In a terminal run `python3 extract_assets.py` after placing one or more roms in the directory.
|
||||
4) In a terminal run `python3 extract_assets.py <path_to_rom>`
|
||||
|
||||
If the script finds multiple roms the user is prompted which to use. Selection is done using the number keys and then pressing the carriage return key.
|
||||
@@ -0,0 +1,65 @@
|
||||
################################################################################
|
||||
# Command for variable_watch. This command issues error message, if a variable
|
||||
# is changed. If variable PROPERTY_READER_GUARD_DISABLED is TRUE nothing happens
|
||||
# variable_watch(<variable> property_reader_guard)
|
||||
################################################################################
|
||||
function(property_reader_guard VARIABLE ACCESS VALUE CURRENT_LIST_FILE STACK)
|
||||
if("${PROPERTY_READER_GUARD_DISABLED}")
|
||||
return()
|
||||
endif()
|
||||
|
||||
if("${ACCESS}" STREQUAL "MODIFIED_ACCESS")
|
||||
message(FATAL_ERROR
|
||||
" Variable ${VARIABLE} is not supposed to be changed.\n"
|
||||
" It is used only for reading target property ${VARIABLE}.\n"
|
||||
" Use\n"
|
||||
" set_target_properties(\"<target>\" PROPERTIES \"${VARIABLE}\" \"<value>\")\n"
|
||||
" or\n"
|
||||
" set_target_properties(\"<target>\" PROPERTIES \"${VARIABLE}_<CONFIG>\" \"<value>\")\n"
|
||||
" instead.\n")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
################################################################################
|
||||
# Create variable <name> with generator expression that expands to value of
|
||||
# target property <name>_<CONFIG>. If property is empty or not set then property
|
||||
# <name> is used instead. Variable <name> has watcher property_reader_guard that
|
||||
# doesn't allow to edit it.
|
||||
# create_property_reader(<name>)
|
||||
# Input:
|
||||
# name - Name of watched property and output variable
|
||||
################################################################################
|
||||
function(create_property_reader NAME)
|
||||
set(PROPERTY_READER_GUARD_DISABLED TRUE)
|
||||
set(CONFIG_VALUE "$<TARGET_GENEX_EVAL:${PROPS_TARGET},$<TARGET_PROPERTY:${PROPS_TARGET},${NAME}_$<UPPER_CASE:$<CONFIG>>>>")
|
||||
set(IS_CONFIG_VALUE_EMPTY "$<STREQUAL:${CONFIG_VALUE},>")
|
||||
set(GENERAL_VALUE "$<TARGET_GENEX_EVAL:${PROPS_TARGET},$<TARGET_PROPERTY:${PROPS_TARGET},${NAME}>>")
|
||||
set("${NAME}" "$<IF:${IS_CONFIG_VALUE_EMPTY},${GENERAL_VALUE},${CONFIG_VALUE}>" PARENT_SCOPE)
|
||||
variable_watch("${NAME}" property_reader_guard)
|
||||
endfunction()
|
||||
|
||||
################################################################################
|
||||
# Set property $<name>_${PROPS_CONFIG_U} of ${PROPS_TARGET} to <value>
|
||||
# set_config_specific_property(<name> <value>)
|
||||
# Input:
|
||||
# name - Prefix of property name
|
||||
# value - New value
|
||||
################################################################################
|
||||
function(set_config_specific_property NAME VALUE)
|
||||
set_target_properties("${PROPS_TARGET}" PROPERTIES "${NAME}_${PROPS_CONFIG_U}" "${VALUE}")
|
||||
endfunction()
|
||||
|
||||
################################################################################
|
||||
|
||||
create_property_reader("TARGET_NAME")
|
||||
create_property_reader("OUTPUT_DIRECTORY")
|
||||
|
||||
set_config_specific_property("TARGET_NAME" "${PROPS_TARGET}")
|
||||
set_config_specific_property("OUTPUT_NAME" "${TARGET_NAME}")
|
||||
set_config_specific_property("ARCHIVE_OUTPUT_NAME" "${TARGET_NAME}")
|
||||
set_config_specific_property("LIBRARY_OUTPUT_NAME" "${TARGET_NAME}")
|
||||
set_config_specific_property("RUNTIME_OUTPUT_NAME" "${TARGET_NAME}")
|
||||
|
||||
set_config_specific_property("ARCHIVE_OUTPUT_DIRECTORY" "${OUTPUT_DIRECTORY}")
|
||||
set_config_specific_property("LIBRARY_OUTPUT_DIRECTORY" "${OUTPUT_DIRECTORY}")
|
||||
set_config_specific_property("RUNTIME_OUTPUT_DIRECTORY" "${OUTPUT_DIRECTORY}")
|
||||
@@ -0,0 +1,12 @@
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/Default.cmake")
|
||||
|
||||
set_config_specific_property("OUTPUT_DIRECTORY" "${CMAKE_SOURCE_DIR}$<$<NOT:$<STREQUAL:${CMAKE_VS_PLATFORM_NAME},Win32>>:/${CMAKE_VS_PLATFORM_NAME}>/${PROPS_CONFIG}")
|
||||
|
||||
if(MSVC)
|
||||
create_property_reader("DEFAULT_CXX_EXCEPTION_HANDLING")
|
||||
create_property_reader("DEFAULT_CXX_DEBUG_INFORMATION_FORMAT")
|
||||
|
||||
set_target_properties("${PROPS_TARGET}" PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
|
||||
set_config_specific_property("DEFAULT_CXX_EXCEPTION_HANDLING" "/EHsc")
|
||||
set_config_specific_property("DEFAULT_CXX_DEBUG_INFORMATION_FORMAT" "/Zi")
|
||||
endif()
|
||||
@@ -0,0 +1,30 @@
|
||||
set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)
|
||||
set(CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY 0)
|
||||
set(CPACK_COMPONENTS_ALL "ship" "appimage")
|
||||
|
||||
if (NOT CPACK_GENERATOR STREQUAL "External")
|
||||
list(REMOVE_ITEM CPACK_COMPONENTS_ALL "appimage")
|
||||
endif()
|
||||
|
||||
if (CPACK_GENERATOR MATCHES "DEB|RPM")
|
||||
# https://unix.stackexchange.com/a/11552/254512
|
||||
set(CPACK_PACKAGING_INSTALL_PREFIX "/opt/ship/bin")#/${CMAKE_PROJECT_VERSION}")
|
||||
set(CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY 0)
|
||||
elseif (CPACK_GENERATOR MATCHES "ZIP")
|
||||
set(CPACK_PACKAGING_INSTALL_PREFIX "")
|
||||
endif()
|
||||
|
||||
if (CPACK_GENERATOR MATCHES "External")
|
||||
set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)
|
||||
SET(CPACK_MONOLITHIC_INSTALL 1)
|
||||
set(CPACK_PACKAGING_INSTALL_PREFIX "/usr/bin")
|
||||
endif()
|
||||
|
||||
if (CPACK_GENERATOR MATCHES "Bundle")
|
||||
set(CPACK_BUNDLE_NAME "soh")
|
||||
set(CPACK_BUNDLE_PLIST "macosx/Info.plist")
|
||||
set(CPACK_BUNDLE_ICON "macosx/soh.icns")
|
||||
set(CPACK_BUNDLE_STARTUP_COMMAND "../soh/macosx/soh-macos.sh")
|
||||
set(CPACK_BUNDLE_APPLE_CERT_APP "-")
|
||||
endif()
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
# these are cache variables, so they could be overwritten with -D,
|
||||
|
||||
set(CPACK_PACKAGE_NAME "${PROJECT_NAME}"
|
||||
CACHE STRING "The resulting package name"
|
||||
)
|
||||
|
||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Simple C++ application"
|
||||
CACHE STRING "Package description for the package metadata"
|
||||
)
|
||||
set(CPACK_PACKAGE_VENDOR "Some Company")
|
||||
|
||||
set(CPACK_VERBATIM_VARIABLES YES)
|
||||
|
||||
set(CPACK_PACKAGE_INSTALL_DIRECTORY ${CPACK_PACKAGE_NAME})
|
||||
SET(CPACK_OUTPUT_FILE_PREFIX "${CMAKE_SOURCE_DIR}/_packages")
|
||||
|
||||
set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
|
||||
set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
|
||||
set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
|
||||
set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
|
||||
|
||||
set(CPACK_PACKAGE_CONTACT "YOUR@E-MAIL.net")
|
||||
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "YOUR NAME")
|
||||
|
||||
#set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
|
||||
set(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/README.md")
|
||||
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
set(CPACK_SYSTEM_NAME ${LSB_RELEASE_CODENAME_SHORT})
|
||||
# package name for deb
|
||||
# if set, then instead of some-application-0.9.2-Linux.deb
|
||||
# you'll get some-application_0.9.2_amd64.deb (note the underscores too)
|
||||
#set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)
|
||||
execute_process(COMMAND dpkg --print-architecture OUTPUT_VARIABLE ARCHITECTURE OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
set( CPACK_DEBIAN_FILE_NAME ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_SYSTEM_NAME}-${ARCHITECTURE}.deb )
|
||||
# if you want every group to have its own package,
|
||||
# although the same happens if this is not sent (so it defaults to ONE_PER_GROUP)
|
||||
# and CPACK_DEB_COMPONENT_INSTALL is set to YES
|
||||
set(CPACK_COMPONENTS_GROUPING ALL_COMPONENTS_IN_ONE)#ONE_PER_GROUP)
|
||||
# without this you won't be able to pack only specified component
|
||||
set(CPACK_DEB_COMPONENT_INSTALL YES)
|
||||
|
||||
set(CPACK_EXTERNAL_ENABLE_STAGING YES)
|
||||
set(CPACK_EXTERNAL_PACKAGE_SCRIPT "${PROJECT_BINARY_DIR}/appimage-generate.cmake")
|
||||
|
||||
file(GENERATE
|
||||
OUTPUT "${PROJECT_BINARY_DIR}/appimage-generate.cmake"
|
||||
CONTENT [[
|
||||
include(CMakePrintHelpers)
|
||||
cmake_print_variables(CPACK_TEMPORARY_DIRECTORY)
|
||||
cmake_print_variables(CPACK_TOPLEVEL_DIRECTORY)
|
||||
cmake_print_variables(CPACK_PACKAGE_DIRECTORY)
|
||||
cmake_print_variables(CPACK_PACKAGE_FILE_NAME)
|
||||
|
||||
find_program(LINUXDEPLOY_EXECUTABLE
|
||||
NAMES linuxdeploy linuxdeploy-x86_64.AppImage
|
||||
PATHS ${CPACK_PACKAGE_DIRECTORY}/linuxdeploy)
|
||||
|
||||
if (NOT LINUXDEPLOY_EXECUTABLE)
|
||||
message(STATUS "Downloading linuxdeploy")
|
||||
set(LINUXDEPLOY_EXECUTABLE ${CPACK_PACKAGE_DIRECTORY}/linuxdeploy/linuxdeploy)
|
||||
file(DOWNLOAD
|
||||
https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
|
||||
${LINUXDEPLOY_EXECUTABLE}
|
||||
INACTIVITY_TIMEOUT 10
|
||||
LOG ${CPACK_PACKAGE_DIRECTORY}/linuxdeploy/download.log
|
||||
STATUS LINUXDEPLOY_DOWNLOAD)
|
||||
execute_process(COMMAND chmod +x ${LINUXDEPLOY_EXECUTABLE} COMMAND_ECHO STDOUT)
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -E env
|
||||
OUTPUT=${CPACK_PACKAGE_FILE_NAME}.appimage
|
||||
VERSION=$<IF:$<BOOL:${CPACK_PACKAGE_VERSION}>,${CPACK_PACKAGE_VERSION},0.1.0>
|
||||
${LINUXDEPLOY_EXECUTABLE}
|
||||
--appimage-extract-and-run
|
||||
--appdir=${CPACK_TEMPORARY_DIRECTORY}
|
||||
--executable=$<TARGET_FILE:soh>
|
||||
$<$<BOOL:$<TARGET_PROPERTY:soh,APPIMAGE_DESKTOP_FILE>>:--desktop-file=$<TARGET_PROPERTY:soh,APPIMAGE_DESKTOP_FILE>>
|
||||
$<$<BOOL:$<TARGET_PROPERTY:soh,APPIMAGE_ICON_FILE>>:--icon-file=$<TARGET_PROPERTY:soh,APPIMAGE_ICON_FILE>>
|
||||
--output=appimage
|
||||
# --verbosity=2
|
||||
)
|
||||
]])
|
||||
|
||||
endif()
|
||||
|
||||
include(CPack)
|
||||
|
||||
@@ -0,0 +1,248 @@
|
||||
# utils file for projects came from visual studio solution with cmake-converter.
|
||||
|
||||
################################################################################
|
||||
# Wrap each token of the command with condition
|
||||
################################################################################
|
||||
cmake_policy(PUSH)
|
||||
cmake_policy(SET CMP0054 NEW)
|
||||
macro(prepare_commands)
|
||||
unset(TOKEN_ROLE)
|
||||
unset(COMMANDS)
|
||||
foreach(TOKEN ${ARG_COMMANDS})
|
||||
if("${TOKEN}" STREQUAL "COMMAND")
|
||||
set(TOKEN_ROLE "KEYWORD")
|
||||
elseif("${TOKEN_ROLE}" STREQUAL "KEYWORD")
|
||||
set(TOKEN_ROLE "CONDITION")
|
||||
elseif("${TOKEN_ROLE}" STREQUAL "CONDITION")
|
||||
set(TOKEN_ROLE "COMMAND")
|
||||
elseif("${TOKEN_ROLE}" STREQUAL "COMMAND")
|
||||
set(TOKEN_ROLE "ARG")
|
||||
endif()
|
||||
|
||||
if("${TOKEN_ROLE}" STREQUAL "KEYWORD")
|
||||
list(APPEND COMMANDS "${TOKEN}")
|
||||
elseif("${TOKEN_ROLE}" STREQUAL "CONDITION")
|
||||
set(CONDITION ${TOKEN})
|
||||
elseif("${TOKEN_ROLE}" STREQUAL "COMMAND")
|
||||
list(APPEND COMMANDS "$<$<NOT:${CONDITION}>:${DUMMY}>$<${CONDITION}:${TOKEN}>")
|
||||
elseif("${TOKEN_ROLE}" STREQUAL "ARG")
|
||||
list(APPEND COMMANDS "$<${CONDITION}:${TOKEN}>")
|
||||
endif()
|
||||
endforeach()
|
||||
endmacro()
|
||||
cmake_policy(POP)
|
||||
|
||||
################################################################################
|
||||
# Transform all the tokens to absolute paths
|
||||
################################################################################
|
||||
macro(prepare_output)
|
||||
unset(OUTPUT)
|
||||
foreach(TOKEN ${ARG_OUTPUT})
|
||||
if(IS_ABSOLUTE ${TOKEN})
|
||||
list(APPEND OUTPUT "${TOKEN}")
|
||||
else()
|
||||
list(APPEND OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/${TOKEN}")
|
||||
endif()
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
################################################################################
|
||||
# Parse add_custom_command_if args.
|
||||
#
|
||||
# Input:
|
||||
# PRE_BUILD - Pre build event option
|
||||
# PRE_LINK - Pre link event option
|
||||
# POST_BUILD - Post build event option
|
||||
# TARGET - Target
|
||||
# OUTPUT - List of output files
|
||||
# DEPENDS - List of files on which the command depends
|
||||
# COMMANDS - List of commands(COMMAND condition1 commannd1 args1 COMMAND
|
||||
# condition2 commannd2 args2 ...)
|
||||
# Output:
|
||||
# OUTPUT - Output files
|
||||
# DEPENDS - Files on which the command depends
|
||||
# COMMENT - Comment
|
||||
# PRE_BUILD - TRUE/FALSE
|
||||
# PRE_LINK - TRUE/FALSE
|
||||
# POST_BUILD - TRUE/FALSE
|
||||
# TARGET - Target name
|
||||
# COMMANDS - Prepared commands(every token is wrapped in CONDITION)
|
||||
# NAME - Unique name for custom target
|
||||
# STEP - PRE_BUILD/PRE_LINK/POST_BUILD
|
||||
################################################################################
|
||||
function(add_custom_command_if_parse_arguments)
|
||||
cmake_parse_arguments("ARG" "PRE_BUILD;PRE_LINK;POST_BUILD" "TARGET;COMMENT" "DEPENDS;OUTPUT;COMMANDS" ${ARGN})
|
||||
|
||||
if(WIN32)
|
||||
set(DUMMY "cd.")
|
||||
elseif(UNIX)
|
||||
set(DUMMY "true")
|
||||
endif()
|
||||
|
||||
prepare_commands()
|
||||
prepare_output()
|
||||
|
||||
set(DEPENDS "${ARG_DEPENDS}")
|
||||
set(COMMENT "${ARG_COMMENT}")
|
||||
set(PRE_BUILD "${ARG_PRE_BUILD}")
|
||||
set(PRE_LINK "${ARG_PRE_LINK}")
|
||||
set(POST_BUILD "${ARG_POST_BUILD}")
|
||||
set(TARGET "${ARG_TARGET}")
|
||||
if(PRE_BUILD)
|
||||
set(STEP "PRE_BUILD")
|
||||
elseif(PRE_LINK)
|
||||
set(STEP "PRE_LINK")
|
||||
elseif(POST_BUILD)
|
||||
set(STEP "POST_BUILD")
|
||||
endif()
|
||||
set(NAME "${TARGET}_${STEP}")
|
||||
|
||||
set(OUTPUT "${OUTPUT}" PARENT_SCOPE)
|
||||
set(DEPENDS "${DEPENDS}" PARENT_SCOPE)
|
||||
set(COMMENT "${COMMENT}" PARENT_SCOPE)
|
||||
set(PRE_BUILD "${PRE_BUILD}" PARENT_SCOPE)
|
||||
set(PRE_LINK "${PRE_LINK}" PARENT_SCOPE)
|
||||
set(POST_BUILD "${POST_BUILD}" PARENT_SCOPE)
|
||||
set(TARGET "${TARGET}" PARENT_SCOPE)
|
||||
set(COMMANDS "${COMMANDS}" PARENT_SCOPE)
|
||||
set(STEP "${STEP}" PARENT_SCOPE)
|
||||
set(NAME "${NAME}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
################################################################################
|
||||
# Add conditional custom command
|
||||
#
|
||||
# Generating Files
|
||||
# The first signature is for adding a custom command to produce an output:
|
||||
# add_custom_command_if(
|
||||
# <OUTPUT output1 [output2 ...]>
|
||||
# <COMMANDS>
|
||||
# <COMMAND condition command1 [args1...]>
|
||||
# [COMMAND condition command2 [args2...]]
|
||||
# [DEPENDS [depends...]]
|
||||
# [COMMENT comment]
|
||||
#
|
||||
# Build Events
|
||||
# add_custom_command_if(
|
||||
# <TARGET target>
|
||||
# <PRE_BUILD | PRE_LINK | POST_BUILD>
|
||||
# <COMMAND condition command1 [args1...]>
|
||||
# [COMMAND condition command2 [args2...]]
|
||||
# [COMMENT comment]
|
||||
#
|
||||
# Input:
|
||||
# output - Output files the command is expected to produce
|
||||
# condition - Generator expression for wrapping the command
|
||||
# command - Command-line(s) to execute at build time.
|
||||
# args - Command`s args
|
||||
# depends - Files on which the command depends
|
||||
# comment - Display the given message before the commands are executed at
|
||||
# build time.
|
||||
# PRE_BUILD - Run before any other rules are executed within the target
|
||||
# PRE_LINK - Run after sources have been compiled but before linking the
|
||||
# binary
|
||||
# POST_BUILD - Run after all other rules within the target have been
|
||||
# executed
|
||||
################################################################################
|
||||
function(add_custom_command_if)
|
||||
add_custom_command_if_parse_arguments(${ARGN})
|
||||
|
||||
if(OUTPUT AND TARGET)
|
||||
message(FATAL_ERROR "Wrong syntax. A TARGET and OUTPUT can not both be specified.")
|
||||
endif()
|
||||
|
||||
if(OUTPUT)
|
||||
add_custom_command(OUTPUT ${OUTPUT}
|
||||
${COMMANDS}
|
||||
DEPENDS ${DEPENDS}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
COMMENT ${COMMENT})
|
||||
elseif(TARGET)
|
||||
if(PRE_BUILD AND NOT ${CMAKE_GENERATOR} MATCHES "Visual Studio")
|
||||
add_custom_target(
|
||||
${NAME}
|
||||
${COMMANDS}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
COMMENT ${COMMENT})
|
||||
add_dependencies(${TARGET} ${NAME})
|
||||
else()
|
||||
add_custom_command(
|
||||
TARGET ${TARGET}
|
||||
${STEP}
|
||||
${COMMANDS}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
COMMENT ${COMMENT})
|
||||
endif()
|
||||
else()
|
||||
message(FATAL_ERROR "Wrong syntax. A TARGET or OUTPUT must be specified.")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
################################################################################
|
||||
# Use props file for a target and configs
|
||||
# use_props(<target> <configs...> <props_file>)
|
||||
# Inside <props_file> there are following variables:
|
||||
# PROPS_TARGET - <target>
|
||||
# PROPS_CONFIG - One of <configs...>
|
||||
# PROPS_CONFIG_U - Uppercase PROPS_CONFIG
|
||||
# Input:
|
||||
# target - Target to apply props file
|
||||
# configs - Build configurations to apply props file
|
||||
# props_file - CMake script
|
||||
################################################################################
|
||||
macro(use_props TARGET CONFIGS PROPS_FILE)
|
||||
set(PROPS_TARGET "${TARGET}")
|
||||
foreach(PROPS_CONFIG ${CONFIGS})
|
||||
string(TOUPPER "${PROPS_CONFIG}" PROPS_CONFIG_U)
|
||||
|
||||
get_filename_component(ABSOLUTE_PROPS_FILE "${PROPS_FILE}" ABSOLUTE BASE_DIR "${CMAKE_CURRENT_LIST_DIR}")
|
||||
if(EXISTS "${ABSOLUTE_PROPS_FILE}")
|
||||
include("${ABSOLUTE_PROPS_FILE}")
|
||||
else()
|
||||
message(WARNING "Corresponding cmake file from props \"${ABSOLUTE_PROPS_FILE}\" doesn't exist")
|
||||
endif()
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
################################################################################
|
||||
# Add compile options to source file
|
||||
# source_file_compile_options(<source_file> [compile_options...])
|
||||
# Input:
|
||||
# source_file - Source file
|
||||
# compile_options - Options to add to COMPILE_FLAGS property
|
||||
################################################################################
|
||||
function(source_file_compile_options SOURCE_FILE)
|
||||
if("${ARGC}" LESS_EQUAL "1")
|
||||
return()
|
||||
endif()
|
||||
|
||||
get_source_file_property(COMPILE_OPTIONS "${SOURCE_FILE}" COMPILE_OPTIONS)
|
||||
|
||||
if(COMPILE_OPTIONS)
|
||||
list(APPEND COMPILE_OPTIONS ${ARGN})
|
||||
else()
|
||||
set(COMPILE_OPTIONS "${ARGN}")
|
||||
endif()
|
||||
|
||||
set_source_files_properties("${SOURCE_FILE}" PROPERTIES COMPILE_OPTIONS "${COMPILE_OPTIONS}")
|
||||
endfunction()
|
||||
|
||||
################################################################################
|
||||
# Default properties of visual studio projects
|
||||
################################################################################
|
||||
set(DEFAULT_CXX_PROPS "${CMAKE_CURRENT_LIST_DIR}/DefaultCXX.cmake")
|
||||
|
||||
function(get_linux_lsb_release_information)
|
||||
find_program(LSB_RELEASE_EXEC lsb_release)
|
||||
if(NOT LSB_RELEASE_EXEC)
|
||||
message(FATAL_ERROR "Could not detect lsb_release executable, can not gather required information")
|
||||
endif()
|
||||
|
||||
execute_process(COMMAND "${LSB_RELEASE_EXEC}" --short --id OUTPUT_VARIABLE LSB_RELEASE_ID_SHORT OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
execute_process(COMMAND "${LSB_RELEASE_EXEC}" --short --release OUTPUT_VARIABLE LSB_RELEASE_VERSION_SHORT OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
execute_process(COMMAND "${LSB_RELEASE_EXEC}" --short --codename OUTPUT_VARIABLE LSB_RELEASE_CODENAME_SHORT OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
set(LSB_RELEASE_ID_SHORT "${LSB_RELEASE_ID_SHORT}" PARENT_SCOPE)
|
||||
set(LSB_RELEASE_VERSION_SHORT "${LSB_RELEASE_VERSION_SHORT}" PARENT_SCOPE)
|
||||
set(LSB_RELEASE_CODENAME_SHORT "${LSB_RELEASE_CODENAME_SHORT}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
@@ -0,0 +1,191 @@
|
||||
#------------------------------------------------------------------------------------------------------------
|
||||
#
|
||||
# Automate-VCPKG by Andre Taulien
|
||||
# ===============================
|
||||
#
|
||||
# Project Repository: https://github.com/REGoth-project/Automate-VCPKG
|
||||
# License ..........: MIT, see end of file.
|
||||
#
|
||||
# Based on: https://github.com/sutambe/cpptruths/blob/vcpkg_cmake_blog/cpp0x/vcpkg_test/CMakeLists.txt
|
||||
#
|
||||
#
|
||||
# While [Vcpkg](https://github.com/microsoft/vcpkg) on it's own is awesome, it does add
|
||||
# a little bit of complexity to getting a project to build. Even more if the one trying
|
||||
# to compile your application is not too fond of the commandline. Additionally, CMake
|
||||
# commands tend to get rather long with the toolchain path.
|
||||
#
|
||||
# To keep things simple for new users who just want to get the project to build, this
|
||||
# script offers a solution.
|
||||
#
|
||||
# Lets assume your main `CMakelists.txt` looks something like this:
|
||||
#
|
||||
# cmake_minimum_required (VERSION 3.12.0)
|
||||
# project (MyProject)
|
||||
#
|
||||
# add_executable(MyExecutable main.c)
|
||||
#
|
||||
# To integrate Vcpkg into that `CMakelists.txt`, simple put the following lines before the
|
||||
# call to `project(MyProject)`:
|
||||
#
|
||||
# include(cmake/automate-vcpkg.cmake)
|
||||
#
|
||||
# vcpkg_bootstrap()
|
||||
# vcpkg_install_packages(libsquish physfs)
|
||||
#
|
||||
# The call to `vcpkg_bootstrap()` will clone the official Vcpkg repository and bootstrap it.
|
||||
# If it detected an existing environment variable defining a valid `VCPKG_ROOT`, it will
|
||||
# update the existing installation of Vcpkg.
|
||||
#
|
||||
# Arguments to `vcpkg_install_packages()` are the packages you want to install using Vcpkg.
|
||||
#
|
||||
# If you want to keep the possibility for users to chose their own copy of Vcpkg, you can
|
||||
# simply not run the code snippet mentioned above, something like this will work:
|
||||
#
|
||||
# option(SKIP_AUTOMATE_VCPKG "When ON, you will need to built the packages
|
||||
# required by MyProject on your own or supply your own vcpkg toolchain.")
|
||||
#
|
||||
# if (NOT SKIP_AUTOMATE_VCPKG)
|
||||
# include(cmake/automate-vcpkg.cmake)
|
||||
#
|
||||
# vcpkg_bootstrap()
|
||||
# vcpkg_install_packages(libsquish physfs)
|
||||
# endif()
|
||||
#
|
||||
# Then, the user has to supply the packages on their own, be it through Vcpkg or manually
|
||||
# specifying their locations.
|
||||
#------------------------------------------------------------------------------------------------------------
|
||||
|
||||
cmake_minimum_required (VERSION 3.12)
|
||||
|
||||
if(WIN32)
|
||||
set(VCPKG_FALLBACK_ROOT ${CMAKE_CURRENT_BINARY_DIR}/vcpkg CACHE STRING "vcpkg configuration directory to use if vcpkg was not installed on the system before")
|
||||
else()
|
||||
set(VCPKG_FALLBACK_ROOT ${CMAKE_CURRENT_BINARY_DIR}/.vcpkg CACHE STRING "vcpkg configuration directory to use if vcpkg was not installed on the system before")
|
||||
endif()
|
||||
|
||||
# On Windows, Vcpkg defaults to x86, even on x64 systems. If we're
|
||||
# doing a 64-bit build, we need to fix that.
|
||||
if (WIN32)
|
||||
|
||||
# Since the compiler checks haven't run yet, we need to figure
|
||||
# out the value of CMAKE_SIZEOF_VOID_P ourselfs
|
||||
|
||||
include(CheckTypeSize)
|
||||
enable_language(C)
|
||||
check_type_size("void*" SIZEOF_VOID_P BUILTIN_TYPES_ONLY)
|
||||
|
||||
if (SIZEOF_VOID_P EQUAL 8)
|
||||
message(STATUS "Using Vcpkg triplet 'x64-windows'")
|
||||
|
||||
set(VCPKG_TRIPLET x64-windows)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED VCPKG_ROOT)
|
||||
if(NOT DEFINED ENV{VCPKG_ROOT})
|
||||
set(VCPKG_ROOT ${VCPKG_FALLBACK_ROOT})
|
||||
else()
|
||||
set(VCPKG_ROOT $ENV{VCPKG_ROOT})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Installs a new copy of Vcpkg or updates an existing one
|
||||
macro(vcpkg_bootstrap)
|
||||
_install_or_update_vcpkg()
|
||||
|
||||
# Find out whether the user supplied their own VCPKG toolchain file
|
||||
if(NOT DEFINED ${CMAKE_TOOLCHAIN_FILE})
|
||||
# We know this wasn't set before so we need point the toolchain file to the newly found VCPKG_ROOT
|
||||
set(CMAKE_TOOLCHAIN_FILE ${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake CACHE STRING "")
|
||||
|
||||
# Just setting vcpkg.cmake as toolchain file does not seem to actually pull in the code
|
||||
include(${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake)
|
||||
|
||||
set(AUTOMATE_VCPKG_USE_SYSTEM_VCPKG OFF)
|
||||
else()
|
||||
# VCPKG_ROOT has been defined by the toolchain file already
|
||||
set(AUTOMATE_VCPKG_USE_SYSTEM_VCPKG ON)
|
||||
endif()
|
||||
|
||||
message(STATUS "Automate VCPKG status:")
|
||||
message(STATUS " VCPKG_ROOT.....: ${VCPKG_ROOT}")
|
||||
message(STATUS " VCPKG_EXEC.....: ${VCPKG_EXEC}")
|
||||
message(STATUS " VCPKG_BOOTSTRAP: ${VCPKG_BOOTSTRAP}")
|
||||
endmacro()
|
||||
|
||||
macro(_install_or_update_vcpkg)
|
||||
if(NOT EXISTS ${VCPKG_ROOT})
|
||||
message(STATUS "Cloning vcpkg in ${VCPKG_ROOT}")
|
||||
execute_process(COMMAND git clone https://github.com/Microsoft/vcpkg.git ${VCPKG_ROOT})
|
||||
|
||||
# If a reproducible build is desired (and potentially old libraries are # ok), uncomment the
|
||||
# following line and pin the vcpkg repository to a specific githash.
|
||||
# execute_process(COMMAND git checkout 745a0aea597771a580d0b0f4886ea1e3a94dbca6 WORKING_DIRECTORY ${VCPKG_ROOT})
|
||||
else()
|
||||
# The following command has no effect if the vcpkg repository is in a detached head state.
|
||||
message(STATUS "Auto-updating vcpkg in ${VCPKG_ROOT}")
|
||||
execute_process(COMMAND git pull WORKING_DIRECTORY ${VCPKG_ROOT})
|
||||
endif()
|
||||
|
||||
if(NOT EXISTS ${VCPKG_ROOT}/README.md)
|
||||
message(FATAL_ERROR "***** FATAL ERROR: Could not clone vcpkg *****")
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
set(VCPKG_EXEC ${VCPKG_ROOT}/vcpkg.exe)
|
||||
set(VCPKG_BOOTSTRAP ${VCPKG_ROOT}/bootstrap-vcpkg.bat)
|
||||
else()
|
||||
set(VCPKG_EXEC ${VCPKG_ROOT}/vcpkg)
|
||||
set(VCPKG_BOOTSTRAP ${VCPKG_ROOT}/bootstrap-vcpkg.sh)
|
||||
endif()
|
||||
|
||||
if(NOT EXISTS ${VCPKG_EXEC})
|
||||
message("Bootstrapping vcpkg in ${VCPKG_ROOT}")
|
||||
execute_process(COMMAND ${VCPKG_BOOTSTRAP} WORKING_DIRECTORY ${VCPKG_ROOT})
|
||||
endif()
|
||||
|
||||
if(NOT EXISTS ${VCPKG_EXEC})
|
||||
message(FATAL_ERROR "***** FATAL ERROR: Could not bootstrap vcpkg *****")
|
||||
endif()
|
||||
|
||||
endmacro()
|
||||
|
||||
# Installs the list of packages given as parameters using Vcpkg
|
||||
macro(vcpkg_install_packages)
|
||||
|
||||
# Need the given list to be space-separated
|
||||
#string (REPLACE ";" " " PACKAGES_LIST_STR "${ARGN}")
|
||||
|
||||
message(STATUS "Installing/Updating the following vcpkg-packages: ${PACKAGES_LIST_STR}")
|
||||
|
||||
if (VCPKG_TRIPLET)
|
||||
set(ENV{VCPKG_DEFAULT_TRIPLET} "${VCPKG_TRIPLET}")
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND ${VCPKG_EXEC} install ${ARGN}
|
||||
WORKING_DIRECTORY ${VCPKG_ROOT}
|
||||
)
|
||||
endmacro()
|
||||
|
||||
# MIT License
|
||||
#
|
||||
# Copyright (c) 2019 REGoth-project
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in all
|
||||
# copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
+215
@@ -0,0 +1,215 @@
|
||||
cmake_minimum_required(VERSION 3.16.0 FATAL_ERROR)
|
||||
|
||||
set(CMAKE_SYSTEM_VERSION 10.0 CACHE STRING "" FORCE)
|
||||
set(CMAKE_CXX_STANDARD 20 CACHE STRING "The C++ standard to use")
|
||||
#set(CMAKE_C_STANDARD 11 CACHE STRING "The C standard to use") - issue with soh compile with MSVC
|
||||
|
||||
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "Minimum OS X deployment version" FORCE)
|
||||
|
||||
project(Ship LANGUAGES C CXX
|
||||
VERSION 4.0.4)
|
||||
set(PROJECT_BUILD_NAME "ZHORA ECHO" CACHE STRING "")
|
||||
set(PROJECT_TEAM "github.com/harbourmasters" CACHE STRING "")
|
||||
|
||||
set_property(DIRECTORY ${CMAKE_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT soh)
|
||||
add_compile_options($<$<CXX_COMPILER_ID:MSVC>:/MP>)
|
||||
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
include(CMake/automate-vcpkg.cmake)
|
||||
|
||||
set(VCPKG_TRIPLET x64-windows-static)
|
||||
set(VCPKG_TARGET_TRIPLET x64-windows-static)
|
||||
|
||||
vcpkg_bootstrap()
|
||||
vcpkg_install_packages(zlib bzip2 libpng SDL2 SDL2-net GLEW glfw3)
|
||||
endif()
|
||||
|
||||
################################################################################
|
||||
# Set target arch type if empty. Visual studio solution generator provides it.
|
||||
################################################################################
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
if(NOT CMAKE_VS_PLATFORM_NAME)
|
||||
set(CMAKE_VS_PLATFORM_NAME "x64")
|
||||
endif()
|
||||
message("${CMAKE_VS_PLATFORM_NAME} architecture in use")
|
||||
|
||||
if(NOT ("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64"
|
||||
OR "${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32"))
|
||||
message(FATAL_ERROR "${CMAKE_VS_PLATFORM_NAME} arch is not supported!")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
################################################################################
|
||||
# Global configuration types
|
||||
################################################################################
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "NintendoSwitch")
|
||||
set(CMAKE_C_FLAGS_DEBUG "-O3 -ffast-math")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "-O3 -ffast-math")
|
||||
set(CMAKE_C_FLAGS_RELEASE "-O3 -ffast-math -DNDEBUG")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -ffast-math -DNDEBUG")
|
||||
else()
|
||||
set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG")
|
||||
set(CMAKE_OBJCXX_FLAGS_RELEASE "-O2 -DNDEBUG")
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_BUILD_TYPE )
|
||||
set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Choose the type of build." FORCE)
|
||||
endif()
|
||||
|
||||
################################################################################
|
||||
# Global compiler options
|
||||
################################################################################
|
||||
if(MSVC)
|
||||
# remove default flags provided with CMake for MSVC
|
||||
set(CMAKE_C_FLAGS "")
|
||||
set(CMAKE_C_FLAGS_DEBUG "")
|
||||
set(CMAKE_C_FLAGS_RELEASE "")
|
||||
set(CMAKE_CXX_FLAGS "")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "")
|
||||
endif()
|
||||
|
||||
################################################################################
|
||||
# Global linker options
|
||||
################################################################################
|
||||
if(MSVC)
|
||||
# remove default flags provided with CMake for MSVC
|
||||
set(CMAKE_EXE_LINKER_FLAGS "")
|
||||
set(CMAKE_MODULE_LINKER_FLAGS "")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "")
|
||||
set(CMAKE_STATIC_LINKER_FLAGS "")
|
||||
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS}")
|
||||
set(CMAKE_MODULE_LINKER_FLAGS_DEBUG "${CMAKE_MODULE_LINKER_FLAGS}")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS}")
|
||||
set(CMAKE_STATIC_LINKER_FLAGS_DEBUG "${CMAKE_STATIC_LINKER_FLAGS}")
|
||||
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS}")
|
||||
set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS}")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS}")
|
||||
set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "${CMAKE_STATIC_LINKER_FLAGS}")
|
||||
endif()
|
||||
|
||||
################################################################################
|
||||
# Common utils
|
||||
################################################################################
|
||||
include(CMake/Utils.cmake)
|
||||
|
||||
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
get_linux_lsb_release_information()
|
||||
message(STATUS "Linux ${LSB_RELEASE_ID_SHORT} ${LSB_RELEASE_VERSION_SHORT} ${LSB_RELEASE_CODENAME_SHORT}")
|
||||
else()
|
||||
message(STATUS ${CMAKE_SYSTEM_NAME})
|
||||
endif()
|
||||
|
||||
################################################################################
|
||||
# Additional Global Settings(add specific info there)
|
||||
################################################################################
|
||||
include(CMake/GlobalSettingsInclude.cmake OPTIONAL)
|
||||
|
||||
################################################################################
|
||||
# Use solution folders feature
|
||||
################################################################################
|
||||
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||
|
||||
################################################################################
|
||||
# Sub-projects
|
||||
################################################################################
|
||||
add_subdirectory(libultraship/libultraship ${CMAKE_BINARY_DIR}/libultraship)
|
||||
add_subdirectory(ZAPDTR/ZAPD ${CMAKE_BINARY_DIR}/ZAPD)
|
||||
add_subdirectory(ZAPDTR/ZAPDUtils ${CMAKE_BINARY_DIR}/ZAPDUtils)
|
||||
add_subdirectory(OTRExporter)
|
||||
add_subdirectory(soh)
|
||||
if(NOT CMAKE_SYSTEM_NAME MATCHES "Darwin|NintendoSwitch|CafeOS")
|
||||
add_subdirectory(OTRGui)
|
||||
endif()
|
||||
|
||||
set_property(TARGET soh PROPERTY APPIMAGE_DESKTOP_FILE_TERMINAL YES)
|
||||
set_property(TARGET soh PROPERTY APPIMAGE_DESKTOP_FILE "${CMAKE_SOURCE_DIR}/scripts/linux/appimage/soh.desktop")
|
||||
set_property(TARGET soh PROPERTY APPIMAGE_ICON_FILE "${CMAKE_BINARY_DIR}/sohIcon.png")
|
||||
|
||||
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
|
||||
install(PROGRAMS "${CMAKE_SOURCE_DIR}/scripts/linux/appimage/soh.sh" DESTINATION . COMPONENT appimage)
|
||||
endif()
|
||||
|
||||
find_package(Python3 COMPONENTS Interpreter)
|
||||
|
||||
add_custom_target(
|
||||
ExtractAssets
|
||||
# CMake versions prior to 3.17 do not have the rm command, use remove instead for older versions
|
||||
COMMAND ${CMAKE_COMMAND} -E $<IF:$<VERSION_LESS:${CMAKE_VERSION},3.17>,remove,rm> -f oot.otr
|
||||
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/OTRExporter/extract_assets.py -z "$<TARGET_FILE:ZAPD>"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy oot.otr ${CMAKE_SOURCE_DIR}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy oot.otr ${CMAKE_BINARY_DIR}/soh
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/OTRExporter
|
||||
COMMENT "Running asset extraction..."
|
||||
DEPENDS ZAPD
|
||||
BYPRODUCTS oot.otr ${CMAKE_SOURCE_DIR}/oot.otr
|
||||
)
|
||||
|
||||
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
find_package(ImageMagick COMPONENTS convert)
|
||||
if (ImageMagick_FOUND)
|
||||
execute_process (
|
||||
COMMAND ${ImageMagick_convert_EXECUTABLE} soh/macosx/sohIcon.png -resize 512x512 ${CMAKE_BINARY_DIR}/sohIcon.png
|
||||
OUTPUT_VARIABLE outVar
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
|
||||
add_custom_target(CreateOSXIcons
|
||||
COMMAND mkdir -p ${CMAKE_BINARY_DIR}/macosx/soh.iconset
|
||||
COMMAND sips -z 16 16 soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_16x16.png
|
||||
COMMAND sips -z 32 32 soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_16x16@2x.png
|
||||
COMMAND sips -z 32 32 soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_32x32.png
|
||||
COMMAND sips -z 64 64 soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_32x32@2x.png
|
||||
COMMAND sips -z 128 128 soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_128x128.png
|
||||
COMMAND sips -z 256 256 soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_128x128@2x.png
|
||||
COMMAND sips -z 256 256 soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_256x256.png
|
||||
COMMAND sips -z 512 512 soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_256x256@2x.png
|
||||
COMMAND sips -z 512 512 soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_512x512.png
|
||||
COMMAND cp soh/macosx/sohIcon.png ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_512x512@2x.png
|
||||
COMMAND iconutil -c icns -o ${CMAKE_BINARY_DIR}/macosx/soh.icns ${CMAKE_BINARY_DIR}/macosx/soh.iconset
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
COMMENT "Creating OSX icons ..."
|
||||
)
|
||||
add_dependencies(soh CreateOSXIcons)
|
||||
|
||||
add_custom_target(Assets ALL
|
||||
COMMAND ${CMAKE_COMMAND} -Dsrc_dir="${CMAKE_SOURCE_DIR}/OTRGui/assets/extractor" -Ddst_dir="${CMAKE_BINARY_DIR}/assets/extractor" -P "${CMAKE_SOURCE_DIR}/OTRGui/Overwrite.cmake"
|
||||
COMMAND ${CMAKE_COMMAND} -Dsrc_dir="${CMAKE_SOURCE_DIR}/OTRExporter/assets" -Ddst_dir="${CMAKE_BINARY_DIR}/assets/game" -P "${CMAKE_SOURCE_DIR}/OTRGui/Overwrite.cmake"
|
||||
COMMAND ${CMAKE_COMMAND} -Dsrc_dir="${CMAKE_SOURCE_DIR}/soh/assets/xml" -Ddst_dir="${CMAKE_BINARY_DIR}/assets/extractor/xmls" -P "${CMAKE_SOURCE_DIR}/OTRGui/Overwrite.cmake"
|
||||
)
|
||||
add_dependencies(soh Assets)
|
||||
|
||||
install(TARGETS ZAPD DESTINATION ${CMAKE_BINARY_DIR}/assets/extractor)
|
||||
|
||||
set(PROGRAM_PERMISSIONS_EXECUTE OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ)
|
||||
|
||||
install(DIRECTORY ${CMAKE_BINARY_DIR}/assets
|
||||
DESTINATION .
|
||||
PATTERN ZAPD.out
|
||||
PERMISSIONS ${PROGRAM_PERMISSIONS_EXECUTE}
|
||||
)
|
||||
|
||||
install(CODE "
|
||||
include(BundleUtilities)
|
||||
fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/soh-macos\" \"\" \"${dirs}\")
|
||||
")
|
||||
|
||||
endif()
|
||||
|
||||
if(CMAKE_SYSTEM_NAME MATCHES "Windows|NintendoSwitch|CafeOS")
|
||||
install(FILES ${CMAKE_SOURCE_DIR}/README.md DESTINATION . COMPONENT ship RENAME readme.txt )
|
||||
endif()
|
||||
|
||||
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
set(CPACK_GENERATOR "External")
|
||||
elseif(CMAKE_SYSTEM_NAME MATCHES "Windows|NintendoSwitch|CafeOS")
|
||||
set(CPACK_GENERATOR "ZIP")
|
||||
elseif(CMAKE_SYSTEM_NAME MATCHES "Darwin")
|
||||
set(CPACK_GENERATOR "Bundle")
|
||||
endif()
|
||||
|
||||
set(CPACK_PROJECT_CONFIG_FILE ${CMAKE_SOURCE_DIR}/CMake/Packaging-2.cmake)
|
||||
include(CMake/Packaging.cmake)
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
FROM ubuntu:20.04 as build
|
||||
|
||||
ENV LANG C.UTF-8
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
ENV GCCVER=10
|
||||
RUN apt-get update && \
|
||||
apt-get upgrade -y && \
|
||||
apt-get install -y \
|
||||
binutils \
|
||||
gcc-${GCCVER} \
|
||||
g++-${GCCVER} \
|
||||
patchelf \
|
||||
p7zip-full \
|
||||
python3 \
|
||||
cmake \
|
||||
make \
|
||||
curl \
|
||||
git \
|
||||
lld \
|
||||
libsdl2-dev \
|
||||
zlib1g-dev \
|
||||
libbz2-dev \
|
||||
libpng-dev \
|
||||
libgles2-mesa-dev \
|
||||
wget \
|
||||
gpg \
|
||||
imagemagick \
|
||||
ninja-build && \
|
||||
apt-get install -y software-properties-common && \
|
||||
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null && \
|
||||
apt-add-repository "deb https://apt.kitware.com/ubuntu/ focal main" && \
|
||||
apt-get update && \
|
||||
apt-get upgrade -y && \
|
||||
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${GCCVER} 10 && \
|
||||
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-${GCCVER} 10
|
||||
|
||||
RUN git clone https://github.com/Perlmint/glew-cmake.git && \
|
||||
cmake glew-cmake && \
|
||||
make -j$(nproc) && \
|
||||
make install
|
||||
|
||||
ENV SDL2VER=2.0.22
|
||||
RUN curl -sLO https://libsdl.org/release/SDL2-${SDL2VER}.tar.gz && \
|
||||
tar -xzf SDL2-${SDL2VER}.tar.gz && \
|
||||
cd SDL2-${SDL2VER} && \
|
||||
./configure --build=x86_64-linux-gnu && \
|
||||
make -j$(nproc) && make install && \
|
||||
rm ../SDL2-${SDL2VER}.tar.gz && \
|
||||
cp -av /usr/local/lib/libSDL* /lib/x86_64-linux-gnu/
|
||||
|
||||
RUN \
|
||||
ln -sf /proc/self/mounts /etc/mtab && \
|
||||
mkdir -p /usr/local/share/keyring/ && \
|
||||
wget -O /usr/local/share/keyring/devkitpro-pub.gpg https://apt.devkitpro.org/devkitpro-pub.gpg && \
|
||||
echo "deb [signed-by=/usr/local/share/keyring/devkitpro-pub.gpg] https://apt.devkitpro.org stable main" > /etc/apt/sources.list.d/devkitpro.list && \
|
||||
apt-get update -y && \
|
||||
apt-get install -y devkitpro-pacman && \
|
||||
yes | dkp-pacman -Syu switch-dev switch-portlibs wiiu-dev wiiu-portlibs --noconfirm
|
||||
|
||||
ENV DEVKITPRO=/opt/devkitpro
|
||||
ENV DEVKITARM=/opt/devkitpro/devkitARM
|
||||
ENV DEVKITPPC=/opt/devkitpro/devkitPPC
|
||||
ENV PATH=$PATH:/opt/devkitpro/portlibs/switch/bin/:$DEVKITPPC/bin
|
||||
ENV WUT_ROOT=$DEVKITPRO/wut
|
||||
|
||||
RUN mkdir /soh
|
||||
WORKDIR /soh
|
||||
Vendored
+230
@@ -0,0 +1,230 @@
|
||||
pipeline {
|
||||
agent none
|
||||
|
||||
options {
|
||||
timestamps()
|
||||
skipDefaultCheckout(true)
|
||||
disableConcurrentBuilds(abortPrevious: true)
|
||||
}
|
||||
|
||||
stages {
|
||||
stage('Generate Assets') {
|
||||
agent {
|
||||
label "SoH-Asset-Builders"
|
||||
}
|
||||
steps {
|
||||
timeout(time: 10) {
|
||||
checkout([
|
||||
$class: 'GitSCM',
|
||||
branches: scm.branches,
|
||||
doGenerateSubmoduleConfigurations: scm.doGenerateSubmoduleConfigurations,
|
||||
extensions: scm.extensions,
|
||||
userRemoteConfigs: scm.userRemoteConfigs
|
||||
])
|
||||
sh '''
|
||||
cp ../../ZELOOTD.z64 OTRExporter/baserom_non_mq.z64
|
||||
cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"
|
||||
cmake --build build-cmake --target ExtractAssets --config Release
|
||||
'''
|
||||
stash includes: 'soh/assets/**/*', name: 'assets'
|
||||
}
|
||||
}
|
||||
post {
|
||||
unsuccessful {
|
||||
step([$class: 'WsCleanup']) // Clean workspace
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Build SoH') {
|
||||
parallel {
|
||||
stage ('Build Windows') {
|
||||
environment {
|
||||
PLATFORM='x64'
|
||||
PYTHON='C:\\Users\\jenkins\\AppData\\Local\\Programs\\Python\\Python310\\python.exe'
|
||||
CMAKE='C:\\Program Files\\CMake\\bin\\cmake.exe'
|
||||
CPACK='C:\\Program Files\\CMake\\bin\\cpack.exe'
|
||||
TOOLSET='v142'
|
||||
}
|
||||
agent {
|
||||
label "SoH-Builders"
|
||||
}
|
||||
steps {
|
||||
checkout([
|
||||
$class: 'GitSCM',
|
||||
branches: scm.branches,
|
||||
doGenerateSubmoduleConfigurations: scm.doGenerateSubmoduleConfigurations,
|
||||
extensions: scm.extensions,
|
||||
userRemoteConfigs: scm.userRemoteConfigs
|
||||
])
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
unstash 'assets'
|
||||
bat """
|
||||
"${env.CMAKE}" -S . -B "build\\${env.PLATFORM}" -G "Visual Studio 17 2022" -T ${env.TOOLSET} -A ${env.PLATFORM} -D Python_EXECUTABLE=${env.PYTHON} -D CMAKE_BUILD_TYPE:STRING=Release
|
||||
"${env.CMAKE}" --build ".\\build\\${env.PLATFORM}" --target OTRGui --config Release
|
||||
"${env.CMAKE}" --build ".\\build\\${env.PLATFORM}" --config Release
|
||||
cd ".\\build\\${env.PLATFORM}"
|
||||
"${env.CPACK}" -G ZIP
|
||||
cd "..\\..\\"
|
||||
|
||||
move "_packages\\*.zip" "soh.zip"
|
||||
"""
|
||||
}
|
||||
archiveArtifacts artifacts: 'soh.zip', followSymlinks: false, onlyIfSuccessful: true
|
||||
}
|
||||
post {
|
||||
always {
|
||||
step([$class: 'WsCleanup']) // Clean workspace
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ('Build Linux') {
|
||||
agent {
|
||||
label "SoH-Linux-Builders"
|
||||
}
|
||||
steps {
|
||||
checkout([
|
||||
$class: 'GitSCM',
|
||||
branches: scm.branches,
|
||||
doGenerateSubmoduleConfigurations: scm.doGenerateSubmoduleConfigurations,
|
||||
extensions: scm.extensions,
|
||||
userRemoteConfigs: scm.userRemoteConfigs
|
||||
])
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
unstash 'assets'
|
||||
sh '''
|
||||
if docker ps -aq --filter "name=sohcont" | grep -q .; then docker rm -f sohcont; fi
|
||||
docker build . -t soh
|
||||
docker run --name sohcont -dit --rm -v $(pwd):/soh soh /bin/bash
|
||||
docker exec sohcont scripts/linux/appimage/build.sh
|
||||
|
||||
mv README.md readme.txt
|
||||
mv build-cmake/*.appimage soh.appimage
|
||||
|
||||
7z a soh-linux.7z soh.appimage readme.txt
|
||||
|
||||
'''
|
||||
}
|
||||
archiveArtifacts artifacts: 'soh-linux.7z', followSymlinks: false, onlyIfSuccessful: true
|
||||
}
|
||||
post {
|
||||
always {
|
||||
sh 'sudo docker container stop sohcont'
|
||||
sh 'docker images --quiet --filter=dangling=true | xargs --no-run-if-empty docker rmi' // Clean dangling docker images
|
||||
step([$class: 'WsCleanup']) // Clean workspace
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ('Build macOS') {
|
||||
agent {
|
||||
label "SoH-Mac-Builders"
|
||||
}
|
||||
steps {
|
||||
checkout([
|
||||
$class: 'GitSCM',
|
||||
branches: scm.branches,
|
||||
doGenerateSubmoduleConfigurations: scm.doGenerateSubmoduleConfigurations,
|
||||
extensions: scm.extensions,
|
||||
userRemoteConfigs: scm.userRemoteConfigs
|
||||
])
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
unstash 'assets'
|
||||
sh '''
|
||||
cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"
|
||||
cmake --build build-cmake --config Release --
|
||||
(cd build-cmake && cpack)
|
||||
|
||||
mv README.md readme.txt
|
||||
mv _packages/*.dmg SoH.dmg
|
||||
|
||||
7z a soh-mac.7z SoH.dmg readme.txt
|
||||
'''
|
||||
}
|
||||
archiveArtifacts artifacts: 'soh-mac.7z', followSymlinks: false, onlyIfSuccessful: true
|
||||
}
|
||||
post {
|
||||
always {
|
||||
step([$class: 'WsCleanup']) // Clean workspace
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ('Build Switch') {
|
||||
agent {
|
||||
label "SoH-Linux-Builders"
|
||||
}
|
||||
steps {
|
||||
checkout([
|
||||
$class: 'GitSCM',
|
||||
branches: scm.branches,
|
||||
doGenerateSubmoduleConfigurations: scm.doGenerateSubmoduleConfigurations,
|
||||
extensions: scm.extensions,
|
||||
userRemoteConfigs: scm.userRemoteConfigs
|
||||
])
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
unstash 'assets'
|
||||
sh '''
|
||||
if docker ps -aq --filter "name=sohswitchcont" | grep -q .; then docker rm -f sohswitchcont; fi
|
||||
docker build . -t sohswitch
|
||||
docker run --name sohswitchcont -dit --rm -v $(pwd):/soh sohswitch /bin/bash
|
||||
docker exec sohswitchcont scripts/switch/build.sh
|
||||
|
||||
mv build-switch/soh/*.nro soh.nro
|
||||
mv README.md readme.txt
|
||||
|
||||
7z a soh-switch.7z soh.nro readme.txt
|
||||
|
||||
'''
|
||||
}
|
||||
archiveArtifacts artifacts: 'soh-switch.7z', followSymlinks: false, onlyIfSuccessful: true
|
||||
}
|
||||
post {
|
||||
always {
|
||||
sh 'sudo docker container stop sohswitchcont'
|
||||
sh 'docker images --quiet --filter=dangling=true | xargs --no-run-if-empty docker rmi' // Clean dangling docker images
|
||||
step([$class: 'WsCleanup']) // Clean workspace
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ('Build Wii U') {
|
||||
agent {
|
||||
label "SoH-Linux-Builders"
|
||||
}
|
||||
steps {
|
||||
checkout([
|
||||
$class: 'GitSCM',
|
||||
branches: scm.branches,
|
||||
doGenerateSubmoduleConfigurations: scm.doGenerateSubmoduleConfigurations,
|
||||
extensions: scm.extensions,
|
||||
userRemoteConfigs: scm.userRemoteConfigs
|
||||
])
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
unstash 'assets'
|
||||
sh '''
|
||||
if docker ps -aq --filter "name=sohwiiucont" | grep -q .; then docker rm -f sohwiiucont; fi
|
||||
docker build . -t sohwiiu
|
||||
docker run --name sohwiiucont -dit --rm -v $(pwd):/soh sohwiiu /bin/bash
|
||||
docker exec sohwiiucont scripts/wiiu/build.sh
|
||||
|
||||
mv build-wiiu/soh/*.rpx soh.rpx
|
||||
mv build-wiiu/soh/*.wuhb soh.wuhb
|
||||
mv README.md readme.txt
|
||||
|
||||
7z a soh-wiiu.7z soh.rpx soh.wuhb readme.txt
|
||||
|
||||
'''
|
||||
}
|
||||
archiveArtifacts artifacts: 'soh-wiiu.7z', followSymlinks: false, onlyIfSuccessful: true
|
||||
}
|
||||
post {
|
||||
always {
|
||||
sh 'sudo docker container stop sohwiiucont'
|
||||
sh 'docker images --quiet --filter=dangling=true | xargs --no-run-if-empty docker rmi' // Clean dangling docker images
|
||||
step([$class: 'WsCleanup']) // Clean workspace
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -341,10 +341,13 @@ build/
|
||||
ZAPDUtils/build/
|
||||
ZAPD/BuildInfo.h
|
||||
baserom/
|
||||
baserom_ntsc/
|
||||
*.vtx.inc
|
||||
*.otr
|
||||
*.swp
|
||||
*.a
|
||||
*.z64
|
||||
*.n64
|
||||
Extract/
|
||||
|
||||
tmp.txt
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<SymbolMap File="SymbolMap_OoTMqDbg.txt"/>
|
||||
<ActorList File="ActorList_OoTMqDbg.txt"/>
|
||||
<ObjectList File="ObjectList_OoTMqDbg.txt"/>
|
||||
<ExternalXMLFolder Path="../soh/assets/xml/"/>
|
||||
<ExternalXMLFolder Path="../soh/assets/xml/GC_NMQ_PAL_F/"/>
|
||||
<TexturePool File="TexturePool.xml"/>
|
||||
<ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/>
|
||||
</Root>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,65 @@
|
||||
################################################################################
|
||||
# Command for variable_watch. This command issues error message, if a variable
|
||||
# is changed. If variable PROPERTY_READER_GUARD_DISABLED is TRUE nothing happens
|
||||
# variable_watch(<variable> property_reader_guard)
|
||||
################################################################################
|
||||
function(property_reader_guard VARIABLE ACCESS VALUE CURRENT_LIST_FILE STACK)
|
||||
if("${PROPERTY_READER_GUARD_DISABLED}")
|
||||
return()
|
||||
endif()
|
||||
|
||||
if("${ACCESS}" STREQUAL "MODIFIED_ACCESS")
|
||||
message(FATAL_ERROR
|
||||
" Variable ${VARIABLE} is not supposed to be changed.\n"
|
||||
" It is used only for reading target property ${VARIABLE}.\n"
|
||||
" Use\n"
|
||||
" set_target_properties(\"<target>\" PROPERTIES \"${VARIABLE}\" \"<value>\")\n"
|
||||
" or\n"
|
||||
" set_target_properties(\"<target>\" PROPERTIES \"${VARIABLE}_<CONFIG>\" \"<value>\")\n"
|
||||
" instead.\n")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
################################################################################
|
||||
# Create variable <name> with generator expression that expands to value of
|
||||
# target property <name>_<CONFIG>. If property is empty or not set then property
|
||||
# <name> is used instead. Variable <name> has watcher property_reader_guard that
|
||||
# doesn't allow to edit it.
|
||||
# create_property_reader(<name>)
|
||||
# Input:
|
||||
# name - Name of watched property and output variable
|
||||
################################################################################
|
||||
function(create_property_reader NAME)
|
||||
set(PROPERTY_READER_GUARD_DISABLED TRUE)
|
||||
set(CONFIG_VALUE "$<TARGET_GENEX_EVAL:${PROPS_TARGET},$<TARGET_PROPERTY:${PROPS_TARGET},${NAME}_$<UPPER_CASE:$<CONFIG>>>>")
|
||||
set(IS_CONFIG_VALUE_EMPTY "$<STREQUAL:${CONFIG_VALUE},>")
|
||||
set(GENERAL_VALUE "$<TARGET_GENEX_EVAL:${PROPS_TARGET},$<TARGET_PROPERTY:${PROPS_TARGET},${NAME}>>")
|
||||
set("${NAME}" "$<IF:${IS_CONFIG_VALUE_EMPTY},${GENERAL_VALUE},${CONFIG_VALUE}>" PARENT_SCOPE)
|
||||
variable_watch("${NAME}" property_reader_guard)
|
||||
endfunction()
|
||||
|
||||
################################################################################
|
||||
# Set property $<name>_${PROPS_CONFIG_U} of ${PROPS_TARGET} to <value>
|
||||
# set_config_specific_property(<name> <value>)
|
||||
# Input:
|
||||
# name - Prefix of property name
|
||||
# value - New value
|
||||
################################################################################
|
||||
function(set_config_specific_property NAME VALUE)
|
||||
set_target_properties("${PROPS_TARGET}" PROPERTIES "${NAME}_${PROPS_CONFIG_U}" "${VALUE}")
|
||||
endfunction()
|
||||
|
||||
################################################################################
|
||||
|
||||
create_property_reader("TARGET_NAME")
|
||||
create_property_reader("OUTPUT_DIRECTORY")
|
||||
|
||||
set_config_specific_property("TARGET_NAME" "${PROPS_TARGET}")
|
||||
set_config_specific_property("OUTPUT_NAME" "${TARGET_NAME}")
|
||||
set_config_specific_property("ARCHIVE_OUTPUT_NAME" "${TARGET_NAME}")
|
||||
set_config_specific_property("LIBRARY_OUTPUT_NAME" "${TARGET_NAME}")
|
||||
set_config_specific_property("RUNTIME_OUTPUT_NAME" "${TARGET_NAME}")
|
||||
|
||||
set_config_specific_property("ARCHIVE_OUTPUT_DIRECTORY" "${OUTPUT_DIRECTORY}")
|
||||
set_config_specific_property("LIBRARY_OUTPUT_DIRECTORY" "${OUTPUT_DIRECTORY}")
|
||||
set_config_specific_property("RUNTIME_OUTPUT_DIRECTORY" "${OUTPUT_DIRECTORY}")
|
||||
@@ -0,0 +1,12 @@
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/Default.cmake")
|
||||
|
||||
set_config_specific_property("OUTPUT_DIRECTORY" "${CMAKE_SOURCE_DIR}$<$<NOT:$<STREQUAL:${CMAKE_VS_PLATFORM_NAME},Win32>>:/${CMAKE_VS_PLATFORM_NAME}>/${PROPS_CONFIG}")
|
||||
|
||||
if(MSVC)
|
||||
create_property_reader("DEFAULT_CXX_EXCEPTION_HANDLING")
|
||||
create_property_reader("DEFAULT_CXX_DEBUG_INFORMATION_FORMAT")
|
||||
|
||||
set_target_properties("${PROPS_TARGET}" PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
|
||||
set_config_specific_property("DEFAULT_CXX_EXCEPTION_HANDLING" "/EHsc")
|
||||
set_config_specific_property("DEFAULT_CXX_DEBUG_INFORMATION_FORMAT" "/Zi")
|
||||
endif()
|
||||
@@ -0,0 +1,233 @@
|
||||
# utils file for projects came from visual studio solution with cmake-converter.
|
||||
|
||||
################################################################################
|
||||
# Wrap each token of the command with condition
|
||||
################################################################################
|
||||
cmake_policy(PUSH)
|
||||
cmake_policy(SET CMP0054 NEW)
|
||||
macro(prepare_commands)
|
||||
unset(TOKEN_ROLE)
|
||||
unset(COMMANDS)
|
||||
foreach(TOKEN ${ARG_COMMANDS})
|
||||
if("${TOKEN}" STREQUAL "COMMAND")
|
||||
set(TOKEN_ROLE "KEYWORD")
|
||||
elseif("${TOKEN_ROLE}" STREQUAL "KEYWORD")
|
||||
set(TOKEN_ROLE "CONDITION")
|
||||
elseif("${TOKEN_ROLE}" STREQUAL "CONDITION")
|
||||
set(TOKEN_ROLE "COMMAND")
|
||||
elseif("${TOKEN_ROLE}" STREQUAL "COMMAND")
|
||||
set(TOKEN_ROLE "ARG")
|
||||
endif()
|
||||
|
||||
if("${TOKEN_ROLE}" STREQUAL "KEYWORD")
|
||||
list(APPEND COMMANDS "${TOKEN}")
|
||||
elseif("${TOKEN_ROLE}" STREQUAL "CONDITION")
|
||||
set(CONDITION ${TOKEN})
|
||||
elseif("${TOKEN_ROLE}" STREQUAL "COMMAND")
|
||||
list(APPEND COMMANDS "$<$<NOT:${CONDITION}>:${DUMMY}>$<${CONDITION}:${TOKEN}>")
|
||||
elseif("${TOKEN_ROLE}" STREQUAL "ARG")
|
||||
list(APPEND COMMANDS "$<${CONDITION}:${TOKEN}>")
|
||||
endif()
|
||||
endforeach()
|
||||
endmacro()
|
||||
cmake_policy(POP)
|
||||
|
||||
################################################################################
|
||||
# Transform all the tokens to absolute paths
|
||||
################################################################################
|
||||
macro(prepare_output)
|
||||
unset(OUTPUT)
|
||||
foreach(TOKEN ${ARG_OUTPUT})
|
||||
if(IS_ABSOLUTE ${TOKEN})
|
||||
list(APPEND OUTPUT "${TOKEN}")
|
||||
else()
|
||||
list(APPEND OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/${TOKEN}")
|
||||
endif()
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
################################################################################
|
||||
# Parse add_custom_command_if args.
|
||||
#
|
||||
# Input:
|
||||
# PRE_BUILD - Pre build event option
|
||||
# PRE_LINK - Pre link event option
|
||||
# POST_BUILD - Post build event option
|
||||
# TARGET - Target
|
||||
# OUTPUT - List of output files
|
||||
# DEPENDS - List of files on which the command depends
|
||||
# COMMANDS - List of commands(COMMAND condition1 commannd1 args1 COMMAND
|
||||
# condition2 commannd2 args2 ...)
|
||||
# Output:
|
||||
# OUTPUT - Output files
|
||||
# DEPENDS - Files on which the command depends
|
||||
# COMMENT - Comment
|
||||
# PRE_BUILD - TRUE/FALSE
|
||||
# PRE_LINK - TRUE/FALSE
|
||||
# POST_BUILD - TRUE/FALSE
|
||||
# TARGET - Target name
|
||||
# COMMANDS - Prepared commands(every token is wrapped in CONDITION)
|
||||
# NAME - Unique name for custom target
|
||||
# STEP - PRE_BUILD/PRE_LINK/POST_BUILD
|
||||
################################################################################
|
||||
function(add_custom_command_if_parse_arguments)
|
||||
cmake_parse_arguments("ARG" "PRE_BUILD;PRE_LINK;POST_BUILD" "TARGET;COMMENT" "DEPENDS;OUTPUT;COMMANDS" ${ARGN})
|
||||
|
||||
if(WIN32)
|
||||
set(DUMMY "cd.")
|
||||
elseif(UNIX)
|
||||
set(DUMMY "true")
|
||||
endif()
|
||||
|
||||
prepare_commands()
|
||||
prepare_output()
|
||||
|
||||
set(DEPENDS "${ARG_DEPENDS}")
|
||||
set(COMMENT "${ARG_COMMENT}")
|
||||
set(PRE_BUILD "${ARG_PRE_BUILD}")
|
||||
set(PRE_LINK "${ARG_PRE_LINK}")
|
||||
set(POST_BUILD "${ARG_POST_BUILD}")
|
||||
set(TARGET "${ARG_TARGET}")
|
||||
if(PRE_BUILD)
|
||||
set(STEP "PRE_BUILD")
|
||||
elseif(PRE_LINK)
|
||||
set(STEP "PRE_LINK")
|
||||
elseif(POST_BUILD)
|
||||
set(STEP "POST_BUILD")
|
||||
endif()
|
||||
set(NAME "${TARGET}_${STEP}")
|
||||
|
||||
set(OUTPUT "${OUTPUT}" PARENT_SCOPE)
|
||||
set(DEPENDS "${DEPENDS}" PARENT_SCOPE)
|
||||
set(COMMENT "${COMMENT}" PARENT_SCOPE)
|
||||
set(PRE_BUILD "${PRE_BUILD}" PARENT_SCOPE)
|
||||
set(PRE_LINK "${PRE_LINK}" PARENT_SCOPE)
|
||||
set(POST_BUILD "${POST_BUILD}" PARENT_SCOPE)
|
||||
set(TARGET "${TARGET}" PARENT_SCOPE)
|
||||
set(COMMANDS "${COMMANDS}" PARENT_SCOPE)
|
||||
set(STEP "${STEP}" PARENT_SCOPE)
|
||||
set(NAME "${NAME}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
################################################################################
|
||||
# Add conditional custom command
|
||||
#
|
||||
# Generating Files
|
||||
# The first signature is for adding a custom command to produce an output:
|
||||
# add_custom_command_if(
|
||||
# <OUTPUT output1 [output2 ...]>
|
||||
# <COMMANDS>
|
||||
# <COMMAND condition command1 [args1...]>
|
||||
# [COMMAND condition command2 [args2...]]
|
||||
# [DEPENDS [depends...]]
|
||||
# [COMMENT comment]
|
||||
#
|
||||
# Build Events
|
||||
# add_custom_command_if(
|
||||
# <TARGET target>
|
||||
# <PRE_BUILD | PRE_LINK | POST_BUILD>
|
||||
# <COMMAND condition command1 [args1...]>
|
||||
# [COMMAND condition command2 [args2...]]
|
||||
# [COMMENT comment]
|
||||
#
|
||||
# Input:
|
||||
# output - Output files the command is expected to produce
|
||||
# condition - Generator expression for wrapping the command
|
||||
# command - Command-line(s) to execute at build time.
|
||||
# args - Command`s args
|
||||
# depends - Files on which the command depends
|
||||
# comment - Display the given message before the commands are executed at
|
||||
# build time.
|
||||
# PRE_BUILD - Run before any other rules are executed within the target
|
||||
# PRE_LINK - Run after sources have been compiled but before linking the
|
||||
# binary
|
||||
# POST_BUILD - Run after all other rules within the target have been
|
||||
# executed
|
||||
################################################################################
|
||||
function(add_custom_command_if)
|
||||
add_custom_command_if_parse_arguments(${ARGN})
|
||||
|
||||
if(OUTPUT AND TARGET)
|
||||
message(FATAL_ERROR "Wrong syntax. A TARGET and OUTPUT can not both be specified.")
|
||||
endif()
|
||||
|
||||
if(OUTPUT)
|
||||
add_custom_command(OUTPUT ${OUTPUT}
|
||||
${COMMANDS}
|
||||
DEPENDS ${DEPENDS}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
COMMENT ${COMMENT})
|
||||
elseif(TARGET)
|
||||
if(PRE_BUILD AND NOT ${CMAKE_GENERATOR} MATCHES "Visual Studio")
|
||||
add_custom_target(
|
||||
${NAME}
|
||||
${COMMANDS}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
COMMENT ${COMMENT})
|
||||
add_dependencies(${TARGET} ${NAME})
|
||||
else()
|
||||
add_custom_command(
|
||||
TARGET ${TARGET}
|
||||
${STEP}
|
||||
${COMMANDS}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
COMMENT ${COMMENT})
|
||||
endif()
|
||||
else()
|
||||
message(FATAL_ERROR "Wrong syntax. A TARGET or OUTPUT must be specified.")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
################################################################################
|
||||
# Use props file for a target and configs
|
||||
# use_props(<target> <configs...> <props_file>)
|
||||
# Inside <props_file> there are following variables:
|
||||
# PROPS_TARGET - <target>
|
||||
# PROPS_CONFIG - One of <configs...>
|
||||
# PROPS_CONFIG_U - Uppercase PROPS_CONFIG
|
||||
# Input:
|
||||
# target - Target to apply props file
|
||||
# configs - Build configurations to apply props file
|
||||
# props_file - CMake script
|
||||
################################################################################
|
||||
macro(use_props TARGET CONFIGS PROPS_FILE)
|
||||
set(PROPS_TARGET "${TARGET}")
|
||||
foreach(PROPS_CONFIG ${CONFIGS})
|
||||
string(TOUPPER "${PROPS_CONFIG}" PROPS_CONFIG_U)
|
||||
|
||||
get_filename_component(ABSOLUTE_PROPS_FILE "${PROPS_FILE}" ABSOLUTE BASE_DIR "${CMAKE_CURRENT_LIST_DIR}")
|
||||
if(EXISTS "${ABSOLUTE_PROPS_FILE}")
|
||||
include("${ABSOLUTE_PROPS_FILE}")
|
||||
else()
|
||||
message(WARNING "Corresponding cmake file from props \"${ABSOLUTE_PROPS_FILE}\" doesn't exist")
|
||||
endif()
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
################################################################################
|
||||
# Add compile options to source file
|
||||
# source_file_compile_options(<source_file> [compile_options...])
|
||||
# Input:
|
||||
# source_file - Source file
|
||||
# compile_options - Options to add to COMPILE_FLAGS property
|
||||
################################################################################
|
||||
function(source_file_compile_options SOURCE_FILE)
|
||||
if("${ARGC}" LESS_EQUAL "1")
|
||||
return()
|
||||
endif()
|
||||
|
||||
get_source_file_property(COMPILE_OPTIONS "${SOURCE_FILE}" COMPILE_OPTIONS)
|
||||
|
||||
if(COMPILE_OPTIONS)
|
||||
list(APPEND COMPILE_OPTIONS ${ARGN})
|
||||
else()
|
||||
set(COMPILE_OPTIONS "${ARGN}")
|
||||
endif()
|
||||
|
||||
set_source_files_properties("${SOURCE_FILE}" PROPERTIES COMPILE_OPTIONS "${COMPILE_OPTIONS}")
|
||||
endfunction()
|
||||
|
||||
################################################################################
|
||||
# Default properties of visual studio projects
|
||||
################################################################################
|
||||
set(DEFAULT_CXX_PROPS "${CMAKE_CURRENT_LIST_DIR}/DefaultCXX.cmake")
|
||||
@@ -0,0 +1,96 @@
|
||||
cmake_minimum_required(VERSION 3.16.0 FATAL_ERROR)
|
||||
|
||||
set(CMAKE_SYSTEM_VERSION 10.0 CACHE STRING "" FORCE)
|
||||
set(CMAKE_CXX_STANDARD 20 CACHE STRING "The C++ standard to use")
|
||||
#set(CMAKE_C_STANDARD 11 CACHE STRING "The C standard to use")
|
||||
set(CMAKE_C_STANDARD 11)
|
||||
|
||||
project(OTRExporter C CXX)
|
||||
|
||||
################################################################################
|
||||
# Set target arch type if empty. Visual studio solution generator provides it.
|
||||
################################################################################
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
if(NOT CMAKE_VS_PLATFORM_NAME)
|
||||
set(CMAKE_VS_PLATFORM_NAME "x64")
|
||||
endif()
|
||||
message("${CMAKE_VS_PLATFORM_NAME} architecture in use")
|
||||
|
||||
if(NOT ("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64"
|
||||
OR "${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32"))
|
||||
message(FATAL_ERROR "${CMAKE_VS_PLATFORM_NAME} arch is not supported!")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
################################################################################
|
||||
# Global configuration types
|
||||
################################################################################
|
||||
set(CMAKE_CONFIGURATION_TYPES
|
||||
"Debug"
|
||||
"Release"
|
||||
CACHE STRING "" FORCE
|
||||
)
|
||||
|
||||
################################################################################
|
||||
# Global compiler options
|
||||
################################################################################
|
||||
if(MSVC)
|
||||
# remove default flags provided with CMake for MSVC
|
||||
set(CMAKE_C_FLAGS "")
|
||||
set(CMAKE_C_FLAGS_DEBUG "")
|
||||
set(CMAKE_C_FLAGS_RELEASE "")
|
||||
set(CMAKE_CXX_FLAGS "")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "")
|
||||
endif()
|
||||
|
||||
################################################################################
|
||||
# Global linker options
|
||||
################################################################################
|
||||
if(MSVC)
|
||||
# remove default flags provided with CMake for MSVC
|
||||
set(CMAKE_EXE_LINKER_FLAGS "")
|
||||
set(CMAKE_MODULE_LINKER_FLAGS "")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "")
|
||||
set(CMAKE_STATIC_LINKER_FLAGS "")
|
||||
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS}")
|
||||
set(CMAKE_MODULE_LINKER_FLAGS_DEBUG "${CMAKE_MODULE_LINKER_FLAGS}")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS}")
|
||||
set(CMAKE_STATIC_LINKER_FLAGS_DEBUG "${CMAKE_STATIC_LINKER_FLAGS}")
|
||||
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS}")
|
||||
set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS}")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS}")
|
||||
set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "${CMAKE_STATIC_LINKER_FLAGS}")
|
||||
endif()
|
||||
|
||||
################################################################################
|
||||
# Common utils
|
||||
################################################################################
|
||||
include(CMake/Utils.cmake)
|
||||
|
||||
################################################################################
|
||||
# Additional Global Settings(add specific info there)
|
||||
################################################################################
|
||||
include(CMake/GlobalSettingsInclude.cmake OPTIONAL)
|
||||
|
||||
################################################################################
|
||||
# Use solution folders feature
|
||||
################################################################################
|
||||
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||
|
||||
################################################################################
|
||||
# Sub-projects
|
||||
################################################################################
|
||||
if (NOT TARGET libultraship)
|
||||
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../libultraship/libultraship ${CMAKE_BINARY_DIR}/libultraship)
|
||||
endif()
|
||||
|
||||
if (NOT TARGET ZAPD)
|
||||
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../ZAPDTR/ZAPD ${CMAKE_BINARY_DIR}/ZAPD)
|
||||
endif()
|
||||
|
||||
if (NOT TARGET ZAPDUtils)
|
||||
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../ZAPDTR/ZAPDUtils ${CMAKE_BINARY_DIR}/ZAPDUtils)
|
||||
endif()
|
||||
|
||||
add_subdirectory(OTRExporter)
|
||||
@@ -1,68 +0,0 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.30320.27
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OTRExporter", "OTRExporter\OTRExporter.vcxproj", "{A6103FD3-0709-4FC7-B066-1A6E056D6306}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6DA9B521-65B7-41E2-8F8A-F0451CC18ED8} = {6DA9B521-65B7-41E2-8F8A-F0451CC18ED8}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libultraship", "..\libultraship\libultraship\libultraship.vcxproj", "{6DA9B521-65B7-41E2-8F8A-F0451CC18ED8}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZAPD", "..\ZAPDTR\ZAPD\ZAPD.vcxproj", "{B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6DA9B521-65B7-41E2-8F8A-F0451CC18ED8} = {6DA9B521-65B7-41E2-8F8A-F0451CC18ED8}
|
||||
{A2E01C3E-D647-45D1-9788-043DEBC1A908} = {A2E01C3E-D647-45D1-9788-043DEBC1A908}
|
||||
{A6103FD3-0709-4FC7-B066-1A6E056D6306} = {A6103FD3-0709-4FC7-B066-1A6E056D6306}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZAPDUtils", "..\ZAPDTR\ZAPDUtils\ZAPDUtils.vcxproj", "{A2E01C3E-D647-45D1-9788-043DEBC1A908}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{A6103FD3-0709-4FC7-B066-1A6E056D6306}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{A6103FD3-0709-4FC7-B066-1A6E056D6306}.Debug|x64.Build.0 = Debug|x64
|
||||
{A6103FD3-0709-4FC7-B066-1A6E056D6306}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{A6103FD3-0709-4FC7-B066-1A6E056D6306}.Debug|x86.Build.0 = Debug|Win32
|
||||
{A6103FD3-0709-4FC7-B066-1A6E056D6306}.Release|x64.ActiveCfg = Release|x64
|
||||
{A6103FD3-0709-4FC7-B066-1A6E056D6306}.Release|x64.Build.0 = Release|x64
|
||||
{A6103FD3-0709-4FC7-B066-1A6E056D6306}.Release|x86.ActiveCfg = Release|Win32
|
||||
{A6103FD3-0709-4FC7-B066-1A6E056D6306}.Release|x86.Build.0 = Release|Win32
|
||||
{6DA9B521-65B7-41E2-8F8A-F0451CC18ED8}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{6DA9B521-65B7-41E2-8F8A-F0451CC18ED8}.Debug|x64.Build.0 = Debug|x64
|
||||
{6DA9B521-65B7-41E2-8F8A-F0451CC18ED8}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{6DA9B521-65B7-41E2-8F8A-F0451CC18ED8}.Debug|x86.Build.0 = Debug|Win32
|
||||
{6DA9B521-65B7-41E2-8F8A-F0451CC18ED8}.Release|x64.ActiveCfg = Release|x64
|
||||
{6DA9B521-65B7-41E2-8F8A-F0451CC18ED8}.Release|x64.Build.0 = Release|x64
|
||||
{6DA9B521-65B7-41E2-8F8A-F0451CC18ED8}.Release|x86.ActiveCfg = Release|Win32
|
||||
{6DA9B521-65B7-41E2-8F8A-F0451CC18ED8}.Release|x86.Build.0 = Release|Win32
|
||||
{B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.Debug|x64.Build.0 = Debug|x64
|
||||
{B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.Debug|x86.Build.0 = Debug|Win32
|
||||
{B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.Release|x64.ActiveCfg = Release|x64
|
||||
{B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.Release|x64.Build.0 = Release|x64
|
||||
{B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.Release|x86.ActiveCfg = Release|Win32
|
||||
{B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.Release|x86.Build.0 = Release|Win32
|
||||
{A2E01C3E-D647-45D1-9788-043DEBC1A908}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{A2E01C3E-D647-45D1-9788-043DEBC1A908}.Debug|x64.Build.0 = Debug|x64
|
||||
{A2E01C3E-D647-45D1-9788-043DEBC1A908}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{A2E01C3E-D647-45D1-9788-043DEBC1A908}.Debug|x86.Build.0 = Debug|Win32
|
||||
{A2E01C3E-D647-45D1-9788-043DEBC1A908}.Release|x64.ActiveCfg = Release|x64
|
||||
{A2E01C3E-D647-45D1-9788-043DEBC1A908}.Release|x64.Build.0 = Release|x64
|
||||
{A2E01C3E-D647-45D1-9788-043DEBC1A908}.Release|x86.ActiveCfg = Release|Win32
|
||||
{A2E01C3E-D647-45D1-9788-043DEBC1A908}.Release|x86.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {DCE19FF1-37C0-49CD-915A-DD695E15F00B}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -49,12 +49,12 @@ void OTRExporter_Animation::Save(ZResource* res, const fs::path& outPath, Binary
|
||||
|
||||
writer->Write((uint32_t)normalAnim->rotationValues.size());
|
||||
|
||||
for (int i = 0; i < normalAnim->rotationValues.size(); i++)
|
||||
for (size_t i = 0; i < normalAnim->rotationValues.size(); i++)
|
||||
writer->Write(normalAnim->rotationValues[i]);
|
||||
|
||||
writer->Write((uint32_t)normalAnim->rotationIndices.size());
|
||||
|
||||
for (int i = 0; i < normalAnim->rotationIndices.size(); i++)
|
||||
for (size_t i = 0; i < normalAnim->rotationIndices.size(); i++)
|
||||
{
|
||||
writer->Write(normalAnim->rotationIndices[i].x);
|
||||
writer->Write(normalAnim->rotationIndices[i].y);
|
||||
|
||||
@@ -10,7 +10,7 @@ void OTRExporter_Array::Save(ZResource* res, const fs::path& outPath, BinaryWrit
|
||||
writer->Write((uint32_t)arr->resList[0]->GetResourceType());
|
||||
writer->Write((uint32_t)arr->arrayCnt);
|
||||
|
||||
for (int i = 0; i < arr->arrayCnt; i++)
|
||||
for (size_t i = 0; i < arr->arrayCnt; i++)
|
||||
{
|
||||
if (arr->resList[i]->GetResourceType() == ZResourceType::Vertex)
|
||||
{
|
||||
@@ -32,7 +32,7 @@ void OTRExporter_Array::Save(ZResource* res, const fs::path& outPath, BinaryWrit
|
||||
writer->Write((uint32_t)vec->scalarType);
|
||||
writer->Write((uint32_t)vec->dimensions);
|
||||
|
||||
for (int k = 0; k < vec->dimensions; k++)
|
||||
for (size_t k = 0; k < vec->dimensions; k++)
|
||||
{
|
||||
// OTRTODO: Duplicate code here. Cleanup at a later date...
|
||||
switch (vec->scalarType)
|
||||
@@ -62,6 +62,8 @@ void OTRExporter_Array::Save(ZResource* res, const fs::path& outPath, BinaryWrit
|
||||
writer->Write(vec->scalars[k].scalarData.u64);
|
||||
break;
|
||||
// OTRTODO: ADD OTHER TYPES
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -98,6 +100,8 @@ void OTRExporter_Array::Save(ZResource* res, const fs::path& outPath, BinaryWrit
|
||||
writer->Write(scal->scalarData.u64);
|
||||
break;
|
||||
// OTRTODO: ADD OTHER TYPES
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,192 @@
|
||||
#include "AudioExporter.h"
|
||||
#include "Main.h"
|
||||
#include <Animation.h>
|
||||
#include <Utils/MemoryStream.h>
|
||||
#include <Globals.h>
|
||||
#include <Utils/File.h>
|
||||
#include "DisplayListExporter.h"
|
||||
|
||||
void OTRExporter_Audio::WriteSampleEntryReference(ZAudio* audio, SampleEntry* entry, std::map<uint32_t, SampleEntry*> samples, BinaryWriter* writer)
|
||||
{
|
||||
writer->Write((uint8_t)(entry != nullptr ? 1 : 0));
|
||||
|
||||
if (entry != nullptr)
|
||||
{
|
||||
if (audio->sampleOffsets[entry->bankId].find(entry->sampleLoopOffset) != audio->sampleOffsets[entry->bankId].end())
|
||||
{
|
||||
if (audio->sampleOffsets[entry->bankId][entry->sampleLoopOffset].find(entry->sampleDataOffset) != audio->sampleOffsets[entry->bankId][entry->sampleLoopOffset].end())
|
||||
{
|
||||
writer->Write(StringHelper::Sprintf("audio/samples/%s", audio->sampleOffsets[entry->bankId][entry->sampleLoopOffset][entry->sampleDataOffset].c_str()));
|
||||
}
|
||||
else
|
||||
writer->Write(entry->fileName);
|
||||
}
|
||||
else
|
||||
writer->Write(entry->fileName);
|
||||
}
|
||||
else
|
||||
writer->Write("");
|
||||
}
|
||||
|
||||
void OTRExporter_Audio::WriteSampleEntry(SampleEntry* entry, BinaryWriter* writer)
|
||||
{
|
||||
WriteHeader(nullptr, "", writer, Ship::ResourceType::AudioSample, Ship::Version::Rachael);
|
||||
|
||||
writer->Write(entry->codec);
|
||||
writer->Write(entry->medium);
|
||||
writer->Write(entry->unk_bit26);
|
||||
writer->Write(entry->unk_bit25);
|
||||
|
||||
writer->Write((uint32_t)entry->data.size());
|
||||
writer->Write((char*)entry->data.data(), entry->data.size());
|
||||
|
||||
writer->Write((uint32_t)(entry->loop.start));
|
||||
writer->Write((uint32_t)(entry->loop.end));
|
||||
writer->Write((uint32_t)(entry->loop.count));
|
||||
writer->Write((uint32_t)entry->loop.states.size());
|
||||
|
||||
for (size_t i = 0; i < entry->loop.states.size(); i++)
|
||||
writer->Write((entry->loop.states[i]));
|
||||
|
||||
writer->Write((uint32_t)(entry->book.order));
|
||||
writer->Write((uint32_t)(entry->book.npredictors));
|
||||
writer->Write((uint32_t)entry->book.books.size());
|
||||
|
||||
for (size_t i = 0; i < entry->book.books.size(); i++)
|
||||
writer->Write((entry->book.books[i]));
|
||||
}
|
||||
|
||||
void OTRExporter_Audio::WriteSoundFontEntry(ZAudio* audio, SoundFontEntry* entry, std::map<uint32_t, SampleEntry*> samples, BinaryWriter* writer)
|
||||
{
|
||||
writer->Write((uint8_t)(entry != nullptr ? 1 : 0));
|
||||
|
||||
if (entry != nullptr)
|
||||
{
|
||||
WriteSampleEntryReference(audio, entry->sampleEntry, samples, writer);
|
||||
writer->Write(entry->tuning);
|
||||
}
|
||||
}
|
||||
|
||||
void OTRExporter_Audio::WriteEnvData(std::vector<AdsrEnvelope*> envelopes, BinaryWriter* writer)
|
||||
{
|
||||
writer->Write((uint32_t)envelopes.size());
|
||||
|
||||
for (auto env : envelopes)
|
||||
{
|
||||
writer->Write(env->delay);
|
||||
writer->Write(env->arg);
|
||||
}
|
||||
}
|
||||
|
||||
void OTRExporter_Audio::Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer)
|
||||
{
|
||||
ZAudio* audio = (ZAudio*)res;
|
||||
|
||||
WriteHeader(res, outPath, writer, Ship::ResourceType::Audio, Ship::Version::Rachael);
|
||||
|
||||
// Write Samples as individual files
|
||||
for (auto pair : audio->samples)
|
||||
{
|
||||
MemoryStream* sampleStream = new MemoryStream();
|
||||
BinaryWriter sampleWriter = BinaryWriter(sampleStream);
|
||||
|
||||
writer->Write((uint32_t)pair.first);
|
||||
WriteSampleEntry(pair.second, &sampleWriter);
|
||||
|
||||
std::string basePath = "";
|
||||
|
||||
if (audio->sampleOffsets[pair.second->bankId].find(pair.second->sampleLoopOffset) != audio->sampleOffsets[pair.second->bankId].end())
|
||||
{
|
||||
if (audio->sampleOffsets[pair.second->bankId][pair.second->sampleLoopOffset].find(pair.second->sampleDataOffset) != audio->sampleOffsets[pair.second->bankId][pair.second->sampleLoopOffset].end())
|
||||
basePath = StringHelper::Sprintf("samples/%s", audio->sampleOffsets[pair.second->bankId][pair.second->sampleLoopOffset][pair.second->sampleDataOffset].c_str());
|
||||
else
|
||||
basePath = StringHelper::Sprintf("samples/sample_%08X", pair.first);
|
||||
}
|
||||
else
|
||||
basePath = StringHelper::Sprintf("samples/sample_%08X", pair.first);
|
||||
|
||||
std::string fName = OTRExporter_DisplayList::GetPathToRes(res, basePath);
|
||||
AddFile(fName, sampleStream->ToVector());
|
||||
}
|
||||
|
||||
// Write the soundfont table
|
||||
for (size_t i = 0; i < audio->soundFontTable.size(); i++)
|
||||
{
|
||||
MemoryStream* fntStream = new MemoryStream();
|
||||
BinaryWriter fntWriter = BinaryWriter(fntStream);
|
||||
|
||||
WriteHeader(nullptr, "", &fntWriter, Ship::ResourceType::AudioSoundFont, Ship::Version::Rachael);
|
||||
|
||||
fntWriter.Write((uint32_t)i);
|
||||
fntWriter.Write(audio->soundFontTable[i].medium);
|
||||
fntWriter.Write(audio->soundFontTable[i].cachePolicy);
|
||||
fntWriter.Write(audio->soundFontTable[i].data1);
|
||||
fntWriter.Write(audio->soundFontTable[i].data2);
|
||||
fntWriter.Write(audio->soundFontTable[i].data3);
|
||||
|
||||
fntWriter.Write((uint32_t)audio->soundFontTable[i].drums.size());
|
||||
fntWriter.Write((uint32_t)audio->soundFontTable[i].instruments.size());
|
||||
fntWriter.Write((uint32_t)audio->soundFontTable[i].soundEffects.size());
|
||||
|
||||
for (size_t k = 0; k < audio->soundFontTable[i].drums.size(); k++)
|
||||
{
|
||||
fntWriter.Write(audio->soundFontTable[i].drums[k].releaseRate);
|
||||
fntWriter.Write(audio->soundFontTable[i].drums[k].pan);
|
||||
fntWriter.Write(audio->soundFontTable[i].drums[k].loaded);
|
||||
|
||||
WriteEnvData(audio->soundFontTable[i].drums[k].env, &fntWriter);
|
||||
|
||||
WriteSampleEntryReference(audio, audio->soundFontTable[i].drums[k].sample, audio->samples, &fntWriter);
|
||||
fntWriter.Write(audio->soundFontTable[i].drums[k].tuning);
|
||||
}
|
||||
|
||||
for (size_t k = 0; k < audio->soundFontTable[i].instruments.size(); k++)
|
||||
{
|
||||
fntWriter.Write((uint8_t)audio->soundFontTable[i].instruments[k].isValidInstrument);
|
||||
|
||||
fntWriter.Write(audio->soundFontTable[i].instruments[k].loaded);
|
||||
fntWriter.Write(audio->soundFontTable[i].instruments[k].normalRangeLo);
|
||||
fntWriter.Write(audio->soundFontTable[i].instruments[k].normalRangeHi);
|
||||
fntWriter.Write(audio->soundFontTable[i].instruments[k].releaseRate);
|
||||
|
||||
WriteEnvData(audio->soundFontTable[i].instruments[k].env, &fntWriter);
|
||||
|
||||
WriteSoundFontEntry(audio, audio->soundFontTable[i].instruments[k].lowNotesSound, audio->samples, &fntWriter);
|
||||
WriteSoundFontEntry(audio, audio->soundFontTable[i].instruments[k].normalNotesSound, audio->samples, &fntWriter);
|
||||
WriteSoundFontEntry(audio, audio->soundFontTable[i].instruments[k].highNotesSound, audio->samples, &fntWriter);
|
||||
}
|
||||
|
||||
for (size_t k = 0; k < audio->soundFontTable[i].soundEffects.size(); k++)
|
||||
{
|
||||
WriteSoundFontEntry(audio, audio->soundFontTable[i].soundEffects[k], audio->samples, &fntWriter);
|
||||
}
|
||||
|
||||
//std::string fName = OTRExporter_DisplayList::GetPathToRes(res, StringHelper::Sprintf("fonts/font_%02X", i));
|
||||
std::string fName = OTRExporter_DisplayList::GetPathToRes(res, StringHelper::Sprintf("fonts/%s", audio->soundFontNames[i].c_str()));
|
||||
AddFile(fName, fntStream->ToVector());
|
||||
}
|
||||
|
||||
// Write Sequences
|
||||
for (size_t i = 0; i < audio->sequences.size(); i++)
|
||||
{
|
||||
auto seq = audio->sequences[i];
|
||||
|
||||
MemoryStream* seqStream = new MemoryStream();
|
||||
BinaryWriter seqWriter = BinaryWriter(seqStream);
|
||||
|
||||
WriteHeader(nullptr, "", &seqWriter, Ship::ResourceType::AudioSequence, Ship::Version::Rachael);
|
||||
|
||||
seqWriter.Write((uint32_t)seq.size());
|
||||
seqWriter.Write(seq.data(), seq.size());
|
||||
seqWriter.Write((uint8_t)i);
|
||||
seqWriter.Write((uint8_t)audio->sequenceTable[i].medium);
|
||||
seqWriter.Write((uint8_t)audio->sequenceTable[i].cachePolicy);
|
||||
seqWriter.Write((uint32_t)audio->fontIndices[i].size());
|
||||
|
||||
for (size_t k = 0; k < audio->fontIndices[i].size(); k++)
|
||||
seqWriter.Write((uint8_t)audio->fontIndices[i][k]);
|
||||
|
||||
std::string fName = OTRExporter_DisplayList::GetPathToRes(res, StringHelper::Sprintf("sequences/%s", audio->seqNames[i].c_str()));
|
||||
AddFile(fName, seqStream->ToVector());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
#pragma once
|
||||
|
||||
#include "ZResource.h"
|
||||
#include "ZAudio.h"
|
||||
#include "Exporter.h"
|
||||
#include <Utils/BinaryWriter.h>
|
||||
|
||||
class OTRExporter_Audio : public OTRExporter
|
||||
{
|
||||
public:
|
||||
void WriteSampleEntry(SampleEntry* entry, BinaryWriter* writer);
|
||||
void WriteSampleEntryReference(ZAudio* audio, SampleEntry* entry, std::map<uint32_t, SampleEntry*> samples, BinaryWriter* writer);
|
||||
void WriteSoundFontEntry(ZAudio* audio, SoundFontEntry* entry, std::map<uint32_t, SampleEntry*> samples, BinaryWriter* writer);
|
||||
void WriteEnvData(std::vector<AdsrEnvelope*> envelopes, BinaryWriter* writer);
|
||||
virtual void Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer) override;
|
||||
};
|
||||
@@ -0,0 +1,249 @@
|
||||
set(PROJECT_NAME OTRExporter)
|
||||
|
||||
################################################################################
|
||||
# Source groups
|
||||
################################################################################
|
||||
set(Header_Files
|
||||
"AnimationExporter.h"
|
||||
"ArrayExporter.h"
|
||||
"AudioExporter.h"
|
||||
"BackgroundExporter.h"
|
||||
"BlobExporter.h"
|
||||
"CollisionExporter.h"
|
||||
"command_macros_base.h"
|
||||
"CutsceneExporter.h"
|
||||
"DisplayListExporter.h"
|
||||
"Exporter.h"
|
||||
"Main.h"
|
||||
"MtxExporter.h"
|
||||
"PathExporter.h"
|
||||
"PlayerAnimationExporter.h"
|
||||
"RoomExporter.h"
|
||||
"SkeletonExporter.h"
|
||||
"SkeletonLimbExporter.h"
|
||||
"TextExporter.h"
|
||||
"TextureExporter.h"
|
||||
"VersionInfo.h"
|
||||
"VtxExporter.h"
|
||||
"z64cutscene.h"
|
||||
"z64cutscene_commands.h"
|
||||
)
|
||||
source_group("Header Files" FILES ${Header_Files})
|
||||
|
||||
set(Source_Files
|
||||
"AnimationExporter.cpp"
|
||||
"ArrayExporter.cpp"
|
||||
"AudioExporter.cpp"
|
||||
"BackgroundExporter.cpp"
|
||||
"BlobExporter.cpp"
|
||||
"CollisionExporter.cpp"
|
||||
"CutsceneExporter.cpp"
|
||||
"DisplayListExporter.cpp"
|
||||
"Exporter.cpp"
|
||||
"Main.cpp"
|
||||
"MtxExporter.cpp"
|
||||
"PathExporter.cpp"
|
||||
"PlayerAnimationExporter.cpp"
|
||||
"RoomExporter.cpp"
|
||||
"SkeletonExporter.cpp"
|
||||
"SkeletonLimbExporter.cpp"
|
||||
"TextExporter.cpp"
|
||||
"TextureExporter.cpp"
|
||||
"VersionInfo.cpp"
|
||||
"VtxExporter.cpp"
|
||||
)
|
||||
source_group("Source Files" FILES ${Source_Files})
|
||||
|
||||
set(ALL_FILES
|
||||
${Header_Files}
|
||||
${Source_Files}
|
||||
)
|
||||
|
||||
################################################################################
|
||||
# Target
|
||||
################################################################################
|
||||
add_library(${PROJECT_NAME} STATIC ${ALL_FILES})
|
||||
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
use_props(${PROJECT_NAME} "${CMAKE_CONFIGURATION_TYPES}" "${DEFAULT_CXX_PROPS}")
|
||||
endif()
|
||||
|
||||
set(ROOT_NAMESPACE OTRExporter)
|
||||
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||
VS_GLOBAL_KEYWORD "Win32Proj"
|
||||
)
|
||||
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||
INTERPROCEDURAL_OPTIMIZATION_RELEASE "TRUE"
|
||||
)
|
||||
elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x86")
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||
INTERPROCEDURAL_OPTIMIZATION_RELEASE "TRUE"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
################################################################################
|
||||
# MSVC runtime library
|
||||
################################################################################
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
get_property(MSVC_RUNTIME_LIBRARY_DEFAULT TARGET ${PROJECT_NAME} PROPERTY MSVC_RUNTIME_LIBRARY)
|
||||
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
|
||||
string(CONCAT "MSVC_RUNTIME_LIBRARY_STR"
|
||||
$<$<CONFIG:Debug>:
|
||||
MultiThreadedDebug
|
||||
>
|
||||
$<$<CONFIG:Release>:
|
||||
MultiThreaded
|
||||
>
|
||||
$<$<NOT:$<OR:$<CONFIG:Debug>,$<CONFIG:Release>>>:${MSVC_RUNTIME_LIBRARY_DEFAULT}>
|
||||
)
|
||||
endif()
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY ${MSVC_RUNTIME_LIBRARY_STR})
|
||||
endif()
|
||||
################################################################################
|
||||
# Compile definitions
|
||||
################################################################################
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
|
||||
target_compile_definitions(${PROJECT_NAME} PRIVATE
|
||||
"$<$<CONFIG:Debug>:"
|
||||
"_DEBUG"
|
||||
">"
|
||||
"$<$<CONFIG:Release>:"
|
||||
"NDEBUG"
|
||||
">"
|
||||
"_CONSOLE;"
|
||||
"_CRT_SECURE_NO_WARNINGS;"
|
||||
"UNICODE;"
|
||||
"_UNICODE"
|
||||
STORMLIB_NO_AUTO_LINK
|
||||
)
|
||||
elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x86")
|
||||
target_compile_definitions(${PROJECT_NAME} PRIVATE
|
||||
"$<$<CONFIG:Debug>:"
|
||||
"_DEBUG;"
|
||||
"_CRT_SECURE_NO_WARNINGS"
|
||||
">"
|
||||
"$<$<CONFIG:Release>:"
|
||||
"NDEBUG"
|
||||
">"
|
||||
"WIN32;"
|
||||
"_CONSOLE;"
|
||||
"UNICODE;"
|
||||
"_UNICODE"
|
||||
STORMLIB_NO_AUTO_LINK
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU|Clang|AppleClang")
|
||||
target_compile_definitions(${PROJECT_NAME} PRIVATE
|
||||
"$<$<CONFIG:Debug>:"
|
||||
"_DEBUG"
|
||||
">"
|
||||
"$<$<CONFIG:Release>:"
|
||||
"NDEBUG"
|
||||
">"
|
||||
"_CONSOLE;"
|
||||
"_CRT_SECURE_NO_WARNINGS;"
|
||||
"UNICODE;"
|
||||
"_UNICODE"
|
||||
)
|
||||
endif()
|
||||
################################################################################
|
||||
# Compile and link options
|
||||
################################################################################
|
||||
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../ZAPDTR/ZAPD/
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../ZAPDTR/ZAPDUtils
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../ZAPDTR/lib/tinyxml2
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../libultraship/libultraship
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../libultraship/libultraship/Lib/spdlog/include
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../libultraship/libultraship/Lib/Fast3D/U64
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../StormLib/src
|
||||
.
|
||||
)
|
||||
|
||||
if(MSVC)
|
||||
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
|
||||
target_compile_options(${PROJECT_NAME} PRIVATE
|
||||
$<$<CONFIG:Release>:
|
||||
/Oi;
|
||||
/Gy
|
||||
>
|
||||
/permissive-;
|
||||
/sdl;
|
||||
/W3;
|
||||
${DEFAULT_CXX_DEBUG_INFORMATION_FORMAT};
|
||||
${DEFAULT_CXX_EXCEPTION_HANDLING}
|
||||
)
|
||||
elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x86")
|
||||
target_compile_options(${PROJECT_NAME} PRIVATE
|
||||
$<$<CONFIG:Release>:
|
||||
/Oi;
|
||||
/Gy
|
||||
>
|
||||
/permissive-;
|
||||
/sdl;
|
||||
/W3;
|
||||
${DEFAULT_CXX_DEBUG_INFORMATION_FORMAT};
|
||||
${DEFAULT_CXX_EXCEPTION_HANDLING}
|
||||
)
|
||||
endif()
|
||||
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
|
||||
target_link_options(${PROJECT_NAME} PRIVATE
|
||||
$<$<CONFIG:Release>:
|
||||
/OPT:REF;
|
||||
/OPT:ICF
|
||||
>
|
||||
/SUBSYSTEM:CONSOLE
|
||||
)
|
||||
elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x86")
|
||||
target_link_options(${PROJECT_NAME} PRIVATE
|
||||
$<$<CONFIG:Release>:
|
||||
/DEBUG;
|
||||
/OPT:REF;
|
||||
/OPT:ICF;
|
||||
/INCREMENTAL:NO
|
||||
>
|
||||
/SUBSYSTEM:CONSOLE
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU|Clang|AppleClang")
|
||||
target_compile_options(${PROJECT_NAME} PRIVATE
|
||||
-Wall -Wextra -Wno-error
|
||||
-Wno-unused-parameter
|
||||
-Wno-unused-function
|
||||
-Wno-unused-variable
|
||||
-Wno-missing-field-initializers
|
||||
-Wno-parentheses
|
||||
-Wno-narrowing
|
||||
$<$<COMPILE_LANGUAGE:CXX>:-Wno-deprecated-enum-enum-conversion>
|
||||
)
|
||||
endif()
|
||||
################################################################################
|
||||
# Dependencies
|
||||
################################################################################
|
||||
add_dependencies(${PROJECT_NAME}
|
||||
libultraship
|
||||
)
|
||||
|
||||
# Link with other targets.
|
||||
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
|
||||
set(ADDITIONAL_LIBRARY_DEPENDENCIES
|
||||
"$<$<CONFIG:Debug>:"
|
||||
"ZAPDUtils;"
|
||||
"OTRLib"
|
||||
">"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
target_link_libraries(${PROJECT_NAME} PUBLIC "${ADDITIONAL_LIBRARY_DEPENDENCIES}")
|
||||
|
||||
@@ -29,7 +29,7 @@ void OTRExporter_Cutscene::Save(ZResource* res, const fs::path& outPath, BinaryW
|
||||
for (auto& e : ((CutsceneCommandSetCameraPos*)cs->commands[i])->entries)
|
||||
{
|
||||
writer->Write(CMD_BBH(e->continueFlag, e->cameraRoll, e->nextPointFrame));
|
||||
writer->Write(CMD_F(e->viewAngle));
|
||||
writer->Write(e->viewAngle);
|
||||
writer->Write(CMD_HH(e->posX, e->posY));
|
||||
writer->Write(CMD_HH(e->posZ, e->unused));
|
||||
}
|
||||
@@ -46,7 +46,7 @@ void OTRExporter_Cutscene::Save(ZResource* res, const fs::path& outPath, BinaryW
|
||||
for (auto& e : ((CutsceneCommandSetCameraPos*)cs->commands[i])->entries)
|
||||
{
|
||||
writer->Write(CMD_BBH(e->continueFlag, e->cameraRoll, e->nextPointFrame));
|
||||
writer->Write(CMD_F(e->viewAngle));
|
||||
writer->Write(e->viewAngle);
|
||||
writer->Write(CMD_HH(e->posX, e->posY));
|
||||
writer->Write(CMD_HH(e->posZ, e->unused));
|
||||
}
|
||||
@@ -105,7 +105,7 @@ void OTRExporter_Cutscene::Save(ZResource* res, const fs::path& outPath, BinaryW
|
||||
for (auto& e : ((CutsceneCommandSetCameraPos*)cs->commands[i])->entries)
|
||||
{
|
||||
writer->Write(CMD_BBH(e->continueFlag, e->cameraRoll, e->nextPointFrame));
|
||||
writer->Write(CMD_F(e->viewAngle));
|
||||
writer->Write(e->viewAngle);
|
||||
writer->Write(CMD_HH(e->posX, e->posY));
|
||||
writer->Write(CMD_HH(e->posZ, e->unused));
|
||||
}
|
||||
@@ -122,7 +122,7 @@ void OTRExporter_Cutscene::Save(ZResource* res, const fs::path& outPath, BinaryW
|
||||
for (auto& e : ((CutsceneCommandSetCameraPos*)cs->commands[i])->entries)
|
||||
{
|
||||
writer->Write(CMD_BBH(e->continueFlag, e->cameraRoll, e->nextPointFrame));
|
||||
writer->Write(CMD_F(e->viewAngle));
|
||||
writer->Write(e->viewAngle);
|
||||
writer->Write(CMD_HH(e->posX, e->posY));
|
||||
writer->Write(CMD_HH(e->posZ, e->unused));
|
||||
}
|
||||
|
||||
@@ -29,20 +29,6 @@
|
||||
Ab1, Ad1)) \
|
||||
}
|
||||
|
||||
typedef int32_t Mtx_t[4][4];
|
||||
|
||||
typedef union Mtx
|
||||
{
|
||||
//_Alignas(8)
|
||||
Mtx_t m;
|
||||
int32_t l[16];
|
||||
struct
|
||||
{
|
||||
int16_t i[16];
|
||||
uint16_t f[16];
|
||||
};
|
||||
} Mtx;
|
||||
|
||||
#define gsSPBranchLessZraw2(dl, vtx, zval) \
|
||||
{ _SHIFTL(G_BRANCH_Z,24,8)|_SHIFTL((vtx)*5,12,12)|_SHIFTL((vtx)*2,0,12),\
|
||||
(unsigned int)(zval), }
|
||||
@@ -71,7 +57,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
|
||||
// DEBUG: Write in a marker
|
||||
Declaration* dbgDecl = dList->parent->GetDeclaration(dList->GetRawDataIndex());
|
||||
std::string dbgName = StringHelper::Sprintf("%s\\%s", GetParentFolderName(res).c_str(), dbgDecl->varName.c_str());
|
||||
std::string dbgName = StringHelper::Sprintf("%s/%s", GetParentFolderName(res).c_str(), dbgDecl->varName.c_str());
|
||||
uint64_t hash = CRC64(dbgName.c_str());
|
||||
writer->Write((uint32_t)(G_MARKER << 24));
|
||||
writer->Write((uint32_t)0xBEEFBEEF);
|
||||
@@ -81,7 +67,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
auto dlStart = std::chrono::steady_clock::now();
|
||||
|
||||
//for (auto data : dList->instructions)
|
||||
for (int dataIdx = 0; dataIdx < dList->instructions.size(); dataIdx++)
|
||||
for (size_t dataIdx = 0; dataIdx < dList->instructions.size(); dataIdx++)
|
||||
{
|
||||
auto data = dList->instructions[dataIdx];
|
||||
uint32_t word0 = 0;
|
||||
@@ -110,14 +96,14 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
{
|
||||
case G_NOOP:
|
||||
{
|
||||
Gfx value = gsDPNoOp();
|
||||
Gfx value = {gsDPNoOp()};
|
||||
word0 = value.words.w0;
|
||||
word1 = value.words.w1;
|
||||
}
|
||||
break;
|
||||
case G_ENDDL:
|
||||
{
|
||||
Gfx value = gsSPEndDisplayList();
|
||||
Gfx value = {gsSPEndDisplayList()};
|
||||
word0 = value.words.w0;
|
||||
word1 = value.words.w1;
|
||||
}
|
||||
@@ -128,7 +114,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
int32_t nnnn = (data & 0x0000FFFF00000000ULL) >> 32;
|
||||
int32_t vvvvvvvv = (data & 0x00000000FFFFFFFFULL);
|
||||
|
||||
Gfx value = gsSPModifyVertex(nnnn / 2, ww, vvvvvvvv);
|
||||
Gfx value = {gsSPModifyVertex(nnnn / 2, ww, vvvvvvvv)};
|
||||
word0 = value.words.w0;
|
||||
word1 = value.words.w1;
|
||||
}
|
||||
@@ -145,35 +131,35 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
int32_t cccccc = (data & 0x00FFFFFF00000000) >> 32;
|
||||
int32_t ssssssss = (data & 0xFFFFFFFF);
|
||||
|
||||
Gfx value = gsSPGeometryMode(~cccccc, ssssssss);
|
||||
Gfx value = {gsSPGeometryMode(~cccccc, ssssssss)};
|
||||
word0 = value.words.w0;
|
||||
word1 = value.words.w1;
|
||||
}
|
||||
break;
|
||||
case G_RDPPIPESYNC:
|
||||
{
|
||||
Gfx value = gsDPPipeSync();
|
||||
Gfx value = {gsDPPipeSync()};
|
||||
word0 = value.words.w0;
|
||||
word1 = value.words.w1;
|
||||
}
|
||||
break;
|
||||
case G_RDPLOADSYNC:
|
||||
{
|
||||
Gfx value = gsDPLoadSync();
|
||||
Gfx value = {gsDPLoadSync()};
|
||||
word0 = value.words.w0;
|
||||
word1 = value.words.w1;
|
||||
}
|
||||
break;
|
||||
case G_RDPTILESYNC:
|
||||
{
|
||||
Gfx value = gsDPTileSync();
|
||||
Gfx value = {gsDPTileSync()};
|
||||
word0 = value.words.w0;
|
||||
word1 = value.words.w1;
|
||||
}
|
||||
break;
|
||||
case G_RDPFULLSYNC:
|
||||
{
|
||||
Gfx value = gsDPFullSync();
|
||||
Gfx value = {gsDPFullSync()};
|
||||
word0 = value.words.w0;
|
||||
word1 = value.words.w1;
|
||||
}
|
||||
@@ -183,14 +169,14 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
int32_t hhhhhh = (data & 0x00FFFFFF00000000) >> 32;
|
||||
int32_t llllllll = (data & 0x00000000FFFFFFFF);
|
||||
|
||||
Gfx value = gsDPSetOtherMode(hhhhhh, llllllll);
|
||||
Gfx value = {gsDPSetOtherMode(hhhhhh, llllllll)};
|
||||
word0 = value.words.w0;
|
||||
word1 = value.words.w1;
|
||||
}
|
||||
break;
|
||||
case G_POPMTX:
|
||||
{
|
||||
Gfx value = gsSPPopMatrix(data);
|
||||
Gfx value = {gsSPPopMatrix(data)};
|
||||
word0 = value.words.w0;
|
||||
word1 = value.words.w1;
|
||||
}
|
||||
@@ -202,23 +188,23 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
uint8_t b = (uint8_t)((data & 0xFF00FF00) >> 8);
|
||||
uint8_t a = (uint8_t)((data & 0x000000FF) >> 0);
|
||||
|
||||
Gfx value = gsDPSetEnvColor(r, g, b, a);
|
||||
Gfx value = {gsDPSetEnvColor(r, g, b, a)};
|
||||
word0 = value.words.w0;
|
||||
word1 = value.words.w1;
|
||||
}
|
||||
break;
|
||||
case G_MTX:
|
||||
{
|
||||
if ((!Globals::Instance->HasSegment(GETSEGNUM(data))) || ((data & 0xFFFFFFFF) == 0x07000000)) // En_Zf and En_Ny place a DL in segment 7
|
||||
if ((!Globals::Instance->HasSegment(GETSEGNUM(data), res->parent->workerID)) || ((data & 0xFFFFFFFF) == 0x07000000)) // En_Zf and En_Ny place a DL in segment 7
|
||||
{
|
||||
uint32_t pp = (data & 0x000000FF00000000) >> 32;
|
||||
uint32_t mm = (data & 0x00000000FFFFFFFF);
|
||||
|
||||
pp ^= G_MTX_PUSH;
|
||||
|
||||
mm = (mm & 0x0FFFFFFF) + 0xF0000000;
|
||||
mm = (mm & 0x0FFFFFFF) + 1;
|
||||
|
||||
Gfx value = gsSPMatrix(mm, pp);
|
||||
Gfx value = {gsSPMatrix(mm, pp)};
|
||||
word0 = value.words.w0;
|
||||
word1 = value.words.w1;
|
||||
}
|
||||
@@ -228,7 +214,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
uint32_t mm = (data & 0x00000000FFFFFFFF);
|
||||
pp ^= G_MTX_PUSH;
|
||||
|
||||
Gfx value = gsSPMatrix(mm, pp);
|
||||
Gfx value = {gsSPMatrix(mm, pp)};
|
||||
word0 = value.words.w0;
|
||||
word1 = value.words.w1;
|
||||
|
||||
@@ -243,7 +229,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
|
||||
if (mtxDecl != nullptr)
|
||||
{
|
||||
std::string vName = StringHelper::Sprintf("%s\\%s", (GetParentFolderName(res).c_str()), mtxDecl->varName.c_str());
|
||||
std::string vName = StringHelper::Sprintf("%s/%s", (GetParentFolderName(res).c_str()), mtxDecl->varName.c_str());
|
||||
|
||||
uint64_t hash = CRC64(vName.c_str());
|
||||
|
||||
@@ -267,7 +253,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
int32_t xxx = (data & 0x0000000000FFF000) >> 12;
|
||||
int32_t ddd = (data & 0x0000000000000FFF);
|
||||
|
||||
Gfx value = gsDPLoadBlock(i, sss, ttt, xxx, ddd);
|
||||
Gfx value = {gsDPLoadBlock(i, sss, ttt, xxx, ddd)};
|
||||
word0 = value.words.w0;
|
||||
word1 = value.words.w1;
|
||||
}
|
||||
@@ -277,7 +263,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
int32_t vvvv = (data & 0xFFFF00000000) >> 32;
|
||||
int32_t wwww = (data & 0x0000FFFF);
|
||||
|
||||
Gfx value = gsSPCullDisplayList(vvvv / 2, wwww / 2);
|
||||
Gfx value = {gsSPCullDisplayList(vvvv / 2, wwww / 2)};
|
||||
word0 = value.words.w0;
|
||||
word1 = value.words.w1;
|
||||
}
|
||||
@@ -293,7 +279,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
uint32_t z = (data & 0x00000000FFFFFFFF) >> 0;
|
||||
uint32_t h = (data & 0xFFFFFFFF);
|
||||
|
||||
Gfx value = gsSPBranchLessZraw3(h & 0x00FFFFFF);
|
||||
Gfx value = {gsSPBranchLessZraw3(h & 0x00FFFFFF)};
|
||||
word0 = value.words.w0;
|
||||
word1 = value.words.w1;
|
||||
}
|
||||
@@ -306,7 +292,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
break;
|
||||
case G_RDPHALF_2:
|
||||
{
|
||||
Gfx value = gsDPWordLo(data & 0xFFFFFFFF);
|
||||
Gfx value = {gsDPWordLo(data & 0xFFFFFFFF)};
|
||||
word0 = value.words.w0;
|
||||
word1 = value.words.w1;
|
||||
}
|
||||
@@ -319,7 +305,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
int32_t XXX = (data & 0x0000000000FFF000) >> 12;
|
||||
int32_t YYY = (data & 0x0000000000000FFF);
|
||||
|
||||
Gfx value = gsSPTextureRectangle2(XXX, YYY, xxx, yyy, i);
|
||||
Gfx value = {gsSPTextureRectangle2(XXX, YYY, xxx, yyy, i)};
|
||||
word0 = value.words.w0;
|
||||
word1 = value.words.w1;
|
||||
}
|
||||
@@ -338,7 +324,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
|
||||
int bp = 0;
|
||||
|
||||
Gfx value = gsSPBranchLessZraw2(0xDEADABCD, (a / 5) | (b / 2), z);
|
||||
Gfx value = {gsSPBranchLessZraw2(0xDEADABCD, (a / 5) | (b / 2), z)};
|
||||
word0 = (value.words.w0 & 0x00FFFFFF) + (G_BRANCH_Z_OTR << 24);
|
||||
word1 = value.words.w1;
|
||||
|
||||
@@ -347,7 +333,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
|
||||
if (dListDecl != nullptr)
|
||||
{
|
||||
std::string vName = StringHelper::Sprintf("%s\\%s", (GetParentFolderName(res).c_str()), dListDecl->varName.c_str());
|
||||
std::string vName = StringHelper::Sprintf("%s/%s", (GetParentFolderName(res).c_str()), dListDecl->varName.c_str());
|
||||
|
||||
uint64_t hash = CRC64(vName.c_str());
|
||||
|
||||
@@ -370,21 +356,13 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
//std::string fName = StringHelper::Sprintf("%s\\%s", GetParentFolderName(res).c_str(), dListDecl2->varName.c_str());
|
||||
std::string fName = OTRExporter_DisplayList::GetPathToRes(res, dListDecl2->varName.c_str());
|
||||
|
||||
if (!File::Exists("Extract\\" + fName))
|
||||
if (files.find(fName) == files.end() && !File::Exists("Extract/" + fName))
|
||||
{
|
||||
MemoryStream* dlStream = new MemoryStream();
|
||||
BinaryWriter dlWriter = BinaryWriter(dlStream);
|
||||
|
||||
Save(dList->otherDLists[i], outPath, &dlWriter);
|
||||
|
||||
#ifdef _DEBUG
|
||||
//if (otrArchive->HasFile(fName))
|
||||
//otrArchive->RemoveFile(fName);
|
||||
#endif
|
||||
|
||||
File::WriteAllBytes("Extract\\" + fName, dlStream->ToVector());
|
||||
|
||||
//otrArchive->AddFile(fName, (uintptr_t)dlStream->ToVector().data(), dlWriter.GetBaseAddress());
|
||||
AddFile(fName, dlStream->ToVector());
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -401,19 +379,19 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
//case G_BRANCH_Z:
|
||||
case G_DL:
|
||||
{
|
||||
if ((!Globals::Instance->HasSegment(GETSEGNUM(data)) && (int)opF3D != G_BRANCH_Z)
|
||||
if ((!Globals::Instance->HasSegment(GETSEGNUM(data), res->parent->workerID) && (int)opF3D != G_BRANCH_Z)
|
||||
|| ((data & 0xFFFFFFFF) == 0x07000000)) // En_Zf and En_Ny place a DL in segment 7
|
||||
{
|
||||
int32_t pp = (data & 0x00FF000000000000) >> 56;
|
||||
|
||||
Gfx value;
|
||||
|
||||
u32 dListVal = (data & 0x0FFFFFFF) + 0xF0000000;
|
||||
u32 dListVal = (data & 0x0FFFFFFF) + 1;
|
||||
|
||||
if (pp != 0)
|
||||
value = gsSPBranchList(dListVal);
|
||||
value = {gsSPBranchList(dListVal)};
|
||||
else
|
||||
value = gsSPDisplayList(dListVal);
|
||||
value = {gsSPDisplayList(dListVal)};
|
||||
|
||||
word0 = value.words.w0;
|
||||
word1 = value.words.w1;
|
||||
@@ -441,7 +419,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
|
||||
if (dListDecl != nullptr)
|
||||
{
|
||||
std::string vName = StringHelper::Sprintf("%s\\%s", (GetParentFolderName(res).c_str()), dListDecl->varName.c_str());
|
||||
std::string vName = StringHelper::Sprintf("%s/%s", (GetParentFolderName(res).c_str()), dListDecl->varName.c_str());
|
||||
|
||||
uint64_t hash = CRC64(vName.c_str());
|
||||
|
||||
@@ -464,14 +442,14 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
//std::string fName = StringHelper::Sprintf("%s\\%s", GetParentFolderName(res).c_str(), dListDecl2->varName.c_str());
|
||||
std::string fName = OTRExporter_DisplayList::GetPathToRes(res, dListDecl2->varName.c_str());
|
||||
|
||||
if (!File::Exists("Extract\\" + fName))
|
||||
if (files.find(fName) == files.end() && !File::Exists("Extract/" + fName))
|
||||
{
|
||||
MemoryStream* dlStream = new MemoryStream();
|
||||
BinaryWriter dlWriter = BinaryWriter(dlStream);
|
||||
|
||||
Save(dList->otherDLists[i], outPath, &dlWriter);
|
||||
|
||||
File::WriteAllBytes("Extract\\" + fName, dlStream->ToVector());
|
||||
AddFile(fName, dlStream->ToVector());
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -491,7 +469,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
int32_t ddd = (____ & 0x700) >> 8;
|
||||
int32_t nnnnnnn = (____ & 0xFE) >> 1;
|
||||
|
||||
Gfx value = gsSPTexture(ssss, tttt, lll, ddd, nnnnnnn);
|
||||
Gfx value = {gsSPTexture(ssss, tttt, lll, ddd, nnnnnnn)};
|
||||
word0 = value.words.w0;
|
||||
word1 = value.words.w1;
|
||||
}
|
||||
@@ -502,7 +480,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
int32_t bb = ((data & 0x0000FF0000000000ULL) >> 40) / 2;
|
||||
int32_t cc = ((data & 0x000000FF00000000ULL) >> 32) / 2;
|
||||
|
||||
Gfx test = gsSP1Triangle(aa, bb, cc, 0);
|
||||
Gfx test = {gsSP1Triangle(aa, bb, cc, 0)};
|
||||
word0 = test.words.w0;
|
||||
word1 = test.words.w1;
|
||||
}
|
||||
@@ -516,7 +494,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
int32_t ee = ((data & 0x0000000000FF00ULL) >> 8) / 2;
|
||||
int32_t ff = ((data & 0x000000000000FFULL) >> 0) / 2;
|
||||
|
||||
Gfx test = gsSP2Triangles(aa, bb, cc, 0, dd, ee, ff, 0);
|
||||
Gfx test = {gsSP2Triangles(aa, bb, cc, 0, dd, ee, ff, 0)};
|
||||
word0 = test.words.w0;
|
||||
word1 = test.words.w1;
|
||||
}
|
||||
@@ -527,8 +505,8 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
int32_t bb = ((data & 0x0000FF0000000000ULL) >> 40) / 2;
|
||||
int32_t cc = ((data & 0x000000FF00000000ULL) >> 32) / 2;
|
||||
int32_t dd = ((data & 0x000000000000FFULL)) / 2;
|
||||
|
||||
Gfx test = gsSP1Quadrangle(aa, bb, cc, dd, 0);
|
||||
|
||||
Gfx test = {gsSP1Quadrangle(aa, bb, cc, dd, 0)};
|
||||
word0 = test.words.w0;
|
||||
word1 = test.words.w1;
|
||||
}
|
||||
@@ -542,7 +520,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
int32_t bb = (data & 0x000000000000FF00) >> 8;
|
||||
int32_t aa = (data & 0x00000000000000FF) >> 0;
|
||||
|
||||
Gfx value = gsDPSetPrimColor(mm, ff, rr, gg, bb, aa);
|
||||
Gfx value = {gsDPSetPrimColor(mm, ff, rr, gg, bb, aa)};
|
||||
word0 = value.words.w0;
|
||||
word1 = value.words.w1;
|
||||
}
|
||||
@@ -556,7 +534,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
|
||||
// TODO: Output the correct render modes in data
|
||||
|
||||
Gfx value = gsSPSetOtherMode(0xE2, sft, len, dd);
|
||||
Gfx value = {gsSPSetOtherMode(0xE2, sft, len, dd)};
|
||||
word0 = value.words.w0;
|
||||
word1 = value.words.w1;
|
||||
}
|
||||
@@ -574,11 +552,11 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
if (sft == 14) // G_MDSFT_TEXTLUT
|
||||
{
|
||||
const char* types[] = { "G_TT_NONE", "G_TT_NONE", "G_TT_RGBA16", "G_TT_IA16" };
|
||||
value = gsDPSetTextureLUT(dd >> 14);
|
||||
value = {gsDPSetTextureLUT(dd >> 14)};
|
||||
}
|
||||
else
|
||||
{
|
||||
value = gsSPSetOtherMode(0xE3, sft, nn + 1, dd);
|
||||
value = {gsSPSetOtherMode(0xE3, sft, nn + 1, dd)};
|
||||
}
|
||||
|
||||
word0 = value.words.w0;
|
||||
@@ -605,7 +583,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
int32_t bbbb = (data & 0b0000000000000000000000000000000000000000000000000000000011110000) >> 4;
|
||||
int32_t uuuu = (data & 0b0000000000000000000000000000000000000000000000000000000000001111);
|
||||
|
||||
Gfx value = gsDPSetTile(fff, ii, nnnnnnnnn, mmmmmmmmm, ttt, pppp, cc, aaaa, ssss, dd, bbbb, uuuu);
|
||||
Gfx value = {gsDPSetTile(fff, ii, nnnnnnnnn, mmmmmmmmm, ttt, pppp, cc, aaaa, ssss, dd, bbbb, uuuu)};
|
||||
word0 = value.words.w0;
|
||||
word1 = value.words.w1;
|
||||
}
|
||||
@@ -629,7 +607,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
int32_t ab1 = (data & 0b00000000000000000000000000000000000000000000000000000000111000) >> 3;
|
||||
int32_t ad1 = (data & 0b00000000000000000000000000000000000000000000000000000000000111) >> 0;
|
||||
|
||||
Gfx value = gsDPSetCombineLERP2(a0, b0, c0, d0, aa0, ab0, ac0, ad0, a1, b1, c1, d1, aa1, ab1, ac1, ad1);
|
||||
Gfx value = {gsDPSetCombineLERP2(a0, b0, c0, d0, aa0, ab0, ac0, ad0, a1, b1, c1, d1, aa1, ab1, ac1, ad1)};
|
||||
word0 = value.words.w0;
|
||||
word1 = value.words.w1;
|
||||
}
|
||||
@@ -642,7 +620,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
int32_t vvv = (data & 0x0000000000000FFF);
|
||||
int32_t i = (data & 0x000000000F000000) >> 24;
|
||||
|
||||
Gfx value = gsDPSetTileSize(i, sss, ttt, uuu, vvv);
|
||||
Gfx value = {gsDPSetTileSize(i, sss, ttt, uuu, vvv)};
|
||||
word0 = value.words.w0;
|
||||
word1 = value.words.w1;
|
||||
}
|
||||
@@ -652,7 +630,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
int32_t t = (data & 0x0000000007000000) >> 24;
|
||||
int32_t ccc = (data & 0x00000000003FF000) >> 14;
|
||||
|
||||
Gfx value = gsDPLoadTLUTCmd(t, ccc);
|
||||
Gfx value = {gsDPLoadTLUTCmd(t, ccc)};
|
||||
word0 = value.words.w0;
|
||||
word1 = value.words.w1;
|
||||
}
|
||||
@@ -661,11 +639,11 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
{
|
||||
int sss = (data & 0x00FFF00000000000) >> 44;
|
||||
int ttt = (data & 0x00000FFF00000000) >> 32;
|
||||
int i = (data & 0x000000000F000000) >> 16;
|
||||
int i = (data & 0x000000000F000000) >> 24;
|
||||
int uuu = (data & 0x0000000000FFF000) >> 12;
|
||||
int vvv= (data & 0x0000000000000FFF);
|
||||
|
||||
Gfx value = gsDPLoadTile(i, sss, ttt, uuu, vvv);
|
||||
Gfx value = {gsDPLoadTile(i, sss, ttt, uuu, vvv)};
|
||||
word0 = value.words.w0;
|
||||
word1 = value.words.w1;
|
||||
}
|
||||
@@ -675,15 +653,20 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
uint32_t seg = data & 0xFFFFFFFF;
|
||||
int32_t texAddress = Seg2Filespace(data, dList->parent->baseAddress);
|
||||
|
||||
if (!Globals::Instance->HasSegment(GETSEGNUM(seg)))
|
||||
if (!Globals::Instance->HasSegment(GETSEGNUM(seg), res->parent->workerID) || (res->GetName() == "sShadowMaterialDL"))
|
||||
{
|
||||
if (res->GetName() == "sShadowMaterialDL") {
|
||||
// sShadowMaterialDL (In ovl_En_Jsjutan) has a texture in bss. This is a hack to override the reference to one
|
||||
// to segment C. The actor has been modified to load the texture into segment C.
|
||||
seg = 0x0C000000;
|
||||
}
|
||||
int32_t __ = (data & 0x00FF000000000000) >> 48;
|
||||
int32_t www = (data & 0x00000FFF00000000) >> 32;
|
||||
|
||||
uint32_t fmt = (__ & 0xE0) >> 5;
|
||||
uint32_t siz = (__ & 0x18) >> 3;
|
||||
|
||||
Gfx value = gsDPSetTextureImage(fmt, siz, www - 1, (seg & 0x0FFFFFFF) + 0xF0000000);
|
||||
Gfx value = {gsDPSetTextureImage(fmt, siz, www + 1, (seg & 0x0FFFFFFF) + 1)};
|
||||
word0 = value.words.w0;
|
||||
word1 = value.words.w1;
|
||||
|
||||
@@ -693,7 +676,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
else
|
||||
{
|
||||
std::string texName = "";
|
||||
bool foundDecl = Globals::Instance->GetSegmentedPtrName(seg, dList->parent, "", texName);
|
||||
bool foundDecl = Globals::Instance->GetSegmentedPtrName(seg, dList->parent, "", texName, res->parent->workerID);
|
||||
|
||||
int32_t __ = (data & 0x00FF000000000000) >> 48;
|
||||
int32_t www = (data & 0x00000FFF00000000) >> 32;
|
||||
@@ -701,7 +684,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
uint32_t fmt = (__ & 0xE0) >> 5;
|
||||
uint32_t siz = (__ & 0x18) >> 3;
|
||||
|
||||
Gfx value = gsDPSetTextureImage(fmt, siz, www - 1, __);
|
||||
Gfx value = {gsDPSetTextureImage(fmt, siz, www + 1, __)};
|
||||
word0 = value.words.w0 & 0x00FFFFFF;
|
||||
word0 += (G_SETTIMG_OTR << 24);
|
||||
//word1 = value.words.w1;
|
||||
@@ -712,10 +695,10 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
|
||||
if (foundDecl)
|
||||
{
|
||||
ZFile* assocFile = Globals::Instance->GetSegment(GETSEGNUM(seg));
|
||||
ZFile* assocFile = Globals::Instance->GetSegment(GETSEGNUM(seg), res->parent->workerID);
|
||||
std::string assocFileName = assocFile->GetName();
|
||||
std::string fName = "";
|
||||
|
||||
|
||||
if (GETSEGNUM(seg) == SEGMENT_SCENE || GETSEGNUM(seg) == SEGMENT_ROOM)
|
||||
fName = GetPathToRes(res, texName.c_str());
|
||||
else
|
||||
@@ -744,48 +727,13 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
int32_t aa = (data & 0x000000FF00000000ULL) >> 32;
|
||||
int32_t nn = (data & 0x000FF00000000000ULL) >> 44;
|
||||
|
||||
Gfx value = gsSPVertex(data & 0xFFFFFFFF, nn, ((aa >> 1) - nn));
|
||||
Gfx value = {gsSPVertex(data & 0xFFFFFFFF, nn, ((aa >> 1) - nn))};
|
||||
|
||||
word0 = value.words.w0;
|
||||
word1 = value.words.w1 | 0xF0000000;
|
||||
word1 = value.words.w1 | 1;
|
||||
}
|
||||
else
|
||||
//if (dList->vertices.size() > 0)
|
||||
{
|
||||
// Connect neighboring vertex arrays
|
||||
std::vector<std::pair<uint32_t, std::vector<ZVtx>>> vertsKeys(dList->vertices.begin(),
|
||||
dList->vertices.end());
|
||||
|
||||
if (vertsKeys.size() > 0)
|
||||
{
|
||||
auto lastItem = vertsKeys[0];
|
||||
|
||||
for (size_t i = 1; i < vertsKeys.size(); i++)
|
||||
{
|
||||
auto curItem = vertsKeys[i];
|
||||
|
||||
int32_t sizeDiff = curItem.first - (lastItem.first + (lastItem.second.size() * 16));
|
||||
|
||||
// Make sure there isn't an unaccounted inbetween these two
|
||||
if (sizeDiff == 0)
|
||||
{
|
||||
for (auto v : curItem.second)
|
||||
{
|
||||
dList->vertices[lastItem.first].push_back(v);
|
||||
lastItem.second.push_back(v);
|
||||
}
|
||||
|
||||
dList->vertices.erase(curItem.first);
|
||||
vertsKeys.erase(vertsKeys.begin() + i);
|
||||
|
||||
i--;
|
||||
continue;
|
||||
}
|
||||
|
||||
lastItem = curItem;
|
||||
}
|
||||
}
|
||||
|
||||
// Write CRC64 of vtx file name
|
||||
uint32_t addr = data & 0xFFFFFFFF;
|
||||
|
||||
@@ -793,10 +741,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
addr -= dList->parent->baseAddress;
|
||||
|
||||
auto segOffset = GETSEGOFFSET(addr);
|
||||
//uint32_t seg = data & 0xFFFFFFFF;
|
||||
Declaration* vtxDecl = dList->parent->GetDeclarationRanged(segOffset);
|
||||
//std::string vtxName = "";
|
||||
//bool foundDecl = Globals::Instance->GetSegmentedPtrName(seg, dList->parent, "", vtxName);
|
||||
|
||||
int32_t aa = (data & 0x000000FF00000000ULL) >> 32;
|
||||
int32_t nn = (data & 0x000FF00000000000ULL) >> 44;
|
||||
@@ -805,7 +750,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
{
|
||||
uint32_t diff = segOffset - vtxDecl->address;
|
||||
|
||||
Gfx value = gsSPVertex(diff, nn, ((aa >> 1) - nn));
|
||||
Gfx value = {gsSPVertex(diff, nn, ((aa >> 1) - nn))};
|
||||
|
||||
word0 = value.words.w0;
|
||||
word0 &= 0x00FFFFFF;
|
||||
@@ -822,9 +767,8 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
word0 = hash >> 32;
|
||||
word1 = hash & 0xFFFFFFFF;
|
||||
|
||||
if (!File::Exists("Extract\\" + fName))
|
||||
if (files.find(fName) == files.end() && !File::Exists("Extract/" + fName))
|
||||
{
|
||||
//printf("Exporting VTX Data %s\n", fName.c_str());
|
||||
// Write vertices to file
|
||||
MemoryStream* vtxStream = new MemoryStream();
|
||||
BinaryWriter vtxWriter = BinaryWriter(vtxStream);
|
||||
@@ -833,7 +777,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
|
||||
auto split = StringHelper::Split(vtxDecl->text, "\n");
|
||||
|
||||
for (int i = 0; i < split.size(); i++)
|
||||
for (size_t i = 0; i < split.size(); i++)
|
||||
{
|
||||
std::string line = split[i];
|
||||
|
||||
@@ -847,44 +791,37 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
vtxWriter.Write((uint32_t)ZResourceType::Vertex);
|
||||
vtxWriter.Write((uint32_t)arrCnt);
|
||||
|
||||
size_t sz = dList->vertices[vtxDecl->address].size();
|
||||
auto start = std::chrono::steady_clock::now();
|
||||
|
||||
//if (sz > 0)
|
||||
// God dammit this is so dumb
|
||||
for (size_t i = 0; i < split.size(); i++)
|
||||
{
|
||||
auto start = std::chrono::steady_clock::now();
|
||||
std::string line = split[i];
|
||||
|
||||
// God dammit this is so dumb
|
||||
for (size_t i = 0; i < split.size(); i++)
|
||||
if (StringHelper::Contains(line, "VTX("))
|
||||
{
|
||||
std::string line = split[i];
|
||||
auto split2 = StringHelper::Split(StringHelper::Split(StringHelper::Split(line, "VTX(")[1], ")")[0], ",");
|
||||
|
||||
if (StringHelper::Contains(line, "VTX("))
|
||||
{
|
||||
auto split2 = StringHelper::Split(StringHelper::Split(StringHelper::Split(line, "VTX(")[1], ")")[0], ",");
|
||||
vtxWriter.Write((int16_t)std::stoi(split2[0], nullptr, 10)); // v.x
|
||||
vtxWriter.Write((int16_t)std::stoi(split2[1], nullptr, 10)); // v.y
|
||||
vtxWriter.Write((int16_t)std::stoi(split2[2], nullptr, 10)); // v.z
|
||||
|
||||
vtxWriter.Write((int16_t)std::stoi(split2[0], nullptr, 10)); // v.x
|
||||
vtxWriter.Write((int16_t)std::stoi(split2[1], nullptr, 10)); // v.y
|
||||
vtxWriter.Write((int16_t)std::stoi(split2[2], nullptr, 10)); // v.z
|
||||
vtxWriter.Write((int16_t)0); // v.flag
|
||||
|
||||
vtxWriter.Write((int16_t)0); // v.flag
|
||||
|
||||
vtxWriter.Write((int16_t)std::stoi(split2[3], nullptr, 10)); // v.s
|
||||
vtxWriter.Write((int16_t)std::stoi(split2[4], nullptr, 10)); // v.t
|
||||
|
||||
vtxWriter.Write((uint8_t)std::stoi(split2[5], nullptr, 10)); // v.r
|
||||
vtxWriter.Write((uint8_t)std::stoi(split2[6], nullptr, 10)); // v.g
|
||||
vtxWriter.Write((uint8_t)std::stoi(split2[7], nullptr, 10)); // v.b
|
||||
vtxWriter.Write((uint8_t)std::stoi(split2[8], nullptr, 10)); // v.a
|
||||
}
|
||||
vtxWriter.Write((int16_t)std::stoi(split2[3], nullptr, 10)); // v.s
|
||||
vtxWriter.Write((int16_t)std::stoi(split2[4], nullptr, 10)); // v.t
|
||||
|
||||
vtxWriter.Write((uint8_t)std::stoi(split2[5], nullptr, 10)); // v.r
|
||||
vtxWriter.Write((uint8_t)std::stoi(split2[6], nullptr, 10)); // v.g
|
||||
vtxWriter.Write((uint8_t)std::stoi(split2[7], nullptr, 10)); // v.b
|
||||
vtxWriter.Write((uint8_t)std::stoi(split2[8], nullptr, 10)); // v.a
|
||||
}
|
||||
|
||||
File::WriteAllBytes("Extract\\" + fName, vtxStream->ToVector());
|
||||
|
||||
auto end = std::chrono::steady_clock::now();
|
||||
size_t diff = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count();
|
||||
|
||||
//printf("Exported VTX Array %s in %zums\n", fName.c_str(), diff);
|
||||
}
|
||||
|
||||
AddFile(fName, vtxStream->ToVector());
|
||||
|
||||
auto end = std::chrono::steady_clock::now();
|
||||
size_t diff = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count();
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -892,19 +829,10 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
spdlog::error("vtxDecl == nullptr!");
|
||||
}
|
||||
}
|
||||
/*else
|
||||
{
|
||||
writer->Write(word0);
|
||||
writer->Write(word1);
|
||||
word0 = 0;
|
||||
word1 = 0;
|
||||
|
||||
spdlog::error("dList->vertices.size() <= 0!");
|
||||
}*/
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
writer->Write(word0);
|
||||
writer->Write(word1);
|
||||
}
|
||||
@@ -918,7 +846,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina
|
||||
std::string OTRExporter_DisplayList::GetPathToRes(ZResource* res, std::string varName)
|
||||
{
|
||||
std::string prefix = GetPrefix(res);
|
||||
std::string fName = StringHelper::Sprintf("%s\\%s", GetParentFolderName(res).c_str(), varName.c_str());
|
||||
std::string fName = StringHelper::Sprintf("%s/%s", GetParentFolderName(res).c_str(), varName.c_str());
|
||||
|
||||
return fName;
|
||||
}
|
||||
@@ -932,7 +860,7 @@ std::string OTRExporter_DisplayList::GetParentFolderName(ZResource* res)
|
||||
{
|
||||
auto split = StringHelper::Split(oName, "_");
|
||||
oName = "";
|
||||
for (int i = 0; i < split.size() - 1; i++)
|
||||
for (size_t i = 0; i < split.size() - 1; i++)
|
||||
oName += split[i] + "_";
|
||||
|
||||
oName += "scene";
|
||||
@@ -943,7 +871,7 @@ std::string OTRExporter_DisplayList::GetParentFolderName(ZResource* res)
|
||||
}
|
||||
|
||||
if (prefix != "")
|
||||
oName = prefix + "\\" + oName;
|
||||
oName = prefix + "/" + oName;
|
||||
|
||||
return oName;
|
||||
}
|
||||
@@ -970,4 +898,4 @@ std::string OTRExporter_DisplayList::GetPrefix(ZResource* res)
|
||||
prefix = "code";
|
||||
|
||||
return prefix;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
#include "Exporter.h"
|
||||
#include "VersionInfo.h"
|
||||
|
||||
void OTRExporter::WriteHeader(ZResource* res, const fs::path& outPath, BinaryWriter* writer, Ship::ResourceType resType)
|
||||
void OTRExporter::WriteHeader(ZResource* res, const fs::path& outPath, BinaryWriter* writer, Ship::ResourceType resType, Ship::Version resVersion)
|
||||
{
|
||||
writer->Write((uint8_t)Endianess::Little); // 0x00
|
||||
writer->Write((uint8_t)Endianness::Little); // 0x00
|
||||
writer->Write((uint8_t)0); // 0x01
|
||||
writer->Write((uint8_t)0); // 0x02
|
||||
writer->Write((uint8_t)0); // 0x03
|
||||
|
||||
writer->Write((uint32_t)resType); // 0x04
|
||||
writer->Write((uint32_t)MAJOR_VERSION); // 0x08
|
||||
//writer->Write((uint32_t)MAJOR_VERSION); // 0x08
|
||||
writer->Write((uint32_t)resVersion); // 0x08
|
||||
writer->Write((uint64_t)0xDEADBEEFDEADBEEF); // id, 0x0C
|
||||
writer->Write((uint32_t)resourceVersions[resType]); // 0x10
|
||||
writer->Write((uint64_t)0); // ROM CRC, 0x14
|
||||
|
||||
@@ -4,9 +4,10 @@
|
||||
//#include "OTRExporter.h"
|
||||
#include <Utils/BinaryWriter.h>
|
||||
#include <Resource.h>
|
||||
#include "VersionInfo.h"
|
||||
|
||||
class OTRExporter : public ZResourceExporter
|
||||
{
|
||||
protected:
|
||||
static void WriteHeader(ZResource* res, const fs::path& outPath, BinaryWriter* writer, Ship::ResourceType resType);
|
||||
static void WriteHeader(ZResource* res, const fs::path& outPath, BinaryWriter* writer, Ship::ResourceType resType, Ship::Version resVersion = MAJOR_VERSION);
|
||||
};
|
||||
@@ -15,6 +15,7 @@
|
||||
#include "TextExporter.h"
|
||||
#include "BlobExporter.h"
|
||||
#include "MtxExporter.h"
|
||||
#include "AudioExporter.h"
|
||||
#include <Globals.h>
|
||||
#include <Utils/File.h>
|
||||
#include <Utils/Directory.h>
|
||||
@@ -25,6 +26,8 @@ std::string otrFileName = "oot.otr";
|
||||
std::shared_ptr<Ship::Archive> otrArchive;
|
||||
BinaryWriter* fileWriter;
|
||||
std::chrono::steady_clock::time_point fileStart, resStart;
|
||||
std::map<std::string, std::vector<char>> files;
|
||||
std::mutex fileMutex;
|
||||
|
||||
void InitVersionInfo();
|
||||
|
||||
@@ -39,21 +42,68 @@ static void ExporterParseFileMode(const std::string& buildMode, ZFileMode& fileM
|
||||
{
|
||||
fileMode = (ZFileMode)ExporterFileMode::BuildOTR;
|
||||
|
||||
printf("BOTR: Generating OTR Archive...\n");
|
||||
|
||||
if (File::Exists(otrFileName))
|
||||
otrArchive = std::shared_ptr<Ship::Archive>(new Ship::Archive(otrFileName, true));
|
||||
else
|
||||
otrArchive = Ship::Archive::CreateArchive(otrFileName, 65536 / 2);
|
||||
otrArchive = Ship::Archive::CreateArchive(otrFileName, 40000);
|
||||
|
||||
auto lst = Directory::ListFiles("Extract");
|
||||
|
||||
for (auto item : lst)
|
||||
{
|
||||
auto fileData = File::ReadAllBytes(item);
|
||||
otrArchive->AddFile(StringHelper::Split(item, "Extract\\")[1], (uintptr_t)fileData.data(), fileData.size());
|
||||
otrArchive->AddFile(StringHelper::Split(item, "Extract/")[1], (uintptr_t)fileData.data(), fileData.size());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void ExporterProgramEnd()
|
||||
{
|
||||
if (Globals::Instance->fileMode == ZFileMode::ExtractDirectory)
|
||||
{
|
||||
printf("Creating version file...\n");
|
||||
|
||||
// Get crc from rom
|
||||
std::string romPath = Globals::Instance->baseRomPath.string();
|
||||
std::vector<uint8_t> romData = File::ReadAllBytes(romPath);
|
||||
uint32_t crc = BitConverter::ToUInt32BE(romData, 0x10);
|
||||
|
||||
// Write crc to version file
|
||||
fs::path versionPath("Extract/version");
|
||||
std::ofstream versionFile(versionPath.c_str(), std::ios::out | std::ios::binary);
|
||||
versionFile.write((char*)&crc, sizeof(crc));
|
||||
versionFile.flush();
|
||||
versionFile.close();
|
||||
|
||||
printf("Created version file.\n");
|
||||
|
||||
printf("Generating OTR Archive...\n");
|
||||
otrArchive = Ship::Archive::CreateArchive(otrFileName, 40000);
|
||||
|
||||
for (auto item : files) {
|
||||
auto fileData = item.second;
|
||||
otrArchive->AddFile(item.first, (uintptr_t)fileData.data(),
|
||||
fileData.size());
|
||||
}
|
||||
|
||||
// Add any additional files that need to be manually copied...
|
||||
auto lst = Directory::ListFiles("Extract");
|
||||
|
||||
for (auto item : lst)
|
||||
{
|
||||
auto fileData = File::ReadAllBytes(item);
|
||||
otrArchive->AddFile(StringHelper::Split(item, "Extract/")[1], (uintptr_t)fileData.data(), fileData.size());
|
||||
}
|
||||
|
||||
//otrArchive->AddFile("Audiobank", (uintptr_t)Globals::Instance->GetBaseromFile("Audiobank").data(), Globals::Instance->GetBaseromFile("Audiobank").size());
|
||||
//otrArchive->AddFile("Audioseq", (uintptr_t)Globals::Instance->GetBaseromFile("Audioseq").data(), Globals::Instance->GetBaseromFile("Audioseq").size());
|
||||
//otrArchive->AddFile("Audiotable", (uintptr_t)Globals::Instance->GetBaseromFile("Audiotable").data(), Globals::Instance->GetBaseromFile("Audiotable").size());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void ExporterParseArgs(int argc, char* argv[], int& i)
|
||||
{
|
||||
std::string arg = argv[i];
|
||||
@@ -85,6 +135,7 @@ static void ExporterFileBegin(ZFile* file)
|
||||
|
||||
static void ExporterFileEnd(ZFile* file)
|
||||
{
|
||||
// delete fileWriter;
|
||||
}
|
||||
|
||||
static void ExporterResourceEnd(ZResource* res, BinaryWriter& writer)
|
||||
@@ -107,7 +158,7 @@ static void ExporterResourceEnd(ZResource* res, BinaryWriter& writer)
|
||||
{
|
||||
auto split = StringHelper::Split(oName, "_");
|
||||
oName = "";
|
||||
for (int i = 0; i < split.size() - 1; i++)
|
||||
for (size_t i = 0; i < split.size() - 1; i++)
|
||||
oName += split[i] + "_";
|
||||
|
||||
oName += "scene";
|
||||
@@ -120,11 +171,17 @@ static void ExporterResourceEnd(ZResource* res, BinaryWriter& writer)
|
||||
std::string fName = "";
|
||||
|
||||
if (prefix != "")
|
||||
fName = StringHelper::Sprintf("%s\\%s\\%s", prefix.c_str(), oName.c_str(), rName.c_str());
|
||||
fName = StringHelper::Sprintf("%s/%s/%s", prefix.c_str(), oName.c_str(), rName.c_str());
|
||||
else
|
||||
fName = StringHelper::Sprintf("%s\\%s", oName.c_str(), rName.c_str());
|
||||
fName = StringHelper::Sprintf("%s/%s", oName.c_str(), rName.c_str());
|
||||
|
||||
File::WriteAllBytes("Extract\\" + fName, strem->ToVector());
|
||||
if (Globals::Instance->fileMode == ZFileMode::ExtractDirectory)
|
||||
{
|
||||
std::unique_lock Lock(fileMutex);
|
||||
files[fName] = strem->ToVector();
|
||||
}
|
||||
else
|
||||
File::WriteAllBytes("Extract/" + fName, strem->ToVector());
|
||||
}
|
||||
|
||||
auto end = std::chrono::steady_clock::now();
|
||||
@@ -142,6 +199,17 @@ static void ExporterXMLEnd()
|
||||
{
|
||||
}
|
||||
|
||||
void AddFile(std::string fName, std::vector<char> data)
|
||||
{
|
||||
if (Globals::Instance->fileMode != ZFileMode::ExtractDirectory)
|
||||
File::WriteAllBytes("Extract/" + fName, data);
|
||||
else
|
||||
{
|
||||
std::unique_lock Lock(fileMutex);
|
||||
files[fName] = data;
|
||||
}
|
||||
}
|
||||
|
||||
static void ImportExporters()
|
||||
{
|
||||
// In this example we set up a new exporter called "EXAMPLE".
|
||||
@@ -155,6 +223,8 @@ static void ImportExporters()
|
||||
exporterSet->beginXMLFunc = ExporterXMLBegin;
|
||||
exporterSet->endXMLFunc = ExporterXMLEnd;
|
||||
exporterSet->resSaveFunc = ExporterResourceEnd;
|
||||
exporterSet->endProgramFunc = ExporterProgramEnd;
|
||||
|
||||
exporterSet->exporters[ZResourceType::Background] = new OTRExporter_Background();
|
||||
exporterSet->exporters[ZResourceType::Texture] = new OTRExporter_Texture();
|
||||
exporterSet->exporters[ZResourceType::Room] = new OTRExporter_Room();
|
||||
@@ -173,6 +243,7 @@ static void ImportExporters()
|
||||
exporterSet->exporters[ZResourceType::Text] = new OTRExporter_Text();
|
||||
exporterSet->exporters[ZResourceType::Blob] = new OTRExporter_Blob();
|
||||
exporterSet->exporters[ZResourceType::Mtx] = new OTRExporter_MtxExporter();
|
||||
exporterSet->exporters[ZResourceType::Audio] = new OTRExporter_Audio();
|
||||
|
||||
Globals::AddExporter("OTR", exporterSet);
|
||||
|
||||
|
||||
@@ -2,4 +2,7 @@
|
||||
|
||||
#include <Archive.h>
|
||||
|
||||
extern std::shared_ptr<Ship::Archive> otrArchive;
|
||||
extern std::shared_ptr<Ship::Archive> otrArchive;
|
||||
extern std::map<std::string, std::vector<char>> files;
|
||||
|
||||
void AddFile(std::string fName, std::vector<char> data);
|
||||
@@ -1,70 +0,0 @@
|
||||
# Only used for standalone compilation, usually inherits these from the main makefile
|
||||
|
||||
CXX := g++
|
||||
AR := ar
|
||||
FORMAT := clang-format-11
|
||||
|
||||
ASAN ?= 0
|
||||
DEBUG ?= 1
|
||||
OPTFLAGS ?= -O0
|
||||
LTO ?= 0
|
||||
|
||||
WARN := -Wall -Wextra -Werror \
|
||||
-Wno-unused-parameter \
|
||||
-Wno-unused-function \
|
||||
-Wno-unused-variable
|
||||
|
||||
|
||||
CXXFLAGS := $(WARN) -std=c++17
|
||||
CPPFLAGS := -MMD
|
||||
|
||||
ifneq ($(DEBUG),0)
|
||||
CXXFLAGS += -g
|
||||
endif
|
||||
|
||||
ifneq ($(ASAN),0)
|
||||
CXXFLAGS += -fsanitize=address
|
||||
endif
|
||||
|
||||
ifneq ($(LTO),0)
|
||||
CXXFLAGS += -flto
|
||||
endif
|
||||
|
||||
SRC_DIRS := $(shell find -type d -not -path "*build*")
|
||||
CXX_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.cpp))
|
||||
H_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.h))
|
||||
|
||||
O_FILES := $(CXX_FILES:%.cpp=build/%.o)
|
||||
D_FILES := $(O_FILES:%.o=%.d)
|
||||
LIB := OTRExporter.a
|
||||
|
||||
INC_DIRS := $(addprefix -I, \
|
||||
../../ZAPD/ZAPD \
|
||||
../../ZAPD/lib/tinyxml2 \
|
||||
../../ZAPD/lib/libgfxd \
|
||||
../../ZAPD/ZAPDUtils \
|
||||
../../OtrLib/otrlib \
|
||||
../../OtrLib/otrlib/Lib/spdlog/include \
|
||||
../../OtrLib/otrlib/Lib/Fast3D/U64 \
|
||||
)
|
||||
|
||||
# create build directories
|
||||
$(shell mkdir -p $(SRC_DIRS:%=build/%))
|
||||
|
||||
all: $(LIB)
|
||||
|
||||
clean:
|
||||
rm -rf build $(LIB)
|
||||
|
||||
format:
|
||||
$(FORMAT) -i $(CXX_FILES) $(H_FILES)
|
||||
|
||||
.PHONY: all clean format
|
||||
|
||||
build/%.o: %.cpp
|
||||
$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(OPTFLAGS) $(INC_DIRS) -c $< -o $@
|
||||
|
||||
$(LIB): $(O_FILES)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
-include $(D_FILES)
|
||||
@@ -1,202 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="ArrayExporter.h" />
|
||||
<ClInclude Include="BackgroundExporter.h" />
|
||||
<ClInclude Include="BlobExporter.h" />
|
||||
<ClInclude Include="CollisionExporter.h" />
|
||||
<ClInclude Include="command_macros_base.h" />
|
||||
<ClInclude Include="CutsceneExporter.h" />
|
||||
<ClInclude Include="DisplayListExporter.h" />
|
||||
<ClInclude Include="AnimationExporter.h" />
|
||||
<ClInclude Include="Main.h" />
|
||||
<ClInclude Include="Exporter.h" />
|
||||
<ClInclude Include="MtxExporter.h" />
|
||||
<ClInclude Include="SkeletonExporter.h" />
|
||||
<ClInclude Include="SkeletonLimbExporter.h" />
|
||||
<ClInclude Include="PathExporter.h" />
|
||||
<ClInclude Include="PlayerAnimationExporter.h" />
|
||||
<ClInclude Include="RoomExporter.h" />
|
||||
<ClInclude Include="TextExporter.h" />
|
||||
<ClInclude Include="TextureExporter.h" />
|
||||
<ClInclude Include="VersionInfo.h" />
|
||||
<ClInclude Include="VtxExporter.h" />
|
||||
<ClInclude Include="z64cutscene.h" />
|
||||
<ClInclude Include="z64cutscene_commands.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="ArrayExporter.cpp" />
|
||||
<ClCompile Include="BackgroundExporter.cpp" />
|
||||
<ClCompile Include="BlobExporter.cpp" />
|
||||
<ClCompile Include="CollisionExporter.cpp" />
|
||||
<ClCompile Include="CutsceneExporter.cpp" />
|
||||
<ClCompile Include="DisplayListExporter.cpp" />
|
||||
<ClCompile Include="AnimationExporter.cpp" />
|
||||
<ClCompile Include="Main.cpp" />
|
||||
<ClCompile Include="Exporter.cpp" />
|
||||
<ClCompile Include="MtxExporter.cpp" />
|
||||
<ClCompile Include="SkeletonExporter.cpp" />
|
||||
<ClCompile Include="SkeletonLimbExporter.cpp" />
|
||||
<ClCompile Include="PathExporter.cpp" />
|
||||
<ClCompile Include="PlayerAnimationExporter.cpp" />
|
||||
<ClCompile Include="RoomExporter.cpp" />
|
||||
<ClCompile Include="TextExporter.cpp" />
|
||||
<ClCompile Include="TextureExporter.cpp" />
|
||||
<ClCompile Include="VersionInfo.cpp" />
|
||||
<ClCompile Include="VtxExporter.cpp" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<VCProjectVersion>16.0</VCProjectVersion>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<ProjectGuid>{a6103fd3-0709-4fc7-b066-1a6e056d6306}</ProjectGuid>
|
||||
<RootNamespace>OTRExporter</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="Shared">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<IncludePath>$(SolutionDir)otrlib;$(SolutionDir)\ZAPD\ZAPD\;$(SolutionDir)\ZAPD\lib\tinyxml2;$(SolutionDir)\ZAPD\lib\libgfxd;$(SolutionDir)\ZAPD\lib\elfio;$(SolutionDir)\ZAPD\lib\assimp\include;$(SolutionDir)\ZAPD\lib\stb;$(ProjectDir);$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<IncludePath>$(ProjectDir)..\..\ZAPDTR\ZAPD;$(ProjectDir)..\..\ZAPDTR\lib\tinyxml2;$(ProjectDir)..\..\ZAPDTR\lib\libgfxd;$(ProjectDir)..\..\ZAPDTR\ZAPDUtils;$(ProjectDir)..\..\libultraship\libultraship;$(ProjectDir)..\..\libultraship\libultraship\lib\spdlog\include;$(ProjectDir)..\..\libultraship\libultraship\Lib\Fast3D\U64;$(IncludePath)</IncludePath>
|
||||
<LibraryPath>$(ProjectDir)..\..\libultraship\libultraship;$(LibraryPath)</LibraryPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>$(ProjectDir)..\..\ZAPDTR\ZAPD;$(ProjectDir)..\..\ZAPDTR\lib\tinyxml2;$(ProjectDir)..\..\ZAPDTR\lib\libgfxd;$(ProjectDir)..\..\ZAPDTR\ZAPDUtils;$(ProjectDir)..\..\libultraship\libultraship;$(ProjectDir)..\..\libultraship\libultraship\lib\spdlog\include;$(ProjectDir)..\..\libultraship\libultraship\Lib\Fast3D\U64;$(IncludePath)</IncludePath>
|
||||
<LibraryPath>$(ProjectDir)..\..\libultraship\libultraship;$(LibraryPath)</LibraryPath>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
<LanguageStandard_C>stdc11</LanguageStandard_C>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>ZAPDUtils.lib;OTRLib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
<LanguageStandard_C>stdc11</LanguageStandard_C>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
@@ -1,144 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="CollisionExporter.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="RoomExporter.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="TextureExporter.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="DisplayListExporter.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Main.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="PlayerAnimationExporter.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="BackgroundExporter.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="VtxExporter.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ArrayExporter.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Exporter.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="AnimationExporter.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="CutsceneExporter.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="z64cutscene.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="z64cutscene_commands.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="command_macros_base.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="PathExporter.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="SkeletonExporter.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="SkeletonLimbExporter.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="TextExporter.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="BlobExporter.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="MtxExporter.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="VersionInfo.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="CollisionExporter.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Main.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="RoomExporter.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="TextureExporter.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="DisplayListExporter.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="PlayerAnimationExporter.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="SkeletonExporter.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="SkeletonLimbExporter.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="BackgroundExporter.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="VtxExporter.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ArrayExporter.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Exporter.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="AnimationExporter.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="CutsceneExporter.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="PathExporter.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="TextExporter.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="BlobExporter.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="MtxExporter.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="VersionInfo.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -9,11 +9,11 @@ void OTRExporter_Path::Save(ZResource* res, const fs::path& outPath, BinaryWrite
|
||||
|
||||
writer->Write((uint32_t)path->pathways.size());
|
||||
|
||||
for (int k = 0; k < path->pathways.size(); k++)
|
||||
for (size_t k = 0; k < path->pathways.size(); k++)
|
||||
{
|
||||
writer->Write((uint32_t)path->pathways[k].points.size());
|
||||
|
||||
for (int i = 0; i < path->pathways[k].points.size(); i++)
|
||||
for (size_t i = 0; i < path->pathways[k].points.size(); i++)
|
||||
{
|
||||
writer->Write(path->pathways[k].points[i].scalars[0].scalarData.s16);
|
||||
writer->Write(path->pathways[k].points[i].scalars[1].scalarData.s16);
|
||||
|
||||
@@ -46,7 +46,7 @@ void OTRExporter_Room::Save(ZResource* res, const fs::path& outPath, BinaryWrite
|
||||
for (size_t i = 0; i < room->commands.size(); i++)
|
||||
{
|
||||
ZRoomCommand* cmd = room->commands[i];
|
||||
|
||||
|
||||
writer->Write((uint32_t)cmd->cmdID);
|
||||
|
||||
switch (cmd->cmdID)
|
||||
@@ -172,7 +172,7 @@ void OTRExporter_Room::Save(ZResource* res, const fs::path& outPath, BinaryWrite
|
||||
|
||||
writer->Write((uint32_t)cmdCsCam->points.size());
|
||||
|
||||
for (int i = 0; i < cmdCsCam->points.size(); i++)
|
||||
for (size_t i = 0; i < cmdCsCam->points.size(); i++)
|
||||
{
|
||||
writer->Write(cmdCsCam->points[i].scalars[0].scalarData.s16);
|
||||
writer->Write(cmdCsCam->points[i].scalars[1].scalarData.s16);
|
||||
@@ -183,7 +183,7 @@ void OTRExporter_Room::Save(ZResource* res, const fs::path& outPath, BinaryWrite
|
||||
case RoomCommand::SetMesh:
|
||||
{
|
||||
SetMesh* cmdMesh = (SetMesh*)cmd;
|
||||
|
||||
|
||||
writer->Write((uint8_t)cmdMesh->data); // 0x01
|
||||
writer->Write(cmdMesh->meshHeaderType);
|
||||
|
||||
@@ -207,12 +207,12 @@ void OTRExporter_Room::Save(ZResource* res, const fs::path& outPath, BinaryWrite
|
||||
Declaration* dListDeclXlu = poly->parent->GetDeclaration(GETSEGOFFSET(test->xlu));
|
||||
|
||||
if (test->opa != 0)
|
||||
writer->Write(StringHelper::Sprintf("%s\\%s", OTRExporter_DisplayList::GetParentFolderName(res).c_str(), dListDeclOpa->varName.c_str()));
|
||||
writer->Write(StringHelper::Sprintf("%s/%s", OTRExporter_DisplayList::GetParentFolderName(res).c_str(), dListDeclOpa->varName.c_str()));
|
||||
else
|
||||
writer->Write("");
|
||||
|
||||
|
||||
if (test->xlu != 0)
|
||||
writer->Write(StringHelper::Sprintf("%s\\%s", OTRExporter_DisplayList::GetParentFolderName(res).c_str(), dListDeclXlu->varName.c_str()));
|
||||
writer->Write(StringHelper::Sprintf("%s/%s", OTRExporter_DisplayList::GetParentFolderName(res).c_str(), dListDeclXlu->varName.c_str()));
|
||||
else
|
||||
writer->Write("");
|
||||
|
||||
@@ -228,7 +228,7 @@ void OTRExporter_Room::Save(ZResource* res, const fs::path& outPath, BinaryWrite
|
||||
Declaration* bgDecl = poly->parent->GetDeclarationRanged(GETSEGOFFSET(poly->multiList[i].source));
|
||||
|
||||
writer->Write(OTRExporter_DisplayList::GetPathToRes(poly->multiList[i].sourceBackground, bgDecl->varName));
|
||||
|
||||
|
||||
writer->Write(poly->multiList[i].unk_0C);
|
||||
writer->Write(poly->multiList[i].tlut);
|
||||
writer->Write(poly->multiList[i].width);
|
||||
@@ -338,7 +338,7 @@ void OTRExporter_Room::Save(ZResource* res, const fs::path& outPath, BinaryWrite
|
||||
|
||||
for (size_t i = 0;i < cmdRoom->romfile->numRooms; i++)
|
||||
{
|
||||
//std::string roomName = StringHelper::Sprintf("%s\\%s_room_%i", (StringHelper::Split(room->GetName(), "_")[0] + "_scene").c_str(), StringHelper::Split(room->GetName(), "_scene")[0].c_str(), i);
|
||||
//std::string roomName = StringHelper::Sprintf("%s/%s_room_%i", (StringHelper::Split(room->GetName(), "_")[0] + "_scene").c_str(), StringHelper::Split(room->GetName(), "_scene")[0].c_str(), i);
|
||||
std::string roomName = OTRExporter_DisplayList::GetPathToRes(room, StringHelper::Sprintf("%s_room_%i", StringHelper::Split(room->GetName(), "_scene")[0].c_str(), i));
|
||||
writer->Write(roomName);
|
||||
writer->Write(cmdRoom->romfile->rooms[i].virtualAddressStart);
|
||||
@@ -383,7 +383,7 @@ void OTRExporter_Room::Save(ZResource* res, const fs::path& outPath, BinaryWrite
|
||||
uint32_t baseStreamEnd = writer->GetStream().get()->GetLength();
|
||||
|
||||
writer->Write((uint32_t)cmdStartPos->actors.size()); // 0x01
|
||||
|
||||
|
||||
for (const ActorSpawnEntry& entry : cmdStartPos->actors)
|
||||
{
|
||||
writer->Write(entry.actorNum);
|
||||
@@ -407,7 +407,7 @@ void OTRExporter_Room::Save(ZResource* res, const fs::path& outPath, BinaryWrite
|
||||
{
|
||||
uint32_t seg = cmdHeaders->headers[i] & 0xFFFFFFFF;
|
||||
std::string headerName = "";
|
||||
bool foundDecl = Globals::Instance->GetSegmentedPtrName(seg, room->parent, "", headerName);
|
||||
bool foundDecl = Globals::Instance->GetSegmentedPtrName(seg, room->parent, "", headerName, res->parent->workerID);
|
||||
if (headerName == "NULL")
|
||||
writer->Write("");
|
||||
else
|
||||
@@ -441,9 +441,9 @@ void OTRExporter_Room::Save(ZResource* res, const fs::path& outPath, BinaryWrite
|
||||
case RoomCommand::SetCutscenes:
|
||||
{
|
||||
SetCutscenes* cmdSetCutscenes = (SetCutscenes*)cmd;
|
||||
|
||||
|
||||
std::string listName;
|
||||
Globals::Instance->GetSegmentedPtrName(cmdSetCutscenes->cmdArg2, room->parent, "CutsceneData", listName);
|
||||
Globals::Instance->GetSegmentedPtrName(cmdSetCutscenes->cmdArg2, room->parent, "CutsceneData", listName, res->parent->workerID);
|
||||
std::string fName = OTRExporter_DisplayList::GetPathToRes(room, listName);
|
||||
//std::string fName = StringHelper::Sprintf("%s\\%s", OTRExporter_DisplayList::GetParentFolderName(room).c_str(), listName.c_str());
|
||||
writer->Write(fName);
|
||||
@@ -453,10 +453,7 @@ void OTRExporter_Room::Save(ZResource* res, const fs::path& outPath, BinaryWrite
|
||||
OTRExporter_Cutscene cs;
|
||||
cs.Save(cmdSetCutscenes->cutscenes[0], "", &csWriter);
|
||||
|
||||
File::WriteAllBytes("Extract\\" + fName, csStream->ToVector());
|
||||
|
||||
//std::string fName = OTRExporter_DisplayList::GetPathToRes(res, vtxDecl->varName);
|
||||
//otrArchive->AddFile(fName, (uintptr_t)csStream->ToVector().data(), csWriter.GetBaseAddress());
|
||||
AddFile(fName, csStream->ToVector());
|
||||
}
|
||||
break;
|
||||
case RoomCommand::SetPathways:
|
||||
@@ -465,7 +462,7 @@ void OTRExporter_Room::Save(ZResource* res, const fs::path& outPath, BinaryWrite
|
||||
|
||||
writer->Write((uint32_t)cmdSetPathways->pathwayList.pathways.size());
|
||||
|
||||
for (int i = 0; i < cmdSetPathways->pathwayList.pathways.size(); i++)
|
||||
for (size_t i = 0; i < cmdSetPathways->pathwayList.pathways.size(); i++)
|
||||
{
|
||||
Declaration* decl = room->parent->GetDeclaration(GETSEGOFFSET(cmdSetPathways->pathwayList.pathways[i].listSegmentAddress));
|
||||
//std::string path = StringHelper::Sprintf("%s\\%s", OTRExporter_DisplayList::GetParentFolderName(res).c_str(), decl->varName.c_str());
|
||||
@@ -477,11 +474,7 @@ void OTRExporter_Room::Save(ZResource* res, const fs::path& outPath, BinaryWrite
|
||||
OTRExporter_Path pathExp;
|
||||
pathExp.Save(&cmdSetPathways->pathwayList, outPath, &pathWriter);
|
||||
|
||||
File::WriteAllBytes("Extract\\" + path, pathStream->ToVector());
|
||||
|
||||
//otrArchive->AddFile(path, (uintptr_t)pathStream->ToVector().data(), pathWriter.GetBaseAddress());
|
||||
|
||||
int bp = 0;
|
||||
AddFile(path, pathStream->ToVector());
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -508,12 +501,12 @@ void OTRExporter_Room::WritePolyDList(BinaryWriter* writer, ZRoom* room, Polygon
|
||||
writer->Write(dlist->unk_06);
|
||||
[[fallthrough]];
|
||||
default:
|
||||
//writer->Write(StringHelper::Sprintf("%s\\%s", OTRExporter_DisplayList::GetParentFolderName(res).c_str(), dListDeclOpa->varName.c_str()));
|
||||
//writer->Write(StringHelper::Sprintf("%s/%s", OTRExporter_DisplayList::GetParentFolderName(res).c_str(), dListDeclOpa->varName.c_str()));
|
||||
|
||||
if (dlist->opaDList != nullptr)
|
||||
{
|
||||
auto opaDecl = room->parent->GetDeclaration(GETSEGOFFSET(dlist->opaDList->GetRawDataIndex()));
|
||||
writer->Write(StringHelper::Sprintf("%s\\%s", OTRExporter_DisplayList::GetParentFolderName(room).c_str(), opaDecl->varName.c_str()));
|
||||
writer->Write(StringHelper::Sprintf("%s/%s", OTRExporter_DisplayList::GetParentFolderName(room).c_str(), opaDecl->varName.c_str()));
|
||||
}
|
||||
else
|
||||
writer->Write("");
|
||||
@@ -521,7 +514,7 @@ void OTRExporter_Room::WritePolyDList(BinaryWriter* writer, ZRoom* room, Polygon
|
||||
if (dlist->xluDList != nullptr)
|
||||
{
|
||||
auto xluDecl = room->parent->GetDeclaration(GETSEGOFFSET(dlist->xluDList->GetRawDataIndex()));
|
||||
writer->Write(StringHelper::Sprintf("%s\\%s", OTRExporter_DisplayList::GetParentFolderName(room).c_str(), xluDecl->varName.c_str()));
|
||||
writer->Write(StringHelper::Sprintf("%s/%s", OTRExporter_DisplayList::GetParentFolderName(room).c_str(), xluDecl->varName.c_str()));
|
||||
}
|
||||
else
|
||||
writer->Write("");
|
||||
|
||||
@@ -23,7 +23,7 @@ void OTRExporter_Skeleton::Save(ZResource* res, const fs::path& outPath, BinaryW
|
||||
Declaration* skelDecl = skel->parent->GetDeclarationRanged(GETSEGOFFSET(skel->limbsTable.limbsAddresses[i]));
|
||||
|
||||
std::string name;
|
||||
bool foundDecl = Globals::Instance->GetSegmentedPtrName(skel->limbsTable.limbsAddresses[i], skel->parent, "", name);
|
||||
bool foundDecl = Globals::Instance->GetSegmentedPtrName(skel->limbsTable.limbsAddresses[i], skel->parent, "", name, res->parent->workerID);
|
||||
if (foundDecl)
|
||||
{
|
||||
if (name.at(0) == '&')
|
||||
|
||||
@@ -86,7 +86,7 @@ void OTRExporter_SkeletonLimb::Save(ZResource* res, const fs::path& outPath, Bin
|
||||
if (limb->childPtr != 0)
|
||||
{
|
||||
std::string name;
|
||||
bool foundDecl = Globals::Instance->GetSegmentedPtrName(limb->childPtr, limb->parent, "", name);
|
||||
bool foundDecl = Globals::Instance->GetSegmentedPtrName(limb->childPtr, limb->parent, "", name, res->parent->workerID);
|
||||
if (foundDecl)
|
||||
{
|
||||
if (name.at(0) == '&')
|
||||
@@ -107,7 +107,7 @@ void OTRExporter_SkeletonLimb::Save(ZResource* res, const fs::path& outPath, Bin
|
||||
if (limb->siblingPtr != 0)
|
||||
{
|
||||
std::string name;
|
||||
bool foundDecl = Globals::Instance->GetSegmentedPtrName(limb->siblingPtr, limb->parent, "", name);
|
||||
bool foundDecl = Globals::Instance->GetSegmentedPtrName(limb->siblingPtr, limb->parent, "", name, res->parent->workerID);
|
||||
if (foundDecl)
|
||||
{
|
||||
if (name.at(0) == '&')
|
||||
@@ -128,7 +128,7 @@ void OTRExporter_SkeletonLimb::Save(ZResource* res, const fs::path& outPath, Bin
|
||||
if (limb->dListPtr != 0)
|
||||
{
|
||||
std::string name;
|
||||
bool foundDecl = Globals::Instance->GetSegmentedPtrName(limb->dListPtr, limb->parent, "", name);
|
||||
bool foundDecl = Globals::Instance->GetSegmentedPtrName(limb->dListPtr, limb->parent, "", name, res->parent->workerID);
|
||||
if (foundDecl)
|
||||
{
|
||||
if (name.at(0) == '&')
|
||||
@@ -149,7 +149,7 @@ void OTRExporter_SkeletonLimb::Save(ZResource* res, const fs::path& outPath, Bin
|
||||
if (limb->dList2Ptr != 0)
|
||||
{
|
||||
std::string name;
|
||||
bool foundDecl = Globals::Instance->GetSegmentedPtrName(limb->dList2Ptr, limb->parent, "", name);
|
||||
bool foundDecl = Globals::Instance->GetSegmentedPtrName(limb->dList2Ptr, limb->parent, "", name, res->parent->workerID);
|
||||
if (foundDecl)
|
||||
{
|
||||
if (name.at(0) == '&')
|
||||
|
||||
@@ -8,8 +8,8 @@ void OTRExporter_Text::Save(ZResource* res, const fs::path& outPath, BinaryWrite
|
||||
WriteHeader(txt, outPath, writer, Ship::ResourceType::Text);
|
||||
|
||||
writer->Write((uint32_t)txt->messages.size());
|
||||
|
||||
for (int i = 0; i < txt->messages.size(); i++)
|
||||
|
||||
for (size_t i = 0; i < txt->messages.size(); i++)
|
||||
{
|
||||
writer->Write(txt->messages[i].id);
|
||||
writer->Write(txt->messages[i].textboxType);
|
||||
|
||||
@@ -5,21 +5,23 @@ std::map<Ship::ResourceType, uint32_t> resourceVersions;
|
||||
|
||||
void InitVersionInfo()
|
||||
{
|
||||
resourceVersions[Ship::ResourceType::Animation] = 0;
|
||||
resourceVersions[Ship::ResourceType::Model] = 0;
|
||||
resourceVersions[Ship::ResourceType::Texture] = 0;
|
||||
resourceVersions[Ship::ResourceType::Material] = 0;
|
||||
resourceVersions[Ship::ResourceType::PlayerAnimation] = 0;
|
||||
resourceVersions[Ship::ResourceType::DisplayList] = 0;
|
||||
resourceVersions[Ship::ResourceType::Room] = 0;
|
||||
resourceVersions[Ship::ResourceType::CollisionHeader] = 0;
|
||||
resourceVersions[Ship::ResourceType::Skeleton] = 0;
|
||||
resourceVersions[Ship::ResourceType::SkeletonLimb] = 0;
|
||||
resourceVersions[Ship::ResourceType::Matrix] = 0;
|
||||
resourceVersions[Ship::ResourceType::Path] = 0;
|
||||
resourceVersions[Ship::ResourceType::Vertex] = 0;
|
||||
resourceVersions[Ship::ResourceType::Cutscene] = 0;
|
||||
resourceVersions[Ship::ResourceType::Array] = 0;
|
||||
resourceVersions[Ship::ResourceType::Text] = 0;
|
||||
resourceVersions[Ship::ResourceType::Blob] = 0;
|
||||
}
|
||||
resourceVersions = std::map<Ship::ResourceType, uint32_t> {
|
||||
{ Ship::ResourceType::Animation, 0 },
|
||||
{ Ship::ResourceType::Model, 0 },
|
||||
{ Ship::ResourceType::Texture, 0 },
|
||||
{ Ship::ResourceType::Material, 0 },
|
||||
{ Ship::ResourceType::PlayerAnimation, 0 },
|
||||
{ Ship::ResourceType::DisplayList, 0 },
|
||||
{ Ship::ResourceType::Room, 0 },
|
||||
{ Ship::ResourceType::CollisionHeader, 0 },
|
||||
{ Ship::ResourceType::Skeleton, 0 },
|
||||
{ Ship::ResourceType::SkeletonLimb, 0 },
|
||||
{ Ship::ResourceType::Matrix, 0 },
|
||||
{ Ship::ResourceType::Path, 0 },
|
||||
{ Ship::ResourceType::Vertex, 0 },
|
||||
{ Ship::ResourceType::Cutscene, 0 },
|
||||
{ Ship::ResourceType::Array, 0 },
|
||||
{ Ship::ResourceType::Text, 0 },
|
||||
{ Ship::ResourceType::Blob, 0 },
|
||||
};
|
||||
}
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,117 +1,45 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import argparse, json, os, signal, time, sys, shutil
|
||||
from multiprocessing import Pool, cpu_count, Event, Manager, ProcessError
|
||||
import os, sys, shutil
|
||||
import shutil
|
||||
from rom_info import Z64Rom
|
||||
import rom_chooser
|
||||
import struct
|
||||
import subprocess
|
||||
import argparse
|
||||
|
||||
def SignalHandler(sig, frame):
|
||||
print(f'Signal {sig} received. Aborting...')
|
||||
mainAbort.set()
|
||||
# Don't exit immediately to update the extracted assets file.
|
||||
|
||||
def BuildOTR():
|
||||
shutil.copyfile("baserom/Audiobank", "Extract/Audiobank")
|
||||
shutil.copyfile("baserom/Audioseq", "Extract/Audioseq")
|
||||
shutil.copyfile("baserom/Audiotable", "Extract/Audiotable")
|
||||
|
||||
def BuildOTR(xmlPath, rom, zapd_exe=None):
|
||||
shutil.copytree("assets", "Extract/assets")
|
||||
|
||||
execStr = "x64\\Release\\ZAPD.exe" if sys.platform == "win32" else "../ZAPD/ZAPD.out"
|
||||
if not zapd_exe:
|
||||
zapd_exe = "x64\\Release\\ZAPD.exe" if sys.platform == "win32" else "../ZAPDTR/ZAPD.out"
|
||||
|
||||
execStr += " botr -se OTR"
|
||||
exec_cmd = [zapd_exe, "ed", "-i", xmlPath, "-b", rom, "-fl", "CFG/filelists",
|
||||
"-o", "placeholder", "-osf", "placeholder", "-gsf", "1",
|
||||
"-rconf", "CFG/Config.xml", "-se", "OTR"]
|
||||
|
||||
print(execStr)
|
||||
exitValue = os.system(execStr)
|
||||
print(exec_cmd)
|
||||
exitValue = subprocess.call(exec_cmd)
|
||||
if exitValue != 0:
|
||||
print("\n")
|
||||
print("Error when building the OTR file...", file=os.sys.stderr)
|
||||
print("Aborting...", file=os.sys.stderr)
|
||||
print("\n")
|
||||
|
||||
def ExtractFile(xmlPath, outputPath, outputSourcePath):
|
||||
execStr = "x64\\Release\\ZAPD.exe" if sys.platform == "win32" else "../ZAPD/ZAPD.out"
|
||||
execStr += " e -eh -i %s -b baserom/ -o %s -osf %s -gsf 1 -rconf CFG/Config.xml -se OTR" % (xmlPath, outputPath, outputSourcePath)
|
||||
|
||||
if "overlays" in xmlPath:
|
||||
execStr += " --static"
|
||||
|
||||
print(execStr)
|
||||
exitValue = os.system(execStr)
|
||||
#exitValue = 0
|
||||
if exitValue != 0:
|
||||
print("\n")
|
||||
print("Error when extracting from file " + xmlPath, file=os.sys.stderr)
|
||||
print("Aborting...", file=os.sys.stderr)
|
||||
print("\n")
|
||||
|
||||
def ExtractFunc(fullPath):
|
||||
*pathList, xmlName = fullPath.split(os.sep)
|
||||
objectName = os.path.splitext(xmlName)[0]
|
||||
|
||||
outPath = os.path.join("..\\soh\\assets\\", *pathList[4:], objectName)
|
||||
os.makedirs(outPath, exist_ok=True)
|
||||
outSourcePath = outPath
|
||||
|
||||
ExtractFile(fullPath, outPath, outSourcePath)
|
||||
|
||||
def initializeWorker(abort, test):
|
||||
global globalAbort
|
||||
globalAbort = abort
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="baserom asset extractor")
|
||||
parser.add_argument("-s", "--single", help="asset path relative to assets/, e.g. objects/gameplay_keep")
|
||||
parser.add_argument("-f", "--force", help="Force the extraction of every xml instead of checking the touched ones.", action="store_true")
|
||||
parser.add_argument("-u", "--unaccounted", help="Enables ZAPD unaccounted detector warning system.", action="store_true")
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("-z", "--zapd", help="Path to ZAPD executable", dest="zapd_exe", type=str)
|
||||
parser.add_argument("rom", help="Path to the rom", type=str, nargs="?")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
global mainAbort
|
||||
mainAbort = Event()
|
||||
manager = Manager()
|
||||
signal.signal(signal.SIGINT, SignalHandler)
|
||||
rom_path = args.rom if args.rom else rom_chooser.chooseROM()
|
||||
rom = Z64Rom(rom_path)
|
||||
|
||||
extractedAssetsTracker = manager.dict()
|
||||
|
||||
asset_path = args.single
|
||||
if asset_path is not None:
|
||||
fullPath = os.path.join("..\\soh\\assets", "xml", asset_path + ".xml")
|
||||
if not os.path.exists(fullPath):
|
||||
print(f"Error. File {fullPath} doesn't exists.", file=os.sys.stderr)
|
||||
exit(1)
|
||||
|
||||
ExtractFunc(fullPath)
|
||||
else:
|
||||
extract_text_path = "assets/text/message_data.h"
|
||||
if os.path.isfile(extract_text_path):
|
||||
extract_text_path = None
|
||||
extract_staff_text_path = "assets/text/message_data_staff.h"
|
||||
if os.path.isfile(extract_staff_text_path):
|
||||
extract_staff_text_path = None
|
||||
|
||||
xmlFiles = []
|
||||
for currentPath, _, files in os.walk(os.path.join("..\\soh\\assets", "xml")):
|
||||
for file in files:
|
||||
fullPath = os.path.join(currentPath, file)
|
||||
if file.endswith(".xml"):
|
||||
xmlFiles.append(fullPath)
|
||||
|
||||
try:
|
||||
numCores = 2
|
||||
print("Extracting assets with " + str(numCores) + " CPU cores.")
|
||||
with Pool(numCores, initializer=initializeWorker, initargs=(mainAbort, 0)) as p:
|
||||
p.map(ExtractFunc, xmlFiles)
|
||||
except Exception as e:
|
||||
print("Warning: Multiprocessing exception ocurred.", file=os.sys.stderr)
|
||||
print("Disabling mutliprocessing.", file=os.sys.stderr)
|
||||
|
||||
initializeWorker(mainAbort, 0)
|
||||
for singlePath in xmlFiles:
|
||||
ExtractFunc(singlePath)
|
||||
|
||||
|
||||
BuildOTR()
|
||||
if (os.path.exists("Extract")):
|
||||
shutil.rmtree("Extract")
|
||||
|
||||
BuildOTR("../soh/assets/xml/" + rom.version.xml_ver + "/", rom_path, zapd_exe=args.zapd_exe)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
main()
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
import os
|
||||
import sys
|
||||
import struct
|
||||
from multiprocessing import Pool, cpu_count
|
||||
from rom_info import Z64Rom
|
||||
import rom_chooser
|
||||
|
||||
|
||||
rom = None
|
||||
|
||||
def initialize_worker(input_rom):
|
||||
global rom
|
||||
rom = input_rom
|
||||
|
||||
def ExtractFunc(i):
|
||||
|
||||
dma_file = rom.getDmaEntryByIndex(i)
|
||||
dma_data = rom.readDmaEntry(dma_file)
|
||||
|
||||
filename = '../soh/baserom/' + rom.version.file_table[i]
|
||||
print('extracting ' + filename + " (0x%08X, 0x%08X)" % (dma_file.virtStart, dma_file.virtEnd))
|
||||
|
||||
try:
|
||||
with open(filename, 'wb') as f:
|
||||
f.write(dma_data)
|
||||
except IOError:
|
||||
print('failed to write file ' + filename)
|
||||
|
||||
# TODO: handle this better
|
||||
if dma_file.compressed:
|
||||
os.system('tools/yaz0 -d ' + filename + ' ' + filename)
|
||||
|
||||
#####################################################################
|
||||
|
||||
def main():
|
||||
try:
|
||||
os.mkdir('../soh/baserom')
|
||||
except:
|
||||
pass
|
||||
|
||||
rom_path = rom_chooser.chooseROM()
|
||||
input_rom = Z64Rom(rom_path)
|
||||
|
||||
# extract files
|
||||
num_cores = cpu_count()
|
||||
print("Extracting baserom with " + str(num_cores) + " CPU cores.")
|
||||
with Pool(num_cores, initialize_worker, (input_rom,)) as p:
|
||||
p.map(ExtractFunc, range(len(input_rom.version.file_table)))
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,37 @@
|
||||
import os, sys, glob
|
||||
|
||||
from rom_info import Z64Rom
|
||||
|
||||
def chooseROM():
|
||||
roms = []
|
||||
|
||||
for file in glob.glob("*.z64"):
|
||||
if Z64Rom.isValidRom(file):
|
||||
roms.append(file)
|
||||
|
||||
if not (roms):
|
||||
print("Error: No roms located, place one in the OTRExporter directory", file=os.sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
if (len(roms) == 1):
|
||||
return roms[0]
|
||||
|
||||
print(str(len(roms))+ " roms found, please select one by pressing 1-"+str(len(roms)))
|
||||
|
||||
for i in range(len(roms)):
|
||||
print(str(i+1)+ ". " + roms[i])
|
||||
|
||||
while(1):
|
||||
try:
|
||||
selection = int(input())
|
||||
except:
|
||||
print("Bad input. Try again with the number keys.")
|
||||
continue
|
||||
|
||||
if (selection < 1 or selection > len(roms)):
|
||||
print("Bad input. Try again.")
|
||||
continue
|
||||
|
||||
else: break
|
||||
|
||||
return roms[selection - 1]
|
||||
@@ -0,0 +1,88 @@
|
||||
from enum import Enum
|
||||
from tabnanny import check
|
||||
import struct
|
||||
|
||||
class Checksums(Enum):
|
||||
OOT_NTSC_10 = "EC7011B7"
|
||||
OOT_NTSC_11 = "D43DA81F"
|
||||
OOT_NTSC_12 = "693BA2AE"
|
||||
OOT_PAL_10 = "B044B569"
|
||||
OOT_PAL_11 = "B2055FBD"
|
||||
OOT_NTSC_JP_GC_CE = "F7F52DB8"
|
||||
OOT_NTSC_JP_GC = "F611F4BA"
|
||||
OOT_NTSC_US_GC = "F3DD35BA"
|
||||
OOT_PAL_GC = "09465AC3"
|
||||
OOT_NTSC_JP_MQ = "F43B45BA"
|
||||
OOT_NTSC_US_MQ = "F034001A"
|
||||
OOT_PAL_MQ = "1D4136F3"
|
||||
OOT_PAL_GC_DBG1 = "871E1C92"
|
||||
OOT_PAL_GC_DBG2 = "87121EFE"
|
||||
OOT_PAL_GC_MQ_DBG = "917D18F6"
|
||||
OOT_IQUE_TW = "3D81FB3E"
|
||||
OOT_IQUE_CN = "B1E1E07B"
|
||||
OOT_UNKNOWN = "FFFFFFFF"
|
||||
|
||||
@classmethod
|
||||
def has_value(self, value):
|
||||
return value in self._value2member_map_
|
||||
|
||||
class RomVersion:
|
||||
def __init__(self, file_table_path, file_table_off, xml_ver):
|
||||
self.file_table_off = file_table_off
|
||||
self.xml_ver = xml_ver
|
||||
with open(file_table_path, 'r') as f:
|
||||
self.file_table = [line.strip('\n') for line in f]
|
||||
|
||||
ROM_INFO_TABLE = dict()
|
||||
ROM_INFO_TABLE[Checksums.OOT_PAL_GC] = RomVersion("CFG/filelists/gamecube_pal.txt", 0x7170, "GC_NMQ_PAL_F")
|
||||
ROM_INFO_TABLE[Checksums.OOT_PAL_GC_DBG1] = RomVersion("CFG/filelists/dbg.txt", 0x12F70, "GC_NMQ_D")
|
||||
ROM_INFO_TABLE[Checksums.OOT_PAL_GC_MQ_DBG] = RomVersion("CFG/filelists/dbg.txt", 0x12F70, "GC_MQ_D")
|
||||
|
||||
class RomDmaEntry:
|
||||
def __init__(self, rom, i):
|
||||
|
||||
off = rom.version.file_table_off + 16 * i
|
||||
|
||||
(self.virtStart, \
|
||||
self.virtEnd, \
|
||||
self.physStart, \
|
||||
self.physEnd) = struct.unpack('>IIII', rom.rom_data[off:off+4*4])
|
||||
|
||||
self.compressed = self.physEnd != 0
|
||||
self.size = self.physEnd - self.physStart \
|
||||
if self.compressed \
|
||||
else self.virtEnd - self.virtStart
|
||||
self.name = rom.version.file_table[i]
|
||||
|
||||
|
||||
class Z64Rom:
|
||||
def __init__(self, file_path):
|
||||
self.file_path = file_path
|
||||
with open(file_path, 'rb') as f:
|
||||
self.rom_data = f.read()
|
||||
|
||||
self.is_valid = len(self.rom_data) > 20 * 1024 * 1024
|
||||
|
||||
if not self.is_valid:
|
||||
return
|
||||
|
||||
# get checkum
|
||||
checksum_str = self.rom_data[16:16+4].hex().upper()
|
||||
self.checksum = Checksums(checksum_str) if Checksums.has_value(checksum_str) else Checksums.OOT_UNKNOWN
|
||||
|
||||
if self.checksum == Checksums.OOT_UNKNOWN:
|
||||
self.is_valid = False
|
||||
return
|
||||
|
||||
# get rom version
|
||||
self.version = ROM_INFO_TABLE[self.checksum]
|
||||
|
||||
def getDmaEntryByIndex(self, i):
|
||||
return RomDmaEntry(self, i)
|
||||
|
||||
def readDmaEntry(self, entry):
|
||||
return self.rom_data[entry.physStart:entry.physStart + entry.size]
|
||||
|
||||
@staticmethod
|
||||
def isValidRom(rom_path):
|
||||
return Z64Rom(rom_path).is_valid
|
||||
@@ -0,0 +1,65 @@
|
||||
################################################################################
|
||||
# Command for variable_watch. This command issues error message, if a variable
|
||||
# is changed. If variable PROPERTY_READER_GUARD_DISABLED is TRUE nothing happens
|
||||
# variable_watch(<variable> property_reader_guard)
|
||||
################################################################################
|
||||
function(property_reader_guard VARIABLE ACCESS VALUE CURRENT_LIST_FILE STACK)
|
||||
if("${PROPERTY_READER_GUARD_DISABLED}")
|
||||
return()
|
||||
endif()
|
||||
|
||||
if("${ACCESS}" STREQUAL "MODIFIED_ACCESS")
|
||||
message(FATAL_ERROR
|
||||
" Variable ${VARIABLE} is not supposed to be changed.\n"
|
||||
" It is used only for reading target property ${VARIABLE}.\n"
|
||||
" Use\n"
|
||||
" set_target_properties(\"<target>\" PROPERTIES \"${VARIABLE}\" \"<value>\")\n"
|
||||
" or\n"
|
||||
" set_target_properties(\"<target>\" PROPERTIES \"${VARIABLE}_<CONFIG>\" \"<value>\")\n"
|
||||
" instead.\n")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
################################################################################
|
||||
# Create variable <name> with generator expression that expands to value of
|
||||
# target property <name>_<CONFIG>. If property is empty or not set then property
|
||||
# <name> is used instead. Variable <name> has watcher property_reader_guard that
|
||||
# doesn't allow to edit it.
|
||||
# create_property_reader(<name>)
|
||||
# Input:
|
||||
# name - Name of watched property and output variable
|
||||
################################################################################
|
||||
function(create_property_reader NAME)
|
||||
set(PROPERTY_READER_GUARD_DISABLED TRUE)
|
||||
set(CONFIG_VALUE "$<TARGET_GENEX_EVAL:${PROPS_TARGET},$<TARGET_PROPERTY:${PROPS_TARGET},${NAME}_$<UPPER_CASE:$<CONFIG>>>>")
|
||||
set(IS_CONFIG_VALUE_EMPTY "$<STREQUAL:${CONFIG_VALUE},>")
|
||||
set(GENERAL_VALUE "$<TARGET_GENEX_EVAL:${PROPS_TARGET},$<TARGET_PROPERTY:${PROPS_TARGET},${NAME}>>")
|
||||
set("${NAME}" "$<IF:${IS_CONFIG_VALUE_EMPTY},${GENERAL_VALUE},${CONFIG_VALUE}>" PARENT_SCOPE)
|
||||
variable_watch("${NAME}" property_reader_guard)
|
||||
endfunction()
|
||||
|
||||
################################################################################
|
||||
# Set property $<name>_${PROPS_CONFIG_U} of ${PROPS_TARGET} to <value>
|
||||
# set_config_specific_property(<name> <value>)
|
||||
# Input:
|
||||
# name - Prefix of property name
|
||||
# value - New value
|
||||
################################################################################
|
||||
function(set_config_specific_property NAME VALUE)
|
||||
set_target_properties("${PROPS_TARGET}" PROPERTIES "${NAME}_${PROPS_CONFIG_U}" "${VALUE}")
|
||||
endfunction()
|
||||
|
||||
################################################################################
|
||||
|
||||
create_property_reader("TARGET_NAME")
|
||||
create_property_reader("OUTPUT_DIRECTORY")
|
||||
|
||||
set_config_specific_property("TARGET_NAME" "${PROPS_TARGET}")
|
||||
set_config_specific_property("OUTPUT_NAME" "${TARGET_NAME}")
|
||||
set_config_specific_property("ARCHIVE_OUTPUT_NAME" "${TARGET_NAME}")
|
||||
set_config_specific_property("LIBRARY_OUTPUT_NAME" "${TARGET_NAME}")
|
||||
set_config_specific_property("RUNTIME_OUTPUT_NAME" "${TARGET_NAME}")
|
||||
|
||||
set_config_specific_property("ARCHIVE_OUTPUT_DIRECTORY" "${OUTPUT_DIRECTORY}")
|
||||
set_config_specific_property("LIBRARY_OUTPUT_DIRECTORY" "${OUTPUT_DIRECTORY}")
|
||||
set_config_specific_property("RUNTIME_OUTPUT_DIRECTORY" "${OUTPUT_DIRECTORY}")
|
||||
@@ -0,0 +1,12 @@
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/Default.cmake")
|
||||
|
||||
set_config_specific_property("OUTPUT_DIRECTORY" "${CMAKE_SOURCE_DIR}$<$<NOT:$<STREQUAL:${CMAKE_VS_PLATFORM_NAME},Win32>>:/${CMAKE_VS_PLATFORM_NAME}>/${PROPS_CONFIG}")
|
||||
|
||||
if(MSVC)
|
||||
create_property_reader("DEFAULT_CXX_EXCEPTION_HANDLING")
|
||||
create_property_reader("DEFAULT_CXX_DEBUG_INFORMATION_FORMAT")
|
||||
|
||||
set_target_properties("${PROPS_TARGET}" PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
|
||||
set_config_specific_property("DEFAULT_CXX_EXCEPTION_HANDLING" "/EHsc")
|
||||
set_config_specific_property("DEFAULT_CXX_DEBUG_INFORMATION_FORMAT" "/Zi")
|
||||
endif()
|
||||
@@ -0,0 +1,234 @@
|
||||
# utils file for projects came from visual studio solution with cmake-converter.
|
||||
|
||||
################################################################################
|
||||
# Wrap each token of the command with condition
|
||||
################################################################################
|
||||
cmake_policy(PUSH)
|
||||
cmake_policy(SET CMP0054 NEW)
|
||||
macro(prepare_commands)
|
||||
unset(TOKEN_ROLE)
|
||||
unset(COMMANDS)
|
||||
foreach(TOKEN ${ARG_COMMANDS})
|
||||
if("${TOKEN}" STREQUAL "COMMAND")
|
||||
set(TOKEN_ROLE "KEYWORD")
|
||||
elseif("${TOKEN_ROLE}" STREQUAL "KEYWORD")
|
||||
set(TOKEN_ROLE "CONDITION")
|
||||
elseif("${TOKEN_ROLE}" STREQUAL "CONDITION")
|
||||
set(TOKEN_ROLE "COMMAND")
|
||||
elseif("${TOKEN_ROLE}" STREQUAL "COMMAND")
|
||||
set(TOKEN_ROLE "ARG")
|
||||
endif()
|
||||
|
||||
if("${TOKEN_ROLE}" STREQUAL "KEYWORD")
|
||||
list(APPEND COMMANDS "${TOKEN}")
|
||||
elseif("${TOKEN_ROLE}" STREQUAL "CONDITION")
|
||||
set(CONDITION ${TOKEN})
|
||||
elseif("${TOKEN_ROLE}" STREQUAL "COMMAND")
|
||||
list(APPEND COMMANDS "$<$<NOT:${CONDITION}>:${DUMMY}>$<${CONDITION}:${TOKEN}>")
|
||||
elseif("${TOKEN_ROLE}" STREQUAL "ARG")
|
||||
list(APPEND COMMANDS "$<${CONDITION}:${TOKEN}>")
|
||||
endif()
|
||||
endforeach()
|
||||
endmacro()
|
||||
cmake_policy(POP)
|
||||
|
||||
################################################################################
|
||||
# Transform all the tokens to absolute paths
|
||||
################################################################################
|
||||
macro(prepare_output)
|
||||
unset(OUTPUT)
|
||||
foreach(TOKEN ${ARG_OUTPUT})
|
||||
if(IS_ABSOLUTE ${TOKEN})
|
||||
list(APPEND OUTPUT "${TOKEN}")
|
||||
else()
|
||||
list(APPEND OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/${TOKEN}")
|
||||
endif()
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
################################################################################
|
||||
# Parse add_custom_command_if args.
|
||||
#
|
||||
# Input:
|
||||
# PRE_BUILD - Pre build event option
|
||||
# PRE_LINK - Pre link event option
|
||||
# POST_BUILD - Post build event option
|
||||
# TARGET - Target
|
||||
# OUTPUT - List of output files
|
||||
# DEPENDS - List of files on which the command depends
|
||||
# COMMANDS - List of commands(COMMAND condition1 commannd1 args1 COMMAND
|
||||
# condition2 commannd2 args2 ...)
|
||||
# Output:
|
||||
# OUTPUT - Output files
|
||||
# DEPENDS - Files on which the command depends
|
||||
# COMMENT - Comment
|
||||
# PRE_BUILD - TRUE/FALSE
|
||||
# PRE_LINK - TRUE/FALSE
|
||||
# POST_BUILD - TRUE/FALSE
|
||||
# TARGET - Target name
|
||||
# COMMANDS - Prepared commands(every token is wrapped in CONDITION)
|
||||
# NAME - Unique name for custom target
|
||||
# STEP - PRE_BUILD/PRE_LINK/POST_BUILD
|
||||
################################################################################
|
||||
function(add_custom_command_if_parse_arguments)
|
||||
cmake_parse_arguments("ARG" "PRE_BUILD;PRE_LINK;POST_BUILD" "TARGET;COMMENT" "DEPENDS;OUTPUT;COMMANDS" ${ARGN})
|
||||
|
||||
if(WIN32)
|
||||
set(DUMMY "cd.")
|
||||
elseif(UNIX)
|
||||
set(DUMMY "true")
|
||||
endif()
|
||||
|
||||
prepare_commands()
|
||||
prepare_output()
|
||||
|
||||
set(DEPENDS "${ARG_DEPENDS}")
|
||||
set(COMMENT "${ARG_COMMENT}")
|
||||
set(PRE_BUILD "${ARG_PRE_BUILD}")
|
||||
set(PRE_LINK "${ARG_PRE_LINK}")
|
||||
set(POST_BUILD "${ARG_POST_BUILD}")
|
||||
set(TARGET "${ARG_TARGET}")
|
||||
if(PRE_BUILD)
|
||||
set(STEP "PRE_BUILD")
|
||||
elseif(PRE_LINK)
|
||||
set(STEP "PRE_LINK")
|
||||
elseif(POST_BUILD)
|
||||
set(STEP "POST_BUILD")
|
||||
endif()
|
||||
set(NAME "${TARGET}_${STEP}")
|
||||
|
||||
set(OUTPUT "${OUTPUT}" PARENT_SCOPE)
|
||||
set(DEPENDS "${DEPENDS}" PARENT_SCOPE)
|
||||
set(COMMENT "${COMMENT}" PARENT_SCOPE)
|
||||
set(PRE_BUILD "${PRE_BUILD}" PARENT_SCOPE)
|
||||
set(PRE_LINK "${PRE_LINK}" PARENT_SCOPE)
|
||||
set(POST_BUILD "${POST_BUILD}" PARENT_SCOPE)
|
||||
set(TARGET "${TARGET}" PARENT_SCOPE)
|
||||
set(COMMANDS "${COMMANDS}" PARENT_SCOPE)
|
||||
set(STEP "${STEP}" PARENT_SCOPE)
|
||||
set(NAME "${NAME}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
################################################################################
|
||||
# Add conditional custom command
|
||||
#
|
||||
# Generating Files
|
||||
# The first signature is for adding a custom command to produce an output:
|
||||
# add_custom_command_if(
|
||||
# <OUTPUT output1 [output2 ...]>
|
||||
# <COMMANDS>
|
||||
# <COMMAND condition command1 [args1...]>
|
||||
# [COMMAND condition command2 [args2...]]
|
||||
# [DEPENDS [depends...]]
|
||||
# [COMMENT comment]
|
||||
#
|
||||
# Build Events
|
||||
# add_custom_command_if(
|
||||
# <TARGET target>
|
||||
# <PRE_BUILD | PRE_LINK | POST_BUILD>
|
||||
# <COMMAND condition command1 [args1...]>
|
||||
# [COMMAND condition command2 [args2...]]
|
||||
# [COMMENT comment]
|
||||
#
|
||||
# Input:
|
||||
# output - Output files the command is expected to produce
|
||||
# condition - Generator expression for wrapping the command
|
||||
# command - Command-line(s) to execute at build time.
|
||||
# args - Command`s args
|
||||
# depends - Files on which the command depends
|
||||
# comment - Display the given message before the commands are executed at
|
||||
# build time.
|
||||
# PRE_BUILD - Run before any other rules are executed within the target
|
||||
# PRE_LINK - Run after sources have been compiled but before linking the
|
||||
# binary
|
||||
# POST_BUILD - Run after all other rules within the target have been
|
||||
# executed
|
||||
################################################################################
|
||||
function(add_custom_command_if)
|
||||
add_custom_command_if_parse_arguments(${ARGN})
|
||||
|
||||
if(OUTPUT AND TARGET)
|
||||
message(FATAL_ERROR "Wrong syntax. A TARGET and OUTPUT can not both be specified.")
|
||||
endif()
|
||||
|
||||
if(OUTPUT)
|
||||
add_custom_command(OUTPUT ${OUTPUT}
|
||||
${COMMANDS}
|
||||
DEPENDS ${DEPENDS}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
COMMENT ${COMMENT})
|
||||
elseif(TARGET)
|
||||
if(PRE_BUILD AND NOT ${CMAKE_GENERATOR} MATCHES "Visual Studio")
|
||||
add_custom_target(
|
||||
${NAME}
|
||||
${COMMANDS}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
COMMENT ${COMMENT})
|
||||
add_dependencies(${TARGET} ${NAME})
|
||||
else()
|
||||
add_custom_command(
|
||||
TARGET ${TARGET}
|
||||
${STEP}
|
||||
${COMMANDS}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
COMMENT ${COMMENT})
|
||||
endif()
|
||||
else()
|
||||
message(FATAL_ERROR "Wrong syntax. A TARGET or OUTPUT must be specified.")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
################################################################################
|
||||
# Use props file for a target and configs
|
||||
# use_props(<target> <configs...> <props_file>)
|
||||
# Inside <props_file> there are following variables:
|
||||
# PROPS_TARGET - <target>
|
||||
# PROPS_CONFIG - One of <configs...>
|
||||
# PROPS_CONFIG_U - Uppercase PROPS_CONFIG
|
||||
# Input:
|
||||
# target - Target to apply props file
|
||||
# configs - Build configurations to apply props file
|
||||
# props_file - CMake script
|
||||
################################################################################
|
||||
macro(use_props TARGET CONFIGS PROPS_FILE)
|
||||
set(PROPS_TARGET "${TARGET}")
|
||||
foreach(PROPS_CONFIG ${CONFIGS})
|
||||
string(TOUPPER "${PROPS_CONFIG}" PROPS_CONFIG_U)
|
||||
|
||||
get_filename_component(ABSOLUTE_PROPS_FILE "${PROPS_FILE}" ABSOLUTE BASE_DIR "${CMAKE_CURRENT_LIST_DIR}")
|
||||
if(EXISTS "${ABSOLUTE_PROPS_FILE}")
|
||||
include("${ABSOLUTE_PROPS_FILE}")
|
||||
else()
|
||||
message(WARNING "Corresponding cmake file from props \"${ABSOLUTE_PROPS_FILE}\" doesn't exist")
|
||||
endif()
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
################################################################################
|
||||
# Add compile options to source file
|
||||
# source_file_compile_options(<source_file> [compile_options...])
|
||||
# Input:
|
||||
# source_file - Source file
|
||||
# compile_options - Options to add to COMPILE_FLAGS property
|
||||
################################################################################
|
||||
function(source_file_compile_options SOURCE_FILE)
|
||||
if("${ARGC}" LESS_EQUAL "1")
|
||||
return()
|
||||
endif()
|
||||
|
||||
get_source_file_property(COMPILE_OPTIONS "${SOURCE_FILE}" COMPILE_OPTIONS)
|
||||
|
||||
if(COMPILE_OPTIONS)
|
||||
list(APPEND COMPILE_OPTIONS ${ARGN})
|
||||
else()
|
||||
set(COMPILE_OPTIONS "${ARGN}")
|
||||
endif()
|
||||
|
||||
set_source_files_properties("${SOURCE_FILE}" PROPERTIES COMPILE_OPTIONS "${COMPILE_OPTIONS}")
|
||||
endfunction()
|
||||
|
||||
################################################################################
|
||||
# Default properties of visual studio projects
|
||||
################################################################################
|
||||
set(DEFAULT_CXX_PROPS "${CMAKE_CURRENT_LIST_DIR}/DefaultCXX.cmake")
|
||||
set(DEFAULT_Fortran_PROPS "${CMAKE_CURRENT_LIST_DIR}/DefaultFortran.cmake")
|
||||
+44
-10
@@ -3,27 +3,61 @@ project(OTRGui)
|
||||
|
||||
set(PLATFORM "Desktop")
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/build)
|
||||
#set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/build)
|
||||
set(APP_ICON_RESOURCE_WINDOWS ${CMAKE_CURRENT_SOURCE_DIR}/appicon.rc)
|
||||
|
||||
add_subdirectory(libs/raylib)
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
set(OpenGL_GL_PREFERENCE "GLVND")
|
||||
endif()
|
||||
|
||||
include(CMake/Utils.cmake)
|
||||
|
||||
add_subdirectory(libs/raylib EXCLUDE_FROM_ALL)
|
||||
|
||||
include_directories(src)
|
||||
include_directories(src/game)
|
||||
include_directories(include)
|
||||
|
||||
include_external_msproject(ZAPD ../../ZAPDTR/ZAPD/ZAPD.vcproj)
|
||||
include_external_msproject(ZAPDUtils ../../ZAPDTR/ZAPDUtils/ZAPDUtils.vcproj)
|
||||
include_external_msproject(libultraship ../../libultraship/libultraship/libultraship.vcproj)
|
||||
include_external_msproject(OTRExporter ../../OTRExporter/OTRExporter/OTRExporter.vcproj)
|
||||
if (NOT TARGET libultraship)
|
||||
add_subdirectory(../libultraship/libultraship ${CMAKE_BINARY_DIR}/libultraship)
|
||||
endif()
|
||||
if (NOT TARGET ZAPD)
|
||||
add_subdirectory(../ZAPDTR/ZAPD ${CMAKE_BINARY_DIR}/ZAPD)
|
||||
endif()
|
||||
if (NOT TARGET ZAPDUtils)
|
||||
add_subdirectory(../ZAPDTR/ZAPDUtils ${CMAKE_BINARY_DIR}/ZAPDUtils)
|
||||
endif()
|
||||
if (NOT TARGET OTRExporter)
|
||||
add_subdirectory(../OTRExporter/OTRExporter ${CMAKE_BINARY_DIR}/OTRExporter)
|
||||
endif()
|
||||
if (NOT TARGET storm)
|
||||
add_subdirectory(../StormLib ${CMAKE_BINARY_DIR}/StormLib)
|
||||
endif()
|
||||
|
||||
file(GLOB_RECURSE HEADERS src/*.h)
|
||||
file(GLOB_RECURSE SOURCES src/*.cpp)
|
||||
file(GLOB_RECURSE C_SOURCES src/*.c)
|
||||
|
||||
add_executable(${PROJECT_NAME} ${SOURCES} ${C_SOURCES} ${HEADERS} ${APP_ICON_RESOURCE_WINDOWS})
|
||||
add_custom_command(TARGET ${PROJECT_NAME} PRE_BUILD COMMAND ${CMAKE_COMMAND} -Dsrc_dir="${CMAKE_SOURCE_DIR}/assets" -Ddst_dir="${CMAKE_CURRENT_BINARY_DIR}/assets" -P "${CMAKE_CURRENT_SOURCE_DIR}/Overwrite.cmake")
|
||||
add_custom_command(TARGET ${PROJECT_NAME} PRE_BUILD COMMAND ${CMAKE_COMMAND} -Dsrc_dir="${CMAKE_SOURCE_DIR}/../OTRExporter/assets" -Ddst_dir="${CMAKE_CURRENT_BINARY_DIR}/assets/game" -P "${CMAKE_CURRENT_SOURCE_DIR}/Overwrite.cmake")
|
||||
add_custom_command(TARGET ${PROJECT_NAME} PRE_BUILD COMMAND ${CMAKE_COMMAND} -Dsrc_dir="${CMAKE_SOURCE_DIR}/../soh/assets/xml" -Ddst_dir="${CMAKE_CURRENT_BINARY_DIR}/assets/extractor/xmls" -P "${CMAKE_CURRENT_SOURCE_DIR}/Overwrite.cmake")
|
||||
add_executable(${PROJECT_NAME} EXCLUDE_FROM_ALL ${SOURCES} ${C_SOURCES} ${HEADERS} ${APP_ICON_RESOURCE_WINDOWS})
|
||||
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
use_props(${PROJECT_NAME} "${CMAKE_CONFIGURATION_TYPES}" "${DEFAULT_CXX_PROPS}")
|
||||
endif()
|
||||
|
||||
add_custom_target(Assets ALL
|
||||
COMMAND ${CMAKE_COMMAND} -Dsrc_dir="${CMAKE_CURRENT_SOURCE_DIR}/assets" -Ddst_dir="${CMAKE_CURRENT_BINARY_DIR}/assets" -P "${CMAKE_CURRENT_SOURCE_DIR}/Overwrite.cmake"
|
||||
COMMAND ${CMAKE_COMMAND} -Dsrc_dir="${CMAKE_CURRENT_SOURCE_DIR}/../OTRExporter/assets" -Ddst_dir="${CMAKE_CURRENT_BINARY_DIR}/assets/game" -P "${CMAKE_CURRENT_SOURCE_DIR}/Overwrite.cmake"
|
||||
COMMAND ${CMAKE_COMMAND} -Dsrc_dir="${CMAKE_CURRENT_SOURCE_DIR}/../soh/assets/xml" -Ddst_dir="${CMAKE_CURRENT_BINARY_DIR}/assets/extractor/xmls" -P "${CMAKE_CURRENT_SOURCE_DIR}/Overwrite.cmake"
|
||||
)
|
||||
|
||||
add_dependencies(OTRGui Assets)
|
||||
|
||||
target_link_libraries(${PROJECT_NAME} PUBLIC raylib)
|
||||
|
||||
INSTALL(TARGETS OTRGui DESTINATION . COMPONENT ship)
|
||||
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/assets
|
||||
DESTINATION .
|
||||
COMPONENT ship
|
||||
)
|
||||
INSTALL(TARGETS ZAPD DESTINATION assets/extractor COMPONENT ship)
|
||||
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
file(GLOB_RECURSE _file_list RELATIVE "${src_dir}" "${src_dir}/*")
|
||||
include(CMakePrintHelpers)
|
||||
|
||||
string(REPLACE "\\ " " " sources_dir "${src_dir}")
|
||||
string(REPLACE "\\ " " " destination_dir "${dst_dir}")
|
||||
|
||||
file(GLOB_RECURSE _file_list RELATIVE "${sources_dir}" "${sources_dir}/*")
|
||||
|
||||
foreach( each_file ${_file_list} )
|
||||
set(destinationfile "${dst_dir}/${each_file}")
|
||||
set(sourcefile "${src_dir}/${each_file}")
|
||||
set(destinationfile "${destination_dir}/${each_file}")
|
||||
set(sourcefile "${sources_dir}/${each_file}")
|
||||
if(NOT EXISTS ${destinationfile} OR ${sourcefile} IS_NEWER_THAN ${destinationfile})
|
||||
get_filename_component(destinationdir ${destinationfile} DIRECTORY)
|
||||
file(COPY ${sourcefile} DESTINATION ${destinationdir})
|
||||
endif()
|
||||
endforeach(each_file)
|
||||
endforeach(each_file)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<SymbolMap File="symbols/SymbolMap_OoTMqDbg.txt"/>
|
||||
<ActorList File="symbols/ActorList_OoTMqDbg.txt"/>
|
||||
<ObjectList File="symbols/ObjectList_OoTMqDbg.txt"/>
|
||||
<ExternalXMLFolder Path="assets/extractor/xmls/"/>
|
||||
<ExternalXMLFolder Path="assets/extractor/xmls/GC_MQ_D/"/>
|
||||
<TexturePool File="TexturePool.xml"/>
|
||||
<ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/>
|
||||
</Root>
|
||||
@@ -0,0 +1,8 @@
|
||||
<Root>
|
||||
<SymbolMap File="symbols/SymbolMap_OoTMqDbg.txt"/>
|
||||
<ActorList File="symbols/ActorList_OoTMqDbg.txt"/>
|
||||
<ObjectList File="symbols/ObjectList_OoTMqDbg.txt"/>
|
||||
<ExternalXMLFolder Path="assets/extractor/xmls/GC_NMQ_D/"/>
|
||||
<TexturePool File="TexturePool.xml"/>
|
||||
<ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/>
|
||||
</Root>
|
||||
@@ -0,0 +1,8 @@
|
||||
<Root>
|
||||
<SymbolMap File="symbols/SymbolMap_OoTMqDbg.txt"/>
|
||||
<ActorList File="symbols/ActorList_OoTMqDbg.txt"/>
|
||||
<ObjectList File="symbols/ObjectList_OoTMqDbg.txt"/>
|
||||
<ExternalXMLFolder Path="assets/extractor/xmls/GC_NMQ_PAL_F/"/>
|
||||
<TexturePool File="TexturePool.xml"/>
|
||||
<ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="objects/gameplay_keep/"/>
|
||||
</Root>
|
||||
File diff suppressed because it is too large
Load Diff
+108
-55
@@ -18,6 +18,7 @@ Shader shader = { 0 };
|
||||
Light light = { 0 };
|
||||
Vector3 lightPos = { -5.0f, 10.0f, 10.0f };
|
||||
Vector2 dragOffset;
|
||||
bool isDragging = false;
|
||||
std::string sohFolder = NULLSTR;
|
||||
bool extracting = false;
|
||||
bool rom_ready = false;
|
||||
@@ -25,6 +26,7 @@ bool single_thread = false;
|
||||
bool hide_second_btn = false;
|
||||
RomVersion version;
|
||||
const char* patched_rom = "tmp/rom.z64";
|
||||
extern bool oldExtractMode;
|
||||
|
||||
static std::string currentStep = "None";
|
||||
|
||||
@@ -65,17 +67,34 @@ void OTRGame::init(){
|
||||
mat.shader = shader;
|
||||
}
|
||||
|
||||
if(fs::exists("soh.exe") && !fs::exists("oot.otr")) {
|
||||
if((fs::exists("soh.exe") || fs::exists("soh.elf")) && !fs::exists("oot.otr")) {
|
||||
hide_second_btn = true;
|
||||
sohFolder = ".";
|
||||
}
|
||||
}
|
||||
|
||||
void ExtractRom() {
|
||||
const WriteResult result = ExtractBaserom(patched_rom);
|
||||
void ExtractRom()
|
||||
{
|
||||
WriteResult result;
|
||||
|
||||
if (oldExtractMode)
|
||||
ExtractBaserom(patched_rom);
|
||||
else
|
||||
result.error = NULLSTR;
|
||||
|
||||
if (result.error == NULLSTR) {
|
||||
if (MoonUtils::exists("oot.otr")) MoonUtils::rm("oot.otr");
|
||||
startWorker();
|
||||
if (MoonUtils::exists("Extract")) MoonUtils::rm("Extract");
|
||||
|
||||
MoonUtils::mkdir("Extract");
|
||||
//MoonUtils::copy("tmp/baserom/Audiobank", "Extract/Audiobank");
|
||||
//MoonUtils::copy("tmp/baserom/Audioseq", "Extract/Audioseq");
|
||||
//MoonUtils::copy("tmp/baserom/Audiotable", "Extract/Audiotable");
|
||||
//MoonUtils::copy("tmp/baserom/version", "Extract/version");
|
||||
|
||||
MoonUtils::copy("assets/game/", "Extract/assets/");
|
||||
|
||||
startWorker(version);
|
||||
extracting = true;
|
||||
}
|
||||
}
|
||||
@@ -95,69 +114,103 @@ void OTRGame::update(){
|
||||
}
|
||||
|
||||
void OTRGame::draw() {
|
||||
Vector2 windowSize(GetScreenWidth(), GetScreenHeight());
|
||||
Rectangle titlebar = Rectangle(0, 0, windowSize.x - 50, 35);
|
||||
Vector2 mousePos = GetMousePosition();
|
||||
Vector2 mouseDelta = GetMouseDelta();
|
||||
|
||||
if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT) && !isDragging &&
|
||||
mousePos.x >= titlebar.x && mousePos.y >= titlebar.y && mousePos.x <= titlebar.x + titlebar.width && mousePos.y <= titlebar.y + titlebar.height) {
|
||||
isDragging = true;
|
||||
dragOffset = mousePos;
|
||||
}
|
||||
else if (IsMouseButtonReleased(MOUSE_BUTTON_LEFT) && isDragging) {
|
||||
isDragging = false;
|
||||
dragOffset = Vector2(0, 0);
|
||||
}
|
||||
|
||||
if (isDragging && (mouseDelta.x != 0.0f || mouseDelta.y != 0.0f)) {
|
||||
Vector2 wndPos = GetWindowPosition();
|
||||
wndPos = Vector2(wndPos.x + (mousePos.x - dragOffset.x), wndPos.y + (mousePos.y - dragOffset.y));
|
||||
|
||||
// Calculate virtual screen total size in case there are multiple monitors
|
||||
|
||||
int vsX1 = 0, vsY1 = 0, vsX2 = 0, vsY2 = 0;
|
||||
int monitorCount = GetMonitorCount();
|
||||
|
||||
for (int m = 0; m < monitorCount; m++) {
|
||||
Vector2 monitorPos = GetMonitorPosition(m);
|
||||
Vector2 monitorSize = Vector2(GetMonitorWidth(m), GetMonitorHeight(m));
|
||||
|
||||
if (monitorPos.x < vsX1) vsX1 = monitorPos.x;
|
||||
if (monitorPos.y < vsY1) vsY1 = monitorPos.y;
|
||||
if (monitorPos.x + monitorSize.x > vsX2) vsX2 = monitorPos.x + monitorSize.x;
|
||||
if (monitorPos.y + monitorSize.y > vsY2) vsY2 = monitorPos.y + monitorSize.y;
|
||||
}
|
||||
|
||||
// Clamp the window to the borders of the monitors
|
||||
if (wndPos.x < vsX1) wndPos.x = vsX1;
|
||||
if (wndPos.x < vsX1) wndPos.x = vsX1;
|
||||
if (wndPos.y < vsY1) wndPos.y = vsY1;
|
||||
if (wndPos.x + windowSize.x > vsX2) wndPos.x = vsX2 - windowSize.x;
|
||||
if (wndPos.y + windowSize.y > vsY2) wndPos.y = vsY2 - windowSize.y;
|
||||
|
||||
SetWindowPosition(wndPos.x, wndPos.y);
|
||||
}
|
||||
|
||||
BeginDrawing();
|
||||
ClearBackground(Color(40, 40, 40, 255));
|
||||
Vector3 windowSize(GetScreenWidth(), GetScreenHeight());
|
||||
Rectangle titlebar = Rectangle(0, 0, windowSize.x - 50, 35);
|
||||
Vector2 mousePos = Vector2(GetMouseX(), GetMouseY());
|
||||
bool hoveredTitlebar = mousePos.x >= titlebar.x && mousePos.y >= titlebar.y && mousePos.x <= titlebar.x + titlebar.width && mousePos.y <= titlebar.y + titlebar.height;
|
||||
ClearBackground(Color(40, 40, 40, 255));
|
||||
|
||||
if (hoveredTitlebar && IsMouseButtonDown(MOUSE_BUTTON_LEFT)) {
|
||||
if (dragOffset.x == 0 && dragOffset.y == 0) dragOffset = mousePos;
|
||||
Vector2 wndPos = GetWindowPosition();
|
||||
DrawTexture(Textures["Frame"], 0, 0, WHITE);
|
||||
|
||||
SetWindowPosition(wndPos.x + (mousePos.x - dragOffset.x), wndPos.y + (mousePos.y - dragOffset.y));
|
||||
}
|
||||
else dragOffset = Vector2(0, 0);
|
||||
Texture2D titleTex = Textures["Title"];
|
||||
DrawTexture(titleTex, windowSize.x / 2 - titleTex.width / 2, titlebar.height / 2 - titleTex.height / 2, WHITE);
|
||||
|
||||
DrawTexture(Textures["Frame"], 0, 0, WHITE);
|
||||
if (UIUtils::GuiIcon("Exit", windowSize.x - 36, titlebar.height / 2 - 10) && (extracting && currentStep.find("Done") != std::string::npos || !extracting)) {
|
||||
closeRequested = true;
|
||||
}
|
||||
|
||||
Texture2D titleTex = Textures["Title"];
|
||||
DrawTexture(titleTex, windowSize.x / 2 - titleTex.width / 2, titlebar.height / 2 - titleTex.height / 2, WHITE);
|
||||
BeginMode3D(camera);
|
||||
DrawModelEx(Models["Ship"], Vector3Zero(), Vector3(.0f, 1.0f, .0f), this->ModelRotation, SCALE(1.0f), WHITE);
|
||||
EndMode3D();
|
||||
|
||||
if (UIUtils::GuiIcon("Exit", windowSize.x - 36, titlebar.height / 2 - 10) && (extracting && currentStep.find("Done") != std::string::npos || !extracting)) {
|
||||
CloseWindow();
|
||||
}
|
||||
constexpr float text_y = 125.f;
|
||||
UIUtils::GuiShadowText(("Rom Type: " + version.version).c_str(), 32, text_y, 10, WHITE, BLACK);
|
||||
UIUtils::GuiShadowText("Tool Version: 1.0", 32, text_y + 15, 10, WHITE, BLACK);
|
||||
UIUtils::GuiShadowText("OTR Version: 1.0", 32, text_y + 30, 10, WHITE, BLACK);
|
||||
|
||||
BeginMode3D(camera);
|
||||
DrawModelEx(Models["Ship"] ,Vector3Zero(), Vector3(.0f, 1.0f, .0f), this->ModelRotation, SCALE(1.0f), WHITE);
|
||||
EndMode3D();
|
||||
|
||||
constexpr float text_y = 125.f;
|
||||
UIUtils::GuiShadowText(("Rom Type: " + version.version).c_str(), 32, text_y, 10, WHITE, BLACK);
|
||||
UIUtils::GuiShadowText("Tool Version: 1.0", 32, text_y + 15, 10, WHITE, BLACK);
|
||||
UIUtils::GuiShadowText("OTR Version: 1.0", 32, text_y + 30, 10, WHITE, BLACK);
|
||||
if (oldExtractMode)
|
||||
UIUtils::GuiToggle(&single_thread, "Single Thread", 32, text_y + 40, currentStep != NULLSTR);
|
||||
|
||||
if(!hide_second_btn && UIUtils::GuiIconButton("Folder", "Open\nShip Folder", 109, 50, currentStep != NULLSTR, "Select your Ship of Harkinian Folder\n\nYou could use another folder\nfor development purposes")) {
|
||||
const std::string path = NativeFS->LaunchFileExplorer(LaunchType::FOLDER);
|
||||
sohFolder = path;
|
||||
}
|
||||
|
||||
if (UIUtils::GuiIconButton("Cartridge", "Open\nOoT Rom", 32, 50, currentStep != NULLSTR, "Select an Ocarina of Time\nMaster Quest or Vanilla Debug Rom\n\nYou can dump it or lend one from Nintendo")) {
|
||||
const std::string path = NativeFS->LaunchFileExplorer(LaunchType::FILE);
|
||||
if (path != NULLSTR) {
|
||||
const std::string patched_n64 = std::string(patched_rom);
|
||||
MoonUtils::rm(patched_n64);
|
||||
version = GetVersion(fopen(path.c_str(), "r"));
|
||||
if (version.version != NULLSTR) {
|
||||
MoonUtils::copy(path, patched_n64);
|
||||
rom_ready = true;
|
||||
return;
|
||||
}
|
||||
fix_baserom(path.c_str(), patched_rom);
|
||||
version = GetVersion(fopen(patched_rom, "r"));
|
||||
if (version.version != NULLSTR) rom_ready = true;
|
||||
if (!hide_second_btn && UIUtils::GuiIconButton("Folder", "Open\nShip Folder", 109, 50, currentStep != NULLSTR, "Select your Ship of Harkinian Folder\n\nYou could use another folder\nfor development purposes")) {
|
||||
const std::string path = NativeFS->LaunchFileExplorer(LaunchType::FOLDER);
|
||||
sohFolder = path;
|
||||
}
|
||||
|
||||
if (UIUtils::GuiIconButton("Cartridge", "Open\nOoT Rom", 32, 50, currentStep != NULLSTR, "Select an Ocarina of Time\nGameCube PAL or Vanilla Debug Rom\n\nYou can dump it or lend one from Nintendo")) {
|
||||
const std::string path = NativeFS->LaunchFileExplorer(LaunchType::FILE);
|
||||
if (path != NULLSTR) {
|
||||
const std::string patched_n64 = std::string(patched_rom);
|
||||
MoonUtils::rm(patched_n64);
|
||||
version = GetVersion(fopen(path.c_str(), "r"));
|
||||
if (version.version != NULLSTR) {
|
||||
MoonUtils::copy(path, patched_n64);
|
||||
rom_ready = true;
|
||||
return;
|
||||
}
|
||||
fix_baserom(path.c_str(), patched_rom);
|
||||
version = GetVersion(fopen(patched_rom, "r"));
|
||||
if (version.version != NULLSTR) rom_ready = true;
|
||||
}
|
||||
}
|
||||
|
||||
if(currentStep != NULLSTR) {
|
||||
DrawRectangle(0, 0, windowSize.x, windowSize.y, Color(0, 0, 0, 160));
|
||||
DrawTexture(Textures["Modal"], windowSize.x / 2 - Textures["Modal"].width / 2, windowSize.y / 2 - Textures["Modal"].height / 2, WHITE);
|
||||
UIUtils::GuiShadowText(currentStep.c_str(), 0, windowSize.y / 2, 10, WHITE, BLACK, windowSize.x, true);
|
||||
}
|
||||
if (currentStep != NULLSTR) {
|
||||
DrawRectangle(0, 0, windowSize.x, windowSize.y, Color(0, 0, 0, 160));
|
||||
DrawTexture(Textures["Modal"], windowSize.x / 2 - Textures["Modal"].width / 2, windowSize.y / 2 - Textures["Modal"].height / 2, WHITE);
|
||||
UIUtils::GuiShadowText(currentStep.c_str(), 0, windowSize.y / 2, 10, WHITE, BLACK, windowSize.x, true);
|
||||
}
|
||||
|
||||
EndDrawing();
|
||||
EndDrawing();
|
||||
}
|
||||
|
||||
void setCurrentStep(const std::string& step) {
|
||||
@@ -166,4 +219,4 @@ void setCurrentStep(const std::string& step) {
|
||||
|
||||
void OTRGame::exit(){
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,6 +19,8 @@ public:
|
||||
void update();
|
||||
void draw();
|
||||
void exit();
|
||||
|
||||
inline bool CloseRequested() { return closeRequested; }
|
||||
protected:
|
||||
void LoadTexture(const std::string& name, const std::string& path) {
|
||||
const Image tmp = LoadImage(path.c_str());
|
||||
@@ -32,6 +34,9 @@ protected:
|
||||
SetTextureFilter(font.texture, TEXTURE_FILTER_POINT);
|
||||
Fonts[name] = font;
|
||||
}
|
||||
|
||||
private:
|
||||
bool closeRequested = false;
|
||||
};
|
||||
|
||||
extern OTRGame* Game;
|
||||
|
||||
@@ -83,37 +83,37 @@ RomVersion GetVersion(FILE* rom) {
|
||||
break;
|
||||
case OOT_NTSC_JP_GC:
|
||||
version.version = "JP GameCube (MQ Disk)";
|
||||
version.listPath = "gamecube_mq.txt";
|
||||
version.listPath = "gamecube.txt";
|
||||
version.offset = OOT_OFF_JP_GC;
|
||||
break;
|
||||
case OOT_NTSC_JP_GC_CE:
|
||||
version.version = "GameCube (Collectors Edition Disk)";
|
||||
version.listPath = "gamecube_mq.txt";
|
||||
version.listPath = "gamecube.txt";
|
||||
version.offset = OOT_OFF_JP_GC_CE;
|
||||
break;
|
||||
case OOT_NTSC_JP_MQ:
|
||||
version.version = "JP Master Quest";
|
||||
version.listPath = "gamecube_mq.txt";
|
||||
version.listPath = "gamecube.txt";
|
||||
version.offset = OOT_OFF_JP_MQ;
|
||||
break;
|
||||
case OOT_NTSC_US_MQ:
|
||||
version.version = "NTSC Master Quest";
|
||||
version.listPath = "gamecube_mq.txt";
|
||||
version.listPath = "gamecube.txt";
|
||||
version.offset = OOT_OFF_JP_MQ;
|
||||
break;
|
||||
case OOT_NTSC_US_GC:
|
||||
version.version = "NTSC GameCube";
|
||||
version.listPath = "gamecube_mq.txt";
|
||||
version.listPath = "gamecube.txt";
|
||||
version.offset = OOT_OFF_US_MQ;
|
||||
break;
|
||||
case OOT_PAL_GC:
|
||||
version.version = "PAL GameCube";
|
||||
version.listPath = "gamecube_mq.txt";
|
||||
version.listPath = "gamecube_pal.txt";
|
||||
version.offset = OOT_OFF_PAL_GC;
|
||||
break;
|
||||
case OOT_PAL_MQ:
|
||||
version.version = "PAL Master Quest";
|
||||
version.listPath = "pal_mq.txt";
|
||||
version.listPath = "gamecube_pal.txt";
|
||||
version.offset = OOT_OFF_PAL_MQ;
|
||||
break;
|
||||
case OOT_PAL_GC_DBG1:
|
||||
@@ -179,6 +179,8 @@ WriteResult ExtractBaserom(const char* romPath) {
|
||||
|
||||
const std::vector<std::string> lines = MoonUtils::split(read(MoonUtils::join("assets/extractor/filelists", version.listPath)), '\n');
|
||||
|
||||
std::vector<uint8_t> decompressedData(1);
|
||||
|
||||
for (int i = 0; i < lines.size(); i++) {
|
||||
FILE* outFile = fopen(MoonUtils::join("tmp/baserom", lines[i]).c_str(), "wb");
|
||||
const int romOffset = version.offset + (DMA_ENTRY_SIZE * i);
|
||||
@@ -196,10 +198,13 @@ WriteResult ExtractBaserom(const char* romPath) {
|
||||
auto outData = new uint8_t[size];
|
||||
memcpy(outData, romData + physStart, size);
|
||||
|
||||
|
||||
if (compressed) {
|
||||
std::vector<uint8_t> compressedData = yaz0_encode(outData, size);
|
||||
outData = compressedData.data();
|
||||
size = compressedData.size();
|
||||
int decSize = virtEnd - virtStart;
|
||||
decompressedData = std::vector<uint8_t>(decSize);
|
||||
yaz0_decode(outData, decompressedData.data(), decSize);
|
||||
outData = decompressedData.data();
|
||||
size = decSize;
|
||||
}
|
||||
|
||||
fwrite(outData, sizeof(char), size, outFile);
|
||||
|
||||
@@ -1,23 +1,7 @@
|
||||
#ifndef EXTRACT_BASEROM_H_
|
||||
#define EXTRACT_BASEROM_H_
|
||||
|
||||
#define OOT_NTSC_10 0xEC7011B7
|
||||
#define OOT_NTSC_11 0xD43DA81F
|
||||
#define OOT_NTSC_12 0x693BA2AE
|
||||
#define OOT_PAL_10 0xB044B569
|
||||
#define OOT_PAL_11 0xB2055FBD
|
||||
#define OOT_NTSC_JP_GC_CE 0xF7F52DB8
|
||||
#define OOT_NTSC_JP_GC 0xF611F4BA
|
||||
#define OOT_NTSC_US_GC 0xF3DD35BA
|
||||
#define OOT_PAL_GC 0x09465AC3
|
||||
#define OOT_NTSC_JP_MQ 0xF43B45BA
|
||||
#define OOT_NTSC_US_MQ 0xF034001A
|
||||
#define OOT_PAL_MQ 0x1D4136F3
|
||||
#define OOT_PAL_GC_DBG1 0x871E1C92 // 03-21-2002 build
|
||||
#define OOT_PAL_GC_DBG2 0x87121EFE // 03-13-2002 build
|
||||
#define OOT_PAL_GC_MQ_DBG 0x917D18F6
|
||||
#define OOT_IQUE_TW 0x3D81FB3E
|
||||
#define OOT_IQUE_CN 0xB1E1E07B
|
||||
#include "../../libultraship/libultraship/GameVersions.h"
|
||||
#include <cstdio>
|
||||
#include <string>
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "utils/mutils.h"
|
||||
#include "ctpl/ctpl_stl.h"
|
||||
#include <thread>
|
||||
#include <impl/baserom_extractor/baserom_extractor.h>
|
||||
|
||||
#ifdef _WIN32
|
||||
#define PLATFORM Platforms::WINDOWS
|
||||
@@ -13,6 +14,7 @@
|
||||
#endif
|
||||
namespace Util = MoonUtils;
|
||||
|
||||
bool oldExtractMode = false;
|
||||
static int maxResources = 0;
|
||||
static int extractedResources = 0;
|
||||
bool buildingOtr = false;
|
||||
@@ -22,19 +24,29 @@ bool isWindows() {
|
||||
return (PLATFORM == Platforms::WINDOWS);
|
||||
}
|
||||
|
||||
void BuildOTR(const std::string output) {
|
||||
Util::copy("tmp/baserom/Audiobank", "Extract/Audiobank");
|
||||
Util::copy("tmp/baserom/Audioseq", "Extract/Audioseq");
|
||||
Util::copy("tmp/baserom/Audiotable", "Extract/Audiotable");
|
||||
|
||||
Util::copy("assets/game/", "Extract/assets/");
|
||||
|
||||
std::string execStr = Util::format("assets/extractor/%s", isWindows() ? "ZAPD.exe" : "ZAPD.out") + " botr -se OTR";
|
||||
ProcessResult result = NativeFS->LaunchProcess(execStr);
|
||||
if(result.exitCode != 0) {
|
||||
std::cout << "\nError when building the OTR file with error code: " << result.exitCode << " !" << std::endl;
|
||||
std::cout << "Aborting...\n" << std::endl;
|
||||
std::string GetXMLVersion(RomVersion version)
|
||||
{
|
||||
switch (version.crc)
|
||||
{
|
||||
case OOT_PAL_GC_DBG1: return "GC_NMQ_D";
|
||||
case OOT_PAL_GC_MQ_DBG: return "GC_MQ_D";
|
||||
case OOT_PAL_GC: return "GC_NMQ_PAL_F";
|
||||
}
|
||||
|
||||
return "ERROR";
|
||||
}
|
||||
|
||||
void BuildOTR(const std::string output) {
|
||||
if (oldExtractMode)
|
||||
{
|
||||
std::string execStr = Util::format("assets/extractor/%s", isWindows() ? "ZAPD.exe" : "ZAPD.out") + " botr -se OTR";
|
||||
ProcessResult result = NativeFS->LaunchProcess(execStr);
|
||||
if (result.exitCode != 0) {
|
||||
std::cout << "\nError when building the OTR file with error code: " << result.exitCode << " !" << std::endl;
|
||||
std::cout << "Aborting...\n" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
setCurrentStep("Done!");
|
||||
|
||||
if (output == ".") return;
|
||||
@@ -44,9 +56,9 @@ void BuildOTR(const std::string output) {
|
||||
MoonUtils::copy("oot.otr", outputPath);
|
||||
}
|
||||
|
||||
void ExtractFile(std::string xmlPath, std::string outPath, std::string outSrcPath) {
|
||||
void ExtractFile(std::string xmlPath, std::string outPath, std::string outSrcPath, RomVersion version) {
|
||||
std::string execStr = Util::format("assets/extractor/%s", isWindows() ? "ZAPD.exe" : "ZAPD.out");
|
||||
std::string args = Util::format(" e -eh -i %s -b tmp/baserom/ -o %s -osf %s -gsf 1 -rconf assets/extractor/Config.xml -se OTR %s", xmlPath.c_str(), outPath.c_str(), outSrcPath.c_str(), xmlPath.find("overlays") != std::string::npos ? "--static" : "");
|
||||
std::string args = Util::format(" e -eh -i %s -b tmp/baserom/ -o %s -osf %s -gsf 1 -rconf assets/extractor/Config_%s.xml -se OTR %s", xmlPath.c_str(), outPath.c_str(), outSrcPath.c_str(), GetXMLVersion(version).c_str(), xmlPath.find("overlays") != std::string::npos ? "--static" : "");
|
||||
ProcessResult result = NativeFS->LaunchProcess(execStr + args);
|
||||
|
||||
if (result.exitCode != 0) {
|
||||
@@ -55,53 +67,81 @@ void ExtractFile(std::string xmlPath, std::string outPath, std::string outSrcPat
|
||||
}
|
||||
}
|
||||
|
||||
void ExtractFunc(std::string fullPath) {
|
||||
void ExtractFunc(std::string fullPath, RomVersion version) {
|
||||
std::vector<std::string> path = Util::split(fullPath, Util::pathSeparator());
|
||||
std::string outPath = Util::join(Util::join("assets/extractor/xmls/output", path[4]), Util::basename(fullPath));
|
||||
Util::mkdir(outPath);
|
||||
ExtractFile(fullPath, outPath, outPath);
|
||||
ExtractFile(fullPath, outPath, outPath, version);
|
||||
setCurrentStep("Extracting: " + Util::basename(fullPath));
|
||||
extractedResources++;
|
||||
}
|
||||
|
||||
void startWorker() {
|
||||
std::string path = "assets/extractor/xmls";
|
||||
std::vector<std::string> files;
|
||||
Util::dirscan(path, files);
|
||||
std::vector<std::string> xmlFiles;
|
||||
void startWorker(RomVersion version) {
|
||||
std::string path = "assets/extractor/xmls/";
|
||||
|
||||
const int num_threads = std::thread::hardware_concurrency();
|
||||
ctpl::thread_pool pool(num_threads / 2);
|
||||
for(auto &file : files) {
|
||||
if (file.find(".xml") != std::string::npos) xmlFiles.push_back(file);
|
||||
}
|
||||
path += GetXMLVersion(version);
|
||||
|
||||
for (auto& file : xmlFiles) {
|
||||
if(single_thread) {
|
||||
ExtractFunc(file);
|
||||
} else {
|
||||
pool.push([file](int) {
|
||||
ExtractFunc(file);
|
||||
});
|
||||
// Util::write("tmp/baserom/version", (char*)&version.crc, sizeof(version.crc));
|
||||
|
||||
if (oldExtractMode)
|
||||
{
|
||||
std::vector<std::string> files;
|
||||
Util::dirscan(path, files);
|
||||
std::vector<std::string> xmlFiles;
|
||||
|
||||
const int num_threads = std::thread::hardware_concurrency();
|
||||
ctpl::thread_pool pool(num_threads / 2);
|
||||
for (auto& file : files) {
|
||||
if (file.find(".xml") != std::string::npos) xmlFiles.push_back(file);
|
||||
}
|
||||
}
|
||||
|
||||
maxResources = xmlFiles.size();
|
||||
for (auto& file : xmlFiles) {
|
||||
if (single_thread) {
|
||||
ExtractFunc(file, version);
|
||||
}
|
||||
else {
|
||||
pool.push([file, version](int) {
|
||||
ExtractFunc(file, version);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
maxResources = xmlFiles.size();
|
||||
}
|
||||
else
|
||||
{
|
||||
std::string execStr = Util::format("assets/extractor/%s", isWindows() ? "ZAPD.exe" : "ZAPD.out");
|
||||
std::string args = Util::format(" ed -eh -i %s -b tmp/rom.z64 -fl assets/extractor/filelists -o %s -osf %s -gsf 1 -rconf assets/extractor/Config_%s.xml -se OTR %s", path.c_str(), path + "../", path + "../", GetXMLVersion(version).c_str(), "");
|
||||
ProcessResult result = NativeFS->LaunchProcess(execStr + args);
|
||||
|
||||
if (result.exitCode != 0) {
|
||||
std::cout << "\nError when extracting the ROM with error code: " << result.exitCode << " !" << std::endl;
|
||||
std::cout << "Aborting...\n" << std::endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("All done?\n");
|
||||
}
|
||||
|
||||
maxResources = 1;
|
||||
}
|
||||
}
|
||||
|
||||
void updateWorker(const std::string& output) {
|
||||
if (maxResources > 0 && !buildingOtr && extractedResources >= maxResources) {
|
||||
if (maxResources > 0 && !buildingOtr && (extractedResources >= maxResources || !oldExtractMode))
|
||||
{
|
||||
setCurrentStep("Building OTR...");
|
||||
if (skipFrames < 3) {
|
||||
skipFrames++;
|
||||
return;
|
||||
}
|
||||
buildingOtr = true;
|
||||
if (single_thread){
|
||||
|
||||
if (single_thread || !oldExtractMode){
|
||||
BuildOTR(output);
|
||||
return;
|
||||
}
|
||||
std::thread otr(BuildOTR, output);
|
||||
otr.detach();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,5 +5,7 @@ enum Platforms {
|
||||
WINDOWS, LINUX
|
||||
};
|
||||
|
||||
void startWorker();
|
||||
struct RomVersion;
|
||||
|
||||
void startWorker(RomVersion version);
|
||||
void updateWorker(const std::string& output);
|
||||
+3
-3
@@ -17,8 +17,8 @@ void UpdateDrawFrame(void) {
|
||||
}
|
||||
|
||||
int main() {
|
||||
constexpr Vector2 windowSize = Vector2(400, 200);
|
||||
SetTargetFPS(144);
|
||||
constexpr Vector2 windowSize = Vector2(400, 200);
|
||||
SetConfigFlags(FLAG_VSYNC_HINT);
|
||||
SetConfigFlags(FLAG_WINDOW_HIGHDPI);
|
||||
SetConfigFlags(FLAG_WINDOW_UNDECORATED);
|
||||
SetConfigFlags(FLAG_MSAA_4X_HINT);
|
||||
@@ -32,7 +32,7 @@ int main() {
|
||||
Game = new OTRGame();
|
||||
Game->preload();
|
||||
Game->init();
|
||||
while(!WindowShouldClose()) {
|
||||
while(!WindowShouldClose() && !Game->CloseRequested()) {
|
||||
UpdateDrawFrame();
|
||||
}
|
||||
CloseWindow();
|
||||
|
||||
@@ -72,7 +72,11 @@ namespace MoonUtils {
|
||||
vector<string> result;
|
||||
stringstream ss (s);
|
||||
string item;
|
||||
while (getline(ss, item, delim)) {
|
||||
while (getline(ss, item, delim))
|
||||
{
|
||||
if (item.at(item.size() - 1) == '\r')
|
||||
item = item.substr(0, item.size() - 1);
|
||||
|
||||
result.push_back (item);
|
||||
}
|
||||
return result;
|
||||
|
||||
@@ -6,25 +6,42 @@ The Ship does not include assets and as such requires a prior copy of the game t
|
||||
|
||||
## Quick Start
|
||||
|
||||
1) Download [The Ship of Harkinian](https://github.com/HarbourMasters/Shipwright/releases/latest) from releases.
|
||||
2) Get a ZRET OoT Debug ROM
|
||||
```
|
||||
Build date: `zelda@srd022j 03-02-21 00:49:18`
|
||||
sha1: cee6bc3c2a634b41728f2af8da54d9bf8cc14099
|
||||
```
|
||||
1) Download The Ship of Harkinian from [Discord](https://discord.com/invite/BtBmd55HVH).
|
||||
2) Requires a supported copy of the game (See supported games below).
|
||||
3) Use the OTRGui to generate an `oot.otr` archive file.
|
||||
4) Launch `soh.exe`
|
||||
|
||||
### Supported Games
|
||||
#### Ocarina of Time Debug PAL GC (not Master Quest)
|
||||
> Currently the recommended option
|
||||
```
|
||||
Build team: `zelda@srd022j`
|
||||
Build date: `03-02-21 00:49:18` (year-month-day)
|
||||
sha1: cee6bc3c2a634b41728f2af8da54d9bf8cc14099
|
||||
```
|
||||
#### Ocarina of Time PAL GameCube
|
||||
> May lead to crashes and instability
|
||||
```
|
||||
sha1: 0227d7c0074f2d0ac935631990da8ec5914597b4
|
||||
```
|
||||
#### Ocarina of Time Debug PAL GC MQ (Dungeons will be Master Quest)
|
||||
```
|
||||
Build team: `zelda@srd022j`
|
||||
Build date: `03-02-21 00:16:31` (year-month-day)
|
||||
sha1: 079b855b943d6ad8bd1eb026c0ed169ecbdac7da (Produced by decomp)
|
||||
sha1: 50bebedad9e0f10746a52b07239e47fa6c284d03 (Alternate)
|
||||
```
|
||||
|
||||
Congratulations, you are now sailing with the Ship of Harkinian! Have fun!
|
||||
|
||||
## Additional Setup Information
|
||||
|
||||
The Ship of Harkinian uses a proprietary versioning system consisting of a sci-fi film character followed by a phonetic alphabet code word. The film character represents a major release version which increments with the addition of many new features and bug fixes. The code word represents a minor release version which increments with small updates mainly comprised of bug fixes. For example, `DECKARD ALFA`.
|
||||
|
||||
### The Extraction Tool
|
||||
### Windows Rom Extraction
|
||||
|
||||
* Open a rom to initiate generating the `oot.otr` archive file.
|
||||
* If a second button exists then `oot.otr` already exists. To prevent overwriting the old `oot.otr` use this button to choose a new game directory. The new directory must not already contain an `oot.otr` to prevent an error.
|
||||
* Open OTRGui.exe, and select one of the supported roms listed above, to generate the `oot.otr` archive file.
|
||||
* If a second button already exits then `oot.otr` already exists. To prevent overwriting the old `oot.otr` use this button to choose a new game directory. The new directory must not already contain an `oot.otr` to prevent an error.
|
||||
* When the process completes, place `oot.otr` beside `soh.exe` if it is not already.
|
||||
|
||||
This packaging process can take up to **5 minutes**.
|
||||
@@ -32,13 +49,60 @@ This packaging process can take up to **5 minutes**.
|
||||
Close the OTRGui when the `Done!` message appears.
|
||||
If you get another message, then you might have selected the wrong rom. Make sure to use a rom consistent with the above checksum.
|
||||
|
||||
### Linux Rom Extraction
|
||||
|
||||
* Place one of the supported roms in the same folder as the appimage.
|
||||
* When you run the soh appimage, it should begin generating the `oot.otr` archive file.
|
||||
* When the process completes, place `oot.otr` in the same folder as the appimage, if it is not already, then run the appimage.
|
||||
|
||||
The packaging process can take up to **5 minutes**.
|
||||
|
||||
If you get any errors, then you might have selected the wrong rom. Make sure to use a rom consistent with the above checksum.
|
||||
|
||||
### MacOS Rom Extraction
|
||||
|
||||
* Run `soh.app`, and when prompted, select one of the supported roms listed above.
|
||||
* You should see a notification saying `Processing OTR`, then, once the process is complete, you should get a notification saying `OTR Successfully Generated`, then the game should start.
|
||||
|
||||
The packing process can take up to **5 minutes**.
|
||||
|
||||
If you get an error saying `Incompatible ROM hash`, you have selected the wrong rom, make sure the checksum matches one of the ones listed above.
|
||||
|
||||
### Nintendo Switch Rom Extraction
|
||||
|
||||
* Download the latest PC release of the Ship of Harkinian, and follow the instructions above for generating the `oot.otr` archive on that platform.
|
||||
* Place the `.nro` and the `oot.otr` archive into a folder called `soh` in your Switch folder on your Switch
|
||||
|
||||
### Nintendo Wii U Rom Extraction
|
||||
|
||||
* Download the latest PC release of the Ship of Harkinian, and follow the instructions above for generating the `oot.otr` archive on that platform.
|
||||
* Copy the `.rpx` and the `oot.otr` archive to `wiiu/apps/soh`
|
||||
|
||||
---
|
||||
|
||||
If you still cannot get the tool to work, join our [Discord Server](https://discord.com/invite/BtBmd55HVH) and ask for help in the `#support` text channel. Keep-in-mind that we do not condone piracy in any way.
|
||||
|
||||
### Running The Ship of Harkinian
|
||||
|
||||
Launch the game. If the window immediately closes, or if there are visual artifacts, you may have selected the wrong rom in the OTRGui tool.
|
||||
Launch the game. If the window immediately closes, or if there are visual artifacts, you may have selected the wrong rom in the OTRGui tool.
|
||||
|
||||
Currently, DirectX 11 and OpenGL is supported. Change the renderer by opening the `shipofharkinian.ini` configuration file in notepad and add `sdl` to `gfx backend` for OpenGL or leave blank for DirectX.
|
||||
Default keyboard configuration:
|
||||
| N64 | A | B | Z | Start | Analog stick | C buttons | D-Pad |
|
||||
| - | - | - | - | - | - | - | - |
|
||||
| Keyboard | X | C | Z | Space | WASD | Arrow keys | TFGH |
|
||||
|
||||
Other shortcuts:
|
||||
| Keys | Action |
|
||||
| - | - |
|
||||
| F1 | Toggle menubar |
|
||||
| F5 | Save state |
|
||||
| F6 | Change state |
|
||||
| F7 | Load state |
|
||||
| F10 | Fullscreen (OpenGL) |
|
||||
| Alt+Enter | Fullscreen (DirectX) |
|
||||
| Ctrl+R | Reset |
|
||||
|
||||
Currently, DirectX 11 and OpenGL are supported. Change the renderer by opening the `shipofharkinian.json` configuration file in notepad and add `sdl` to the quotes in `"GfxBackend": ""` for OpenGL or leave blank for DirectX.
|
||||
|
||||
## Take The Survey
|
||||
Want to use cartridge readers in tandem with the OTRGui?
|
||||
@@ -50,63 +114,56 @@ Official Discord: https://discord.com/invite/BtBmd55HVH
|
||||
|
||||
## Building The Ship of Harkinian
|
||||
|
||||
1. Install [Python](https://www.python.org/ftp/python/3.10.2/python-3.10.2-amd64.exe)
|
||||
2. Install [Visual Studio 2022 Community Edition](https://visualstudio.microsoft.com/vs/community/)
|
||||
2b. In the Visual Studio Installer, install `MSVC v142 - VS 2019 C++`.
|
||||
4. Clone the Ship of Harkinian repository.
|
||||
5. Put your 2020 OoT debug rom in the `soh` folder.
|
||||
6. Launch `soh/fixbaserom.py`.
|
||||
7. Launch `soh/extract_baserom.py`.
|
||||
8. Copy the `baserom` folder from the `soh` folder into the `OTRExporter` folder.
|
||||
9. Run `OTRExporter/OTRExporter.sln`.
|
||||
10. Switch the solution to `Release x64`.
|
||||
11. Build the solution.
|
||||
12. Launching `OTRExporter/extract_assets.py` will generate an `oot.otr` archive file in `OTRExporter/oot.otr`.
|
||||
13. Run `soh/soh.sln`
|
||||
14. Switch the solution to `Release x86`.
|
||||
15. Build the solution.
|
||||
16. Copy the `OTRExporter/oot.otr` archive file to `soh/Release`.
|
||||
17. Launch `soh.exe`.
|
||||
Refer to the [building instructions](BUILDING.md) to compile SoH.
|
||||
|
||||
## Troubleshooting The Exporter
|
||||
- Affirm that you have an `/assets` folder filled with XMLs in the same directory as OTRGui.exe
|
||||
- Affirm that `zapd.exe` exists in the `/assets/extractor` folder
|
||||
- Confirm that you have an `/assets` folder filled with XMLs in the same directory as OTRGui.exe
|
||||
- Confirm that `zapd.exe` exists in the `/assets/extractor` folder
|
||||
|
||||
## Nightly Builds
|
||||
Nightly builds of Ship of Harkinian are available [here](https://builds.shipofharkinian.com/)
|
||||
|
||||
|
||||
## The Harbour Masters Are...
|
||||
|
||||
Kenix | Lead Developer/Public Relations - Resource Management Programmer, Audio System Programmer, and General Programmer
|
||||
Jack Walker | Lead Developer - OTR Format Programmer, Resource Load Programmer, and General Programmer
|
||||
Louist103 | Developer - Save System Programmer and General Programmer
|
||||
Emil | Developer - Fast3D Programmer
|
||||
m4xw | Developer - Shipwright, Throwing Baguettes, and General Programmer
|
||||
MelonSpeedruns | Developer - General Programmer
|
||||
Rozlette | Developer - General Programmer
|
||||
JoshDuMan | Developer - General Programmer
|
||||
KiritoDev/Lywx | Developer - General Programmer
|
||||
Theo3 | Developer - General Programmer
|
||||
Random06457 | Developer - Linux Build
|
||||
Kenix | Lead Developer/Public Relations - Resource Management Programmer, Audio System Programmer, and General Programmer
|
||||
Jack Walker | Lead Developer - OTR Format Programmer, Resource Load Programmer, and General Programmer
|
||||
Louist103 | Developer - Save System Programmer and General Programmer
|
||||
Emil | Developer - Fast3D Programmer
|
||||
m4xw | Developer - Shipwright, Throwing Baguettes, and General Programmer
|
||||
MelonSpeedruns | Developer - General Programmer
|
||||
Rozlette | Developer - General Programmer
|
||||
JoshDuMan | Developer - General Programmer
|
||||
KiritoDev/Lywx | Developer - General Programmer
|
||||
Theo3 | Developer - General Programmer
|
||||
Random06457 | Developer - Linux Build
|
||||
|
||||
## Special Thanks
|
||||
|
||||
Decomp & ZAPD | Made this project even possible in the first place!
|
||||
MNGoldenEagle | Patiently explained audio data formats, encouragement, and founding ZSO which was the first source of the game's code and resource format documentation.
|
||||
Rrrrry123 | Speedbunner, encouragement, and community moderation
|
||||
Fierce deity | Encouragement and community moderation
|
||||
mzxrules | For his contributions to decomp
|
||||
Aloxado | Developer - General Programmer
|
||||
MegaMech | Developer - General Programmer
|
||||
Revo | Tester - GCC support and General Testing
|
||||
zfg | Tester - General Testing
|
||||
Horseless Headman | Tester - General Testing
|
||||
Steven Pritchett | Tester - General Testing
|
||||
Trenton May | Tester - General Testing
|
||||
Zeldaboy14 | Tester - General Testing, encouragement, and community moderation
|
||||
Koby Howell | Tester - General Testing
|
||||
Logg | Tester - General Testing
|
||||
Taylor Daley | Graphic Design
|
||||
Can't Sleep | Graphic Design
|
||||
MicTheMicrophone | Voice actor for the King
|
||||
Amphibibro | Voice actor for Link
|
||||
|
||||
Lemons
|
||||
Decomp & ZAPD | Made this project even possible in the first place!
|
||||
MNGoldenEagle | Patiently explained audio data formats, encouragement, and founding ZSO which was the first source of the game's code and resource format documentation.
|
||||
Rrrrry123 | Speedbunner, encouragement, and community moderation
|
||||
Fierce deity | Encouragement and community moderation
|
||||
mzxrules | For his contributions to decomp
|
||||
zel. | For his contributions to decomp
|
||||
Aloxado | Developer - General Programmer
|
||||
MegaMech | Developer - General Programmer
|
||||
Revo | Tester - GCC support and General Testing
|
||||
zfg | Tester - General Testing
|
||||
Horseless Headman | Tester - General Testing
|
||||
Steven Pritchett | Tester - General Testing
|
||||
Trenton May | Tester - General Testing
|
||||
Zeldaboy14 | Tester - General Testing, encouragement, and community moderation
|
||||
Koby Howell | Tester - General Testing
|
||||
Logg | Tester - General Testing
|
||||
Taylor Daley | Graphic Design
|
||||
Can't Sleep | Graphic Design
|
||||
|
||||
## Video Credits
|
||||
Kenix | Producer / Writer
|
||||
briaguya | Writer
|
||||
rainbow_fash | Executive Producer
|
||||
ReveriePass | Editor
|
||||
MicTheMicrophone | Gwonam / The King
|
||||
Amphibibro | Link
|
||||
AceHeart | Zelda
|
||||
|
||||
@@ -0,0 +1,168 @@
|
||||
#################
|
||||
## Eclipse
|
||||
#################
|
||||
|
||||
*.pydevproject
|
||||
.project
|
||||
.metadata
|
||||
bin/
|
||||
tmp/
|
||||
*.tmp
|
||||
*.bak
|
||||
*.swp
|
||||
*~.nib
|
||||
local.properties
|
||||
.classpath
|
||||
.settings/
|
||||
.loadpath
|
||||
|
||||
# External tool builders
|
||||
.externalToolBuilders/
|
||||
|
||||
# Locally stored "Eclipse launch configurations"
|
||||
*.launch
|
||||
|
||||
# CDT-specific
|
||||
.cproject
|
||||
|
||||
# PDT-specific
|
||||
.buildpath
|
||||
|
||||
|
||||
#################
|
||||
## Visual Studio
|
||||
#################
|
||||
|
||||
## Ignore Visual Studio temporary files, build results, and
|
||||
## files generated by popular Visual Studio add-ons.
|
||||
|
||||
# User-specific files
|
||||
*.suo
|
||||
*.user
|
||||
*.sln.docstates
|
||||
|
||||
# Build results
|
||||
[Dd]ebug/
|
||||
[Rr]elease/
|
||||
*_i.c
|
||||
*_p.c
|
||||
*.ilk
|
||||
*.meta
|
||||
*.obj
|
||||
*.pch
|
||||
*.pdb
|
||||
*.pgc
|
||||
*.pgd
|
||||
*.rsp
|
||||
*.sbr
|
||||
*.tlb
|
||||
*.tli
|
||||
*.tlh
|
||||
*.tmp
|
||||
*.vspscc
|
||||
.builds
|
||||
*.dotCover
|
||||
*.o
|
||||
*.dylib
|
||||
|
||||
## TODO: If you have NuGet Package Restore enabled, uncomment this
|
||||
#packages/
|
||||
|
||||
# Visual C++ cache files
|
||||
ipch/
|
||||
*.aps
|
||||
*.ncb
|
||||
*.opensdf
|
||||
*.sdf
|
||||
|
||||
# Visual Studio profiler
|
||||
*.psess
|
||||
*.vsp
|
||||
|
||||
# ReSharper is a .NET coding add-in
|
||||
_ReSharper*
|
||||
|
||||
# Installshield output folder
|
||||
[Ee]xpress
|
||||
|
||||
# DocProject is a documentation generator add-in
|
||||
DocProject/buildhelp/
|
||||
DocProject/Help/*.HxT
|
||||
DocProject/Help/*.HxC
|
||||
DocProject/Help/*.hhc
|
||||
DocProject/Help/*.hhk
|
||||
DocProject/Help/*.hhp
|
||||
DocProject/Help/Html2
|
||||
DocProject/Help/html
|
||||
|
||||
# Click-Once directory
|
||||
publish
|
||||
|
||||
# Others
|
||||
[Bb]in
|
||||
[Oo]bj
|
||||
sql
|
||||
TestResults
|
||||
*.Cache
|
||||
ClientBin
|
||||
stylecop.*
|
||||
~$*
|
||||
*.dbmdl
|
||||
Generated_Code #added for RIA/Silverlight projects
|
||||
|
||||
# Backup & report files from converting an old project file to a newer
|
||||
# Visual Studio version. Backup files are not needed, because we have git ;-)
|
||||
_UpgradeReport_Files/
|
||||
Backup*/
|
||||
UpgradeLog*.XML
|
||||
|
||||
|
||||
|
||||
############
|
||||
## Windows
|
||||
############
|
||||
|
||||
# Windows image file caches
|
||||
Thumbs.db
|
||||
|
||||
# Folder config file
|
||||
Desktop.ini
|
||||
|
||||
|
||||
#############
|
||||
## Python
|
||||
#############
|
||||
|
||||
*.py[co]
|
||||
|
||||
# Packages
|
||||
*.egg
|
||||
*.egg-info
|
||||
dist
|
||||
build
|
||||
nxbuild
|
||||
eggs
|
||||
parts
|
||||
bin
|
||||
var
|
||||
sdist
|
||||
develop-eggs
|
||||
.installed.cfg
|
||||
|
||||
# Installer logs
|
||||
pip-log.txt
|
||||
|
||||
# Unit test / coverage reports
|
||||
.coverage
|
||||
.tox
|
||||
|
||||
#Translations
|
||||
*.mo
|
||||
|
||||
#Mr Developer
|
||||
.mr.developer.cfg
|
||||
|
||||
# Mac crap
|
||||
.DS_Store
|
||||
**/project.xcworkspace
|
||||
**/xcuserdata
|
||||
@@ -0,0 +1,479 @@
|
||||
set(PROJECT_NAME StormLib)
|
||||
#project(StormLib)
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
|
||||
set(LIBRARY_NAME storm)
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
include(CMakeDependentOption)
|
||||
|
||||
option(BUILD_SHARED_LIBS "Compile shared libraries" OFF)
|
||||
option(STORM_SKIP_INSTALL "Skip installing files" OFF)
|
||||
option(STORM_BUILD_TESTS
|
||||
"Compile StormLib test application" OFF
|
||||
# "BUILD_TESTING" OFF # Stay coherent with CTest variables
|
||||
)
|
||||
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
set(Source_Files__Windows
|
||||
src/lzma/C/LzFindMt.c
|
||||
src/lzma/C/Threads.c
|
||||
)
|
||||
endif()
|
||||
|
||||
set(SRC_FILES
|
||||
src/adpcm/adpcm.cpp
|
||||
src/huffman/huff.cpp
|
||||
src/jenkins/lookup3.c
|
||||
src/lzma/C/LzFind.c
|
||||
src/lzma/C/LzmaDec.c
|
||||
src/lzma/C/LzmaEnc.c
|
||||
src/pklib/explode.c
|
||||
src/pklib/implode.c
|
||||
src/sparse/sparse.cpp
|
||||
src/FileStream.cpp
|
||||
src/SBaseCommon.cpp
|
||||
src/SBaseDumpData.cpp
|
||||
src/SBaseFileTable.cpp
|
||||
src/SBaseSubTypes.cpp
|
||||
src/SCompression.cpp
|
||||
src/SFileAddFile.cpp
|
||||
src/SFileAttributes.cpp
|
||||
src/SFileCompactArchive.cpp
|
||||
src/SFileCreateArchive.cpp
|
||||
src/SFileExtractFile.cpp
|
||||
src/SFileFindFile.cpp
|
||||
src/SFileGetFileInfo.cpp
|
||||
src/SFileListFile.cpp
|
||||
src/SFileOpenArchive.cpp
|
||||
src/SFileOpenFileEx.cpp
|
||||
src/SFilePatchArchives.cpp
|
||||
src/SFileReadFile.cpp
|
||||
src/SFileVerify.cpp
|
||||
src/libtomcrypt/src/pk/rsa/rsa_verify_simple.c
|
||||
src/libtomcrypt/src/misc/crypt_libc.c
|
||||
${Source_Files__Windows}
|
||||
)
|
||||
|
||||
if(MSVC)
|
||||
# This file is used to create a DLL on windows
|
||||
# Use BUILD_SHARED_LIBS to create StormLib.dll
|
||||
set(STORM_DEF_FILES
|
||||
src/DllMain.def
|
||||
)
|
||||
endif()
|
||||
|
||||
set(TOMCRYPT_FILES
|
||||
src/libtomcrypt/src/hashes/hash_memory.c
|
||||
src/libtomcrypt/src/hashes/md5.c
|
||||
src/libtomcrypt/src/hashes/sha1.c
|
||||
src/libtomcrypt/src/math/ltm_desc.c
|
||||
src/libtomcrypt/src/math/multi.c
|
||||
src/libtomcrypt/src/math/rand_prime.c
|
||||
src/libtomcrypt/src/misc/base64_decode.c
|
||||
src/libtomcrypt/src/misc/crypt_argchk.c
|
||||
src/libtomcrypt/src/misc/crypt_find_hash.c
|
||||
src/libtomcrypt/src/misc/crypt_find_prng.c
|
||||
src/libtomcrypt/src/misc/crypt_hash_descriptor.c
|
||||
src/libtomcrypt/src/misc/crypt_hash_is_valid.c
|
||||
src/libtomcrypt/src/misc/crypt_ltc_mp_descriptor.c
|
||||
src/libtomcrypt/src/misc/crypt_prng_descriptor.c
|
||||
src/libtomcrypt/src/misc/crypt_prng_is_valid.c
|
||||
src/libtomcrypt/src/misc/crypt_register_hash.c
|
||||
src/libtomcrypt/src/misc/crypt_register_prng.c
|
||||
src/libtomcrypt/src/misc/zeromem.c
|
||||
src/libtomcrypt/src/pk/asn1/der_decode_bit_string.c
|
||||
src/libtomcrypt/src/pk/asn1/der_decode_boolean.c
|
||||
src/libtomcrypt/src/pk/asn1/der_decode_choice.c
|
||||
src/libtomcrypt/src/pk/asn1/der_decode_ia5_string.c
|
||||
src/libtomcrypt/src/pk/asn1/der_decode_integer.c
|
||||
src/libtomcrypt/src/pk/asn1/der_decode_object_identifier.c
|
||||
src/libtomcrypt/src/pk/asn1/der_decode_octet_string.c
|
||||
src/libtomcrypt/src/pk/asn1/der_decode_printable_string.c
|
||||
src/libtomcrypt/src/pk/asn1/der_decode_sequence_ex.c
|
||||
src/libtomcrypt/src/pk/asn1/der_decode_sequence_flexi.c
|
||||
src/libtomcrypt/src/pk/asn1/der_decode_sequence_multi.c
|
||||
src/libtomcrypt/src/pk/asn1/der_decode_short_integer.c
|
||||
src/libtomcrypt/src/pk/asn1/der_decode_utctime.c
|
||||
src/libtomcrypt/src/pk/asn1/der_decode_utf8_string.c
|
||||
src/libtomcrypt/src/pk/asn1/der_encode_bit_string.c
|
||||
src/libtomcrypt/src/pk/asn1/der_encode_boolean.c
|
||||
src/libtomcrypt/src/pk/asn1/der_encode_ia5_string.c
|
||||
src/libtomcrypt/src/pk/asn1/der_encode_integer.c
|
||||
src/libtomcrypt/src/pk/asn1/der_encode_object_identifier.c
|
||||
src/libtomcrypt/src/pk/asn1/der_encode_octet_string.c
|
||||
src/libtomcrypt/src/pk/asn1/der_encode_printable_string.c
|
||||
src/libtomcrypt/src/pk/asn1/der_encode_sequence_ex.c
|
||||
src/libtomcrypt/src/pk/asn1/der_encode_sequence_multi.c
|
||||
src/libtomcrypt/src/pk/asn1/der_encode_set.c
|
||||
src/libtomcrypt/src/pk/asn1/der_encode_setof.c
|
||||
src/libtomcrypt/src/pk/asn1/der_encode_short_integer.c
|
||||
src/libtomcrypt/src/pk/asn1/der_encode_utctime.c
|
||||
src/libtomcrypt/src/pk/asn1/der_encode_utf8_string.c
|
||||
src/libtomcrypt/src/pk/asn1/der_length_bit_string.c
|
||||
src/libtomcrypt/src/pk/asn1/der_length_boolean.c
|
||||
src/libtomcrypt/src/pk/asn1/der_length_ia5_string.c
|
||||
src/libtomcrypt/src/pk/asn1/der_length_integer.c
|
||||
src/libtomcrypt/src/pk/asn1/der_length_object_identifier.c
|
||||
src/libtomcrypt/src/pk/asn1/der_length_octet_string.c
|
||||
src/libtomcrypt/src/pk/asn1/der_length_printable_string.c
|
||||
src/libtomcrypt/src/pk/asn1/der_length_sequence.c
|
||||
src/libtomcrypt/src/pk/asn1/der_length_utctime.c
|
||||
src/libtomcrypt/src/pk/asn1/der_sequence_free.c
|
||||
src/libtomcrypt/src/pk/asn1/der_length_utf8_string.c
|
||||
src/libtomcrypt/src/pk/asn1/der_length_short_integer.c
|
||||
src/libtomcrypt/src/pk/ecc/ltc_ecc_map.c
|
||||
src/libtomcrypt/src/pk/ecc/ltc_ecc_mul2add.c
|
||||
src/libtomcrypt/src/pk/ecc/ltc_ecc_mulmod.c
|
||||
src/libtomcrypt/src/pk/ecc/ltc_ecc_points.c
|
||||
src/libtomcrypt/src/pk/ecc/ltc_ecc_projective_add_point.c
|
||||
src/libtomcrypt/src/pk/ecc/ltc_ecc_projective_dbl_point.c
|
||||
src/libtomcrypt/src/pk/pkcs1/pkcs_1_mgf1.c
|
||||
src/libtomcrypt/src/pk/pkcs1/pkcs_1_oaep_decode.c
|
||||
src/libtomcrypt/src/pk/pkcs1/pkcs_1_pss_decode.c
|
||||
src/libtomcrypt/src/pk/pkcs1/pkcs_1_pss_encode.c
|
||||
src/libtomcrypt/src/pk/pkcs1/pkcs_1_v1_5_decode.c
|
||||
src/libtomcrypt/src/pk/pkcs1/pkcs_1_v1_5_encode.c
|
||||
src/libtomcrypt/src/pk/rsa/rsa_exptmod.c
|
||||
src/libtomcrypt/src/pk/rsa/rsa_free.c
|
||||
src/libtomcrypt/src/pk/rsa/rsa_import.c
|
||||
src/libtomcrypt/src/pk/rsa/rsa_make_key.c
|
||||
src/libtomcrypt/src/pk/rsa/rsa_sign_hash.c
|
||||
src/libtomcrypt/src/pk/rsa/rsa_verify_hash.c
|
||||
)
|
||||
|
||||
set(TOMMATH_FILES
|
||||
src/libtommath/bncore.c
|
||||
src/libtommath/bn_fast_mp_invmod.c
|
||||
src/libtommath/bn_fast_mp_montgomery_reduce.c
|
||||
src/libtommath/bn_fast_s_mp_mul_digs.c
|
||||
src/libtommath/bn_fast_s_mp_mul_high_digs.c
|
||||
src/libtommath/bn_fast_s_mp_sqr.c
|
||||
src/libtommath/bn_mp_2expt.c
|
||||
src/libtommath/bn_mp_abs.c
|
||||
src/libtommath/bn_mp_add.c
|
||||
src/libtommath/bn_mp_addmod.c
|
||||
src/libtommath/bn_mp_add_d.c
|
||||
src/libtommath/bn_mp_and.c
|
||||
src/libtommath/bn_mp_clamp.c
|
||||
src/libtommath/bn_mp_clear.c
|
||||
src/libtommath/bn_mp_clear_multi.c
|
||||
src/libtommath/bn_mp_cmp.c
|
||||
src/libtommath/bn_mp_cmp_d.c
|
||||
src/libtommath/bn_mp_cmp_mag.c
|
||||
src/libtommath/bn_mp_cnt_lsb.c
|
||||
src/libtommath/bn_mp_copy.c
|
||||
src/libtommath/bn_mp_count_bits.c
|
||||
src/libtommath/bn_mp_div.c
|
||||
src/libtommath/bn_mp_div_2.c
|
||||
src/libtommath/bn_mp_div_2d.c
|
||||
src/libtommath/bn_mp_div_3.c
|
||||
src/libtommath/bn_mp_div_d.c
|
||||
src/libtommath/bn_mp_dr_is_modulus.c
|
||||
src/libtommath/bn_mp_dr_reduce.c
|
||||
src/libtommath/bn_mp_dr_setup.c
|
||||
src/libtommath/bn_mp_exch.c
|
||||
src/libtommath/bn_mp_exptmod.c
|
||||
src/libtommath/bn_mp_exptmod_fast.c
|
||||
src/libtommath/bn_mp_expt_d.c
|
||||
src/libtommath/bn_mp_exteuclid.c
|
||||
src/libtommath/bn_mp_fread.c
|
||||
src/libtommath/bn_mp_fwrite.c
|
||||
src/libtommath/bn_mp_gcd.c
|
||||
src/libtommath/bn_mp_get_int.c
|
||||
src/libtommath/bn_mp_grow.c
|
||||
src/libtommath/bn_mp_init.c
|
||||
src/libtommath/bn_mp_init_copy.c
|
||||
src/libtommath/bn_mp_init_multi.c
|
||||
src/libtommath/bn_mp_init_set.c
|
||||
src/libtommath/bn_mp_init_set_int.c
|
||||
src/libtommath/bn_mp_init_size.c
|
||||
src/libtommath/bn_mp_invmod.c
|
||||
src/libtommath/bn_mp_invmod_slow.c
|
||||
src/libtommath/bn_mp_is_square.c
|
||||
src/libtommath/bn_mp_jacobi.c
|
||||
src/libtommath/bn_mp_karatsuba_mul.c
|
||||
src/libtommath/bn_mp_karatsuba_sqr.c
|
||||
src/libtommath/bn_mp_lcm.c
|
||||
src/libtommath/bn_mp_lshd.c
|
||||
src/libtommath/bn_mp_mod.c
|
||||
src/libtommath/bn_mp_mod_2d.c
|
||||
src/libtommath/bn_mp_mod_d.c
|
||||
src/libtommath/bn_mp_montgomery_calc_normalization.c
|
||||
src/libtommath/bn_mp_montgomery_reduce.c
|
||||
src/libtommath/bn_mp_montgomery_setup.c
|
||||
src/libtommath/bn_mp_mul.c
|
||||
src/libtommath/bn_mp_mulmod.c
|
||||
src/libtommath/bn_mp_mul_2.c
|
||||
src/libtommath/bn_mp_mul_2d.c
|
||||
src/libtommath/bn_mp_mul_d.c
|
||||
src/libtommath/bn_mp_neg.c
|
||||
src/libtommath/bn_mp_n_root.c
|
||||
src/libtommath/bn_mp_or.c
|
||||
src/libtommath/bn_mp_prime_fermat.c
|
||||
src/libtommath/bn_mp_prime_is_divisible.c
|
||||
src/libtommath/bn_mp_prime_is_prime.c
|
||||
src/libtommath/bn_mp_prime_miller_rabin.c
|
||||
src/libtommath/bn_mp_prime_next_prime.c
|
||||
src/libtommath/bn_mp_prime_rabin_miller_trials.c
|
||||
src/libtommath/bn_mp_prime_random_ex.c
|
||||
src/libtommath/bn_mp_radix_size.c
|
||||
src/libtommath/bn_mp_radix_smap.c
|
||||
src/libtommath/bn_mp_rand.c
|
||||
src/libtommath/bn_mp_read_radix.c
|
||||
src/libtommath/bn_mp_read_signed_bin.c
|
||||
src/libtommath/bn_mp_read_unsigned_bin.c
|
||||
src/libtommath/bn_mp_reduce.c
|
||||
src/libtommath/bn_mp_reduce_2k.c
|
||||
src/libtommath/bn_mp_reduce_2k_l.c
|
||||
src/libtommath/bn_mp_reduce_2k_setup.c
|
||||
src/libtommath/bn_mp_reduce_2k_setup_l.c
|
||||
src/libtommath/bn_mp_reduce_is_2k.c
|
||||
src/libtommath/bn_mp_reduce_is_2k_l.c
|
||||
src/libtommath/bn_mp_reduce_setup.c
|
||||
src/libtommath/bn_mp_rshd.c
|
||||
src/libtommath/bn_mp_set.c
|
||||
src/libtommath/bn_mp_set_int.c
|
||||
src/libtommath/bn_mp_shrink.c
|
||||
src/libtommath/bn_mp_signed_bin_size.c
|
||||
src/libtommath/bn_mp_sqr.c
|
||||
src/libtommath/bn_mp_sqrmod.c
|
||||
src/libtommath/bn_mp_sqrt.c
|
||||
src/libtommath/bn_mp_sub.c
|
||||
src/libtommath/bn_mp_submod.c
|
||||
src/libtommath/bn_mp_sub_d.c
|
||||
src/libtommath/bn_mp_toom_mul.c
|
||||
src/libtommath/bn_mp_toom_sqr.c
|
||||
src/libtommath/bn_mp_toradix.c
|
||||
src/libtommath/bn_mp_toradix_n.c
|
||||
src/libtommath/bn_mp_to_signed_bin.c
|
||||
src/libtommath/bn_mp_to_signed_bin_n.c
|
||||
src/libtommath/bn_mp_to_unsigned_bin.c
|
||||
src/libtommath/bn_mp_to_unsigned_bin_n.c
|
||||
src/libtommath/bn_mp_unsigned_bin_size.c
|
||||
src/libtommath/bn_mp_xor.c
|
||||
src/libtommath/bn_mp_zero.c
|
||||
src/libtommath/bn_prime_tab.c
|
||||
src/libtommath/bn_reverse.c
|
||||
src/libtommath/bn_s_mp_add.c
|
||||
src/libtommath/bn_s_mp_exptmod.c
|
||||
src/libtommath/bn_s_mp_mul_digs.c
|
||||
src/libtommath/bn_s_mp_mul_high_digs.c
|
||||
src/libtommath/bn_s_mp_sqr.c
|
||||
src/libtommath/bn_s_mp_sub.c
|
||||
)
|
||||
|
||||
set(BZIP2_FILES
|
||||
src/bzip2/blocksort.c
|
||||
src/bzip2/bzlib.c
|
||||
src/bzip2/compress.c
|
||||
src/bzip2/crctable.c
|
||||
src/bzip2/decompress.c
|
||||
src/bzip2/huffman.c
|
||||
src/bzip2/randtable.c
|
||||
)
|
||||
|
||||
set(ZLIB_FILES
|
||||
src/zlib/adler32.c
|
||||
src/zlib/compress.c
|
||||
src/zlib/crc32.c
|
||||
src/zlib/deflate.c
|
||||
src/zlib/inffast.c
|
||||
src/zlib/inflate.c
|
||||
src/zlib/inftrees.c
|
||||
src/zlib/trees.c
|
||||
src/zlib/zutil.c
|
||||
)
|
||||
|
||||
set(TEST_SRC_FILES
|
||||
test/StormTest.cpp
|
||||
)
|
||||
|
||||
add_definitions(-D_7ZIP_ST -DBZ_STRICT_ANSI)
|
||||
set(LINK_LIBS)
|
||||
|
||||
find_package(ZLIB)
|
||||
if (ZLIB_FOUND)
|
||||
set(LINK_LIBS ${LINK_LIBS} ZLIB::ZLIB)
|
||||
add_definitions(-D__SYS_ZLIB)
|
||||
else()
|
||||
set(SRC_FILES ${SRC_FILES} ${ZLIB_FILES})
|
||||
endif()
|
||||
|
||||
find_package(BZip2)
|
||||
if (BZIP2_FOUND)
|
||||
set(LINK_LIBS ${LINK_LIBS} BZip2::BZip2)
|
||||
add_definitions(-D__SYS_BZLIB)
|
||||
else()
|
||||
set(SRC_FILES ${SRC_FILES} ${BZIP2_FILES})
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
set(SRC_ADDITIONAL_FILES ${TOMCRYPT_FILES} ${TOMMATH_FILES})
|
||||
set(LINK_LIBS ${LINK_LIBS} wininet)
|
||||
else()
|
||||
option(WITH_LIBTOMCRYPT "Use system LibTomCrypt library" OFF)
|
||||
if(WITH_LIBTOMCRYPT)
|
||||
include(FindPkgConfig)
|
||||
pkg_check_modules(PC_LIBTOMCRYPT libtomcrypt REQUIRED)
|
||||
find_path(LIBTOMCRYPT_INCLUDE_DIR NAMES tomcrypt.h HINTS ${PC_LIBTOMCRYPT_INCLUDE_DIRS} REQUIRED)
|
||||
find_library(LIBTOMCRYPT_LIBRARY NAMES tomcrypt HINTS ${PC_LIBTOMCRYPT_LIBRARY_DIRS} REQUIRED)
|
||||
set(LINK_LIBS ${LINK_LIBS} ${LIBTOMCRYPT_LIBRARY})
|
||||
include_directories(${LIBTOMCRYPT_INCLUDE_DIR})
|
||||
else()
|
||||
set(SRC_ADDITIONAL_FILES ${TOMCRYPT_FILES} ${TOMMATH_FILES})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(${CMAKE_SYSTEM_NAME} STREQUAL FreeBSD)
|
||||
message(STATUS "Using FreeBSD port")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DO_LARGEFILE=0 -Dstat64=stat -Dlstat64=lstat -Dlseek64=lseek -Doff64_t=off_t -Dfstat64=fstat -Dftruncate64=ftruncate")
|
||||
endif()
|
||||
|
||||
if(NOT WIN32 AND NOT APPLE AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL FreeBSD)
|
||||
# Enable POSIX extensions such as `readlink` and `ftruncate`.
|
||||
add_definitions(-D_POSIX_C_SOURCE=200809L)
|
||||
endif()
|
||||
|
||||
add_library(${LIBRARY_NAME} ${LIB_TYPE} ${SRC_FILES} ${SRC_ADDITIONAL_FILES} ${STORM_DEF_FILES})
|
||||
if(WIN32)
|
||||
set_target_properties(${LIBRARY_NAME} PROPERTIES OUTPUT_NAME "StormLib")
|
||||
endif()
|
||||
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
use_props(${LIBRARY_NAME} "${CMAKE_CONFIGURATION_TYPES}" "${DEFAULT_CXX_PROPS}")
|
||||
endif()
|
||||
|
||||
################################################################################
|
||||
# Compile definitions
|
||||
################################################################################
|
||||
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
|
||||
target_compile_definitions(${LIBRARY_NAME} PRIVATE
|
||||
"$<$<CONFIG:Debug>:"
|
||||
"_DEBUG;"
|
||||
"_CRT_SECURE_NO_WARNINGS;"
|
||||
">"
|
||||
"$<$<CONFIG:Release>:"
|
||||
"NDEBUG"
|
||||
">"
|
||||
WIN32
|
||||
_LIB
|
||||
"UNICODE;"
|
||||
"_UNICODE"
|
||||
)
|
||||
elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
|
||||
target_compile_definitions(${LIBRARY_NAME} PRIVATE
|
||||
"$<$<CONFIG:Debug>:"
|
||||
"_DEBUG;"
|
||||
"_CRT_SECURE_NO_WARNINGS;"
|
||||
">"
|
||||
"$<$<CONFIG:Release>:"
|
||||
"NDEBUG;"
|
||||
">"
|
||||
"WIN32;"
|
||||
_LIB
|
||||
"UNICODE;"
|
||||
"_UNICODE"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
################################################################################
|
||||
# MSVC runtime library
|
||||
################################################################################
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
get_property(MSVC_RUNTIME_LIBRARY_DEFAULT TARGET ${LIBRARY_NAME} PROPERTY MSVC_RUNTIME_LIBRARY)
|
||||
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
|
||||
string(CONCAT "MSVC_RUNTIME_LIBRARY_STR"
|
||||
$<$<CONFIG:Debug>:
|
||||
MultiThreadedDebug
|
||||
>
|
||||
$<$<CONFIG:Release>:
|
||||
MultiThreaded
|
||||
>
|
||||
$<$<NOT:$<OR:$<CONFIG:Debug>,$<CONFIG:Release>>>:${MSVC_RUNTIME_LIBRARY_DEFAULT}>
|
||||
)
|
||||
elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
|
||||
string(CONCAT "MSVC_RUNTIME_LIBRARY_STR"
|
||||
$<$<CONFIG:Debug>:
|
||||
MultiThreadedDebug
|
||||
>
|
||||
$<$<CONFIG:Release>:
|
||||
MultiThreaded
|
||||
>
|
||||
$<$<NOT:$<OR:$<CONFIG:Debug>,$<CONFIG:Release>>>:${MSVC_RUNTIME_LIBRARY_DEFAULT}>
|
||||
)
|
||||
endif()
|
||||
set_target_properties(${LIBRARY_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY ${MSVC_RUNTIME_LIBRARY_STR})
|
||||
endif()
|
||||
|
||||
|
||||
target_link_libraries(${LIBRARY_NAME} ${LINK_LIBS})
|
||||
target_compile_definitions(${LIBRARY_NAME} INTERFACE STORMLIB_NO_AUTO_LINK) #CMake will take care of the linking
|
||||
target_include_directories(${LIBRARY_NAME} PUBLIC src/)
|
||||
set_target_properties(${LIBRARY_NAME} PROPERTIES PUBLIC_HEADER "src/StormLib.h;src/StormPort.h")
|
||||
if(BUILD_SHARED_LIBS)
|
||||
message(STATUS "Linking against dependent libraries dynamically")
|
||||
|
||||
if(APPLE)
|
||||
set_target_properties(${LIBRARY_NAME} PROPERTIES FRAMEWORK true)
|
||||
set_target_properties(${LIBRARY_NAME} PROPERTIES LINK_FLAGS "-framework Carbon")
|
||||
endif()
|
||||
if(UNIX)
|
||||
SET(VERSION_MAJOR "9")
|
||||
SET(VERSION_MINOR "22")
|
||||
SET(VERSION_PATCH "0")
|
||||
SET(VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
|
||||
set_target_properties(${LIBRARY_NAME} PROPERTIES VERSION "${VERSION_STRING}")
|
||||
set_target_properties(${LIBRARY_NAME} PROPERTIES SOVERSION "${VERSION_MAJOR}")
|
||||
endif()
|
||||
else()
|
||||
message(STATUS "Linking against dependent libraries statically")
|
||||
endif()
|
||||
|
||||
if (NOT STORM_SKIP_INSTALL)
|
||||
install(TARGETS ${LIBRARY_NAME}
|
||||
RUNTIME DESTINATION bin
|
||||
LIBRARY DESTINATION lib
|
||||
ARCHIVE DESTINATION lib
|
||||
FRAMEWORK DESTINATION /Library/Frameworks
|
||||
PUBLIC_HEADER DESTINATION include
|
||||
INCLUDES DESTINATION include)
|
||||
|
||||
#CPack configurtion
|
||||
SET(CPACK_GENERATOR "DEB" "RPM")
|
||||
SET(CPACK_PACKAGE_NAME ${PROJECT_NAME})
|
||||
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MPQ manipulation library")
|
||||
SET(CPACK_PACKAGE_VENDOR "Ladislav Zezula")
|
||||
SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
|
||||
SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
|
||||
SET(CPACK_PACKAGE_VERSION_MAJOR "${VERSION_MAJOR}")
|
||||
SET(CPACK_PACKAGE_VERSION_MINOR "${VERSION_MINOR}")
|
||||
SET(CPACK_PACKAGE_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}")
|
||||
|
||||
#DEB configuration
|
||||
SET(CPACK_DEBIAN_PACKAGE_SECTION "libs")
|
||||
SET(CPACK_DEBIAN_PACKAGE_HOMEPAGE "http://www.zezula.net/en/mpq/stormlib.html")
|
||||
SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "imbacen@gmail.com")
|
||||
SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64")
|
||||
SET(CPACK_DEBIAN_PACKAGE_DEPENDS "zlib1g,bzip2")
|
||||
|
||||
#RPM configuration
|
||||
SET(CPACK_RPM_PACKAGE_RELEASE 1)
|
||||
SET(CPACK_RPM_PACKAGE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
|
||||
SET(CPACK_RPM_PACKAGE_GROUP "${PROJECT_NAME}")
|
||||
SET(CPACK_RPM_PACKAGE_URL "http://www.zezula.net/en/mpq/stormlib.html")
|
||||
SET(CPACK_RPM_PACKAGE_REQUIRES "zlib,bzip2")
|
||||
|
||||
INCLUDE(CPack)
|
||||
endif()
|
||||
|
||||
if(STORM_BUILD_TESTS)
|
||||
add_executable(StormLib_test ${TEST_SRC_FILES})
|
||||
target_link_libraries(StormLib_test ${LIBRARY_NAME})
|
||||
install(TARGETS StormLib_test RUNTIME DESTINATION bin)
|
||||
endif()
|
||||
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>net.zezula.${PRODUCT_NAME:rfc1034Identifier}</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>8.01</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 1999-2013 Ladislav Zezula
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
@@ -0,0 +1,34 @@
|
||||
@echo off
|
||||
rem Post-build batch for StormLib project
|
||||
rem Called as PostBuild.bat $(ProjectName) $(PlatformName) $(ConfigurationName) [vs2008]
|
||||
rem Example: PostBuild.bat StormLib_dll x64 Debug vs2008
|
||||
|
||||
rem Select build type
|
||||
if "%1" == "StormLib_dll" goto PostBuild_DLL
|
||||
if "%1" == "StormLib" goto PostBuild_LIB
|
||||
goto:eof
|
||||
|
||||
:PostBuild_DLL
|
||||
|
||||
rem Build steps for the DLL. On 32-bit Release version, increment the build number
|
||||
if not "x%2" == "xWin32" goto:eof
|
||||
if not "x%3" == "xRelease" goto:eof
|
||||
PostBuild.exe .\src\DllMain.rc
|
||||
goto:eof
|
||||
|
||||
:PostBuild_LIB
|
||||
|
||||
rem Set target folders
|
||||
if "x%2" == "xWin32" set TARGET_DIR_LEVEL2=lib32
|
||||
if "x%2" == "xx64" set TARGET_DIR_LEVEL2=lib64
|
||||
if "x%4" == "xvs2008" set TARGET_DIR_LEVEL3=vs2008
|
||||
|
||||
rem Check & create target folder structure
|
||||
if not exist ..\aaa goto:eof
|
||||
if not exist ..\aaa\%TARGET_DIR_LEVEL2% md ..\aaa\%TARGET_DIR_LEVEL2%
|
||||
if not exist ..\aaa\%TARGET_DIR_LEVEL2%\%TARGET_DIR_LEVEL3% md ..\aaa\%TARGET_DIR_LEVEL2%\%TARGET_DIR_LEVEL3%
|
||||
|
||||
rem Copy include and LIB files to the target folder
|
||||
copy /Y .\src\StormLib.h ..\aaa\inc >nul
|
||||
copy /Y .\src\StormPort.h ..\aaa\inc >nul
|
||||
copy /Y .\bin\%1\%2\%3\StormLib???.lib ..\aaa\%TARGET_DIR_LEVEL2%\%TARGET_DIR_LEVEL3% >nul
|
||||
@@ -0,0 +1,132 @@
|
||||
|
||||
solution 'StormLib'
|
||||
location 'build'
|
||||
language 'C++'
|
||||
configurations { 'Debug', 'Release', }
|
||||
platforms { 'x32', 'x64' }
|
||||
|
||||
targetdir 'bin'
|
||||
objdir 'bin'
|
||||
|
||||
files {
|
||||
'src/**.h',
|
||||
'src/**.c',
|
||||
'src/**.cpp',
|
||||
'doc/*.txt',
|
||||
}
|
||||
|
||||
removefiles {
|
||||
'src/adpcm/*_old.*',
|
||||
'src/huffman/*_old.*',
|
||||
'src/huffman/huff_patch.*',
|
||||
'src/pklib/crc32.c',
|
||||
'src/zlib/compress.c',
|
||||
}
|
||||
|
||||
filter 'configurations:Debug*'
|
||||
flags { 'Symbols' }
|
||||
defines { '_DEBUG' }
|
||||
optimize 'Debug'
|
||||
|
||||
filter 'configurations:Release*'
|
||||
defines { 'NDEBUG' }
|
||||
optimize 'Full'
|
||||
|
||||
filter 'system:windows'
|
||||
links { 'wininet', }
|
||||
defines { 'WINDOWS', '_WINDOWS' }
|
||||
|
||||
filter { 'system:windows', 'platforms:x32' }
|
||||
defines { 'WIN32', '_WIN32' }
|
||||
|
||||
filter { 'system:windows', 'platforms:x64' }
|
||||
defines { 'WIN64', '_WIN64' }
|
||||
|
||||
filter 'system:linux'
|
||||
defines { '_7ZIP_ST', 'BZ_STRICT_ANSI' }
|
||||
removefiles {
|
||||
'src/lzma/C/LzFindMt.*',
|
||||
'src/lzma/C/Threads.*',
|
||||
}
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
project 'StormLib'
|
||||
kind 'StaticLib'
|
||||
|
||||
removefiles 'src/SBaseDumpData.cpp'
|
||||
|
||||
configurations {
|
||||
'DebugAD', -- Debug Ansi Dynamic
|
||||
'DebugAS', -- Debug Ansi Static
|
||||
'DebugUD', -- Debug Unicode Dynamic
|
||||
'DebugUS', -- Debug Unicode Static
|
||||
'ReleaseAD', -- Release Ansi Dynamic
|
||||
'ReleaseAS', -- Release Ansi Static
|
||||
'ReleaseUD', -- Release Unicode Dynamic'
|
||||
'ReleaseUS', -- Release Unicode Static
|
||||
}
|
||||
|
||||
configmap {
|
||||
['Debug'] = 'DebugUS',
|
||||
['Release'] = 'ReleaseUS',
|
||||
}
|
||||
|
||||
filter 'configurations:*S'
|
||||
flags { 'StaticRuntime' }
|
||||
|
||||
filter { 'configurations:*U*', 'action:vs*' }
|
||||
flags { 'Unicode' }
|
||||
|
||||
filter { 'configurations:*U*', 'not action:vs*' }
|
||||
defines { 'UNICODE', '_UNICODE' }
|
||||
|
||||
filter 'DebugAD'
|
||||
targetsuffix 'DAD'
|
||||
filter 'ReleaseAD'
|
||||
targetsuffix 'RAD'
|
||||
filter 'DebugAS'
|
||||
targetsuffix 'DAS'
|
||||
filter 'ReleaseAS'
|
||||
targetsuffix 'RAS'
|
||||
filter 'DebugUD'
|
||||
targetsuffix 'DUD'
|
||||
filter 'ReleaseUD'
|
||||
targetsuffix 'RUD'
|
||||
filter 'DebugUS'
|
||||
targetsuffix 'DUS'
|
||||
filter 'ReleaseUS'
|
||||
targetsuffix 'RUS'
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
project 'StormLib_dll'
|
||||
kind 'SharedLib'
|
||||
|
||||
targetname 'Stormlib'
|
||||
|
||||
files {
|
||||
'stormlib_dll/DllMain.c',
|
||||
'stormlib_dll/StormLib.def',
|
||||
}
|
||||
|
||||
removefiles 'src/SBaseDumpData.cpp'
|
||||
|
||||
filter { 'system:windows', 'action:gmake' }
|
||||
linkoptions {
|
||||
'-Xlinker --enable-stdcall-fixup',
|
||||
'../stormlib_dll/StormLib.def',
|
||||
}
|
||||
|
||||
filter 'Debug'
|
||||
targetsuffix '_d'
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
project 'StormLib_test'
|
||||
kind 'ConsoleApp'
|
||||
|
||||
files {
|
||||
'test/StormTest.cpp',
|
||||
}
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
@echo off
|
||||
rem This BAT file updates the ZIP file that is to be uploaded to web
|
||||
rem Only use when both 32-bit and 64-bit are properly compiled
|
||||
|
||||
set STORMLIB_NAME=stormlib-9.00
|
||||
|
||||
echo Creating %STORMLIB_NAME%.zip ...
|
||||
cd \Ladik\Appdir
|
||||
zip.exe -ur9 ..\WWW\web\download\%STORMLIB_NAME%.zip StormLib\doc\*
|
||||
zip.exe -ur9 ..\WWW\web\download\%STORMLIB_NAME%.zip StormLib\src\*
|
||||
zip.exe -ur9 ..\WWW\web\download\%STORMLIB_NAME%.zip StormLib\storm_dll\*
|
||||
zip.exe -ur9 ..\WWW\web\download\%STORMLIB_NAME%.zip StormLib\StormLib.xcodeproj\*
|
||||
zip.exe -ur9 ..\WWW\web\download\%STORMLIB_NAME%.zip StormLib\stormlib_dll\*
|
||||
zip.exe -ur9 ..\WWW\web\download\%STORMLIB_NAME%.zip StormLib\test\*
|
||||
zip.exe -u9 ..\WWW\web\download\%STORMLIB_NAME%.zip StormLib\CMakeLists.txt
|
||||
zip.exe -u9 ..\WWW\web\download\%STORMLIB_NAME%.zip StormLib\makefile.*
|
||||
zip.exe -u9 ..\WWW\web\download\%STORMLIB_NAME%.zip StormLib\Info.plist
|
||||
zip.exe -u9 ..\WWW\web\download\%STORMLIB_NAME%.zip StormLib\*.bat
|
||||
zip.exe -u9 ..\WWW\web\download\%STORMLIB_NAME%.zip StormLib\*.sln
|
||||
zip.exe -u9 ..\WWW\web\download\%STORMLIB_NAME%.zip StormLib\*.vcproj
|
||||
zip.exe -u9 ..\WWW\web\download\%STORMLIB_NAME%.zip StormLib\*.vcxproj
|
||||
echo.
|
||||
|
||||
echo Press any key to exit ...
|
||||
pause >nul
|
||||
@@ -0,0 +1,39 @@
|
||||
# StormLib
|
||||
|
||||
This is official repository for the StomLib library, an open-source project that can work with Blizzard MPQ archives.
|
||||
|
||||
## Installation and basic usage
|
||||
### Linux
|
||||
1. Download latest release
|
||||
2. Install StormLib:
|
||||
```
|
||||
$ cd <path-to-StormLib>
|
||||
$ cmake CMakeLists.txt
|
||||
$ make
|
||||
$ make install
|
||||
```
|
||||
3. Include StormLib in your project: `#include <StormLib.h>`
|
||||
4. Make sure you compile your project with `-lstorm -lz -lbz2`
|
||||
|
||||
### Windows (Visual Studio 2008)
|
||||
1. Download the latest release of StormLib
|
||||
2. Open the solution file `StormLib_vs08.sln` in Visual Studio 2008
|
||||
3. Choose "Build / Batch Build" and select every build of "StormLib"
|
||||
4. Choose "Rebuild"
|
||||
5. The result libraries are in `.\bin\Win32` and `.\bin\x64`
|
||||
|
||||
### Windows (Visual Studio 2017 or 2019)
|
||||
0. Make sure you have SDK 10.0.17134.0 installed
|
||||
1. Download the latest release of StormLib
|
||||
2. Open the solution file `StormLib_vs19.sln` in Visual Studio 2017/2019
|
||||
3. Choose "Build / Batch Build" and select every build of "StormLib"
|
||||
4. Choose "Rebuild"
|
||||
5. The result libraries are in `.\bin\Win32` and `.\bin\x64`
|
||||
|
||||
### Windows (Test Project)
|
||||
1. Include the main StormLib header: `#include <StormLib.h>`
|
||||
2. Set the correct library directory for StormLibXYZ.lib:
|
||||
* X: D = Debug, R = Release
|
||||
* Y: A = ANSI build, U = Unicode build
|
||||
* Z: S = Using static CRT library, D = Using Dynamic CRT library
|
||||
3. Rebuild
|
||||
@@ -0,0 +1,3 @@
|
||||
[Project]
|
||||
Manager=KDevCMakeManager
|
||||
Name=StormLib
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,139 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 10.00
|
||||
# Visual Studio 2008
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StormLib", "StormLib_vs08.vcproj", "{78424708-1F6E-4D4B-920C-FB6D26847055}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StormLib_dll", "StormLib_vs08_dll.vcproj", "{CB385198-50B1-4CF4-883B-11F042DED6AA}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StormLib_test", "StormLib_vs08_test.vcproj", "{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Debug|x64 = Debug|x64
|
||||
DebugAD|Win32 = DebugAD|Win32
|
||||
DebugAD|x64 = DebugAD|x64
|
||||
DebugAS|Win32 = DebugAS|Win32
|
||||
DebugAS|x64 = DebugAS|x64
|
||||
DebugUD|Win32 = DebugUD|Win32
|
||||
DebugUD|x64 = DebugUD|x64
|
||||
DebugUS|Win32 = DebugUS|Win32
|
||||
DebugUS|x64 = DebugUS|x64
|
||||
Release|Win32 = Release|Win32
|
||||
Release|x64 = Release|x64
|
||||
ReleaseAD|Win32 = ReleaseAD|Win32
|
||||
ReleaseAD|x64 = ReleaseAD|x64
|
||||
ReleaseAS|Win32 = ReleaseAS|Win32
|
||||
ReleaseAS|x64 = ReleaseAS|x64
|
||||
ReleaseUD|Win32 = ReleaseUD|Win32
|
||||
ReleaseUD|x64 = ReleaseUD|x64
|
||||
ReleaseUS|Win32 = ReleaseUS|Win32
|
||||
ReleaseUS|x64 = ReleaseUS|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.Debug|Win32.ActiveCfg = DebugUS|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.Debug|x64.ActiveCfg = DebugUS|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.Debug|x64.Build.0 = DebugUS|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAD|Win32.ActiveCfg = DebugAD|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAD|Win32.Build.0 = DebugAD|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAD|x64.ActiveCfg = DebugAD|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAD|x64.Build.0 = DebugAD|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAS|Win32.ActiveCfg = DebugAS|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAS|Win32.Build.0 = DebugAS|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAS|x64.ActiveCfg = DebugAS|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAS|x64.Build.0 = DebugAS|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUD|Win32.ActiveCfg = DebugUD|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUD|Win32.Build.0 = DebugUD|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUD|x64.ActiveCfg = DebugUD|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUD|x64.Build.0 = DebugUD|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUS|Win32.ActiveCfg = DebugUS|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUS|Win32.Build.0 = DebugUS|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUS|x64.ActiveCfg = DebugUS|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUS|x64.Build.0 = DebugUS|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.Release|Win32.ActiveCfg = ReleaseUS|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.Release|x64.ActiveCfg = ReleaseUS|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.Release|x64.Build.0 = ReleaseUS|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAD|Win32.ActiveCfg = ReleaseAD|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAD|Win32.Build.0 = ReleaseAD|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAD|x64.ActiveCfg = ReleaseAD|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAD|x64.Build.0 = ReleaseAD|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAS|Win32.ActiveCfg = ReleaseAS|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAS|Win32.Build.0 = ReleaseAS|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAS|x64.ActiveCfg = ReleaseAS|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAS|x64.Build.0 = ReleaseAS|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUD|Win32.ActiveCfg = ReleaseUD|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUD|Win32.Build.0 = ReleaseUD|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUD|x64.ActiveCfg = ReleaseUD|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUD|x64.Build.0 = ReleaseUD|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUS|Win32.ActiveCfg = ReleaseUS|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUS|Win32.Build.0 = ReleaseUS|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUS|x64.ActiveCfg = ReleaseUS|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUS|x64.Build.0 = ReleaseUS|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.Debug|x64.Build.0 = Debug|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugAD|Win32.ActiveCfg = Debug|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugAD|x64.ActiveCfg = Debug|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugAD|x64.Build.0 = Debug|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugAS|Win32.ActiveCfg = Debug|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugAS|x64.ActiveCfg = Debug|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugAS|x64.Build.0 = Debug|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugUD|Win32.ActiveCfg = Debug|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugUD|x64.ActiveCfg = Debug|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugUD|x64.Build.0 = Debug|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugUS|Win32.ActiveCfg = Debug|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugUS|x64.ActiveCfg = Debug|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugUS|x64.Build.0 = Debug|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.Release|Win32.Build.0 = Release|Win32
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.Release|x64.ActiveCfg = Release|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.Release|x64.Build.0 = Release|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseAD|Win32.ActiveCfg = Release|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseAD|x64.ActiveCfg = Release|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseAD|x64.Build.0 = Release|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseAS|Win32.ActiveCfg = Release|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseAS|x64.ActiveCfg = Release|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseAS|x64.Build.0 = Release|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseUD|Win32.ActiveCfg = Release|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseUD|x64.ActiveCfg = Release|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseUD|x64.Build.0 = Release|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseUS|Win32.ActiveCfg = Release|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseUS|x64.ActiveCfg = Release|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseUS|x64.Build.0 = Release|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.Debug|x64.Build.0 = Debug|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugAD|Win32.ActiveCfg = Debug|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugAD|x64.ActiveCfg = Debug|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugAD|x64.Build.0 = Debug|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugAS|Win32.ActiveCfg = Debug|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugAS|x64.ActiveCfg = Debug|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugAS|x64.Build.0 = Debug|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugUD|Win32.ActiveCfg = Debug|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugUD|x64.ActiveCfg = Debug|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugUD|x64.Build.0 = Debug|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugUS|Win32.ActiveCfg = Debug|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugUS|x64.ActiveCfg = Debug|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugUS|x64.Build.0 = Debug|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.Release|Win32.Build.0 = Release|Win32
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.Release|x64.ActiveCfg = Release|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.Release|x64.Build.0 = Release|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseAD|Win32.ActiveCfg = Release|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseAD|x64.ActiveCfg = Release|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseAD|x64.Build.0 = Release|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseAS|Win32.ActiveCfg = Release|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseAS|x64.ActiveCfg = Release|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseAS|x64.Build.0 = Release|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseUD|Win32.ActiveCfg = Release|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseUD|x64.ActiveCfg = Release|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseUD|x64.Build.0 = Release|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseUS|Win32.ActiveCfg = Release|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseUS|x64.ActiveCfg = Release|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseUS|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,162 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 15
|
||||
VisualStudioVersion = 15.0.28010.2050
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StormLib", "StormLib_vs19.vcxproj", "{78424708-1F6E-4D4B-920C-FB6D26847055}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StormLib_dll", "StormLib_vs19_dll.vcxproj", "{CB385198-50B1-4CF4-883B-11F042DED6AA}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StormLib_test", "StormLib_vs19_test.vcxproj", "{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Debug|x64 = Debug|x64
|
||||
DebugAD|Win32 = DebugAD|Win32
|
||||
DebugAD|x64 = DebugAD|x64
|
||||
DebugAS|Win32 = DebugAS|Win32
|
||||
DebugAS|x64 = DebugAS|x64
|
||||
DebugUD|Win32 = DebugUD|Win32
|
||||
DebugUD|x64 = DebugUD|x64
|
||||
DebugUS|Win32 = DebugUS|Win32
|
||||
DebugUS|x64 = DebugUS|x64
|
||||
Release|Win32 = Release|Win32
|
||||
Release|x64 = Release|x64
|
||||
ReleaseAD|Win32 = ReleaseAD|Win32
|
||||
ReleaseAD|x64 = ReleaseAD|x64
|
||||
ReleaseAS|Win32 = ReleaseAS|Win32
|
||||
ReleaseAS|x64 = ReleaseAS|x64
|
||||
ReleaseUD|Win32 = ReleaseUD|Win32
|
||||
ReleaseUD|x64 = ReleaseUD|x64
|
||||
ReleaseUS|Win32 = ReleaseUS|Win32
|
||||
ReleaseUS|x64 = ReleaseUS|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.Debug|Win32.ActiveCfg = DebugUS|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.Debug|Win32.Build.0 = DebugUS|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.Debug|x64.ActiveCfg = DebugUS|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.Debug|x64.Build.0 = DebugUS|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAD|Win32.ActiveCfg = DebugAD|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAD|Win32.Build.0 = DebugAD|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAD|x64.ActiveCfg = DebugAD|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAD|x64.Build.0 = DebugAD|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAS|Win32.ActiveCfg = DebugAS|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAS|Win32.Build.0 = DebugAS|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAS|x64.ActiveCfg = DebugAS|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.DebugAS|x64.Build.0 = DebugAS|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUD|Win32.ActiveCfg = DebugUD|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUD|Win32.Build.0 = DebugUD|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUD|x64.ActiveCfg = DebugUD|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUD|x64.Build.0 = DebugUD|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUS|Win32.ActiveCfg = DebugUS|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUS|Win32.Build.0 = DebugUS|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUS|x64.ActiveCfg = DebugUS|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.DebugUS|x64.Build.0 = DebugUS|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.Release|Win32.ActiveCfg = ReleaseUS|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.Release|Win32.Build.0 = ReleaseUS|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.Release|x64.ActiveCfg = ReleaseUS|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.Release|x64.Build.0 = ReleaseUS|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAD|Win32.ActiveCfg = ReleaseAD|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAD|Win32.Build.0 = ReleaseAD|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAD|x64.ActiveCfg = ReleaseAD|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAD|x64.Build.0 = ReleaseAD|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAS|Win32.ActiveCfg = ReleaseAS|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAS|Win32.Build.0 = ReleaseAS|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAS|x64.ActiveCfg = ReleaseAS|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseAS|x64.Build.0 = ReleaseAS|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUD|Win32.ActiveCfg = ReleaseUD|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUD|Win32.Build.0 = ReleaseUD|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUD|x64.ActiveCfg = ReleaseUD|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUD|x64.Build.0 = ReleaseUD|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUS|Win32.ActiveCfg = ReleaseUS|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUS|Win32.Build.0 = ReleaseUS|Win32
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUS|x64.ActiveCfg = ReleaseUS|x64
|
||||
{78424708-1F6E-4D4B-920C-FB6D26847055}.ReleaseUS|x64.Build.0 = ReleaseUS|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.Debug|x64.Build.0 = Debug|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugAD|Win32.ActiveCfg = Debug|Win32
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugAD|Win32.Build.0 = Debug|Win32
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugAD|x64.ActiveCfg = Debug|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugAD|x64.Build.0 = Debug|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugAS|Win32.ActiveCfg = Debug|Win32
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugAS|Win32.Build.0 = Debug|Win32
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugAS|x64.ActiveCfg = Debug|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugAS|x64.Build.0 = Debug|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugUD|Win32.ActiveCfg = Debug|Win32
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugUD|Win32.Build.0 = Debug|Win32
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugUD|x64.ActiveCfg = Debug|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugUD|x64.Build.0 = Debug|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugUS|Win32.ActiveCfg = Debug|Win32
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugUS|Win32.Build.0 = Debug|Win32
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugUS|x64.ActiveCfg = Debug|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.DebugUS|x64.Build.0 = Debug|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.Release|Win32.Build.0 = Release|Win32
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.Release|x64.ActiveCfg = Release|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.Release|x64.Build.0 = Release|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseAD|Win32.ActiveCfg = Release|Win32
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseAD|Win32.Build.0 = Release|Win32
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseAD|x64.ActiveCfg = Release|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseAD|x64.Build.0 = Release|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseAS|Win32.ActiveCfg = Release|Win32
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseAS|Win32.Build.0 = Release|Win32
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseAS|x64.ActiveCfg = Release|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseAS|x64.Build.0 = Release|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseUD|Win32.ActiveCfg = Release|Win32
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseUD|Win32.Build.0 = Release|Win32
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseUD|x64.ActiveCfg = Release|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseUD|x64.Build.0 = Release|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseUS|Win32.ActiveCfg = Release|Win32
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseUS|Win32.Build.0 = Release|Win32
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseUS|x64.ActiveCfg = Release|x64
|
||||
{CB385198-50B1-4CF4-883B-11F042DED6AA}.ReleaseUS|x64.Build.0 = Release|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.Debug|x64.Build.0 = Debug|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugAD|Win32.ActiveCfg = Debug|Win32
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugAD|Win32.Build.0 = Debug|Win32
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugAD|x64.ActiveCfg = Debug|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugAD|x64.Build.0 = Debug|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugAS|Win32.ActiveCfg = Debug|Win32
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugAS|Win32.Build.0 = Debug|Win32
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugAS|x64.ActiveCfg = Debug|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugAS|x64.Build.0 = Debug|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugUD|Win32.ActiveCfg = Debug|Win32
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugUD|Win32.Build.0 = Debug|Win32
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugUD|x64.ActiveCfg = Debug|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugUD|x64.Build.0 = Debug|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugUS|Win32.ActiveCfg = Debug|Win32
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugUS|Win32.Build.0 = Debug|Win32
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugUS|x64.ActiveCfg = Debug|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.DebugUS|x64.Build.0 = Debug|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.Release|Win32.Build.0 = Release|Win32
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.Release|x64.ActiveCfg = Release|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.Release|x64.Build.0 = Release|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseAD|Win32.ActiveCfg = Release|Win32
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseAD|Win32.Build.0 = Release|Win32
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseAD|x64.ActiveCfg = Release|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseAD|x64.Build.0 = Release|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseAS|Win32.ActiveCfg = Release|Win32
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseAS|Win32.Build.0 = Release|Win32
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseAS|x64.ActiveCfg = Release|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseAS|x64.Build.0 = Release|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseUD|Win32.ActiveCfg = Release|Win32
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseUD|Win32.Build.0 = Release|Win32
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseUD|x64.ActiveCfg = Release|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseUD|x64.Build.0 = Release|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseUS|Win32.ActiveCfg = Release|Win32
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseUS|Win32.Build.0 = Release|Win32
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseUS|x64.ActiveCfg = Release|x64
|
||||
{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}.ReleaseUS|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {04583FA5-D423-4B0D-A42B-F7D44C70991C}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,830 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Doc Files">
|
||||
<UniqueIdentifier>{595d6bc1-89d0-4fb8-98f6-be35e73727c4}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{721663d8-8692-476f-b0fd-71fdadf69929}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{9cc24144-d198-4bd1-b941-b946bd61b982}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\adpcm">
|
||||
<UniqueIdentifier>{be0080d3-fc04-4442-9e28-b4cc2641177d}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\bzip2">
|
||||
<UniqueIdentifier>{adb84a97-8a0c-4988-9473-452326110dff}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\huffman">
|
||||
<UniqueIdentifier>{87256d6a-e658-4f60-8759-6bff32a35eb2}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\libtomcrypt">
|
||||
<UniqueIdentifier>{d730d7c1-2960-49d2-ba0d-d1a91dd08964}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\libtomcrypt\hashes">
|
||||
<UniqueIdentifier>{13e5ccb1-06f1-4d10-bdc1-825b51c64dbf}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\libtomcrypt\math">
|
||||
<UniqueIdentifier>{73f7f025-7366-4d76-8d60-4327e00b9d18}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\libtomcrypt\misc">
|
||||
<UniqueIdentifier>{be21c641-7727-4d7b-919e-c895d801db17}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\libtomcrypt\pk">
|
||||
<UniqueIdentifier>{694a7758-f909-4b8e-aa13-4d06a8c70eff}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\libtomcrypt\pk\asn1">
|
||||
<UniqueIdentifier>{3f01cae6-5676-4f33-bb38-215341eedfc4}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\libtomcrypt\pk\ecc">
|
||||
<UniqueIdentifier>{63d75851-c430-4c76-aa08-3398523aab4a}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\libtomcrypt\pk\pkcs1">
|
||||
<UniqueIdentifier>{11175e9e-e9f1-405c-961b-933e72503cdd}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\libtomcrypt\pk\rsa">
|
||||
<UniqueIdentifier>{e30512f4-bdf8-4460-823d-475bd8f08d28}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\libtommath">
|
||||
<UniqueIdentifier>{d2889ef6-3f12-4a9b-8624-8d061748ff03}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\lzma">
|
||||
<UniqueIdentifier>{02c6dfb8-4a58-46c5-bb35-69ba6215a3a6}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\pklib">
|
||||
<UniqueIdentifier>{563829a0-aaa3-4af2-88a2-8c6445d2754b}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\sparse">
|
||||
<UniqueIdentifier>{e82b0d03-77ff-46dc-b5a4-5b469224222a}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\zlib">
|
||||
<UniqueIdentifier>{cb92df18-9435-4db9-997a-e0e7d532cd26}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\jenkins">
|
||||
<UniqueIdentifier>{2920175c-439c-4fd5-b94e-8cf1d3aaadd3}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Text Include="doc\History.txt">
|
||||
<Filter>Doc Files</Filter>
|
||||
</Text>
|
||||
<Text Include="doc\The MoPaQ File Format 0.9.txt">
|
||||
<Filter>Doc Files</Filter>
|
||||
</Text>
|
||||
<Text Include="doc\The MoPaQ File Format 1.0.txt">
|
||||
<Filter>Doc Files</Filter>
|
||||
</Text>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="src\StormCommon.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\adpcm\adpcm.h">
|
||||
<Filter>Source Files\adpcm</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\huffman\huff.h">
|
||||
<Filter>Source Files\huffman</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\pklib\pklib.h">
|
||||
<Filter>Source Files\pklib</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\sparse\sparse.h">
|
||||
<Filter>Source Files\sparse</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\jenkins\lookup.h">
|
||||
<Filter>Source Files\jenkins</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\StormLib.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\StormPort.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\FileStream.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SBaseCommon.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SBaseFileTable.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SCompression.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileAddFile.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileAttributes.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileCompactArchive.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileCreateArchive.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileExtractFile.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileFindFile.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileGetFileInfo.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileListFile.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileOpenArchive.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileOpenFileEx.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFilePatchArchives.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileReadFile.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileVerify.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\adpcm\adpcm.cpp">
|
||||
<Filter>Source Files\adpcm</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\bzip2\blocksort.c">
|
||||
<Filter>Source Files\bzip2</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\bzip2\bzlib.c">
|
||||
<Filter>Source Files\bzip2</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\bzip2\compress.c">
|
||||
<Filter>Source Files\bzip2</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\bzip2\crctable.c">
|
||||
<Filter>Source Files\bzip2</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\bzip2\decompress.c">
|
||||
<Filter>Source Files\bzip2</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\bzip2\huffman.c">
|
||||
<Filter>Source Files\bzip2</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\bzip2\randtable.c">
|
||||
<Filter>Source Files\bzip2</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\huffman\huff.cpp">
|
||||
<Filter>Source Files\huffman</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\hashes\hash_memory.c">
|
||||
<Filter>Source Files\libtomcrypt\hashes</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\hashes\md5.c">
|
||||
<Filter>Source Files\libtomcrypt\hashes</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\hashes\sha1.c">
|
||||
<Filter>Source Files\libtomcrypt\hashes</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\math\ltm_desc.c">
|
||||
<Filter>Source Files\libtomcrypt\math</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\math\multi.c">
|
||||
<Filter>Source Files\libtomcrypt\math</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\math\rand_prime.c">
|
||||
<Filter>Source Files\libtomcrypt\math</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\base64_decode.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_argchk.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_find_hash.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_find_prng.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_hash_descriptor.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_hash_is_valid.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_libc.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_ltc_mp_descriptor.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_prng_descriptor.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_prng_is_valid.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_register_hash.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_register_prng.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\zeromem.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_bit_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_boolean.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_choice.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_ia5_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_integer.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_object_identifier.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_octet_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_printable_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_sequence_ex.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_sequence_flexi.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_sequence_multi.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_short_integer.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_utctime.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_utf8_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_bit_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_boolean.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_ia5_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_integer.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_object_identifier.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_octet_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_printable_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_sequence.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_short_integer.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_utctime.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_utf8_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_sequence_free.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_map.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\ecc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_mul2add.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\ecc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_mulmod.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\ecc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_points.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\ecc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_projective_add_point.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\ecc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_projective_dbl_point.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\ecc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_mgf1.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\pkcs1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_oaep_decode.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\pkcs1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_pss_decode.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\pkcs1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_v1_5_decode.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\pkcs1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_exptmod.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\rsa</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_free.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\rsa</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_import.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\rsa</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_make_key.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\rsa</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_verify_hash.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\rsa</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_verify_simple.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\rsa</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_fast_mp_invmod.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_fast_mp_montgomery_reduce.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_fast_s_mp_mul_digs.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_fast_s_mp_mul_high_digs.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_fast_s_mp_sqr.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_2expt.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_abs.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_add.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_add_d.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_addmod.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_and.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_clamp.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_clear.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_clear_multi.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_cmp.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_cmp_d.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_cmp_mag.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_cnt_lsb.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_copy.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_count_bits.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_div.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_div_2.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_div_2d.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_div_3.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_div_d.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_dr_is_modulus.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_dr_reduce.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_dr_setup.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_exch.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_expt_d.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_exptmod.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_exptmod_fast.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_exteuclid.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_fread.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_fwrite.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_gcd.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_get_int.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_grow.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_init.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_init_copy.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_init_multi.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_init_set.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_init_set_int.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_init_size.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_invmod.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_invmod_slow.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_is_square.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_jacobi.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_karatsuba_mul.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_karatsuba_sqr.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_lcm.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_lshd.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_mod.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_mod_2d.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_mod_d.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_montgomery_calc_normalization.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_montgomery_reduce.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_montgomery_setup.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_mul.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_mul_2.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_mul_2d.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_mul_d.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_mulmod.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_n_root.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_neg.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_or.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_fermat.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_is_divisible.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_is_prime.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_miller_rabin.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_next_prime.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_rabin_miller_trials.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_random_ex.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_radix_size.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_radix_smap.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_rand.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_read_radix.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_read_signed_bin.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_read_unsigned_bin.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_2k.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_2k_l.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_2k_setup.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_2k_setup_l.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_is_2k.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_is_2k_l.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_setup.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_rshd.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_set.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_set_int.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_shrink.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_signed_bin_size.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_sqr.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_sqrmod.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_sqrt.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_sub.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_sub_d.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_submod.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_to_signed_bin.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_to_signed_bin_n.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_to_unsigned_bin.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_to_unsigned_bin_n.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_toom_mul.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_toom_sqr.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_toradix.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_toradix_n.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_unsigned_bin_size.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_xor.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_zero.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_prime_tab.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_reverse.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_s_mp_add.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_s_mp_exptmod.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_s_mp_mul_digs.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_s_mp_mul_high_digs.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_s_mp_sqr.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_s_mp_sub.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bncore.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\lzma\C\LzFind.c">
|
||||
<Filter>Source Files\lzma</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\lzma\C\LzFindMt.c">
|
||||
<Filter>Source Files\lzma</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\lzma\C\LzmaDec.c">
|
||||
<Filter>Source Files\lzma</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\lzma\C\LzmaEnc.c">
|
||||
<Filter>Source Files\lzma</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\lzma\C\Threads.c">
|
||||
<Filter>Source Files\lzma</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\pklib\explode.c">
|
||||
<Filter>Source Files\pklib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\pklib\implode.c">
|
||||
<Filter>Source Files\pklib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\sparse\sparse.cpp">
|
||||
<Filter>Source Files\sparse</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\zlib\adler32.c">
|
||||
<Filter>Source Files\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\zlib\crc32.c">
|
||||
<Filter>Source Files\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\zlib\deflate.c">
|
||||
<Filter>Source Files\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\zlib\inffast.c">
|
||||
<Filter>Source Files\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\zlib\inflate.c">
|
||||
<Filter>Source Files\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\zlib\inftrees.c">
|
||||
<Filter>Source Files\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\zlib\trees.c">
|
||||
<Filter>Source Files\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\zlib\zutil.c">
|
||||
<Filter>Source Files\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\jenkins\lookup3.c">
|
||||
<Filter>Source Files\jenkins</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\zlib\compress_zlib.c">
|
||||
<Filter>Source Files\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SBaseSubTypes.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_bit_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_boolean.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_ia5_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_integer.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_object_identifier.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_octet_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_printable_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_sequence_ex.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_sequence_multi.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_set.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_setof.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_short_integer.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_utctime.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_utf8_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_pss_encode.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\pkcs1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_v1_5_encode.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\pkcs1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_sign_hash.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\rsa</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,537 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectName>StormLib_dll</ProjectName>
|
||||
<ProjectGuid>{CB385198-50B1-4CF4-883B-11F042DED6AA}</ProjectGuid>
|
||||
<RootNamespace>StormLib_dll</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>14.0.25431.1</_ProjectFileVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<OutDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</OutDir>
|
||||
<IntDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</IntDir>
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<TargetName>StormLib</TargetName>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<OutDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</OutDir>
|
||||
<IntDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</IntDir>
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<TargetName>StormLib</TargetName>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<OutDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</OutDir>
|
||||
<IntDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<TargetName>StormLib</TargetName>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<OutDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</OutDir>
|
||||
<IntDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<TargetName>StormLib</TargetName>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level1</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<OutputFile>$(OutDir)StormLib.dll</OutputFile>
|
||||
<ModuleDefinitionFile>.\src\DllMain.def</ModuleDefinitionFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<DataExecutionPrevention />
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Midl>
|
||||
<TargetEnvironment>X64</TargetEnvironment>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level1</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<OutputFile>$(OutDir)StormLib.dll</OutputFile>
|
||||
<ModuleDefinitionFile>.\src\DllMain.def</ModuleDefinitionFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<DataExecutionPrevention />
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level1</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<OutputFile>$(OutDir)StormLib.dll</OutputFile>
|
||||
<ModuleDefinitionFile>.\src\DllMain.def</ModuleDefinitionFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<DataExecutionPrevention />
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Midl>
|
||||
<TargetEnvironment>X64</TargetEnvironment>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level1</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<OutputFile>$(OutDir)StormLib.dll</OutputFile>
|
||||
<ModuleDefinitionFile>.\src\DllMain.def</ModuleDefinitionFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<DataExecutionPrevention />
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<Text Include="doc\History.txt" />
|
||||
<Text Include="doc\The MoPaQ File Format 0.9.txt" />
|
||||
<Text Include="doc\The MoPaQ File Format 1.0.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="src\adpcm\adpcm.h" />
|
||||
<ClInclude Include="src\huffman\huff.h" />
|
||||
<ClInclude Include="src\jenkins\lookup.h" />
|
||||
<ClInclude Include="src\pklib\pklib.h" />
|
||||
<ClInclude Include="src\sparse\sparse.h" />
|
||||
<ClInclude Include="src\StormCommon.h" />
|
||||
<ClInclude Include="src\StormLib.h" />
|
||||
<ClInclude Include="src\StormPort.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\adpcm\adpcm.cpp" />
|
||||
<ClCompile Include="src\bzip2\blocksort.c" />
|
||||
<ClCompile Include="src\bzip2\bzlib.c" />
|
||||
<ClCompile Include="src\bzip2\compress.c" />
|
||||
<ClCompile Include="src\bzip2\crctable.c" />
|
||||
<ClCompile Include="src\bzip2\decompress.c" />
|
||||
<ClCompile Include="src\bzip2\huffman.c" />
|
||||
<ClCompile Include="src\bzip2\randtable.c" />
|
||||
<ClCompile Include="src\FileStream.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\huffman\huff.cpp" />
|
||||
<ClCompile Include="src\jenkins\lookup3.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\hashes\hash_memory.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\hashes\md5.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\hashes\sha1.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\math\ltm_desc.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\math\multi.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\math\rand_prime.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\base64_decode.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_argchk.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_find_hash.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_find_prng.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_hash_descriptor.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_hash_is_valid.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_libc.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_ltc_mp_descriptor.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_prng_descriptor.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_prng_is_valid.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_register_hash.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_register_prng.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\zeromem.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_bit_string.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_boolean.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_choice.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_ia5_string.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_integer.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_object_identifier.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_octet_string.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_printable_string.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_sequence_ex.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_sequence_flexi.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_sequence_multi.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_short_integer.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_utctime.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_utf8_string.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_bit_string.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_boolean.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_ia5_string.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_integer.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_object_identifier.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_octet_string.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_printable_string.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_sequence_ex.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_sequence_multi.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_set.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_setof.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_short_integer.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_utctime.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_utf8_string.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_bit_string.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_boolean.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_ia5_string.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_integer.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_object_identifier.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_octet_string.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_printable_string.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_sequence.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_short_integer.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_utctime.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_utf8_string.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_sequence_free.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_map.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_mul2add.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_mulmod.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_points.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_projective_add_point.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_projective_dbl_point.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_mgf1.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_oaep_decode.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_pss_decode.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_pss_encode.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_v1_5_decode.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_v1_5_encode.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_exptmod.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_free.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_import.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_make_key.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_sign_hash.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_verify_hash.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_verify_simple.c" />
|
||||
<ClCompile Include="src\libtommath\bncore.c" />
|
||||
<ClCompile Include="src\libtommath\bn_fast_mp_invmod.c" />
|
||||
<ClCompile Include="src\libtommath\bn_fast_mp_montgomery_reduce.c" />
|
||||
<ClCompile Include="src\libtommath\bn_fast_s_mp_mul_digs.c" />
|
||||
<ClCompile Include="src\libtommath\bn_fast_s_mp_mul_high_digs.c" />
|
||||
<ClCompile Include="src\libtommath\bn_fast_s_mp_sqr.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_2expt.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_abs.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_add.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_addmod.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_add_d.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_and.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_clamp.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_clear.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_clear_multi.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_cmp.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_cmp_d.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_cmp_mag.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_cnt_lsb.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_copy.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_count_bits.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_div.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_div_2.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_div_2d.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_div_3.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_div_d.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_dr_is_modulus.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_dr_reduce.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_dr_setup.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_exch.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_exptmod.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_exptmod_fast.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_expt_d.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_exteuclid.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_fread.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_fwrite.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_gcd.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_get_int.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_grow.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_init.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_init_copy.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_init_multi.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_init_set.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_init_set_int.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_init_size.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_invmod.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_invmod_slow.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_is_square.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_jacobi.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_karatsuba_mul.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_karatsuba_sqr.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_lcm.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_lshd.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_mod.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_mod_2d.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_mod_d.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_montgomery_calc_normalization.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_montgomery_reduce.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_montgomery_setup.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_mul.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_mulmod.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_mul_2.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_mul_2d.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_mul_d.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_neg.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_n_root.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_or.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_fermat.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_is_divisible.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_is_prime.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_miller_rabin.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_next_prime.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_rabin_miller_trials.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_random_ex.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_radix_size.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_radix_smap.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_rand.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_read_radix.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_read_signed_bin.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_read_unsigned_bin.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_2k.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_2k_l.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_2k_setup.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_2k_setup_l.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_is_2k.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_is_2k_l.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_setup.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_rshd.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_set.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_set_int.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_shrink.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_signed_bin_size.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_sqr.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_sqrmod.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_sqrt.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_sub.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_submod.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_sub_d.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_toom_mul.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_toom_sqr.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_toradix.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_toradix_n.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_to_signed_bin.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_to_signed_bin_n.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_to_unsigned_bin.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_to_unsigned_bin_n.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_unsigned_bin_size.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_xor.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_zero.c" />
|
||||
<ClCompile Include="src\libtommath\bn_prime_tab.c" />
|
||||
<ClCompile Include="src\libtommath\bn_reverse.c" />
|
||||
<ClCompile Include="src\libtommath\bn_s_mp_add.c" />
|
||||
<ClCompile Include="src\libtommath\bn_s_mp_exptmod.c" />
|
||||
<ClCompile Include="src\libtommath\bn_s_mp_mul_digs.c" />
|
||||
<ClCompile Include="src\libtommath\bn_s_mp_mul_high_digs.c" />
|
||||
<ClCompile Include="src\libtommath\bn_s_mp_sqr.c" />
|
||||
<ClCompile Include="src\libtommath\bn_s_mp_sub.c" />
|
||||
<ClCompile Include="src\lzma\C\LzFind.c" />
|
||||
<ClCompile Include="src\lzma\C\LzFindMt.c" />
|
||||
<ClCompile Include="src\lzma\C\LzmaDec.c" />
|
||||
<ClCompile Include="src\lzma\C\LzmaEnc.c" />
|
||||
<ClCompile Include="src\lzma\C\Threads.c" />
|
||||
<ClCompile Include="src\pklib\explode.c" />
|
||||
<ClCompile Include="src\pklib\implode.c" />
|
||||
<ClCompile Include="src\SBaseCommon.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SBaseFileTable.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SBaseSubTypes.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SCompression.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileAddFile.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileAttributes.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileCompactArchive.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileCreateArchive.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileExtractFile.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileFindFile.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileGetFileInfo.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileListFile.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileOpenArchive.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileOpenFileEx.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFilePatchArchives.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileReadFile.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileVerify.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\sparse\sparse.cpp" />
|
||||
<ClCompile Include="src\zlib\adler32.c" />
|
||||
<ClCompile Include="src\zlib\compress_zlib.c" />
|
||||
<ClCompile Include="src\zlib\crc32.c" />
|
||||
<ClCompile Include="src\zlib\deflate.c" />
|
||||
<ClCompile Include="src\zlib\inffast.c" />
|
||||
<ClCompile Include="src\zlib\inflate.c" />
|
||||
<ClCompile Include="src\zlib\inftrees.c" />
|
||||
<ClCompile Include="src\zlib\trees.c" />
|
||||
<ClCompile Include="src\zlib\zutil.c" />
|
||||
<ClCompile Include="src\DllMain.c">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="src\DllMain.rc" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,838 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Doc Files">
|
||||
<UniqueIdentifier>{b352ea2c-4169-4b60-85bc-82eadd5a9d2e}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{9171b211-949a-4dc1-a028-edf0a2ed4605}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{712a20a0-c7a8-4e56-947b-2cf030bbb287}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\adpcm">
|
||||
<UniqueIdentifier>{83502600-f49c-43b1-afe6-038d3560a859}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\bzip2">
|
||||
<UniqueIdentifier>{ea8b08a3-5c21-48e0-b75f-78eaa2adbc22}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\huffman">
|
||||
<UniqueIdentifier>{593ac5e7-fe06-42b8-8025-e3bd725f95d8}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\libtomcrypt">
|
||||
<UniqueIdentifier>{9887a885-78fa-4164-80b9-9db6b0c11f86}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\libtomcrypt\hashes">
|
||||
<UniqueIdentifier>{7db62947-d38d-48e9-8b52-4cad226394a6}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\libtomcrypt\math">
|
||||
<UniqueIdentifier>{b435fecf-9a65-4f2e-8d64-7dfc70de3137}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\libtomcrypt\misc">
|
||||
<UniqueIdentifier>{d8ad7878-9e42-427a-b5b6-ae51d92b92cf}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\libtomcrypt\pk">
|
||||
<UniqueIdentifier>{07806629-c061-49ed-8212-0585d25fae23}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\libtomcrypt\pk\asn1">
|
||||
<UniqueIdentifier>{ca554d9f-b602-452a-971e-86b537ee2ad1}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\libtomcrypt\pk\ecc">
|
||||
<UniqueIdentifier>{46e1697c-e6c2-4a8c-b4d2-0142311bb48b}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\libtomcrypt\pk\pkcs1">
|
||||
<UniqueIdentifier>{99279e07-2e33-44c9-8f37-0b810ee4ba25}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\libtomcrypt\pk\rsa">
|
||||
<UniqueIdentifier>{04fbcfe0-3023-4fa0-8e36-26ab024a4abf}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\libtommath">
|
||||
<UniqueIdentifier>{4720c7a0-f4aa-4737-978c-9efe8b429906}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\lzma">
|
||||
<UniqueIdentifier>{856c9964-4d85-40e9-8cbd-f4c672c07780}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\pklib">
|
||||
<UniqueIdentifier>{7ad3c876-768a-45bc-85b1-38cd492814ea}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\sparse">
|
||||
<UniqueIdentifier>{22e86a97-80e9-45a0-ac8e-70d7ea848f35}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\zlib">
|
||||
<UniqueIdentifier>{7b2ea923-8454-4073-bb9c-85de0f66caa1}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\jenkins">
|
||||
<UniqueIdentifier>{5404ec38-706a-47f8-97b7-941c2574ddf2}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Text Include="doc\History.txt">
|
||||
<Filter>Doc Files</Filter>
|
||||
</Text>
|
||||
<Text Include="doc\The MoPaQ File Format 0.9.txt">
|
||||
<Filter>Doc Files</Filter>
|
||||
</Text>
|
||||
<Text Include="doc\The MoPaQ File Format 1.0.txt">
|
||||
<Filter>Doc Files</Filter>
|
||||
</Text>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="src\StormCommon.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\StormLib.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\StormPort.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\adpcm\adpcm.h">
|
||||
<Filter>Source Files\adpcm</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\huffman\huff.h">
|
||||
<Filter>Source Files\huffman</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\pklib\pklib.h">
|
||||
<Filter>Source Files\pklib</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\sparse\sparse.h">
|
||||
<Filter>Source Files\sparse</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\jenkins\lookup.h">
|
||||
<Filter>Source Files\jenkins</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\FileStream.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SBaseCommon.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SBaseFileTable.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SBaseSubTypes.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SCompression.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileAddFile.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileAttributes.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileCompactArchive.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileCreateArchive.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileExtractFile.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileFindFile.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileGetFileInfo.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileListFile.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileOpenArchive.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileOpenFileEx.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFilePatchArchives.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileReadFile.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileVerify.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\adpcm\adpcm.cpp">
|
||||
<Filter>Source Files\adpcm</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\bzip2\blocksort.c">
|
||||
<Filter>Source Files\bzip2</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\bzip2\bzlib.c">
|
||||
<Filter>Source Files\bzip2</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\bzip2\compress.c">
|
||||
<Filter>Source Files\bzip2</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\bzip2\crctable.c">
|
||||
<Filter>Source Files\bzip2</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\bzip2\decompress.c">
|
||||
<Filter>Source Files\bzip2</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\bzip2\huffman.c">
|
||||
<Filter>Source Files\bzip2</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\bzip2\randtable.c">
|
||||
<Filter>Source Files\bzip2</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\huffman\huff.cpp">
|
||||
<Filter>Source Files\huffman</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\hashes\hash_memory.c">
|
||||
<Filter>Source Files\libtomcrypt\hashes</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\hashes\md5.c">
|
||||
<Filter>Source Files\libtomcrypt\hashes</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\hashes\sha1.c">
|
||||
<Filter>Source Files\libtomcrypt\hashes</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\math\ltm_desc.c">
|
||||
<Filter>Source Files\libtomcrypt\math</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\math\multi.c">
|
||||
<Filter>Source Files\libtomcrypt\math</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\math\rand_prime.c">
|
||||
<Filter>Source Files\libtomcrypt\math</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\base64_decode.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_argchk.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_find_hash.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_find_prng.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_hash_descriptor.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_hash_is_valid.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_libc.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_ltc_mp_descriptor.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_prng_descriptor.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_prng_is_valid.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_register_hash.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_register_prng.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\zeromem.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_bit_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_boolean.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_choice.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_ia5_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_integer.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_object_identifier.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_octet_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_printable_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_sequence_ex.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_sequence_flexi.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_sequence_multi.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_short_integer.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_utctime.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_utf8_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_bit_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_boolean.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_ia5_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_integer.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_object_identifier.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_octet_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_printable_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_sequence_ex.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_sequence_multi.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_set.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_setof.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_short_integer.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_utctime.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_utf8_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_bit_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_boolean.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_ia5_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_integer.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_object_identifier.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_octet_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_printable_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_sequence.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_short_integer.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_utctime.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_utf8_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_sequence_free.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_map.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\ecc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_mul2add.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\ecc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_mulmod.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\ecc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_points.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\ecc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_projective_add_point.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\ecc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_projective_dbl_point.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\ecc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_mgf1.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\pkcs1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_oaep_decode.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\pkcs1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_pss_decode.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\pkcs1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_pss_encode.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\pkcs1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_v1_5_decode.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\pkcs1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_v1_5_encode.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\pkcs1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_exptmod.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\rsa</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_free.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\rsa</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_import.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\rsa</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_make_key.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\rsa</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_sign_hash.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\rsa</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_verify_hash.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\rsa</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_verify_simple.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\rsa</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_fast_mp_invmod.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_fast_mp_montgomery_reduce.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_fast_s_mp_mul_digs.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_fast_s_mp_mul_high_digs.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_fast_s_mp_sqr.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_2expt.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_abs.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_add.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_add_d.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_addmod.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_and.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_clamp.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_clear.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_clear_multi.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_cmp.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_cmp_d.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_cmp_mag.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_cnt_lsb.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_copy.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_count_bits.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_div.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_div_2.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_div_2d.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_div_3.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_div_d.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_dr_is_modulus.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_dr_reduce.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_dr_setup.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_exch.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_expt_d.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_exptmod.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_exptmod_fast.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_exteuclid.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_fread.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_fwrite.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_gcd.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_get_int.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_grow.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_init.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_init_copy.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_init_multi.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_init_set.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_init_set_int.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_init_size.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_invmod.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_invmod_slow.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_is_square.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_jacobi.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_karatsuba_mul.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_karatsuba_sqr.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_lcm.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_lshd.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_mod.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_mod_2d.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_mod_d.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_montgomery_calc_normalization.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_montgomery_reduce.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_montgomery_setup.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_mul.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_mul_2.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_mul_2d.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_mul_d.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_mulmod.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_n_root.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_neg.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_or.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_fermat.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_is_divisible.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_is_prime.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_miller_rabin.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_next_prime.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_rabin_miller_trials.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_random_ex.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_radix_size.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_radix_smap.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_rand.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_read_radix.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_read_signed_bin.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_read_unsigned_bin.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_2k.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_2k_l.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_2k_setup.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_2k_setup_l.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_is_2k.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_is_2k_l.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_setup.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_rshd.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_set.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_set_int.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_shrink.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_signed_bin_size.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_sqr.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_sqrmod.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_sqrt.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_sub.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_sub_d.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_submod.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_to_signed_bin.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_to_signed_bin_n.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_to_unsigned_bin.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_to_unsigned_bin_n.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_toom_mul.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_toom_sqr.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_toradix.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_toradix_n.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_unsigned_bin_size.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_xor.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_zero.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_prime_tab.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_reverse.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_s_mp_add.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_s_mp_exptmod.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_s_mp_mul_digs.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_s_mp_mul_high_digs.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_s_mp_sqr.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_s_mp_sub.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bncore.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\lzma\C\LzFind.c">
|
||||
<Filter>Source Files\lzma</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\lzma\C\LzFindMt.c">
|
||||
<Filter>Source Files\lzma</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\lzma\C\LzmaDec.c">
|
||||
<Filter>Source Files\lzma</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\lzma\C\LzmaEnc.c">
|
||||
<Filter>Source Files\lzma</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\lzma\C\Threads.c">
|
||||
<Filter>Source Files\lzma</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\pklib\explode.c">
|
||||
<Filter>Source Files\pklib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\pklib\implode.c">
|
||||
<Filter>Source Files\pklib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\sparse\sparse.cpp">
|
||||
<Filter>Source Files\sparse</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\zlib\adler32.c">
|
||||
<Filter>Source Files\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\zlib\compress_zlib.c">
|
||||
<Filter>Source Files\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\zlib\crc32.c">
|
||||
<Filter>Source Files\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\zlib\deflate.c">
|
||||
<Filter>Source Files\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\zlib\inffast.c">
|
||||
<Filter>Source Files\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\zlib\inflate.c">
|
||||
<Filter>Source Files\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\zlib\inftrees.c">
|
||||
<Filter>Source Files\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\zlib\trees.c">
|
||||
<Filter>Source Files\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\zlib\zutil.c">
|
||||
<Filter>Source Files\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\jenkins\lookup3.c">
|
||||
<Filter>Source Files\jenkins</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\DllMain.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="src\DllMain.rc">
|
||||
<Filter>Source Files</Filter>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,549 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectName>StormLib_test</ProjectName>
|
||||
<ProjectGuid>{AA561A7B-26EA-49AF-90E8-C53C1FA2965D}</ProjectGuid>
|
||||
<RootNamespace>StormLib_test</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
<Import Project="$(VCTargetsPath)\BuildCustomizations\masm.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>14.0.25431.1</_ProjectFileVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<OutDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</OutDir>
|
||||
<IntDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</IntDir>
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<OutDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</OutDir>
|
||||
<IntDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</IntDir>
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<OutDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</OutDir>
|
||||
<IntDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<OutDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</OutDir>
|
||||
<IntDir>./bin/$(ProjectName)/$(Platform)/$(Configuration)\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;__STORMLIB_TEST__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level1</WarningLevel>
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<DataExecutionPrevention />
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Midl>
|
||||
<TargetEnvironment>X64</TargetEnvironment>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;__STORMLIB_TEST__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level1</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<DataExecutionPrevention />
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;__STORMLIB_TEST__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level1</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<DataExecutionPrevention />
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Midl>
|
||||
<TargetEnvironment>X64</TargetEnvironment>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;__STORMLIB_TEST__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level1</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<DataExecutionPrevention />
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<Text Include="doc\History.txt" />
|
||||
<Text Include="doc\The MoPaQ File Format 0.9.txt" />
|
||||
<Text Include="doc\The MoPaQ File Format 1.0.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="src\adpcm\adpcm.h" />
|
||||
<ClInclude Include="src\FileStream.h" />
|
||||
<ClInclude Include="src\huffman\huff.h" />
|
||||
<ClInclude Include="src\jenkins\lookup.h" />
|
||||
<ClInclude Include="src\pklib\pklib.h" />
|
||||
<ClInclude Include="src\sparse\sparse.h" />
|
||||
<ClInclude Include="src\StormCommon.h" />
|
||||
<ClInclude Include="src\StormLib.h" />
|
||||
<ClInclude Include="src\StormPort.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\adpcm\adpcm.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\bzip2\blocksort.c" />
|
||||
<ClCompile Include="src\bzip2\bzlib.c" />
|
||||
<ClCompile Include="src\bzip2\compress.c" />
|
||||
<ClCompile Include="src\bzip2\crctable.c" />
|
||||
<ClCompile Include="src\bzip2\decompress.c" />
|
||||
<ClCompile Include="src\bzip2\huffman.c" />
|
||||
<ClCompile Include="src\bzip2\randtable.c" />
|
||||
<ClCompile Include="src\FileStream.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\huffman\huff.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\jenkins\lookup3.c">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level1</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level1</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\hashes\hash_memory.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\hashes\md5.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\hashes\sha1.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\math\ltm_desc.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\math\multi.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\math\rand_prime.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\base64_decode.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_argchk.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_find_hash.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_find_prng.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_hash_descriptor.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_hash_is_valid.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_libc.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_ltc_mp_descriptor.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_prng_descriptor.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_prng_is_valid.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_register_hash.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_register_prng.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\zeromem.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_bit_string.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_boolean.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_choice.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_ia5_string.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_integer.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_object_identifier.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_octet_string.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_printable_string.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_sequence_ex.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_sequence_flexi.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_sequence_multi.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_short_integer.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_utctime.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_utf8_string.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_bit_string.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_boolean.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_ia5_string.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_integer.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_object_identifier.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_octet_string.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_printable_string.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_sequence_ex.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_sequence_multi.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_set.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_setof.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_short_integer.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_utctime.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_utf8_string.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_bit_string.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_boolean.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_ia5_string.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_integer.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_object_identifier.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_octet_string.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_printable_string.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_sequence.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_short_integer.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_utctime.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_utf8_string.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_sequence_free.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_map.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_mul2add.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_mulmod.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_points.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_projective_add_point.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_projective_dbl_point.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_mgf1.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_oaep_decode.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_pss_decode.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_pss_encode.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_v1_5_decode.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_v1_5_encode.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_exptmod.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_free.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_import.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_make_key.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_sign_hash.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_verify_hash.c" />
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_verify_simple.c" />
|
||||
<ClCompile Include="src\libtommath\bncore.c" />
|
||||
<ClCompile Include="src\libtommath\bn_fast_mp_invmod.c" />
|
||||
<ClCompile Include="src\libtommath\bn_fast_mp_montgomery_reduce.c" />
|
||||
<ClCompile Include="src\libtommath\bn_fast_s_mp_mul_digs.c" />
|
||||
<ClCompile Include="src\libtommath\bn_fast_s_mp_mul_high_digs.c" />
|
||||
<ClCompile Include="src\libtommath\bn_fast_s_mp_sqr.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_2expt.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_abs.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_add.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_addmod.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_add_d.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_and.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_clamp.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_clear.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_clear_multi.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_cmp.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_cmp_d.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_cmp_mag.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_cnt_lsb.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_copy.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_count_bits.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_div.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_div_2.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_div_2d.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_div_3.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_div_d.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_dr_is_modulus.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_dr_reduce.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_dr_setup.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_exch.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_exptmod.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_exptmod_fast.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_expt_d.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_exteuclid.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_fread.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_fwrite.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_gcd.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_get_int.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_grow.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_init.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_init_copy.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_init_multi.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_init_set.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_init_set_int.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_init_size.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_invmod.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_invmod_slow.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_is_square.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_jacobi.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_karatsuba_mul.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_karatsuba_sqr.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_lcm.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_lshd.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_mod.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_mod_2d.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_mod_d.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_montgomery_calc_normalization.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_montgomery_reduce.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_montgomery_setup.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_mul.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_mulmod.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_mul_2.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_mul_2d.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_mul_d.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_neg.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_n_root.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_or.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_fermat.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_is_divisible.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_is_prime.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_miller_rabin.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_next_prime.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_rabin_miller_trials.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_random_ex.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_radix_size.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_radix_smap.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_rand.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_read_radix.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_read_signed_bin.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_read_unsigned_bin.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_2k.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_2k_l.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_2k_setup.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_2k_setup_l.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_is_2k.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_is_2k_l.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_setup.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_rshd.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_set.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_set_int.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_shrink.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_signed_bin_size.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_sqr.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_sqrmod.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_sqrt.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_sub.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_submod.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_sub_d.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_toom_mul.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_toom_sqr.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_toradix.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_toradix_n.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_to_signed_bin.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_to_signed_bin_n.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_to_unsigned_bin.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_to_unsigned_bin_n.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_unsigned_bin_size.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_xor.c" />
|
||||
<ClCompile Include="src\libtommath\bn_mp_zero.c" />
|
||||
<ClCompile Include="src\libtommath\bn_prime_tab.c" />
|
||||
<ClCompile Include="src\libtommath\bn_reverse.c" />
|
||||
<ClCompile Include="src\libtommath\bn_s_mp_add.c" />
|
||||
<ClCompile Include="src\libtommath\bn_s_mp_exptmod.c" />
|
||||
<ClCompile Include="src\libtommath\bn_s_mp_mul_digs.c" />
|
||||
<ClCompile Include="src\libtommath\bn_s_mp_mul_high_digs.c" />
|
||||
<ClCompile Include="src\libtommath\bn_s_mp_sqr.c" />
|
||||
<ClCompile Include="src\libtommath\bn_s_mp_sub.c" />
|
||||
<ClCompile Include="src\lzma\C\LzFind.c" />
|
||||
<ClCompile Include="src\lzma\C\LzFindMt.c" />
|
||||
<ClCompile Include="src\lzma\C\LzmaDec.c" />
|
||||
<ClCompile Include="src\lzma\C\LzmaEnc.c" />
|
||||
<ClCompile Include="src\lzma\C\Threads.c" />
|
||||
<ClCompile Include="src\pklib\explode.c" />
|
||||
<ClCompile Include="src\pklib\implode.c" />
|
||||
<ClCompile Include="src\SBaseCommon.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SBaseDumpData.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SBaseFileTable.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SBaseSubTypes.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SCompression.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileAddFile.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileAttributes.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileCompactArchive.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileCreateArchive.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileExtractFile.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileFindFile.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileGetFileInfo.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileListFile.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileOpenArchive.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileOpenFileEx.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFilePatchArchives.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileReadFile.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileVerify.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\sparse\sparse.cpp" />
|
||||
<ClCompile Include="src\zlib\adler32.c" />
|
||||
<ClCompile Include="src\zlib\compress_zlib.c" />
|
||||
<ClCompile Include="src\zlib\crc32.c" />
|
||||
<ClCompile Include="src\zlib\deflate.c" />
|
||||
<ClCompile Include="src\zlib\inffast.c" />
|
||||
<ClCompile Include="src\zlib\inflate.c" />
|
||||
<ClCompile Include="src\zlib\inftrees.c" />
|
||||
<ClCompile Include="src\zlib\trees.c" />
|
||||
<ClCompile Include="src\zlib\zutil.c" />
|
||||
<ClCompile Include="test\StormTest.cpp">
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Level4</WarningLevel>
|
||||
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Level4</WarningLevel>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
<Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets" />
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,839 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Doc Files">
|
||||
<UniqueIdentifier>{1dbbb48c-9db9-4fdb-a903-223ed233cc21}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{ab878eef-1074-4594-bac5-272c05774bd8}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{640f063a-5028-4ba1-9007-96d98a634561}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\adpcm">
|
||||
<UniqueIdentifier>{6e8cfdab-fca3-4737-8905-6154bc657e15}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\bzip2">
|
||||
<UniqueIdentifier>{a810fdb6-0d21-4279-8e39-b2de644170c0}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\huffman">
|
||||
<UniqueIdentifier>{7861b4fb-1471-4573-92ea-08c06dc14b93}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\libtomcrypt">
|
||||
<UniqueIdentifier>{8ba6c5c7-3ad0-44e6-8829-5020fce13d49}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\libtomcrypt\hashes">
|
||||
<UniqueIdentifier>{92cb0c1d-86f0-4735-9e4e-b07df664c359}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\libtomcrypt\math">
|
||||
<UniqueIdentifier>{f7fb3d55-94af-4a6e-be7b-76cb909e7325}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\libtomcrypt\misc">
|
||||
<UniqueIdentifier>{337159fe-94a7-45a8-a91b-fa8b9d06b2ae}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\libtomcrypt\pk">
|
||||
<UniqueIdentifier>{359bb3d3-71d5-47e7-967a-1fada7882e4d}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\libtomcrypt\pk\asn1">
|
||||
<UniqueIdentifier>{775dbb7e-ef06-4660-9d84-50ff2557ef54}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\libtomcrypt\pk\ecc">
|
||||
<UniqueIdentifier>{2e5d39cc-482c-4775-8830-79f8314e72e4}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\libtomcrypt\pk\pkcs1">
|
||||
<UniqueIdentifier>{1e0ef267-228e-4c59-8d88-e3b33aeaff49}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\libtomcrypt\pk\rsa">
|
||||
<UniqueIdentifier>{98330deb-0b92-4f02-8016-8a33dc5f5d29}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\libtommath">
|
||||
<UniqueIdentifier>{fa78c716-784a-43a0-a548-db413431973b}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\lzma">
|
||||
<UniqueIdentifier>{5308566b-d3fd-4561-a7fb-982a63662793}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\pklib">
|
||||
<UniqueIdentifier>{d5371a5f-1630-4e79-9e7e-1ef654a2ddec}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\sparse">
|
||||
<UniqueIdentifier>{c2971fba-aff1-42ab-9f4f-71707edabf77}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\zlib">
|
||||
<UniqueIdentifier>{4f4fe3d6-6f2b-4c83-9cf9-f1d108ecd854}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\jenkins">
|
||||
<UniqueIdentifier>{5aaea51e-4b7c-4a35-b35c-96c2fc7750f1}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Text Include="doc\History.txt">
|
||||
<Filter>Doc Files</Filter>
|
||||
</Text>
|
||||
<Text Include="doc\The MoPaQ File Format 0.9.txt">
|
||||
<Filter>Doc Files</Filter>
|
||||
</Text>
|
||||
<Text Include="doc\The MoPaQ File Format 1.0.txt">
|
||||
<Filter>Doc Files</Filter>
|
||||
</Text>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="src\FileStream.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\StormCommon.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\StormLib.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\StormPort.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\adpcm\adpcm.h">
|
||||
<Filter>Source Files\adpcm</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\huffman\huff.h">
|
||||
<Filter>Source Files\huffman</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\pklib\pklib.h">
|
||||
<Filter>Source Files\pklib</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\sparse\sparse.h">
|
||||
<Filter>Source Files\sparse</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\jenkins\lookup.h">
|
||||
<Filter>Source Files\jenkins</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\FileStream.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SBaseCommon.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SBaseDumpData.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SBaseFileTable.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SBaseSubTypes.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SCompression.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileAddFile.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileAttributes.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileCompactArchive.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileCreateArchive.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileExtractFile.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileFindFile.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileGetFileInfo.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileListFile.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileOpenArchive.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileOpenFileEx.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFilePatchArchives.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileReadFile.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SFileVerify.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="test\StormTest.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\adpcm\adpcm.cpp">
|
||||
<Filter>Source Files\adpcm</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\bzip2\blocksort.c">
|
||||
<Filter>Source Files\bzip2</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\bzip2\bzlib.c">
|
||||
<Filter>Source Files\bzip2</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\bzip2\compress.c">
|
||||
<Filter>Source Files\bzip2</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\bzip2\crctable.c">
|
||||
<Filter>Source Files\bzip2</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\bzip2\decompress.c">
|
||||
<Filter>Source Files\bzip2</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\bzip2\huffman.c">
|
||||
<Filter>Source Files\bzip2</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\bzip2\randtable.c">
|
||||
<Filter>Source Files\bzip2</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\huffman\huff.cpp">
|
||||
<Filter>Source Files\huffman</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\hashes\hash_memory.c">
|
||||
<Filter>Source Files\libtomcrypt\hashes</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\hashes\md5.c">
|
||||
<Filter>Source Files\libtomcrypt\hashes</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\hashes\sha1.c">
|
||||
<Filter>Source Files\libtomcrypt\hashes</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\math\ltm_desc.c">
|
||||
<Filter>Source Files\libtomcrypt\math</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\math\multi.c">
|
||||
<Filter>Source Files\libtomcrypt\math</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\math\rand_prime.c">
|
||||
<Filter>Source Files\libtomcrypt\math</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\base64_decode.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_argchk.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_find_hash.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_find_prng.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_hash_descriptor.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_hash_is_valid.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_libc.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_ltc_mp_descriptor.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_prng_descriptor.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_prng_is_valid.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_register_hash.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\crypt_register_prng.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\misc\zeromem.c">
|
||||
<Filter>Source Files\libtomcrypt\misc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_bit_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_boolean.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_choice.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_ia5_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_integer.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_object_identifier.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_octet_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_printable_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_sequence_ex.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_sequence_flexi.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_sequence_multi.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_short_integer.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_utctime.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_decode_utf8_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_bit_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_boolean.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_ia5_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_integer.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_object_identifier.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_octet_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_printable_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_sequence_ex.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_sequence_multi.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_set.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_setof.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_short_integer.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_utctime.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_encode_utf8_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_bit_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_boolean.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_ia5_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_integer.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_object_identifier.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_octet_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_printable_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_sequence.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_short_integer.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_utctime.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_length_utf8_string.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\asn1\der_sequence_free.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\asn1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_map.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\ecc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_mul2add.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\ecc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_mulmod.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\ecc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_points.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\ecc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_projective_add_point.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\ecc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\ecc\ltc_ecc_projective_dbl_point.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\ecc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_mgf1.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\pkcs1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_oaep_decode.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\pkcs1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_pss_decode.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\pkcs1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_pss_encode.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\pkcs1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_v1_5_decode.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\pkcs1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\pkcs1\pkcs_1_v1_5_encode.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\pkcs1</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_exptmod.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\rsa</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_free.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\rsa</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_import.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\rsa</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_make_key.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\rsa</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_sign_hash.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\rsa</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_verify_hash.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\rsa</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtomcrypt\src\pk\rsa\rsa_verify_simple.c">
|
||||
<Filter>Source Files\libtomcrypt\pk\rsa</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_fast_mp_invmod.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_fast_mp_montgomery_reduce.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_fast_s_mp_mul_digs.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_fast_s_mp_mul_high_digs.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_fast_s_mp_sqr.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_2expt.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_abs.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_add.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_add_d.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_addmod.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_and.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_clamp.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_clear.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_clear_multi.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_cmp.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_cmp_d.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_cmp_mag.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_cnt_lsb.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_copy.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_count_bits.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_div.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_div_2.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_div_2d.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_div_3.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_div_d.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_dr_is_modulus.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_dr_reduce.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_dr_setup.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_exch.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_expt_d.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_exptmod.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_exptmod_fast.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_exteuclid.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_fread.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_fwrite.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_gcd.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_get_int.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_grow.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_init.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_init_copy.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_init_multi.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_init_set.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_init_set_int.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_init_size.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_invmod.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_invmod_slow.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_is_square.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_jacobi.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_karatsuba_mul.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_karatsuba_sqr.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_lcm.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_lshd.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_mod.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_mod_2d.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_mod_d.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_montgomery_calc_normalization.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_montgomery_reduce.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_montgomery_setup.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_mul.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_mul_2.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_mul_2d.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_mul_d.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_mulmod.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_n_root.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_neg.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_or.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_fermat.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_is_divisible.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_is_prime.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_miller_rabin.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_next_prime.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_rabin_miller_trials.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_prime_random_ex.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_radix_size.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_radix_smap.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_rand.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_read_radix.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_read_signed_bin.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_read_unsigned_bin.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_2k.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_2k_l.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_2k_setup.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_2k_setup_l.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_is_2k.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_is_2k_l.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_reduce_setup.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_rshd.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_set.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_set_int.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_shrink.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_signed_bin_size.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_sqr.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_sqrmod.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_sqrt.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_sub.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_sub_d.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_submod.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_to_signed_bin.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_to_signed_bin_n.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_to_unsigned_bin.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_to_unsigned_bin_n.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_toom_mul.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_toom_sqr.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_toradix.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_toradix_n.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_unsigned_bin_size.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_xor.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_mp_zero.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_prime_tab.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_reverse.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_s_mp_add.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_s_mp_exptmod.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_s_mp_mul_digs.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_s_mp_mul_high_digs.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_s_mp_sqr.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bn_s_mp_sub.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\libtommath\bncore.c">
|
||||
<Filter>Source Files\libtommath</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\lzma\C\LzFind.c">
|
||||
<Filter>Source Files\lzma</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\lzma\C\LzFindMt.c">
|
||||
<Filter>Source Files\lzma</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\lzma\C\LzmaDec.c">
|
||||
<Filter>Source Files\lzma</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\lzma\C\LzmaEnc.c">
|
||||
<Filter>Source Files\lzma</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\lzma\C\Threads.c">
|
||||
<Filter>Source Files\lzma</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\pklib\explode.c">
|
||||
<Filter>Source Files\pklib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\pklib\implode.c">
|
||||
<Filter>Source Files\pklib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\sparse\sparse.cpp">
|
||||
<Filter>Source Files\sparse</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\zlib\adler32.c">
|
||||
<Filter>Source Files\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\zlib\compress_zlib.c">
|
||||
<Filter>Source Files\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\zlib\crc32.c">
|
||||
<Filter>Source Files\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\zlib\deflate.c">
|
||||
<Filter>Source Files\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\zlib\inffast.c">
|
||||
<Filter>Source Files\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\zlib\inflate.c">
|
||||
<Filter>Source Files\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\zlib\inftrees.c">
|
||||
<Filter>Source Files\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\zlib\trees.c">
|
||||
<Filter>Source Files\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\zlib\zutil.c">
|
||||
<Filter>Source Files\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\jenkins\lookup3.c">
|
||||
<Filter>Source Files\jenkins</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,78 @@
|
||||
|
||||
StormLib history
|
||||
================
|
||||
|
||||
Version 9.11
|
||||
|
||||
- Fixed bug in processing HET table.
|
||||
|
||||
Version 9.10
|
||||
|
||||
- Support for weak-signing
|
||||
- Anti-protector: New Spazzler
|
||||
|
||||
Version 9.00
|
||||
|
||||
- Support for streaming (master-mirror)
|
||||
- Support for multi-file MPQs used by some WoW versions
|
||||
- Opening maps protected by Spazzler protector
|
||||
- Opening maps protected by BOBA protector
|
||||
|
||||
Version 8.02
|
||||
|
||||
- Support for UNICODE encoding for on-disk files
|
||||
- Optimized file deleting
|
||||
|
||||
Version 8.01
|
||||
|
||||
- SFileFindFirstFile and SFileFindNextFile no longer find files that have
|
||||
patch file in the oldest MPQ in the patch chain
|
||||
- Write support for MPQs version 4
|
||||
|
||||
Version 8.00
|
||||
|
||||
- Updated support for protected maps from Warcraft III
|
||||
|
||||
Version 7.11
|
||||
|
||||
- Support for MPQs v 3.0 (WOW-Cataclysm BETA)
|
||||
- StormLib now deals properly with files that have MPQ_SECTOR_CHECKSUM missing,
|
||||
but have sector checksum entry present in the sector offset table
|
||||
|
||||
Version 7.10
|
||||
|
||||
- Support for partial MPQs ("interface.MPQ.part")
|
||||
- The only operation that is externally allowed to do with internal files
|
||||
("(listfile)", "(attributes)" and "(signature)") is reading. Attempt to modify any of the file
|
||||
fails and GetLastError returns ERROR_INTERNAL_FILE
|
||||
- Fixed memory leak that has occured when writing more than one sector to the file at once
|
||||
|
||||
Version 7.01
|
||||
|
||||
- Support for adding files from memory
|
||||
- Fixed improper validation of handles to MPQ file and MPQ archive
|
||||
- Fixed bug where StormLib didn't save CRC32 of the file when added to archive
|
||||
|
||||
Version 7.00
|
||||
|
||||
- Properly deals with MPQs protected by w3xMaster
|
||||
- Major rewrite
|
||||
- Fixed support for (attributes)
|
||||
- Added file verification
|
||||
- Added MPQ signature verification
|
||||
|
||||
Version 6.22
|
||||
|
||||
- Properly deals with MPQs protected by w3xMaster
|
||||
|
||||
Version 6.21
|
||||
|
||||
- SFileRenameFile now properly re-crypts the file if necessary.
|
||||
- SFileFindFirstFile correctly deals with deleted files
|
||||
|
||||
Version 6.20
|
||||
|
||||
- Fixed lots of bugs when processing files with same names but different locales
|
||||
- Fixed bugs when repeately extracts the same file with MPQ_FILE_SINGLE_UNIT flag
|
||||
- Added SFileFlushArchive
|
||||
- Fixed issue opening AVI files renamed to MPQ using SFileCreateArchiveEx
|
||||
@@ -0,0 +1,318 @@
|
||||
THE MOPAQ ARCHIVE FORMAT
|
||||
v0.9 (Thursday, June 30, 2005)
|
||||
by Justin Olbrantz(Quantam)
|
||||
|
||||
Distribution and reproduction of this specification are allowed without limitation, as long as it is not altered. Quoting
|
||||
in other works is freely allowed, as long as the source and author of the quote is stated.
|
||||
|
||||
TABLE OF CONTENTS
|
||||
1. Introduction to the MoPaQ Format
|
||||
2. The MoPaQ Format
|
||||
2.1 General Archive Layout
|
||||
2.2 Archive Header
|
||||
2.3 Block Table
|
||||
2.4 Hash Table
|
||||
2.5 File Data
|
||||
2.6 Listfile
|
||||
2.7 Extended Attributes
|
||||
2.8 Weak (Old) Digital Signature
|
||||
2.9 Strong (New) Digital Signature
|
||||
3. Algorithm Source Code
|
||||
3.1 Encryption/Decryption
|
||||
3.2 Hashing
|
||||
3.3 Conversion of FILETIME and time_t
|
||||
|
||||
1. INTRODUCTION TO THE MOPAQ FORMAT
|
||||
The MoPaQ (or MPQ) format is an archive file format designed by Mike O'Brien (hence the name Mike O'brien PaCK) at Blizzard
|
||||
Entertainment. The format has been used in all Blizzard games since (and including) Diablo. It is heavily optimized to be
|
||||
a read-only game archive format, and excels at this role.
|
||||
|
||||
The Blizzard MoPaQ-reading functions are contained in the Storm module, which my be either statically or dynamically linked.
|
||||
The Blizzard MoPaQ-writing functions are contained in the MPQAPI module, which is always statically linked.
|
||||
|
||||
2. THE MOPAQ FORMAT
|
||||
All numbers in the MoPaQ format are in little endian. Data types are listed either as int (integer, the number of bits specified),
|
||||
byte (8 bits), and char (bytes which contain ASCII characters). All sizes and offsets are in bytes, unless specified otherwise.
|
||||
Structure members are listed in the following general form:
|
||||
offset from the beginning of the structure: data type(array size) member name : member description
|
||||
|
||||
2.1 GENERAL ARCHIVE LAYOUT
|
||||
- Archive Header
|
||||
- File Data
|
||||
- File Data - Special Files
|
||||
- Hash Table
|
||||
- Block Table
|
||||
- Strong Digital signature
|
||||
|
||||
This is the usual archive format, and is not absolutely essential. Some archives have been observed placing the hash table
|
||||
and file table after the archive header, and before the file data.
|
||||
|
||||
2.2 ARCHIVE HEADER
|
||||
00h: char(4) Magic : Indicates that the file is a MoPaQ archive. Must be ASCII "MPQ" 1Ah.
|
||||
04h: int32 HeaderSize : Size of the archive header. Should be 32.
|
||||
08h: int32 ArchiveSize : Size of the whole archive, including the header. Does not include the strong digital signature, if present.
|
||||
This size is used, among other things, for determining the region to hash in computing the digital signature.
|
||||
0Ch: int16 Unknown : Unknown
|
||||
0Eh: int8 SectorSizeShift : Power of two exponent specifying the number of 512-byte disk sectors in each logical sector
|
||||
in the archive. The size of each logical sector the archive is 512 * 2^SectorSizeShift. Bugs in the Storm library dictate
|
||||
that this should always be 3 (4096 byte sectors).
|
||||
10h: int32 HashTableOffset : Offset to the beginning of the hash table, relative to the beginning of the archive.
|
||||
14h: int32 BlockTableOffset : Offset to the beginning of the block table, relative to the beginning of the archive.
|
||||
18h: int32 HashTableEntries : Number of entries in the hash table. Must be a power of two, and must be less than 2^16.
|
||||
1Ch: int32 BlockTableEntries : Number of entries in the block table.
|
||||
|
||||
The archive header is the first structure in the archive, at archive offset 0, but the archive does not need to be at offset
|
||||
0 of the containing file. The offset of the archive in the file is referred to here as ArchiveOffset. If the archive is not
|
||||
at the beginning of the file, it must begin at a disk sector boundary (512 bytes). Early versions of Storm require that the
|
||||
archive be at the end of the containing file (ArchiveOffset + ArchiveSize = file size), but this is not required in newer
|
||||
versions (due to the strong digital signature not being considered a part of the archive).
|
||||
|
||||
2.3 BLOCK TABLE
|
||||
The block table contains entries for each region in the archive. Regions may be either files or empty space, which may be
|
||||
overwritten by new files (typically this space is from deleted file data). The block table is encrypted, using the hash
|
||||
of "(block table)" as the key. Each entry is structured as follows:
|
||||
|
||||
00h: int32 BlockOffset : Offset of the beginning of the block, relative to the beginning of the archive. Meaningless if the block size is 0.
|
||||
04h: int32 BlockSize : Size of the block in the archive.
|
||||
08h: int32 FileSize : Size of the file data stored in the block. Only valid if the block is a file, otherwise meaningless, and should be 0. If the file is compressed, this is the size of the uncompressed file data.
|
||||
0Ch: int32 Flags : Bit mask of the flags for the block. The following values are conclusively identified:
|
||||
80000000h: Block is a file, and follows the file data format; otherwise, block is free space, and may be overwritten. If the block is not a file, all other flags should be cleared.
|
||||
01000000h: File is stored as a single unit, rather than split into sectors.
|
||||
00020000h: The file's encryption key is adjusted by the block offset and file size (explained in detail in the File Data section). File must be encrypted.
|
||||
00010000h: File is encrypted.
|
||||
00000200h: File is compressed. Mutually exclusive to file imploded.
|
||||
00000100h: File is imploded. Mutually exclusive to file compressed.
|
||||
|
||||
2.4 HASH TABLE
|
||||
Instead of storing file names, for quick access MoPaQs use a fixed, power of two-size hash table of files in the archive. A file is uniquely identified by its file path, its language, and its platform. The home entry for a file in the hash table is computed as a hash of the file path. In the event of a collision (the home entry is occupied by another file), progressive overflow is used, and the file is placed in the next available hash table entry. Searches for a desired file in the hash table proceed from the home entry for the file until either the file is found, the entire hash table is searched, or an empty hash table entry (FileBlockIndex of FFFFFFFFh) is encountered. The hash table is encrypted using the hash of "(hash table)" as the key. Each entry is structured as follows:
|
||||
|
||||
00h: int32 FilePathHashA : The hash of the file path, using method A.
|
||||
04h: int32 FilePathHashB : The hash of the file path, using method B.
|
||||
08h: int16 Language : The language of the file. This is a Windows LANGID data type, and uses the same values. 0 indicates the default language (American English), or that the file is language-neutral.
|
||||
0Ah: int8 Platform : The platform the file is used for. 0 indicates the default platform. No other values have been observed.
|
||||
0Ch: int32 FileBlockIndex : If the hash table entry is valid, this is the index into the block table of the file. Otherwise, one of the following two values:
|
||||
FFFFFFFFh: Hash table entry is empty, and has always been empty. Terminates searches for a given file.
|
||||
FFFFFFFEh: Hash table entry is empty, but was valid at some point (in other words, the file was deleted). Does not terminate searches for a given file.
|
||||
|
||||
2.5 FILE DATA
|
||||
00h: int32(SectorsInFile + 1) SectorOffsetTable : Offsets to the start of each sector's data, relative to the beginning of the file data. Not present if this information is calculatable (see details below).
|
||||
immediately following SectorOffsetTable: SectorData : Data of each sector in the file, packed end to end (see details below).
|
||||
|
||||
Normally, file data is split up into sectors, for simple streaming. All sectors, save for the last, will contain as many bytes of file data as specified in the archive header's SectorSizeShift; the last sector may be smaller than this, depending on the size of the file data. This sector size is the size of the raw file data; if the file is compressed, the compressed sector will be smaller or the same size as the uncompressed sector size. Individual sectors in a compressed file may be stored uncompressed; this occurs if and only if the sector could not be compressed by the algorithm used (if the compressed sector size was greater than or equal to the size of the raw data), and is indicated by the sector's compressed size in SectorOffsetTable being equal to the uncompressed size of the sector (which may be calculated from the FileSize).
|
||||
|
||||
If the sector is compressed (but not imploded), a bit mask byte of the compression algorithm(s) used to compress the sector is appended to the beginning of the compressed sector data. This additional byte counts towards the total size of the sector; if the size of the sector (including this byte) exceeds or matches the uncompressed size of the sector data, the sector will be stored uncompressed, and this byte omitted. Multiple compression algorithms may be used on the same sector; in this case, successive compression occurs in the order the algorithms are listed below, and decompression occurs in the opposite order. For implimentations of all of these algorithms, see StormLib.
|
||||
40h: IMA ADPCM mono
|
||||
80h: IMA ADPCM stereo
|
||||
01h: Huffman encoded
|
||||
02h: Deflated (see ZLib)
|
||||
08h: Imploded (see PKWare Data Compression Library)
|
||||
10h: BZip2 compressed (see BZip2)
|
||||
|
||||
If the file is stored as a single unit (indicated in the file's Flags), there is effectively only a single sector, which
|
||||
contains the entire file.
|
||||
|
||||
If the file is encrypted, each sector (after compression and appendage of the compression type byte, if applicable)
|
||||
is encrypted with the file's key. The base key for a file is determined by a hash of the file name stripped of the
|
||||
directory (i.e. the key for a file named "directory\file" would be computed as the hash of "file"). If this key is
|
||||
adjusted, as indicated in the file's Flags, the final key is calculated as ((base key + BlockOffset - ArchiveOffset)
|
||||
XOR FileSize) (StormLib - an open-source implementation of the MoPaQ reading and writing functions,
|
||||
by Ladislav Zezula - incorrectly uses an AND in place of the XOR). Each sector is encrypted using the key + the
|
||||
0-based index of the sector in the file. The SectorOffsetTable, if present, is encrypted using the key - 1.
|
||||
|
||||
The SectorOffsetTable is omitted when the sizes and offsets of all sectors in the file are calculatable from the FileSize.
|
||||
This can happen in several circumstances. If the file is not compressed/imploded, then the size and offset of all sectors
|
||||
is known, based on the archive's SectorSizeShift. If the file is stored as a single unit compressed/imploded, then the
|
||||
SectorOffsetTable is omitted, as the single file "sector" corresponds to BlockSize and FileSize, as mentioned previously.
|
||||
Note that the SectorOffsetTable will always be present if the file is compressed/imploded and the file is not stored as
|
||||
a single unit, even if there is only a single sector in the file (the size of the file is less than or equal to the
|
||||
archive's sector size).
|
||||
|
||||
2.6 LISTFILE
|
||||
The listfile is a very simple extension to the MoPaQ format that contains the file paths of (most) files in the archive.
|
||||
The languages and platforms of the files are not stored in the listfile. The listfile is contained in the file "(listfile)",
|
||||
and is simply a non-Unix-style text file with one file path on each line, lines terminated with the bytes 0Dh 0Ah. The file
|
||||
"(listfile)" may not be listed in the listfile.
|
||||
|
||||
2.7 EXTENDED ATTRIBUTES
|
||||
The extended attributes are optional file attributes for files in the block table. These attributes were added at times after
|
||||
the MoPaQ format was already finalized, and it is not necessary for every archive to have all (or any) of the extended attributes.
|
||||
If an archive contains a given attribute, there will be an instance of that attribute for every block in the block table, although
|
||||
the attribute will be meaningless if the block is not a file. The order of the attributes for blocks correspond to the order of the
|
||||
blocks in the block table, and are of the same number. The attributes are stored in parallel arrays in the "(attributes)" file,
|
||||
in the archive. The attributes corresponding to this file need not be valid (and logically cannot be). Unlike all the other
|
||||
structures in the MoPaQ format, entries in the extended attributes are NOT guaranteed to be aligned. Also note that in some
|
||||
archives, malicious zeroing of the attributes has been observed, perhaps with the intent of breaking archive viewers. This
|
||||
file is structured as follows:
|
||||
|
||||
00h: int32 Version : Specifies the extended attributes format version. For now, must be 100.
|
||||
04h: int32 AttributesPresent : Bit mask of the extended attributes present in the archive:
|
||||
00000001h: File CRC32s.
|
||||
00000002h: File timestamps.
|
||||
00000004h: File MD5s.
|
||||
08h: int32(BlockTableEntries) CRC32s : CRC32s of the (uncompressed) file data for each block in the archive. Omitted if the
|
||||
archive does not have CRC32s. immediately after CRC32s: FILETIME(BlockTableEntries) Timestamps : Timestamps for each block
|
||||
in the archive. The format is that of the Windows FILETIME structure. Omitted if the archive does not have timestamps.
|
||||
immediately after Timestamps: MD5(BlockTableEntries) MD5s : MD5s of the (uncompressed) file data for each block in the archive.
|
||||
Omitted if the archive does not have MD5s.
|
||||
|
||||
2.8 WEAK DIGITAL SIGNATURE
|
||||
The weak digital signature is a digital signature using Microsoft CryptoAPI. It is an implimentation of the RSASSA-PKCS1-v1_5
|
||||
digital signature protocol, using the MD5 hashing algorithm and a 512-bit (weak) RSA key (for more information about this
|
||||
protocol, see the RSA Labs PKCS1 specification). The public key and exponent are stored in a resource in Storm. The signature
|
||||
is stored uncompressed, unencrypted in the file "(signature)" in the archive. The archive is hashed from the beginning of the
|
||||
archive (ArchiveOffset in the containing file) to the end of the archive (the length indicated by ArchiveSize); the signature
|
||||
file is added to the archive before signing, and the space occupied by the file is considered to be all binary 0s during
|
||||
signing/verification. This file is structured as follows:
|
||||
|
||||
00h: int32 Unknown : Must be 0.
|
||||
04h: int32 Unknown : must be 0.
|
||||
08h: int512 Signature : The digital signature. Like all other numbers in the MoPaQ format, this is stored in little-endian order.
|
||||
|
||||
2.9 STRONG DIGITAL SIGNATURE
|
||||
The strong digital signature uses a simple proprietary implementation of RSA signing, using the SHA-1 hashing algorithm and
|
||||
a 2048-bit (strong) RSA key. The default public key and exponent are stored in Storm, but other keys may be used as well.
|
||||
The strong digital signature is stored immediately after the archive, in the containing file; the entire archive (ArchiveSize
|
||||
bytes, starting at ArchiveOffset in the containing file) is hashed as a single block. The signature has the following format:
|
||||
|
||||
00h: char(4) Magic : Indicates the presence of a digital signature. Must be "NGIS" ("SIGN" backwards).
|
||||
04h: int2048 Signature : The digital signature, stored in little-endian format.
|
||||
|
||||
When the Signature field is decrypted with the public key and exponent, and the result stored in little-endian order, it is structured as follows:
|
||||
|
||||
00h: byte Padding : Must be 0Bh.
|
||||
01h: byte(235) Padding : Must be BBh.
|
||||
ECh: byte(20) SHA-1 : SHA-1 hash of the archive, in standard SHA-1 format.
|
||||
|
||||
3. ALGORITHM SOURCE CODE
|
||||
3.1 ENCRYPTION/DECRYPTION
|
||||
I believe this was derived at some point from code in StormLib. Assumes the long type to be 32 bits, and the machine to be little endian order.
|
||||
|
||||
unsigned long dwCryptTable[0x500];
|
||||
|
||||
void InitializeCryptTable()
|
||||
{
|
||||
unsigned long seed = 0x00100001;
|
||||
unsigned long index1 = 0;
|
||||
unsigned long index2 = 0;
|
||||
int i;
|
||||
|
||||
for (index1 = 0; index1 < 0x100; index1++)
|
||||
{
|
||||
for (index2 = index1, i = 0; i < 5; i++, index2 += 0x100)
|
||||
{
|
||||
unsigned long temp1, temp2;
|
||||
|
||||
seed = (seed * 125 + 3) % 0x2AAAAB;
|
||||
temp1 = (seed & 0xFFFF) << 0x10;
|
||||
|
||||
seed = (seed * 125 + 3) % 0x2AAAAB;
|
||||
temp2 = (seed & 0xFFFF);
|
||||
|
||||
dwCryptTable[index2] = (temp1 | temp2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void EncryptData(void *lpbyBuffer, unsigned long dwLength, unsigned long dwKey)
|
||||
{
|
||||
unsigned long *lpdwBuffer = (unsigned long *)lpbyBuffer;
|
||||
unsigned long seed = 0xEEEEEEEE;
|
||||
unsigned long ch;
|
||||
|
||||
assert(lpbyBuffer);
|
||||
|
||||
dwLength /= sizeof(unsigned long);
|
||||
|
||||
while(dwLength-- > 0)
|
||||
{
|
||||
seed += dwCryptTable[0x400 + (dwKey & 0xFF)];
|
||||
ch = *lpdwBuffer ^ (dwKey + seed);
|
||||
|
||||
dwKey = ((~dwKey << 0x15) + 0x11111111) | (dwKey >> 0x0B);
|
||||
seed = *lpdwBuffer + seed + (seed << 5) + 3;
|
||||
|
||||
*lpdwBuffer++ = ch;
|
||||
}
|
||||
}
|
||||
|
||||
void DecryptData(void *lpbyBuffer, unsigned long dwLength, unsigned long dwKey)
|
||||
{
|
||||
unsigned long *lpdwBuffer = (unsigned long *)lpbyBuffer;
|
||||
unsigned long seed = 0xEEEEEEEE;
|
||||
unsigned long ch;
|
||||
|
||||
assert(lpbyBuffer);
|
||||
|
||||
dwLength /= sizeof(unsigned long);
|
||||
|
||||
while(dwLength-- > 0)
|
||||
{
|
||||
seed += dwCryptTable[0x400 + (dwKey & 0xFF)];
|
||||
ch = *lpdwBuffer ^ (dwKey + seed);
|
||||
|
||||
dwKey = ((~dwKey << 0x15) + 0x11111111) | (dwKey >> 0x0B);
|
||||
seed = ch + seed + (seed << 5) + 3;
|
||||
|
||||
*lpdwBuffer++ = ch;
|
||||
}
|
||||
}
|
||||
|
||||
3.2 HASHING
|
||||
Based on code from StormLib.
|
||||
|
||||
// Different types of hashes to make with HashString
|
||||
#define MPQ_HASH_TABLE_OFFSET 0
|
||||
#define MPQ_HASH_NAME_A 1
|
||||
#define MPQ_HASH_NAME_B 2
|
||||
#define MPQ_HASH_FILE_KEY 3
|
||||
|
||||
unsigned long HashString(const char *lpszString, unsigned long dwHashType)
|
||||
{
|
||||
unsigned long seed1 = 0x7FED7FED;
|
||||
unsigned long seed2 = 0xEEEEEEEE;
|
||||
int ch;
|
||||
|
||||
while (*lpszString != 0)
|
||||
{
|
||||
ch = toupper(*lpszString++);
|
||||
|
||||
seed1 = dwCryptTable[(dwHashType * 0xFF) + ch] ^ (seed1 + seed2);
|
||||
seed2 = ch + seed1 + seed2 + (seed2 << 5) + 3;
|
||||
}
|
||||
return seed1;
|
||||
}
|
||||
|
||||
3.3 CONVERSION OF FILETIME AND time_t
|
||||
|
||||
#define EPOCH_OFFSET 116444736000000000ULL // Number of 100 ns units between 01/01/1601 and 01/01/1970
|
||||
|
||||
bool GetTimeFromFileTime(FILETIME &fileTime, time_t &time)
|
||||
{
|
||||
// The FILETIME represents a 64-bit integer: the number of 100 ns units since January 1, 1601
|
||||
unsigned long long nTime = ((unsigned long long)fileTime.dwHighDateTime << 32) + fileTime.dwLowDateTime;
|
||||
|
||||
if (nTime < EPOCH_OFFSET)
|
||||
return false;
|
||||
|
||||
nTime -= EPOCH_OFFSET; // Convert the time base from 01/01/1601 to 01/01/1970
|
||||
nTime /= 10000000ULL; // Convert 100 ns to sec
|
||||
|
||||
time = (time_t)nTime;
|
||||
|
||||
// Test for overflow (FILETIME is 64 bits, time_t is 32 bits)
|
||||
if ((nTime - (unsigned long long)time) > 0)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void GetFileTimeFromTime(time_t &time, FILETIME &fileTime)
|
||||
{
|
||||
unsigned long long nTime = (unsigned long long)time;
|
||||
|
||||
nTime *= 10000000ULL;
|
||||
nTime += EPOCH_OFFSET;
|
||||
|
||||
fileTime.dwLowDateTime = (DWORD)nTime;
|
||||
fileTime.dwHighDateTime = (DWORD)(nTime >> 32);
|
||||
}
|
||||
@@ -0,0 +1,433 @@
|
||||
THE MOPAQ ARCHIVE FORMAT
|
||||
v1.0 (Friday, September 1, 2006)
|
||||
by Justin Olbrantz(Quantam)
|
||||
|
||||
Distribution and reproduction of this specification are allowed without limitation, as long as it is not altered. Quotation in other works is freely allowed, as long as the source and author of the quote are stated.
|
||||
|
||||
TABLE OF CONTENTS
|
||||
1. Introduction to the MoPaQ Format
|
||||
2. The MoPaQ Format
|
||||
2.1 General Archive Layout
|
||||
2.2 Archive Header
|
||||
2.3 Block Table
|
||||
2.4 Extended Block Table
|
||||
2.5 Hash Table
|
||||
2.6 File Data
|
||||
2.7 Listfile
|
||||
2.8 Extended Attributes
|
||||
2.9 Weak (Old) Digital Signature
|
||||
2.10 Strong (New) Digital Signature
|
||||
3. Algorithm Source Code
|
||||
3.1 Encryption/Decryption
|
||||
3.2 Hashing and File Key Computation
|
||||
3.3 Finding Files
|
||||
3.4 Deleting Files
|
||||
3.5 Conversion of FILETIME and time_t
|
||||
3.6 Forming a 64-bit Large Archive Offset from 32-bit and 16-bit Components
|
||||
4. Revision History
|
||||
|
||||
1. INTRODUCTION TO THE MOPAQ FORMAT
|
||||
The MoPaQ (or MPQ) format is an archive file format designed by Mike O'Brien (hence the name Mike O'brien PaCK) at Blizzard Entertainment. The format has been used in all Blizzard games since (and including) Diablo. It is heavily optimized to be a read-only game archive format, and excels at this role.
|
||||
|
||||
The Blizzard MoPaQ-reading functions are contained in the Storm module, which my be either statically or dynamically linked. The Blizzard MoPaQ-writing functions are contained in the MPQAPI module, which is always statically linked.
|
||||
|
||||
StormLib - mentioned several times in this specification - is an open-source MoPaQ reading and writing library written by Ladislav Zezula (no affiliation with Blizzard Entertainment). While it's a bit dated, and does not support all of the newer MoPaQ features, it contains source code to the more exotic compression methods used by MoPaQ, such as the PKWare implode algorithm, MoPaQ's huffman compression algorithm, and the IMA ADPCM compression used by MoPaQ.
|
||||
|
||||
2. THE MOPAQ FORMAT
|
||||
All numbers in the MoPaQ format are in little endian byte order; signed numbers use the two's complement system. Data types are listed either as int (integer, the number of bits specified), byte (8 bits), or char (bytes which contain ASCII characters). All sizes and offsets are in bytes, unless specified otherwise. Structure members are listed in the following general form:
|
||||
offset from the beginning of the structure: data type(array size) member name : member description
|
||||
|
||||
2.1 GENERAL ARCHIVE LAYOUT
|
||||
- Archive Header
|
||||
- File Data
|
||||
- File Data - Special Files
|
||||
- Hash Table
|
||||
- Block Table
|
||||
- Extended Block Table
|
||||
- Strong Digital signature
|
||||
|
||||
This is the usual archive format, but it is not mandatory. Some archives have been observed placing the hash table and file table after the archive header, and before the file data.
|
||||
|
||||
2.2 ARCHIVE HEADER
|
||||
00h: char(4) Magic : Indicates that the file is a MoPaQ archive. Must be ASCII "MPQ" 1Ah.
|
||||
04h: int32 HeaderSize : Size of the archive header.
|
||||
08h: int32 ArchiveSize : Size of the whole archive, including the header. Does not include the strong digital signature, if present. This size is used, among other things, for determining the region to hash in computing the digital signature. This field is deprecated in the Burning Crusade MoPaQ format, and the size of the archive is calculated as the size from the beginning of the archive to the end of the hash table, block table, or extended block table (whichever is largest).
|
||||
0Ch: int16 FormatVersion : MoPaQ format version. MPQAPI will not open archives where this is negative. Known versions:
|
||||
0000h: Original format. HeaderSize should be 20h, and large archives are not supported.
|
||||
0001h: Burning Crusade format. Header size should be 2Ch, and large archives are supported.
|
||||
0Eh: int8 SectorSizeShift : Power of two exponent specifying the number of 512-byte disk sectors in each logical sector in the archive. The size of each logical sector in the archive is 512 * 2^SectorSizeShift. Bugs in the Storm library dictate that this should always be 3 (4096 byte sectors).
|
||||
10h: int32 HashTableOffset : Offset to the beginning of the hash table, relative to the beginning of the archive.
|
||||
14h: int32 BlockTableOffset : Offset to the beginning of the block table, relative to the beginning of the archive.
|
||||
18h: int32 HashTableEntries : Number of entries in the hash table. Must be a power of two, and must be less than 2^16 for the original MoPaQ format, or less than 2^20 for the Burning Crusade format.
|
||||
1Ch: int32 BlockTableEntries : Number of entries in the block table.
|
||||
Fields only present in the Burning Crusade format and later:
|
||||
20h: int64 ExtendedBlockTableOffset : Offset to the beginning of the extended block table, relative to the beginning of the archive.
|
||||
28h: int16 HashTableOffsetHigh : High 16 bits of the hash table offset for large archives.
|
||||
2Ah: int16 BlockTableOffsetHigh : High 16 bits of the block table offset for large archives.
|
||||
|
||||
The archive header is the first structure in the archive, at archive offset 0; however, the archive does not need to be at offset 0 of the containing file. The offset of the archive in the file is referred to here as ArchiveOffset. If the archive is not at the beginning of the file, it must begin at a disk sector boundary (512 bytes). Early versions of Storm require that the archive be at the end of the containing file (ArchiveOffset + ArchiveSize = file size), but this is not required in newer versions (due to the strong digital signature not being considered a part of the archive).
|
||||
|
||||
2.3 BLOCK TABLE
|
||||
The block table contains entries for each region in the archive. Regions may be either files, empty space, which may be overwritten by new files (typically this space is from deleted file data), or unused block table entries. Empty space entries should have BlockOffset and BlockSize nonzero, and FileSize and Flags zero; unused block table entries should have BlockSize, FileSize, and Flags zero. The block table is encrypted, using the hash of "(block table)" as the key. Each entry is structured as follows:
|
||||
|
||||
00h: int32 BlockOffset : Offset of the beginning of the block, relative to the beginning of the archive.
|
||||
04h: int32 BlockSize : Size of the block in the archive.
|
||||
08h: int32 FileSize : Size of the file data stored in the block. Only valid if the block is a file; otherwise meaningless, and should be 0. If the file is compressed, this is the size of the uncompressed file data.
|
||||
0Ch: int32 Flags : Bit mask of the flags for the block. The following values are conclusively identified:
|
||||
80000000h: Block is a file, and follows the file data format; otherwise, block is free space or unused. If the block is not a file, all other flags should be cleared, and FileSize should be 0.
|
||||
01000000h: File is stored as a single unit, rather than split into sectors.
|
||||
00020000h: The file's encryption key is adjusted by the block offset and file size (explained in detail in the File Data section). File must be encrypted.
|
||||
00010000h: File is encrypted.
|
||||
00000200h: File is compressed. File cannot be imploded.
|
||||
00000100h: File is imploded. File cannot be compressed.
|
||||
|
||||
2.4 EXTENDED BLOCK TABLE
|
||||
The extended block table was added to support archives larger than 4 gigabytes (2^32 bytes). The table contains the upper bits of the archive offsets for each block in the block table. It is simply an array of int16s, which become bits 32-47 of the archive offsets for each block, with bits 48-63 being zero. Individual blocks in the archive are still limited to 4 gigabytes in size. This table is only present in Burning Crusade format archives that exceed 4 gigabytes size.
|
||||
|
||||
As of the Burning Crusade Friends and Family beta, this table is not encrypted.
|
||||
|
||||
2.5 HASH TABLE
|
||||
Instead of storing file names, for quick access MoPaQs use a fixed, power of two-size hash table of files in the archive. A file is uniquely identified by its file path, its language, and its platform. The home entry for a file in the hash table is computed as a hash of the file path. In the event of a collision (the home entry is occupied by another file), progressive overflow is used, and the file is placed in the next available hash table entry. Searches for a desired file in the hash table proceed from the home entry for the file until either the file is found, the entire hash table is searched, or an empty hash table entry (FileBlockIndex of FFFFFFFFh) is encountered. The hash table is encrypted using the hash of "(hash table)" as the key. Each entry is structured as follows:
|
||||
|
||||
00h: int32 FilePathHashA : The hash of the file path, using method A.
|
||||
04h: int32 FilePathHashB : The hash of the file path, using method B.
|
||||
08h: int16 Language : The language of the file. This is a Windows LANGID data type, and uses the same values. 0 indicates the default language (American English), or that the file is language-neutral.
|
||||
0Ah: int8 Platform : The platform the file is used for. 0 indicates the default platform. No other values have been observed.
|
||||
0Ch: int32 FileBlockIndex : If the hash table entry is valid, this is the index into the block table of the file. Otherwise, one of the following two values:
|
||||
FFFFFFFFh: Hash table entry is empty, and has always been empty. Terminates searches for a given file.
|
||||
FFFFFFFEh: Hash table entry is empty, but was valid at some point (in other words, the file was deleted). Does not terminate searches for a given file.
|
||||
|
||||
2.6 FILE DATA
|
||||
The data for each file is composed of the following structure:
|
||||
00h: int32(SectorsInFile + 1) SectorOffsetTable : Offsets to the start of each sector, relative to the beginning of the file data. The last entry contains the file size, making it possible to easily calculate the size of any given sector. This table is not present if this information can be calculated (see details below).
|
||||
immediately following SectorOffsetTable: SECTOR Sectors(SectorsInFile) : Data of each sector in the file, packed end to end (see details below).
|
||||
|
||||
Normally, file data is split up into sectors, for simple streaming. All sectors, save for the last, will contain as many bytes of file data as specified in the archive header's SectorSizeShift; the last sector may contain less than this, depending on the size of the entire file's data. If the file is compressed or imploded, the sector will be smaller or the same size as the file data it contains. Individual sectors in a compressed or imploded file may be stored uncompressed; this occurs if and only if the file data the sector contains could not be compressed by the algorithm(s) used (if the compressed sector size was greater than or equal to the size of the file data), and is indicated by the sector's size in SectorOffsetTable being equal to the size of the file data in the sector (which may be calculated from the FileSize).
|
||||
|
||||
The format of each sector depends on the kind of sector it is. Uncompressed sectors are simply the the raw file data contained in the sector. Imploded sectors are the raw compressed data following compression with the implode algorithm (these sectors can only be in imploded files). Compressed sectors (only found in compressed - not imploded - files) are compressed with one or more compression algorithms, and have the following structure:
|
||||
00h: byte CompressionMask : Mask of the compression types applied to this sector. If multiple compression types are used, they are applied in the order listed below, and decompression is performed in the opposite order. This byte counts towards the total sector size, meaning that the sector will be stored uncompressed if the data cannot be compressed by at least two bytes; as well, this byte is encrypted with the sector data, if applicable. The following compression types are defined (for implementations of these algorithms, see StormLib):
|
||||
40h: IMA ADPCM mono
|
||||
80h: IMA ADPCM stereo
|
||||
01h: Huffman encoded
|
||||
02h: Deflated (see ZLib)
|
||||
08h: Imploded (see PKWare Data Compression Library)
|
||||
10h: BZip2 compressed (see BZip2)
|
||||
01h: byte(SectorSize - 1) SectorData : The compressed data for the sector.
|
||||
|
||||
If the file is stored as a single unit (indicated in the file's Flags), there is effectively only a single sector, which contains the entire file data.
|
||||
|
||||
If the file is encrypted, each sector (after compression/implosion, if applicable) is encrypted with the file's key. The base key for a file is determined by a hash of the file name stripped of the directory (i.e. the key for a file named "directory\file" would be computed as the hash of "file"). If this key is adjusted, as indicated in the file's Flags, the final key is calculated as ((base key + BlockOffset - ArchiveOffset) XOR FileSize) (StormLib incorrectly uses an AND in place of the XOR). Each sector is encrypted using the key + the 0-based index of the sector in the file. The SectorOffsetTable, if present, is encrypted using the key - 1.
|
||||
|
||||
The SectorOffsetTable is omitted when the sizes and offsets of all sectors in the file are calculatable from the FileSize. This can happen in several circumstances. If the file is not compressed/imploded, then the size and offset of all sectors is known, based on the archive's SectorSizeShift. If the file is stored as a single unit compressed/imploded, then the SectorOffsetTable is omitted, as the single file "sector" corresponds to BlockSize and FileSize, as mentioned previously. However, the SectorOffsetTable will be present if the file is compressed/imploded and the file is not stored as a single unit, even if there is only a single sector in the file (the size of the file is less than or equal to the archive's sector size).
|
||||
|
||||
2.7 LISTFILE
|
||||
The listfile is a very simple extension to the MoPaQ format that contains the file paths of (most) files in the archive. The languages and platforms of the files are not stored in the listfile. The listfile is contained in the file "(listfile)" (default language and platform), and is simply a text file with file paths separated by ';', 0Dh, 0Ah, or some combination of these. The file "(listfile)" may not be listed in the listfile.
|
||||
|
||||
2.8 EXTENDED ATTRIBUTES
|
||||
The extended attributes are optional file attributes for files in the block table. These attributes were added at times after the MoPaQ format was already finalized, and it is not necessary for every archive to have all (or any) of the extended attributes. If an archive contains a given attribute, there will be an instance of that attribute for every block in the block table, although the attribute will be meaningless if the block is not a file. The order of the attributes for blocks correspond to the order of the blocks in the block table, and are of the same number. The attributes are stored in parallel arrays in the "(attributes)" file (default language and platform), in the archive. The attributes corresponding to this file need not be valid (and logically cannot be). Unlike all the other structures in the MoPaQ format, entries in the extended attributes are NOT guaranteed to be aligned. Also note that in some archives, malicious zeroing of the attributes has been observed, perhaps with the intent of breaking archive viewers. This file is structured as follows:
|
||||
|
||||
00h: int32 Version : Specifies the extended attributes format version. For now, must be 100.
|
||||
04h: int32 AttributesPresent : Bit mask of the extended attributes present in the archive:
|
||||
00000001h: File CRC32s.
|
||||
00000002h: File timestamps.
|
||||
00000004h: File MD5s.
|
||||
08h: int32(BlockTableEntries) CRC32s : CRC32s of the (uncompressed) file data for each block in the archive. Omitted if the archive does not have CRC32s.
|
||||
immediately after CRC32s: FILETIME(BlockTableEntries) Timestamps : Timestamps for each block in the archive. The format is that of the Windows FILETIME structure. Omitted if the archive does not have timestamps.
|
||||
immediately after Timestamps: MD5(BlockTableEntries) MD5s : MD5s of the (uncompressed) file data for each block in the archive. Omitted if the archive does not have MD5s.
|
||||
|
||||
2.9 WEAK DIGITAL SIGNATURE
|
||||
The weak digital signature is a digital signature using Microsoft CryptoAPI. It is an implimentation
|
||||
of the RSASSA-PKCS1-v1_5 digital signature protocol, using the MD5 hashing algorithm and a 512-bit (weak)
|
||||
RSA key (for more information about this protocol, see the RSA Labs PKCS1 specification). The public key
|
||||
and exponent are stored in a resource in Storm, the private key is stored in a separate file, whose filename
|
||||
is passed to MPQAPI (the private key is not stored in MPQAPI). The signature is stored uncompressed,
|
||||
unencrypted in the file "(signature)" (default language and platform) in the archive. The archive
|
||||
is hashed from the beginning of the archive (ArchiveOffset in the containing file) to the end of
|
||||
the archive (the length indicated by ArchiveSize, or calculated in the Burning Crusade MoPaQ format);
|
||||
the signature file is added to the archive before signing, and the space occupied by the file is considered
|
||||
to be all binary 0s during signing/verification. This file is structured as follows:
|
||||
|
||||
00h: int32 Unknown : Must be 0.
|
||||
04h: int32 Unknown : Must be 0.
|
||||
08h: int512 Signature : The digital signature. Like all other numbers in the MoPaQ format, this is stored
|
||||
in little-endian order. The structure of this, when decrypted, follows the RSASSA-PKCS1-v1_5 specification;
|
||||
this format is rather icky to work with (I wrote a program to verify this signature using nothing but an MD5
|
||||
function and huge integer functions; it wasn't pleasant), and best left to an encryption library such as Cryto++.
|
||||
|
||||
2.10 STRONG DIGITAL SIGNATURE
|
||||
The strong digital signature uses a simple proprietary implementation of RSA signing, using the SHA-1 hashing algorithm and a 2048-bit (strong) RSA key. The default public key and exponent are stored in Storm, but other keys may be used as well. The strong digital signature is stored immediately after the archive, in the containing file; the entire archive (ArchiveSize bytes, starting at ArchiveOffset in the containing file) is hashed as a single block. The signature has the following format:
|
||||
|
||||
00h: char(4) Magic : Indicates the presence of a digital signature. Must be "NGIS" ("SIGN" backwards).
|
||||
04h: int2048 Signature : The digital signature, stored in little-endian format.
|
||||
|
||||
When the Signature field is decrypted with the public key and exponent, and the resulting large integer is stored in little-endian order, it is structured as follows:
|
||||
|
||||
00h: byte Padding : Must be 0Bh.
|
||||
01h: byte(235) Padding : Must be BBh.
|
||||
ECh: byte(20) SHA-1 : SHA-1 hash of the archive, in standard SHA-1 byte order.
|
||||
|
||||
3. ALGORITHM SOURCE CODE
|
||||
All of the sample code here assumes little endian machine byte order, that the short type is 16 bits, that the long type is 32 bits, and that the long long type is 64 bits. Adjustments must be made if these assumptions are not correct on a given platform. All code not credited otherwise was written by myself in the writing of this specification.
|
||||
|
||||
3.1 ENCRYPTION/DECRYPTION
|
||||
Based on code from StormLib.
|
||||
|
||||
unsigned long dwCryptTable[0x500];
|
||||
|
||||
// The encryption and hashing functions use a number table in their procedures. This table must be initialized before the functions are called the first time.
|
||||
void InitializeCryptTable()
|
||||
{
|
||||
unsigned long seed = 0x00100001;
|
||||
unsigned long index1 = 0;
|
||||
unsigned long index2 = 0;
|
||||
int i;
|
||||
|
||||
for (index1 = 0; index1 < 0x100; index1++)
|
||||
{
|
||||
for (index2 = index1, i = 0; i < 5; i++, index2 += 0x100)
|
||||
{
|
||||
unsigned long temp1, temp2;
|
||||
|
||||
seed = (seed * 125 + 3) % 0x2AAAAB;
|
||||
temp1 = (seed & 0xFFFF) << 0x10;
|
||||
|
||||
seed = (seed * 125 + 3) % 0x2AAAAB;
|
||||
temp2 = (seed & 0xFFFF);
|
||||
|
||||
dwCryptTable[index2] = (temp1 | temp2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void EncryptData(void *lpbyBuffer, unsigned long dwLength, unsigned long dwKey)
|
||||
{
|
||||
assert(lpbyBuffer);
|
||||
|
||||
unsigned long *lpdwBuffer = (unsigned long *)lpbyBuffer;
|
||||
unsigned long seed = 0xEEEEEEEE;
|
||||
unsigned long ch;
|
||||
|
||||
dwLength /= sizeof(unsigned long);
|
||||
|
||||
while(dwLength-- > 0)
|
||||
{
|
||||
seed += dwCryptTable[0x400 + (dwKey & 0xFF)];
|
||||
ch = *lpdwBuffer ^ (dwKey + seed);
|
||||
|
||||
dwKey = ((~dwKey << 0x15) + 0x11111111) | (dwKey >> 0x0B);
|
||||
seed = *lpdwBuffer + seed + (seed << 5) + 3;
|
||||
|
||||
*lpdwBuffer++ = ch;
|
||||
}
|
||||
}
|
||||
|
||||
void DecryptData(void *lpbyBuffer, unsigned long dwLength, unsigned long dwKey)
|
||||
{
|
||||
assert(lpbyBuffer);
|
||||
|
||||
unsigned long *lpdwBuffer = (unsigned long *)lpbyBuffer;
|
||||
unsigned long seed = 0xEEEEEEEEL;
|
||||
unsigned long ch;
|
||||
|
||||
dwLength /= sizeof(unsigned long);
|
||||
|
||||
while(dwLength-- > 0)
|
||||
{
|
||||
seed += dwCryptTable[0x400 + (dwKey & 0xFF)];
|
||||
ch = *lpdwBuffer ^ (dwKey + seed);
|
||||
|
||||
dwKey = ((~dwKey << 0x15) + 0x11111111L) | (dwKey >> 0x0B);
|
||||
seed = ch + seed + (seed << 5) + 3;
|
||||
|
||||
*lpdwBuffer++ = ch;
|
||||
}
|
||||
}
|
||||
|
||||
3.2 HASHING AND FILE KEY COMPUTATION
|
||||
These functions may have been derived from StormLib code at some point in the very distant past. It was so long ago that I don't remember for certain.
|
||||
|
||||
// Different types of hashes to make with HashString
|
||||
#define MPQ_HASH_TABLE_OFFSET 0
|
||||
#define MPQ_HASH_NAME_A 1
|
||||
#define MPQ_HASH_NAME_B 2
|
||||
#define MPQ_HASH_FILE_KEY 3
|
||||
|
||||
// Based on code from StormLib.
|
||||
unsigned long HashString(const char *lpszString, unsigned long dwHashType)
|
||||
{
|
||||
assert(lpszString);
|
||||
assert(dwHashType <= MPQ_HASH_FILE_KEY);
|
||||
|
||||
unsigned long seed1 = 0x7FED7FEDL;
|
||||
unsigned long seed2 = 0xEEEEEEEEL;
|
||||
int ch;
|
||||
|
||||
while (*lpszString != 0)
|
||||
{
|
||||
ch = toupper(*lpszString++);
|
||||
|
||||
seed1 = dwCryptTable[(dwHashType * 0x100) + ch] ^ (seed1 + seed2);
|
||||
seed2 = ch + seed1 + seed2 + (seed2 << 5) + 3;
|
||||
}
|
||||
return seed1;
|
||||
}
|
||||
|
||||
#define BLOCK_OFFSET_ADJUSTED_KEY 0x00020000L
|
||||
|
||||
unsigned long ComputeFileKey(const char *lpszFilePath, const BlockTableEntry &blockEntry, unsigned long nArchiveOffset)
|
||||
{
|
||||
assert(lpszFilePath);
|
||||
|
||||
// Find the file name part of the path
|
||||
const char *lpszFileName = strrchr(lpszFilePath, '\\');
|
||||
if (lpszFileName)
|
||||
lpszFileName++; // Skip the \
|
||||
else
|
||||
lpszFileName = lpszFilePath;
|
||||
|
||||
// Hash the name to get the base key
|
||||
unsigned long nFileKey = HashString(lpszFileName, MPQ_HASH_FILE_KEY);
|
||||
|
||||
// Offset-adjust the key if necessary
|
||||
if (blockEntry.Flags & BLOCK_OFFSET_ADJUSTED_KEY)
|
||||
nFileKey = (nFileKey + blockEntry.BlockOffset) ^ blockEntry.FileSize;
|
||||
|
||||
return nFileKey;
|
||||
}
|
||||
|
||||
3.3 FINDING FILES
|
||||
|
||||
#define MPQ_HASH_ENTRY_EMPTY 0xFFFFFFFFL
|
||||
#define MPQ_HASH_ENTRY_DELETED 0xFFFFFFFEL
|
||||
|
||||
bool FindFileInHashTable(const HashTableEntry *lpHashTable, unsigned long nHashTableSize, const char *lpszFilePath, unsigned short nLang, unsigned char nPlatform, unsigned long &iFileHashEntry)
|
||||
{
|
||||
assert(lpHashTable);
|
||||
assert(nHashTableSize);
|
||||
assert(lpszFilePath);
|
||||
|
||||
// Find the home entry in the hash table for the file
|
||||
unsigned long iInitEntry = HashString(lpszFilePath, MPQ_HASH_TABLE_OFFSET) & (nHashTableSize - 1);
|
||||
|
||||
// Is there anything there at all?
|
||||
if (lpHashTable[iInitEntry].FileBlockIndex == MPQ_HASH_ENTRY_EMPTY)
|
||||
return false;
|
||||
|
||||
// Compute the hashes to compare the hash table entry against
|
||||
unsigned long nNameHashA = HashString(lpszFilePath, MPQ_HASH_NAME_A),
|
||||
nNameHashB = HashString(lpszFilePath, MPQ_HASH_NAME_B),
|
||||
iCurEntry = iInitEntry;
|
||||
|
||||
// Check each entry in the hash table till a termination point is reached
|
||||
do
|
||||
{
|
||||
if (lpHashTable[iCurEntry].FileBlockIndex != MPQ_HASH_ENTRY_DELETED)
|
||||
{
|
||||
if (lpHashTable[iCurEntry].FilePathHashA == nNameHashA
|
||||
&& lpHashTable[iCurEntry].FilePathHashB == nNameHashB
|
||||
&& lpHashTable[iCurEntry].Language == nLang
|
||||
&& lpHashTable[iCurEntry].Platform == nPlatform)
|
||||
{
|
||||
iFileHashEntry = iCurEntry;
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
iCurEntry = (iCurEntry + 1) & (nHashTableSize - 1);
|
||||
} while (iCurEntry != iInitEntry && lpHashTable[iCurEntry].FileBlockIndex != MPQ_HASH_ENTRY_EMPTY);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
3.4 DELETING FILES
|
||||
|
||||
bool DeleteFile(HashTableEntry *lpHashTable, unsigned long nHashTableSize, BlockTableEntry *lpBlockTable, const char *lpszFilePath, unsigned short nLang, unsigned char nPlatform)
|
||||
{
|
||||
assert(lpHashTable);
|
||||
assert(nHashTableSize);
|
||||
assert(lpBlockTable);
|
||||
|
||||
// Find the file in the hash table
|
||||
unsigned long iFileHashEntry;
|
||||
|
||||
if (!FindFileInHashTable(lpHashTable, nHashTableSize, lpszFilePath, nLang, nPlatform, iFileHashEntry))
|
||||
return false;
|
||||
|
||||
// Get the block table index before we nuke the hash table entry
|
||||
unsigned long iFileBlockEntry = lpHashTable[iFileHashEntry].FileBlockIndex;
|
||||
|
||||
// Delete the file's entry in the hash table
|
||||
memset(&lpHashTable[iFileHashEntry], 0xFF, sizeof(HashTableEntry));
|
||||
|
||||
// If the next entry is empty, mark this one as empty; otherwise, mark this as deleted.
|
||||
if (lpHashTable[(iFileHashEntry + 1) & (nHashTableSize - 1)].FileBlockIndex == MPQ_HASH_ENTRY_EMPTY)
|
||||
lpHashTable[iFileHashEntry].FileBlockIndex = MPQ_HASH_ENTRY_EMPTY;
|
||||
else
|
||||
lpHashTable[iFileHashEntry].FileBlockIndex = MPQ_HASH_ENTRY_DELETED;
|
||||
|
||||
// If the block occupies space, mark the block as free space; otherwise, clear the block table entry.
|
||||
if (lpBlockTable[iFileBlockEntry].BlockSize > 0)
|
||||
{
|
||||
lpBlockTable[iFileBlockEntry].FileSize = 0;
|
||||
lpBlockTable[iFileBlockEntry].Flags = 0;
|
||||
}
|
||||
else
|
||||
memset(&lpBlockTable[iFileBlockEntry], 0, sizeof(BlockTableEntry);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
3.5 CONVERSION OF FILETIME AND time_t
|
||||
This code assumes that the base ("zero") date for time_t is 01/01/1970. This is true on Windows, Unix System V systems, and Mac OS X. It is unknown whether this is true on all other platforms. You'll need to research this yourself, if you plan on porting it somewhere else.
|
||||
|
||||
#define EPOCH_OFFSET 116444736000000000ULL // Number of 100 ns units between 01/01/1601 and 01/01/1970
|
||||
|
||||
bool GetTimeFromFileTime(const FILETIME &fileTime, time_t &time)
|
||||
{
|
||||
// The FILETIME represents a 64-bit integer: the number of 100 ns units since January 1, 1601
|
||||
unsigned long long nTime = ((unsigned long long)fileTime.dwHighDateTime << 32) + fileTime.dwLowDateTime;
|
||||
|
||||
if (nTime < EPOCH_OFFSET)
|
||||
return false;
|
||||
|
||||
nTime -= EPOCH_OFFSET; // Convert the time base from 01/01/1601 to 01/01/1970
|
||||
nTime /= 10000000ULL; // Convert 100 ns to sec
|
||||
|
||||
time = (time_t)nTime;
|
||||
|
||||
// Test for overflow (FILETIME is 64 bits, time_t is 32 bits)
|
||||
if ((nTime - (unsigned long long)time) > 0)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void GetFileTimeFromTime(const time_t &time, FILETIME &fileTime)
|
||||
{
|
||||
unsigned long long nTime = (unsigned long long)time;
|
||||
|
||||
nTime *= 10000000ULL;
|
||||
nTime += EPOCH_OFFSET;
|
||||
|
||||
fileTime.dwLowDateTime = (DWORD)nTime;
|
||||
fileTime.dwHighDateTime = (DWORD)(nTime >> 32);
|
||||
}
|
||||
|
||||
3.6 FORMING A 64-BIT LARGE ARCHIVE OFFSET FROM 32-BIT AND 16-BIT COMPONENTS
|
||||
unsigned long long MakeLargeArchiveOffset(unsigned long nOffsetLow, unsigned short nOffsetHigh)
|
||||
{
|
||||
return ((unsigned long long)nOffsetHigh << 32) + (unsigned long long)nOffsetLow;
|
||||
}
|
||||
|
||||
4. REVISION HISTORY
|
||||
1.0
|
||||
- Updated to include most of the changes found in the Burning Crusade Friends and Family beta
|
||||
|
||||
0.91.
|
||||
- Updated several structure member descriptions
|
||||
- Listed the full set of characters that can separate list file entries
|
||||
- Noted that (attributes), (listfile), and (signature) use the default language and platform codes
|
||||
- Redid part of the file data specs to clarify the format of sectors
|
||||
- Enhanced descriptions of the different kinds of block table entries
|
||||
- Added ComputeFileKey, FindFileInHashTable, and DeleteFile source
|
||||
@@ -0,0 +1 @@
|
||||
UCMXF6EJY352EFH4XFRXCFH2XC9MQRZK
|
||||
@@ -0,0 +1 @@
|
||||
MMKVHY48RP7WXP4GHYBQ7SL9J9UNPHBP
|
||||
@@ -0,0 +1 @@
|
||||
8MXLWHQ7VGGLTZ9MQZQSFDCLJYET3CPP
|
||||
@@ -0,0 +1 @@
|
||||
EJ2R5TM6XFE2GUNG5QDGHKQ9UAKPWZSZ
|
||||
@@ -0,0 +1 @@
|
||||
PBGFBE42Z6LNK65UGJQ3WZVMCLP4HQQT
|
||||
@@ -0,0 +1 @@
|
||||
X7SEJJS9TSGCW5P28EBSC47AJPEY8VU2
|
||||
@@ -0,0 +1 @@
|
||||
5KVBQA8VYE6XRY3DLGC5ZDE4XS4P7YA2
|
||||
@@ -0,0 +1 @@
|
||||
478JD2K56EVNVVY4XX8TDWYT5B8KB254
|
||||
@@ -0,0 +1 @@
|
||||
8TS4VNFQRZTN6YWHE9CHVDH9NVWD474A
|
||||
@@ -0,0 +1 @@
|
||||
LJ52Z32DF4LZ4ZJJXVKK3AZQA6GABLJB
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user