Compare commits
2011 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
b6eb396626 | |
|
|
b4fdd26946 | |
|
|
14b5df3e2c | |
|
|
482c8e1256 | |
|
|
162bb983ab | |
|
|
4bd8d682c9 | |
|
|
119cacac0d | |
|
|
1cdc87082f | |
|
|
73d591e877 | |
|
|
e460578cba | |
|
|
29ea018a2e | |
|
|
45d6bcb2a7 | |
|
|
f93bd379e6 | |
|
|
6a57a07073 | |
|
|
b6b1e95d37 | |
|
|
edbfa2905f | |
|
|
2eb4ee2302 | |
|
|
b79e19e901 | |
|
|
64196bd5e7 | |
|
|
900d76d94c | |
|
|
01ff9ecdc3 | |
|
|
74e58b34e1 | |
|
|
a1c52098ad | |
|
|
115b032ca1 | |
|
|
93b16188bf | |
|
|
1395135d38 | |
|
|
68572b545e | |
|
|
0f542d8517 | |
|
|
b40eb663a7 | |
|
|
45ec826517 | |
|
|
db4ed0301a | |
|
|
dca75bb289 | |
|
|
14811af6ec | |
|
|
0d4117bb59 | |
|
|
b44deb2a1c | |
|
|
30a575dc28 | |
|
|
500723614b | |
|
|
61dd0df958 | |
|
|
b199be2fc7 | |
|
|
5ae8418352 | |
|
|
742ac8f73a | |
|
|
93f23448d0 | |
|
|
0e2c9177c0 | |
|
|
968396b99b | |
|
|
2d4d6e6689 | |
|
|
134725f121 | |
|
|
d00fb4b333 | |
|
|
f2b9b42437 | |
|
|
e334105074 | |
|
|
5ca6ba9380 | |
|
|
6a734b0d6d | |
|
|
56c6e1aab9 | |
|
|
755622536f | |
|
|
a02df866d6 | |
|
|
4910f2590f | |
|
|
a44d18f2c1 | |
|
|
309c6d920f | |
|
|
d7faf89ff2 | |
|
|
a4279c7efc | |
|
|
3d5e009292 | |
|
|
b737122dd6 | |
|
|
153623e1f1 | |
|
|
2f54c689e9 | |
|
|
8374c79c5d | |
|
|
f150f0c649 | |
|
|
e465b9ccba | |
|
|
d07f84330f | |
|
|
53406f5046 | |
|
|
6afdb0f176 | |
|
|
fe76435079 | |
|
|
2cbe56aaeb | |
|
|
2a8309bcb0 | |
|
|
831987e4db | |
|
|
b756f80b4a | |
|
|
ddd50b5e3a | |
|
|
72b29fee19 | |
|
|
8459f9ed74 | |
|
|
78edbe2e00 | |
|
|
8af7006019 | |
|
|
6d3343f3b1 | |
|
|
ad1623243c | |
|
|
c95ea4a498 | |
|
|
e00e734ed3 | |
|
|
0ad706c3a9 | |
|
|
0f95e40c83 | |
|
|
68d6711d84 | |
|
|
4bf2e4ed83 | |
|
|
570ce0194e | |
|
|
6783b31260 | |
|
|
a99ef867bc | |
|
|
29d34e7e86 | |
|
|
dc76a18275 | |
|
|
fa0f30e5ef | |
|
|
6ad23ed20b | |
|
|
5aa5eeb992 | |
|
|
42f472107d | |
|
|
5d58a71618 | |
|
|
191abbad87 | |
|
|
432885fb0b | |
|
|
e39c5d55d3 | |
|
|
61beafa967 | |
|
|
c1fee0c161 | |
|
|
6a05c82952 | |
|
|
7ccfdf0660 | |
|
|
f1d8dedd6f | |
|
|
0efd939a2d | |
|
|
2e7a5c9897 | |
|
|
514b10f662 | |
|
|
deb7538384 | |
|
|
1f58533518 | |
|
|
c25b0053d0 | |
|
|
4712bf5909 | |
|
|
f09f7d49e0 | |
|
|
5cd53f2017 | |
|
|
b7346799d3 | |
|
|
d3c19e573d | |
|
|
431a9c89e8 | |
|
|
375ba90589 | |
|
|
6af12744ff | |
|
|
7c9490116a | |
|
|
20890533d5 | |
|
|
1fbf50dea4 | |
|
|
c0bb55a83b | |
|
|
a6398b12fa | |
|
|
d606a2c7d3 | |
|
|
19f625947b | |
|
|
fab5b4a5aa | |
|
|
95d311e9bf | |
|
|
9283b69c00 | |
|
|
d006955398 | |
|
|
31faecde59 | |
|
|
c6fada2c1f | |
|
|
d437434cf9 | |
|
|
4003ff7d6b | |
|
|
94768aa089 | |
|
|
34c1766007 | |
|
|
34ad75f2c9 | |
|
|
2b342b55bd | |
|
|
71991c2275 | |
|
|
d2a0a597b9 | |
|
|
18a1f45ee4 | |
|
|
39c266af1b | |
|
|
3a762a5311 | |
|
|
fc9f9c011b | |
|
|
5774e290c5 | |
|
|
d84ad841f1 | |
|
|
873cc1ca67 | |
|
|
5918ad85e6 | |
|
|
f7dbe57966 | |
|
|
60c7da3cfb | |
|
|
cefb338e02 | |
|
|
d6e7c9b41d | |
|
|
0d4b271fed | |
|
|
f4cf292899 | |
|
|
da0b7c8484 | |
|
|
f68f7ffaf0 | |
|
|
8c4d2db9d1 | |
|
|
df692aeaba | |
|
|
06da3877db | |
|
|
e88058ed37 | |
|
|
26dc506d53 | |
|
|
04df26a574 | |
|
|
f5541e7518 | |
|
|
f701f9a9cb | |
|
|
5cd4d7854a | |
|
|
8a8df0bfa4 | |
|
|
d826461573 | |
|
|
53973d3505 | |
|
|
70b1d1a87a | |
|
|
359643af24 | |
|
|
3a66c9b359 | |
|
|
980a27427d | |
|
|
edc2e32b3f | |
|
|
e49446df61 | |
|
|
5e4443a1f9 | |
|
|
afdfa29547 | |
|
|
28ef8faaa1 | |
|
|
aabc23348b | |
|
|
dfb014d4a8 | |
|
|
aa175c75ac | |
|
|
a3e54ebcf3 | |
|
|
ac4dfe9df7 | |
|
|
7bb3943467 | |
|
|
4c1919cdee | |
|
|
321a829243 | |
|
|
4b01fa8556 | |
|
|
05c44ceb91 | |
|
|
2bb57c9317 | |
|
|
6e5474959f | |
|
|
dc44cab8be | |
|
|
af6cbc9b9e | |
|
|
17d7f82ffd | |
|
|
2c11be635d | |
|
|
4fb5cec968 | |
|
|
cbba51ddce | |
|
|
433f7cfa49 | |
|
|
5efdf12738 | |
|
|
4cadc0009d | |
|
|
862519b051 | |
|
|
c6abd08689 | |
|
|
725b5d5973 | |
|
|
ef1decc6ad | |
|
|
9c9626b502 | |
|
|
af20525b18 | |
|
|
873c3a5310 | |
|
|
fa8ab487a1 | |
|
|
c91641b5cd | |
|
|
2d32791f35 | |
|
|
79b2e7b474 | |
|
|
529341fd7d | |
|
|
9d2b38d972 | |
|
|
38ef3678c6 | |
|
|
8198a50fd6 | |
|
|
d28bf267a1 | |
|
|
ef1b8fe86d | |
|
|
7c326bb2a2 | |
|
|
8b11e8b5c8 | |
|
|
fae6c725ec | |
|
|
21c092bd80 | |
|
|
92b899f5bf | |
|
|
b0ed2e02de | |
|
|
7c94970b8d | |
|
|
6dab29e62d | |
|
|
9b1af5d3af | |
|
|
663a8ef24b | |
|
|
aa11859bda | |
|
|
e6644af301 | |
|
|
6f6eba3d2c | |
|
|
579aa4f6d8 | |
|
|
06cb87f773 | |
|
|
d05f5cc34d | |
|
|
57714203de | |
|
|
dc25f28774 | |
|
|
21b4fe79aa | |
|
|
6658154f2d | |
|
|
d547f6e0a5 | |
|
|
da9b8209d6 | |
|
|
af4494284d | |
|
|
00a1a49405 | |
|
|
952824356e | |
|
|
9b4e0ebd80 | |
|
|
b4989b62a1 | |
|
|
ecb058079c | |
|
|
9f93969211 | |
|
|
19a4cb61ea | |
|
|
a52fdf90e7 | |
|
|
abbfe4181b | |
|
|
157c538a08 | |
|
|
027c6a8fb7 | |
|
|
99830141db | |
|
|
3ff478f3ef | |
|
|
b0f2597e38 | |
|
|
8e3eebe483 | |
|
|
c44d33c4e1 | |
|
|
ad229da788 | |
|
|
18bd436b39 | |
|
|
f19bf483be | |
|
|
085d4979ca | |
|
|
167f501a1a | |
|
|
07026d593c | |
|
|
3ca40dae17 | |
|
|
2741a33a15 | |
|
|
403e466ac2 | |
|
|
c9240a1880 | |
|
|
221ee0303c | |
|
|
cedd6ffae6 | |
|
|
85f1b4c5c5 | |
|
|
01c2e1c3fd | |
|
|
23aee471e5 | |
|
|
28a2a74a97 | |
|
|
f22810fe54 | |
|
|
e2d09bdcf5 | |
|
|
baae55f1eb | |
|
|
b23a91720e | |
|
|
f2bf473e08 | |
|
|
c1b6d369b2 | |
|
|
e995e54168 | |
|
|
51d0cd7779 | |
|
|
8b6c4b97e6 | |
|
|
d6120b3c83 | |
|
|
ae2d73cf54 | |
|
|
e41c2b15fb | |
|
|
863906766f | |
|
|
8dd99cb11c | |
|
|
f23afac745 | |
|
|
1972cbe080 | |
|
|
c225539ba7 | |
|
|
389fa08ebb | |
|
|
73397d3714 | |
|
|
a7705d16e5 | |
|
|
9b55b3a958 | |
|
|
b1905750be | |
|
|
6dd9d26846 | |
|
|
48bf31f86f | |
|
|
b0370d117c | |
|
|
fa2a67fb3b | |
|
|
c3e4d73341 | |
|
|
3ca94e8a33 | |
|
|
1de9fa76f9 | |
|
|
c0cf269159 | |
|
|
bae80d369f | |
|
|
74bb2a5fb3 | |
|
|
6980a08090 | |
|
|
fa687e9e99 | |
|
|
c440ff84cc | |
|
|
62ef0198c5 | |
|
|
ffb3964b10 | |
|
|
155d7b2e07 | |
|
|
5fb24f6653 | |
|
|
08dabad8ca | |
|
|
4f282b4f8b | |
|
|
be14bbe80c | |
|
|
51be963ac8 | |
|
|
f95507b448 | |
|
|
8b4c36a9ec | |
|
|
8ce38175f5 | |
|
|
9c6895247d | |
|
|
c24ced908c | |
|
|
9069b33ded | |
|
|
a8daedc480 | |
|
|
32e235634a | |
|
|
058352442e | |
|
|
cc564500c1 | |
|
|
4eb7eb412c | |
|
|
5d0c9295ca | |
|
|
3f9627b776 | |
|
|
cce29a87e1 | |
|
|
215ecac933 | |
|
|
7c71e7dfe3 | |
|
|
de11785597 | |
|
|
89b6d8ec59 | |
|
|
7c5229096f | |
|
|
273f249ec4 | |
|
|
2d1b480d68 | |
|
|
f7580f109a | |
|
|
5ee12395a7 | |
|
|
7a532a8662 | |
|
|
7330da3e5a | |
|
|
c8377c7797 | |
|
|
8dad7b377d | |
|
|
3f8f16e711 | |
|
|
6397a5a455 | |
|
|
0b3a20be2d | |
|
|
dbec9e8c76 | |
|
|
c4a9dfb191 | |
|
|
d1cdb915f4 | |
|
|
46d2e4124e | |
|
|
2751661a4e | |
|
|
dbaa2e5e5d | |
|
|
a0c9da6712 | |
|
|
148d2debcb | |
|
|
4405515c73 | |
|
|
926a286277 | |
|
|
ecd3302e74 | |
|
|
d13f1114c6 | |
|
|
d9320945ea | |
|
|
e4fa7264ba | |
|
|
33d73d9f4d | |
|
|
0b102ee2c1 | |
|
|
a4c8363d60 | |
|
|
ce5a0aec59 | |
|
|
03b17f565a | |
|
|
cdd32375c6 | |
|
|
9667f5198d | |
|
|
47a318cb46 | |
|
|
c89e224050 | |
|
|
bbcfaff705 | |
|
|
1eb1af9389 | |
|
|
ac5a185d1b | |
|
|
cecb4bc1b5 | |
|
|
0b40c37ccd | |
|
|
72eb16bc7b | |
|
|
4286c2d0c1 | |
|
|
f082d17ee4 | |
|
|
ee2e521f5d | |
|
|
36785ad6db | |
|
|
7bc1d6b70a | |
|
|
35747957b7 | |
|
|
56f79192e7 | |
|
|
d75c537d81 | |
|
|
d5e75c8331 | |
|
|
9d68068d84 | |
|
|
cb0b2fb7cf | |
|
|
651d80b27d | |
|
|
c2242e06c4 | |
|
|
a1f74c4b6a | |
|
|
d50b9db910 | |
|
|
54c452de76 | |
|
|
4ea384e8b9 | |
|
|
6a0291a9ab | |
|
|
215aca07f0 | |
|
|
72ea3e3be8 | |
|
|
2b7f007921 | |
|
|
4df5eecada | |
|
|
81cb751756 | |
|
|
4739372547 | |
|
|
aedbcb51b2 | |
|
|
0624680953 | |
|
|
7e1bd3b3ef | |
|
|
62fd4e15ec | |
|
|
54fbd6870b | |
|
|
c944f1ec67 | |
|
|
1fef9e1f23 | |
|
|
396d18ff3b | |
|
|
ee232ad635 | |
|
|
603ac3218c | |
|
|
dd28b954f4 | |
|
|
d60ff6fa51 | |
|
|
549539e62f | |
|
|
812e86ed0b | |
|
|
11b7f85cf0 | |
|
|
0b0f7f5f0a | |
|
|
47679d1788 | |
|
|
734f9d2c6b | |
|
|
467bfa00aa | |
|
|
c7410c9792 | |
|
|
e436de39b0 | |
|
|
0c08ad12e6 | |
|
|
12ec05879e | |
|
|
e25df6065c | |
|
|
f1afea268f | |
|
|
a1f1ce639e | |
|
|
9c9aa11d77 | |
|
|
b3d94e6abe | |
|
|
9284db5b65 | |
|
|
2d43ecc092 | |
|
|
3cf0c04831 | |
|
|
350fcdae1e | |
|
|
f7e54f4394 | |
|
|
82b494203d | |
|
|
736f4fd10d | |
|
|
c861410732 | |
|
|
748cc820e5 | |
|
|
e4cbe64172 | |
|
|
751e44d399 | |
|
|
323f87dfe6 | |
|
|
1e414ac871 | |
|
|
8b36940221 | |
|
|
a389afe03a | |
|
|
db9b359b8b | |
|
|
b73d03b199 | |
|
|
243af150a8 | |
|
|
c6fd588088 | |
|
|
06e09c3019 | |
|
|
34474b32aa | |
|
|
3dc7b93eff | |
|
|
a44f760f31 | |
|
|
c770b22b38 | |
|
|
61fc66f59f | |
|
|
7db63f8570 | |
|
|
4dc90741d7 | |
|
|
1f395b9a6c | |
|
|
eba646cebb | |
|
|
3ef1f91d9d | |
|
|
182473618b | |
|
|
56dc6d133d | |
|
|
8a4b76ec59 | |
|
|
fe11a70f22 | |
|
|
ecbe04bebe | |
|
|
6b8daad36d | |
|
|
699e85799d | |
|
|
59cf7735a3 | |
|
|
16eb611825 | |
|
|
44a0b99c76 | |
|
|
2bd057d829 | |
|
|
dc108719e9 | |
|
|
1e048f5e81 | |
|
|
4afe9de86b | |
|
|
d8f5f00aac | |
|
|
cb3383f310 | |
|
|
d423c5f715 | |
|
|
1ba4035db6 | |
|
|
d14b21dc11 | |
|
|
1abb1f39f5 | |
|
|
7a39d2a4ee | |
|
|
6794e232ac | |
|
|
6786662d10 | |
|
|
60a3b0742a | |
|
|
d7e1525ff4 | |
|
|
4e37936525 | |
|
|
9f05130a04 | |
|
|
053ab631ee | |
|
|
a7b57462fa | |
|
|
5ed12e0cc0 | |
|
|
400c3b568d | |
|
|
587dfd1eea | |
|
|
8ca8877339 | |
|
|
382d1b2901 | |
|
|
8b51e47b19 | |
|
|
c731d5770c | |
|
|
5cad6edec0 | |
|
|
5cf11c7a27 | |
|
|
671507979e | |
|
|
576faba9a6 | |
|
|
7f383f9caa | |
|
|
1852e68b48 | |
|
|
f18d9e0559 | |
|
|
647fb43ccd | |
|
|
d76a64abc9 | |
|
|
d56d310c1f | |
|
|
09059e2c1d | |
|
|
f9a8fa8ea9 | |
|
|
40ac530d59 | |
|
|
9292c8952a | |
|
|
4e0f762c3c | |
|
|
c892cfb5dc | |
|
|
47c4e91443 | |
|
|
698a461fdd | |
|
|
199be2f489 | |
|
|
e3d91630ee | |
|
|
2abe621457 | |
|
|
ac6ca04d74 | |
|
|
ebc5d343a4 | |
|
|
035946cfe9 | |
|
|
4f10d814c6 | |
|
|
a2c7ad85fb | |
|
|
730441c692 | |
|
|
a608ac2de5 | |
|
|
f2b29258f6 | |
|
|
e6e11c1e72 | |
|
|
d737ae0c28 | |
|
|
023411e444 | |
|
|
8559ccc404 | |
|
|
a17571d9a3 | |
|
|
fe086a089d | |
|
|
eb84b2e607 | |
|
|
ea38185ea9 | |
|
|
92b82d2cf8 | |
|
|
49cc96b0c4 | |
|
|
022855eca2 | |
|
|
38b9deffbc | |
|
|
f2794d609a | |
|
|
65253713f1 | |
|
|
9d56cf94cd | |
|
|
697f904e98 | |
|
|
f01553497c | |
|
|
7189ccbb7b | |
|
|
49bf55f5c6 | |
|
|
be5a215a6c | |
|
|
7f13b8b1e1 | |
|
|
e340a8a4ff | |
|
|
ae1b692333 | |
|
|
9dff9a2b14 | |
|
|
398eceafca | |
|
|
18986b29f4 | |
|
|
2cfd53aa79 | |
|
|
14c403f6b8 | |
|
|
bc57708120 | |
|
|
f64d0807f4 | |
|
|
faf2516d56 | |
|
|
2091c3cf69 | |
|
|
1296a7edea | |
|
|
62caadf4c3 | |
|
|
4b0ec476e3 | |
|
|
932ec01ea1 | |
|
|
33d626cf60 | |
|
|
629662657f | |
|
|
ad80542a57 | |
|
|
876b81cc45 | |
|
|
52929fd904 | |
|
|
794b4e0255 | |
|
|
acdcb0a793 | |
|
|
ab47f1f5f6 | |
|
|
57c5aa664a | |
|
|
55cd5bc3a0 | |
|
|
78e7887c7b | |
|
|
6d5a5b78c8 | |
|
|
d9b77bdf9a | |
|
|
f8bdc510e8 | |
|
|
ffb790b1b5 | |
|
|
09751a8aa4 | |
|
|
a332ace34a | |
|
|
eaef976993 | |
|
|
21c612b975 | |
|
|
1feb61062b | |
|
|
c35ae6f714 | |
|
|
730236790d | |
|
|
753dff9ffc | |
|
|
b88f114e12 | |
|
|
633d6abbec | |
|
|
eecd3fbdeb | |
|
|
2d962cb418 | |
|
|
47d5b5e17c | |
|
|
a07478f468 | |
|
|
5f845dff41 | |
|
|
30eb0949c7 | |
|
|
67d5e8dc16 | |
|
|
9667313919 | |
|
|
d21e9a4b5f | |
|
|
f07112e21c | |
|
|
76f98d30f0 | |
|
|
8a9c38f05c | |
|
|
6dc082c7d0 | |
|
|
ec958ff150 | |
|
|
f209157070 | |
|
|
27feb27c39 | |
|
|
c580186841 | |
|
|
b0aad823b2 | |
|
|
9f04e9f1a2 | |
|
|
c03dffbf5f | |
|
|
69f0cda9c7 | |
|
|
ec47920b52 | |
|
|
0e2859936a | |
|
|
bcc97ecbfe | |
|
|
a8d57d7d17 | |
|
|
eb4137aefd | |
|
|
ae2b0b10dd | |
|
|
8ba91e933a | |
|
|
8557bd0205 | |
|
|
59a656edb4 | |
|
|
ee1c1ba2c7 | |
|
|
df49656b25 | |
|
|
591e31bea6 | |
|
|
e93c9336dd | |
|
|
06cab0a5a1 | |
|
|
a0f652cb8c | |
|
|
5092b5ac7f | |
|
|
80957f9668 | |
|
|
1055c7b5be | |
|
|
9053303825 | |
|
|
6a51ab9215 | |
|
|
be2c4be4a0 | |
|
|
eb73db48f3 | |
|
|
ce409304c4 | |
|
|
8397efbb9e | |
|
|
7de040abf9 | |
|
|
68fd12f52c | |
|
|
a46626cf78 | |
|
|
e86caaa4e1 | |
|
|
829511a337 | |
|
|
9889eca356 | |
|
|
f9c66481c1 | |
|
|
f79435b30e | |
|
|
70b22712a8 | |
|
|
d1942c6dd7 | |
|
|
36a1fbbd49 | |
|
|
2dc30e8859 | |
|
|
f172c913c2 | |
|
|
d38ef4d233 | |
|
|
13cbc3884d | |
|
|
f5ad93973f | |
|
|
e2ada4cfe4 | |
|
|
0e1fba3d1e | |
|
|
9467c8951a | |
|
|
84118251fb | |
|
|
d4cc8d442c | |
|
|
d4c13858a5 | |
|
|
60b0f59551 | |
|
|
361f7e3dcc | |
|
|
3ced7d970e | |
|
|
a6e410b09a | |
|
|
507bbdf37a | |
|
|
4b3b3517b7 | |
|
|
744ea58b9d | |
|
|
92c35cb04c | |
|
|
f756f6d94a | |
|
|
cef42bf5c1 | |
|
|
f5f79288d3 | |
|
|
51fa993fc1 | |
|
|
03186fa2b0 | |
|
|
7901ee45a1 | |
|
|
3043fe7f0b | |
|
|
07c73d02ca | |
|
|
0a95076da4 | |
|
|
d98304c617 | |
|
|
c84d21c0f0 | |
|
|
50eeaa0409 | |
|
|
8d62f710fc | |
|
|
3abe11b093 | |
|
|
292c847777 | |
|
|
33266d8fe1 | |
|
|
fba21fe979 | |
|
|
a3b4a6dc03 | |
|
|
ff84934559 | |
|
|
0e5394e238 | |
|
|
896af463ab | |
|
|
9ebf3fec6d | |
|
|
eb7fb558e6 | |
|
|
22e8d52ed6 | |
|
|
1853ef1a3a | |
|
|
9a514e3ade | |
|
|
384892972c | |
|
|
2e4d92f526 | |
|
|
d1d00dae4c | |
|
|
c1eea9b09f | |
|
|
f8319ad828 | |
|
|
5e0697126e | |
|
|
bcd6e6e457 | |
|
|
0c21f86a62 | |
|
|
eedcc5326b | |
|
|
c26fb7b162 | |
|
|
705106e324 | |
|
|
ec2993933c | |
|
|
9ad3f97efb | |
|
|
fc676d906d | |
|
|
12a82990d3 | |
|
|
a970aea405 | |
|
|
5a72b13822 | |
|
|
a9868556a3 | |
|
|
5687f8070c | |
|
|
1ac30e0338 | |
|
|
c552004211 | |
|
|
93523daf50 | |
|
|
259a100c82 | |
|
|
281338243a | |
|
|
817f578dfc | |
|
|
d3374727e7 | |
|
|
a4c2c2f88a | |
|
|
a8b3bca199 | |
|
|
6614b4de93 | |
|
|
d3f4bcdf53 | |
|
|
01182aeb0e | |
|
|
cf5300149f | |
|
|
1bfc86b9c3 | |
|
|
1c61512e64 | |
|
|
b1deff231e | |
|
|
447d4060d5 | |
|
|
10f849cad1 | |
|
|
41e3f6cc67 | |
|
|
66fe5a9d00 | |
|
|
dd1812a4ed | |
|
|
1f50e8e0ec | |
|
|
da9c4508b3 | |
|
|
c9abbde679 | |
|
|
fb5d022a76 | |
|
|
a004920785 | |
|
|
a43ffbb54e | |
|
|
7c976cb3c5 | |
|
|
28d9cb117c | |
|
|
021a8ed409 | |
|
|
7d9542592a | |
|
|
b088b1a635 | |
|
|
2cc17f04c1 | |
|
|
efc52ab1ea | |
|
|
1f8d946de4 | |
|
|
1829014bc8 | |
|
|
319516126b | |
|
|
39ff1db4ff | |
|
|
ba00d2767a | |
|
|
9d5783c203 | |
|
|
cba495bd88 | |
|
|
1064271e15 | |
|
|
a3a78d11c2 | |
|
|
f8f518e90a | |
|
|
c612d83a2b | |
|
|
e724a8e86e | |
|
|
777e82f9fa | |
|
|
2200456957 | |
|
|
9e4f9f8ac4 | |
|
|
21afe3027c | |
|
|
15a454c83c | |
|
|
de1a06d59f | |
|
|
82962a98b3 | |
|
|
56053e919d | |
|
|
eec503e517 | |
|
|
07c3018b42 | |
|
|
0cd61b682f | |
|
|
a771fef5f0 | |
|
|
f425e865dd | |
|
|
1f7125cc9c | |
|
|
8fbc76eace | |
|
|
bce034185b | |
|
|
ce120c56de | |
|
|
cac44bdfd6 | |
|
|
b777cdf2c9 | |
|
|
f77b5897fa | |
|
|
12d127248c | |
|
|
8ca9709969 | |
|
|
81267118ce | |
|
|
352d0f006f | |
|
|
4861bcba6f | |
|
|
b2744b1dd7 | |
|
|
8dc2b45827 | |
|
|
c7ad4a580b | |
|
|
561000eb0c | |
|
|
688afa067c | |
|
|
b380a0a305 | |
|
|
a74392dbb1 | |
|
|
f4913b6415 | |
|
|
a7c98ccb25 | |
|
|
786632f936 | |
|
|
9b155a3793 | |
|
|
8b0a1ecfce | |
|
|
caaa89dd2b | |
|
|
a2c6580344 | |
|
|
00eac312fe | |
|
|
0940ea13a1 | |
|
|
f5b7e1b891 | |
|
|
3e2b0ea9d4 | |
|
|
8c4e42a43b | |
|
|
b98a7afacd | |
|
|
aab9a6b383 | |
|
|
b17281e3cd | |
|
|
ced493388f | |
|
|
8ee7028104 | |
|
|
21551fa80e | |
|
|
d699156645 | |
|
|
c79fda41f9 | |
|
|
8c508f54bd | |
|
|
d98e3b4d40 | |
|
|
8c9016dde4 | |
|
|
6eee24b414 | |
|
|
ec27afe04b | |
|
|
485098d4fc | |
|
|
7e656d278e | |
|
|
5ba6d841e1 | |
|
|
e19ca19e34 | |
|
|
37a8cf2a37 | |
|
|
8a23c73511 | |
|
|
cd6016f1af | |
|
|
8c36fad786 | |
|
|
4bd531808e | |
|
|
980b225254 | |
|
|
7d85dbbb31 | |
|
|
7c2306a85b | |
|
|
3c65a4fc28 | |
|
|
29f1a173bf | |
|
|
4a13eec6c8 | |
|
|
c603018d48 | |
|
|
f1cac3962c | |
|
|
f6d5a5a2a4 | |
|
|
f7edba625d | |
|
|
8fc8628adf | |
|
|
507f71c944 | |
|
|
0d772f5e90 | |
|
|
7881d05646 | |
|
|
7fc0906751 | |
|
|
0e13440f1d | |
|
|
b5fe2118c2 | |
|
|
b3e545f202 | |
|
|
6dcd418acb | |
|
|
65575a2253 | |
|
|
0fe2ab6689 | |
|
|
9016c3aaff | |
|
|
1b85f54dbf | |
|
|
454637f0a1 | |
|
|
3e8fc0ddcf | |
|
|
9f7a7bcfb5 | |
|
|
d48a14f9c9 | |
|
|
acd8cb0d50 | |
|
|
7848bb060c | |
|
|
5f937f6a06 | |
|
|
9dd2addba0 | |
|
|
7d1b39145a | |
|
|
3867674c0a | |
|
|
99916b03b3 | |
|
|
5f381968a4 | |
|
|
ff37270150 | |
|
|
99f4f3a8b3 | |
|
|
01d00e887a | |
|
|
d71fa3bc0a | |
|
|
8b08fe3abb | |
|
|
666449416a | |
|
|
135d0a79db | |
|
|
1b48ce3fe3 | |
|
|
b491c48cef | |
|
|
3f4b61f1b8 | |
|
|
980f90283a | |
|
|
0a5cd607b0 | |
|
|
edd3e78832 | |
|
|
5f72274380 | |
|
|
68509d6d83 | |
|
|
11fb4a2b65 | |
|
|
967d52ea6a | |
|
|
eb0f36ce58 | |
|
|
f09b8d9375 | |
|
|
a31fec1973 | |
|
|
6da3ab1354 | |
|
|
b95abff3f0 | |
|
|
67523f6228 | |
|
|
96840b1a03 | |
|
|
056bfb3e2f | |
|
|
76dc08d9a4 | |
|
|
4cde887c24 | |
|
|
1c3d8fb72e | |
|
|
e373481944 | |
|
|
7d0bb7f363 | |
|
|
0fbe0281e3 | |
|
|
34d9589b33 | |
|
|
a1d5d241fa | |
|
|
2323b12599 | |
|
|
96b4a1a841 | |
|
|
ccf34bb325 | |
|
|
1d217b67c5 | |
|
|
22d001462f | |
|
|
8e5df2b1c5 | |
|
|
fcdaf165ec | |
|
|
47fdeb17a5 | |
|
|
57e37e0b46 | |
|
|
09357b5df9 | |
|
|
c981d8272f | |
|
|
26879d1652 | |
|
|
06353a8fe5 | |
|
|
4f184e46f5 | |
|
|
ba034579f9 | |
|
|
427c4f213a | |
|
|
97c3dd8374 | |
|
|
0f5c74fb53 | |
|
|
071c6f68d5 | |
|
|
9f2eeca117 | |
|
|
0eddcd119e | |
|
|
f06796195c | |
|
|
493ab581de | |
|
|
561010d897 | |
|
|
3e827dba76 | |
|
|
1f0b1d33e2 | |
|
|
f32af27f1b | |
|
|
7bef6c6d99 | |
|
|
de51069004 | |
|
|
e8e1a7c062 | |
|
|
22eb11689b | |
|
|
e59c1cf0e8 | |
|
|
c3de1a30c4 | |
|
|
e83eea9ae9 | |
|
|
d465e807c1 | |
|
|
9a01316ce2 | |
|
|
870014cbb0 | |
|
|
17097aec6f | |
|
|
0444ca2c4c | |
|
|
736e20d0d8 | |
|
|
9ea54dee7c | |
|
|
cf61ef23d3 | |
|
|
649eeba2ab | |
|
|
dbab0091b2 | |
|
|
2b0941bccd | |
|
|
68812b65ad | |
|
|
cde8ec5d3e | |
|
|
e28603c66c | |
|
|
202e67c3dd | |
|
|
5be965131c | |
|
|
19b76c9f1b | |
|
|
d8676cbd6c | |
|
|
2bf6c3b78c | |
|
|
a94570e593 | |
|
|
70e3a0e322 | |
|
|
0d1a7c439b | |
|
|
0fab5e4d82 | |
|
|
4eeb4cdb0d | |
|
|
e7f9ab9797 | |
|
|
59156fa865 | |
|
|
b39a537adf | |
|
|
87c89ba973 | |
|
|
29ff41df59 | |
|
|
1d6d7eabf9 | |
|
|
ce7c077ca9 | |
|
|
67566d0fb7 | |
|
|
1f12b596f6 | |
|
|
cf63911261 | |
|
|
b6c00d767a | |
|
|
ad2b28cba0 | |
|
|
572c1ad775 | |
|
|
55c4b51a39 | |
|
|
843173a118 | |
|
|
9473b429ec | |
|
|
97e3d016f4 | |
|
|
333f0e5c9b | |
|
|
c891f09b7e | |
|
|
eacb76fb0c | |
|
|
06ac94db53 | |
|
|
8831f6a589 | |
|
|
af07f6576f | |
|
|
9d322660e8 | |
|
|
2e4d7cd080 | |
|
|
b3abb0f054 | |
|
|
67a47a0a9b | |
|
|
60a6ce3840 | |
|
|
b31dd767e4 | |
|
|
172c47548e | |
|
|
5b0a269d2c | |
|
|
b821c41ceb | |
|
|
b40db441c5 | |
|
|
455d180790 | |
|
|
62cee520f6 | |
|
|
c6aa2f85b1 | |
|
|
96926776bd | |
|
|
ac97cbe96d | |
|
|
5c7109bfd9 | |
|
|
d79ab96b7e | |
|
|
459390ef7b | |
|
|
5f5d8824fa | |
|
|
d222c47e59 | |
|
|
6772d2ff40 | |
|
|
e0386ae7a6 | |
|
|
889af509fa | |
|
|
0be95a784d | |
|
|
5635d06b7e | |
|
|
8b2f1aec5b | |
|
|
ede1a368f5 | |
|
|
690692b8fb | |
|
|
d4cd497ebb | |
|
|
335733e10c | |
|
|
1caf0fa518 | |
|
|
39e5b04a4d | |
|
|
2f4eeb6aec | |
|
|
89e47e7a2a | |
|
|
308bd12fad | |
|
|
c7b66b2ea4 | |
|
|
ea35f73c7a | |
|
|
1d7a43793a | |
|
|
c17973bd53 | |
|
|
1383530c4f | |
|
|
cadf185cee | |
|
|
3b0f54bc6a | |
|
|
4cb9e200ed | |
|
|
6c3a9d7466 | |
|
|
cc53107918 | |
|
|
3b10190780 | |
|
|
feb3aa9c8c | |
|
|
79a996d6cd | |
|
|
9607fa2cf1 | |
|
|
a422564bc7 | |
|
|
f07c13c02a | |
|
|
8e1a04999f | |
|
|
77fbcd915d | |
|
|
4c2a077751 | |
|
|
8a01581945 | |
|
|
c9a59f7b5d | |
|
|
aadbbc756d | |
|
|
a5bda7d22a | |
|
|
b09a76ea7e | |
|
|
8767f31d6e | |
|
|
4b8266ab83 | |
|
|
c34ceeab92 | |
|
|
197e440f1c | |
|
|
e493d80671 | |
|
|
c591415e7c | |
|
|
a10df262b1 | |
|
|
2f11809354 | |
|
|
3acf8d7536 | |
|
|
b1999b5942 | |
|
|
3a2c469c99 | |
|
|
be37a3af8e | |
|
|
8b05ee6ace | |
|
|
09445f294c | |
|
|
2ddedc3390 | |
|
|
3bfec7b607 | |
|
|
92ac33c2df | |
|
|
a36ea8380c | |
|
|
bd223eb457 | |
|
|
a3d042c094 | |
|
|
90643e8077 | |
|
|
c0a6811d56 | |
|
|
73ea4968bc | |
|
|
ebfa704e08 | |
|
|
402bdb1b57 | |
|
|
7485956415 | |
|
|
7744ce6d32 | |
|
|
655850e81a | |
|
|
e91ce96900 | |
|
|
fb54ec45ec | |
|
|
6c778824a1 | |
|
|
f3326f4f17 | |
|
|
5d31caf57b | |
|
|
af3b4ed6d3 | |
|
|
b72d7027f5 | |
|
|
f6666d59b2 | |
|
|
3275675b8e | |
|
|
edf81f7a71 | |
|
|
e8f6800096 | |
|
|
924a19e078 | |
|
|
f5bed6ff69 | |
|
|
6153ff8c8a | |
|
|
74f3c424e8 | |
|
|
5a4bad4da4 | |
|
|
59e402dccd | |
|
|
a8022a70b3 | |
|
|
e32b5572a0 | |
|
|
7b7d7f45c3 | |
|
|
1069733086 | |
|
|
932fca0b0b | |
|
|
7899dd51d5 | |
|
|
94cc83d369 | |
|
|
cade7453e4 | |
|
|
c3fcb0edf5 | |
|
|
54cd0e18e2 | |
|
|
8dc49de72f | |
|
|
44d0197e53 | |
|
|
525dfd8e9c | |
|
|
594abe09bf | |
|
|
c949f0ca8f | |
|
|
3787a48c64 | |
|
|
212c5b23e2 | |
|
|
f486f74dcf | |
|
|
662d47505f | |
|
|
2b7541caee | |
|
|
09da2e6874 | |
|
|
b7d224e5f1 | |
|
|
77ae580467 | |
|
|
4873a854bf | |
|
|
6dcc9ec7e3 | |
|
|
e7a0619e47 | |
|
|
39627876d2 | |
|
|
c45a8149f7 | |
|
|
6694f05ac5 | |
|
|
0daccab319 | |
|
|
7d1fe56fd2 | |
|
|
173b68aff6 | |
|
|
4778001348 | |
|
|
1668edf45a | |
|
|
0927f33763 | |
|
|
c25f248b03 | |
|
|
73608cd118 | |
|
|
472f901ed5 | |
|
|
db7700fb4b | |
|
|
75660165c5 | |
|
|
c9b1c04924 | |
|
|
08e5d21d4b | |
|
|
25ecbf379e | |
|
|
e6d19d7ca1 | |
|
|
7f37bb8ddc | |
|
|
0790d0662a | |
|
|
8ef3bba286 | |
|
|
28a0929b6d | |
|
|
433b6eaa08 | |
|
|
dd766b1b8a | |
|
|
8c96150937 | |
|
|
d36f8dab79 | |
|
|
d3bb45337a | |
|
|
549719cc34 | |
|
|
e742a26739 | |
|
|
93c18b6177 | |
|
|
e2a4fc1205 | |
|
|
72ea74f27d | |
|
|
09ba1e4017 | |
|
|
e89731accd | |
|
|
c1f4104ddd | |
|
|
c2be079943 | |
|
|
0c8d8a04ad | |
|
|
06dc140534 | |
|
|
343bd7413a | |
|
|
14f3b610e8 | |
|
|
2913551bbe | |
|
|
f780f204d5 | |
|
|
e9fc3024c4 | |
|
|
7ff8eddb4b | |
|
|
c6b9d34184 | |
|
|
dfd12d8c9f | |
|
|
8800578b65 | |
|
|
74fa5daf7c | |
|
|
98f7d2126d | |
|
|
77e1786d29 | |
|
|
f37100231f | |
|
|
e7e50b6164 | |
|
|
483c7b6b07 | |
|
|
6be13e0951 | |
|
|
5b20773092 | |
|
|
ba68f4c625 | |
|
|
f8b388551d | |
|
|
0c3aa4e1a4 | |
|
|
b6539ef09c | |
|
|
7af729335e | |
|
|
ed1eb7265e | |
|
|
79078b7cc6 | |
|
|
4f732af28b | |
|
|
f50afc5c24 | |
|
|
c0087369f0 | |
|
|
19c9c15e62 | |
|
|
ca8f617b1b | |
|
|
3caa4d41c9 | |
|
|
c7e994658e | |
|
|
2fe99c24ac | |
|
|
bccf27f29f | |
|
|
6fbc7a6301 | |
|
|
a7ae678420 | |
|
|
27b22e8765 | |
|
|
51e3580700 | |
|
|
e57fcd3a9e | |
|
|
7634039864 | |
|
|
ebe28eea87 | |
|
|
f393d0763f | |
|
|
c5f6a48910 | |
|
|
3b73fe8803 | |
|
|
a0087e75fb | |
|
|
018d8f8769 | |
|
|
7927025ab0 | |
|
|
d2b3831fcc | |
|
|
d639c66cf5 | |
|
|
d28cef938e | |
|
|
accb1d4af4 | |
|
|
1587dd7f65 | |
|
|
e13917ec44 | |
|
|
9db8b20f08 | |
|
|
cbaf9a8386 | |
|
|
2d362dcd01 | |
|
|
cbaf42c886 | |
|
|
bbda33cd5a | |
|
|
b3716e259e | |
|
|
bd878f464a | |
|
|
a5b80f2390 | |
|
|
8c014a5d26 | |
|
|
8923d27cf0 | |
|
|
bf9db200f4 | |
|
|
f09394cdd5 | |
|
|
ccbfd3d003 | |
|
|
245d470a39 | |
|
|
264106c526 | |
|
|
aefed23229 | |
|
|
0e993ff6d4 | |
|
|
ce20154942 | |
|
|
b28f1a802d | |
|
|
3302963305 | |
|
|
a7d2921a85 | |
|
|
b3a1d45f75 | |
|
|
9d0f87abd7 | |
|
|
02c7ae5da7 | |
|
|
304dd6c327 | |
|
|
f51f8d02a2 | |
|
|
2331c3d445 | |
|
|
c1670ba583 | |
|
|
16f0900198 | |
|
|
b45dfc9176 | |
|
|
563a941ead | |
|
|
077b3956fe | |
|
|
ac3ab3b84e | |
|
|
e3a5f77502 | |
|
|
bce813602e | |
|
|
0a28e7fa7e | |
|
|
8b58359c12 | |
|
|
20909895d6 | |
|
|
93c0286739 | |
|
|
079e83dae6 | |
|
|
8630a87cc7 | |
|
|
1732750da9 | |
|
|
30d3fe47a8 | |
|
|
3aa1f9749f | |
|
|
7ef901715c | |
|
|
dcf25086c6 | |
|
|
855923abf2 | |
|
|
1d205638ed | |
|
|
6b25058f68 | |
|
|
ec2a492687 | |
|
|
454e41fcd3 | |
|
|
f82cdb7a7b | |
|
|
1290640a7c | |
|
|
48c5c0dc88 | |
|
|
dfe2ae1dd1 | |
|
|
99c3c07988 | |
|
|
f4865e4376 | |
|
|
e91fff6f85 | |
|
|
21ee159b2c | |
|
|
9d83d8a345 | |
|
|
f4aaced448 | |
|
|
b24e2cb56b | |
|
|
9d7bde7218 | |
|
|
64c4582b01 | |
|
|
3e797338db | |
|
|
a9929e52b0 | |
|
|
44d808016c | |
|
|
1e765919ea | |
|
|
0ad6d4e8ba | |
|
|
883d93c6b8 | |
|
|
a5dfd2ef8b | |
|
|
2d5e0e2edf | |
|
|
a3e559add9 | |
|
|
d18a8fe988 | |
|
|
fd7988e492 | |
|
|
40f454b602 | |
|
|
c4235fa653 | |
|
|
a994bf367c | |
|
|
29859ca9ab | |
|
|
f1e7cad094 | |
|
|
a9c5c7167c | |
|
|
9a69e3fac6 | |
|
|
d401b13cbb | |
|
|
c93a3c56c2 | |
|
|
8621415f50 | |
|
|
e82fb20943 | |
|
|
1077948a13 | |
|
|
0b597fbb3f | |
|
|
effa39f3aa | |
|
|
66cf05667c | |
|
|
1151eb473d | |
|
|
779c75022b | |
|
|
6b089ccb22 | |
|
|
957d89ecd0 | |
|
|
e0970e1c9f | |
|
|
b26e9fc3a9 | |
|
|
d759277961 | |
|
|
5221a827c7 | |
|
|
4e01e2ac67 | |
|
|
8a3f02dc0c | |
|
|
808819a045 | |
|
|
4a96f653bf | |
|
|
43a49d48cc | |
|
|
04cbf398eb | |
|
|
0bcc2c09c0 | |
|
|
df3e6834d6 | |
|
|
7fd7d489f1 | |
|
|
c4e20e94f4 | |
|
|
0035ffc9cd | |
|
|
5bd2d6848a | |
|
|
3ee1b1e92a | |
|
|
3ce74bf30e | |
|
|
b6ff26aa5b | |
|
|
a4848d0f38 | |
|
|
137705c51d | |
|
|
c601405db0 | |
|
|
ff3752a26d | |
|
|
fe7fd614da | |
|
|
5b25d2a0f3 | |
|
|
4f0b125f9b | |
|
|
2c4a7e2a6d | |
|
|
35beb67d6a | |
|
|
f8c450e962 | |
|
|
d3f9c5ab84 | |
|
|
c70cc1932c | |
|
|
b55dadf50e | |
|
|
f41071c25b | |
|
|
ffa128c854 | |
|
|
14685d704c | |
|
|
3081e4b304 | |
|
|
fd1f6ef424 | |
|
|
7cfce0fb96 | |
|
|
6f0918ee95 | |
|
|
798a2d6e1e | |
|
|
0b8f07f307 | |
|
|
f1fdc2a177 | |
|
|
b659b609b9 | |
|
|
dc59fc318a | |
|
|
577d69153a | |
|
|
1ee4c58fdd | |
|
|
7af80a9223 | |
|
|
400257da1a | |
|
|
82529852f4 | |
|
|
a9a90c91e3 | |
|
|
f2307da83a | |
|
|
91e16cabff | |
|
|
db96ee16a2 | |
|
|
e98906b706 | |
|
|
72ea074fa4 | |
|
|
15d18206ff | |
|
|
e52be3a30a | |
|
|
a7da47e552 | |
|
|
e90e63e92c | |
|
|
e8a41d715d | |
|
|
189efeef28 | |
|
|
b67370c02b | |
|
|
574e0b578a | |
|
|
d1320bd2c9 | |
|
|
5e5b4680e4 | |
|
|
cc182416a5 | |
|
|
bf636a67e4 | |
|
|
d602caddde | |
|
|
0cdcab1c2a | |
|
|
f82b1ab6ce | |
|
|
ddf842c86d | |
|
|
908077203e | |
|
|
fec395d3c5 | |
|
|
66a77e6242 | |
|
|
d3c1ccf52d | |
|
|
207989a2f0 | |
|
|
1ebfbc9a6a | |
|
|
d0350cff01 | |
|
|
04f8cad0cb | |
|
|
35b7b570dc | |
|
|
344ca3e089 | |
|
|
b61562a5c7 | |
|
|
da3a0f6154 | |
|
|
f6b4967366 | |
|
|
020bf31dbd | |
|
|
c219b15e84 | |
|
|
e013bb9f15 | |
|
|
ae3ac8cdb1 | |
|
|
d6c51983ac | |
|
|
b45ac6630d | |
|
|
f960bd07cd | |
|
|
d71b77ef68 | |
|
|
26cfcc18a3 | |
|
|
92b81f76b5 | |
|
|
56707c36d8 | |
|
|
2bf387cd28 | |
|
|
f108f5e5e6 | |
|
|
10bd6222be | |
|
|
7932a5be3c | |
|
|
047c390e70 | |
|
|
d927560acc | |
|
|
b8fa769bbe | |
|
|
715307f06f | |
|
|
dcf3a1be3a | |
|
|
a58ede8911 | |
|
|
4be7d08f20 | |
|
|
db9b620bc0 | |
|
|
084f1ecbaf | |
|
|
483dbd9aff | |
|
|
93bd9bd1e1 | |
|
|
0bc1b1c971 | |
|
|
efa7558960 | |
|
|
0ffc36133d | |
|
|
2d307e6fc1 | |
|
|
6f5500d4e8 | |
|
|
b478c486a0 | |
|
|
3b0e842ede | |
|
|
35ad6372ff | |
|
|
c7fd3a05f9 | |
|
|
791e96ed2d | |
|
|
6465c91b95 | |
|
|
ca195d161f | |
|
|
fcc903016b | |
|
|
335279a634 | |
|
|
8353881b50 | |
|
|
31d13ba41e | |
|
|
029a59a836 | |
|
|
e533f71e0f | |
|
|
80abeb82ab | |
|
|
1b6bbbe6cf | |
|
|
cf7b353572 | |
|
|
cbf8b01447 | |
|
|
6d555a3059 | |
|
|
afbdc87ac7 | |
|
|
9298d1a677 | |
|
|
ade1769719 | |
|
|
92db4e2a9d | |
|
|
1b3987a7da | |
|
|
81d697e3ec | |
|
|
34e8b11919 | |
|
|
8dcfaca06a | |
|
|
d0172cbada | |
|
|
f30bbddbdc | |
|
|
2c5d0f5e77 | |
|
|
95d5cd5e09 | |
|
|
12b1f8dbe1 | |
|
|
82f9f7047e | |
|
|
e82c9c0a9b | |
|
|
c849adb43a | |
|
|
893912e0bf | |
|
|
880f703a87 | |
|
|
629622e44c | |
|
|
1f8a3dbe96 | |
|
|
b2cb63a6e9 | |
|
|
c3878e3248 | |
|
|
d77db06643 | |
|
|
cf90a4d3a0 | |
|
|
88046b4467 | |
|
|
ce7d07944a | |
|
|
dbbcf8bcd8 | |
|
|
dcf7b303fb | |
|
|
d22d934153 | |
|
|
b2bf81451f | |
|
|
2c07e5fdf1 | |
|
|
e492db93f6 | |
|
|
382bb0dabf | |
|
|
2ea26fcf5e | |
|
|
cc2a8f4cb7 | |
|
|
cd3002e17e | |
|
|
50ca3dc327 | |
|
|
f1494776e4 | |
|
|
6156b71436 | |
|
|
c48188f215 | |
|
|
6b8c1c118b | |
|
|
24643471a7 | |
|
|
e591bab6e6 | |
|
|
56c88cab57 | |
|
|
e20bf233aa | |
|
|
c8dfb45973 | |
|
|
873899d676 | |
|
|
cb652983b0 | |
|
|
d78fb8ed21 | |
|
|
aa4fc4f218 | |
|
|
1a82ef84ce | |
|
|
de69850731 | |
|
|
cd647f8666 | |
|
|
4a438fe907 | |
|
|
424ad6808e | |
|
|
4bda9ee2c1 | |
|
|
361859cd09 | |
|
|
ff9ef2285e | |
|
|
a76720d6a7 | |
|
|
37343b68d4 | |
|
|
fe221b1098 | |
|
|
8bd5e66f46 | |
|
|
4d8cd3e49e | |
|
|
5cf50dc362 | |
|
|
aa6643370a | |
|
|
1c06744220 | |
|
|
4c0f7a3867 | |
|
|
d8ee8a5fab | |
|
|
c147500fc6 | |
|
|
5c567c06f7 | |
|
|
8149621985 | |
|
|
d43693f3dd | |
|
|
4c21c1c072 | |
|
|
b24b25c094 | |
|
|
5177ff9d13 | |
|
|
c26944576f | |
|
|
8b516b44c9 | |
|
|
c28649d2c5 | |
|
|
92b2db3ce1 | |
|
|
53225568af | |
|
|
9d3283a292 | |
|
|
24656d52df | |
|
|
781103feda | |
|
|
d8e24b0f21 | |
|
|
bde97e4076 | |
|
|
b27f86384f | |
|
|
536ec594e5 | |
|
|
0d36359615 | |
|
|
d00174c680 | |
|
|
1b6ebc5baf | |
|
|
43e2197a2d | |
|
|
2de2054c1c | |
|
|
e76f9f3dd5 | |
|
|
f514155e83 | |
|
|
efa38fe4f4 | |
|
|
ad5804344c | |
|
|
ec62110c71 | |
|
|
abfa1f0b97 | |
|
|
add2537ecf | |
|
|
01c872f333 | |
|
|
4ee1775ccb | |
|
|
1e8bbd0c4b | |
|
|
90a20b2077 | |
|
|
a03a5a9b78 | |
|
|
2e902da2c8 | |
|
|
5dc6976d93 | |
|
|
84fb814a35 | |
|
|
8b9f12db85 | |
|
|
02b068c7dc | |
|
|
69d4a3f0ff | |
|
|
f88700e84c | |
|
|
a8142fc624 | |
|
|
d7b805a480 | |
|
|
d31122eb0d | |
|
|
b98cb2fc74 | |
|
|
9c0bdb68e7 | |
|
|
4ecffcedb0 | |
|
|
f600f84cbf | |
|
|
4b9ab4de5f | |
|
|
cfa3676e44 | |
|
|
d056f8c2ff | |
|
|
290252767f | |
|
|
7ca1219356 | |
|
|
1671b2fef1 | |
|
|
c7e2d5b03e | |
|
|
13c8e223b1 | |
|
|
5b7800fe2b | |
|
|
0ff916fbfc | |
|
|
1db08d9246 | |
|
|
426737aaa1 | |
|
|
5d88fa5ddf | |
|
|
2bea8728da | |
|
|
a75515c191 | |
|
|
e5ef11d6bb | |
|
|
7a7dcec05f | |
|
|
4671a99f68 | |
|
|
6369631ebe | |
|
|
86961f50a3 | |
|
|
121665d98c | |
|
|
521cc79dd0 | |
|
|
a7488f2a0b | |
|
|
978aeaf925 | |
|
|
4f504f8a2e | |
|
|
cf50e71d12 | |
|
|
44e0774f6c | |
|
|
8c62223f90 | |
|
|
174005d6bf | |
|
|
06b8497e9f | |
|
|
9e3f9f9e4a | |
|
|
b443562b7f | |
|
|
2ecea55887 | |
|
|
1bc589b8e5 | |
|
|
5f95ce2fea | |
|
|
1fd4285268 | |
|
|
c8acd0ad33 | |
|
|
ff42b7d352 | |
|
|
5fb4887191 | |
|
|
1cb87ee034 | |
|
|
95a1efe5f1 | |
|
|
6bc90ea76d | |
|
|
93d3d5d84f | |
|
|
eff5ddabd2 | |
|
|
0676d409a4 | |
|
|
38736b2a25 | |
|
|
1668a1ba2b | |
|
|
8bfe004d71 | |
|
|
cb92c04cef | |
|
|
25f6fddd2e | |
|
|
5c8e6db4e2 | |
|
|
910ade826f | |
|
|
bd7f646d6a | |
|
|
17f0e51a07 | |
|
|
56177f94f5 | |
|
|
b2fdf80be1 | |
|
|
93f2ef9d46 | |
|
|
e22be93ab3 | |
|
|
e06f54e61b | |
|
|
d9e2ec9ad9 | |
|
|
b2941dd4b6 | |
|
|
32c135ea5d | |
|
|
28324ddd40 | |
|
|
0c2fc7f5c5 | |
|
|
189b164be4 | |
|
|
9164d7c9c3 | |
|
|
ed6864004b | |
|
|
2326020f89 | |
|
|
02082d71fb | |
|
|
d9d63b86dd | |
|
|
d319f07192 | |
|
|
02d35e96c8 | |
|
|
ccc6802028 | |
|
|
5ff4eae241 | |
|
|
195b0ad2f7 | |
|
|
c1d19c5d07 | |
|
|
e86d57f4f6 | |
|
|
d54cf921c4 | |
|
|
d88b095b98 | |
|
|
d64a38fa0d | |
|
|
a47374aeaa | |
|
|
526bd40646 | |
|
|
6d8a0fb933 | |
|
|
f617cc22e8 | |
|
|
da398bb2bd | |
|
|
3f26352644 | |
|
|
85db25c305 | |
|
|
de815b0de8 | |
|
|
551dfa716f | |
|
|
b7bde85cd4 | |
|
|
b972f105f6 | |
|
|
c3aec9a912 | |
|
|
8f9d56fd0c | |
|
|
b7d92bc8b9 | |
|
|
5c4b85abf9 | |
|
|
ed01ef0e1c | |
|
|
a7854d8aec | |
|
|
950a88fce0 | |
|
|
1966c551e9 | |
|
|
bb87a24464 | |
|
|
f83c1f38f3 | |
|
|
e08a26481c | |
|
|
2ab73f7d6c | |
|
|
9daf872e57 | |
|
|
0991c0707e | |
|
|
b58da2de66 | |
|
|
329d927dac | |
|
|
b548cfa231 | |
|
|
34d2e868fc | |
|
|
701603faba | |
|
|
e8cf6df029 | |
|
|
f3a391e9c3 | |
|
|
450b4c921e | |
|
|
66d328ba2e | |
|
|
ff9052ca01 | |
|
|
dec5e41ab9 | |
|
|
514d16a313 | |
|
|
46da4fb095 | |
|
|
d6caaf43d6 | |
|
|
83ba419a06 | |
|
|
1ce265fe89 | |
|
|
3231cb7b06 | |
|
|
8fd0e83c6e | |
|
|
7978719237 | |
|
|
cedc2ca8e0 | |
|
|
102a5367d1 | |
|
|
e74023ce66 | |
|
|
8d4adefb0e | |
|
|
5c136aea57 | |
|
|
e1d830064c | |
|
|
2e7c309e79 | |
|
|
1383d84daf | |
|
|
2df6854dcf | |
|
|
c590975cdf | |
|
|
413fa5e8de | |
|
|
0bf5bb7762 | |
|
|
e0487ef70d | |
|
|
5f9f8d15bc | |
|
|
076f8dcb73 | |
|
|
aa23b5d444 | |
|
|
ed3c0ff23c | |
|
|
5fdad50316 | |
|
|
36b937e1c8 | |
|
|
2d8949661d | |
|
|
f37b3aea77 | |
|
|
ee012dcd36 | |
|
|
8566ac9631 | |
|
|
f14e3a55f5 | |
|
|
bd1d7c674f | |
|
|
ec4959c57e | |
|
|
198c6e18cc | |
|
|
05a7e82582 | |
|
|
7ee08a5c16 | |
|
|
9fd89c3073 | |
|
|
8c78f66cc5 | |
|
|
44ce6561ea | |
|
|
e41833dd26 | |
|
|
c087dfac50 | |
|
|
3e9c1b3d3d | |
|
|
db0af47418 | |
|
|
0b82f4f3df | |
|
|
dfcd025cab | |
|
|
c4e8729034 | |
|
|
89725e4676 | |
|
|
c74151e289 | |
|
|
c9e4ce31b2 | |
|
|
ffc1626261 | |
|
|
e4b80f60a4 | |
|
|
751e5b500f | |
|
|
a03d1d7a13 | |
|
|
adfd994f8e | |
|
|
09a33815a1 | |
|
|
6d7d7ce0d5 | |
|
|
475cb602ca | |
|
|
e91cc7cfd8 | |
|
|
7d3bdb7f53 | |
|
|
2634c0bb12 | |
|
|
7d881ad452 | |
|
|
fc279ff830 | |
|
|
acd4edb0b0 | |
|
|
7c3e5c735b | |
|
|
f677529e44 | |
|
|
b4821e5092 | |
|
|
57cbd94469 | |
|
|
13a7f49658 | |
|
|
04346551dc | |
|
|
2963723746 | |
|
|
9feeadb52f | |
|
|
88d43a8420 | |
|
|
f4ada2aa51 | |
|
|
0437d9d0cc | |
|
|
e07f1bc4c7 | |
|
|
4de0747168 | |
|
|
653c6497ae | |
|
|
a2710e044a | |
|
|
61e901ec10 | |
|
|
2955330e49 | |
|
|
d65fad3836 | |
|
|
164958df36 | |
|
|
510b34317d | |
|
|
3583aa29bc | |
|
|
6921c9516d | |
|
|
9e0c9ba942 | |
|
|
e5eafc25a0 | |
|
|
003542eef7 | |
|
|
fff5887126 | |
|
|
8cd740f054 | |
|
|
b8a7305bb1 | |
|
|
57bba753f6 | |
|
|
cdab26b0a5 | |
|
|
c27c0bd639 | |
|
|
a05ac59cc5 | |
|
|
18adec0295 | |
|
|
9c3158e258 | |
|
|
f0f7da8a16 | |
|
|
77e9ac6320 | |
|
|
5b8a8bc091 | |
|
|
c1adccb0aa | |
|
|
e66e99c048 | |
|
|
0932dfc6f8 | |
|
|
959f00cc46 | |
|
|
1814fdc286 | |
|
|
4e53ea0ab5 | |
|
|
b6f1c6728e | |
|
|
4ac860ad34 | |
|
|
65217e4529 | |
|
|
eedea7446d | |
|
|
cc35e79766 | |
|
|
3dd9b32f22 | |
|
|
aaeac485a4 | |
|
|
12c952a02a | |
|
|
96c098bd43 | |
|
|
0efa11390e | |
|
|
d46428592b | |
|
|
f9550ff6a3 | |
|
|
c2f2f9570a | |
|
|
81b56f76ce | |
|
|
cdbe0d77f1 | |
|
|
c156484de2 | |
|
|
4d2de70f45 | |
|
|
a41fda79da | |
|
|
13965dbf2a | |
|
|
82e547c256 | |
|
|
7ec019cd45 | |
|
|
3945e4e938 | |
|
|
67adc43433 | |
|
|
258413124e | |
|
|
0ed3e8325d | |
|
|
9f1eeb4a20 | |
|
|
6f41df9926 | |
|
|
dda2f34523 | |
|
|
936abbf453 | |
|
|
1c4a3c067a | |
|
|
85d0a980ec | |
|
|
bb5ca6a957 | |
|
|
d9b01a0a11 | |
|
|
7d26562277 | |
|
|
df7a5eefd4 | |
|
|
5f96ca2eac | |
|
|
9cc6ae25da | |
|
|
53de5363c3 | |
|
|
2dc6834e0b | |
|
|
efb8de3e69 | |
|
|
78080bc9fc | |
|
|
c82ec9e4b9 | |
|
|
fefc2c5ff4 | |
|
|
12fc36890a | |
|
|
4e05f3626f | |
|
|
d2a43e4f0e | |
|
|
39d582a88c | |
|
|
0d24afb9b8 | |
|
|
dbbd448168 | |
|
|
f5d8b44b8f | |
|
|
893e6612c0 | |
|
|
9f583dd486 | |
|
|
0def08bfd4 | |
|
|
83e331c500 | |
|
|
d04327c5e7 | |
|
|
df57b9f5fc | |
|
|
0473b89e7f | |
|
|
ce125de895 | |
|
|
740c2416d7 | |
|
|
e6f897dbf3 | |
|
|
315f8debee | |
|
|
19038d55a4 | |
|
|
0532bef3b3 | |
|
|
e582ca1f87 | |
|
|
fba5faa5ee | |
|
|
b4c30b7122 | |
|
|
cf90a60117 | |
|
|
42e6719241 | |
|
|
247561db66 | |
|
|
cc048431f6 | |
|
|
9661c34b4f | |
|
|
b92327e40c | |
|
|
67aaf98f87 | |
|
|
e58642e566 | |
|
|
27a583b521 | |
|
|
6422ecc4f2 | |
|
|
2a80bf833e | |
|
|
a614100b0c | |
|
|
6aa3289826 | |
|
|
ce6a8d2516 | |
|
|
677edba22e | |
|
|
bc11c84206 | |
|
|
ef64163e57 | |
|
|
b603cad5ae | |
|
|
542325c75c | |
|
|
9bb2c084c4 | |
|
|
293b11d779 | |
|
|
52c3450e32 | |
|
|
bc9b97aeba | |
|
|
410fcf438f | |
|
|
ae52ab9761 | |
|
|
4b3e520ec3 | |
|
|
788d4f32d9 | |
|
|
b2c70a479d | |
|
|
48f0cb7b1a | |
|
|
064be092e8 | |
|
|
e57d0e2575 | |
|
|
17fea79cc2 | |
|
|
1c5f90285b | |
|
|
2f58a44e31 | |
|
|
9e4fc869ad | |
|
|
cb4cfb59cb | |
|
|
911df3d1ca | |
|
|
c82364f886 | |
|
|
27d195ef39 | |
|
|
39b09a9202 | |
|
|
7bbfd61f63 | |
|
|
3adc437dbe | |
|
|
b437554fa7 | |
|
|
07d2438d5a | |
|
|
87d4d84107 | |
|
|
029b6d80de | |
|
|
df9eb0c4bf | |
|
|
071b14f02d | |
|
|
066bb0f67e | |
|
|
f0f01b7d6d | |
|
|
f9525efaf5 | |
|
|
05490de16b | |
|
|
d04c19ea4b | |
|
|
80405ddfbe | |
|
|
f63018b05a | |
|
|
46a1e4daf8 | |
|
|
a645f407bc | |
|
|
8a20397b6e | |
|
|
776906ebce | |
|
|
a81d9d7ee9 | |
|
|
3fa4ef6d44 | |
|
|
3477649d7f | |
|
|
abe92bfe8f | |
|
|
70410bfff3 | |
|
|
4bb4f89781 | |
|
|
a4fb5098ef | |
|
|
c0831a8f04 | |
|
|
8d012e9029 | |
|
|
0355fdf863 | |
|
|
9e561e645f | |
|
|
9e978a2f31 | |
|
|
edab3d2ec0 | |
|
|
1cc9746511 | |
|
|
dd45c90b4c | |
|
|
60e5b4efa0 | |
|
|
b168adc7fe | |
|
|
816c1dac8e | |
|
|
d443d3d35c | |
|
|
532b9924d4 | |
|
|
d60550683c | |
|
|
9bbee1cb8f | |
|
|
09bfca5217 | |
|
|
656497b0ea | |
|
|
6aedeffa30 | |
|
|
4042e3e742 | |
|
|
2d8067ea2d | |
|
|
b827246fcc | |
|
|
5a094d1a70 | |
|
|
76c175e61d | |
|
|
32d29727b4 | |
|
|
67c7a486cd | |
|
|
4c60ceda46 | |
|
|
57c05867d6 | |
|
|
4f6d3850f0 | |
|
|
9ee529c8c3 | |
|
|
6e232e6178 | |
|
|
c13d4f4429 | |
|
|
4741c548d6 | |
|
|
0d97d58edc | |
|
|
d932c8cbb5 | |
|
|
cc933ced82 | |
|
|
13f73de403 | |
|
|
031da68c8e | |
|
|
2b34308d8d | |
|
|
08e2238a49 | |
|
|
b07f6575ba | |
|
|
0c2b52efe7 | |
|
|
81e544c425 | |
|
|
9b1d9ced16 | |
|
|
100eae256f | |
|
|
000a74932b | |
|
|
899b66ae13 | |
|
|
388b9daac4 | |
|
|
9a1072d45a | |
|
|
e01ab2878d | |
|
|
fd612bd95a | |
|
|
dd6fe33121 | |
|
|
2c2f5d14fb | |
|
|
52f3acc285 | |
|
|
4e9c0cd4d4 | |
|
|
5f09f90a57 | |
|
|
163c6d6493 | |
|
|
33e2a270e3 | |
|
|
4ed73bb708 | |
|
|
fbdac77bb2 | |
|
|
e555fdc21f | |
|
|
2f2d6aadbb | |
|
|
734330823d | |
|
|
e538100409 | |
|
|
797f75140f | |
|
|
08e93f7562 | |
|
|
467d8acee5 | |
|
|
4808701c6e | |
|
|
d2b262fc39 | |
|
|
7ece36c006 | |
|
|
e6d1f593d2 | |
|
|
466bc0134b | |
|
|
aa2c0f4b9f | |
|
|
f9c898f859 | |
|
|
63aa34d2c2 | |
|
|
14d076c21d | |
|
|
64148764f5 | |
|
|
0dfef89ad3 | |
|
|
9af521b7cd | |
|
|
2a7fb28aac | |
|
|
0a4f26c296 | |
|
|
40fbd0cf05 | |
|
|
5a4827f034 | |
|
|
11b96ef7e5 | |
|
|
1e132a1b25 | |
|
|
18c15cc700 | |
|
|
b836fc6cb4 | |
|
|
1fce20a30a | |
|
|
f9c65faa0f | |
|
|
55316623a7 | |
|
|
577ba9bf82 | |
|
|
93bdd192ba | |
|
|
b1c9e4bd5e | |
|
|
1db63e3e19 | |
|
|
a1419159cc | |
|
|
510a3f4044 | |
|
|
3cf0cfd3e6 | |
|
|
efe31b9971 | |
|
|
b03fb01068 | |
|
|
054cceed87 | |
|
|
f771a917d8 | |
|
|
80eca0233b | |
|
|
b1f2c5ccaa | |
|
|
1118871aae | |
|
|
6c8b909f27 | |
|
|
6c5f7b2a5d | |
|
|
f645f82297 | |
|
|
dfaa93672c | |
|
|
ebdc42ad6b | |
|
|
3d6a26bc04 | |
|
|
dfb5679287 | |
|
|
c6c0f525c6 | |
|
|
671f1a36cc | |
|
|
7226d49c55 | |
|
|
25bd61db18 | |
|
|
b2d00b0c2d | |
|
|
f6ce731246 | |
|
|
f7dbfbadcc | |
|
|
c3593afd54 | |
|
|
ec74342e45 | |
|
|
9ed7eec4fb | |
|
|
6e868ed312 | |
|
|
872ba78513 | |
|
|
3a2613fa56 | |
|
|
e4b259aaad | |
|
|
5b942bf763 | |
|
|
965f278d3a | |
|
|
967aded9aa | |
|
|
f18c28ec93 | |
|
|
d819dc9d73 | |
|
|
f03b538abb |
|
|
@ -25,5 +25,6 @@ runs:
|
||||||
steps:
|
steps:
|
||||||
- name: Notify failure
|
- name: Notify failure
|
||||||
shell: sh
|
shell: sh
|
||||||
|
if: ${{ inputs.WEBHOOK_URL != '' }}
|
||||||
run: |
|
run: |
|
||||||
curl ${{ inputs.WEBHOOK_URL }} -H "Accept: application/json" -H "Content-Type:application/json" -X POST --data "{\"username\": \"${{ inputs.BOT_USERNAME }}\", \"avatar_url\": \"${{ inputs.BOT_AVATAR }}\", \"content\": \"${{ inputs.NOTIFY_MESSAGE }}\" }"
|
curl ${{ inputs.WEBHOOK_URL }} -H "Accept: application/json" -H "Content-Type:application/json" -X POST --data "{\"username\": \"${{ inputs.BOT_USERNAME }}\", \"avatar_url\": \"${{ inputs.BOT_AVATAR }}\", \"content\": \"${{ inputs.NOTIFY_MESSAGE }}\" }"
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
name: Notify success
|
||||||
|
description: Sends a notification that a workflow has finished
|
||||||
|
inputs:
|
||||||
|
DESTINATION_URL:
|
||||||
|
description: 'Webhook notification URL'
|
||||||
|
type: string
|
||||||
|
WORKFLOW_NAME:
|
||||||
|
description: 'Workflow name'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: "composite"
|
||||||
|
steps:
|
||||||
|
- name: Notify failure
|
||||||
|
if: ${{ inputs.DESTINATION_URL != '' }}
|
||||||
|
shell: sh
|
||||||
|
run: |
|
||||||
|
curl ${{ inputs.DESTINATION_URL }}/${{ inputs.WORKFLOW_NAME }}/${{ github.sha }}
|
||||||
|
|
@ -13,7 +13,8 @@ inputs:
|
||||||
runs:
|
runs:
|
||||||
using: "composite"
|
using: "composite"
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/upload-artifact@v3
|
- uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: ${{ inputs.DEST_NAME }}
|
name: ${{ inputs.DEST_NAME }}
|
||||||
path: ${{ inputs.SOURCE_FILE }}
|
path: ${{ inputs.SOURCE_FILE }}
|
||||||
|
if-no-files-found: error
|
||||||
|
|
|
||||||
|
|
@ -1,135 +0,0 @@
|
||||||
name: Build
|
|
||||||
|
|
||||||
on: [push, pull_request]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build_on_ubuntu:
|
|
||||||
name: Build ${{ matrix.config.plat }} (${{ matrix.config.bits }} bit) on Ubuntu
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
config:
|
|
||||||
- { plat: "Linux", bits: 64 }
|
|
||||||
- { plat: "Linux", bits: 32 }
|
|
||||||
- { plat: "Windows", bits: 64 }
|
|
||||||
- { plat: "Windows", bits: 32 }
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
|
|
||||||
- name: Install Shared Dependencies
|
|
||||||
run: |
|
|
||||||
sudo apt-get -y update &&
|
|
||||||
sudo apt-get -y install build-essential
|
|
||||||
|
|
||||||
# Install platform specific dependencies
|
|
||||||
- name: Install Dependencies for ${{ matrix.config.plat }} (${{ matrix.config.bits }} bit)
|
|
||||||
if: matrix.config.plat == 'Linux' && matrix.config.bits == 64
|
|
||||||
run: |
|
|
||||||
sudo apt-get -y install libx11-dev libxi-dev libgl1-mesa-dev
|
|
||||||
|
|
||||||
- name: Install Dependencies for ${{ matrix.config.plat }} (${{ matrix.config.bits }} bit)
|
|
||||||
if: matrix.config.plat == 'Linux' && matrix.config.bits == 32
|
|
||||||
run: |
|
|
||||||
sudo dpkg --add-architecture i386 \
|
|
||||||
&& sudo apt-get -y update \
|
|
||||||
&& sudo apt-get -y install gcc-multilib libx11-dev:i386 libxi-dev:i386 libgl1-mesa-dev:i386
|
|
||||||
|
|
||||||
- name: Install Dependencies for ${{ matrix.config.plat }} (${{ matrix.config.bits }} bit)
|
|
||||||
if: matrix.config.plat == 'Windows' && matrix.config.bits == 64
|
|
||||||
run: |
|
|
||||||
sudo apt-get -y install gcc-mingw-w64-x86-64
|
|
||||||
|
|
||||||
- name: Install Dependencies for ${{ matrix.config.plat }} (${{ matrix.config.bits }} bit)
|
|
||||||
if: matrix.config.plat == 'Windows' && matrix.config.bits == 32
|
|
||||||
run: |
|
|
||||||
sudo apt-get -y install gcc-mingw-w64-i686
|
|
||||||
|
|
||||||
# Build
|
|
||||||
- name: Build for ${{ matrix.config.plat }} (${{ matrix.config.bits }} bit)
|
|
||||||
if: matrix.config.plat == 'Linux' && matrix.config.bits == 64
|
|
||||||
run: |
|
|
||||||
cd src
|
|
||||||
make linux
|
|
||||||
|
|
||||||
- name: Build for ${{ matrix.config.plat }} (${{ matrix.config.bits }} bit)
|
|
||||||
if: matrix.config.plat == 'Linux' && matrix.config.bits == 32
|
|
||||||
run: |
|
|
||||||
cd src
|
|
||||||
# Note, this overwrites the previous flags
|
|
||||||
make linux CFLAGS="-m32" LDFLAGS="-m32"
|
|
||||||
|
|
||||||
- name: Build for ${{ matrix.config.plat }} (${{ matrix.config.bits }} bit)
|
|
||||||
if: matrix.config.plat == 'Windows' && matrix.config.bits == 64
|
|
||||||
run: |
|
|
||||||
cd src
|
|
||||||
make mingw CC="x86_64-w64-mingw32-gcc"
|
|
||||||
|
|
||||||
- name: Build for ${{ matrix.config.plat }} (${{ matrix.config.bits }} bit)
|
|
||||||
if: matrix.config.plat == 'Windows' && matrix.config.bits == 32
|
|
||||||
run: |
|
|
||||||
cd src
|
|
||||||
make mingw CC="i686-w64-mingw32-gcc"
|
|
||||||
|
|
||||||
build_on_windows:
|
|
||||||
name: Build ${{ matrix.config.plat }} (${{ matrix.config.bits }} bit) on Windows
|
|
||||||
runs-on: windows-latest
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
config:
|
|
||||||
- { plat: "Windows", bits: 64 }
|
|
||||||
- { plat: "Windows", bits: 32 }
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
|
|
||||||
- name: Setup MSBuild
|
|
||||||
uses: microsoft/setup-msbuild@v1.1
|
|
||||||
|
|
||||||
# Build
|
|
||||||
- name: Build for ${{ matrix.config.plat }} (${{ matrix.config.bits }} bit)
|
|
||||||
if: matrix.config.plat == 'Windows' && matrix.config.bits == 64
|
|
||||||
run: |
|
|
||||||
msbuild src\ClassiCube.vcxproj `
|
|
||||||
-property:Configuration=Debug -property:Platform=x64 `
|
|
||||||
-property:WindowsTargetPlatformVersion=10 -property:PlatformToolset=v142
|
|
||||||
|
|
||||||
- name: Build for ${{ matrix.config.plat }} (${{ matrix.config.bits }} bit)
|
|
||||||
if: matrix.config.plat == 'Windows' && matrix.config.bits == 32
|
|
||||||
run: |
|
|
||||||
msbuild src\ClassiCube.vcxproj `
|
|
||||||
-property:Configuration=Debug -property:Platform=Win32 `
|
|
||||||
-property:WindowsTargetPlatformVersion=10 -property:PlatformToolset=v142
|
|
||||||
|
|
||||||
build_on_mac:
|
|
||||||
name: Build ${{ matrix.config.plat }} (${{ matrix.config.bits }} bit) on Mac
|
|
||||||
runs-on: macOS-latest
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
config:
|
|
||||||
- { plat: "Mac", bits: 64 }
|
|
||||||
# "ld: warning: ignoring file ..., missing required architecture i386 in file ..."
|
|
||||||
# "Undefined symbols for architecture i386"
|
|
||||||
# - { plat: "Mac", bits: 32 }
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
|
|
||||||
# Build
|
|
||||||
- name: Build for ${{ matrix.config.plat }} (${{ matrix.config.bits }} bit)
|
|
||||||
if: matrix.config.plat == 'Mac' && matrix.config.bits == 64
|
|
||||||
run: |
|
|
||||||
cd src
|
|
||||||
make mac_x64
|
|
||||||
|
|
||||||
- name: Build for ${{ matrix.config.plat }} (${{ matrix.config.bits }} bit)
|
|
||||||
if: matrix.config.plat == 'Mac' && matrix.config.bits == 32
|
|
||||||
run: |
|
|
||||||
cd src
|
|
||||||
make mac_x32
|
|
||||||
|
|
@ -1,5 +1,11 @@
|
||||||
name: Build latest (3DS)
|
name: Build latest (3DS)
|
||||||
on: [push]
|
# trigger via either push to selected branches or on manual run
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.ref }}-3ds
|
group: ${{ github.ref }}-3ds
|
||||||
|
|
@ -7,24 +13,46 @@ concurrency:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-3DS:
|
build-3DS:
|
||||||
|
timeout-minutes: 10
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
container:
|
container:
|
||||||
image: devkitpro/devkitarm:latest
|
image: devkitpro/devkitarm:latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- name: Compile 3DS build
|
- name: Compile 3DS build
|
||||||
id: compile
|
id: compile
|
||||||
run: |
|
run: |
|
||||||
make 3ds
|
make 3ds
|
||||||
|
|
||||||
- uses: ./.github/actions/notify_failure
|
|
||||||
if: ${{ always() && steps.compile.outcome == 'failure' }}
|
|
||||||
with:
|
|
||||||
NOTIFY_MESSAGE: 'Failed to compile 3DS build'
|
|
||||||
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-3ds.cia'
|
||||||
|
DEST_NAME: 'ClassiCube-3ds.cia'
|
||||||
|
|
||||||
- uses: ./.github/actions/upload_build
|
- uses: ./.github/actions/upload_build
|
||||||
if: ${{ always() && steps.compile.outcome == 'success' }}
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
with:
|
with:
|
||||||
SOURCE_FILE: 'ClassiCube-3ds.3dsx'
|
SOURCE_FILE: 'ClassiCube-3ds.3dsx'
|
||||||
DEST_NAME: 'ClassiCube-3ds.3dsx'
|
DEST_NAME: 'ClassiCube-3ds.3dsx'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-3ds.elf'
|
||||||
|
DEST_NAME: 'ClassiCube-3ds.elf'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: '3ds'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce 3DS build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,122 @@
|
||||||
|
name: Build latest (Android2)
|
||||||
|
# trigger via either push to selected branches or on manual run
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-android
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: ghcr.io/saschpe/android-ndk:34-jdk17.0.8_7-ndk25.2.9519653-cmake3.22.1
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Retrieve dependencies
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
mkdir build-tools
|
||||||
|
wget https://github.com/ClassiCube/rpi-compiling-stuff/raw/main/build-tools.zip
|
||||||
|
unzip build-tools.zip -d build-tools
|
||||||
|
chmod +x build-tools/aapt
|
||||||
|
chmod +x build-tools/dx
|
||||||
|
chmod +x build-tools/zipalign
|
||||||
|
|
||||||
|
- name: Compile android builds
|
||||||
|
shell: bash
|
||||||
|
id: compile
|
||||||
|
env:
|
||||||
|
COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn -Werror"
|
||||||
|
DROID_FLAGS: "-fPIC -shared -fvisibility=hidden -rdynamic -funwind-tables"
|
||||||
|
LIBS: "-lGLESv2 -lEGL -lm -llog"
|
||||||
|
SRCS: "src/*.c src/android/*.c third_party/bearssl/*.c"
|
||||||
|
run: |
|
||||||
|
LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\"
|
||||||
|
|
||||||
|
DROID_FLAGS="-fPIC -shared -s -O1 -fvisibility=hidden -rdynamic -funwind-tables"
|
||||||
|
|
||||||
|
ROOT_DIR=$PWD
|
||||||
|
NDK_ROOT="/opt/android-sdk-linux/ndk/25.2.9519653/toolchains/llvm/prebuilt/linux-x86_64/bin"
|
||||||
|
TOOLS_ROOT=$ROOT_DIR/build-tools
|
||||||
|
SDK_ROOT="/opt/android-sdk-linux/platforms/android-34"
|
||||||
|
|
||||||
|
$NDK_ROOT/armv7a-linux-androideabi19-clang ${{ env.SRCS }} $COMMON_FLAGS $DROID_FLAGS -march=armv5 -rtlib=libgcc -L $ROOT_DIR/build-tools/runtime ${{ env.LIBS }} $LATEST_FLAG -o cc-droid-arm_16
|
||||||
|
$NDK_ROOT/armv7a-linux-androideabi19-clang ${{ env.SRCS }} $COMMON_FLAGS $DROID_FLAGS -mfpu=vfp3-d16 ${{ env.LIBS }} $LATEST_FLAG -o cc-droid-arm_32
|
||||||
|
$NDK_ROOT/aarch64-linux-android21-clang ${{ env.SRCS }} $COMMON_FLAGS $DROID_FLAGS ${{ env.LIBS }} $LATEST_FLAG -o cc-droid-arm_64
|
||||||
|
$NDK_ROOT/i686-linux-android21-clang ${{ env.SRCS }} $COMMON_FLAGS $DROID_FLAGS ${{ env.LIBS }} $LATEST_FLAG -o cc-droid-x86_32
|
||||||
|
$NDK_ROOT/x86_64-linux-android21-clang ${{ env.SRCS }} $COMMON_FLAGS $DROID_FLAGS ${{ env.LIBS }} $LATEST_FLAG -o cc-droid-x86_64
|
||||||
|
|
||||||
|
cd $ROOT_DIR/android/app/src/main
|
||||||
|
# copy required native libraries
|
||||||
|
mkdir lib lib/armeabi lib/armeabi-v7a lib/arm64-v8a lib/x86 lib/x86_64
|
||||||
|
cp $ROOT_DIR/cc-droid-arm_16 lib/armeabi/libclassicube.so
|
||||||
|
cp $ROOT_DIR/cc-droid-arm_32 lib/armeabi-v7a/libclassicube.so
|
||||||
|
cp $ROOT_DIR/cc-droid-arm_64 lib/arm64-v8a/libclassicube.so
|
||||||
|
cp $ROOT_DIR/cc-droid-x86_32 lib/x86/libclassicube.so
|
||||||
|
cp $ROOT_DIR/cc-droid-x86_64 lib/x86_64/libclassicube.so
|
||||||
|
|
||||||
|
# The following commands are for manually building an .apk, see
|
||||||
|
# https://spin.atomicobject.com/2011/08/22/building-android-application-bundles-apks-by-hand/
|
||||||
|
# https://github.com/cnlohr/rawdrawandroid/blob/master/Makefile
|
||||||
|
# https://stackoverflow.com/questions/41132753/how-can-i-build-an-android-apk-without-gradle-on-the-command-line
|
||||||
|
# https://github.com/skanti/Android-Manual-Build-Command-Line/blob/master/hello-jni/Makefile
|
||||||
|
# https://github.com/skanti/Android-Manual-Build-Command-Line/blob/master/hello-jni/CMakeLists.txt
|
||||||
|
|
||||||
|
# compile java files into multiple .class files
|
||||||
|
cd $ROOT_DIR/android/app/src/main/java/com/classicube
|
||||||
|
javac *.java -d $ROOT_DIR/android/app/src/main/obj -classpath $SDK_ROOT/android.jar --release 8
|
||||||
|
|
||||||
|
cd $ROOT_DIR/android/app/src/main
|
||||||
|
# get debug signing key
|
||||||
|
echo -n "${{ secrets.ANDROID_SIGNING_KEY_BASE64 }}" | base64 --decode > debug.keystore
|
||||||
|
|
||||||
|
# compile the multiple .class files into one .dex file
|
||||||
|
$TOOLS_ROOT/dx --dex --output=classes.dex ./obj
|
||||||
|
# create initial .apk with packaged version of resources
|
||||||
|
$TOOLS_ROOT/aapt package -f -M AndroidManifest.xml -S res -F cc-unsigned.apk -I $SDK_ROOT/android.jar
|
||||||
|
# and add all the required files
|
||||||
|
$TOOLS_ROOT/aapt add -f cc-unsigned.apk classes.dex lib/armeabi/libclassicube.so lib/armeabi-v7a/libclassicube.so lib/arm64-v8a/libclassicube.so lib/x86/libclassicube.so lib/x86_64/libclassicube.so
|
||||||
|
|
||||||
|
# sign the apk with debug key (https://stackoverflow.com/questions/16711233/)
|
||||||
|
# Note per https://developer.android.com/tools/zipalign
|
||||||
|
# - if using apksigner, zipalign must be called before apksigner
|
||||||
|
# - if using jarsigner, zipalign must be called after jarsigner
|
||||||
|
$TOOLS_ROOT/zipalign -f 4 cc-unsigned.apk cc-signed.apk
|
||||||
|
$TOOLS_ROOT/apksigner sign --ks debug.keystore --ks-pass pass:android cc-signed.apk
|
||||||
|
cp cc-signed.apk $ROOT_DIR/src/cc.apk
|
||||||
|
|
||||||
|
# old v1 only version (doesn't work properly now)
|
||||||
|
#cp cc-unsigned.apk cc-signed.apk
|
||||||
|
#jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore debug.keystore -storepass android -keypass android cc-signed.apk androiddebugkey
|
||||||
|
# jarsigner -verbose
|
||||||
|
# create aligned .apk file
|
||||||
|
#$TOOLS_ROOT/zipalign -f 4 cc-signed.apk $ROOT_DIR/src/cc.apk
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'src/cc.apk'
|
||||||
|
DEST_NAME: 'cc.apk'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'android'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce android build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
@ -0,0 +1,68 @@
|
||||||
|
name: Build latest (Dreamcast)
|
||||||
|
# trigger via either push to selected branches or on manual run
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-dreamcast
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: ghcr.io/kos-builds/kos-dc:sha-20149ee-14.2.0
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Install prerequisites
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
apt-get update
|
||||||
|
apt-get -y install genisoimage
|
||||||
|
wget https://github.com/ClassiCube/rpi-compiling-stuff/raw/main/cdi4dc -O /opt/toolchains/dc/kos/utils/cdi4dc
|
||||||
|
chmod +x /opt/toolchains/dc/kos/utils/cdi4dc
|
||||||
|
|
||||||
|
- name: Compile Dreamcast build
|
||||||
|
id: compile
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
export PATH=/opt/toolchains/dc/kos/utils/:$PATH
|
||||||
|
make dreamcast
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-dc.cdi'
|
||||||
|
DEST_NAME: 'ClassiCube-dc.cdi'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-dc.iso'
|
||||||
|
DEST_NAME: 'ClassiCube-dc.iso'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-dc.elf'
|
||||||
|
DEST_NAME: 'ClassiCube-dc.elf'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'dreamcast'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce Dreamcast build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
@ -0,0 +1,81 @@
|
||||||
|
name: Build latest (FreeBSD)
|
||||||
|
# trigger via either push to selected branches or on manual run
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-freebsd
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: empterdose/freebsd-cross-build:11.4
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Install prerequisites
|
||||||
|
run: apk add bash wget curl
|
||||||
|
|
||||||
|
- name: Retrieve OpenGL and X11 dev files (64 bit)
|
||||||
|
run: |
|
||||||
|
mkdir freebsd64
|
||||||
|
cd freebsd64
|
||||||
|
wget https://github.com/ClassiCube/rpi-compiling-stuff/raw/main/freebsd64.zip
|
||||||
|
unzip freebsd64.zip
|
||||||
|
|
||||||
|
- name: Retrieve OpenGL and X11 dev files (32 bit)
|
||||||
|
run: |
|
||||||
|
mkdir freebsd32
|
||||||
|
cd freebsd32
|
||||||
|
wget https://github.com/ClassiCube/rpi-compiling-stuff/raw/main/freebsd32.zip
|
||||||
|
unzip freebsd32.zip
|
||||||
|
|
||||||
|
- name: Compile FreeBSD builds
|
||||||
|
id: compile
|
||||||
|
shell: bash
|
||||||
|
env:
|
||||||
|
LIBS: "-lm -lpthread -lX11 -lXi -lGL -lexecinfo"
|
||||||
|
SRCS: "src/*.c third_party/bearssl/*.c"
|
||||||
|
FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn -Werror -fvisibility=hidden -rdynamic -Werror"
|
||||||
|
PLAT32_FLAGS: "-fno-pie -fcf-protection=none -I freebsd32/include -L freebsd32/lib"
|
||||||
|
PLAT64_FLAGS: "-fno-pie -fcf-protection=none -I freebsd64/include -L freebsd64/lib"
|
||||||
|
|
||||||
|
run: |
|
||||||
|
LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\"
|
||||||
|
|
||||||
|
i386-freebsd11-clang ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.PLAT32_FLAGS }} $LATEST_FLAG -o cc-fbsd32-gl1 ${{ env.LIBS }}
|
||||||
|
x86_64-freebsd11-clang ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.PLAT64_FLAGS }} $LATEST_FLAG -o cc-fbsd64-gl1 ${{ env.LIBS }}
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-fbsd32-gl1'
|
||||||
|
DEST_NAME: 'ClassiCube-FreeBSD-32'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-fbsd64-gl1'
|
||||||
|
DEST_NAME: 'ClassiCube-FreeBSD-64'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'freebsd'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce FreeBSD build(s)'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
@ -0,0 +1,48 @@
|
||||||
|
name: Build latest (GBA)
|
||||||
|
# trigger via either push to selected branches or on manual run
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-gba
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: devkitpro/devkitarm:latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Compile GBA build
|
||||||
|
id: compile
|
||||||
|
run: |
|
||||||
|
make gba
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-gba.gba'
|
||||||
|
DEST_NAME: 'ClassiCube-gba.gba'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-gba.elf'
|
||||||
|
DEST_NAME: 'ClassiCube-gba.elf'
|
||||||
|
|
||||||
|
|
||||||
|
# NOTE: Not uploaded to website downloads at present
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce GBA build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
@ -0,0 +1,52 @@
|
||||||
|
name: Build latest (GameCube)
|
||||||
|
# trigger via either push to selected branches or on manual run
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-gc
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: ghcr.io/extremscorner/libogc2:latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Compile GameCube build
|
||||||
|
id: compile
|
||||||
|
run: |
|
||||||
|
make gamecube
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-gc.dol'
|
||||||
|
DEST_NAME: 'ClassiCube-gc.dol'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-gc.elf'
|
||||||
|
DEST_NAME: 'ClassiCube-gc.elf'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'gc'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce GameCube build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
@ -1,31 +1,51 @@
|
||||||
name: Build latest (Haiku)
|
name: Build latest (Haiku)
|
||||||
on: [push]
|
# trigger via either push to selected branches or on manual run
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.ref }}-haiku
|
group: ${{ github.ref }}-haiku
|
||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-haiku:
|
build:
|
||||||
|
timeout-minutes: 10
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
container:
|
container:
|
||||||
image: haiku/cross-compiler:x86_64-r1beta4
|
image: haiku/cross-compiler:x86_64-r1beta4
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Compile haiku build
|
- name: Compile haiku build
|
||||||
id: compile
|
id: compile
|
||||||
|
env:
|
||||||
|
LIBS: "-lm -lGL -lnetwork -lstdc++ -lbe -lgame -ltracker"
|
||||||
|
SRCS: "src/*.c src/Platform_BeOS.cpp src/Window_BeOS.cpp third_party/bearssl/*.c"
|
||||||
|
COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn -Werror"
|
||||||
run: |
|
run: |
|
||||||
cd src
|
x86_64-unknown-haiku-gcc ${{ env.SRCS }} -o ClassiCube-haiku ${{ env.COMMON_FLAGS }} ${{ env.LIBS }}
|
||||||
x86_64-unknown-haiku-gcc *.c interop_BeOS.cpp -o ClassiCube-haiku -O1 -s -fno-stack-protector -fno-math-errno -Qn -lm -lGL -lnetwork -lstdc++ -lbe -lgame -ltracker
|
|
||||||
|
|
||||||
- uses: ./.github/actions/notify_failure
|
|
||||||
if: ${{ always() && steps.compile.outcome == 'failure' }}
|
|
||||||
with:
|
|
||||||
NOTIFY_MESSAGE: 'Failed to compile Haiku build'
|
|
||||||
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
|
||||||
|
|
||||||
- uses: ./.github/actions/upload_build
|
- uses: ./.github/actions/upload_build
|
||||||
if: ${{ always() && steps.compile.outcome == 'success' }}
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
with:
|
with:
|
||||||
SOURCE_FILE: 'src/ClassiCube-haiku'
|
SOURCE_FILE: 'ClassiCube-haiku'
|
||||||
DEST_NAME: 'ClassiCube-haiku'
|
DEST_NAME: 'ClassiCube-haiku'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'haiku'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce Haiku build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,49 @@
|
||||||
|
name: Build latest (iOS)
|
||||||
|
# trigger via either push to selected branches or on manual run
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-ios
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: macOS-14
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Compile iOS build
|
||||||
|
id: compile
|
||||||
|
run: |
|
||||||
|
cd misc/ios
|
||||||
|
sudo xcode-select -s /Applications/Xcode_15.0.1.app/Contents/Developer
|
||||||
|
xcodebuild -sdk iphoneos -configuration Release CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO
|
||||||
|
cd build/Release-iphoneos
|
||||||
|
mkdir Payload
|
||||||
|
mv ClassiCube.app Payload/ClassiCube.app
|
||||||
|
zip -r cc.ipa Payload
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'misc/ios/build/Release-iphoneos/cc.ipa'
|
||||||
|
DEST_NAME: 'cc.ipa'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'ios'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce iOS build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
@ -0,0 +1,150 @@
|
||||||
|
name: Build latest (Linux)
|
||||||
|
# trigger via either push to selected branches or on manual run
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
- ModernLighting
|
||||||
|
- AngledLighting
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-linux
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
#============================================
|
||||||
|
# =============== 32 BIT LINUX ==============
|
||||||
|
# ===========================================
|
||||||
|
build-32:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: ubuntu:20.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Install packages
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
apt-get -y update
|
||||||
|
apt-get -y install gcc-multilib wget curl unzip
|
||||||
|
|
||||||
|
- name: Retrieve dependencies
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
wget https://github.com/ClassiCube/rpi-compiling-stuff/raw/main/linux32.zip
|
||||||
|
unzip linux32.zip
|
||||||
|
|
||||||
|
- name: Compile 32 bit Linux builds
|
||||||
|
shell: bash
|
||||||
|
id: compile
|
||||||
|
env:
|
||||||
|
LIBS: "-lX11 -lXi -lpthread -lGL -lm -ldl"
|
||||||
|
SRCS: "src/*.c third_party/bearssl/*.c"
|
||||||
|
FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn -Werror -fvisibility=hidden -rdynamic -Werror"
|
||||||
|
NIX32_FLAGS: "-no-pie -fno-pie -m32 -fcf-protection=none -L ./lib -Wl,--unresolved-symbols=ignore-in-shared-libs"
|
||||||
|
run: |
|
||||||
|
LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\"
|
||||||
|
|
||||||
|
gcc ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.NIX32_FLAGS }} $LATEST_FLAG -o cc-nix32-gl1 ${{ env.LIBS }}
|
||||||
|
gcc ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.NIX32_FLAGS }} $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL2 -o cc-nix32-gl2 ${{ env.LIBS }}
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-nix32-gl1'
|
||||||
|
DEST_NAME: 'ClassiCube-Linux32-OpenGL'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-nix32-gl2'
|
||||||
|
DEST_NAME: 'ClassiCube-Linux32-ModernGL'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'linux32'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce 32 bit Linux build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
||||||
|
#============================================
|
||||||
|
# =============== 64 BIT LINUX ==============
|
||||||
|
# ===========================================
|
||||||
|
build-64:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: ubuntu:20.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Install packages
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
apt-get -y update
|
||||||
|
apt-get -y install gcc wget curl unzip
|
||||||
|
|
||||||
|
- name: Retrieve dependencies
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
wget https://github.com/ClassiCube/rpi-compiling-stuff/raw/main/linux64.zip
|
||||||
|
unzip linux64.zip
|
||||||
|
|
||||||
|
- name: Compile 64 bit Linux builds
|
||||||
|
shell: bash
|
||||||
|
id: compile
|
||||||
|
env:
|
||||||
|
LIBS: "-lX11 -lXi -lpthread -lGL -lm -ldl"
|
||||||
|
SRCS: "src/*.c third_party/bearssl/*.c"
|
||||||
|
FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn -Werror -fvisibility=hidden -rdynamic -Werror"
|
||||||
|
NIX64_FLAGS: "-no-pie -fno-pie -m64 -fcf-protection=none -rdynamic -L ./lib -Wl,--unresolved-symbols=ignore-in-shared-libs"
|
||||||
|
run: |
|
||||||
|
LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\"
|
||||||
|
|
||||||
|
gcc ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.NIX64_FLAGS }} $LATEST_FLAG -o cc-nix64-gl1 ${{ env.LIBS }}
|
||||||
|
gcc ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.NIX64_FLAGS }} $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL2 -o cc-nix64-gl2 ${{ env.LIBS }}
|
||||||
|
#gcc ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.NIX64_FLAGS }} $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL2 -DCC_WIN_BACKEND=CC_WIN_BACKEND_SDL2 -o cc-sdl64-gl2 -lSDL2 ${{ env.LIBS }}
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-nix64-gl1'
|
||||||
|
DEST_NAME: 'ClassiCube-Linux64-OpenGL'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-nix64-gl2'
|
||||||
|
DEST_NAME: 'ClassiCube-Linux64-ModernGL'
|
||||||
|
|
||||||
|
# - uses: ./.github/actions/upload_build
|
||||||
|
# if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
# with:
|
||||||
|
# SOURCE_FILE: 'cc-sdl64-gl2'
|
||||||
|
# DEST_NAME: 'ClassiCube-Linux64-SDL2'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'linux64'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce 64 bit Linux build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
@ -0,0 +1,99 @@
|
||||||
|
name: Build latest (macOS 32 bit)
|
||||||
|
# trigger via either push to selected branches or on manual run
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-mac32
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: ghcr.io/classicube/minimal-osxcross:latest
|
||||||
|
credentials:
|
||||||
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Compile 32 bit macOS builds
|
||||||
|
shell: bash
|
||||||
|
id: compile
|
||||||
|
env:
|
||||||
|
LIBS: "-framework Security -framework Cocoa -framework OpenGL -framework IOKit -lobjc -lgcc_s.1"
|
||||||
|
SRCS: "src/*.c src/Window_cocoa.m third_party/bearssl/*.c"
|
||||||
|
FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn -fvisibility=hidden -rdynamic"
|
||||||
|
run: |
|
||||||
|
LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\"
|
||||||
|
|
||||||
|
PATH=$PATH:/usr/local/compiler/target/bin
|
||||||
|
i386-apple-darwin8-clang ${{ env.SRCS }} ${{ env.FLAGS }} $LATEST_FLAG -o cc-mac32-gl1 ${{ env.LIBS }}
|
||||||
|
i386-apple-darwin8-clang ${{ env.SRCS }} ${{ env.FLAGS }} $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL2 -o cc-mac32-gl2 ${{ env.LIBS }}
|
||||||
|
|
||||||
|
- name: Compile 32 bit macOS builds (PowerPC)
|
||||||
|
shell: bash
|
||||||
|
id: compile_ppc
|
||||||
|
env:
|
||||||
|
LIBS: "-framework Security -framework Cocoa -framework OpenGL -framework IOKit -lobjc"
|
||||||
|
SRCS: "src/*.c src/Window_cocoa.m third_party/bearssl/*.c"
|
||||||
|
FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn -fvisibility=hidden -static-libgcc -Wl,-no_compact_unwind -isystem /usr/local/compiler/ppc/target/SDK/MacOSX10.5.sdk -Wl,-syslibroot /usr/local/compiler/ppc/target/SDK/MacOSX10.5.sdk"
|
||||||
|
run: |
|
||||||
|
LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\"
|
||||||
|
|
||||||
|
mkdir -p /home/minty/repos/osxcross-ppc-test/target/bin
|
||||||
|
ln -s /usr/local/compiler/ppc/target/bin/powerpc64-apple-darwin9-as /home/minty/repos/osxcross-ppc-test/target/bin/powerpc64-apple-darwin9-as
|
||||||
|
PATH=$PATH:/usr/local/compiler/ppc/target/bin
|
||||||
|
powerpc-apple-darwin9-base-gcc *${{ env.SRCS }} ${{ env.FLAGS }} $LATEST_FLAG -o cc-mac32-ppc -mmacosx-version-min=10.2.0 -m32 ${{ env.LIBS }}
|
||||||
|
|
||||||
|
- name: Generate combined Intel + PowerPC build
|
||||||
|
shell: bash
|
||||||
|
id: gen_universal
|
||||||
|
run: |
|
||||||
|
PATH=$PATH:/usr/local/compiler/target/bin
|
||||||
|
i386-apple-darwin8-lipo -create -output cc-mac32-universal cc-mac32-gl1 cc-mac32-ppc
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-mac32-gl1'
|
||||||
|
DEST_NAME: 'ClassiCube-mac32-OpenGL'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-mac32-gl2'
|
||||||
|
DEST_NAME: 'ClassiCube-mac32-ModernGL'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile_ppc.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-mac32-ppc'
|
||||||
|
DEST_NAME: 'ClassiCube-mac32-PPC'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.gen_universal.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-mac32-universal'
|
||||||
|
DEST_NAME: 'ClassiCube-mac32'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'mac32'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce 32 bit macOS build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
@ -0,0 +1,71 @@
|
||||||
|
name: Build latest (macOS 64 bit)
|
||||||
|
# trigger via either push to selected branches or on manual run
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
- AngledLighting
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-mac64
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: macOS-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Compile 64 bit macOS builds
|
||||||
|
shell: bash
|
||||||
|
id: compile
|
||||||
|
env:
|
||||||
|
LIBS: "-framework Security -framework Cocoa -framework OpenGL -framework IOKit -lobjc"
|
||||||
|
SRCS: "src/*.c src/Window_cocoa.m third_party/bearssl/*.c"
|
||||||
|
FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn -fvisibility=hidden -rdynamic"
|
||||||
|
ARM64_FLAGS: "-DCC_GFX_BACKEND=CC_GFX_BACKEND_GL2 -arch arm64"
|
||||||
|
INTEL64_FLAGS: "-arch x86_64"
|
||||||
|
run: |
|
||||||
|
LATEST_FLAG=-DCC_COMMIT_SHA=\"$(git rev-parse --short "$GITHUB_SHA")\"
|
||||||
|
|
||||||
|
MACOSX_DEPLOYMENT_TARGET=10.5 clang ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.INTEL64_FLAGS }} $LATEST_FLAG -o cc-mac64-gl1 ${{ env.LIBS }}
|
||||||
|
MACOSX_DEPLOYMENT_TARGET=10.5 clang ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.INTEL64_FLAGS }} $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL2 -o cc-mac64-gl2 ${{ env.LIBS }}
|
||||||
|
|
||||||
|
clang ${{ env.SRCS }} ${{ env.COMMON_FLAGS }} ${{ env.ARM64_FLAGS }} $LATEST_FLAG -o cc-mac-arm64 ${{ env.LIBS }}
|
||||||
|
# https://wiki.freepascal.org/Code_Signing_for_macOS#Ad_hoc_signing
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-mac64-gl1'
|
||||||
|
DEST_NAME: 'ClassiCube-mac64-OpenGL'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-mac64-gl2'
|
||||||
|
DEST_NAME: 'ClassiCube-mac64-ModernGL'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-mac-arm64'
|
||||||
|
DEST_NAME: 'ClassiCube-mac-ARM64'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'mac64'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce 64 bit macOS builds'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
@ -0,0 +1,60 @@
|
||||||
|
name: Build latest (Mac Classic)
|
||||||
|
# trigger via either push to selected branches or on manual run
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-mac-classic
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: ghcr.io/autc04/retro68
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Compile Mac classic build
|
||||||
|
id: compile
|
||||||
|
run: |
|
||||||
|
make macclassic_ppc RETRO68=/Retro68-build/toolchain
|
||||||
|
make macclassic_68k RETRO68=/Retro68-build/toolchain
|
||||||
|
make macclassic_68k RETRO68=/Retro68-build/toolchain ARCH_68040=1
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-ppc.dsk'
|
||||||
|
DEST_NAME: 'ClassiCube-ppc.dsk'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-68k.dsk'
|
||||||
|
DEST_NAME: 'ClassiCube-68k.dsk'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-68040.dsk'
|
||||||
|
DEST_NAME: 'ClassiCube-68040.dsk'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'macclassic'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce Mac Classic build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
@ -0,0 +1,51 @@
|
||||||
|
name: Build latest (MS DOS)
|
||||||
|
# trigger via either push to selected branches or on manual run
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-msdos
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: ghcr.io/volkertb/debian-djgpp
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Install prerequisites
|
||||||
|
run: |
|
||||||
|
apt-get update
|
||||||
|
apt-get -y install curl
|
||||||
|
|
||||||
|
- name: Compile MS dos build
|
||||||
|
id: compile
|
||||||
|
run: |
|
||||||
|
make CC=gcc dos
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'CCDOS.EXE'
|
||||||
|
DEST_NAME: 'ClassiCube.exe'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'msdos'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce MS DOS build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
@ -0,0 +1,64 @@
|
||||||
|
name: Build latest (N64)
|
||||||
|
# trigger via either push to selected branches or on manual run
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-n64
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: ghcr.io/dragonminded/libdragon:preview
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Install prerequisites
|
||||||
|
run: |
|
||||||
|
apt-get update
|
||||||
|
apt-get -y install curl
|
||||||
|
|
||||||
|
- name: Compile N64 build
|
||||||
|
id: compile
|
||||||
|
run: |
|
||||||
|
REAL_DIR=`pwd`
|
||||||
|
cd /tmp
|
||||||
|
git clone -b opengl https://github.com/DragonMinded/libdragon.git --depth=1
|
||||||
|
cd libdragon
|
||||||
|
make install
|
||||||
|
make tools-install
|
||||||
|
cd $REAL_DIR
|
||||||
|
make n64
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'build-n64/ClassiCube-n64.elf'
|
||||||
|
DEST_NAME: 'ClassiCube-n64.elf'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-n64.z64'
|
||||||
|
DEST_NAME: 'ClassiCube-n64.z64'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'n64'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce N64 build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
@ -0,0 +1,71 @@
|
||||||
|
name: Build latest (NDS)
|
||||||
|
# trigger via either push to selected branches or on manual run
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-nds
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: skylyrac/blocksds:dev-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Install prerequisites
|
||||||
|
run: |
|
||||||
|
apt-get update
|
||||||
|
apt-get -y install curl
|
||||||
|
|
||||||
|
- name: Compile NDS build
|
||||||
|
id: compile
|
||||||
|
run: |
|
||||||
|
make ds
|
||||||
|
export BUILD_NONET=1
|
||||||
|
make ds
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube.nds'
|
||||||
|
DEST_NAME: 'ClassiCube.nds'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'build/nds/cc-arm9.elf'
|
||||||
|
DEST_NAME: 'ClassiCube.elf'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-nonet.nds'
|
||||||
|
DEST_NAME: 'ClassiCube-nonet.nds'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'build/nds_nonet/cc-arm9.elf'
|
||||||
|
DEST_NAME: 'ClassiCube-nonet.elf'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'nds'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce NDS build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
@ -0,0 +1,66 @@
|
||||||
|
name: Build latest (NetBSD)
|
||||||
|
# trigger via either push to selected branches or on manual run
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-netbsd
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: ghcr.io/cross-rs/x86_64-unknown-netbsd:edge
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Install prerequisites
|
||||||
|
run: |
|
||||||
|
apt-get update
|
||||||
|
apt-get -y install zip wget
|
||||||
|
|
||||||
|
- name: Retrieve OpenGL and X11 dev files (64 bit)
|
||||||
|
run: |
|
||||||
|
mkdir netbsd64
|
||||||
|
cd netbsd64
|
||||||
|
wget https://github.com/ClassiCube/rpi-compiling-stuff/raw/main/netbsd64.zip
|
||||||
|
unzip netbsd64.zip
|
||||||
|
|
||||||
|
- name: Compile NetBSD builds
|
||||||
|
id: compile
|
||||||
|
shell: bash
|
||||||
|
env:
|
||||||
|
LIBS: "-lm -lpthread -lX11 -lXi -lGL -lexecinfo"
|
||||||
|
SRCS: "src/*.c third_party/bearssl/*.c"
|
||||||
|
FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn -Werror -Wl,-R/usr/X11R7/lib -fvisibility=hidden -rdynamic -Werror"
|
||||||
|
PLAT64_FLAGS: "-fno-pie -fcf-protection=none -I netbsd64/include -L netbsd64/lib -Wl,--unresolved-symbols=ignore-in-shared-libs"
|
||||||
|
run: |
|
||||||
|
LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\"
|
||||||
|
|
||||||
|
x86_64-unknown-netbsd-gcc ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.PLAT64_FLAGS }} $LATEST_FLAG -o cc-netbsd64-gl1 ${{ env.LIBS }}
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-netbsd64-gl1'
|
||||||
|
DEST_NAME: 'ClassiCube-NetBSD-64'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'netbsd'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce NetBSD build(s)'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
@ -0,0 +1,70 @@
|
||||||
|
name: Build latest (PS1)
|
||||||
|
# trigger via either push to selected branches or on manual run
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-ps1
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-PS1:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: ghcr.io/classicube/minimal-psn00b:latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Install prerequisites
|
||||||
|
run: |
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y curl
|
||||||
|
|
||||||
|
- name: Compile PS1 build
|
||||||
|
id: compile
|
||||||
|
run: |
|
||||||
|
export PSN00BSDK_ROOT=/usr/local/psnoob
|
||||||
|
make ps1
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'build/ps1/ClassiCube-ps1.elf'
|
||||||
|
DEST_NAME: 'ClassiCube-PS1.elf'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-ps1.exe'
|
||||||
|
DEST_NAME: 'ClassiCube-PS1.exe'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-ps1.bin'
|
||||||
|
DEST_NAME: 'ClassiCube-PS1.bin'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-ps1.cue'
|
||||||
|
DEST_NAME: 'ClassiCube-PS1.cue'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'ps1'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce PS1 build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
@ -0,0 +1,56 @@
|
||||||
|
name: Build latest (PS2)
|
||||||
|
# trigger via either push to selected branches or on manual run
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-ps2
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: ghcr.io/ps2dev/ps2sdk:latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Install prerequisites
|
||||||
|
run: |
|
||||||
|
apk add make mpc1 curl
|
||||||
|
|
||||||
|
- name: Compile PS2 build
|
||||||
|
id: compile
|
||||||
|
run: |
|
||||||
|
make ps2
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-ps2.elf'
|
||||||
|
DEST_NAME: 'ClassiCube-ps2.elf'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-ps2-min.elf'
|
||||||
|
DEST_NAME: 'ClassiCube-ps2-min.elf'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'ps2'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce PS2 build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
@ -0,0 +1,67 @@
|
||||||
|
name: Build latest (PS3)
|
||||||
|
# trigger via either push to selected branches or on manual run
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-ps3
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-PS3:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: ghcr.io/classicube/minimal-psl1ght:latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Install prerequisites
|
||||||
|
run: |
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y curl
|
||||||
|
|
||||||
|
- name: Compile PS3 build
|
||||||
|
id: compile
|
||||||
|
run: |
|
||||||
|
export PS3DEV=/usr/local/ps3dev
|
||||||
|
export PSL1GHT=/usr/local/ps3dev
|
||||||
|
export PATH=$PATH:$PS3DEV/bin
|
||||||
|
export PATH=$PATH:$PS3DEV/ppu/bin
|
||||||
|
make ps3
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-PS3.elf'
|
||||||
|
DEST_NAME: 'ClassiCube-PS3.elf'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-PS3.self'
|
||||||
|
DEST_NAME: 'ClassiCube-PS3.self'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-PS3.pkg'
|
||||||
|
DEST_NAME: 'ClassiCube-PS3.pkg'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'ps3'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce PS3 build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
@ -1,30 +1,56 @@
|
||||||
name: Build latest (PSP)
|
name: Build latest (PSP)
|
||||||
on: [push]
|
# trigger via either push to selected branches or on manual run
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.ref }}-psp
|
group: ${{ github.ref }}-psp
|
||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-PSP:
|
build:
|
||||||
|
timeout-minutes: 10
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
container:
|
container:
|
||||||
image: pspdev/pspdev:latest
|
image: pspdev/pspdev:latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
|
- name: Install prerequisites
|
||||||
|
run: |
|
||||||
|
apk add curl curl-dev
|
||||||
|
|
||||||
- name: Compile PSP build
|
- name: Compile PSP build
|
||||||
id: compile
|
id: compile
|
||||||
run: |
|
run: |
|
||||||
make psp
|
make psp
|
||||||
|
|
||||||
- uses: ./.github/actions/notify_failure
|
|
||||||
if: ${{ always() && steps.compile.outcome == 'failure' }}
|
|
||||||
with:
|
|
||||||
NOTIFY_MESSAGE: 'Failed to compile PSP build'
|
|
||||||
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
|
||||||
|
|
||||||
- uses: ./.github/actions/upload_build
|
- uses: ./.github/actions/upload_build
|
||||||
if: ${{ always() && steps.compile.outcome == 'success' }}
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
with:
|
with:
|
||||||
SOURCE_FILE: 'EBOOT.PBP'
|
SOURCE_FILE: 'EBOOT.PBP'
|
||||||
DEST_NAME: 'EBOOT.PBP'
|
DEST_NAME: 'EBOOT.PBP'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-psp.elf'
|
||||||
|
DEST_NAME: 'ClassiCube-psp.elf'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'psp'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce PSP build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,116 @@
|
||||||
|
name: Build latest (RPI)
|
||||||
|
# trigger via either push to selected branches or on manual run
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-rpi
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
#============================================
|
||||||
|
# ================ 32 BIT RPI ===============
|
||||||
|
# ===========================================
|
||||||
|
build-RPI32:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: dockcross/linux-armv6-lts
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Retrieve OpenGL and X11 dev files
|
||||||
|
run: |
|
||||||
|
mkdir rpi
|
||||||
|
cd rpi
|
||||||
|
wget https://github.com/ClassiCube/rpi-compiling-stuff/raw/main/rpi32.zip
|
||||||
|
unzip rpi32.zip
|
||||||
|
|
||||||
|
- name: Compile RPI 32 bit build
|
||||||
|
id: compile
|
||||||
|
env:
|
||||||
|
LIBS: "-lGLESv2 -lEGL -lX11 -lXi -lm -lpthread -ldl -lrt"
|
||||||
|
SRCS: "src/*.c third_party/bearssl/*.c"
|
||||||
|
FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn -Werror -fvisibility=hidden -rdynamic"
|
||||||
|
RPI32_FLAGS: "-DCC_BUILD_RPI -I rpi/include -L rpi/lib -Wl,--unresolved-symbols=ignore-in-shared-libs"
|
||||||
|
run: |
|
||||||
|
LATEST_FLAG=-DCC_COMMIT_SHA=\"$GITHUB_SHA\"
|
||||||
|
|
||||||
|
$CC ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.RPI32_FLAGS }} $LATEST_FLAG -o cc-rpi32 ${{ env.LIBS }}
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-rpi32'
|
||||||
|
DEST_NAME: 'cc-rpi32'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'rpi32'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce RPI 32 bit build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
||||||
|
|
||||||
|
#============================================
|
||||||
|
# ================ 64 BIT RPI ===============
|
||||||
|
# ===========================================
|
||||||
|
build-RPI64:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: dockcross/linux-arm64-lts
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Retrieve OpenGL and X11 dev files
|
||||||
|
run: |
|
||||||
|
mkdir rpi
|
||||||
|
cd rpi
|
||||||
|
wget https://github.com/ClassiCube/rpi-compiling-stuff/raw/main/rpi64.zip
|
||||||
|
unzip rpi64.zip
|
||||||
|
|
||||||
|
- name: Compile RPI 64 bit build
|
||||||
|
id: compile
|
||||||
|
env:
|
||||||
|
LIBS: "-lGLESv2 -lEGL -lX11 -lXi -lm -lpthread -ldl -lrt"
|
||||||
|
SRCS: "src/*.c third_party/bearssl/*.c"
|
||||||
|
FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn -Werror -fvisibility=hidden -rdynamic"
|
||||||
|
RPI64_FLAGS: "-DCC_BUILD_RPI -I rpi/include -L rpi/lib -Wl,--unresolved-symbols=ignore-in-shared-libs"
|
||||||
|
run: |
|
||||||
|
LATEST_FLAG=-DCC_COMMIT_SHA=\"$GITHUB_SHA\"
|
||||||
|
|
||||||
|
$CC ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.RPI64_FLAGS }} $LATEST_FLAG -o cc-rpi64 ${{ env.LIBS }}
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-rpi64'
|
||||||
|
DEST_NAME: 'cc-rpi64'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'rpi64'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce RPI 64 bit build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
@ -0,0 +1,63 @@
|
||||||
|
name: Build latest (Saturn)
|
||||||
|
# trigger via either push to selected branches or on manual run
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-saturn
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: ijacquez/yaul:latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Install prerequisites
|
||||||
|
run: |
|
||||||
|
apt-get --allow-releaseinfo-change update
|
||||||
|
apt-get install -y curl
|
||||||
|
|
||||||
|
- name: Compile Saturn build
|
||||||
|
id: compile
|
||||||
|
run: |
|
||||||
|
make saturn
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'build/saturn/ClassiCube-saturn.elf'
|
||||||
|
DEST_NAME: 'ClassiCube-saturn.elf'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-saturn.iso'
|
||||||
|
DEST_NAME: 'ClassiCube-saturn.iso'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-saturn.cue'
|
||||||
|
DEST_NAME: 'ClassiCube-saturn.cue'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'saturn'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce Saturn build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
@ -0,0 +1,52 @@
|
||||||
|
name: Build latest (Switch)
|
||||||
|
# trigger via either push to selected branches or on manual run
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-switch
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: devkitpro/devkita64:latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Compile Switch build
|
||||||
|
id: compile
|
||||||
|
run: |
|
||||||
|
make switch
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-switch.nro'
|
||||||
|
DEST_NAME: 'ClassiCube-switch.nro'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-switch.elf'
|
||||||
|
DEST_NAME: 'ClassiCube-switch.elf'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'switch'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce Switch build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
@ -0,0 +1,82 @@
|
||||||
|
name: Build latest (Symbian)
|
||||||
|
# trigger via either push to selected branches or on manual run
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
- ModernLighting
|
||||||
|
- AngledLighting
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-symbian
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: windows-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Download Symbian SDK
|
||||||
|
run: Invoke-WebRequest https://nnp.nnchan.ru/dl/symbiansr1_gcce_workflow.zip -OutFile symbiansdk.zip
|
||||||
|
- name: Extract Symbian SDK
|
||||||
|
run: Expand-Archive symbiansdk.zip -DestinationPath .
|
||||||
|
|
||||||
|
- name: Compile Symbian build
|
||||||
|
id: compile
|
||||||
|
run: |
|
||||||
|
$SDK = "$pwd/SDK/"
|
||||||
|
$Env:EPOCROOT = "$SDK".Substring(2)
|
||||||
|
$Env:SBS_GCCE441BIN = "$pwd/GCCE/bin"
|
||||||
|
cmd /c "$SDK/epoc32/tools/sbs\bin\sbs.bat -b misc/symbian/bld.inf -c armv5_urel_gcce -f - -m $SDK/epoc32/build/ClassiCube/makefile -j 4"
|
||||||
|
|
||||||
|
cd misc/symbian
|
||||||
|
(Get-Content ClassiCube.pkg).Replace('$(EPOCROOT)', "$SDK").Replace('$(PLATFORM)', 'armv5').Replace('$(TARGET)', 'urel') | Set-Content ClassiCube.pkg
|
||||||
|
cmd /c "$SDK/epoc32/tools/makesis.exe ClassiCube.pkg ClassiCube.sis"
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'misc/symbian/ClassiCube.sis'
|
||||||
|
DEST_NAME: 'ClassiCube-Symbian.sis'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'SDK/epoc32/release/armv5/urel/ClassiCube_s60v5.exe'
|
||||||
|
DEST_NAME: 'ClassiCube_s60v5.exe'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'SDK/epoc32/release/armv5/urel/ClassiCube_s60v3.exe'
|
||||||
|
DEST_NAME: 'ClassiCube_s60v3.exe'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'SDK/epoc32/release/armv5/urel/ClassiCube_s60v5.exe.sym'
|
||||||
|
DEST_NAME: 'ClassiCube_s60v5.elf'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'SDK/epoc32/release/armv5/urel/ClassiCube_s60v3.exe.sym'
|
||||||
|
DEST_NAME: 'ClassiCube_s60v3.elf'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'symbian'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce Symbian build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
@ -0,0 +1,52 @@
|
||||||
|
name: Build latest (Vita)
|
||||||
|
# trigger via either push to selected branches or on manual run
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-vita
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: vitasdk/vitasdk:latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Compile Vita build
|
||||||
|
id: compile
|
||||||
|
run: |
|
||||||
|
make vita
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-vita.vpk'
|
||||||
|
DEST_NAME: 'ClassiCube-vita.vpk'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-vita.elf'
|
||||||
|
DEST_NAME: 'ClassiCube-vita.elf'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'vita'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce Vita build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
@ -0,0 +1,48 @@
|
||||||
|
name: Build latest (Webclient)
|
||||||
|
# trigger via either push to selected branches or on manual run
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-webclient
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: trzeci/emscripten-fastcomp:1.39.0
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Compiles webclient
|
||||||
|
id: compile
|
||||||
|
env:
|
||||||
|
SRCS: "src/*.c src/webclient/*.c"
|
||||||
|
run: |
|
||||||
|
emcc ${{ env.SRCS }} -o ClassiCube.js -s WASM=0 -s NO_EXIT_RUNTIME=1 -s LEGACY_VM_SUPPORT=1 -s ALLOW_MEMORY_GROWTH=1 -s ABORTING_MALLOC=0 -s ENVIRONMENT=web -s TOTAL_STACK=256Kb --js-library src/webclient/interop_web.js -Os -g2 -s SINGLE_FILE
|
||||||
|
sed -i 's#eventHandler.useCapture);#{ useCapture: eventHandler.useCapture, passive: false });#g' ClassiCube.js
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube.js'
|
||||||
|
DEST_NAME: 'ClassiCube.js'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'webclient'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce Webclient'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
@ -0,0 +1,65 @@
|
||||||
|
name: Build latest (Wii)
|
||||||
|
# trigger via either push to selected branches or on manual run
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-wii
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: devkitpro/devkitppc:latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Compile Wii build
|
||||||
|
id: compile
|
||||||
|
run: |
|
||||||
|
make wii
|
||||||
|
|
||||||
|
- name: Create Wii homebrew
|
||||||
|
run: |
|
||||||
|
mkdir -p wiitest/apps/ClassiCube
|
||||||
|
cp ClassiCube-wii.dol wiitest/apps/ClassiCube/boot.dol
|
||||||
|
cp misc/wii/icon.png wiitest/apps/ClassiCube/icon.png
|
||||||
|
cp misc/wii/meta.xml wiitest/apps/ClassiCube/meta.xml
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-wii.dol'
|
||||||
|
DEST_NAME: 'ClassiCube-wii.dol'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-wii.elf'
|
||||||
|
DEST_NAME: 'ClassiCube-wii.elf'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'wiitest'
|
||||||
|
DEST_NAME: 'ClassiCube-Wii-Homebrew'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'wii'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce Wii build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
@ -1,38 +0,0 @@
|
||||||
name: Build latest (Wii/GameCube)
|
|
||||||
on: [push]
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.ref }}-wiigc
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
container:
|
|
||||||
image: devkitpro/devkitppc:latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- name: Compile Wii and GameCube build
|
|
||||||
id: compile
|
|
||||||
run: |
|
|
||||||
make wii
|
|
||||||
make clean
|
|
||||||
make gamecube
|
|
||||||
|
|
||||||
- uses: ./.github/actions/notify_failure
|
|
||||||
if: ${{ always() && steps.compile.outcome == 'failure' }}
|
|
||||||
with:
|
|
||||||
NOTIFY_MESSAGE: 'Failed to compile Wii/Gamecube build'
|
|
||||||
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
|
||||||
|
|
||||||
- uses: ./.github/actions/upload_build
|
|
||||||
if: ${{ always() && steps.compile.outcome == 'success' }}
|
|
||||||
with:
|
|
||||||
SOURCE_FILE: 'ClassiCube-wii.dol'
|
|
||||||
DEST_NAME: 'ClassiCube-wii.dol'
|
|
||||||
|
|
||||||
- uses: ./.github/actions/upload_build
|
|
||||||
if: ${{ always() && steps.compile.outcome == 'success' }}
|
|
||||||
with:
|
|
||||||
SOURCE_FILE: 'ClassiCube-gc.dol'
|
|
||||||
DEST_NAME: 'ClassiCube-gc.dol'
|
|
||||||
|
|
@ -0,0 +1,58 @@
|
||||||
|
name: Build latest (WiiU)
|
||||||
|
# trigger via either push to selected branches or on manual run
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-wiiu
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: devkitpro/devkitppc:latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Compile Wii U build
|
||||||
|
id: compile
|
||||||
|
run: |
|
||||||
|
make wiiu
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-wiiu.wuhb'
|
||||||
|
DEST_NAME: 'ClassiCube-wiiu.wuhb'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-wiiu.rpx'
|
||||||
|
DEST_NAME: 'ClassiCube-wiiu.rpx'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-wiiu.elf'
|
||||||
|
DEST_NAME: 'ClassiCube-wiiu.elf'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'wiiu'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce WiiU build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
@ -0,0 +1,92 @@
|
||||||
|
name: Build latest (Windows ARM32/64)
|
||||||
|
# trigger via either push to selected branches or on manual run
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-windows-arm
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
#============================================
|
||||||
|
# ============== ARM32 WINDOWS ==============
|
||||||
|
# ===========================================
|
||||||
|
build-32:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: dockcross/windows-armv7
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Compile ARM32 Windows builds
|
||||||
|
shell: bash
|
||||||
|
id: compile
|
||||||
|
env:
|
||||||
|
LIBS: "-lwinmm -limagehlp"
|
||||||
|
SRCS: "src/*.c third_party/bearssl/*.c"
|
||||||
|
COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn"
|
||||||
|
WIN32_FLAGS: "-mwindows -nostartfiles -Wl,-emain_real -DCC_NOMAIN -DCC_GFX_BACKEND=CC_GFX_BACKEND_D3D11"
|
||||||
|
run: |
|
||||||
|
LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\"
|
||||||
|
|
||||||
|
armv7-w64-mingw32-gcc ${{ env.SRCS }} ${{ env.COMMON_FLAGS }} ${{ env.WIN32_FLAGS }} -o cc-arm32-d3d11.exe $LATEST_FLAG ${{ env.LIBS }}
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-arm32-d3d11.exe'
|
||||||
|
DEST_NAME: 'ClassiCube-arm32-Direct3D11.exe'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce 32 bit Windows-ARM build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
#============================================
|
||||||
|
# ============== ARM64 WINDOWS ==============
|
||||||
|
# ===========================================
|
||||||
|
build-64:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: dockcross/windows-arm64
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Compile ARM64 Windows builds
|
||||||
|
shell: bash
|
||||||
|
id: compile
|
||||||
|
env:
|
||||||
|
LIBS: "-lwinmm -limagehlp"
|
||||||
|
SRCS: "src/*.c third_party/bearssl/*.c"
|
||||||
|
COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn"
|
||||||
|
WIN64_FLAGS: "-mwindows -nostartfiles -Wl,-emain_real -DCC_NOMAIN -DCC_GFX_BACKEND=CC_GFX_BACKEND_D3D11"
|
||||||
|
run: |
|
||||||
|
LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\"
|
||||||
|
|
||||||
|
aarch64-w64-mingw32-gcc ${{ env.SRCS }} ${{ env.COMMON_FLAGS }} ${{ env.WIN64_FLAGS }} -o cc-arm64-d3d11.exe $LATEST_FLAG ${{ env.LIBS }}
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce 64 bit Windows build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-arm64-d3d11.exe'
|
||||||
|
DEST_NAME: 'ClassiCube-arm64-Direct3D11.exe'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce 64 bit Windows-ARM build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
@ -0,0 +1,151 @@
|
||||||
|
name: Build latest (Windows)
|
||||||
|
# trigger via either push to selected branches or on manual run
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
- ModernLighting
|
||||||
|
- AngledLighting
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-windows
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
#============================================
|
||||||
|
# ============== 32 BIT WINDOWS =============
|
||||||
|
# ===========================================
|
||||||
|
build-32:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Install packages
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
sudo apt-get -y install gcc-mingw-w64-i686
|
||||||
|
|
||||||
|
- name: Compile 32 bit Windows builds
|
||||||
|
shell: bash
|
||||||
|
id: compile
|
||||||
|
env:
|
||||||
|
LIBS: "-lwinmm -limagehlp"
|
||||||
|
SRCS: "src/*.c third_party/bearssl/*.c"
|
||||||
|
COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn"
|
||||||
|
WIN32_FLAGS: "-mwindows -nostartfiles -Wl,-e_main_real -DCC_NOMAIN src/CCicon_32.res"
|
||||||
|
run: |
|
||||||
|
LATEST_FLAG=-DCC_COMMIT_SHA=\"$(git rev-parse --short "$GITHUB_SHA")\"
|
||||||
|
cp misc/windows/CCicon_32.res src/CCicon_32.res
|
||||||
|
|
||||||
|
i686-w64-mingw32-gcc ${{ env.SRCS }} ${{ env.COMMON_FLAGS }} ${{ env.WIN32_FLAGS }} -o cc-w32-d3d9.exe $LATEST_FLAG ${{ env.LIBS }}
|
||||||
|
i686-w64-mingw32-gcc ${{ env.SRCS }} ${{ env.COMMON_FLAGS }} ${{ env.WIN32_FLAGS }} -o cc-w32-ogl.exe $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL1 ${{ env.LIBS }}
|
||||||
|
i686-w64-mingw32-gcc ${{ env.SRCS }} ${{ env.COMMON_FLAGS }} ${{ env.WIN32_FLAGS }} -o cc-w32-d3d11.exe $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_D3D11 ${{ env.LIBS }}
|
||||||
|
|
||||||
|
# mingw defaults to i686, but some really old CPUs only support i586
|
||||||
|
i686-w64-mingw32-gcc ${{ env.SRCS }} ${{ env.COMMON_FLAGS }} ${{ env.WIN32_FLAGS }} -march=i586 -o cc-w9x-ogl.exe $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL1 -DCC_BUILD_NOSTDLIB ${{ env.LIBS }}
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-w32-d3d9.exe'
|
||||||
|
DEST_NAME: 'ClassiCube-Win32-Direct3D9.exe'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-w32-ogl.exe'
|
||||||
|
DEST_NAME: 'ClassiCube-Win32-OpenGL.exe'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-w32-d3d11.exe'
|
||||||
|
DEST_NAME: 'ClassiCube-Win32-Direct3D11.exe'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-w9x-ogl.exe'
|
||||||
|
DEST_NAME: 'ClassiCube-Win9x.exe'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'win32'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce 32 bit Windows build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
||||||
|
|
||||||
|
#============================================
|
||||||
|
# ============== 64 BIT WINDOWS =============
|
||||||
|
# ===========================================
|
||||||
|
build-64:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Install packages
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
sudo apt-get -y install gcc-mingw-w64-x86-64
|
||||||
|
|
||||||
|
- name: Compile 64 bit Windows builds
|
||||||
|
shell: bash
|
||||||
|
id: compile
|
||||||
|
env:
|
||||||
|
LIBS: "-lwinmm -limagehlp"
|
||||||
|
SRCS: "src/*.c third_party/bearssl/*.c"
|
||||||
|
COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn"
|
||||||
|
WIN64_FLAGS: "-mwindows -nostartfiles -Wl,-emain_real -DCC_NOMAIN src/CCicon_64.res"
|
||||||
|
run: |
|
||||||
|
LATEST_FLAG=-DCC_COMMIT_SHA=\"$(git rev-parse --short "$GITHUB_SHA")\"
|
||||||
|
|
||||||
|
cp misc/windows/CCicon_64.res src/CCicon_64.res
|
||||||
|
x86_64-w64-mingw32-gcc ${{ env.SRCS }} ${{ env.COMMON_FLAGS }} ${{ env.WIN64_FLAGS }} -o cc-w64-d3d9.exe $LATEST_FLAG ${{ env.LIBS }}
|
||||||
|
x86_64-w64-mingw32-gcc ${{ env.SRCS }} ${{ env.COMMON_FLAGS }} ${{ env.WIN64_FLAGS }} -o cc-w64-ogl.exe $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL1 ${{ env.LIBS }}
|
||||||
|
x86_64-w64-mingw32-gcc ${{ env.SRCS }} ${{ env.COMMON_FLAGS }} ${{ env.WIN64_FLAGS }} -o cc-w64-d3d11.exe $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_D3D11 ${{ env.LIBS }}
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-w64-d3d9.exe'
|
||||||
|
DEST_NAME: 'ClassiCube-Win64-Direct3D9.exe'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-w64-ogl.exe'
|
||||||
|
DEST_NAME: 'ClassiCube-Win64-OpenGL.exe'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-w64-d3d11.exe'
|
||||||
|
DEST_NAME: 'ClassiCube-Win64-Direct3D11.exe'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'win64'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce 64 bit Windows build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
@ -0,0 +1,57 @@
|
||||||
|
name: Build latest (Xbox)
|
||||||
|
# trigger via either push to selected branches or on manual run
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-xbox
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: ghcr.io/xboxdev/nxdk:git-e955705a
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Install prerequisites
|
||||||
|
run: |
|
||||||
|
apk add curl curl-dev
|
||||||
|
|
||||||
|
- name: Compile Xbox build
|
||||||
|
id: compile
|
||||||
|
run: |
|
||||||
|
eval $(/usr/src/nxdk/bin/activate -s)
|
||||||
|
make xbox
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-xbox.xbe'
|
||||||
|
DEST_NAME: 'ClassiCube-xbox.xbe'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-xbox.iso'
|
||||||
|
DEST_NAME: 'ClassiCube-xbox.iso'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'xbox'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce Xbox build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
@ -0,0 +1,60 @@
|
||||||
|
name: Build latest (Xbox 360)
|
||||||
|
# trigger via either push to selected branches or on manual run
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-xbox360
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: free60/libxenon
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Install prerequisites
|
||||||
|
run: |
|
||||||
|
sed -i -e 's/archive.ubuntu.com\|security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y curl
|
||||||
|
|
||||||
|
- name: Compile 360 build
|
||||||
|
id: compile
|
||||||
|
run: |
|
||||||
|
export DEVKITXENON=/usr/local/xenon
|
||||||
|
export PATH=$PATH:$DEVKITXENON/bin:$DEVKITXENON/usr/bin
|
||||||
|
make xbox360
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-xbox360.elf'
|
||||||
|
DEST_NAME: 'ClassiCube-xbox360.elf'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'ClassiCube-xbox360.elf32'
|
||||||
|
DEST_NAME: 'ClassiCube-xbox360.elf32'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'xbox360'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce Xbox 360 build'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
@ -0,0 +1,222 @@
|
||||||
|
name: Produce release
|
||||||
|
on: [workflow_dispatch]
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-release
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
# Download resources
|
||||||
|
- name: Retrieve classicube texture pack
|
||||||
|
run: |
|
||||||
|
wget https://www.classicube.net/static/default.zip
|
||||||
|
- name: Retrieve classicube audio pack
|
||||||
|
run: |
|
||||||
|
wget https://www.classicube.net/static/audio.zip
|
||||||
|
|
||||||
|
# Download windows artifacts
|
||||||
|
- name: Retrieve Windows binaries
|
||||||
|
run: |
|
||||||
|
wget https://cdn.classicube.net/client/latest/ClassiCube.64.exe -O cc-w64.exe
|
||||||
|
wget https://cdn.classicube.net/client/latest/ClassiCube.exe -O cc-w32.exe
|
||||||
|
wget https://cdn.classicube.net/client/latest/cc-w9x.exe -O cc-w9x.exe
|
||||||
|
|
||||||
|
# Download Linux artifacts
|
||||||
|
- name: Retrieve Linux binaries
|
||||||
|
run: |
|
||||||
|
wget https://cdn.classicube.net/client/latest/ClassiCube -O cc-linux-64
|
||||||
|
wget https://cdn.classicube.net/client/latest/ClassiCube.32 -O cc-linux-32
|
||||||
|
|
||||||
|
# Download macOS artifacts
|
||||||
|
- name: Retrieve macOS binaries
|
||||||
|
run: |
|
||||||
|
wget https://cdn.classicube.net/client/latest/ClassiCube.64.osx -O cc-mac-64
|
||||||
|
wget https://cdn.classicube.net/client/latest/ClassiCube.osx -O cc-mac-32
|
||||||
|
|
||||||
|
# Download RPI artifacts
|
||||||
|
- name: Retrieve RPI binaries
|
||||||
|
run: |
|
||||||
|
wget https://cdn.classicube.net/client/latest/cc-rpi64 -O cc-rpi-64
|
||||||
|
wget https://cdn.classicube.net/client/latest/ClassiCube.rpi -O cc-rpi-32
|
||||||
|
|
||||||
|
# Download FreeBSD artifacts
|
||||||
|
- name: Retrieve FreeBSD binaries
|
||||||
|
run: |
|
||||||
|
wget https://cdn.classicube.net/client/latest/cc-freebsd-64 -O cc-freebsd-64
|
||||||
|
wget https://cdn.classicube.net/client/latest/cc-freebsd-32 -O cc-freebsd-32
|
||||||
|
|
||||||
|
# Download NetBSD artifacts
|
||||||
|
- name: Retrieve NetBSD binaries
|
||||||
|
run: |
|
||||||
|
wget https://cdn.classicube.net/client/latest/cc-netbsd-64 -O cc-netbsd-64
|
||||||
|
|
||||||
|
# Download haiku artifacts
|
||||||
|
- name: Retrieve haiku binaries
|
||||||
|
run: |
|
||||||
|
wget https://cdn.classicube.net/client/latest/cc-haiku-64 -O cc-haiku-64
|
||||||
|
|
||||||
|
- name: Generate builds
|
||||||
|
id: compile
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
mkdir ClassiCube
|
||||||
|
mkdir ClassiCube/audio
|
||||||
|
mkdir ClassiCube/texpacks
|
||||||
|
cp audio.zip ClassiCube/audio/classicube.zip
|
||||||
|
cp default.zip ClassiCube/texpacks/classicube.zip
|
||||||
|
|
||||||
|
# ./ClassiCube
|
||||||
|
make_unix_tar() {
|
||||||
|
cp $2 ClassiCube/ClassiCube
|
||||||
|
chmod +x ClassiCube/ClassiCube
|
||||||
|
tar -zcvf $1 ClassiCube
|
||||||
|
rm ClassiCube/ClassiCube
|
||||||
|
}
|
||||||
|
|
||||||
|
# ./ClassiCube
|
||||||
|
make_windows_zip() {
|
||||||
|
cp $2 ClassiCube/ClassiCube.exe
|
||||||
|
zip -r $1 ClassiCube
|
||||||
|
rm ClassiCube/ClassiCube.exe
|
||||||
|
}
|
||||||
|
|
||||||
|
# Generate haiku builds
|
||||||
|
make_unix_tar cc-haiku64.tar.gz cc-haiku-64
|
||||||
|
|
||||||
|
# Generate NetBSD builds
|
||||||
|
make_unix_tar cc-netbsd64.tar.gz cc-netbsd-64
|
||||||
|
|
||||||
|
# Generate FreeBSD builds
|
||||||
|
make_unix_tar cc-freebsd32.tar.gz cc-freebsd-32
|
||||||
|
make_unix_tar cc-freebsd64.tar.gz cc-freebsd-64
|
||||||
|
|
||||||
|
# Generate RPI builds
|
||||||
|
make_unix_tar cc-rpi32.tar.gz cc-rpi-32
|
||||||
|
make_unix_tar cc-rpi64.tar.gz cc-rpi-64
|
||||||
|
|
||||||
|
# Generate macOS builds
|
||||||
|
make_unix_tar cc-mac32.tar.gz cc-mac-32
|
||||||
|
make_unix_tar cc-mac64.tar.gz cc-mac-64
|
||||||
|
|
||||||
|
# Generate Windows builds
|
||||||
|
make_windows_zip cc-win32.zip cc-w32.exe
|
||||||
|
make_windows_zip cc-win64.zip cc-w64.exe
|
||||||
|
|
||||||
|
# Generate Linux builds
|
||||||
|
# NOTE: Must be last since it adds linux specific file
|
||||||
|
cp misc/linux/install-desktop-entry.sh ClassiCube/install-desktop-entry.sh
|
||||||
|
chmod +x ClassiCube/install-desktop-entry.sh
|
||||||
|
|
||||||
|
make_unix_tar cc-linux32.tar.gz cc-linux-32
|
||||||
|
make_unix_tar cc-linux64.tar.gz cc-linux-64
|
||||||
|
|
||||||
|
|
||||||
|
# Generate Linux release files
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-linux32.tar.gz'
|
||||||
|
DEST_NAME: 'cc-linux32.tar.gz'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-linux64.tar.gz'
|
||||||
|
DEST_NAME: 'cc-linux64.tar.gz'
|
||||||
|
|
||||||
|
|
||||||
|
# Generate macOS release files
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-mac32.tar.gz'
|
||||||
|
DEST_NAME: 'cc-mac32.tar.gz'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-mac64.tar.gz'
|
||||||
|
DEST_NAME: 'cc-mac64.tar.gz'
|
||||||
|
|
||||||
|
|
||||||
|
# Generate Windows release files
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-win32.zip'
|
||||||
|
DEST_NAME: 'cc-win32.zip'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-win64.zip'
|
||||||
|
DEST_NAME: 'cc-win64.zip'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-w9x.exe'
|
||||||
|
DEST_NAME: 'cc-win9x.exe'
|
||||||
|
|
||||||
|
|
||||||
|
# Generate RPI release files
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-rpi32.tar.gz'
|
||||||
|
DEST_NAME: 'cc-rpi32.tar.gz'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-rpi64.tar.gz'
|
||||||
|
DEST_NAME: 'cc-rpi64.tar.gz'
|
||||||
|
|
||||||
|
|
||||||
|
# Generate FreeBSD release files
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-freebsd32.tar.gz'
|
||||||
|
DEST_NAME: 'cc-freebsd32.tar.gz'
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-freebsd64.tar.gz'
|
||||||
|
DEST_NAME: 'cc-freebsd64.tar.gz'
|
||||||
|
|
||||||
|
|
||||||
|
# Generate NetBSD release files
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-netbsd64.tar.gz'
|
||||||
|
DEST_NAME: 'cc-netbsd64.tar.gz'
|
||||||
|
|
||||||
|
|
||||||
|
# Generate haiku release files
|
||||||
|
- uses: ./.github/actions/upload_build
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
SOURCE_FILE: 'cc-haiku64.tar.gz'
|
||||||
|
DEST_NAME: 'cc-haiku64.tar.gz'
|
||||||
|
|
||||||
|
|
||||||
|
- uses: ./.github/actions/notify_success
|
||||||
|
if: ${{ always() && steps.compile.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
|
||||||
|
WORKFLOW_NAME: 'release'
|
||||||
|
|
||||||
|
|
||||||
|
# Log any failure
|
||||||
|
- uses: ./.github/actions/notify_failure
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
NOTIFY_MESSAGE: 'Failed to produce release'
|
||||||
|
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
## Ignore Visual Studio temporary files, build results, and
|
## Ignore Visual Studio temporary files, build results, and
|
||||||
## files generated by popular Visual Studio add-ons.
|
## files generated by popular Visual Studio add-ons.
|
||||||
|
|
||||||
# User-specific files
|
# Visual studio User-specific files
|
||||||
*.suo
|
*.suo
|
||||||
*.user
|
*.user
|
||||||
*.sln.docstates
|
*.sln.docstates
|
||||||
|
|
@ -11,6 +11,7 @@
|
||||||
*.VC.VC.opendb
|
*.VC.VC.opendb
|
||||||
|
|
||||||
# Android build results
|
# Android build results
|
||||||
|
android/app/.cxx/
|
||||||
android/.cxx/
|
android/.cxx/
|
||||||
android/.idea/
|
android/.idea/
|
||||||
android/.gradle/
|
android/.gradle/
|
||||||
|
|
@ -20,19 +21,50 @@ android/app/.externalNativeBuild/
|
||||||
android/local.properties
|
android/local.properties
|
||||||
*.iml
|
*.iml
|
||||||
|
|
||||||
|
#XCode stuff
|
||||||
|
project.xcworkspace/
|
||||||
|
xcuserdata/
|
||||||
|
|
||||||
|
# Nintendo Console build results
|
||||||
|
build-nds/
|
||||||
|
build-dsi/
|
||||||
|
build-n64/
|
||||||
|
classicube.nds
|
||||||
|
|
||||||
|
# SEGA console build results
|
||||||
|
IP.BIN
|
||||||
|
ISO_FILES/
|
||||||
|
cd/
|
||||||
|
|
||||||
|
# Microsoft console build results
|
||||||
|
build-360/
|
||||||
|
main.exe
|
||||||
|
main.lib
|
||||||
|
misc/xbox/ps_coloured.inl
|
||||||
|
misc/xbox/ps_textured.inl
|
||||||
|
misc/xbox/vs_coloured.inl
|
||||||
|
misc/xbox/vs_textured.inl
|
||||||
|
|
||||||
|
# Sony console build results
|
||||||
|
EBOOT.PBP
|
||||||
|
PARAM.SFO
|
||||||
|
param.sfo
|
||||||
|
eboot.bin
|
||||||
|
pkg.gp4
|
||||||
|
|
||||||
# Build results
|
# Build results
|
||||||
[Dd]ebug/
|
[Dd]ebug/
|
||||||
[Dd]ebugPublic/
|
|
||||||
[Rr]elease/
|
[Rr]elease/
|
||||||
[Rr]eleases/
|
|
||||||
x64/
|
x64/
|
||||||
x86/
|
x86/
|
||||||
build/
|
build/
|
||||||
bld/
|
|
||||||
[Bb]in/
|
[Bb]in/
|
||||||
[Oo]bj/
|
[Oo]bj/
|
||||||
[Oo]utput/
|
[Oo]utput/
|
||||||
[Pp]rofilingSessions/
|
[Pp]rofilingSessions/
|
||||||
|
src/.vs/
|
||||||
|
|
||||||
|
# ClassiCube game files
|
||||||
src/audio
|
src/audio
|
||||||
src/texpacks
|
src/texpacks
|
||||||
src/maps
|
src/maps
|
||||||
|
|
@ -42,9 +74,43 @@ src/options.txt
|
||||||
src/ClassiCube*
|
src/ClassiCube*
|
||||||
src/screenshots
|
src/screenshots
|
||||||
src/fontscache.txt
|
src/fontscache.txt
|
||||||
src/.vs/
|
|
||||||
|
# ClassiCube game files
|
||||||
|
audio
|
||||||
|
texpacks
|
||||||
|
maps
|
||||||
|
texturecache
|
||||||
|
logs
|
||||||
|
options.txt
|
||||||
|
ClassiCube*
|
||||||
|
screenshots
|
||||||
|
fontscache.txt
|
||||||
|
|
||||||
|
# DOS files
|
||||||
|
CWSDPMI.EXE
|
||||||
|
CWSDPMI.SWP
|
||||||
|
OPTIONS.TXT
|
||||||
|
CCDOS.EXE
|
||||||
|
|
||||||
|
# Android source files need to be included
|
||||||
|
!android/app/src/main/java/com/classicube
|
||||||
|
|
||||||
|
# Flatpak wrapper needs to be included
|
||||||
|
!misc/flatpak/ClassiCubeLauncher
|
||||||
|
|
||||||
|
# UWP files needs to be included
|
||||||
|
!misc/UWP/ClassiCube-UWP.sln
|
||||||
|
!misc/UWP/ClassiCube-UWP.vcxproj
|
||||||
|
!misc/UWP/ClassiCube-UWP.vcxproj.filters
|
||||||
|
|
||||||
|
# CMake files
|
||||||
|
CMakeFiles/
|
||||||
|
CMakeCache.txt
|
||||||
|
|
||||||
#GCC object files
|
#GCC object files
|
||||||
*.o
|
*.o
|
||||||
|
# Build dependency files
|
||||||
|
*.d
|
||||||
|
|
||||||
# Roslyn cache directories
|
# Roslyn cache directories
|
||||||
*.ide/
|
*.ide/
|
||||||
|
|
@ -62,6 +128,12 @@ TestResult.xml
|
||||||
[Rr]eleasePS/
|
[Rr]eleasePS/
|
||||||
dlldata.c
|
dlldata.c
|
||||||
|
|
||||||
|
# Mac classic
|
||||||
|
retro68scripts/
|
||||||
|
|
||||||
|
# PS2
|
||||||
|
openvcl/
|
||||||
|
|
||||||
*_i.c
|
*_i.c
|
||||||
*_p.c
|
*_p.c
|
||||||
*_i.h
|
*_i.h
|
||||||
|
|
@ -86,9 +158,11 @@ dlldata.c
|
||||||
*.pidb
|
*.pidb
|
||||||
*.svclog
|
*.svclog
|
||||||
*.scc
|
*.scc
|
||||||
|
*.map
|
||||||
|
|
||||||
# Chutzpah Test files
|
# Binary files
|
||||||
_Chutzpah*
|
*.bin
|
||||||
|
*.elf
|
||||||
|
|
||||||
# Visual C++ cache files
|
# Visual C++ cache files
|
||||||
ipch/
|
ipch/
|
||||||
|
|
@ -103,61 +177,14 @@ ipch/
|
||||||
*.vsp
|
*.vsp
|
||||||
*.vspx
|
*.vspx
|
||||||
|
|
||||||
# TFS 2012 Local Workspace
|
|
||||||
$tf/
|
|
||||||
|
|
||||||
# Guidance Automation Toolkit
|
|
||||||
*.gpState
|
|
||||||
|
|
||||||
# ReSharper is a .NET coding add-in
|
# ReSharper is a .NET coding add-in
|
||||||
_ReSharper*/
|
_ReSharper*/
|
||||||
*.[Rr]e[Ss]harper
|
*.[Rr]e[Ss]harper
|
||||||
*.DotSettings.user
|
*.DotSettings.user
|
||||||
|
|
||||||
# JustCode is a .NET coding addin-in
|
|
||||||
.JustCode
|
|
||||||
|
|
||||||
# TeamCity is a build add-in
|
|
||||||
_TeamCity*
|
|
||||||
|
|
||||||
# DotCover is a Code Coverage Tool
|
|
||||||
*.dotCover
|
|
||||||
|
|
||||||
# NCrunch
|
|
||||||
_NCrunch_*
|
|
||||||
.*crunch*.local.xml
|
|
||||||
|
|
||||||
# MightyMoose
|
|
||||||
*.mm.*
|
|
||||||
AutoTest.Net/
|
|
||||||
|
|
||||||
# Web workbench (sass)
|
|
||||||
.sass-cache/
|
|
||||||
|
|
||||||
# Installshield output folder
|
# Installshield output folder
|
||||||
[Ee]xpress/
|
[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
|
|
||||||
# TODO: 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
|
|
||||||
|
|
||||||
# NuGet Packages
|
# NuGet Packages
|
||||||
*.nupkg
|
*.nupkg
|
||||||
# The packages folder can be ignored because of Package Restore
|
# The packages folder can be ignored because of Package Restore
|
||||||
|
|
@ -184,11 +211,6 @@ ClientBin/
|
||||||
*.dbmdl
|
*.dbmdl
|
||||||
*.dbproj.schemaview
|
*.dbproj.schemaview
|
||||||
*.pfx
|
*.pfx
|
||||||
*.publishsettings
|
|
||||||
node_modules/
|
|
||||||
|
|
||||||
# RIA/Silverlight projects
|
|
||||||
Generated_Code/
|
|
||||||
|
|
||||||
# Backup & report files from converting an old project file
|
# Backup & report files from converting an old project file
|
||||||
# to a newer Visual Studio version. Backup files are not needed,
|
# to a newer Visual Studio version. Backup files are not needed,
|
||||||
|
|
@ -198,14 +220,6 @@ Backup*/
|
||||||
UpgradeLog*.XML
|
UpgradeLog*.XML
|
||||||
UpgradeLog*.htm
|
UpgradeLog*.htm
|
||||||
|
|
||||||
# SQL Server files
|
# Eclipse
|
||||||
*.mdf
|
.cproject
|
||||||
*.ldf
|
.project
|
||||||
|
|
||||||
# Business Intelligence projects
|
|
||||||
*.rdl.data
|
|
||||||
*.bim.layout
|
|
||||||
*.bim_*.settings
|
|
||||||
|
|
||||||
# Microsoft Fakes
|
|
||||||
FakesAssemblies/
|
|
||||||
|
|
|
||||||
411
Makefile
|
|
@ -1,174 +1,371 @@
|
||||||
C_SOURCES:=$(wildcard src/*.c)
|
SOURCE_DIR = src
|
||||||
C_OBJECTS:=$(patsubst %.c, %.o, $(C_SOURCES))
|
BUILD_DIR = build
|
||||||
OBJECTS:=$(C_OBJECTS)
|
C_SOURCES = $(wildcard $(SOURCE_DIR)/*.c)
|
||||||
ENAME=ClassiCube
|
OBJECTS = $(patsubst %.c, $(BUILD_DIR)/%.o, $(C_SOURCES))
|
||||||
DEL=rm
|
BUILD_DIRS = $(BUILD_DIR) $(BUILD_DIR)/src
|
||||||
CFLAGS=-g -pipe -fno-math-errno
|
|
||||||
LDFLAGS=-g -rdynamic
|
|
||||||
|
|
||||||
ifndef $(PLAT)
|
##############################
|
||||||
|
# Configurable flags and names
|
||||||
|
##############################
|
||||||
|
# Flags passed to the C compiler
|
||||||
|
CFLAGS = -pipe -fno-math-errno -Werror -Wno-error=missing-braces -Wno-error=strict-aliasing
|
||||||
|
# Flags passed to the linker
|
||||||
|
LDFLAGS = -g -rdynamic
|
||||||
|
# Name of the main executable
|
||||||
|
ENAME = ClassiCube
|
||||||
|
# Name of the final target file
|
||||||
|
# (usually this is the executable, but e.g. is the app bundle on macOS)
|
||||||
|
TARGET := $(ENAME)
|
||||||
|
|
||||||
|
# Enables dependency tracking (https://make.mad-scientist.net/papers/advanced-auto-dependency-generation/)
|
||||||
|
# This ensures that changing a .h file automatically results in the .c files using it being auto recompiled when next running make
|
||||||
|
# On older systems the required GCC options may not be supported - in which case just change TRACK_DEPENDENCIES to 0
|
||||||
|
TRACK_DEPENDENCIES=1
|
||||||
|
# link using C Compiler by default
|
||||||
|
LINK = $(CC)
|
||||||
|
# Whether to add BearSSL source files to list of files to compile
|
||||||
|
BEARSSL=1
|
||||||
|
# Optimization level in release builds
|
||||||
|
OPT_LEVEL=1
|
||||||
|
|
||||||
|
|
||||||
|
#################################################################
|
||||||
|
# Determine shell command used to remove files (for "make clean")
|
||||||
|
#################################################################
|
||||||
|
ifndef RM
|
||||||
|
# No prefined RM variable, try to guess OS default
|
||||||
ifeq ($(OS),Windows_NT)
|
ifeq ($(OS),Windows_NT)
|
||||||
PLAT=mingw
|
RM = del
|
||||||
else
|
else
|
||||||
PLAT=$(shell uname -s | tr '[:upper:]' '[:lower:]')
|
RM = rm -f
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(PLAT),darwin)
|
|
||||||
ifeq ($(shell uname -m), x86_64)
|
|
||||||
PLAT=mac_x64
|
|
||||||
else
|
|
||||||
PLAT=mac_x32
|
|
||||||
endif
|
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
###########################################################
|
||||||
|
# If target platform isn't specified, default to current OS
|
||||||
|
###########################################################
|
||||||
|
ifndef $(PLAT)
|
||||||
|
ifeq ($(OS),Windows_NT)
|
||||||
|
PLAT = mingw
|
||||||
|
else
|
||||||
|
PLAT = $(shell uname -s | tr '[:upper:]' '[:lower:]')
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
#########################################################
|
||||||
|
# Setup environment appropriate for the specific platform
|
||||||
|
#########################################################
|
||||||
ifeq ($(PLAT),web)
|
ifeq ($(PLAT),web)
|
||||||
CC=emcc
|
CC = emcc
|
||||||
OEXT=.html
|
OEXT = .html
|
||||||
CFLAGS=-g
|
CFLAGS = -g
|
||||||
LDFLAGS=-s WASM=1 -s NO_EXIT_RUNTIME=1 -s ALLOW_MEMORY_GROWTH=1
|
LDFLAGS = -g -s WASM=1 -s NO_EXIT_RUNTIME=1 -s ABORTING_MALLOC=0 -s ALLOW_MEMORY_GROWTH=1 -s TOTAL_STACK=256Kb --js-library $(SOURCE_DIR)/webclient/interop_web.js
|
||||||
|
BUILD_DIR = build/web
|
||||||
|
BEARSSL = 0
|
||||||
|
|
||||||
|
BUILD_DIRS += $(BUILD_DIR)/src/webclient
|
||||||
|
C_SOURCES += $(wildcard src/webclient/*.c)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(PLAT),mingw)
|
ifeq ($(PLAT),mingw)
|
||||||
CC=gcc
|
CC = gcc
|
||||||
OEXT=.exe
|
OEXT = .exe
|
||||||
CFLAGS=-g -pipe -DUNICODE -fno-math-errno
|
CFLAGS += -DUNICODE
|
||||||
LDFLAGS=-g
|
LDFLAGS = -g
|
||||||
LIBS=-mwindows -lwinmm -limagehlp
|
LIBS = -mwindows -lwinmm
|
||||||
|
BUILD_DIR = build/win
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(PLAT),linux)
|
ifeq ($(PLAT),linux)
|
||||||
LIBS=-lX11 -lXi -lpthread -lGL -lm -ldl
|
# -lm may be needed for __builtin_sqetf (in cases where it isn't replaced by a CPU instruction intrinsic)
|
||||||
|
LIBS = -lX11 -lXi -lpthread -lGL -ldl -lm
|
||||||
|
BUILD_DIR = build/linux
|
||||||
|
|
||||||
|
# Detect MCST LCC, where -O3 is about equivalent to -O1
|
||||||
|
ifeq ($(shell $(CC) -dM -E -xc - < /dev/null | grep -o __MCST__),__MCST__)
|
||||||
|
OPT_LEVEL=3
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(PLAT),sunos)
|
ifeq ($(PLAT),sunos)
|
||||||
CFLAGS=-g -pipe -fno-math-errno
|
LIBS = -lsocket -lX11 -lXi -lGL
|
||||||
LIBS=-lm -lsocket -lX11 -lXi -lGL
|
BUILD_DIR = build/solaris
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(PLAT),mac_x32)
|
ifeq ($(PLAT),hp-ux)
|
||||||
CFLAGS=-g -m32 -pipe -fno-math-errno
|
CC = gcc
|
||||||
LIBS=
|
CFLAGS += -std=c99 -D_POSIX_C_SOURCE=200112L -D_XOPEN_SOURCE=600 -D_DEFAULT_SOURCE -D_BSD_SOURCE
|
||||||
LDFLAGS=-rdynamic -framework Carbon -framework AGL -framework OpenGL -framework IOKit
|
LDFLAGS =
|
||||||
|
LIBS = -lm -lX11 -lXi -lXext -L/opt/graphics/OpenGL/lib/hpux32 -lGL -lpthread
|
||||||
|
BUILD_DIR = build/hpux
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(PLAT),mac_x64)
|
ifeq ($(PLAT),darwin)
|
||||||
OBJECTS+=src/interop_cocoa.o
|
OBJECTS += $(BUILD_DIR)/src/Window_cocoa.o
|
||||||
CFLAGS=-g -m64 -pipe -fno-math-errno
|
LIBS =
|
||||||
LIBS=
|
LDFLAGS = -rdynamic -framework Security -framework Cocoa -framework OpenGL -framework IOKit -lobjc
|
||||||
LDFLAGS=-rdynamic -framework Cocoa -framework OpenGL -framework IOKit -lobjc
|
BUILD_DIR = build/macos
|
||||||
|
TARGET = $(ENAME).app
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(PLAT),freebsd)
|
ifeq ($(PLAT),freebsd)
|
||||||
CFLAGS=-g -pipe -I /usr/local/include -fno-math-errno
|
CFLAGS += -I /usr/local/include
|
||||||
LDFLAGS=-L /usr/local/lib -rdynamic
|
LDFLAGS = -L /usr/local/lib -rdynamic
|
||||||
LIBS=-lexecinfo -lGL -lX11 -lXi -lm -lpthread
|
LIBS = -lexecinfo -lGL -lX11 -lXi -lpthread
|
||||||
|
BUILD_DIR = build/freebsd
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(PLAT),openbsd)
|
ifeq ($(PLAT),openbsd)
|
||||||
CFLAGS=-g -pipe -I /usr/X11R6/include -I /usr/local/include -fno-math-errno
|
CFLAGS += -I /usr/X11R6/include -I /usr/local/include
|
||||||
LDFLAGS=-L /usr/X11R6/lib -L /usr/local/lib -rdynamic
|
LDFLAGS = -L /usr/X11R6/lib -L /usr/local/lib -rdynamic
|
||||||
LIBS=-lexecinfo -lGL -lX11 -lXi -lm -lpthread
|
LIBS = -lexecinfo -lGL -lX11 -lXi -lpthread
|
||||||
|
BUILD_DIR = build/openbsd
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(PLAT),netbsd)
|
ifeq ($(PLAT),netbsd)
|
||||||
CFLAGS=-g -pipe -I /usr/X11R7/include -I /usr/pkg/include -fno-math-errno
|
CFLAGS += -I /usr/X11R7/include -I /usr/pkg/include
|
||||||
LDFLAGS=-L /usr/X11R7/lib -L /usr/pkg/lib -rdynamic
|
LDFLAGS = -L /usr/X11R7/lib -L /usr/pkg/lib -rdynamic -Wl,-R/usr/X11R7/lib
|
||||||
LIBS=-lexecinfo -lGL -lX11 -lXi -lpthread
|
LIBS = -lexecinfo -lGL -lX11 -lXi -lpthread
|
||||||
|
BUILD_DIR = build/netbsd
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(PLAT),dragonfly)
|
ifeq ($(PLAT),dragonfly)
|
||||||
CFLAGS=-g -pipe -I /usr/local/include -fno-math-errno
|
CFLAGS += -I /usr/local/include
|
||||||
LDFLAGS=-L /usr/local/lib -rdynamic
|
LDFLAGS = -L /usr/local/lib -rdynamic
|
||||||
LIBS=-lexecinfo -lGL -lX11 -lXi -lm -lpthread
|
LIBS = -lexecinfo -lGL -lX11 -lXi -lpthread
|
||||||
|
BUILD_DIR = build/flybsd
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(PLAT),haiku)
|
ifeq ($(PLAT),haiku)
|
||||||
OBJECTS+=src/interop_BeOS.o
|
OBJECTS += $(BUILD_DIR)/src/Platform_BeOS.o $(BUILD_DIR)/src/Window_BeOS.o
|
||||||
CFLAGS=-g -pipe -fno-math-errno
|
CFLAGS = -pipe -fno-math-errno
|
||||||
LDFLAGS=-g
|
LDFLAGS = -g
|
||||||
LIBS=-lm -lGL -lnetwork -lstdc++ -lbe -lgame -ltracker
|
LINK = $(CXX)
|
||||||
|
LIBS = -lGL -lnetwork -lbe -lgame -ltracker
|
||||||
|
BUILD_DIR = build/haiku
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(PLAT),beos)
|
ifeq ($(PLAT),beos)
|
||||||
OBJECTS+=src/interop_BeOS.o
|
OBJECTS += $(BUILD_DIR)/src/Platform_BeOS.o $(BUILD_DIR)/src/Window_BeOS.o
|
||||||
CFLAGS=-g -pipe
|
CFLAGS = -pipe
|
||||||
LDFLAGS=-g
|
LDFLAGS = -g
|
||||||
LIBS=-lGL -lnetwork -lstdc++ -lbe -lgame -ltracker
|
LINK = $(CXX)
|
||||||
|
LIBS = -lGL -lnetwork -lbe -lgame -ltracker
|
||||||
|
BUILD_DIR = build/beos
|
||||||
|
TRACK_DEPENDENCIES = 0
|
||||||
|
BEARSSL = 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(PLAT),serenityos)
|
ifeq ($(PLAT),serenityos)
|
||||||
LIBS=-lgl -lSDL2
|
LIBS = -lgl -lSDL2
|
||||||
|
BUILD_DIR = build/serenity
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(PLAT),irix)
|
ifeq ($(PLAT),irix)
|
||||||
CC=gcc
|
CC = gcc
|
||||||
LIBS=-lGL -lX11 -lXi -lm -lpthread -ldl
|
LIBS = -lGL -lX11 -lXi -lpthread -ldl
|
||||||
|
BUILD_DIR = build/irix
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(OS),Windows_NT)
|
ifeq ($(PLAT),rpi)
|
||||||
DEL=del
|
CFLAGS += -DCC_BUILD_RPI
|
||||||
|
LIBS = -lpthread -lX11 -lXi -lEGL -lGLESv2 -ldl
|
||||||
|
BUILD_DIR = build/rpi
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(PLAT),riscos)
|
||||||
|
LIBS =
|
||||||
|
LDFLAGS = -g
|
||||||
|
BUILD_DIR = build/riscos
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(PLAT),wince)
|
||||||
|
CC = arm-mingw32ce-gcc
|
||||||
|
OEXT = .exe
|
||||||
|
CFLAGS += -march=armv5te -DUNICODE -D_WIN32_WCE -std=gnu99
|
||||||
|
LDFLAGS = -g
|
||||||
|
LIBS = -lcoredll -lws2
|
||||||
|
BUILD_DIR = build/wince
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifdef BUILD_SDL2
|
||||||
|
CFLAGS += -DCC_WIN_BACKEND=CC_WIN_BACKEND_SDL2
|
||||||
|
LIBS += -lSDL2
|
||||||
|
endif
|
||||||
|
ifdef BUILD_SDL3
|
||||||
|
CFLAGS += -DCC_WIN_BACKEND=CC_WIN_BACKEND_SDL3
|
||||||
|
LIBS += -lSDL3
|
||||||
|
endif
|
||||||
|
ifdef BUILD_TERMINAL
|
||||||
|
CFLAGS += -DCC_WIN_BACKEND=CC_WIN_BACKEND_TERMINAL -DCC_GFX_BACKEND=CC_GFX_BACKEND_SOFTGPU
|
||||||
|
LIBS := $(subst mwindows,mconsole,$(LIBS))
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(BEARSSL),1)
|
||||||
|
BUILD_DIRS += $(BUILD_DIR)/third_party/bearssl
|
||||||
|
C_SOURCES += $(wildcard third_party/bearssl/*.c)
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifdef RELEASE
|
||||||
|
CFLAGS += -O$(OPT_LEVEL)
|
||||||
|
else
|
||||||
|
CFLAGS += -g
|
||||||
endif
|
endif
|
||||||
|
|
||||||
default: $(PLAT)
|
default: $(PLAT)
|
||||||
|
|
||||||
|
# Build for the specified platform
|
||||||
web:
|
web:
|
||||||
$(MAKE) $(ENAME) PLAT=web
|
$(MAKE) $(TARGET) PLAT=web
|
||||||
linux:
|
linux:
|
||||||
$(MAKE) $(ENAME) PLAT=linux
|
$(MAKE) $(TARGET) PLAT=linux
|
||||||
mingw:
|
mingw:
|
||||||
$(MAKE) $(ENAME) PLAT=mingw
|
$(MAKE) $(TARGET) PLAT=mingw
|
||||||
sunos:
|
sunos:
|
||||||
$(MAKE) $(ENAME) PLAT=sunos
|
$(MAKE) $(TARGET) PLAT=sunos
|
||||||
mac_x32:
|
hp-ux:
|
||||||
$(MAKE) $(ENAME) PLAT=mac_x32
|
$(MAKE) $(TARGET) PLAT=hp-ux
|
||||||
mac_x64:
|
darwin:
|
||||||
$(MAKE) $(ENAME) PLAT=mac_x64
|
$(MAKE) $(TARGET) PLAT=darwin
|
||||||
freebsd:
|
freebsd:
|
||||||
$(MAKE) $(ENAME) PLAT=freebsd
|
$(MAKE) $(TARGET) PLAT=freebsd
|
||||||
openbsd:
|
openbsd:
|
||||||
$(MAKE) $(ENAME) PLAT=openbsd
|
$(MAKE) $(TARGET) PLAT=openbsd
|
||||||
netbsd:
|
netbsd:
|
||||||
$(MAKE) $(ENAME) PLAT=netbsd
|
$(MAKE) $(TARGET) PLAT=netbsd
|
||||||
dragonfly:
|
dragonfly:
|
||||||
$(MAKE) $(ENAME) PLAT=dragonfly
|
$(MAKE) $(TARGET) PLAT=dragonfly
|
||||||
haiku:
|
haiku:
|
||||||
$(MAKE) $(ENAME) PLAT=haiku
|
$(MAKE) $(TARGET) PLAT=haiku
|
||||||
beos:
|
beos:
|
||||||
$(MAKE) $(ENAME) PLAT=beos
|
$(MAKE) $(TARGET) PLAT=beos
|
||||||
serenityos:
|
serenityos:
|
||||||
$(MAKE) $(ENAME) PLAT=serenityos
|
$(MAKE) $(TARGET) PLAT=serenityos
|
||||||
irix:
|
irix:
|
||||||
$(MAKE) $(ENAME) PLAT=irix
|
$(MAKE) $(TARGET) PLAT=irix
|
||||||
|
riscos:
|
||||||
# consoles builds require special handling, so are moved to
|
$(MAKE) $(TARGET) PLAT=riscos
|
||||||
|
wince:
|
||||||
|
$(MAKE) $(TARGET) PLAT=wince
|
||||||
|
# Default overrides
|
||||||
|
sdl2:
|
||||||
|
$(MAKE) $(TARGET) BUILD_SDL2=1
|
||||||
|
sdl3:
|
||||||
|
$(MAKE) $(TARGET) BUILD_SDL3=1
|
||||||
|
terminal:
|
||||||
|
$(MAKE) $(TARGET) BUILD_TERMINAL=1
|
||||||
|
release:
|
||||||
|
$(MAKE) $(TARGET) RELEASE=1
|
||||||
|
|
||||||
|
# Some builds require more complex handling, so are moved to
|
||||||
# separate makefiles to avoid having one giant messy makefile
|
# separate makefiles to avoid having one giant messy makefile
|
||||||
psp:
|
32x:
|
||||||
$(MAKE) -f src/Makefile_PSP PLAT=psp
|
$(MAKE) -f misc/32x/Makefile
|
||||||
3ds:
|
saturn:
|
||||||
$(MAKE) -f src/Makefile_3DS PLAT=3ds
|
$(MAKE) -f misc/saturn/Makefile
|
||||||
wii:
|
|
||||||
$(MAKE) -f src/Makefile_wii PLAT=wii
|
|
||||||
gamecube:
|
|
||||||
$(MAKE) -f src/Makefile_gamecube PLAT=gamecube
|
|
||||||
xbox:
|
|
||||||
$(MAKE) -f src/Makefile_xbox PLAT=xbox
|
|
||||||
vita:
|
|
||||||
$(MAKE) -f src/Makefile_vita PLAT=vita
|
|
||||||
dreamcast:
|
dreamcast:
|
||||||
$(MAKE) -f src/Makefile_dreamcast PLAT=dreamcast
|
$(MAKE) -f misc/dreamcast/Makefile
|
||||||
|
psp:
|
||||||
|
$(MAKE) -f misc/psp/Makefile
|
||||||
|
vita:
|
||||||
|
$(MAKE) -f misc/vita/Makefile
|
||||||
|
ps1:
|
||||||
|
$(MAKE) -f misc/ps1/Makefile
|
||||||
|
ps2:
|
||||||
|
$(MAKE) -f misc/ps2/Makefile
|
||||||
|
ps3:
|
||||||
|
$(MAKE) -f misc/ps3/Makefile
|
||||||
|
ps4:
|
||||||
|
$(MAKE) -f misc/ps4/Makefile
|
||||||
|
xbox:
|
||||||
|
$(MAKE) -f misc/xbox/Makefile
|
||||||
|
xbox360:
|
||||||
|
$(MAKE) -f misc/xbox360/Makefile
|
||||||
|
n64:
|
||||||
|
$(MAKE) -f misc/n64/Makefile
|
||||||
|
gba:
|
||||||
|
$(MAKE) -f misc/gba/Makefile
|
||||||
|
ds:
|
||||||
|
$(MAKE) -f misc/nds/Makefile
|
||||||
|
3ds:
|
||||||
|
$(MAKE) -f misc/3ds/Makefile
|
||||||
|
gamecube:
|
||||||
|
$(MAKE) -f misc/gc/Makefile
|
||||||
|
wii:
|
||||||
|
$(MAKE) -f misc/wii/Makefile
|
||||||
|
wiiu:
|
||||||
|
$(MAKE) -f misc/wiiu/Makefile
|
||||||
|
switch:
|
||||||
|
$(MAKE) -f misc/switch/Makefile
|
||||||
|
os/2:
|
||||||
|
$(MAKE) -f misc/os2/Makefile
|
||||||
|
dos:
|
||||||
|
$(MAKE) -f misc/msdos/Makefile
|
||||||
|
macclassic_68k:
|
||||||
|
$(MAKE) -f misc/macclassic/Makefile_68k
|
||||||
|
macclassic_ppc:
|
||||||
|
$(MAKE) -f misc/macclassic/Makefile_ppc
|
||||||
|
amiga_gcc:
|
||||||
|
$(MAKE) -f misc/amiga/Makefile_68k
|
||||||
|
amiga:
|
||||||
|
$(MAKE) -f misc/amiga/Makefile
|
||||||
|
atari_st:
|
||||||
|
$(MAKE) -f misc/atari_st/Makefile
|
||||||
|
|
||||||
|
# Cleans up all build .o files
|
||||||
clean:
|
clean:
|
||||||
$(DEL) $(OBJECTS)
|
$(RM) $(OBJECTS)
|
||||||
|
|
||||||
$(ENAME): $(OBJECTS)
|
|
||||||
$(CC) $(LDFLAGS) -o $@$(OEXT) $(OBJECTS) $(LIBS)
|
|
||||||
|
|
||||||
$(C_OBJECTS): %.o : %.c
|
#################################################
|
||||||
$(CC) $(CFLAGS) -c $< -o $@
|
# Source files and executable compilation section
|
||||||
|
#################################################
|
||||||
src/interop_cocoa.o: src/interop_cocoa.m
|
# Auto creates directories for build files (.o and .d files)
|
||||||
$(CC) $(CFLAGS) -c $< -o $@
|
$(BUILD_DIRS):
|
||||||
|
mkdir -p $@
|
||||||
src/interop_BeOS.o: src/interop_BeOS.cpp
|
|
||||||
$(CC) $(CFLAGS) -c $< -o $@
|
# Main executable (typically just 'ClassiCube' or 'ClassiCube.exe')
|
||||||
|
$(ENAME): $(BUILD_DIRS) $(OBJECTS)
|
||||||
|
$(LINK) $(LDFLAGS) -o $@$(OEXT) $(OBJECTS) $(EXTRA_LIBS) $(LIBS)
|
||||||
|
@echo "----------------------------------------------------"
|
||||||
|
@echo "Successfully compiled executable file: $(ENAME)"
|
||||||
|
@echo "----------------------------------------------------"
|
||||||
|
|
||||||
|
# macOS app bundle
|
||||||
|
$(ENAME).app : $(ENAME)
|
||||||
|
mkdir -p $(TARGET)/Contents/MacOS
|
||||||
|
mkdir -p $(TARGET)/Contents/Resources
|
||||||
|
cp $(ENAME) $(TARGET)/Contents/MacOS/$(ENAME)
|
||||||
|
cp misc/macOS/Info.plist $(TARGET)/Contents/Info.plist
|
||||||
|
cp misc/macOS/appicon.icns $(TARGET)/Contents/Resources/appicon.icns
|
||||||
|
|
||||||
|
|
||||||
|
# === Compiling with dependency tracking ===
|
||||||
|
# NOTE: Tracking dependencies might not work on older systems - disable this if so
|
||||||
|
ifeq ($(TRACK_DEPENDENCIES), 1)
|
||||||
|
|
||||||
|
DEPFLAGS = -MT $@ -MMD -MP -MF $(BUILD_DIR)/$*.d
|
||||||
|
DEPFILES := $(patsubst %.o, %.d, $(OBJECTS))
|
||||||
|
$(DEPFILES):
|
||||||
|
|
||||||
|
$(BUILD_DIR)/%.o : %.c $(BUILD_DIR)/%.d
|
||||||
|
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(DEPFLAGS) -c $< -o $@
|
||||||
|
$(BUILD_DIR)/%.o : %.cpp $(BUILD_DIR)/%.d
|
||||||
|
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(DEPFLAGS) -c $< -o $@
|
||||||
|
$(BUILD_DIR)/%.o : %.m $(BUILD_DIR)/%.d
|
||||||
|
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(DEPFLAGS) -c $< -o $@
|
||||||
|
|
||||||
|
include $(wildcard $(DEPFILES))
|
||||||
|
# === Compiling WITHOUT dependency tracking ===
|
||||||
|
else
|
||||||
|
|
||||||
|
$(BUILD_DIR)/%.o : %.c
|
||||||
|
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c $< -o $@
|
||||||
|
$(BUILD_DIR)/%.o : %.cpp
|
||||||
|
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c $< -o $@
|
||||||
|
endif
|
||||||
|
|
||||||
|
# EXTRA_CFLAGS and EXTRA_LIBS are not defined in the makefile intentionally -
|
||||||
|
# define them on the command line as a simple way of adding CFLAGS/LIBS
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,6 @@ set(${CMAKE_C_FLAGS}, "${CMAKE_C_FLAGS}")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11 -Wall -Werror")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11 -Wall -Werror")
|
||||||
|
|
||||||
add_library(classicube SHARED
|
add_library(classicube SHARED
|
||||||
../../src/Program.c
|
|
||||||
../../src/IsometricDrawer.c
|
../../src/IsometricDrawer.c
|
||||||
../../src/Builder.c
|
../../src/Builder.c
|
||||||
../../src/ExtMath.c
|
../../src/ExtMath.c
|
||||||
|
|
@ -31,7 +30,6 @@ add_library(classicube SHARED
|
||||||
../../src/Camera.c
|
../../src/Camera.c
|
||||||
../../src/Game.c
|
../../src/Game.c
|
||||||
../../src/GameVersion.c
|
../../src/GameVersion.c
|
||||||
../../src/Window_Android.c
|
|
||||||
../../src/_ftbase.c
|
../../src/_ftbase.c
|
||||||
../../src/Graphics_GL2.c
|
../../src/Graphics_GL2.c
|
||||||
../../src/Deflate.c
|
../../src/Deflate.c
|
||||||
|
|
@ -47,9 +45,8 @@ add_library(classicube SHARED
|
||||||
../../src/Vorbis.c
|
../../src/Vorbis.c
|
||||||
../../src/Protocol.c
|
../../src/Protocol.c
|
||||||
../../src/World.c
|
../../src/World.c
|
||||||
../../src/PickedPosRenderer.c
|
../../src/SelOutlineRenderer.c
|
||||||
../../src/Platform_Posix.c
|
../../src/Platform_Posix.c
|
||||||
../../src/Platform_Android.c
|
|
||||||
../../src/LScreens.c
|
../../src/LScreens.c
|
||||||
../../src/_truetype.c
|
../../src/_truetype.c
|
||||||
../../src/_ftglyph.c
|
../../src/_ftglyph.c
|
||||||
|
|
@ -98,12 +95,140 @@ add_library(classicube SHARED
|
||||||
../../src/Animations.c
|
../../src/Animations.c
|
||||||
../../src/LBackend.c
|
../../src/LBackend.c
|
||||||
../../src/SystemFonts.c
|
../../src/SystemFonts.c
|
||||||
|
../../src/Commands.c
|
||||||
|
../../src/EntityRenderers.c
|
||||||
|
../../src/Audio_SLES.c
|
||||||
|
../../src/TouchUI.c
|
||||||
|
../../src/LBackend_Android.c
|
||||||
|
../../src/InputHandler.c
|
||||||
|
../../src/MenuOptions.c
|
||||||
|
../../src/FancyLighting.c
|
||||||
|
../../src/Queue.c
|
||||||
|
../../src/SSL.c
|
||||||
|
../../src/Certs.c
|
||||||
|
../../src/android/Platform_Android.c
|
||||||
|
../../src/android/Window_Android.c
|
||||||
|
../../third_party/bearssl/aes_big_cbcdec.c
|
||||||
|
../../third_party/bearssl/aes_big_cbcenc.c
|
||||||
|
../../third_party/bearssl/aes_big_ctr.c
|
||||||
|
../../third_party/bearssl/aes_big_ctrcbc.c
|
||||||
|
../../third_party/bearssl/aes_big_dec.c
|
||||||
|
../../third_party/bearssl/aes_big_enc.c
|
||||||
|
../../third_party/bearssl/aes_common.c
|
||||||
|
../../third_party/bearssl/aesctr_drbg.c
|
||||||
|
../../third_party/bearssl/aes_x86ni.c
|
||||||
|
../../third_party/bearssl/aes_x86ni_cbcdec.c
|
||||||
|
../../third_party/bearssl/aes_x86ni_cbcenc.c
|
||||||
|
../../third_party/bearssl/aes_x86ni_ctr.c
|
||||||
|
../../third_party/bearssl/aes_x86ni_ctrcbc.c
|
||||||
|
../../third_party/bearssl/asn1enc.c
|
||||||
|
../../third_party/bearssl/ccm.c
|
||||||
|
../../third_party/bearssl/ccopy.c
|
||||||
|
../../third_party/bearssl/chacha20_ct.c
|
||||||
|
../../third_party/bearssl/chacha20_sse2.c
|
||||||
|
../../third_party/bearssl/dec32be.c
|
||||||
|
../../third_party/bearssl/dec32le.c
|
||||||
|
../../third_party/bearssl/dec64be.c
|
||||||
|
../../third_party/bearssl/dec64le.c
|
||||||
|
../../third_party/bearssl/dig_oid.c
|
||||||
|
../../third_party/bearssl/dig_size.c
|
||||||
|
../../third_party/bearssl/ec_all_m31.c
|
||||||
|
../../third_party/bearssl/ec_c25519_i31.c
|
||||||
|
../../third_party/bearssl/ec_c25519_m31.c
|
||||||
|
../../third_party/bearssl/ec_c25519_m62.c
|
||||||
|
../../third_party/bearssl/ec_c25519_m64.c
|
||||||
|
../../third_party/bearssl/ec_curve25519.c
|
||||||
|
../../third_party/bearssl/ec_default.c
|
||||||
|
../../third_party/bearssl/ecdsa_atr.c
|
||||||
|
../../third_party/bearssl/ecdsa_default_vrfy_asn1.c
|
||||||
|
../../third_party/bearssl/ecdsa_default_vrfy_raw.c
|
||||||
|
../../third_party/bearssl/ecdsa_i31_bits.c
|
||||||
|
../../third_party/bearssl/ecdsa_i31_vrfy_asn1.c
|
||||||
|
../../third_party/bearssl/ecdsa_i31_vrfy_raw.c
|
||||||
|
../../third_party/bearssl/ec_p256_m31.c
|
||||||
|
../../third_party/bearssl/ec_p256_m62.c
|
||||||
|
../../third_party/bearssl/ec_p256_m64.c
|
||||||
|
../../third_party/bearssl/ec_prime_i31.c
|
||||||
|
../../third_party/bearssl/ec_secp256r1.c
|
||||||
|
../../third_party/bearssl/ec_secp384r1.c
|
||||||
|
../../third_party/bearssl/ec_secp521r1.c
|
||||||
|
../../third_party/bearssl/enc32be.c
|
||||||
|
../../third_party/bearssl/enc32le.c
|
||||||
|
../../third_party/bearssl/enc64be.c
|
||||||
|
../../third_party/bearssl/enc64le.c
|
||||||
|
../../third_party/bearssl/gcm.c
|
||||||
|
../../third_party/bearssl/ghash_ctmul64.c
|
||||||
|
../../third_party/bearssl/ghash_ctmul.c
|
||||||
|
../../third_party/bearssl/ghash_pclmul.c
|
||||||
|
../../third_party/bearssl/hmac.c
|
||||||
|
../../third_party/bearssl/hmac_ct.c
|
||||||
|
../../third_party/bearssl/hmac_drbg.c
|
||||||
|
../../third_party/bearssl/i31_add.c
|
||||||
|
../../third_party/bearssl/i31_bitlen.c
|
||||||
|
../../third_party/bearssl/i31_decmod.c
|
||||||
|
../../third_party/bearssl/i31_decode.c
|
||||||
|
../../third_party/bearssl/i31_decred.c
|
||||||
|
../../third_party/bearssl/i31_encode.c
|
||||||
|
../../third_party/bearssl/i31_fmont.c
|
||||||
|
../../third_party/bearssl/i31_iszero.c
|
||||||
|
../../third_party/bearssl/i31_moddiv.c
|
||||||
|
../../third_party/bearssl/i31_modpow2.c
|
||||||
|
../../third_party/bearssl/i31_modpow.c
|
||||||
|
../../third_party/bearssl/i31_montmul.c
|
||||||
|
../../third_party/bearssl/i31_mulacc.c
|
||||||
|
../../third_party/bearssl/i31_muladd.c
|
||||||
|
../../third_party/bearssl/i31_ninv31.c
|
||||||
|
../../third_party/bearssl/i31_reduce.c
|
||||||
|
../../third_party/bearssl/i31_rshift.c
|
||||||
|
../../third_party/bearssl/i31_sub.c
|
||||||
|
../../third_party/bearssl/i31_tmont.c
|
||||||
|
../../third_party/bearssl/i32_div32.c
|
||||||
|
../../third_party/bearssl/i62_modpow2.c
|
||||||
|
../../third_party/bearssl/md5.c
|
||||||
|
../../third_party/bearssl/md5sha1.c
|
||||||
|
../../third_party/bearssl/multihash.c
|
||||||
|
../../third_party/bearssl/poly1305_ctmul.c
|
||||||
|
../../third_party/bearssl/poly1305_ctmulq.c
|
||||||
|
../../third_party/bearssl/prf.c
|
||||||
|
../../third_party/bearssl/prf_md5sha1.c
|
||||||
|
../../third_party/bearssl/prf_sha256.c
|
||||||
|
../../third_party/bearssl/prf_sha384.c
|
||||||
|
../../third_party/bearssl/rsa_default_pkcs1_vrfy.c
|
||||||
|
../../third_party/bearssl/rsa_default_priv.c
|
||||||
|
../../third_party/bearssl/rsa_default_pub.c
|
||||||
|
../../third_party/bearssl/rsa_i31_pkcs1_vrfy.c
|
||||||
|
../../third_party/bearssl/rsa_i31_priv.c
|
||||||
|
../../third_party/bearssl/rsa_i31_pub.c
|
||||||
|
../../third_party/bearssl/rsa_i62_pkcs1_vrfy.c
|
||||||
|
../../third_party/bearssl/rsa_i62_priv.c
|
||||||
|
../../third_party/bearssl/rsa_i62_pub.c
|
||||||
|
../../third_party/bearssl/rsa_pkcs1_sig_unpad.c
|
||||||
|
../../third_party/bearssl/sha1.c
|
||||||
|
../../third_party/bearssl/sha2big.c
|
||||||
|
../../third_party/bearssl/sha2small.c
|
||||||
|
../../third_party/bearssl/ssl_client.c
|
||||||
|
../../third_party/bearssl/ssl_client_default_rsapub.c
|
||||||
|
../../third_party/bearssl/ssl_client_full.c
|
||||||
|
../../third_party/bearssl/ssl_engine.c
|
||||||
|
../../third_party/bearssl/ssl_engine_default_aescbc.c
|
||||||
|
../../third_party/bearssl/ssl_engine_default_aesccm.c
|
||||||
|
../../third_party/bearssl/ssl_engine_default_aesgcm.c
|
||||||
|
../../third_party/bearssl/ssl_engine_default_chapol.c
|
||||||
|
../../third_party/bearssl/ssl_engine_default_ec.c
|
||||||
|
../../third_party/bearssl/ssl_engine_default_ecdsa.c
|
||||||
|
../../third_party/bearssl/ssl_engine_default_rsavrfy.c
|
||||||
|
../../third_party/bearssl/ssl_hashes.c
|
||||||
|
../../third_party/bearssl/ssl_hs_client.c
|
||||||
|
../../third_party/bearssl/ssl_io.c
|
||||||
|
../../third_party/bearssl/ssl_rec_cbc.c
|
||||||
|
../../third_party/bearssl/ssl_rec_ccm.c
|
||||||
|
../../third_party/bearssl/ssl_rec_chapol.c
|
||||||
|
../../third_party/bearssl/ssl_rec_gcm.c
|
||||||
|
../../third_party/bearssl/x509_minimal.c
|
||||||
|
../../third_party/bearssl/x509_minimal_full.c
|
||||||
)
|
)
|
||||||
|
|
||||||
# add lib dependencies
|
|
||||||
target_link_libraries(classicube
|
target_link_libraries(classicube
|
||||||
android
|
|
||||||
EGL
|
EGL
|
||||||
GLESv2
|
GLESv2
|
||||||
log
|
log)
|
||||||
OpenSLES)
|
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,8 @@
|
||||||
<!-- BEGIN_INCLUDE(manifest) -->
|
<!-- BEGIN_INCLUDE(manifest) -->
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="com.classicube.android.client"
|
package="com.classicube.android.client"
|
||||||
android:versionCode="1"
|
android:versionCode="1370"
|
||||||
android:versionName="1.0">
|
android:versionName="1.3.7">
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="18" />
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="18" />
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,57 @@
|
||||||
|
package com.classicube;
|
||||||
|
import android.view.InputDevice;
|
||||||
|
import android.view.MotionEvent;
|
||||||
|
import android.view.View;
|
||||||
|
|
||||||
|
public class CCMotionListener implements View.OnGenericMotionListener {
|
||||||
|
MainActivity activity;
|
||||||
|
|
||||||
|
public CCMotionListener(MainActivity activity) {
|
||||||
|
this.activity = activity;
|
||||||
|
}
|
||||||
|
|
||||||
|
// https://developer.android.com/develop/ui/views/touch-and-input/game-controllers/controller-input#java
|
||||||
|
@Override
|
||||||
|
public boolean onGenericMotion(View view, MotionEvent event) {
|
||||||
|
if (event.getAction() != MotionEvent.ACTION_MOVE) return false;
|
||||||
|
boolean source_joystick = (event.getSource() & InputDevice.SOURCE_JOYSTICK) == InputDevice.SOURCE_JOYSTICK;
|
||||||
|
boolean source_gamepad = (event.getSource() & InputDevice.SOURCE_GAMEPAD) == InputDevice.SOURCE_GAMEPAD;
|
||||||
|
|
||||||
|
if (source_joystick || source_gamepad) {
|
||||||
|
int historySize = event.getHistorySize();
|
||||||
|
for (int i = 0; i < historySize; i++) {
|
||||||
|
processJoystickInput(event, i);
|
||||||
|
}
|
||||||
|
|
||||||
|
processJoystickInput(event, -1);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void processJoystickInput(MotionEvent event, int historyPos) {
|
||||||
|
float x1 = getAxisValue(event, MotionEvent.AXIS_X, historyPos);
|
||||||
|
float y1 = getAxisValue(event, MotionEvent.AXIS_Y, historyPos);
|
||||||
|
|
||||||
|
float x2 = getAxisValue(event, MotionEvent.AXIS_Z, historyPos);
|
||||||
|
float y2 = getAxisValue(event, MotionEvent.AXIS_RZ, historyPos);
|
||||||
|
|
||||||
|
if (x1 != 0 || y1 != 0)
|
||||||
|
pushAxisMovement(MainActivity.CMD_GPAD_AXISL, x1, y1);
|
||||||
|
if (x2 != 0 || y2 != 0)
|
||||||
|
pushAxisMovement(MainActivity.CMD_GPAD_AXISR, x2, y2);
|
||||||
|
}
|
||||||
|
|
||||||
|
float getAxisValue(MotionEvent event, int axis, int historyPos) {
|
||||||
|
float value = historyPos < 0 ? event.getAxisValue(axis) :
|
||||||
|
event.getHistoricalAxisValue(axis, historyPos);
|
||||||
|
|
||||||
|
// Deadzone detection
|
||||||
|
if (value >= -0.25f && value <= 0.25f) value = 0;
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
void pushAxisMovement(int axis, float x, float y) {
|
||||||
|
activity.pushCmd(axis, (int)(x * 4096), (int)(y * 4096));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,108 @@
|
||||||
|
package com.classicube;
|
||||||
|
import android.text.Editable;
|
||||||
|
import android.text.Selection;
|
||||||
|
import android.text.SpannableStringBuilder;
|
||||||
|
import android.view.KeyEvent;
|
||||||
|
import android.view.MotionEvent;
|
||||||
|
import android.view.SurfaceView;
|
||||||
|
import android.view.inputmethod.BaseInputConnection;
|
||||||
|
import android.view.inputmethod.EditorInfo;
|
||||||
|
import android.view.inputmethod.InputConnection;
|
||||||
|
|
||||||
|
public class CCView extends SurfaceView {
|
||||||
|
SpannableStringBuilder kbText;
|
||||||
|
MainActivity activity;
|
||||||
|
|
||||||
|
public CCView(MainActivity activity) {
|
||||||
|
// setFocusable, setFocusableInTouchMode - API level 1
|
||||||
|
super(activity);
|
||||||
|
this.activity = activity;
|
||||||
|
setFocusable(true);
|
||||||
|
setFocusableInTouchMode(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean dispatchTouchEvent(MotionEvent ev) {
|
||||||
|
return activity.handleTouchEvent(ev) || super.dispatchTouchEvent(ev);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public InputConnection onCreateInputConnection(EditorInfo attrs) {
|
||||||
|
// BaseInputConnection, IME_ACTION_GO, IME_FLAG_NO_EXTRACT_UI - API level 3
|
||||||
|
attrs.actionLabel = null;
|
||||||
|
attrs.inputType = MainActivity.calcKeyboardType(activity.keyboardType);
|
||||||
|
attrs.imeOptions = MainActivity.calcKeyboardOptions(activity.keyboardType);
|
||||||
|
|
||||||
|
kbText = new SpannableStringBuilder(activity.keyboardText);
|
||||||
|
|
||||||
|
InputConnection ic = new BaseInputConnection(this, true) {
|
||||||
|
boolean inited;
|
||||||
|
|
||||||
|
void updateText() {
|
||||||
|
activity.pushCmd(MainActivity.CMD_KEY_TEXT, kbText.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Editable getEditable() {
|
||||||
|
if (!inited) {
|
||||||
|
// needed to set selection, otherwise random crashes later with backspacing
|
||||||
|
// set selection to end, so backspacing after opening keyboard with text still works
|
||||||
|
Selection.setSelection(kbText, kbText.toString().length());
|
||||||
|
inited = true;
|
||||||
|
}
|
||||||
|
return kbText;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean setComposingText(CharSequence text, int newCursorPosition) {
|
||||||
|
boolean success = super.setComposingText(text, newCursorPosition);
|
||||||
|
updateText();
|
||||||
|
return success;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean deleteSurroundingText(int beforeLength, int afterLength) {
|
||||||
|
boolean success = super.deleteSurroundingText(beforeLength, afterLength);
|
||||||
|
updateText();
|
||||||
|
return success;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean commitText(CharSequence text, int newCursorPosition) {
|
||||||
|
boolean success = super.commitText(text, newCursorPosition);
|
||||||
|
updateText();
|
||||||
|
return success;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean sendKeyEvent(KeyEvent ev) {
|
||||||
|
// getSelectionStart - API level 1
|
||||||
|
if (ev.getAction() != KeyEvent.ACTION_DOWN) return super.sendKeyEvent(ev);
|
||||||
|
int code = ev.getKeyCode();
|
||||||
|
int uni = ev.getUnicodeChar();
|
||||||
|
|
||||||
|
// start is -1 sometimes, and trying to insert/delete there crashes
|
||||||
|
int start = Selection.getSelectionStart(kbText);
|
||||||
|
if (start == -1) start = kbText.toString().length();
|
||||||
|
|
||||||
|
if (code == KeyEvent.KEYCODE_ENTER) {
|
||||||
|
// enter maps to \n but that should not be intercepted
|
||||||
|
} else if (code == KeyEvent.KEYCODE_DEL) {
|
||||||
|
if (start <= 0) return false;
|
||||||
|
kbText.delete(start - 1, start);
|
||||||
|
updateText();
|
||||||
|
return false;
|
||||||
|
} else if (uni != 0) {
|
||||||
|
kbText.insert(start, String.valueOf((char) uni));
|
||||||
|
updateText();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return super.sendKeyEvent(ev);
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
//String text = MainActivity.this.keyboardText;
|
||||||
|
//if (text != null) ic.setComposingText(text, 0);
|
||||||
|
return ic;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,14 +1,14 @@
|
||||||
package com.classicube;
|
package com.classicube;
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.lang.reflect.Method;
|
import java.security.KeyStore;
|
||||||
import java.net.HttpURLConnection;
|
import java.security.cert.CertificateFactory;
|
||||||
import java.net.URL;
|
import java.security.cert.X509Certificate;
|
||||||
import java.nio.file.Files;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Queue;
|
import java.util.Queue;
|
||||||
|
|
@ -23,30 +23,31 @@ import android.content.Intent;
|
||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
|
import android.graphics.Canvas;
|
||||||
|
import android.graphics.Color;
|
||||||
import android.graphics.PixelFormat;
|
import android.graphics.PixelFormat;
|
||||||
|
import android.graphics.Rect;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.provider.OpenableColumns;
|
import android.provider.OpenableColumns;
|
||||||
import android.provider.Settings.Secure;
|
import android.provider.Settings.Secure;
|
||||||
import android.text.Editable;
|
|
||||||
import android.text.InputType;
|
import android.text.InputType;
|
||||||
import android.text.Selection;
|
|
||||||
import android.text.SpannableStringBuilder;
|
|
||||||
import android.util.DisplayMetrics;
|
import android.util.DisplayMetrics;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
import android.view.Surface;
|
import android.view.Surface;
|
||||||
import android.view.SurfaceHolder;
|
import android.view.SurfaceHolder;
|
||||||
import android.view.SurfaceView;
|
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.Window;
|
import android.view.Window;
|
||||||
import android.view.inputmethod.BaseInputConnection;
|
|
||||||
import android.view.inputmethod.EditorInfo;
|
import android.view.inputmethod.EditorInfo;
|
||||||
import android.view.inputmethod.InputConnection;
|
|
||||||
import android.view.inputmethod.InputMethodManager;
|
import android.view.inputmethod.InputMethodManager;
|
||||||
|
|
||||||
|
import javax.net.ssl.TrustManager;
|
||||||
|
import javax.net.ssl.TrustManagerFactory;
|
||||||
|
import javax.net.ssl.X509TrustManager;
|
||||||
|
|
||||||
// This class contains all the glue/interop code for bridging ClassiCube to the java Android world.
|
// This class contains all the glue/interop code for bridging ClassiCube to the java Android world.
|
||||||
// Some functionality is only available on later Android versions - try {} catch {} is used in such places
|
// Some functionality is only available on later Android versions - try {} catch {} is used in such places
|
||||||
// to ensure that the game can still run on earlier Android versions (albeit with reduced functionality)
|
// to ensure that the game can still run on earlier Android versions (albeit with reduced functionality)
|
||||||
|
|
@ -57,6 +58,7 @@ import android.view.inputmethod.InputMethodManager;
|
||||||
// implements InputQueue.Callback
|
// implements InputQueue.Callback
|
||||||
public class MainActivity extends Activity
|
public class MainActivity extends Activity
|
||||||
{
|
{
|
||||||
|
public boolean launcher;
|
||||||
// ==================================================================
|
// ==================================================================
|
||||||
// ---------------------------- COMMANDS ----------------------------
|
// ---------------------------- COMMANDS ----------------------------
|
||||||
// ==================================================================
|
// ==================================================================
|
||||||
|
|
@ -72,21 +74,29 @@ public class MainActivity extends Activity
|
||||||
NativeCmdArgs args = freeCmds.poll();
|
NativeCmdArgs args = freeCmds.poll();
|
||||||
return args != null ? args : new NativeCmdArgs();
|
return args != null ? args : new NativeCmdArgs();
|
||||||
}
|
}
|
||||||
|
|
||||||
void pushCmd(int cmd) {
|
public void pushCmd(int cmd) {
|
||||||
NativeCmdArgs args = getCmdArgs();
|
NativeCmdArgs args = getCmdArgs();
|
||||||
args.cmd = cmd;
|
args.cmd = cmd;
|
||||||
pending.add(args);
|
pending.add(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pushCmd(int cmd, int a1) {
|
public void pushCmd(int cmd, int a1) {
|
||||||
NativeCmdArgs args = getCmdArgs();
|
NativeCmdArgs args = getCmdArgs();
|
||||||
args.cmd = cmd;
|
args.cmd = cmd;
|
||||||
args.arg1 = a1;
|
args.arg1 = a1;
|
||||||
pending.add(args);
|
pending.add(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void pushCmd(int cmd, int a1, int a2) {
|
||||||
|
NativeCmdArgs args = getCmdArgs();
|
||||||
|
args.cmd = cmd;
|
||||||
|
args.arg1 = a1;
|
||||||
|
args.arg2 = a2;
|
||||||
|
pending.add(args);
|
||||||
|
}
|
||||||
|
|
||||||
void pushCmd(int cmd, int a1, int a2, int a3, int a4) {
|
public void pushCmd(int cmd, int a1, int a2, int a3, int a4) {
|
||||||
NativeCmdArgs args = getCmdArgs();
|
NativeCmdArgs args = getCmdArgs();
|
||||||
args.cmd = cmd;
|
args.cmd = cmd;
|
||||||
args.arg1 = a1;
|
args.arg1 = a1;
|
||||||
|
|
@ -96,45 +106,65 @@ public class MainActivity extends Activity
|
||||||
pending.add(args);
|
pending.add(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pushCmd(int cmd, String text) {
|
public void pushCmd(int cmd, String text) {
|
||||||
NativeCmdArgs args = getCmdArgs();
|
NativeCmdArgs args = getCmdArgs();
|
||||||
args.cmd = cmd;
|
args.cmd = cmd;
|
||||||
args.str = text;
|
args.str = text;
|
||||||
pending.add(args);
|
pending.add(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pushCmd(int cmd, Surface surface) {
|
public void pushCmd(int cmd, int a1, String str) {
|
||||||
NativeCmdArgs args = getCmdArgs();
|
NativeCmdArgs args = getCmdArgs();
|
||||||
args.cmd = cmd;
|
args.cmd = cmd;
|
||||||
args.sur = surface;
|
args.arg1 = a1;
|
||||||
|
args.str = str;
|
||||||
|
pending.add(args);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void pushCmd(int cmd, SurfaceHolder holder) {
|
||||||
|
NativeCmdArgs args = getCmdArgs();
|
||||||
|
Rect rect = holder.getSurfaceFrame();
|
||||||
|
|
||||||
|
args.cmd = cmd;
|
||||||
|
args.sur = holder.getSurface();
|
||||||
|
args.arg1 = rect.width();
|
||||||
|
args.arg2 = rect.height();
|
||||||
pending.add(args);
|
pending.add(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
final static int CMD_KEY_DOWN = 0;
|
public final static int CMD_KEY_DOWN = 0;
|
||||||
final static int CMD_KEY_UP = 1;
|
public final static int CMD_KEY_UP = 1;
|
||||||
final static int CMD_KEY_CHAR = 2;
|
public final static int CMD_KEY_CHAR = 2;
|
||||||
final static int CMD_POINTER_DOWN = 3;
|
public final static int CMD_POINTER_DOWN = 3;
|
||||||
final static int CMD_POINTER_UP = 4;
|
public final static int CMD_POINTER_UP = 4;
|
||||||
final static int CMD_POINTER_MOVE = 5;
|
public final static int CMD_POINTER_MOVE = 5;
|
||||||
|
|
||||||
final static int CMD_WIN_CREATED = 6;
|
|
||||||
final static int CMD_WIN_DESTROYED = 7;
|
|
||||||
final static int CMD_WIN_RESIZED = 8;
|
|
||||||
final static int CMD_WIN_REDRAW = 9;
|
|
||||||
|
|
||||||
final static int CMD_APP_START = 10;
|
public final static int CMD_WIN_CREATED = 6;
|
||||||
final static int CMD_APP_STOP = 11;
|
public final static int CMD_WIN_DESTROYED = 7;
|
||||||
final static int CMD_APP_RESUME = 12;
|
public final static int CMD_WIN_RESIZED = 8;
|
||||||
final static int CMD_APP_PAUSE = 13;
|
public final static int CMD_WIN_REDRAW = 9;
|
||||||
final static int CMD_APP_DESTROY = 14;
|
|
||||||
|
|
||||||
final static int CMD_GOT_FOCUS = 15;
|
public final static int CMD_APP_START = 10;
|
||||||
final static int CMD_LOST_FOCUS = 16;
|
public final static int CMD_APP_STOP = 11;
|
||||||
final static int CMD_CONFIG_CHANGED = 17;
|
public final static int CMD_APP_RESUME = 12;
|
||||||
final static int CMD_LOW_MEMORY = 18;
|
public final static int CMD_APP_PAUSE = 13;
|
||||||
|
public final static int CMD_APP_DESTROY = 14;
|
||||||
|
|
||||||
final static int CMD_KEY_TEXT = 19;
|
public final static int CMD_GOT_FOCUS = 15;
|
||||||
final static int CMD_OFD_RESULT = 20;
|
public final static int CMD_LOST_FOCUS = 16;
|
||||||
|
public final static int CMD_CONFIG_CHANGED = 17;
|
||||||
|
public final static int CMD_LOW_MEMORY = 18;
|
||||||
|
|
||||||
|
public final static int CMD_KEY_TEXT = 19;
|
||||||
|
public final static int CMD_OFD_RESULT = 20;
|
||||||
|
|
||||||
|
public final static int CMD_UI_CREATED = 21;
|
||||||
|
public final static int CMD_UI_CLICKED = 22;
|
||||||
|
public final static int CMD_UI_CHANGED = 23;
|
||||||
|
public final static int CMD_UI_STRING = 24;
|
||||||
|
|
||||||
|
public final static int CMD_GPAD_AXISL = 25;
|
||||||
|
public final static int CMD_GPAD_AXISR = 26;
|
||||||
|
|
||||||
|
|
||||||
// ====================================================================
|
// ====================================================================
|
||||||
|
|
@ -321,10 +351,13 @@ public class MainActivity extends Activity
|
||||||
case CMD_POINTER_DOWN: processPointerDown(c.arg1, c.arg2, c.arg3, c.arg4); break;
|
case CMD_POINTER_DOWN: processPointerDown(c.arg1, c.arg2, c.arg3, c.arg4); break;
|
||||||
case CMD_POINTER_UP: processPointerUp( c.arg1, c.arg2, c.arg3, c.arg4); break;
|
case CMD_POINTER_UP: processPointerUp( c.arg1, c.arg2, c.arg3, c.arg4); break;
|
||||||
case CMD_POINTER_MOVE: processPointerMove(c.arg1, c.arg2, c.arg3, c.arg4); break;
|
case CMD_POINTER_MOVE: processPointerMove(c.arg1, c.arg2, c.arg3, c.arg4); break;
|
||||||
|
|
||||||
case CMD_WIN_CREATED: processSurfaceCreated(c.sur); break;
|
case CMD_GPAD_AXISL: processJoystickL(c.arg1, c.arg2); break;
|
||||||
|
case CMD_GPAD_AXISR: processJoystickR(c.arg1, c.arg2); break;
|
||||||
|
|
||||||
|
case CMD_WIN_CREATED: processSurfaceCreated(c.sur, c.arg1, c.arg2); break;
|
||||||
case CMD_WIN_DESTROYED: processSurfaceDestroyed(); break;
|
case CMD_WIN_DESTROYED: processSurfaceDestroyed(); break;
|
||||||
case CMD_WIN_RESIZED: processSurfaceResized(c.sur); break;
|
case CMD_WIN_RESIZED: processSurfaceResized(c.arg1, c.arg2); break;
|
||||||
case CMD_WIN_REDRAW: processSurfaceRedrawNeeded(); break;
|
case CMD_WIN_REDRAW: processSurfaceRedrawNeeded(); break;
|
||||||
|
|
||||||
case CMD_APP_START: processOnStart(); break;
|
case CMD_APP_START: processOnStart(); break;
|
||||||
|
|
@ -356,9 +389,12 @@ public class MainActivity extends Activity
|
||||||
native void processPointerUp( int id, int x, int y, int isMouse);
|
native void processPointerUp( int id, int x, int y, int isMouse);
|
||||||
native void processPointerMove(int id, int x, int y, int isMouse);
|
native void processPointerMove(int id, int x, int y, int isMouse);
|
||||||
|
|
||||||
native void processSurfaceCreated(Surface sur);
|
native void processJoystickL(int x, int y);
|
||||||
|
native void processJoystickR(int x, int y);
|
||||||
|
|
||||||
|
native void processSurfaceCreated(Surface sur, int w, int h);
|
||||||
native void processSurfaceDestroyed();
|
native void processSurfaceDestroyed();
|
||||||
native void processSurfaceResized(Surface sur);
|
native void processSurfaceResized(int w, int h);
|
||||||
native void processSurfaceRedrawNeeded();
|
native void processSurfaceRedrawNeeded();
|
||||||
|
|
||||||
native void processOnStart();
|
native void processOnStart();
|
||||||
|
|
@ -385,20 +421,43 @@ public class MainActivity extends Activity
|
||||||
// static to persist across activity destroy/create
|
// static to persist across activity destroy/create
|
||||||
static final Semaphore winDestroyedSem = new Semaphore(0, true);
|
static final Semaphore winDestroyedSem = new Semaphore(0, true);
|
||||||
SurfaceHolder.Callback callback;
|
SurfaceHolder.Callback callback;
|
||||||
CCView curView;
|
public View curView;
|
||||||
|
|
||||||
|
public void setActiveView(View view) {
|
||||||
|
// setContentView, requestFocus - API level 1
|
||||||
|
curView = view;
|
||||||
|
setContentView(view);
|
||||||
|
curView.requestFocus();
|
||||||
|
|
||||||
|
if (fullscreen) setUIVisibility(FULLSCREEN_FLAGS);
|
||||||
|
hookMotionListener(view);
|
||||||
|
}
|
||||||
|
|
||||||
|
void hookMotionListener(View view) {
|
||||||
|
try {
|
||||||
|
CCMotionListener listener = new CCMotionListener(this);
|
||||||
|
view.setOnGenericMotionListener(listener);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
// Unsupported on android 12
|
||||||
|
} catch (NoClassDefFoundError ex) {
|
||||||
|
// Unsupported on android 12
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// SurfaceHolder.Callback - API level 1
|
// SurfaceHolder.Callback - API level 1
|
||||||
class CCSurfaceCallback implements SurfaceHolder.Callback {
|
class CCSurfaceCallback implements SurfaceHolder.Callback {
|
||||||
public void surfaceCreated(SurfaceHolder holder) {
|
public void surfaceCreated(SurfaceHolder holder) {
|
||||||
// getSurface - API level 1
|
// getSurface - API level 1
|
||||||
Log.i("CC_WIN", "win created " + holder.getSurface());
|
Log.i("CC_WIN", "win created " + holder.getSurface());
|
||||||
MainActivity.this.pushCmd(CMD_WIN_CREATED, holder.getSurface());
|
Rect r = holder.getSurfaceFrame();
|
||||||
|
MainActivity.this.pushCmd(CMD_WIN_CREATED, holder);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
|
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
|
||||||
// getSurface - API level 1
|
// getSurface - API level 1
|
||||||
Log.i("CC_WIN", "win changed " + holder.getSurface());
|
Log.i("CC_WIN", "win changed " + holder.getSurface());
|
||||||
MainActivity.this.pushCmd(CMD_WIN_RESIZED, holder.getSurface());
|
Rect r = holder.getSurfaceFrame();
|
||||||
|
MainActivity.this.pushCmd(CMD_WIN_RESIZED, holder);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void surfaceDestroyed(SurfaceHolder holder) {
|
public void surfaceDestroyed(SurfaceHolder holder) {
|
||||||
|
|
@ -449,107 +508,11 @@ public class MainActivity extends Activity
|
||||||
void attachSurface() {
|
void attachSurface() {
|
||||||
// setContentView, requestFocus, getHolder, addCallback, RGBX_8888 - API level 1
|
// setContentView, requestFocus, getHolder, addCallback, RGBX_8888 - API level 1
|
||||||
createSurfaceCallback();
|
createSurfaceCallback();
|
||||||
curView = new CCView(this);
|
CCView view = new CCView(this);
|
||||||
curView.getHolder().addCallback(callback);
|
view.getHolder().addCallback(callback);
|
||||||
curView.getHolder().setFormat(PixelFormat.RGBX_8888);
|
view.getHolder().setFormat(PixelFormat.RGBX_8888);
|
||||||
|
|
||||||
setContentView(curView);
|
|
||||||
curView.requestFocus();
|
|
||||||
if (fullscreen) setUIVisibility(FULLSCREEN_FLAGS);
|
|
||||||
}
|
|
||||||
|
|
||||||
class CCView extends SurfaceView {
|
setActiveView(view);
|
||||||
SpannableStringBuilder kbText;
|
|
||||||
|
|
||||||
public CCView(Context context) {
|
|
||||||
// setFocusable, setFocusableInTouchMode - API level 1
|
|
||||||
super(context);
|
|
||||||
setFocusable(true);
|
|
||||||
setFocusableInTouchMode(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean dispatchTouchEvent(MotionEvent ev) {
|
|
||||||
return MainActivity.this.handleTouchEvent(ev) || super.dispatchTouchEvent(ev);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public InputConnection onCreateInputConnection(EditorInfo attrs) {
|
|
||||||
// BaseInputConnection, IME_ACTION_GO, IME_FLAG_NO_EXTRACT_UI - API level 3
|
|
||||||
attrs.actionLabel = null;
|
|
||||||
attrs.inputType = MainActivity.this.getKeyboardType();
|
|
||||||
attrs.imeOptions = MainActivity.this.getKeyboardOptions();
|
|
||||||
|
|
||||||
kbText = new SpannableStringBuilder(MainActivity.this.keyboardText);
|
|
||||||
|
|
||||||
InputConnection ic = new BaseInputConnection(this, true) {
|
|
||||||
boolean inited;
|
|
||||||
void updateText() { MainActivity.this.pushCmd(CMD_KEY_TEXT, kbText.toString()); }
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Editable getEditable() {
|
|
||||||
if (!inited) {
|
|
||||||
// needed to set selection, otherwise random crashes later with backspacing
|
|
||||||
// set selection to end, so backspacing after opening keyboard with text still works
|
|
||||||
Selection.setSelection(kbText, kbText.toString().length());
|
|
||||||
inited = true;
|
|
||||||
}
|
|
||||||
return kbText;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean setComposingText(CharSequence text, int newCursorPosition) {
|
|
||||||
boolean success = super.setComposingText(text, newCursorPosition);
|
|
||||||
updateText();
|
|
||||||
return success;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean deleteSurroundingText(int beforeLength, int afterLength) {
|
|
||||||
|
|
||||||
boolean success = super.deleteSurroundingText(beforeLength, afterLength);
|
|
||||||
updateText();
|
|
||||||
return success;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean commitText(CharSequence text, int newCursorPosition) {
|
|
||||||
boolean success = super.commitText(text, newCursorPosition);
|
|
||||||
updateText();
|
|
||||||
return success;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean sendKeyEvent(KeyEvent ev) {
|
|
||||||
// getSelectionStart - API level 1
|
|
||||||
if (ev.getAction() != KeyEvent.ACTION_DOWN) return super.sendKeyEvent(ev);
|
|
||||||
int code = ev.getKeyCode();
|
|
||||||
int uni = ev.getUnicodeChar();
|
|
||||||
|
|
||||||
// start is -1 sometimes, and trying to insert/delete there crashes
|
|
||||||
int start = Selection.getSelectionStart(kbText);
|
|
||||||
if (start == -1) start = kbText.toString().length();
|
|
||||||
|
|
||||||
if (code == KeyEvent.KEYCODE_ENTER) {
|
|
||||||
// enter maps to \n but that should not be intercepted
|
|
||||||
} else if (code == KeyEvent.KEYCODE_DEL) {
|
|
||||||
if (start <= 0) return false;
|
|
||||||
kbText.delete(start - 1, start);
|
|
||||||
updateText();
|
|
||||||
return false;
|
|
||||||
} else if (uni != 0) {
|
|
||||||
kbText.insert(start, String.valueOf((char)uni));
|
|
||||||
updateText();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return super.sendKeyEvent(ev);
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
//String text = MainActivity.this.keyboardText;
|
|
||||||
//if (text != null) ic.setComposingText(text, 0);
|
|
||||||
return ic;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -655,8 +618,9 @@ public class MainActivity extends Activity
|
||||||
if (curView == null) return;
|
if (curView == null) return;
|
||||||
|
|
||||||
// Try to avoid restarting input if possible
|
// Try to avoid restarting input if possible
|
||||||
if (curView.kbText != null) {
|
CCView view = (CCView)curView;
|
||||||
String curText = curView.kbText.toString();
|
if (view.kbText != null) {
|
||||||
|
String curText = view.kbText.toString();
|
||||||
if (text.equals(curText)) return;
|
if (text.equals(curText)) return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -668,9 +632,9 @@ public class MainActivity extends Activity
|
||||||
input.restartInput(curView);
|
input.restartInput(curView);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getKeyboardType() {
|
public static int calcKeyboardType(int kbType) {
|
||||||
// TYPE_CLASS_TEXT, TYPE_CLASS_NUMBER, TYPE_TEXT_VARIATION_PASSWORD - API level 3
|
// TYPE_CLASS_TEXT, TYPE_CLASS_NUMBER, TYPE_TEXT_VARIATION_PASSWORD - API level 3
|
||||||
int type = keyboardType & 0xFF;
|
int type = kbType & 0xFF;
|
||||||
|
|
||||||
if (type == 2) return InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD;
|
if (type == 2) return InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD;
|
||||||
if (type == 1) return InputType.TYPE_CLASS_NUMBER; // KEYBOARD_TYPE_NUMERIC
|
if (type == 1) return InputType.TYPE_CLASS_NUMBER; // KEYBOARD_TYPE_NUMERIC
|
||||||
|
|
@ -678,9 +642,9 @@ public class MainActivity extends Activity
|
||||||
return InputType.TYPE_CLASS_TEXT;
|
return InputType.TYPE_CLASS_TEXT;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getKeyboardOptions() {
|
public static int calcKeyboardOptions(int kbType) {
|
||||||
// IME_ACTION_GO, IME_FLAG_NO_EXTRACT_UI - API level 3
|
// IME_ACTION_GO, IME_FLAG_NO_EXTRACT_UI - API level 3
|
||||||
if ((keyboardType & 0x100) != 0) {
|
if ((kbType & 0x100) != 0) {
|
||||||
return EditorInfo.IME_ACTION_SEND | EditorInfo.IME_FLAG_NO_EXTRACT_UI;
|
return EditorInfo.IME_ACTION_SEND | EditorInfo.IME_FLAG_NO_EXTRACT_UI;
|
||||||
} else {
|
} else {
|
||||||
return EditorInfo.IME_ACTION_GO | EditorInfo.IME_FLAG_NO_EXTRACT_UI;
|
return EditorInfo.IME_ACTION_GO | EditorInfo.IME_FLAG_NO_EXTRACT_UI;
|
||||||
|
|
@ -950,108 +914,100 @@ public class MainActivity extends Activity
|
||||||
|
|
||||||
|
|
||||||
// ======================================================================
|
// ======================================================================
|
||||||
// -------------------------------- HTTP --------------------------------
|
// -------------------------------- SSL ---------------------------------
|
||||||
// ======================================================================
|
// ======================================================================
|
||||||
// Implements java Android side of the Android HTTP backend (See Http.c)
|
static X509TrustManager trust;
|
||||||
static HttpURLConnection conn;
|
static CertificateFactory certFactory;
|
||||||
static InputStream src;
|
static ArrayList<X509Certificate> chain = new ArrayList<X509Certificate>();
|
||||||
static byte[] readCache = new byte[8192];
|
|
||||||
|
|
||||||
public static int httpInit(String url, String method) {
|
static X509TrustManager CreateTrust() throws Exception {
|
||||||
try {
|
TrustManagerFactory factory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
|
||||||
conn = (HttpURLConnection)new URL(url).openConnection();
|
// Load default Trust Anchor certificates
|
||||||
conn.setDoInput(true);
|
factory.init((KeyStore)null);
|
||||||
conn.setRequestMethod(method);
|
|
||||||
conn.setInstanceFollowRedirects(true);
|
TrustManager[] trustManagers = factory.getTrustManagers();
|
||||||
|
for (int i = 0; i < trustManagers.length; i++)
|
||||||
httpAddMethodHeaders(method);
|
{
|
||||||
return 0;
|
// Should be first entry, e.g. X509TrustManagerImpl
|
||||||
} catch (Exception ex) {
|
if (trustManagers[i] instanceof X509TrustManager)
|
||||||
return httpOnError(ex);
|
return (X509TrustManager)trustManagers[i];
|
||||||
}
|
}
|
||||||
}
|
return null;
|
||||||
|
|
||||||
static void httpAddMethodHeaders(String method) {
|
|
||||||
if (!method.equals("HEAD")) return;
|
|
||||||
|
|
||||||
// Ever since dropbox switched to to chunked transfer encoding,
|
|
||||||
// sending a HEAD request to dropbox always seems to result in the
|
|
||||||
// next GET request failing with 'Unexpected status line' ProtocolException
|
|
||||||
// Seems to be a known issue: https://github.com/square/okhttp/issues/3689
|
|
||||||
// Simplest workaround is to ask for connection to be closed after HEAD request
|
|
||||||
httpSetHeader("connection", "close");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void httpSetHeader(String name, String value) {
|
public static int sslCreateTrust() {
|
||||||
conn.setRequestProperty(name, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int httpSetData(byte[] data) {
|
|
||||||
try {
|
try {
|
||||||
conn.setDoOutput(true);
|
trust = CreateTrust();
|
||||||
conn.getOutputStream().write(data);
|
return 1;
|
||||||
conn.getOutputStream().flush();
|
|
||||||
return 0;
|
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
return httpOnError(ex);
|
ex.printStackTrace();
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int httpPerform() {
|
public static void sslAddCert(byte[] data) {
|
||||||
int len;
|
|
||||||
try {
|
try {
|
||||||
conn.connect();
|
if (certFactory == null) certFactory = CertificateFactory.getInstance("X.509");
|
||||||
// Some implementations also provide this as getHeaderField(0), but some don't
|
if (certFactory == null) return;
|
||||||
httpParseHeader("HTTP/1.1 " + conn.getResponseCode() + " MSG");
|
|
||||||
|
|
||||||
// Legitimate webservers aren't going to reply with over 200 headers
|
|
||||||
for (int i = 0; i < 200; i++) {
|
|
||||||
String key = conn.getHeaderFieldKey(i);
|
|
||||||
String val = conn.getHeaderField(i);
|
|
||||||
if (key == null && val == null) break;
|
|
||||||
|
|
||||||
if (key == null) {
|
|
||||||
httpParseHeader(val);
|
|
||||||
} else {
|
|
||||||
httpParseHeader(key + ":" + val);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
src = conn.getInputStream();
|
InputStream in = new ByteArrayInputStream(data);
|
||||||
while ((len = src.read(readCache)) > 0) {
|
X509Certificate cert = (X509Certificate) certFactory.generateCertificate(in);
|
||||||
httpAppendData(readCache, len);
|
chain.add(cert);
|
||||||
}
|
|
||||||
|
|
||||||
httpFinish();
|
|
||||||
return 0;
|
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
return httpOnError(ex);
|
ex.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void httpFinish() {
|
public static int sslVerifyChain() {
|
||||||
conn = null;
|
int result = -200;
|
||||||
try {
|
try {
|
||||||
src.close();
|
X509Certificate[] certs = new X509Certificate[chain.size()];
|
||||||
} catch (Exception ex) { }
|
for (int i = 0; i < chain.size(); i++) certs[i] = chain.get(i);
|
||||||
src = null;
|
|
||||||
|
trust.checkServerTrusted(certs, "INV");
|
||||||
|
// standard java checks auth type, but android doesn't
|
||||||
|
// See https://issues.chromium.org/issues/40955801
|
||||||
|
result = 0;
|
||||||
|
} catch (Exception ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
chain.clear();
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Should we prune this list?
|
|
||||||
static List<String> errors = new ArrayList<String>();
|
|
||||||
|
|
||||||
static int httpOnError(Exception ex) {
|
// ======================================================================
|
||||||
ex.printStackTrace();
|
// --------------------------- Legacy window ----------------------------
|
||||||
httpFinish();
|
// ======================================================================
|
||||||
errors.add(ex.getMessage());
|
Canvas cur_canvas;
|
||||||
return -errors.size(); // don't want 0 as an error code
|
public int[] legacy_lockCanvas(int l, int t, int r, int b) {
|
||||||
|
CCView surface = (CCView)curView;
|
||||||
|
Rect rect = new Rect(l, t, r, b);
|
||||||
|
cur_canvas = surface.getHolder().lockCanvas(rect);
|
||||||
|
|
||||||
|
int w = (r - l);
|
||||||
|
int h = (b - t);
|
||||||
|
return new int[w * h];
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String httpDescribeError(int res) {
|
public void legacy_unlockCanvas(int l, int t, int r, int b, int[] buf) {
|
||||||
res = -res - 1;
|
CCView surface = (CCView)curView;
|
||||||
return res >= 0 && res < errors.size() ? errors.get(res) : null;
|
int w = (r - l);
|
||||||
}
|
int h = (b - t);
|
||||||
|
|
||||||
native static void httpParseHeader(String header);
|
// TODO avoid need to swap R/B
|
||||||
native static void httpAppendData(byte[] data, int len);
|
for (int i = 0; i < buf.length; i++)
|
||||||
|
{
|
||||||
|
int color = buf[i];
|
||||||
|
int R = color & 0x00FF0000;
|
||||||
|
int B = color & 0x000000FF;
|
||||||
|
|
||||||
|
buf[i] = (color & 0xFF00FF00) | (B << 16) | (R >> 16);
|
||||||
|
}
|
||||||
|
|
||||||
|
cur_canvas.drawBitmap(buf, 0, w, l, t, w, h, false, null);
|
||||||
|
surface.getHolder().unlockCanvasAndPost(cur_canvas);
|
||||||
|
cur_canvas = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
10
credits.txt
|
|
@ -4,13 +4,15 @@
|
||||||
* AndrewPH - Advice on how to improve ui of both client and launcher, multiple
|
* AndrewPH - Advice on how to improve ui of both client and launcher, multiple
|
||||||
suggestions, and hosting the automatic build bot for ClassiCube.
|
suggestions, and hosting the automatic build bot for ClassiCube.
|
||||||
* 123DMWM - many suggestions, and assistance in identifying bugs and their causes.
|
* 123DMWM - many suggestions, and assistance in identifying bugs and their causes.
|
||||||
* video_error - Allowing remote use of an OSX machine, pointing out many flaws in the plugin API.
|
* video_error - Allowing remote use of an macOS machine, pointing out many flaws in the plugin API.
|
||||||
The OSX port would not have been possible without you, thanks!
|
The macOS port would not have been possible without you, thanks!
|
||||||
* Jerralish - reverse engineering and documenting the original classic map generation algorithm.
|
* Jerralish - reverse engineering and documenting the original classic map generation algorithm.
|
||||||
* Cybertoon - Adding water animation, better metal step/dig sounds, identifying multiple flaws
|
* Cybertoon - Adding water animation, better metal step/dig sounds, identifying multiple flaws
|
||||||
* FabTheZen - suggestions about how to improve user experience, testing.
|
|
||||||
* Cheesse - multiple suggestions, testing ClassicalSharp on AMD graphics cards.
|
* Cheesse - multiple suggestions, testing ClassicalSharp on AMD graphics cards.
|
||||||
* Hemsindor - testing ClassicalSharp on OSX.
|
* Hemsindor - testing ClassicalSharp on macOS.
|
||||||
|
* headshotnoby - developing the Switch port.
|
||||||
|
* Beyond_5D - identifying many differences from original Classic
|
||||||
|
* shinovon - developing the Symbian port.
|
||||||
|
|
||||||
And a big thanks to everyone else in the ClassiCube community (who I didn't mention here),
|
And a big thanks to everyone else in the ClassiCube community (who I didn't mention here),
|
||||||
who in the past have provided many suggestions and assisted in identifying bugs.
|
who in the past have provided many suggestions and assisted in identifying bugs.
|
||||||
|
|
|
||||||
|
|
@ -16,10 +16,10 @@ Common compilation errors
|
||||||
Add ```-lrt``` when compiling. Occurs when using glibc versions before 2.17.
|
Add ```-lrt``` when compiling. Occurs when using glibc versions before 2.17.
|
||||||
|
|
||||||
#### fatal error: execinfo.h: No such file or directory
|
#### fatal error: execinfo.h: No such file or directory
|
||||||
Install ```libexecinfo``` package. Occurs when using musl.
|
Define `CC_BACKTRACE_BUILTIN` when compiling. Usually occurs when using musl.
|
||||||
|
|
||||||
#### Undefined reference to 'backtrace'
|
#### Undefined reference to 'backtrace'
|
||||||
Add ```-lexecinfo``` when compiling. Occurs when using musl.
|
Define `CC_BACKTRACE_BUILTIN` when compiling. Usually occurs when using musl.
|
||||||
|
|
||||||
Webclient patches
|
Webclient patches
|
||||||
---------------------
|
---------------------
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,15 @@
|
||||||
So you want to host your own version of the webclient? It's pretty easy to do, you need 3 files:
|
Hosting your own version of the ClassiCube webclient is relatively straightforward
|
||||||
1) A web page to initialise the .js and display the game
|
|
||||||
|
Only the following 3 files are required:
|
||||||
|
1) A web page to initialise the game .js and display the game
|
||||||
2) The game .js file
|
2) The game .js file
|
||||||
3) The default texture pack
|
3) The default texture pack
|
||||||
|
|
||||||
|
TODO: more advanced sample (authentication, custom game.js, skin server)
|
||||||
|
|
||||||
### Example setup
|
### Example setup
|
||||||
|
|
||||||
For example, let's assume our site is setup like this:
|
For example, let's assume your website is setup like this:
|
||||||
* `example.com/play.html`
|
* `example.com/play.html`
|
||||||
* `example.com/static/classisphere.js`
|
* `example.com/static/classisphere.js`
|
||||||
* `example.com/static/default.zip`
|
* `example.com/static/default.zip`
|
||||||
|
|
@ -14,11 +18,17 @@ For simplicitly,
|
||||||
1) Download `cs.classicube.net/client/latest/ClassiCube.js`, then upload it to `static/classisphere.js` on the webserver
|
1) Download `cs.classicube.net/client/latest/ClassiCube.js`, then upload it to `static/classisphere.js` on the webserver
|
||||||
2) Download `classicube.net/static/default.zip`, then upload it to `static/default.zip` on the webserver
|
2) Download `classicube.net/static/default.zip`, then upload it to `static/default.zip` on the webserver
|
||||||
|
|
||||||
The play.html page is the trickiest part, because how to implement this is website-specific. (depends on how your website is styled, what webserver you use, what programming language is used to generate the html, etc)
|
The play.html page is the trickiest part, because how to implement this is website-specific. (depends on how the website is styled, what webserver is used, what programming language is used to generate the html, etc)
|
||||||
|
|
||||||
|
#### Changing where the game downloads the texture pack from
|
||||||
|
|
||||||
|
There should be this piece of code somewhere in the .JS file: `function _interop_AsyncDownloadTexturePack(rawPath) {`
|
||||||
|
|
||||||
|
A bit below that, there should be `var url = '/static/default.zip';` - change that to the desired URL.
|
||||||
|
|
||||||
#### Embedding the game in play.html
|
#### Embedding the game in play.html
|
||||||
|
|
||||||
You are required to have this HTML code somewhere in the page:
|
The following HTML code is required to be somewhere in the webpage:
|
||||||
```HTML
|
```HTML
|
||||||
<!-- the canvas *must not* have any border or padding, or mouse coords will be wrong -->
|
<!-- the canvas *must not* have any border or padding, or mouse coords will be wrong -->
|
||||||
<canvas id="canvas" style="display:block; border:0; padding:0; background-color: black;"
|
<canvas id="canvas" style="display:block; border:0; padding:0; background-color: black;"
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
### Introduction
|
## Introduction
|
||||||
|
|
||||||
The 2D gui works by showing multiple 'screens' or 'layers' on top of each other. Each 'screen' usually contains one or more widgets. (e.g. a 'ButtonWidget' for a 'Close' button)
|
The 2D GUI works by showing multiple 'screens' or 'layers' on top of each other. Each 'screen' usually contains one or more widgets. (e.g. a 'ButtonWidget' for a 'Close' button)
|
||||||
|
|
||||||
Here's an example of multiple screens:
|
Here's an example of multiple screens:
|
||||||
|
|
||||||
|
|
@ -11,52 +11,143 @@ The example above consists of three screens:
|
||||||
2. `ChatScreen` - Text widgets in the bottom left area (Only one is currently used though)
|
2. `ChatScreen` - Text widgets in the bottom left area (Only one is currently used though)
|
||||||
3. `HUDScreen` - Text in the top left and hotbar at the bottom
|
3. `HUDScreen` - Text in the top left and hotbar at the bottom
|
||||||
|
|
||||||
### Screen interface
|
TODO: Explain event processing architecture
|
||||||
|
|
||||||
`Init` - Where you initialise stuff that lasts for the entire duration the screen is open, e.g. hooking into events.
|
TODO: Explain pointer IDs. maybe a separate input-architecture.md file?
|
||||||
|
|
||||||
`Free` - Where you undo the allocating/event hooking you did in Init.
|
TODO: Explain dynamic vertex buffer
|
||||||
|
|
||||||
`ContextRecreated` - Where you actually allocate stuff like textures of widgets and the screen's dynamic vertex buffer. It's where you should call stuff like ButtonWidget_SetConst, TextWidget_SetConst, etc.
|
## Screen interface
|
||||||
|
|
||||||
`ContextLost` - Where you destroy what you allocated in `ContextRecreated`. You **MUST** destroy all the textures/vertex buffers that you allocated, as otherwise you will get an error later with 'recreating context failed' with the Direct3D9 backend when you next try to resize the window or go fullscreen.
|
#### `void Init(void* screen)`
|
||||||
|
|
||||||
`Layout` - Where you reposition all the elements (i.e. widgets + anything else) of this screen. (Will always be called when initially showing this screen and whenever window resizes)
|
Where you initialise state and objects that lasts for the entire duration the screen is open
|
||||||
|
|
||||||
`HandlesInputDown/HandlesInputUp` - Called whenever a keyboard or mouse button is pressed/released.
|
E.g. Hooking into events
|
||||||
|
|
||||||
`HandlesKeyPress` - Called when a key character is entered on the keyboard. (e.g. you'd get '$' here if user pressed 4 while holding shift)
|
#### `void Free(void* screen)`
|
||||||
|
|
||||||
`HandlesTextChanged` - Called when the text changes in the on-screen keyboard. (i.e. KeyPress but for mobile text input)
|
Where you undo the allocating/event hooking you did in `Init`.
|
||||||
|
|
||||||
`HandlesMouseScroll` - Called when the wheel is scrolled on the mouse.
|
#### `void ContextRecreated(void* screen)`
|
||||||
|
|
||||||
`HandlesPointerDown/HandlesPointerUp/HandlesPointerMove` - Called whenever the left mouse or a touch finger is pressed/released/moved.
|
Where you allocate resources used for rendering, such as fonts, textures of widgets, and the screen's dynamic vertex buffer.
|
||||||
|
|
||||||
`BuildMesh` - Where you fill out the screen's dynamic vertex buffer with the vertices of all the widgets. This gets called just before `Render` whenever s->dirty is set to true. (pointer/input events automatically set s->dirty to true for the next frame)
|
E.g. where you should call `ButtonWidget_SetConst`, `TextWidget_SetConst`, etc.
|
||||||
|
|
||||||
`Update` - Called just before `Render` every frame and also provides the elapsed time since last render. Typically you'd use this to update simple stuff that depends on accumulated time. (e.g. whether the flashing caret should appear or not for input widgets)
|
#### `void ContextLost(void* screen)`
|
||||||
|
|
||||||
`Render` - Called every frame and is where you actually draw the widgets and other stuff on-screen. Don't forget to call Gfx_SetTexturing(true) before rendering widgets and Gfx_SetTexturing(false) once you're done.
|
Where you destroy/release all that resources that were allocated in `ContextRecreated`.
|
||||||
|
|
||||||
### Screen members
|
Note: You **MUST** destroy all the textures/vertex buffers that you allocated, as otherwise you will get an error later with 'recreating context failed' with the Direct3D9 backend when you next try to resize the window or go fullscreen. TODO: rewrite this note
|
||||||
|
|
||||||
`VTABLE` - Set to a ScreenVTABLE instance which implements all of the `Screen interface` functions
|
#### `void Layout(void* screen)`
|
||||||
|
|
||||||
`grabsInput` - Whether this screen grabs all input. If any screen grabs all input, then the mouse cursor becomes visible, W/A/S/D stops causing player movement, etc.
|
Where you reposition all the elements (i.e. widgets + anything else) of this screen.
|
||||||
|
|
||||||
`blocksWorld` - Whether this screen completely and opaquely covers the game world behind it. (e.g. loading screen and disconnect screen)
|
Note: This is called when initially showing this screen, and whenever the window is resized
|
||||||
|
|
||||||
`closable` - Whether this screen is automatically closed when pressing Escape. (Usually should be true for screens that are menus, e.g. pause screen)
|
#### `int HandlesInputDown(void* screen, int button)`
|
||||||
|
|
||||||
`dirty` - Whether this screen will have `BuildMesh` called on the next frame
|
Called whenever a input button (keyboard/mouse/gamepad) is pressed.
|
||||||
|
|
||||||
`maxVertices` - The maximum number of vertices that this screen's dynamic vertex buffer may use
|
#### `void OnInputUp(void* screen, int button)`
|
||||||
|
|
||||||
`vb` - This screen's dynamic vertex buffer
|
Called whenever a input button (keyboard/mouse/gamepad) is released.
|
||||||
|
|
||||||
|
#### `int HandlesKeyPress(void* screen, char keyChar)`
|
||||||
|
|
||||||
|
Called when a key character is entered on the keyboard.
|
||||||
|
|
||||||
|
E.g. you'd get '$' here if user pressed 4 while holding shift)
|
||||||
|
|
||||||
|
#### `int HandlesTextChanged(void* screen, const cc_string* str)`
|
||||||
|
|
||||||
|
Called when the text changes in the on-screen keyboard. (i.e. KeyPress but for mobile text input)
|
||||||
|
|
||||||
|
#### `int HandlesMouseScroll(void* screen, float wheelDelta)`
|
||||||
|
|
||||||
|
Called when the wheel is scrolled on the mouse.
|
||||||
|
|
||||||
|
#### `int HandlesPointerDown(void* screen, int pointerID, int x, int y)`
|
||||||
|
|
||||||
|
Called whenever the left mouse or a touch finger is pressed.
|
||||||
|
|
||||||
|
#### `void OnPointerUp(void* screen, int pointerID, int x, int y)`
|
||||||
|
|
||||||
|
Called whenever the left mouse or a touch finger is released.
|
||||||
|
|
||||||
|
#### `int HandlesPointerMove(void* screen, int pointerID, int x, int y)`
|
||||||
|
|
||||||
|
Called whenever the left mouse or a touch finger is moved.
|
||||||
|
|
||||||
|
#### `void BuildMesh(void* screen)`
|
||||||
|
|
||||||
|
Where you fill out the screen's dynamic vertex buffer with the vertices of all the widgets.
|
||||||
|
|
||||||
|
Note: This gets called just before `Render()` whenever the `dirty` field is set to `true`.
|
||||||
|
|
||||||
|
Note: Pointer/Input events automatically set the `dirty` field to `true` for the next frame
|
||||||
|
|
||||||
|
#### `void Update(void* screen, double delta)`
|
||||||
|
|
||||||
|
Called just before `Render()` every frame and also provides the elapsed time since last render.
|
||||||
|
|
||||||
|
Typically you'd use this to update simple stuff that depends on accumulated time.
|
||||||
|
(E.g. whether the flashing caret should appear or not for input widgets)
|
||||||
|
|
||||||
|
#### `void Render(void* screen)`
|
||||||
|
|
||||||
|
Called every frame and is where you actually draw the widgets and other stuff on-screen.
|
||||||
|
|
||||||
|
## Screen members
|
||||||
|
|
||||||
|
#### `struct ScreenVTABLE* VTABLE`
|
||||||
|
|
||||||
|
Set to a `ScreenVTABLE` instance which implements all of the `Screen interface` functions
|
||||||
|
|
||||||
|
#### `cc_bool grabsInput`
|
||||||
|
|
||||||
|
Whether this screen grabs all input.
|
||||||
|
|
||||||
|
Note: If any screen grabs all input, then the mouse cursor becomes visible, W/A/S/D stops causing player movement, etc.
|
||||||
|
|
||||||
|
#### `cc_bool blocksWorld`
|
||||||
|
|
||||||
|
Whether this screen completely and opaquely covers the game world behind it.
|
||||||
|
|
||||||
|
E.g. loading screen and disconnect screen
|
||||||
|
|
||||||
|
#### `cc_bool closable`
|
||||||
|
|
||||||
|
Whether this screen is automatically closed when pressing Escape.
|
||||||
|
|
||||||
|
Note: Usually should be true for screens that are menus (e.g. pause screen)
|
||||||
|
|
||||||
|
#### `cc_bool dirty`
|
||||||
|
|
||||||
|
Whether this screen will have `BuildMesh()` called on the next frame
|
||||||
|
|
||||||
|
Note: This should be set to `true` whenever any event/actions that might alter the screen's appearance occurs TODO explain when automatically called?
|
||||||
|
|
||||||
|
#### `int maxVertices`
|
||||||
|
|
||||||
|
The maximum number of vertices that this screen's dynamic vertex buffer may use
|
||||||
|
|
||||||
|
#### `GfxResourceID vb`
|
||||||
|
|
||||||
|
This screen's dynamic vertex buffer
|
||||||
|
|
||||||
|
#### `struct Widget** widgets;`
|
||||||
|
|
||||||
|
Pointer to the array of pointers to widgets that are contained in this screen
|
||||||
|
|
||||||
|
#### `int numWidgets;`
|
||||||
|
|
||||||
|
The number of widgets that are contained in this screen
|
||||||
|
|
||||||
|
|
||||||
### Screen notes
|
## Screen notes
|
||||||
|
|
||||||
* When the screen is shown via `Gui_Add`, the following functions are called
|
* When the screen is shown via `Gui_Add`, the following functions are called
|
||||||
1) Init
|
1) Init
|
||||||
|
|
@ -74,3 +165,13 @@ The example above consists of three screens:
|
||||||
3) Layout
|
3) Layout
|
||||||
|
|
||||||
Note: Whenever `default.png` (font texture) changes, `Gui_Refresh` is called for all screens. Therefore, fonts should usually be allocated/freed in `ContextRecreated/ContextLost` instead of `Init/Free` to ensure that the screen still looks correct after the texture pack changes.
|
Note: Whenever `default.png` (font texture) changes, `Gui_Refresh` is called for all screens. Therefore, fonts should usually be allocated/freed in `ContextRecreated/ContextLost` instead of `Init/Free` to ensure that the screen still looks correct after the texture pack changes.
|
||||||
|
|
||||||
|
TODO: Move this note earlier?
|
||||||
|
|
||||||
|
# Putting it altogether
|
||||||
|
|
||||||
|
TODO Add example of screen
|
||||||
|
|
||||||
|
Simple menu example that grabs all input
|
||||||
|
|
||||||
|
More complicated example too
|
||||||
147
doc/modules.md
|
|
@ -1,119 +1,124 @@
|
||||||
The overall source code is structured where each .c represents a particular module. These modules are:
|
The overall source code is structured where each .c represents a particular module. These modules are:
|
||||||
|
|
||||||
|
TODO: explain multiple backends for some Modules
|
||||||
|
|
||||||
## 2D modules
|
## 2D modules
|
||||||
|File|Functionality|
|
|Module|Functionality|
|
||||||
|--------|-------|
|
|--------|-------|
|
||||||
|Bitmap.c|Represents a 2D array of pixels (and encoding/decoding to PNG)
|
|Bitmap|Represents a 2D array of pixels (and encoding/decoding to PNG)
|
||||||
|Drawer2D.c|Contains a variety of drawing operations on bitmaps (including text and fonts)
|
|Drawer2D|Contains a variety of drawing operations on bitmaps (including text and fonts)
|
||||||
|PackedCol.c|32 bit RGBA color in a format suitable for using as color component of a vertex
|
|PackedCol|32 bit RGBA color in a format suitable for using as color component of a vertex
|
||||||
|
|SystemFonts|Drawing, measuring, and retrieving the list of platform/system specific fonts
|
||||||
|
|
||||||
## Audio modules
|
## Audio modules
|
||||||
|File|Functionality|
|
|Module|Functionality|
|
||||||
|--------|-------|
|
|--------|-------|
|
||||||
|Audio.c|Playing music and dig/place/step sounds, and abstracts a PCM audio playing API
|
|Audio|Playing music and dig/place/step sounds, and abstracts a PCM audio playing API
|
||||||
|Vorbis.c| Decodes [ogg vorbis](https://xiph.org/vorbis/) audio into PCM audio samples
|
|Vorbis| Decodes [ogg vorbis](https://xiph.org/vorbis/) audio into PCM audio samples
|
||||||
|
|
||||||
## Entity modules
|
## Entity modules
|
||||||
|File|Functionality|
|
|Module|Functionality|
|
||||||
|--------|-------|
|
|--------|-------|
|
||||||
|Entity.c|Represents an in-game entity, and manages updating and rendering all entities
|
|Entity|Represents an in-game entity, and manages updating and rendering all entities
|
||||||
|EntityComponents.c|Various components that can be used by entities (e.g. tilt, animation, hacks state)
|
|EntityComponents|Various components that can be used by entities (e.g. tilt, animation, hacks state)
|
||||||
|Model.c|Contains the list of entity models, and provides relevant methods for entity models
|
|Model|Contains the list of entity models, and provides relevant methods for entity models
|
||||||
|Particle.c|Represents particle effects, and manages rendering and spawning particles
|
|Particle|Represents particle effects, and manages rendering and spawning particles
|
||||||
|
|
||||||
## Game modules
|
## Game modules
|
||||||
|File|Functionality|
|
|File|Functionality|
|
||||||
|--------|-------|
|
|--------|-------|
|
||||||
|Block.c|Stores properties and data for blocks (e.g. collide type, draw type, sound type)
|
|Block|Stores properties and data for blocks (e.g. collide type, draw type, sound type)
|
||||||
|BlockPhysics.c|Implements simple block physics for singleplayer
|
|BlockPhysics|Implements simple block physics for singleplayer
|
||||||
|Camera.c|Represents a camera (can be first or third person)
|
|Camera|Represents a camera (can be first or third person)
|
||||||
|Chat.c|Manages sending, adding, logging and handling chat
|
|Chat|Manages sending, adding, logging and handling chat
|
||||||
|Game.c|Manages the overall game loop, state, and variables (e.g. renders a frame, runs scheduled tasks)
|
|Game|Manages the overall game loop, state, and variables (e.g. renders a frame, runs scheduled tasks)
|
||||||
|Input.c|Manages keyboard, mouse, and touch state and events, and implements base handlers for them
|
|Input|Manages keyboard, mouse, and touch state and events, and implements base handlers for them
|
||||||
|Inventory.c|Manages inventory hotbar, and ordering of blocks in the inventory menu
|
|Inventory|Manages inventory hotbar, and ordering of blocks in the inventory menu
|
||||||
|
|
||||||
## Game gui modules
|
## Game gui modules
|
||||||
|File|Functionality|
|
|File|Functionality|
|
||||||
|--------|-------|
|
|--------|-------|
|
||||||
|Gui.c|Describes and manages the 2D GUI elements on screen
|
|Gui|Describes and manages the 2D GUI elements on screen
|
||||||
|IsometricDrawer.c|Draws 2D isometric blocks for the hotbar and inventory UIs
|
|IsometricDrawer|Draws 2D isometric blocks for the hotbar and inventory UIs
|
||||||
|Menus.c|Contains all 2D non-menu screens (e.g. inventory, HUD, loading, chat)
|
|Menus|Contains all 2D non-menu screens (e.g. inventory, HUD, loading, chat)
|
||||||
|Screens.c|Contains all 2D menu screens (e.g. pause menu, keys list menu, font list menu)
|
|Screens|Contains all 2D menu screens (e.g. pause menu, keys list menu, font list menu)
|
||||||
|Widgets.c|Contains individual GUI widgets (e.g. button, label)
|
|Widgets|Contains individual GUI widgets (e.g. button, label)
|
||||||
|
|
||||||
## Graphics modules
|
## Graphics modules
|
||||||
|File|Functionality|
|
|Module|Functionality|
|
||||||
|--------|-------|
|
|--------|-------|
|
||||||
|Builder.c|Converts a 16x16x16 chunk into a mesh of vertices
|
|Builder|Converts a 16x16x16 chunk into a mesh of vertices
|
||||||
|Drawer.c|Draws the vertices for a cuboid region
|
|Drawer|Draws the vertices for a cuboid region
|
||||||
|Graphics.c|Abstracts a 3D graphics rendering API
|
|Graphics|Abstracts a 3D graphics rendering API
|
||||||
|
|
||||||
## I/O modules
|
## I/O modules
|
||||||
|File|Functionality|
|
|Module|Functionality|
|
||||||
|--------|-------|
|
|--------|-------|
|
||||||
|Deflate.c|Decodes and encodes data compressed using DEFLATE (in addition to GZIP/ZLIB headers)
|
|Deflate|Decodes and encodes data compressed using DEFLATE (in addition to GZIP/ZLIB headers)
|
||||||
|Stream.c|Abstract reading and writing data to/from various sources in a streaming manner
|
|Stream|Abstract reading and writing data to/from various sources in a streaming manner
|
||||||
|
|
||||||
## Launcher modules
|
## Launcher modules
|
||||||
|File|Functionality|
|
|Module|Functionality|
|
||||||
|--------|-------|
|
|--------|-------|
|
||||||
|Launcher.c|Manages the overall launcher loop, state, and variables (e.g. resets pixels in areas, marks areas as needing to be redrawn)
|
|Launcher|Manages the overall launcher loop, state, and variables (e.g. resets pixels in areas, marks areas as needing to be redrawn)
|
||||||
|LScreens.c|Contains all the menus in the launcher (e.g. servers list, updates menu, main menu)
|
|LBackend|Handles the rendering of widgets and forwarding input events to screens/menus
|
||||||
|LWeb.c|Responsible for launcher related web requests (e.g. signing in, fetching servers list)
|
|LScreens|Contains all the menus in the launcher (e.g. servers list, updates menu, main menu)
|
||||||
|LWidgets.c|Contains individual launcher GUI widgets (e.g. button, label, input textbox)
|
|LWeb|Responsible for launcher related web requests (e.g. signing in, fetching servers list)
|
||||||
|Resources.c|Responsible for checking, downloading, and creating the default assets (e.g. default.zip, sounds)
|
|LWidgets|Contains individual launcher GUI widgets (e.g. button, label, input textbox)
|
||||||
|
|Resources|Responsible for checking, downloading, and creating the default assets (e.g. default.zip, sounds)
|
||||||
|
|
||||||
## Map modules
|
## Map modules
|
||||||
|File|Description|
|
|Module|Description|
|
||||||
|--------|-------|
|
|--------|-------|
|
||||||
|Formats.c|Imports/exports a world from/to several map file formats (e.g. .cw, .dat, .lvl)
|
|Formats|Imports/exports a world from/to several map file formats (e.g. .cw, .dat, .lvl)
|
||||||
|Generator.c|Generates a new world in either a flatgrass or Minecraft Classic style
|
|Generator|Generates a new world in either a flatgrass or Minecraft Classic style
|
||||||
|Lighting.c|Gets lighting colors at coordinates in the world
|
|Lighting|Gets lighting colors at coordinates in the world
|
||||||
|World.c|Manages fixed size 3D array of blocks and associated environment metadata
|
|World|Manages fixed size 3D array of blocks and associated environment metadata
|
||||||
|
|
||||||
## Math/Physics modules
|
## Math/Physics modules
|
||||||
|File|Description|
|
|Module|Description|
|
||||||
|--------|-------|
|
|--------|-------|
|
||||||
|ExtMath.c|Math functions, math constants, and a Random Number Generator
|
|ExtMath|Math functions, math constants, and a Random Number Generator
|
||||||
|Physics.c|AABBs and geometry intersection
|
|Physics|AABBs and geometry intersection
|
||||||
|Picking.c|Performs raytracing to e.g. determine the picked/selected block in the world
|
|Picking|Performs raytracing to e.g. determine the picked/selected block in the world
|
||||||
|Vectors.c|Contains vector,matrix,and frustum culling
|
|Vectors|Contains vector,matrix,and frustum culling
|
||||||
|
|
||||||
## Network modules
|
## Network modules
|
||||||
|File|Description|
|
|Module|Description|
|
||||||
|--------|-------|
|
|--------|-------|
|
||||||
|Http.c|Performs GET and POST requests in the background
|
|Http|Performs GET and POST requests in the background
|
||||||
|Protocol.c|Implements Minecraft Classic, CPE, and WoM environment protocols
|
|Protocol|Implements Minecraft Classic, CPE, and WoM environment protocols
|
||||||
|Server.c|Manages a connection to a singleplayer or multiplayer server
|
|Server|Manages a connection to a singleplayer or multiplayer server
|
||||||
|
|SSL|Performs SSL/TLS encryption and decryption
|
||||||
|
|
||||||
## Platform modules
|
## Platform modules
|
||||||
|File|Description|
|
|Module|Description|
|
||||||
|--------|-------|
|
|--------|-------|
|
||||||
|Logger.c|Manages logging to client.log, and dumping state in both intentional and unhandled crashes
|
|Logger|Manages logging to client.log, and dumping state in both intentional and unhandled crashes
|
||||||
|Platform.c|Abstracts platform specific functionality. (e.g. opening a file, allocating memory, starting a thread)
|
|Platform|Abstracts platform specific functionality. (e.g. opening a file, allocating memory, starting a thread)
|
||||||
|Program.c|Parses command line arguments, and then starts either the Game or Launcher
|
|Program|Parses command line arguments, and then starts either the Game or Launcher
|
||||||
|Window.c|Abstracts creating and managing a window (e.g. setting titlebar text, entering fullscreen)
|
|Window|Abstracts creating and managing a window (e.g. setting titlebar text, entering fullscreen)
|
||||||
|
|
||||||
## Rendering modules
|
## Rendering modules
|
||||||
|File|Description|
|
|Module|Description|
|
||||||
|--------|-------|
|
|--------|-------|
|
||||||
|AxisLinesRenderer.c|Renders 3 lines showing direction of each axis
|
|AxisLinesRenderer|Renders 3 lines showing direction of each axis
|
||||||
|EnvRenderer.c|Renders environment of the world (clouds, sky, skybox, world sides/edges, etc)
|
|EnvRenderer|Renders environment of the world (clouds, sky, skybox, world sides/edges, etc)
|
||||||
|HeldBlockRenderer.c|Renders the block currently being held in bottom right corner
|
|HeldBlockRenderer|Renders the block currently being held in bottom right corner
|
||||||
|MapRenderer.c|Renders the blocks of the world by diving it into chunks, and manages sorting/updating these chunks
|
|MapRenderer|Renders the blocks of the world by diving it into chunks, and manages sorting/updating these chunks
|
||||||
|PickedPosRenderer.c|Renders an outline around the block currently being looked at
|
|SelOutlineRenderer|Renders an outline around the block currently being looked at
|
||||||
|SelectionBox.c|Renders and stores selection boxes
|
|SelectionBox|Renders and stores selection boxes
|
||||||
|
|
||||||
## Texture pack modules
|
## Texture pack modules
|
||||||
|File|Functionality|
|
|Module|Functionality|
|
||||||
|--------|-------|
|
|--------|-------|
|
||||||
|Animations.c|Everything relating to texture animations (including default water/lava ones)
|
|Animations|Everything relating to texture animations (including default water/lava ones)
|
||||||
|TexturePack.c|Everything relating to texture packs (e.g. extracting .zip, terrain atlas, etc)
|
|TexturePack|Everything relating to texture packs (e.g. extracting .zip, terrain atlas, etc)
|
||||||
|
|
||||||
## Utility modules
|
## Utility modules
|
||||||
|File|Functionality|
|
|Module|Functionality|
|
||||||
|--------|-------|
|
|--------|-------|
|
||||||
|Event.c|Contains all events and provies helper methods for using events
|
|Event|Contains all events and provies helper methods for using events
|
||||||
|Options.c|Retrieves options from and sets options in options.txt
|
|Options|Retrieves options from and sets options in options.txt
|
||||||
|String.c|Implements operations for a string with a buffer, length, and capacity
|
|String|Implements operations for a string with a buffer, length, and capacity
|
||||||
|Utils.c|Various general utility functions
|
|Utils|Various general utility functions
|
||||||
|
|
|
||||||
|
|
@ -1,47 +1,72 @@
|
||||||
#### Note: By default, ClassiCube automatically selects the recommended backends for the platform. <br> It is recommended that you do *NOT* change the backends unless you know exactly what you are doing.
|
Although ClassiCube strives to be as platform independent as possible, in some cases it will need to use system specific code
|
||||||
|
|
||||||
|
For instance:
|
||||||
|
* Texture creation for 3D graphics rendering
|
||||||
|
* Buffer allocation for audio output
|
||||||
|
* High resolution time measurement
|
||||||
|
* Window creation
|
||||||
|
|
||||||
|
For simplicity, related system specific code is grouped together as a Module (e.g. `Audio`), which can then be implemented using a backend (e.g. `WinMM`, `OpenAL`, `OpenSL ES`, etc)
|
||||||
|
|
||||||
|
#### Note: By default, ClassiCube automatically selects the recommended backends for the system. <br> It is recommended that you do *NOT* change the backends unless you know exactly what you are doing.
|
||||||
|
|
||||||
|
Some systems may provide multiple potential backends for a Module. For example on Windows:
|
||||||
|
* OpenGL could be used instead of Direct3D 9 for the 3D rendering backend
|
||||||
|
* SDL could be used instead of the native WinAPI for the window backend
|
||||||
|
|
||||||
TODO finish this
|
TODO finish this
|
||||||
|
|
||||||
TODO introduction (explaining platform specific modules, and how classicube has to integrate with one of them)
|
TODO introduction (explaining platform specific modules, and how classicube has to integrate with one of them)
|
||||||
|
|
||||||
Two ways
|
There are two ways of changing the backend that gets used for the system:
|
||||||
1) Changing the defines in `Core.h`
|
1) Changing the default defines in `Core.h`
|
||||||
2) Adding `-DCC_BUILD_MANUAL` to compilation flags and then manually defining module backends via additional compilation flags
|
2) Using additional compilation flags to override default module backend(s)
|
||||||
|
3) Adding `-DCC_BUILD_MANUAL` to compilation flags and then manually defining all module backends via additional compilation flags
|
||||||
|
|
||||||
When manually compiling the source code, 1) is usually the easiest. <br>
|
When manually compiling the source code, 1) is usually the easiest. <br>
|
||||||
For automated scripts compiling every single commit, 2) is the recommended approach
|
For automated scripts compiling every single commit, 2) is the recommended approach
|
||||||
|
TODO: Move this into table
|
||||||
|
|
||||||
|
|
||||||
### 3D Graphics backends
|
### 3D Graphics backends (`CC_GFX_BACKEND`)
|
||||||
* CC_BUILD_D3D9 - Direct3D 9
|
* CC_GFX_BACKEND_SOFTGPU - Software rasteriser
|
||||||
* CC_BUILD_D3D11 - Direct3D 11
|
* CC_GFX_BACKEND_D3D9 - Direct3D 9
|
||||||
* CC_BUILD_GL - OpenGL
|
* CC_GFX_BACKEND_D3D11 - Direct3D 11
|
||||||
|
* CC_GFX_BACKEND_GL1 - OpenGL 1.2/1.5
|
||||||
|
* CC_GFX_BACKEND_GL2 - OpenGL 2 (shaders)
|
||||||
|
|
||||||
The OpenGL backend can be further customised:
|
The OpenGL backend can be further customised:
|
||||||
* CC_BUILD_GL11 - (must also have CC_BUILD_GL defined)
|
* CC_BUILD_GL11 (must be using CC_GFX_BACKEND_GL1)
|
||||||
* CC_BUILD_GLMODERN - (must also have CC_BUILD_GL defined)
|
* CC_BUILD_GLES (must be using CC_GFX_BACKEND_GL2)
|
||||||
* CC_BUILD_GLES (must also have CC_BUILD_GL defined)
|
|
||||||
|
|
||||||
### OpenGL context backends
|
### OpenGL context backends
|
||||||
* CC_BUILD_EGL
|
* CC_BUILD_EGL
|
||||||
* CC_BUILD_WGL
|
* CC_BUILD_WGL
|
||||||
|
|
||||||
### HTTP backends
|
### HTTP backends (`CC_NET_BACKEND`)
|
||||||
* CC_BUILD_CURL
|
* CC_NET_BACKEND_BUILTIN - custom HTTP client
|
||||||
* CC_BUILD_HTTPCLIENT - custom HTTP client
|
* CC_NET_BACKEND_LIBCURL
|
||||||
* CC_BUILD_WININET
|
|
||||||
* CC_BUILD_CFNETWORK
|
* CC_BUILD_CFNETWORK
|
||||||
|
|
||||||
### SSL backends
|
### SSL backends (`CC_SSL_BACKEND`)
|
||||||
* CC_BUILD_SCHANNEL
|
* CC_SSL_BACKEND_NONE
|
||||||
|
* CC_SSL_BACKEND_BEARSSL
|
||||||
|
* CC_SSL_BACKEND_SCHANNEL
|
||||||
|
|
||||||
### Window backends
|
### Window backends (`CC_WIN_BACKEND`)
|
||||||
* CC_BUILD_SDL
|
* CC_WIN_BACKEND_TERMINAL
|
||||||
* CC_BUILD_X11
|
* CC_WIN_BACKEND_SDL2
|
||||||
* CC_BUILD_WINGUI
|
* CC_WIN_BACKEND_SDL3
|
||||||
|
* CC_WIN_BACKEND_X11
|
||||||
|
* CC_WIN_BACKEND_WIN32
|
||||||
|
|
||||||
|
### Audio backends (`CC_AUD_BACKEND`)
|
||||||
|
* CC_AUD_BACKEND_OPENAL
|
||||||
|
* CC_AUD_BACKEND_WINMM
|
||||||
|
* CC_AUD_BACKEND_OPENSLES
|
||||||
|
|
||||||
### Platform backends
|
### Platform backends
|
||||||
* CC_BUILD_POSIX
|
* CC_BUILD_POSIX
|
||||||
* CC_BUILD_WIN
|
* CC_BUILD_WIN
|
||||||
|
|
||||||
TODO fill in rest
|
TODO fill in rest
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,14 @@
|
||||||
This document details how to compile a basic plugin in Visual Studio, MinGW, or GCC.
|
This document details how to compile a basic plugin in Visual Studio, MinGW, or GCC/Clang.
|
||||||
|
|
||||||
To find the functions and variables available for use in plugins, look for CC_API/CC_VAR in the .h files.
|
To find the functions and variables available for use in plugins, look for `CC_API`/`CC_VAR` in the .h files.
|
||||||
|
|
||||||
[Source code of some actual plugins](https://github.com/UnknownShadow200/ClassiCube-Plugins/)
|
[Source code of some actual plugins](https://github.com/ClassiCube/ClassiCube-Plugins/)
|
||||||
|
|
||||||
### Setup
|
### Setup
|
||||||
|
|
||||||
You need to download and install either Visual Studio, MinGW, or GCC.
|
You need to download and install either Visual Studio, MinGW, or GCC/Clang.
|
||||||
|
|
||||||
*Note: MinGW/GCC are relatively small, while Visual Studio is gigabytes in size.
|
*Note: MinGW/GCC/Clang are relatively small, while Visual Studio is gigabytes in size.
|
||||||
If you're just trying to compile a plugin on Windows you might want to use MinGW. See main readme.*
|
If you're just trying to compile a plugin on Windows you might want to use MinGW. See main readme.*
|
||||||
|
|
||||||
I assume your directory is structured like this:
|
I assume your directory is structured like this:
|
||||||
|
|
@ -20,6 +20,7 @@ Or in other words, in a directory somewhere, you have a file named `TestPlugin.c
|
||||||
|
|
||||||
### Basic plugin
|
### Basic plugin
|
||||||
```C
|
```C
|
||||||
|
#include "src/PluginAPI.h"
|
||||||
#include "src/Chat.h"
|
#include "src/Chat.h"
|
||||||
#include "src/Game.h"
|
#include "src/Game.h"
|
||||||
#include "src/String.h"
|
#include "src/String.h"
|
||||||
|
|
@ -29,56 +30,22 @@ static void TestPlugin_Init(void) {
|
||||||
Chat_Add(&msg);
|
Chat_Add(&msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Plugin_ApiVersion = 1;
|
PLUGIN_EXPORT int Plugin_ApiVersion = 1;
|
||||||
struct IGameComponent Plugin_Component = { TestPlugin_Init };
|
PLUGIN_EXPORT struct IGameComponent Plugin_Component = { TestPlugin_Init };
|
||||||
```
|
```
|
||||||
Here's the idea for a basic plugin that shows "Hello world" in chat when the game starts. Alas, this won't compile...
|
Here's a basic plugin that shows "Hello world" in chat when the game starts.
|
||||||
|
|
||||||
### Basic plugin boilerplate
|
Note that `src/PluginAPI.h` must always be included as the first header.
|
||||||
```C
|
|
||||||
#ifdef _WIN32
|
|
||||||
#define CC_API __declspec(dllimport)
|
|
||||||
#define CC_VAR __declspec(dllimport)
|
|
||||||
#define EXPORT __declspec(dllexport)
|
|
||||||
#else
|
|
||||||
#define CC_API
|
|
||||||
#define CC_VAR
|
|
||||||
#define EXPORT __attribute__((visibility("default")))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "src/Chat.h"
|
|
||||||
#include "src/Game.h"
|
|
||||||
#include "src/String.h"
|
|
||||||
|
|
||||||
static void TestPlugin_Init(void) {
|
|
||||||
cc_string msg = String_FromConst("Hello world!");
|
|
||||||
Chat_Add(&msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT int Plugin_ApiVersion = 1;
|
|
||||||
EXPORT struct IGameComponent Plugin_Component = { TestPlugin_Init };
|
|
||||||
```
|
|
||||||
With this boilerplate, we're ready to compile the plugin.
|
|
||||||
All plugins require this boilerplate, so feel free to copy and paste it.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### Writing plugins in C++
|
### Writing plugins in C++
|
||||||
When including headers from ClassiCube, they **must** be surrounded with `extern "C"`, i.e.
|
|
||||||
```C
|
|
||||||
extern "C" {
|
|
||||||
#include "src/Chat.h"
|
|
||||||
#include "src/Game.h"
|
|
||||||
#include "src/String.h"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
Otherwise you will get obscure `Undefined reference` errors when compiling.
|
|
||||||
|
|
||||||
Exported plugin functions **must** be surrounded with `extern "C"`, i.e.
|
Exported plugin functions **must** be surrounded with `extern "C"`, i.e.
|
||||||
```C
|
```C
|
||||||
extern "C" {
|
extern "C" {
|
||||||
EXPORT int Plugin_ApiVersion = 1;
|
PLUGIN_EXPORT int Plugin_ApiVersion = 1;
|
||||||
EXPORT struct IGameComponent Plugin_Component = { TestPlugin_Init };
|
PLUGIN_EXPORT struct IGameComponent Plugin_Component = { TestPlugin_Init };
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
Otherwise your plugin will not load. (you'll see `error getting plugin version` in-game)
|
Otherwise your plugin will not load. (you'll see `error getting plugin version` in-game)
|
||||||
|
|
@ -196,7 +163,7 @@ The simplest way of linking to the `.lib` file is simply adding the following co
|
||||||
#pragma comment(lib, "[GAME SRC FOLDER]/x86/Debug/ClassiCube.lib")
|
#pragma comment(lib, "[GAME SRC FOLDER]/x86/Debug/ClassiCube.lib")
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
`
|
```
|
||||||
|
|
||||||
replacing `[GAME SRC FOLDER]` with the full path of `src` folder (e.g. `C:/Dev/ClassiCube/src`)
|
replacing `[GAME SRC FOLDER]` with the full path of `src` folder (e.g. `C:/Dev/ClassiCube/src`)
|
||||||
|
|
||||||
|
|
@ -241,9 +208,22 @@ Then put `TestPlugin.dll` into your game's `plugins` folder. Done.
|
||||||
|
|
||||||
Then put `TestPlugin.dll` into your game's `plugins` folder. Done.
|
Then put `TestPlugin.dll` into your game's `plugins` folder. Done.
|
||||||
|
|
||||||
## Compiling - other notes
|
## Notes for compiling for Windows
|
||||||
|
|
||||||
##### Ultra small dlls - mingw
|
### Ensuring your plugin works when the ClassiCube exe isn't named ClassiCube.exe
|
||||||
If you **ONLY** use code from the game (no external libraries and no C standard library functions), add `-nostartfiles -Wl,--entry=0` to the compile flags
|
|
||||||
|
|
||||||
This step isn't necessary, the dll works fine without it. But it does reduce the size of the dll from 11 to 4 kb.
|
If you follow the prior compilation instructions, the compiled DLL will have a runtime dependancy on `ClassiCube.exe`
|
||||||
|
|
||||||
|
However, this means that if the executable is e.g. named `ClassiCube (2).exe` instead. the plugin DLL will fail to load
|
||||||
|
|
||||||
|
To avoid this problem, you must
|
||||||
|
1) Stop linking to `ClassiCube` (e.g. for `MinGW`, remove the ` -L . -lClassiCube`)
|
||||||
|
2) Load all functions and variables exported from ClassiCube via `GetProcAddress` instead
|
||||||
|
|
||||||
|
This is somewhat tedious to do - see [here](https://github.com/ClassiCube/ClassiCube-Plugins/) for some examples of plugins which do this
|
||||||
|
|
||||||
|
#### Compiling ultra small plugin DLLs - MinGW
|
||||||
|
If you **ONLY** use code from the game (no external libraries and no C standard library functions):
|
||||||
|
* You can add `-nostartfiles -Wl,--entry=0` to the compile flags to reduce the DLL size (e.g from 11 to 4 kb)
|
||||||
|
|
||||||
|
This isn't necessary to do though, and plugin DLLs work completely fine without doing this.
|
||||||
|
|
|
||||||
|
|
@ -1,69 +1,23 @@
|
||||||
Although most of the code is platform-independent, some per-platform functionality is required.
|
Although most of the code is platform-independent, some per-platform functionality is required.
|
||||||
|
|
||||||
By default I try to automatically define appropriate backends for your OS in Core.h. Define ```CC_BUILD_MANUAL``` to disable this.
|
By default `Core.h` tries to automatically define appropriate backends for your system. Define ```CC_BUILD_MANUAL``` to disable this.
|
||||||
|
|
||||||
|
Note: Updating doesn't work properly in Windows 95 or Windows 98
|
||||||
|
|
||||||
## Before you start
|
## Before you start
|
||||||
* IEEE floating support is required.
|
* IEEE floating-point support is required. (Can be emulated in software, but will affect performance)
|
||||||
* int must be 32-bits. 32-bit addressing (or more) is required.
|
* The `int` data type must be 32-bits.
|
||||||
|
* 32-bit addressing (or more) is required.
|
||||||
* Support for 8/16/32/64 integer types is required. (your compiler must support 64-bit arithmetic)
|
* Support for 8/16/32/64 integer types is required. (your compiler must support 64-bit arithmetic)
|
||||||
|
* At least around 2 MB of RAM is required at a minimum
|
||||||
|
* At least 128 kb for main thread stack size
|
||||||
|
|
||||||
In other words, the codebase can theroetically be ported to any modern-ish hardware, but not stuff like a UNIVAC machine, the SuperFX chip on the SNES, or an 8-bit microcontroller.
|
In summary, the codebase can theroetically be ported to any modern-ish hardware, but not stuff like a UNIVAC machine, the SuperFX chip on the SNES, or an 8-bit microcontroller.
|
||||||
|
|
||||||
## Supported platforms
|
|
||||||
**Note:** Some of these machines are just virtual machines. Should still work on real hardware though.
|
|
||||||
|
|
||||||
#### Tier 1 support
|
|
||||||
These platforms are regularly tested on and have executables automatically compiled for. (see buildbot.sh)
|
|
||||||
|
|
||||||
|Platform|Machine|Notes|
|
|
||||||
|--------|-------|-----|
|
|
||||||
|Windows x86/x64 | Windows 7 |
|
|
||||||
|macOS x86/x64 | macOS 10.12 |
|
|
||||||
|Linux x86/x64 | Xubuntu 14 |
|
|
||||||
|Web client | Chrome |
|
|
||||||
|
|
||||||
#### Tier 2 support
|
|
||||||
These machines are far less frequently tested on, but are otherwise same as tier 1 support.
|
|
||||||
|
|
||||||
|Platform|Machine|Notes|
|
|
||||||
|--------|-------|-----|
|
|
||||||
|Windows x86 | Windows 2000 |
|
|
||||||
|Windows x86 | 98 + KernelEX | Updating doesn't work
|
|
||||||
|Windows x64 | Windows 10 |
|
|
||||||
|ReactOS | ReactOS |
|
|
||||||
|Linux x64 | Arch linux |
|
|
||||||
|Linux x64 | Linux Mint |
|
|
||||||
|Linux x64 | Kubuntu |
|
|
||||||
|Linux x64 | Debian |
|
|
||||||
|Linux x64 | Fedora |
|
|
||||||
|Linux x86/x64 | Lubuntu |
|
|
||||||
|Web client | Firefox |
|
|
||||||
|Web client | Safari |
|
|
||||||
|Web client | Edge | Cursor doesn't seem to disappear
|
|
||||||
|
|
||||||
#### Tier 3 support
|
|
||||||
The game has been compiled and run on these platforms before. It may or may not still compile for them.
|
|
||||||
|
|
||||||
I don't really test these platforms at all, only when I suspect some changes to the code might impact them.
|
|
||||||
|
|
||||||
|Platform|Machine|Notes|
|
|
||||||
|--------|-------|-----|
|
|
||||||
|macOS x86 | macOS 10.4 |
|
|
||||||
|FreeBSD x86 | FreeBSD | x64 should work too |
|
|
||||||
|NetBSD x86 | NetBSD | x64 should work too |
|
|
||||||
|OpenBSD x86 | OpenBSD | x64 should work too |
|
|
||||||
|Solaris x86 | OpenIndiana | x64 should work too |
|
|
||||||
|macOS PPC | macOS 10.3 | PPC64 completely untested |
|
|
||||||
|Linux PPC | Debian | Issues with colour channels incorrectly swapped? |
|
|
||||||
|Linux ARM | Raspberry pi | ARM64 should work too |
|
|
||||||
|Linux SPARC | Debian | Didn't really work due to lack of 24-bit colours |
|
|
||||||
|Linux Alpha | Debian |
|
|
||||||
|HaikuOS | Nightly | Requires SDL for windowing
|
|
||||||
|
|
||||||
## Porting
|
## Porting
|
||||||
|
|
||||||
Listed below are the requirements for implementing each platform-dependent file.
|
Listed below are the requirements for implementing each platform-dependent file.<br>
|
||||||
You should try to take advantage of existing backends when porting to other platforms.
|
When porting to other platforms, you should try to leverage existing backends when possible.<br>
|
||||||
Only cross platform backends are listed below.
|
Only cross platform backends are listed below.
|
||||||
|
|
||||||
### Platform
|
### Platform
|
||||||
|
|
@ -91,8 +45,8 @@ Create a window, show a dialog window, set window contents, keyboard/mouse input
|
||||||
Also monitor size, clipboard, cursor, raw relative mouse movement (optional)
|
Also monitor size, clipboard, cursor, raw relative mouse movement (optional)
|
||||||
|
|
||||||
Define:
|
Define:
|
||||||
- ```CC_BUILD_X11``` - Use X11/XLib (unix-ish) (glX)
|
- ```DEFAULT_WIN_BACKEND CC_WIN_BACKEND_X11 ``` - Use X11/XLib (unix-ish) (glX)
|
||||||
- ```CC_BUILD_SDL``` - Use SDL library (SDL)
|
- ```DEFAULT_WIN_BACKEND CC_WIN_BACKEND_SDL2``` - Use SDL2 library (SDL2)
|
||||||
|
|
||||||
If using OpenGL, also OpenGL context management
|
If using OpenGL, also OpenGL context management
|
||||||
|
|
||||||
|
|
@ -110,23 +64,29 @@ posix note: Register access is highly dependent on OS and architecture.
|
||||||
Play multiple audio streams with varying sample rates
|
Play multiple audio streams with varying sample rates
|
||||||
|
|
||||||
Define:
|
Define:
|
||||||
- ```CC_BUILD_OPENAL``` - use OpenAL
|
- ```DEFAULT_AUD_BACKEND CC_AUD_BACKEND_OPENAL``` - use OpenAL
|
||||||
- ```CC_BUILD_NOAUDIO``` - stub audio implementation (silent)
|
- ```CC_BUILD_NOAUDIO``` - stub audio implementation (silent)
|
||||||
|
|
||||||
### 3D Graphics
|
### 3D Graphics
|
||||||
Texturing, depth buffer, alpha, etc (See Graphics.h for full list)
|
Texturing, depth buffer, alpha, etc (See Graphics.h for full list)
|
||||||
|
|
||||||
Define:
|
Define:
|
||||||
- ```CC_BUILD_D3D9``` - Use Direct3D9
|
- ```DEFAULT_GFX_BACKEND CC_GFX_BACKEND_GL1``` - Use legacy OpenGL (1.5/1.2 + ARB_VERTEX_BUFFER_OBJECT)
|
||||||
- ```CC_BUILD_GL``` - Use OpenGL (1.5/1.2 + ARB_VERTEX_BUFFER_OBJECT)
|
- ```CC_BUILD_GL11``` - Use OpenGL 1.1 features only
|
||||||
- ```CC_BUILD_GL11``` - Use OpenGL 1.1 features only
|
- ```DEFAULT_GFX_BACKEND CC_GFX_BACKEND_GL2``` - Use modern OpenGL shaders
|
||||||
- ```CC_BUILD_GLMODERN``` - Use modern OpenGL shaders
|
- ```CC_BUILD_GLES``` - Makes these shaders compatible with OpenGL ES
|
||||||
- ```CC_BUILD_GLES``` - Makes these shaders compatible with OpenGL ES
|
- ```DEFAULT_GFX_BACKEND CC_GFX_BACKEND_SOFTGPU``` - Use built in software rasteriser
|
||||||
|
|
||||||
### Http
|
### HTTP
|
||||||
HTTP, HTTPS, and setting request/getting response headers
|
HTTP, HTTPS, and setting request/getting response headers
|
||||||
|
|
||||||
Define:
|
Define:
|
||||||
- ```CC_BUILD_CURL``` - use libcurl for http
|
- ```DEFAULT_NET_BACKEND CC_NET_BACKEND_BUILTIN``` - use built in simple HTTP backend
|
||||||
|
|
||||||
Supporting connection reuse is highly recommended. (but not required)
|
Supporting connection reuse is highly recommended. (but not required)
|
||||||
|
|
||||||
|
### SSL
|
||||||
|
SSL and TLS support, plus basic certificate validation
|
||||||
|
|
||||||
|
Define:
|
||||||
|
- ```DEFAULT_SSL_BACKEND CC_SSL_BACKEND_BEARSSL``` - use BearSSL for SSL/TLS
|
||||||
|
|
|
||||||
133
doc/strings.md
|
|
@ -3,7 +3,7 @@
|
||||||
ClassiCube uses a custom string type rather than the standard C `char*` string in most places
|
ClassiCube uses a custom string type rather than the standard C `char*` string in most places
|
||||||
|
|
||||||
ClassiCube strings (`cc_string`) are a struct with the following fields:
|
ClassiCube strings (`cc_string`) are a struct with the following fields:
|
||||||
- `buffer` -> Pointer to 8 bit characters (unsigned code page 437 indices)
|
- `buffer` -> Pointer to 8 bit characters (unsigned [code page 437 indices](https://en.wikipedia.org/wiki/Code_page_437#Character_set))
|
||||||
- `length` -> Number of characters currently used
|
- `length` -> Number of characters currently used
|
||||||
- `capacity` -> Maximum number of characters (i.e buffer size)
|
- `capacity` -> Maximum number of characters (i.e buffer size)
|
||||||
|
|
||||||
|
|
@ -20,6 +20,29 @@ Some general guidelines to keep in mind when it comes to `cc_string` strings:
|
||||||
- Strings are not garbage collected or reference counted<br>
|
- Strings are not garbage collected or reference counted<br>
|
||||||
(i.e. you are responsible for managing the lifetime of strings)
|
(i.e. you are responsible for managing the lifetime of strings)
|
||||||
|
|
||||||
|
## Usage examples
|
||||||
|
|
||||||
|
Initialisating a string from readonly text:
|
||||||
|
```C
|
||||||
|
cc_string str = String_FromConst("ABC");
|
||||||
|
```
|
||||||
|
|
||||||
|
Initialising a string from temporary memory on the stack:
|
||||||
|
```C
|
||||||
|
// str will be able to store at most 200 characters in it
|
||||||
|
char strBuffer[200];
|
||||||
|
cc_string str = String_FromArray(strBuffer);
|
||||||
|
```
|
||||||
|
|
||||||
|
Initialising a string from persistent memory on the heap:
|
||||||
|
```C
|
||||||
|
// str will be able to store at most 200 characters in it
|
||||||
|
char* str = Mem_Alloc(1, 200, "String buffer");
|
||||||
|
cc_string str = String_Init(str, 0, 200);
|
||||||
|
```
|
||||||
|
|
||||||
|
# Converting to/from other string representations
|
||||||
|
|
||||||
## C String conversion
|
## C String conversion
|
||||||
|
|
||||||
### C string -> cc_string
|
### C string -> cc_string
|
||||||
|
|
@ -88,7 +111,7 @@ void SetWorkingDir(cc_string* title) {
|
||||||
Platform_EncodeUtf16(&str, title);
|
Platform_EncodeUtf16(&str, title);
|
||||||
SetCurrentDirectoryW(str.uni);
|
SetCurrentDirectoryW(str.uni);
|
||||||
|
|
||||||
// it's recommended that you DON'T use the ansi format whenever possible
|
// it's recommended that you DON'T use the ansi format whenever possible
|
||||||
//SetCurrentDirectoryA(str.ansi);
|
//SetCurrentDirectoryA(str.ansi);
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
@ -106,13 +129,15 @@ void SetWorkingDir(cc_string* title) {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## API
|
# API
|
||||||
|
|
||||||
I'm lazy so I will just link to [String.h](/src/String.h)
|
I'm lazy so I will just link to [String.h](/src/String.h)
|
||||||
|
|
||||||
If you'd rather I provided a more detailed reference here, please let me know.
|
If you'd rather I provided a more detailed reference here, please let me know.
|
||||||
|
|
||||||
# Extra details
|
TODO
|
||||||
|
|
||||||
|
# Comparisons to other string implementations
|
||||||
|
|
||||||
## C comparison
|
## C comparison
|
||||||
|
|
||||||
|
|
@ -202,11 +227,103 @@ string::compare -> String_Compare
|
||||||
std::sprintf -> String_Format1/2/3/4
|
std::sprintf -> String_Format1/2/3/4
|
||||||
```
|
```
|
||||||
|
|
||||||
|
# Detailed lifetime examples
|
||||||
|
|
||||||
## lifetime examples
|
Managing the lifetime of strings is important, as not properly managing them can cause issues.
|
||||||
|
|
||||||
Stack allocated returning example
|
For example, consider the following function:
|
||||||
|
```C
|
||||||
|
const cc_string* GetString(void);
|
||||||
|
|
||||||
Mem_Alloc/Mem_Free and function example
|
void PrintSomething(void) {
|
||||||
|
cc_string* str = GetString();
|
||||||
|
// .. other code ..
|
||||||
|
Chat_Add(str);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
UNSAFE and mutating characters example
|
Without knowing the lifetime of the string returned from `GetString`, using it might either:
|
||||||
|
* Work just fine
|
||||||
|
* Sometimes work fine
|
||||||
|
* Cause a subtle issue
|
||||||
|
* Cause a major problem
|
||||||
|
ptodo rearrange
|
||||||
|
|
||||||
|
### Constant string return example
|
||||||
|
```C
|
||||||
|
const cc_string* GetString(void) {
|
||||||
|
static cc_string str = String_FromConst("ABC");
|
||||||
|
return &str;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
This will work fine - as long as the caller does not modify the returned string at all
|
||||||
|
|
||||||
|
### Stack allocated string return example
|
||||||
|
|
||||||
|
```C
|
||||||
|
const cc_string* GetString(void) {
|
||||||
|
char strBuffer[1024];
|
||||||
|
cc_string str = String_FromArray(strBuffer);
|
||||||
|
|
||||||
|
String_AppendConst(&str, "ABC");
|
||||||
|
return &str;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
This will **almost certainly cause problems** - after `GetString` returns, the contents of both `str` and `strBuffer` may be changed to arbitary values (as once `GetString` returns, their contents are then eligible to be overwritten by other stack allocated variables)
|
||||||
|
|
||||||
|
As a general rule, you should **NEVER** return a string allocated on the stack
|
||||||
|
|
||||||
|
### Dynamically allocated string return example
|
||||||
|
|
||||||
|
```C
|
||||||
|
const cc_string* GetString(void) {
|
||||||
|
char* buffer = Mem_Alloc(1024, 1, "string buffer");
|
||||||
|
cc_string* str = Mem_Alloc(1, sizeof(cc_string), "string");
|
||||||
|
|
||||||
|
*str = String_Init(buffer, 0, 1024);
|
||||||
|
String_AppendConst(str, "ABC");
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
This will work fine - however, now you also need to remember to `Mem_Free` both the string and its buffer to avoid a memory leak
|
||||||
|
|
||||||
|
As a general rule, you should avoid returning a dynamically allocated string
|
||||||
|
|
||||||
|
### UNSAFE mutable string return example
|
||||||
|
|
||||||
|
```C
|
||||||
|
char global_buffer[1024];
|
||||||
|
cc_string global_str = String_FromArray(global_buffer);
|
||||||
|
|
||||||
|
const cc_string* GetString(void) {
|
||||||
|
return &global_str;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Depending on what functions are called in-between `GetString` and `Chat_Add`, `global_str` or its contents may be modified - which can result in an unexpected value being displayed in chat
|
||||||
|
|
||||||
|
This potential issue is not just theoretical - it has actually resulted in several real bugs in ClassiCube itself
|
||||||
|
|
||||||
|
As a general rule, for unsafe functions returning a string that may be mutated behind your back, you should try to maintain a reference to the string for as short of time as possible
|
||||||
|
|
||||||
|
### Reducing string lifetime issues
|
||||||
|
|
||||||
|
In general, for functions that produce strings, you should try to leave the responsibility of managing the string's lifetime up to the calling function to avoid these pitfalls
|
||||||
|
|
||||||
|
The example from before could instead be rewritten like so:
|
||||||
|
|
||||||
|
```C
|
||||||
|
void GetString(cc_string* str);
|
||||||
|
|
||||||
|
void PrintSomething(void) {
|
||||||
|
char strBuffer[256];
|
||||||
|
cc_string str = String_InitArray(strBuffer);
|
||||||
|
GetString(&str);
|
||||||
|
|
||||||
|
// .. other code ..
|
||||||
|
Chat_Add(&str);
|
||||||
|
}
|
||||||
|
```
|
||||||
24
doc/style.md
|
|
@ -6,29 +6,29 @@
|
||||||
* Private variables don't really have a consistent style.
|
* Private variables don't really have a consistent style.
|
||||||
|
|
||||||
### Types
|
### Types
|
||||||
* Explicit integer typedefs are provided in ```Core.h``` for when needed. Otherwise just use int.
|
* Explicit integer size typedefs are provided in `Core.h` for when needed. Otherwise just use int.
|
||||||
* A few common simple structs are typedef-ed, but are rarely otherwise.
|
* A few common simple structs are typedef-ed, but are rarely otherwise.
|
||||||
* ```cc_bool``` is an alias for 8 bit unsigned integer
|
* `cc_bool` is an alias for 8 bit unsigned integer
|
||||||
* ```PackedCol``` field order differs depending on the underlying 3D graphics API
|
* `PackedCol` field order differs depending on the underlying 3D graphics API
|
||||||
|
|
||||||
I may not have defined the appropriate types for your compiler, so you may need to modify ```Core.h```
|
Note: The explicit integer size typedefs may not have been defined if you aren't compiling using GCC/Clang/MSVC, so for other compilers you may need to add them into `Core.h`
|
||||||
|
|
||||||
### Strings
|
### Strings
|
||||||
|
|
||||||
A custom string type (`cc_string`) is used rather than `char*` strings in most places (see [strings](doc/strings.md) page for more details)
|
A custom string type (`cc_string`) is used rather than `char*` strings in most places (see [strings](strings.md) page for more details)
|
||||||
|
|
||||||
*Note: Several functions will take raw ```char*``` for performance, but this is not encouraged*
|
*Note: Several functions will take raw `char*` for performance, but this is not encouraged*
|
||||||
|
|
||||||
#### String arguments
|
#### String arguments
|
||||||
String arguments are annotated to indicate storage and readonly requirements. These are:
|
String arguments are annotated to indicate storage and readonly requirements. These are:
|
||||||
- ```const cc_string*``` - String is not modified at all
|
- `const cc_string*` - String is not modified at all
|
||||||
- ```cc_string*``` - Characters in string may be modified
|
- `cc_string*` - Characters in string may be modified
|
||||||
- ```STRING_REF``` - Macro annotation indicating a **reference is kept to the characters**
|
- `STRING_REF` - Macro annotation indicating a **reference is kept to the characters**
|
||||||
|
|
||||||
To make it extra clear, functions with ```STRING_REF``` arguments usually also have ```_UNSAFE_``` as part of their name.
|
To make it extra clear, functions with `STRING_REF` arguments usually also have `_UNSAFE_` as part of their name.
|
||||||
|
|
||||||
For example, consider the function ```cc_string Substring_UNSAFE(STRING_REF const cc_string* str, length)```
|
For example, consider the function `cc_string Substring_UNSAFE(STRING_REF const cc_string* str, length)`
|
||||||
|
|
||||||
The *input string* is not modified at all. However, the characters of the *returned string* points to the characters of the *input string*, so modifying the characters in the *input string* also modifies the *returned string*.
|
The *input string* is not modified at all. However, the characters of the *returned string* points to the characters of the *input string*, so modifying the characters in the *input string* also modifies the *returned string*.
|
||||||
|
|
||||||
In general, use of ```const String*``` is preferred when possible, and ```STRING_REF``` as little as possible.
|
In general, use of `const cc_string*` is preferred when possible, and `STRING_REF` as little as possible.
|
||||||
|
|
|
||||||
|
|
@ -1,785 +0,0 @@
|
||||||
// !$*UTF8*$!
|
|
||||||
{
|
|
||||||
archiveVersion = 1;
|
|
||||||
classes = {
|
|
||||||
};
|
|
||||||
objectVersion = 50;
|
|
||||||
objects = {
|
|
||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
|
||||||
9A62ADF5286D906F00E5E3DE /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9A62ADF4286D906F00E5E3DE /* Assets.xcassets */; };
|
|
||||||
9A89D4F227F802F600FF3F80 /* LWidgets.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D37827F802F500FF3F80 /* LWidgets.c */; };
|
|
||||||
9A89D4F327F802F600FF3F80 /* Graphics_GL2.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D37A27F802F500FF3F80 /* Graphics_GL2.c */; };
|
|
||||||
9A89D4F427F802F600FF3F80 /* Vorbis.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D37C27F802F500FF3F80 /* Vorbis.c */; };
|
|
||||||
9A89D4F527F802F600FF3F80 /* _ftsynth.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D37D27F802F500FF3F80 /* _ftsynth.c */; };
|
|
||||||
9A89D4F627F802F600FF3F80 /* Platform_Android.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D37F27F802F500FF3F80 /* Platform_Android.c */; };
|
|
||||||
9A89D4F727F802F600FF3F80 /* Game.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D38027F802F500FF3F80 /* Game.c */; };
|
|
||||||
9A89D4F827F802F600FF3F80 /* Window_Android.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D38127F802F500FF3F80 /* Window_Android.c */; };
|
|
||||||
9A89D4F927F802F600FF3F80 /* Http_Worker.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D38227F802F500FF3F80 /* Http_Worker.c */; };
|
|
||||||
9A89D4FB27F802F600FF3F80 /* TexturePack.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D38427F802F500FF3F80 /* TexturePack.c */; };
|
|
||||||
9A89D4FC27F802F600FF3F80 /* Graphics_D3D9.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D38527F802F500FF3F80 /* Graphics_D3D9.c */; };
|
|
||||||
9A89D4FD27F802F600FF3F80 /* ExtMath.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D38627F802F500FF3F80 /* ExtMath.c */; };
|
|
||||||
9A89D4FE27F802F600FF3F80 /* Inventory.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D38B27F802F500FF3F80 /* Inventory.c */; };
|
|
||||||
9A89D4FF27F802F600FF3F80 /* Gui.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D38C27F802F500FF3F80 /* Gui.c */; };
|
|
||||||
9A89D50027F802F600FF3F80 /* _truetype.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D38E27F802F500FF3F80 /* _truetype.c */; };
|
|
||||||
9A89D50127F802F600FF3F80 /* LBackend.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D38F27F802F500FF3F80 /* LBackend.c */; };
|
|
||||||
9A89D50227F802F600FF3F80 /* Block.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D39127F802F500FF3F80 /* Block.c */; };
|
|
||||||
9A89D50327F802F600FF3F80 /* Platform_Posix.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D39227F802F500FF3F80 /* Platform_Posix.c */; };
|
|
||||||
9A89D50427F802F600FF3F80 /* Model.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D39627F802F500FF3F80 /* Model.c */; };
|
|
||||||
9A89D50527F802F600FF3F80 /* LScreens.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D39827F802F500FF3F80 /* LScreens.c */; };
|
|
||||||
9A89D50627F802F600FF3F80 /* Builder.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D39927F802F500FF3F80 /* Builder.c */; };
|
|
||||||
9A89D50727F802F600FF3F80 /* Particle.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D39B27F802F500FF3F80 /* Particle.c */; };
|
|
||||||
9A89D50827F802F600FF3F80 /* PackedCol.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D39C27F802F500FF3F80 /* PackedCol.c */; };
|
|
||||||
9A89D54F27F802F600FF3F80 /* Deflate.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D47227F802F500FF3F80 /* Deflate.c */; };
|
|
||||||
9A89D55027F802F600FF3F80 /* Entity.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D47427F802F500FF3F80 /* Entity.c */; };
|
|
||||||
9A89D55127F802F600FF3F80 /* IsometricDrawer.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D47527F802F500FF3F80 /* IsometricDrawer.c */; };
|
|
||||||
9A89D55227F802F600FF3F80 /* Logger.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D47627F802F500FF3F80 /* Logger.c */; };
|
|
||||||
9A89D55327F802F600FF3F80 /* _psaux.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D47727F802F500FF3F80 /* _psaux.c */; };
|
|
||||||
9A89D55427F802F600FF3F80 /* Bitmap.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D47827F802F500FF3F80 /* Bitmap.c */; };
|
|
||||||
9A89D55527F802F600FF3F80 /* HeldBlockRenderer.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D47927F802F500FF3F80 /* HeldBlockRenderer.c */; };
|
|
||||||
9A89D55627F802F600FF3F80 /* EnvRenderer.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D47A27F802F500FF3F80 /* EnvRenderer.c */; };
|
|
||||||
9A89D55727F802F600FF3F80 /* Makefile in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D47B27F802F500FF3F80 /* Makefile */; };
|
|
||||||
9A89D55827F802F600FF3F80 /* Graphics_GL1.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D47E27F802F500FF3F80 /* Graphics_GL1.c */; };
|
|
||||||
9A89D55927F802F600FF3F80 /* interop_ios.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D47F27F802F600FF3F80 /* interop_ios.m */; };
|
|
||||||
9A89D55A27F802F600FF3F80 /* Program.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D48127F802F600FF3F80 /* Program.c */; };
|
|
||||||
9A89D55B27F802F600FF3F80 /* _type1.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D48227F802F600FF3F80 /* _type1.c */; };
|
|
||||||
9A89D55C27F802F600FF3F80 /* Animations.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D48527F802F600FF3F80 /* Animations.c */; };
|
|
||||||
9A89D55D27F802F600FF3F80 /* _psmodule.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D48627F802F600FF3F80 /* _psmodule.c */; };
|
|
||||||
9A89D55E27F802F600FF3F80 /* World.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D48727F802F600FF3F80 /* World.c */; };
|
|
||||||
9A89D55F27F802F600FF3F80 /* _sfnt.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D48827F802F600FF3F80 /* _sfnt.c */; };
|
|
||||||
9A89D56027F802F600FF3F80 /* _ftbitmap.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D48A27F802F600FF3F80 /* _ftbitmap.c */; };
|
|
||||||
9A89D56127F802F600FF3F80 /* Menus.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D48B27F802F600FF3F80 /* Menus.c */; };
|
|
||||||
9A89D56227F802F600FF3F80 /* _ftbase.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D48C27F802F600FF3F80 /* _ftbase.c */; };
|
|
||||||
9A89D56327F802F600FF3F80 /* _autofit.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D48D27F802F600FF3F80 /* _autofit.c */; };
|
|
||||||
9A89D56427F802F600FF3F80 /* String.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D49227F802F600FF3F80 /* String.c */; };
|
|
||||||
9A89D56527F802F600FF3F80 /* Generator.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D49427F802F600FF3F80 /* Generator.c */; };
|
|
||||||
9A89D56627F802F600FF3F80 /* Drawer2D.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D49527F802F600FF3F80 /* Drawer2D.c */; };
|
|
||||||
9A89D56727F802F600FF3F80 /* Drawer.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D49827F802F600FF3F80 /* Drawer.c */; };
|
|
||||||
9A89D56827F802F600FF3F80 /* Lighting.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D49927F802F600FF3F80 /* Lighting.c */; };
|
|
||||||
9A89D56927F802F600FF3F80 /* Window_Carbon.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D49A27F802F600FF3F80 /* Window_Carbon.c */; };
|
|
||||||
9A89D56A27F802F600FF3F80 /* Physics.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D49B27F802F600FF3F80 /* Physics.c */; };
|
|
||||||
9A89D56B27F802F600FF3F80 /* Server.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D49E27F802F600FF3F80 /* Server.c */; };
|
|
||||||
9A89D56C27F802F600FF3F80 /* _ftinit.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4A027F802F600FF3F80 /* _ftinit.c */; };
|
|
||||||
9A89D56D27F802F600FF3F80 /* Window_X11.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4A127F802F600FF3F80 /* Window_X11.c */; };
|
|
||||||
9A89D56E27F802F600FF3F80 /* Platform_WinApi.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4A327F802F600FF3F80 /* Platform_WinApi.c */; };
|
|
||||||
9A89D56F27F802F600FF3F80 /* Input.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4A627F802F600FF3F80 /* Input.c */; };
|
|
||||||
9A89D57227F802F600FF3F80 /* Picking.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4AA27F802F600FF3F80 /* Picking.c */; };
|
|
||||||
9A89D57327F802F600FF3F80 /* Utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4AB27F802F600FF3F80 /* Utils.c */; };
|
|
||||||
9A89D57427F802F600FF3F80 /* MapRenderer.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4AE27F802F600FF3F80 /* MapRenderer.c */; };
|
|
||||||
9A89D57527F802F600FF3F80 /* AxisLinesRenderer.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4AF27F802F600FF3F80 /* AxisLinesRenderer.c */; };
|
|
||||||
9A89D57627F802F600FF3F80 /* _pshinter.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4B127F802F600FF3F80 /* _pshinter.c */; };
|
|
||||||
9A89D57827F802F600FF3F80 /* Protocol.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4B327F802F600FF3F80 /* Protocol.c */; };
|
|
||||||
9A89D57927F802F600FF3F80 /* Event.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4B527F802F600FF3F80 /* Event.c */; };
|
|
||||||
9A89D57A27F802F600FF3F80 /* Graphics_D3D11.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4B727F802F600FF3F80 /* Graphics_D3D11.c */; };
|
|
||||||
9A89D57B27F802F600FF3F80 /* _ftglyph.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4BB27F802F600FF3F80 /* _ftglyph.c */; };
|
|
||||||
9A89D57C27F802F600FF3F80 /* Chat.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4BC27F802F600FF3F80 /* Chat.c */; };
|
|
||||||
9A89D57D27F802F600FF3F80 /* _smooth.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4BD27F802F600FF3F80 /* _smooth.c */; };
|
|
||||||
9A89D57E27F802F600FF3F80 /* Resources.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4BE27F802F600FF3F80 /* Resources.c */; };
|
|
||||||
9A89D57F27F802F600FF3F80 /* LWeb.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4C427F802F600FF3F80 /* LWeb.c */; };
|
|
||||||
9A89D58027F802F600FF3F80 /* Formats.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4C627F802F600FF3F80 /* Formats.c */; };
|
|
||||||
9A89D58127F802F600FF3F80 /* PickedPosRenderer.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4C927F802F600FF3F80 /* PickedPosRenderer.c */; };
|
|
||||||
9A89D58327F802F600FF3F80 /* EntityComponents.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4CC27F802F600FF3F80 /* EntityComponents.c */; };
|
|
||||||
9A89D58427F802F600FF3F80 /* Camera.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4CF27F802F600FF3F80 /* Camera.c */; };
|
|
||||||
9A89D58527F802F600FF3F80 /* Platform_Web.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4D027F802F600FF3F80 /* Platform_Web.c */; };
|
|
||||||
9A89D58627F802F600FF3F80 /* Screens.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4D127F802F600FF3F80 /* Screens.c */; };
|
|
||||||
9A89D58727F802F600FF3F80 /* SelectionBox.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4D227F802F600FF3F80 /* SelectionBox.c */; };
|
|
||||||
9A89D58927F802F600FF3F80 /* _cff.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4DA27F802F600FF3F80 /* _cff.c */; };
|
|
||||||
9A89D58A27F802F600FF3F80 /* BlockPhysics.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4DB27F802F600FF3F80 /* BlockPhysics.c */; };
|
|
||||||
9A89D58B27F802F600FF3F80 /* Launcher.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4DD27F802F600FF3F80 /* Launcher.c */; };
|
|
||||||
9A89D58C27F802F600FF3F80 /* Window_Win.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4DF27F802F600FF3F80 /* Window_Win.c */; };
|
|
||||||
9A89D58D27F802F600FF3F80 /* Options.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4E327F802F600FF3F80 /* Options.c */; };
|
|
||||||
9A89D58E27F802F600FF3F80 /* Window_SDL.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4E427F802F600FF3F80 /* Window_SDL.c */; };
|
|
||||||
9A89D58F27F802F600FF3F80 /* Audio.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4E727F802F600FF3F80 /* Audio.c */; };
|
|
||||||
9A89D59027F802F600FF3F80 /* Stream.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4E827F802F600FF3F80 /* Stream.c */; };
|
|
||||||
9A89D59127F802F600FF3F80 /* Vectors.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4E927F802F600FF3F80 /* Vectors.c */; };
|
|
||||||
9A89D59227F802F600FF3F80 /* Http_Web.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4EB27F802F600FF3F80 /* Http_Web.c */; };
|
|
||||||
9A89D59327F802F600FF3F80 /* Window_Web.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4EC27F802F600FF3F80 /* Window_Web.c */; };
|
|
||||||
9A89D59427F802F600FF3F80 /* Widgets.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4EE27F802F600FF3F80 /* Widgets.c */; };
|
|
||||||
/* End PBXBuildFile section */
|
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
|
||||||
9A62ADF4286D906F00E5E3DE /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = ClassiCube/Assets.xcassets; sourceTree = "<group>"; };
|
|
||||||
9A89D35727F802B100FF3F80 /* ClassiCube.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ClassiCube.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
||||||
9A89D36827F802B400FF3F80 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
|
||||||
9A89D37827F802F500FF3F80 /* LWidgets.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = LWidgets.c; sourceTree = "<group>"; };
|
|
||||||
9A89D37927F802F500FF3F80 /* AxisLinesRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AxisLinesRenderer.h; sourceTree = "<group>"; };
|
|
||||||
9A89D37A27F802F500FF3F80 /* Graphics_GL2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Graphics_GL2.c; sourceTree = "<group>"; };
|
|
||||||
9A89D37B27F802F500FF3F80 /* MapRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MapRenderer.h; sourceTree = "<group>"; };
|
|
||||||
9A89D37C27F802F500FF3F80 /* Vorbis.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Vorbis.c; sourceTree = "<group>"; };
|
|
||||||
9A89D37D27F802F500FF3F80 /* _ftsynth.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = _ftsynth.c; sourceTree = "<group>"; };
|
|
||||||
9A89D37E27F802F500FF3F80 /* Protocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Protocol.h; sourceTree = "<group>"; };
|
|
||||||
9A89D37F27F802F500FF3F80 /* Platform_Android.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Platform_Android.c; sourceTree = "<group>"; };
|
|
||||||
9A89D38027F802F500FF3F80 /* Game.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Game.c; sourceTree = "<group>"; };
|
|
||||||
9A89D38127F802F500FF3F80 /* Window_Android.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Window_Android.c; sourceTree = "<group>"; };
|
|
||||||
9A89D38227F802F500FF3F80 /* Http_Worker.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Http_Worker.c; sourceTree = "<group>"; };
|
|
||||||
9A89D38427F802F500FF3F80 /* TexturePack.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = TexturePack.c; sourceTree = "<group>"; };
|
|
||||||
9A89D38527F802F500FF3F80 /* Graphics_D3D9.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Graphics_D3D9.c; sourceTree = "<group>"; };
|
|
||||||
9A89D38627F802F500FF3F80 /* ExtMath.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ExtMath.c; sourceTree = "<group>"; };
|
|
||||||
9A89D38727F802F500FF3F80 /* Utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Utils.h; sourceTree = "<group>"; };
|
|
||||||
9A89D38827F802F500FF3F80 /* Picking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Picking.h; sourceTree = "<group>"; };
|
|
||||||
9A89D38927F802F500FF3F80 /* Input.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Input.h; sourceTree = "<group>"; };
|
|
||||||
9A89D38A27F802F500FF3F80 /* _HttpBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _HttpBase.h; sourceTree = "<group>"; };
|
|
||||||
9A89D38B27F802F500FF3F80 /* Inventory.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Inventory.c; sourceTree = "<group>"; };
|
|
||||||
9A89D38C27F802F500FF3F80 /* Gui.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Gui.c; sourceTree = "<group>"; };
|
|
||||||
9A89D38D27F802F500FF3F80 /* Core.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Core.h; sourceTree = "<group>"; };
|
|
||||||
9A89D38E27F802F500FF3F80 /* _truetype.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = _truetype.c; sourceTree = "<group>"; };
|
|
||||||
9A89D38F27F802F500FF3F80 /* LBackend.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = LBackend.c; sourceTree = "<group>"; };
|
|
||||||
9A89D39027F802F500FF3F80 /* LWeb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LWeb.h; sourceTree = "<group>"; };
|
|
||||||
9A89D39127F802F500FF3F80 /* Block.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Block.c; sourceTree = "<group>"; };
|
|
||||||
9A89D39227F802F500FF3F80 /* Platform_Posix.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Platform_Posix.c; sourceTree = "<group>"; };
|
|
||||||
9A89D39327F802F500FF3F80 /* Formats.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Formats.h; sourceTree = "<group>"; };
|
|
||||||
9A89D39427F802F500FF3F80 /* Resources.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Resources.h; sourceTree = "<group>"; };
|
|
||||||
9A89D39527F802F500FF3F80 /* Chat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Chat.h; sourceTree = "<group>"; };
|
|
||||||
9A89D39627F802F500FF3F80 /* Model.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Model.c; sourceTree = "<group>"; };
|
|
||||||
9A89D39727F802F500FF3F80 /* Http.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Http.h; sourceTree = "<group>"; };
|
|
||||||
9A89D39827F802F500FF3F80 /* LScreens.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = LScreens.c; sourceTree = "<group>"; };
|
|
||||||
9A89D39927F802F500FF3F80 /* Builder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Builder.c; sourceTree = "<group>"; };
|
|
||||||
9A89D39A27F802F500FF3F80 /* _PlatformBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _PlatformBase.h; sourceTree = "<group>"; };
|
|
||||||
9A89D39B27F802F500FF3F80 /* Particle.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Particle.c; sourceTree = "<group>"; };
|
|
||||||
9A89D39C27F802F500FF3F80 /* PackedCol.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = PackedCol.c; sourceTree = "<group>"; };
|
|
||||||
9A89D47227F802F500FF3F80 /* Deflate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Deflate.c; sourceTree = "<group>"; };
|
|
||||||
9A89D47327F802F500FF3F80 /* Event.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Event.h; sourceTree = "<group>"; };
|
|
||||||
9A89D47427F802F500FF3F80 /* Entity.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Entity.c; sourceTree = "<group>"; };
|
|
||||||
9A89D47527F802F500FF3F80 /* IsometricDrawer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = IsometricDrawer.c; sourceTree = "<group>"; };
|
|
||||||
9A89D47627F802F500FF3F80 /* Logger.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Logger.c; sourceTree = "<group>"; };
|
|
||||||
9A89D47727F802F500FF3F80 /* _psaux.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = _psaux.c; sourceTree = "<group>"; };
|
|
||||||
9A89D47827F802F500FF3F80 /* Bitmap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Bitmap.c; sourceTree = "<group>"; };
|
|
||||||
9A89D47927F802F500FF3F80 /* HeldBlockRenderer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = HeldBlockRenderer.c; sourceTree = "<group>"; };
|
|
||||||
9A89D47A27F802F500FF3F80 /* EnvRenderer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = EnvRenderer.c; sourceTree = "<group>"; };
|
|
||||||
9A89D47B27F802F500FF3F80 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
|
|
||||||
9A89D47C27F802F500FF3F80 /* Screens.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Screens.h; sourceTree = "<group>"; };
|
|
||||||
9A89D47D27F802F500FF3F80 /* SelectionBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SelectionBox.h; sourceTree = "<group>"; };
|
|
||||||
9A89D47E27F802F500FF3F80 /* Graphics_GL1.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Graphics_GL1.c; sourceTree = "<group>"; };
|
|
||||||
9A89D47F27F802F600FF3F80 /* interop_ios.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = interop_ios.m; sourceTree = "<group>"; };
|
|
||||||
9A89D48027F802F600FF3F80 /* Camera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Camera.h; sourceTree = "<group>"; };
|
|
||||||
9A89D48127F802F600FF3F80 /* Program.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Program.c; sourceTree = "<group>"; };
|
|
||||||
9A89D48227F802F600FF3F80 /* _type1.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = _type1.c; sourceTree = "<group>"; };
|
|
||||||
9A89D48327F802F600FF3F80 /* _GraphicsBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _GraphicsBase.h; sourceTree = "<group>"; };
|
|
||||||
9A89D48427F802F600FF3F80 /* EntityComponents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EntityComponents.h; sourceTree = "<group>"; };
|
|
||||||
9A89D48527F802F600FF3F80 /* Animations.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Animations.c; sourceTree = "<group>"; };
|
|
||||||
9A89D48627F802F600FF3F80 /* _psmodule.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = _psmodule.c; sourceTree = "<group>"; };
|
|
||||||
9A89D48727F802F600FF3F80 /* World.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = World.c; sourceTree = "<group>"; };
|
|
||||||
9A89D48827F802F600FF3F80 /* _sfnt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = _sfnt.c; sourceTree = "<group>"; };
|
|
||||||
9A89D48927F802F600FF3F80 /* _WindowBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _WindowBase.h; sourceTree = "<group>"; };
|
|
||||||
9A89D48A27F802F600FF3F80 /* _ftbitmap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = _ftbitmap.c; sourceTree = "<group>"; };
|
|
||||||
9A89D48B27F802F600FF3F80 /* Menus.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Menus.c; sourceTree = "<group>"; };
|
|
||||||
9A89D48C27F802F600FF3F80 /* _ftbase.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = _ftbase.c; sourceTree = "<group>"; };
|
|
||||||
9A89D48D27F802F600FF3F80 /* _autofit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = _autofit.c; sourceTree = "<group>"; };
|
|
||||||
9A89D48E27F802F600FF3F80 /* PickedPosRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PickedPosRenderer.h; sourceTree = "<group>"; };
|
|
||||||
9A89D48F27F802F600FF3F80 /* Window.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Window.h; sourceTree = "<group>"; };
|
|
||||||
9A89D49027F802F600FF3F80 /* Errors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Errors.h; sourceTree = "<group>"; };
|
|
||||||
9A89D49127F802F600FF3F80 /* Widgets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Widgets.h; sourceTree = "<group>"; };
|
|
||||||
9A89D49227F802F600FF3F80 /* String.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = String.c; sourceTree = "<group>"; };
|
|
||||||
9A89D49327F802F600FF3F80 /* Audio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Audio.h; sourceTree = "<group>"; };
|
|
||||||
9A89D49427F802F600FF3F80 /* Generator.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Generator.c; sourceTree = "<group>"; };
|
|
||||||
9A89D49527F802F600FF3F80 /* Drawer2D.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Drawer2D.c; sourceTree = "<group>"; };
|
|
||||||
9A89D49627F802F600FF3F80 /* Vectors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Vectors.h; sourceTree = "<group>"; };
|
|
||||||
9A89D49727F802F600FF3F80 /* Stream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Stream.h; sourceTree = "<group>"; };
|
|
||||||
9A89D49827F802F600FF3F80 /* Drawer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Drawer.c; sourceTree = "<group>"; };
|
|
||||||
9A89D49927F802F600FF3F80 /* Lighting.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Lighting.c; sourceTree = "<group>"; };
|
|
||||||
9A89D49A27F802F600FF3F80 /* Window_Carbon.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Window_Carbon.c; sourceTree = "<group>"; };
|
|
||||||
9A89D49B27F802F600FF3F80 /* Physics.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Physics.c; sourceTree = "<group>"; };
|
|
||||||
9A89D49C27F802F600FF3F80 /* Options.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Options.h; sourceTree = "<group>"; };
|
|
||||||
9A89D49D27F802F600FF3F80 /* BlockPhysics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlockPhysics.h; sourceTree = "<group>"; };
|
|
||||||
9A89D49E27F802F600FF3F80 /* Server.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Server.c; sourceTree = "<group>"; };
|
|
||||||
9A89D49F27F802F600FF3F80 /* Launcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Launcher.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4A027F802F600FF3F80 /* _ftinit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = _ftinit.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4A127F802F600FF3F80 /* Window_X11.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Window_X11.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4A227F802F600FF3F80 /* Inventory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Inventory.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4A327F802F600FF3F80 /* Platform_WinApi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Platform_WinApi.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4A427F802F600FF3F80 /* Gui.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Gui.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4A527F802F600FF3F80 /* Constants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Constants.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4A627F802F600FF3F80 /* Input.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Input.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4A927F802F600FF3F80 /* Game.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Game.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4AA27F802F600FF3F80 /* Picking.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Picking.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4AB27F802F600FF3F80 /* Utils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Utils.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4AC27F802F600FF3F80 /* ExtMath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExtMath.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4AD27F802F600FF3F80 /* TexturePack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TexturePack.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4AE27F802F600FF3F80 /* MapRenderer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = MapRenderer.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4AF27F802F600FF3F80 /* AxisLinesRenderer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = AxisLinesRenderer.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4B027F802F600FF3F80 /* LWidgets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LWidgets.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4B127F802F600FF3F80 /* _pshinter.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = _pshinter.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4B327F802F600FF3F80 /* Protocol.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Protocol.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4B427F802F600FF3F80 /* Vorbis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Vorbis.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4B527F802F600FF3F80 /* Event.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Event.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4B627F802F600FF3F80 /* Deflate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Deflate.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4B727F802F600FF3F80 /* Graphics_D3D11.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Graphics_D3D11.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4B827F802F600FF3F80 /* Entity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Entity.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4B927F802F600FF3F80 /* Particle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Particle.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4BA27F802F600FF3F80 /* PackedCol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PackedCol.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4BB27F802F600FF3F80 /* _ftglyph.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = _ftglyph.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4BC27F802F600FF3F80 /* Chat.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Chat.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4BD27F802F600FF3F80 /* _smooth.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = _smooth.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4BE27F802F600FF3F80 /* Resources.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Resources.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4BF27F802F600FF3F80 /* Builder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Builder.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4C027F802F600FF3F80 /* LScreens.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LScreens.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4C127F802F600FF3F80 /* Model.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Model.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4C227F802F600FF3F80 /* BlockID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlockID.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4C327F802F600FF3F80 /* Block.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Block.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4C427F802F600FF3F80 /* LWeb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = LWeb.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4C527F802F600FF3F80 /* LBackend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LBackend.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4C627F802F600FF3F80 /* Formats.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Formats.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4C727F802F600FF3F80 /* Funcs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Funcs.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4C827F802F600FF3F80 /* World.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = World.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4C927F802F600FF3F80 /* PickedPosRenderer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = PickedPosRenderer.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4CB27F802F600FF3F80 /* Menus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Menus.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4CC27F802F600FF3F80 /* EntityComponents.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = EntityComponents.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4CD27F802F600FF3F80 /* Animations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Animations.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4CE27F802F600FF3F80 /* Graphics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Graphics.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4CF27F802F600FF3F80 /* Camera.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Camera.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4D027F802F600FF3F80 /* Platform_Web.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Platform_Web.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4D127F802F600FF3F80 /* Screens.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Screens.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4D227F802F600FF3F80 /* SelectionBox.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SelectionBox.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4D427F802F600FF3F80 /* Logger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Logger.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4D527F802F600FF3F80 /* IsometricDrawer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IsometricDrawer.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4D627F802F600FF3F80 /* EnvRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EnvRenderer.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4D727F802F600FF3F80 /* _GLShared.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _GLShared.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4D827F802F600FF3F80 /* Bitmap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Bitmap.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4D927F802F600FF3F80 /* HeldBlockRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HeldBlockRenderer.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4DA27F802F600FF3F80 /* _cff.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = _cff.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4DB27F802F600FF3F80 /* BlockPhysics.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = BlockPhysics.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4DC27F802F600FF3F80 /* Server.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Server.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4DD27F802F600FF3F80 /* Launcher.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Launcher.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4DE27F802F600FF3F80 /* Lighting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Lighting.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4DF27F802F600FF3F80 /* Window_Win.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Window_Win.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4E027F802F600FF3F80 /* Platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Platform.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4E127F802F600FF3F80 /* Drawer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Drawer.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4E227F802F600FF3F80 /* _D3D11Shaders.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _D3D11Shaders.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4E327F802F600FF3F80 /* Options.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Options.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4E427F802F600FF3F80 /* Window_SDL.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Window_SDL.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4E527F802F600FF3F80 /* Physics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Physics.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4E627F802F600FF3F80 /* Generator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Generator.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4E727F802F600FF3F80 /* Audio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Audio.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4E827F802F600FF3F80 /* Stream.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Stream.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4E927F802F600FF3F80 /* Vectors.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Vectors.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4EA27F802F600FF3F80 /* Drawer2D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Drawer2D.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4EB27F802F600FF3F80 /* Http_Web.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Http_Web.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4EC27F802F600FF3F80 /* Window_Web.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Window_Web.c; sourceTree = "<group>"; };
|
|
||||||
9A89D4ED27F802F600FF3F80 /* String.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = String.h; sourceTree = "<group>"; };
|
|
||||||
9A89D4EE27F802F600FF3F80 /* Widgets.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Widgets.c; sourceTree = "<group>"; };
|
|
||||||
/* End PBXFileReference section */
|
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
|
||||||
9A89D35427F802B100FF3F80 /* Frameworks */ = {
|
|
||||||
isa = PBXFrameworksBuildPhase;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
|
||||||
};
|
|
||||||
/* End PBXFrameworksBuildPhase section */
|
|
||||||
|
|
||||||
/* Begin PBXGroup section */
|
|
||||||
9A89D34E27F802B100FF3F80 = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
9A62ADF4286D906F00E5E3DE /* Assets.xcassets */,
|
|
||||||
9A89D36827F802B400FF3F80 /* Info.plist */,
|
|
||||||
9A89D37727F802F500FF3F80 /* src */,
|
|
||||||
9A89D35827F802B100FF3F80 /* Products */,
|
|
||||||
);
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
9A89D35827F802B100FF3F80 /* Products */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
9A89D35727F802B100FF3F80 /* ClassiCube.app */,
|
|
||||||
);
|
|
||||||
name = Products;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
9A89D37727F802F500FF3F80 /* src */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
9A89D47B27F802F500FF3F80 /* Makefile */,
|
|
||||||
9A89D48D27F802F600FF3F80 /* _autofit.c */,
|
|
||||||
9A89D4DA27F802F600FF3F80 /* _cff.c */,
|
|
||||||
9A89D48C27F802F600FF3F80 /* _ftbase.c */,
|
|
||||||
9A89D48A27F802F600FF3F80 /* _ftbitmap.c */,
|
|
||||||
9A89D4BB27F802F600FF3F80 /* _ftglyph.c */,
|
|
||||||
9A89D4A027F802F600FF3F80 /* _ftinit.c */,
|
|
||||||
9A89D37D27F802F500FF3F80 /* _ftsynth.c */,
|
|
||||||
9A89D47727F802F500FF3F80 /* _psaux.c */,
|
|
||||||
9A89D4B127F802F600FF3F80 /* _pshinter.c */,
|
|
||||||
9A89D48627F802F600FF3F80 /* _psmodule.c */,
|
|
||||||
9A89D48827F802F600FF3F80 /* _sfnt.c */,
|
|
||||||
9A89D4BD27F802F600FF3F80 /* _smooth.c */,
|
|
||||||
9A89D38E27F802F500FF3F80 /* _truetype.c */,
|
|
||||||
9A89D48227F802F600FF3F80 /* _type1.c */,
|
|
||||||
9A89D48527F802F600FF3F80 /* Animations.c */,
|
|
||||||
9A89D4E727F802F600FF3F80 /* Audio.c */,
|
|
||||||
9A89D4AF27F802F600FF3F80 /* AxisLinesRenderer.c */,
|
|
||||||
9A89D47827F802F500FF3F80 /* Bitmap.c */,
|
|
||||||
9A89D39127F802F500FF3F80 /* Block.c */,
|
|
||||||
9A89D4DB27F802F600FF3F80 /* BlockPhysics.c */,
|
|
||||||
9A89D39927F802F500FF3F80 /* Builder.c */,
|
|
||||||
9A89D4CF27F802F600FF3F80 /* Camera.c */,
|
|
||||||
9A89D4BC27F802F600FF3F80 /* Chat.c */,
|
|
||||||
9A89D47227F802F500FF3F80 /* Deflate.c */,
|
|
||||||
9A89D49827F802F600FF3F80 /* Drawer.c */,
|
|
||||||
9A89D49527F802F600FF3F80 /* Drawer2D.c */,
|
|
||||||
9A89D47427F802F500FF3F80 /* Entity.c */,
|
|
||||||
9A89D4CC27F802F600FF3F80 /* EntityComponents.c */,
|
|
||||||
9A89D47A27F802F500FF3F80 /* EnvRenderer.c */,
|
|
||||||
9A89D4B527F802F600FF3F80 /* Event.c */,
|
|
||||||
9A89D38627F802F500FF3F80 /* ExtMath.c */,
|
|
||||||
9A89D4C627F802F600FF3F80 /* Formats.c */,
|
|
||||||
9A89D38027F802F500FF3F80 /* Game.c */,
|
|
||||||
9A89D49427F802F600FF3F80 /* Generator.c */,
|
|
||||||
9A89D38527F802F500FF3F80 /* Graphics_D3D9.c */,
|
|
||||||
9A89D4B727F802F600FF3F80 /* Graphics_D3D11.c */,
|
|
||||||
9A89D47E27F802F500FF3F80 /* Graphics_GL1.c */,
|
|
||||||
9A89D37A27F802F500FF3F80 /* Graphics_GL2.c */,
|
|
||||||
9A89D38C27F802F500FF3F80 /* Gui.c */,
|
|
||||||
9A89D47927F802F500FF3F80 /* HeldBlockRenderer.c */,
|
|
||||||
9A89D4EB27F802F600FF3F80 /* Http_Web.c */,
|
|
||||||
9A89D38227F802F500FF3F80 /* Http_Worker.c */,
|
|
||||||
9A89D4A627F802F600FF3F80 /* Input.c */,
|
|
||||||
9A89D38B27F802F500FF3F80 /* Inventory.c */,
|
|
||||||
9A89D47527F802F500FF3F80 /* IsometricDrawer.c */,
|
|
||||||
9A89D4DD27F802F600FF3F80 /* Launcher.c */,
|
|
||||||
9A89D38F27F802F500FF3F80 /* LBackend.c */,
|
|
||||||
9A89D49927F802F600FF3F80 /* Lighting.c */,
|
|
||||||
9A89D47627F802F500FF3F80 /* Logger.c */,
|
|
||||||
9A89D39827F802F500FF3F80 /* LScreens.c */,
|
|
||||||
9A89D4C427F802F600FF3F80 /* LWeb.c */,
|
|
||||||
9A89D37827F802F500FF3F80 /* LWidgets.c */,
|
|
||||||
9A89D4AE27F802F600FF3F80 /* MapRenderer.c */,
|
|
||||||
9A89D48B27F802F600FF3F80 /* Menus.c */,
|
|
||||||
9A89D39627F802F500FF3F80 /* Model.c */,
|
|
||||||
9A89D4E327F802F600FF3F80 /* Options.c */,
|
|
||||||
9A89D39C27F802F500FF3F80 /* PackedCol.c */,
|
|
||||||
9A89D39B27F802F500FF3F80 /* Particle.c */,
|
|
||||||
9A89D49B27F802F600FF3F80 /* Physics.c */,
|
|
||||||
9A89D4C927F802F600FF3F80 /* PickedPosRenderer.c */,
|
|
||||||
9A89D4AA27F802F600FF3F80 /* Picking.c */,
|
|
||||||
9A89D37F27F802F500FF3F80 /* Platform_Android.c */,
|
|
||||||
9A89D39227F802F500FF3F80 /* Platform_Posix.c */,
|
|
||||||
9A89D4D027F802F600FF3F80 /* Platform_Web.c */,
|
|
||||||
9A89D4A327F802F600FF3F80 /* Platform_WinApi.c */,
|
|
||||||
9A89D48127F802F600FF3F80 /* Program.c */,
|
|
||||||
9A89D4B327F802F600FF3F80 /* Protocol.c */,
|
|
||||||
9A89D4BE27F802F600FF3F80 /* Resources.c */,
|
|
||||||
9A89D4D127F802F600FF3F80 /* Screens.c */,
|
|
||||||
9A89D4D227F802F600FF3F80 /* SelectionBox.c */,
|
|
||||||
9A89D49E27F802F600FF3F80 /* Server.c */,
|
|
||||||
9A89D4E827F802F600FF3F80 /* Stream.c */,
|
|
||||||
9A89D49227F802F600FF3F80 /* String.c */,
|
|
||||||
9A89D38427F802F500FF3F80 /* TexturePack.c */,
|
|
||||||
9A89D4AB27F802F600FF3F80 /* Utils.c */,
|
|
||||||
9A89D4E927F802F600FF3F80 /* Vectors.c */,
|
|
||||||
9A89D37C27F802F500FF3F80 /* Vorbis.c */,
|
|
||||||
9A89D4EE27F802F600FF3F80 /* Widgets.c */,
|
|
||||||
9A89D38127F802F500FF3F80 /* Window_Android.c */,
|
|
||||||
9A89D49A27F802F600FF3F80 /* Window_Carbon.c */,
|
|
||||||
9A89D4E427F802F600FF3F80 /* Window_SDL.c */,
|
|
||||||
9A89D4EC27F802F600FF3F80 /* Window_Web.c */,
|
|
||||||
9A89D4DF27F802F600FF3F80 /* Window_Win.c */,
|
|
||||||
9A89D4A127F802F600FF3F80 /* Window_X11.c */,
|
|
||||||
9A89D48727F802F600FF3F80 /* World.c */,
|
|
||||||
9A89D4E227F802F600FF3F80 /* _D3D11Shaders.h */,
|
|
||||||
9A89D4D727F802F600FF3F80 /* _GLShared.h */,
|
|
||||||
9A89D48327F802F600FF3F80 /* _GraphicsBase.h */,
|
|
||||||
9A89D38A27F802F500FF3F80 /* _HttpBase.h */,
|
|
||||||
9A89D39A27F802F500FF3F80 /* _PlatformBase.h */,
|
|
||||||
9A89D48927F802F600FF3F80 /* _WindowBase.h */,
|
|
||||||
9A89D4CD27F802F600FF3F80 /* Animations.h */,
|
|
||||||
9A89D49327F802F600FF3F80 /* Audio.h */,
|
|
||||||
9A89D37927F802F500FF3F80 /* AxisLinesRenderer.h */,
|
|
||||||
9A89D4D827F802F600FF3F80 /* Bitmap.h */,
|
|
||||||
9A89D4C327F802F600FF3F80 /* Block.h */,
|
|
||||||
9A89D4C227F802F600FF3F80 /* BlockID.h */,
|
|
||||||
9A89D49D27F802F600FF3F80 /* BlockPhysics.h */,
|
|
||||||
9A89D4BF27F802F600FF3F80 /* Builder.h */,
|
|
||||||
9A89D48027F802F600FF3F80 /* Camera.h */,
|
|
||||||
9A89D39527F802F500FF3F80 /* Chat.h */,
|
|
||||||
9A89D4A527F802F600FF3F80 /* Constants.h */,
|
|
||||||
9A89D38D27F802F500FF3F80 /* Core.h */,
|
|
||||||
9A89D4B627F802F600FF3F80 /* Deflate.h */,
|
|
||||||
9A89D4E127F802F600FF3F80 /* Drawer.h */,
|
|
||||||
9A89D4EA27F802F600FF3F80 /* Drawer2D.h */,
|
|
||||||
9A89D4B827F802F600FF3F80 /* Entity.h */,
|
|
||||||
9A89D48427F802F600FF3F80 /* EntityComponents.h */,
|
|
||||||
9A89D4D627F802F600FF3F80 /* EnvRenderer.h */,
|
|
||||||
9A89D49027F802F600FF3F80 /* Errors.h */,
|
|
||||||
9A89D47327F802F500FF3F80 /* Event.h */,
|
|
||||||
9A89D4AC27F802F600FF3F80 /* ExtMath.h */,
|
|
||||||
9A89D39327F802F500FF3F80 /* Formats.h */,
|
|
||||||
9A89D4C727F802F600FF3F80 /* Funcs.h */,
|
|
||||||
9A89D4A927F802F600FF3F80 /* Game.h */,
|
|
||||||
9A89D4E627F802F600FF3F80 /* Generator.h */,
|
|
||||||
9A89D4CE27F802F600FF3F80 /* Graphics.h */,
|
|
||||||
9A89D4A427F802F600FF3F80 /* Gui.h */,
|
|
||||||
9A89D4D927F802F600FF3F80 /* HeldBlockRenderer.h */,
|
|
||||||
9A89D39727F802F500FF3F80 /* Http.h */,
|
|
||||||
9A89D38927F802F500FF3F80 /* Input.h */,
|
|
||||||
9A89D4A227F802F600FF3F80 /* Inventory.h */,
|
|
||||||
9A89D4D527F802F600FF3F80 /* IsometricDrawer.h */,
|
|
||||||
9A89D49F27F802F600FF3F80 /* Launcher.h */,
|
|
||||||
9A89D4C527F802F600FF3F80 /* LBackend.h */,
|
|
||||||
9A89D4DE27F802F600FF3F80 /* Lighting.h */,
|
|
||||||
9A89D4D427F802F600FF3F80 /* Logger.h */,
|
|
||||||
9A89D4C027F802F600FF3F80 /* LScreens.h */,
|
|
||||||
9A89D39027F802F500FF3F80 /* LWeb.h */,
|
|
||||||
9A89D4B027F802F600FF3F80 /* LWidgets.h */,
|
|
||||||
9A89D37B27F802F500FF3F80 /* MapRenderer.h */,
|
|
||||||
9A89D4CB27F802F600FF3F80 /* Menus.h */,
|
|
||||||
9A89D4C127F802F600FF3F80 /* Model.h */,
|
|
||||||
9A89D49C27F802F600FF3F80 /* Options.h */,
|
|
||||||
9A89D4BA27F802F600FF3F80 /* PackedCol.h */,
|
|
||||||
9A89D4B927F802F600FF3F80 /* Particle.h */,
|
|
||||||
9A89D4E527F802F600FF3F80 /* Physics.h */,
|
|
||||||
9A89D48E27F802F600FF3F80 /* PickedPosRenderer.h */,
|
|
||||||
9A89D38827F802F500FF3F80 /* Picking.h */,
|
|
||||||
9A89D4E027F802F600FF3F80 /* Platform.h */,
|
|
||||||
9A89D37E27F802F500FF3F80 /* Protocol.h */,
|
|
||||||
9A89D39427F802F500FF3F80 /* Resources.h */,
|
|
||||||
9A89D47C27F802F500FF3F80 /* Screens.h */,
|
|
||||||
9A89D47D27F802F500FF3F80 /* SelectionBox.h */,
|
|
||||||
9A89D4DC27F802F600FF3F80 /* Server.h */,
|
|
||||||
9A89D49727F802F600FF3F80 /* Stream.h */,
|
|
||||||
9A89D4ED27F802F600FF3F80 /* String.h */,
|
|
||||||
9A89D4AD27F802F600FF3F80 /* TexturePack.h */,
|
|
||||||
9A89D38727F802F500FF3F80 /* Utils.h */,
|
|
||||||
9A89D49627F802F600FF3F80 /* Vectors.h */,
|
|
||||||
9A89D4B427F802F600FF3F80 /* Vorbis.h */,
|
|
||||||
9A89D49127F802F600FF3F80 /* Widgets.h */,
|
|
||||||
9A89D48F27F802F600FF3F80 /* Window.h */,
|
|
||||||
9A89D4C827F802F600FF3F80 /* World.h */,
|
|
||||||
9A89D47F27F802F600FF3F80 /* interop_ios.m */,
|
|
||||||
);
|
|
||||||
path = src;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
/* End PBXGroup section */
|
|
||||||
|
|
||||||
/* Begin PBXNativeTarget section */
|
|
||||||
9A89D35627F802B100FF3F80 /* ClassiCube */ = {
|
|
||||||
isa = PBXNativeTarget;
|
|
||||||
buildConfigurationList = 9A89D36D27F802B400FF3F80 /* Build configuration list for PBXNativeTarget "ClassiCube" */;
|
|
||||||
buildPhases = (
|
|
||||||
9A89D35327F802B100FF3F80 /* Sources */,
|
|
||||||
9A89D35427F802B100FF3F80 /* Frameworks */,
|
|
||||||
9A89D35527F802B100FF3F80 /* Resources */,
|
|
||||||
);
|
|
||||||
buildRules = (
|
|
||||||
);
|
|
||||||
dependencies = (
|
|
||||||
);
|
|
||||||
name = ClassiCube;
|
|
||||||
productName = CCIOS2;
|
|
||||||
productReference = 9A89D35727F802B100FF3F80 /* ClassiCube.app */;
|
|
||||||
productType = "com.apple.product-type.application";
|
|
||||||
};
|
|
||||||
/* End PBXNativeTarget section */
|
|
||||||
|
|
||||||
/* Begin PBXProject section */
|
|
||||||
9A89D34F27F802B100FF3F80 /* Project object */ = {
|
|
||||||
isa = PBXProject;
|
|
||||||
attributes = {
|
|
||||||
LastUpgradeCheck = 1010;
|
|
||||||
ORGANIZATIONNAME = ClassiCube;
|
|
||||||
TargetAttributes = {
|
|
||||||
9A89D35627F802B100FF3F80 = {
|
|
||||||
CreatedOnToolsVersion = 10.1;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
buildConfigurationList = 9A89D35227F802B100FF3F80 /* Build configuration list for PBXProject "CCIOS" */;
|
|
||||||
compatibilityVersion = "Xcode 9.3";
|
|
||||||
developmentRegion = en;
|
|
||||||
hasScannedForEncodings = 0;
|
|
||||||
knownRegions = (
|
|
||||||
en,
|
|
||||||
Base,
|
|
||||||
);
|
|
||||||
mainGroup = 9A89D34E27F802B100FF3F80;
|
|
||||||
productRefGroup = 9A89D35827F802B100FF3F80 /* Products */;
|
|
||||||
projectDirPath = "";
|
|
||||||
projectRoot = "";
|
|
||||||
targets = (
|
|
||||||
9A89D35627F802B100FF3F80 /* ClassiCube */,
|
|
||||||
);
|
|
||||||
};
|
|
||||||
/* End PBXProject section */
|
|
||||||
|
|
||||||
/* Begin PBXResourcesBuildPhase section */
|
|
||||||
9A89D35527F802B100FF3F80 /* Resources */ = {
|
|
||||||
isa = PBXResourcesBuildPhase;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
9A62ADF5286D906F00E5E3DE /* Assets.xcassets in Resources */,
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
|
||||||
};
|
|
||||||
/* End PBXResourcesBuildPhase section */
|
|
||||||
|
|
||||||
/* Begin PBXSourcesBuildPhase section */
|
|
||||||
9A89D35327F802B100FF3F80 /* Sources */ = {
|
|
||||||
isa = PBXSourcesBuildPhase;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
9A89D57A27F802F600FF3F80 /* Graphics_D3D11.c in Sources */,
|
|
||||||
9A89D50727F802F600FF3F80 /* Particle.c in Sources */,
|
|
||||||
9A89D56C27F802F600FF3F80 /* _ftinit.c in Sources */,
|
|
||||||
9A89D58F27F802F600FF3F80 /* Audio.c in Sources */,
|
|
||||||
9A89D55227F802F600FF3F80 /* Logger.c in Sources */,
|
|
||||||
9A89D58E27F802F600FF3F80 /* Window_SDL.c in Sources */,
|
|
||||||
9A89D4FF27F802F600FF3F80 /* Gui.c in Sources */,
|
|
||||||
9A89D55027F802F600FF3F80 /* Entity.c in Sources */,
|
|
||||||
9A89D58327F802F600FF3F80 /* EntityComponents.c in Sources */,
|
|
||||||
9A89D57327F802F600FF3F80 /* Utils.c in Sources */,
|
|
||||||
9A89D58427F802F600FF3F80 /* Camera.c in Sources */,
|
|
||||||
9A89D59227F802F600FF3F80 /* Http_Web.c in Sources */,
|
|
||||||
9A89D57C27F802F600FF3F80 /* Chat.c in Sources */,
|
|
||||||
9A89D50527F802F600FF3F80 /* LScreens.c in Sources */,
|
|
||||||
9A89D56727F802F600FF3F80 /* Drawer.c in Sources */,
|
|
||||||
9A89D4F327F802F600FF3F80 /* Graphics_GL2.c in Sources */,
|
|
||||||
9A89D55C27F802F600FF3F80 /* Animations.c in Sources */,
|
|
||||||
9A89D58D27F802F600FF3F80 /* Options.c in Sources */,
|
|
||||||
9A89D57927F802F600FF3F80 /* Event.c in Sources */,
|
|
||||||
9A89D55B27F802F600FF3F80 /* _type1.c in Sources */,
|
|
||||||
9A89D58127F802F600FF3F80 /* PickedPosRenderer.c in Sources */,
|
|
||||||
9A89D56027F802F600FF3F80 /* _ftbitmap.c in Sources */,
|
|
||||||
9A89D50327F802F600FF3F80 /* Platform_Posix.c in Sources */,
|
|
||||||
9A89D58027F802F600FF3F80 /* Formats.c in Sources */,
|
|
||||||
9A89D4FB27F802F600FF3F80 /* TexturePack.c in Sources */,
|
|
||||||
9A89D50827F802F600FF3F80 /* PackedCol.c in Sources */,
|
|
||||||
9A89D50227F802F600FF3F80 /* Block.c in Sources */,
|
|
||||||
9A89D57227F802F600FF3F80 /* Picking.c in Sources */,
|
|
||||||
9A89D4FC27F802F600FF3F80 /* Graphics_D3D9.c in Sources */,
|
|
||||||
9A89D59127F802F600FF3F80 /* Vectors.c in Sources */,
|
|
||||||
9A89D58A27F802F600FF3F80 /* BlockPhysics.c in Sources */,
|
|
||||||
9A89D56127F802F600FF3F80 /* Menus.c in Sources */,
|
|
||||||
9A89D4F727F802F600FF3F80 /* Game.c in Sources */,
|
|
||||||
9A89D55627F802F600FF3F80 /* EnvRenderer.c in Sources */,
|
|
||||||
9A89D58927F802F600FF3F80 /* _cff.c in Sources */,
|
|
||||||
9A89D4F627F802F600FF3F80 /* Platform_Android.c in Sources */,
|
|
||||||
9A89D4F227F802F600FF3F80 /* LWidgets.c in Sources */,
|
|
||||||
9A89D55327F802F600FF3F80 /* _psaux.c in Sources */,
|
|
||||||
9A89D50427F802F600FF3F80 /* Model.c in Sources */,
|
|
||||||
9A89D54F27F802F600FF3F80 /* Deflate.c in Sources */,
|
|
||||||
9A89D56E27F802F600FF3F80 /* Platform_WinApi.c in Sources */,
|
|
||||||
9A89D56327F802F600FF3F80 /* _autofit.c in Sources */,
|
|
||||||
9A89D55F27F802F600FF3F80 /* _sfnt.c in Sources */,
|
|
||||||
9A89D55527F802F600FF3F80 /* HeldBlockRenderer.c in Sources */,
|
|
||||||
9A89D4FD27F802F600FF3F80 /* ExtMath.c in Sources */,
|
|
||||||
9A89D56427F802F600FF3F80 /* String.c in Sources */,
|
|
||||||
9A89D57D27F802F600FF3F80 /* _smooth.c in Sources */,
|
|
||||||
9A89D50127F802F600FF3F80 /* LBackend.c in Sources */,
|
|
||||||
9A89D56827F802F600FF3F80 /* Lighting.c in Sources */,
|
|
||||||
9A89D57827F802F600FF3F80 /* Protocol.c in Sources */,
|
|
||||||
9A89D55427F802F600FF3F80 /* Bitmap.c in Sources */,
|
|
||||||
9A89D56D27F802F600FF3F80 /* Window_X11.c in Sources */,
|
|
||||||
9A89D50627F802F600FF3F80 /* Builder.c in Sources */,
|
|
||||||
9A89D55127F802F600FF3F80 /* IsometricDrawer.c in Sources */,
|
|
||||||
9A89D57B27F802F600FF3F80 /* _ftglyph.c in Sources */,
|
|
||||||
9A89D55827F802F600FF3F80 /* Graphics_GL1.c in Sources */,
|
|
||||||
9A89D59427F802F600FF3F80 /* Widgets.c in Sources */,
|
|
||||||
9A89D56927F802F600FF3F80 /* Window_Carbon.c in Sources */,
|
|
||||||
9A89D55927F802F600FF3F80 /* interop_ios.m in Sources */,
|
|
||||||
9A89D55A27F802F600FF3F80 /* Program.c in Sources */,
|
|
||||||
9A89D58527F802F600FF3F80 /* Platform_Web.c in Sources */,
|
|
||||||
9A89D4F527F802F600FF3F80 /* _ftsynth.c in Sources */,
|
|
||||||
9A89D55D27F802F600FF3F80 /* _psmodule.c in Sources */,
|
|
||||||
9A89D56F27F802F600FF3F80 /* Input.c in Sources */,
|
|
||||||
9A89D4F827F802F600FF3F80 /* Window_Android.c in Sources */,
|
|
||||||
9A89D57E27F802F600FF3F80 /* Resources.c in Sources */,
|
|
||||||
9A89D4F427F802F600FF3F80 /* Vorbis.c in Sources */,
|
|
||||||
9A89D56227F802F600FF3F80 /* _ftbase.c in Sources */,
|
|
||||||
9A89D58C27F802F600FF3F80 /* Window_Win.c in Sources */,
|
|
||||||
9A89D56B27F802F600FF3F80 /* Server.c in Sources */,
|
|
||||||
9A89D50027F802F600FF3F80 /* _truetype.c in Sources */,
|
|
||||||
9A89D57F27F802F600FF3F80 /* LWeb.c in Sources */,
|
|
||||||
9A89D55727F802F600FF3F80 /* Makefile in Sources */,
|
|
||||||
9A89D59327F802F600FF3F80 /* Window_Web.c in Sources */,
|
|
||||||
9A89D56627F802F600FF3F80 /* Drawer2D.c in Sources */,
|
|
||||||
9A89D57427F802F600FF3F80 /* MapRenderer.c in Sources */,
|
|
||||||
9A89D57627F802F600FF3F80 /* _pshinter.c in Sources */,
|
|
||||||
9A89D56A27F802F600FF3F80 /* Physics.c in Sources */,
|
|
||||||
9A89D58727F802F600FF3F80 /* SelectionBox.c in Sources */,
|
|
||||||
9A89D4FE27F802F600FF3F80 /* Inventory.c in Sources */,
|
|
||||||
9A89D56527F802F600FF3F80 /* Generator.c in Sources */,
|
|
||||||
9A89D57527F802F600FF3F80 /* AxisLinesRenderer.c in Sources */,
|
|
||||||
9A89D55E27F802F600FF3F80 /* World.c in Sources */,
|
|
||||||
9A89D58627F802F600FF3F80 /* Screens.c in Sources */,
|
|
||||||
9A89D4F927F802F600FF3F80 /* Http_Worker.c in Sources */,
|
|
||||||
9A89D58B27F802F600FF3F80 /* Launcher.c in Sources */,
|
|
||||||
9A89D59027F802F600FF3F80 /* Stream.c in Sources */,
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
|
||||||
};
|
|
||||||
/* End PBXSourcesBuildPhase section */
|
|
||||||
|
|
||||||
/* Begin XCBuildConfiguration section */
|
|
||||||
9A89D36B27F802B400FF3F80 /* Debug */ = {
|
|
||||||
isa = XCBuildConfiguration;
|
|
||||||
buildSettings = {
|
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
||||||
CLANG_ANALYZER_NONNULL = YES;
|
|
||||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
|
||||||
CLANG_ENABLE_MODULES = YES;
|
|
||||||
CLANG_ENABLE_OBJC_ARC = YES;
|
|
||||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
|
||||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
|
||||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
|
||||||
CLANG_WARN_COMMA = YES;
|
|
||||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
||||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
|
||||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
|
||||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
|
||||||
CLANG_WARN_EMPTY_BODY = YES;
|
|
||||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
|
||||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
|
||||||
CLANG_WARN_INT_CONVERSION = YES;
|
|
||||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
|
||||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
|
||||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
|
||||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
|
||||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
|
||||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
|
||||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
|
||||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
|
||||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
|
||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
||||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
|
||||||
COPY_PHASE_STRIP = NO;
|
|
||||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
||||||
ENABLE_TESTABILITY = YES;
|
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
|
||||||
GCC_DYNAMIC_NO_PIC = NO;
|
|
||||||
GCC_NO_COMMON_BLOCKS = YES;
|
|
||||||
GCC_OPTIMIZATION_LEVEL = 0;
|
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
|
||||||
"DEBUG=1",
|
|
||||||
"$(inherited)",
|
|
||||||
);
|
|
||||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
|
||||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
|
||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
|
||||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
|
||||||
MTL_FAST_MATH = YES;
|
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
|
||||||
SDKROOT = iphoneos;
|
|
||||||
};
|
|
||||||
name = Debug;
|
|
||||||
};
|
|
||||||
9A89D36C27F802B400FF3F80 /* Release */ = {
|
|
||||||
isa = XCBuildConfiguration;
|
|
||||||
buildSettings = {
|
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
||||||
CLANG_ANALYZER_NONNULL = YES;
|
|
||||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
|
||||||
CLANG_ENABLE_MODULES = YES;
|
|
||||||
CLANG_ENABLE_OBJC_ARC = YES;
|
|
||||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
|
||||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
|
||||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
|
||||||
CLANG_WARN_COMMA = YES;
|
|
||||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
||||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
|
||||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
|
||||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
|
||||||
CLANG_WARN_EMPTY_BODY = YES;
|
|
||||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
|
||||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
|
||||||
CLANG_WARN_INT_CONVERSION = YES;
|
|
||||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
|
||||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
|
||||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
|
||||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
|
||||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
|
||||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
|
||||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
|
||||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
|
||||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
|
||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
||||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
|
||||||
COPY_PHASE_STRIP = NO;
|
|
||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
|
||||||
ENABLE_NS_ASSERTIONS = NO;
|
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
|
||||||
GCC_NO_COMMON_BLOCKS = YES;
|
|
||||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
|
||||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
|
||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
|
||||||
MTL_ENABLE_DEBUG_INFO = NO;
|
|
||||||
MTL_FAST_MATH = YES;
|
|
||||||
SDKROOT = iphoneos;
|
|
||||||
VALIDATE_PRODUCT = YES;
|
|
||||||
};
|
|
||||||
name = Release;
|
|
||||||
};
|
|
||||||
9A89D36E27F802B400FF3F80 /* Debug */ = {
|
|
||||||
isa = XCBuildConfiguration;
|
|
||||||
buildSettings = {
|
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
|
||||||
CODE_SIGN_STYLE = Automatic;
|
|
||||||
INFOPLIST_FILE = Info.plist;
|
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
|
||||||
"$(inherited)",
|
|
||||||
"@executable_path/Frameworks",
|
|
||||||
);
|
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.classicube.client.ios;
|
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
|
||||||
};
|
|
||||||
name = Debug;
|
|
||||||
};
|
|
||||||
9A89D36F27F802B400FF3F80 /* Release */ = {
|
|
||||||
isa = XCBuildConfiguration;
|
|
||||||
buildSettings = {
|
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
|
||||||
CODE_SIGN_STYLE = Automatic;
|
|
||||||
INFOPLIST_FILE = Info.plist;
|
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
|
||||||
"$(inherited)",
|
|
||||||
"@executable_path/Frameworks",
|
|
||||||
);
|
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.classicube.client.ios;
|
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
|
||||||
};
|
|
||||||
name = Release;
|
|
||||||
};
|
|
||||||
/* End XCBuildConfiguration section */
|
|
||||||
|
|
||||||
/* Begin XCConfigurationList section */
|
|
||||||
9A89D35227F802B100FF3F80 /* Build configuration list for PBXProject "CCIOS" */ = {
|
|
||||||
isa = XCConfigurationList;
|
|
||||||
buildConfigurations = (
|
|
||||||
9A89D36B27F802B400FF3F80 /* Debug */,
|
|
||||||
9A89D36C27F802B400FF3F80 /* Release */,
|
|
||||||
);
|
|
||||||
defaultConfigurationIsVisible = 0;
|
|
||||||
defaultConfigurationName = Release;
|
|
||||||
};
|
|
||||||
9A89D36D27F802B400FF3F80 /* Build configuration list for PBXNativeTarget "ClassiCube" */ = {
|
|
||||||
isa = XCConfigurationList;
|
|
||||||
buildConfigurations = (
|
|
||||||
9A89D36E27F802B400FF3F80 /* Debug */,
|
|
||||||
9A89D36F27F802B400FF3F80 /* Release */,
|
|
||||||
);
|
|
||||||
defaultConfigurationIsVisible = 0;
|
|
||||||
defaultConfigurationName = Release;
|
|
||||||
};
|
|
||||||
/* End XCConfigurationList section */
|
|
||||||
};
|
|
||||||
rootObject = 9A89D34F27F802B100FF3F80 /* Project object */;
|
|
||||||
}
|
|
||||||
|
|
@ -1,108 +0,0 @@
|
||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"idiom" : "iphone",
|
|
||||||
"size" : "20x20",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "iphone",
|
|
||||||
"size" : "20x20",
|
|
||||||
"scale" : "3x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "iphone",
|
|
||||||
"size" : "29x29",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "iphone",
|
|
||||||
"size" : "29x29",
|
|
||||||
"scale" : "3x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "iphone",
|
|
||||||
"size" : "40x40",
|
|
||||||
"filename" : "CC_80.png",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "iphone",
|
|
||||||
"size" : "40x40",
|
|
||||||
"filename" : "CC_120.png",
|
|
||||||
"scale" : "3x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "iphone",
|
|
||||||
"size" : "60x60",
|
|
||||||
"filename" : "CC_120.png",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "iphone",
|
|
||||||
"size" : "60x60",
|
|
||||||
"filename" : "CC_180.png",
|
|
||||||
"scale" : "3x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "ipad",
|
|
||||||
"size" : "20x20",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "ipad",
|
|
||||||
"size" : "20x20",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "ipad",
|
|
||||||
"size" : "29x29",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "ipad",
|
|
||||||
"size" : "29x29",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "ipad",
|
|
||||||
"size" : "40x40",
|
|
||||||
"filename" : "CC_40.png",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "ipad",
|
|
||||||
"size" : "40x40",
|
|
||||||
"filename" : "CC_80.png",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "ipad",
|
|
||||||
"size" : "76x76",
|
|
||||||
"filename" : "CC_76.png",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "ipad",
|
|
||||||
"size" : "76x76",
|
|
||||||
"filename" : "CC_152.png",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "ipad",
|
|
||||||
"size" : "83.5x83.5",
|
|
||||||
"filename" : "CC_167.png",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"size" : "1024x1024",
|
|
||||||
"idiom" : "ios-marketing",
|
|
||||||
"filename" : "CC_1024.png",
|
|
||||||
"scale" : "1x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"version" : 1,
|
|
||||||
"author" : "xcode"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
55
license.txt
|
|
@ -1,4 +1,4 @@
|
||||||
Copyright (c) 2014 - 2022, UnknownShadow200
|
Copyright (c) 2014 - 2024, UnknownShadow200
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification,
|
Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
|
@ -150,6 +150,59 @@ SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE.
|
||||||
==============================================================================
|
==============================================================================
|
||||||
|
|
||||||
|
|
||||||
|
BearSSL license
|
||||||
|
==============================================================================
|
||||||
|
Copyright (c) 2016 Thomas Pornin <pornin@bolet.org>
|
||||||
|
|
||||||
|
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.
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
BearSSL license
|
||||||
|
==================
|
||||||
|
Copyright (c) 2016 Thomas Pornin <pornin@bolet.org>
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
FreeType license
|
FreeType license
|
||||||
==================
|
==================
|
||||||
The FreeType Project LICENSE
|
The FreeType Project LICENSE
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,130 @@
|
||||||
|
#ifndef __32X_H__
|
||||||
|
#define __32X_H__
|
||||||
|
|
||||||
|
/* Create a 5:5:5 RGB color */
|
||||||
|
#define COLOR(r,g,b) (((r)&0x1F)|((g)&0x1F)<<5|((b)&0x1F)<<10)
|
||||||
|
|
||||||
|
#define MARS_CRAM (*(volatile unsigned short *)0x20004200)
|
||||||
|
#define MARS_FRAMEBUFFER (*(volatile unsigned short *)0x24000000)
|
||||||
|
#define MARS_OVERWRITE_IMG (*(volatile unsigned short *)0x24020000)
|
||||||
|
#define MARS_SDRAM (*(volatile unsigned short *)0x26000000)
|
||||||
|
|
||||||
|
#define MARS_SYS_INTMSK (*(volatile unsigned short *)0x20004000)
|
||||||
|
#define MARS_SYS_DMACTR (*(volatile unsigned short *)0x20004006)
|
||||||
|
#define MARS_SYS_DMASAR (*(volatile unsigned long *)0x20004008)
|
||||||
|
#define MARS_SYS_DMADAR (*(volatile unsigned long *)0x2000400C)
|
||||||
|
#define MARS_SYS_DMALEN (*(volatile unsigned short *)0x20004010)
|
||||||
|
#define MARS_SYS_DMAFIFO (*(volatile unsigned short *)0x20004012)
|
||||||
|
#define MARS_SYS_VRESI_CLR (*(volatile unsigned short *)0x20004014)
|
||||||
|
#define MARS_SYS_VINT_CLR (*(volatile unsigned short *)0x20004016)
|
||||||
|
#define MARS_SYS_HINT_CLR (*(volatile unsigned short *)0x20004018)
|
||||||
|
#define MARS_SYS_CMDI_CLR (*(volatile unsigned short *)0x2000401A)
|
||||||
|
#define MARS_SYS_PWMI_CLR (*(volatile unsigned short *)0x2000401C)
|
||||||
|
#define MARS_SYS_COMM0 (*(volatile unsigned short *)0x20004020) /* Master SH2 communication */
|
||||||
|
#define MARS_SYS_COMM2 (*(volatile unsigned short *)0x20004022)
|
||||||
|
#define MARS_SYS_COMM4 (*(volatile unsigned short *)0x20004024) /* Slave SH2 communication */
|
||||||
|
#define MARS_SYS_COMM6 (*(volatile unsigned short *)0x20004026)
|
||||||
|
#define MARS_SYS_COMM8 (*(volatile unsigned short *)0x20004028) /* controller 1 current value */
|
||||||
|
#define MARS_SYS_COMM10 (*(volatile unsigned short *)0x2000402A) /* controller 2 current value */
|
||||||
|
#define MARS_SYS_COMM12 (*(volatile unsigned long *)0x2000402C) /* vcount current value */
|
||||||
|
|
||||||
|
#define MARS_PWM_CTRL (*(volatile unsigned short *)0x20004030)
|
||||||
|
#define MARS_PWM_CYCLE (*(volatile unsigned short *)0x20004032)
|
||||||
|
#define MARS_PWM_LEFT (*(volatile unsigned short *)0x20004034)
|
||||||
|
#define MARS_PWM_RIGHT (*(volatile unsigned short *)0x20004036)
|
||||||
|
#define MARS_PWM_MONO (*(volatile unsigned short *)0x20004038)
|
||||||
|
|
||||||
|
#define MARS_VDP_DISPMODE (*(volatile unsigned short *)0x20004100)
|
||||||
|
#define MARS_VDP_FILLEN (*(volatile unsigned short *)0x20004104)
|
||||||
|
#define MARS_VDP_FILADR (*(volatile unsigned short *)0x20004106)
|
||||||
|
#define MARS_VDP_FILDAT (*(volatile unsigned short *)0x20004108)
|
||||||
|
#define MARS_VDP_FBCTL (*(volatile unsigned short *)0x2000410A)
|
||||||
|
|
||||||
|
#define MARS_SH2_ACCESS_VDP 0x8000
|
||||||
|
#define MARS_68K_ACCESS_VDP 0x0000
|
||||||
|
|
||||||
|
#define MARS_PAL_FORMAT 0x0000
|
||||||
|
#define MARS_NTSC_FORMAT 0x8000
|
||||||
|
|
||||||
|
#define MARS_VDP_PRIO_68K 0x0000
|
||||||
|
#define MARS_VDP_PRIO_32X 0x0080
|
||||||
|
|
||||||
|
#define MARS_224_LINES 0x0000
|
||||||
|
#define MARS_240_LINES 0x0040
|
||||||
|
|
||||||
|
#define MARS_VDP_MODE_OFF 0x0000
|
||||||
|
#define MARS_VDP_MODE_256 0x0001
|
||||||
|
#define MARS_VDP_MODE_32K 0x0002
|
||||||
|
#define MARS_VDP_MODE_RLE 0x0003
|
||||||
|
|
||||||
|
#define MARS_VDP_VBLK 0x8000
|
||||||
|
#define MARS_VDP_HBLK 0x4000
|
||||||
|
#define MARS_VDP_PEN 0x2000
|
||||||
|
#define MARS_VDP_FEN 0x0002
|
||||||
|
#define MARS_VDP_FS 0x0001
|
||||||
|
|
||||||
|
#define SH2_CCTL_CP 0x10
|
||||||
|
#define SH2_CCTL_TW 0x08
|
||||||
|
#define SH2_CCTL_CE 0x01
|
||||||
|
|
||||||
|
#define SH2_FRT_TIER (*(volatile unsigned char *)0xFFFFFE10)
|
||||||
|
#define SH2_FRT_FTCSR (*(volatile unsigned char *)0xFFFFFE11)
|
||||||
|
#define SH2_FRT_FRCH (*(volatile unsigned char *)0xFFFFFE12)
|
||||||
|
#define SH2_FRT_FRCL (*(volatile unsigned char *)0xFFFFFE13)
|
||||||
|
#define SH2_FRT_OCRH (*(volatile unsigned char *)0xFFFFFE14)
|
||||||
|
#define SH2_FRT_OCRL (*(volatile unsigned char *)0xFFFFFE15)
|
||||||
|
#define SH2_FRT_TCR (*(volatile unsigned char *)0xFFFFFE16)
|
||||||
|
#define SH2_FRT_TOCR (*(volatile unsigned char *)0xFFFFFE17)
|
||||||
|
#define SH2_FRT_ICRH (*(volatile unsigned char *)0xFFFFFE18)
|
||||||
|
#define SH2_FRT_ICRL (*(volatile unsigned char *)0xFFFFFE19)
|
||||||
|
|
||||||
|
#define SH2_DMA_SAR0 (*(volatile unsigned long *)0xFFFFFF80)
|
||||||
|
#define SH2_DMA_DAR0 (*(volatile unsigned long *)0xFFFFFF84)
|
||||||
|
#define SH2_DMA_TCR0 (*(volatile unsigned long *)0xFFFFFF88)
|
||||||
|
#define SH2_DMA_CHCR0 (*(volatile unsigned long *)0xFFFFFF8C)
|
||||||
|
#define SH2_DMA_VCR0 (*(volatile unsigned long *)0xFFFFFFA0)
|
||||||
|
#define SH2_DMA_DRCR0 (*(volatile unsigned char *)0xFFFFFE71)
|
||||||
|
|
||||||
|
#define SH2_DMA_SAR1 (*(volatile unsigned long *)0xFFFFFF90)
|
||||||
|
#define SH2_DMA_DAR1 (*(volatile unsigned long *)0xFFFFFF94)
|
||||||
|
#define SH2_DMA_TCR1 (*(volatile unsigned long *)0xFFFFFF98)
|
||||||
|
#define SH2_DMA_CHCR1 (*(volatile unsigned long *)0xFFFFFF9C)
|
||||||
|
#define SH2_DMA_VCR1 (*(volatile unsigned long *)0xFFFFFFA8)
|
||||||
|
#define SH2_DMA_DRCR1 (*(volatile unsigned char *)0xFFFFFE72)
|
||||||
|
|
||||||
|
#define SH2_DMA_DMAOR (*(volatile unsigned long *)0xFFFFFFB0)
|
||||||
|
|
||||||
|
#define SH2_INT_IPRA (*(volatile unsigned short *)0xFFFFFEE2)
|
||||||
|
|
||||||
|
#define SEGA_CTRL_UP 0x0001
|
||||||
|
#define SEGA_CTRL_DOWN 0x0002
|
||||||
|
#define SEGA_CTRL_LEFT 0x0004
|
||||||
|
#define SEGA_CTRL_RIGHT 0x0008
|
||||||
|
#define SEGA_CTRL_B 0x0010
|
||||||
|
#define SEGA_CTRL_C 0x0020
|
||||||
|
#define SEGA_CTRL_A 0x0040
|
||||||
|
#define SEGA_CTRL_START 0x0080
|
||||||
|
#define SEGA_CTRL_Z 0x0100
|
||||||
|
#define SEGA_CTRL_Y 0x0200
|
||||||
|
#define SEGA_CTRL_X 0x0400
|
||||||
|
#define SEGA_CTRL_MODE 0x0800
|
||||||
|
|
||||||
|
#define SEGA_CTRL_TYPE 0xF000
|
||||||
|
#define SEGA_CTRL_THREE 0x0000
|
||||||
|
#define SEGA_CTRL_SIX 0x1000
|
||||||
|
#define SEGA_CTRL_NONE 0xF000
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* global functions in sh2_crt0.s */
|
||||||
|
extern void fast_memcpy(void *dst, void *src, int len);
|
||||||
|
extern void CacheControl(int mode);
|
||||||
|
extern void CacheClearLine(void* ptr);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -0,0 +1,119 @@
|
||||||
|
ifdef $(GENDEV)
|
||||||
|
ROOTDIR = $(GENDEV)
|
||||||
|
else
|
||||||
|
ROOTDIR = /opt/toolchains/sega
|
||||||
|
endif
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# Configurable options
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
TARGET = ClassiCube-32x
|
||||||
|
BUILD_DIR = build/32x
|
||||||
|
SOURCE_DIRS = src src/32x misc/32x
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# Compilable files
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
C_FILES = $(foreach dir,$(SOURCE_DIRS),$(wildcard $(dir)/*.c))
|
||||||
|
S_FILES = misc/32x/sh2_crt0.s
|
||||||
|
OBJS = $(addprefix $(BUILD_DIR)/, $(notdir $(C_FILES:%.c=%.o) $(S_FILES:%.s=%.o)))
|
||||||
|
|
||||||
|
# Dependency tracking
|
||||||
|
DEPFLAGS = -MT $@ -MMD -MP -MF $(BUILD_DIR)/$*.d
|
||||||
|
DEPFILES := $(OBJS:%.o=%.d)
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# Code generation
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
LDSCRIPTSDIR = $(ROOTDIR)/ldscripts
|
||||||
|
LIBS = $(LIBPATH) -lc -lgcc -lgcc-Os-4-200 -lnosys
|
||||||
|
|
||||||
|
LIBPATH = -L$(ROOTDIR)/sh-elf/lib -L$(ROOTDIR)/sh-elf/lib/gcc/sh-elf/4.6.2 -L$(ROOTDIR)/sh-elf/sh-elf/lib
|
||||||
|
INCPATH = -I$(ROOTDIR)/sh-elf/include -I$(ROOTDIR)/sh-elf/sh-elf/include
|
||||||
|
|
||||||
|
SHCCFLAGS = -m2 -mb -Ofast -Wall -g -c -fomit-frame-pointer -DPLAT_32X -ffunction-sections -fdata-sections
|
||||||
|
SHHWFLAGS = -m2 -mb -O1 -Wall -g -c -fomit-frame-pointer
|
||||||
|
SHLDFLAGS = -T $(LDSCRIPTSDIR)/mars.ld -nostdlib -Wl,--gc-sections
|
||||||
|
SHASFLAGS = --big
|
||||||
|
|
||||||
|
MDLDFLAGS = -T $(LDSCRIPTSDIR)/md.ld --oformat binary
|
||||||
|
MDASFLAGS = -m68000 --register-prefix-optional
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# Compiler tools
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
SHPREFIX = $(ROOTDIR)/sh-elf/bin/sh-elf-
|
||||||
|
SHCC = $(SHPREFIX)gcc
|
||||||
|
SHAS = $(SHPREFIX)as
|
||||||
|
SHLD = $(SHPREFIX)ld
|
||||||
|
SHOBJC = $(SHPREFIX)objcopy
|
||||||
|
|
||||||
|
MDPREFIX = $(ROOTDIR)/m68k-elf/bin/m68k-elf-
|
||||||
|
MDAS = $(MDPREFIX)as
|
||||||
|
MDLD = $(MDPREFIX)ld
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# main targets
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
all: $(BUILD_DIR) $(BUILD_DIR)/m68k_crt0.bin $(BUILD_DIR)/m68k_crt1.bin $(TARGET).bin
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f $(BUILD_DIR)/*.o $(BUILD_DIR)/*.bin $(TARGET).bin $(TARGET).elf
|
||||||
|
|
||||||
|
$(BUILD_DIR):
|
||||||
|
mkdir -p $(BUILD_DIR)
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# binary generation
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
$(TARGET).bin: $(TARGET).elf
|
||||||
|
$(SHOBJC) -O binary $< $(BUILD_DIR)/temp.bin
|
||||||
|
dd if=$(BUILD_DIR)/temp.bin of=$@ bs=64K conv=sync
|
||||||
|
|
||||||
|
$(TARGET).elf: $(OBJS)
|
||||||
|
$(SHCC) $(SHLDFLAGS) $(OBJS) $(LIBS) -o $(TARGET).elf
|
||||||
|
|
||||||
|
|
||||||
|
$(BUILD_DIR)/m68k_crt0.o: misc/32x/m68k_crt0.s
|
||||||
|
$(MDAS) $(MDASFLAGS) $< -o $@
|
||||||
|
|
||||||
|
$(BUILD_DIR)/m68k_crt0.bin: $(BUILD_DIR)/m68k_crt0.o
|
||||||
|
$(MDLD) $(MDLDFLAGS) $< -o $@
|
||||||
|
|
||||||
|
$(BUILD_DIR)/m68k_crt1.o: misc/32x/m68k_crt1.s
|
||||||
|
$(MDAS) $(MDASFLAGS) $< -o $@
|
||||||
|
|
||||||
|
$(BUILD_DIR)/m68k_crt1.bin: $(BUILD_DIR)/m68k_crt1.o
|
||||||
|
$(MDLD) $(MDLDFLAGS) $< -o $@
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# object generation
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
$(BUILD_DIR)/%.o: src/%.c
|
||||||
|
$(SHCC) $(SHCCFLAGS) $(INCPATH) $(DEPFLAGS) $< -o $@
|
||||||
|
|
||||||
|
$(BUILD_DIR)/%.o: src/32x/%.c
|
||||||
|
$(SHCC) $(SHCCFLAGS) $(INCPATH) $(DEPFLAGS) $< -o $@
|
||||||
|
|
||||||
|
$(BUILD_DIR)/%.o: misc/32x/%.c
|
||||||
|
$(SHCC) $(SHCCFLAGS) $(INCPATH) $(DEPFLAGS) $< -o $@
|
||||||
|
|
||||||
|
$(BUILD_DIR)/%.o: misc/32x/%.s
|
||||||
|
$(SHAS) $(SHASFLAGS) $(INCPATH) $< -o $@
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# Dependency tracking
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
$(DEPFILES):
|
||||||
|
|
||||||
|
include $(wildcard $(DEPFILES))
|
||||||
|
|
@ -0,0 +1,256 @@
|
||||||
|
/*
|
||||||
|
* Licensed under the BSD license
|
||||||
|
*
|
||||||
|
* debug_32x.c - Debug screen functions.
|
||||||
|
*
|
||||||
|
* Copyright (c) 2005 Marcus R. Brown <mrbrown@ocgnet.org>
|
||||||
|
* Copyright (c) 2005 James Forshaw <tyranid@gmail.com>
|
||||||
|
* Copyright (c) 2005 John Kelley <ps2dev@kelley.ca>
|
||||||
|
*
|
||||||
|
* Altered for 32X by Chilly Willy
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "32x.h"
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
static int init = 0;
|
||||||
|
static unsigned short fgc = 0, bgc = 0;
|
||||||
|
static unsigned char fgs = 0, bgs = 0;
|
||||||
|
|
||||||
|
static unsigned short currentFB = 0;
|
||||||
|
|
||||||
|
void Hw32xSetFGColor(int s, int r, int g, int b)
|
||||||
|
{
|
||||||
|
volatile unsigned short *palette = &MARS_CRAM;
|
||||||
|
fgs = s;
|
||||||
|
fgc = COLOR(r, g, b);
|
||||||
|
palette[fgs] = fgc;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Hw32xSetBGColor(int s, int r, int g, int b)
|
||||||
|
{
|
||||||
|
volatile unsigned short *palette = &MARS_CRAM;
|
||||||
|
bgs = s;
|
||||||
|
bgc = COLOR(r, g, b);
|
||||||
|
palette[bgs] = bgc;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Hw32xInit(int vmode, int lineskip)
|
||||||
|
{
|
||||||
|
volatile unsigned short *frameBuffer16 = &MARS_FRAMEBUFFER;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
// Wait for the SH2 to gain access to the VDP
|
||||||
|
while ((MARS_SYS_INTMSK & MARS_SH2_ACCESS_VDP) == 0) ;
|
||||||
|
|
||||||
|
if (vmode == MARS_VDP_MODE_32K)
|
||||||
|
{
|
||||||
|
// Set 16-bit direct mode, 224 lines
|
||||||
|
MARS_VDP_DISPMODE = MARS_224_LINES | MARS_VDP_MODE_32K;
|
||||||
|
|
||||||
|
// init both framebuffers
|
||||||
|
|
||||||
|
// Flip the framebuffer selection bit and wait for it to take effect
|
||||||
|
MARS_VDP_FBCTL = currentFB ^ 1;
|
||||||
|
while ((MARS_VDP_FBCTL & MARS_VDP_FS) == currentFB) ;
|
||||||
|
currentFB ^= 1;
|
||||||
|
// rewrite line table
|
||||||
|
for (i=0; i<224/(lineskip+1); i++)
|
||||||
|
{
|
||||||
|
if (lineskip)
|
||||||
|
{
|
||||||
|
int j = lineskip + 1;
|
||||||
|
while (j)
|
||||||
|
{
|
||||||
|
frameBuffer16[i*(lineskip+1) + (lineskip + 1 - j)] = i*320 + 0x100; /* word offset of line */
|
||||||
|
j--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (i<200)
|
||||||
|
frameBuffer16[i] = i*320 + 0x100; /* word offset of line */
|
||||||
|
else
|
||||||
|
frameBuffer16[i] = 200*320 + 0x100; /* word offset of line */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// clear screen
|
||||||
|
for (i=0x100; i<0x10000; i++)
|
||||||
|
frameBuffer16[i] = 0;
|
||||||
|
|
||||||
|
// Flip the framebuffer selection bit and wait for it to take effect
|
||||||
|
MARS_VDP_FBCTL = currentFB ^ 1;
|
||||||
|
while ((MARS_VDP_FBCTL & MARS_VDP_FS) == currentFB) ;
|
||||||
|
currentFB ^= 1;
|
||||||
|
// rewrite line table
|
||||||
|
for (i=0; i<224/(lineskip+1); i++)
|
||||||
|
{
|
||||||
|
if (lineskip)
|
||||||
|
{
|
||||||
|
int j = lineskip + 1;
|
||||||
|
while (j)
|
||||||
|
{
|
||||||
|
frameBuffer16[i*(lineskip+1) + (lineskip + 1 - j)] = i*320 + 0x100; /* word offset of line */
|
||||||
|
j--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (i<200)
|
||||||
|
frameBuffer16[i] = i*320 + 0x100; /* word offset of line */
|
||||||
|
else
|
||||||
|
frameBuffer16[i] = 200*320 + 0x100; /* word offset of line */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// clear screen
|
||||||
|
for (i=0x100; i<0x10000; i++)
|
||||||
|
frameBuffer16[i] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
Hw32xSetFGColor(255,31,31,31);
|
||||||
|
Hw32xSetBGColor(0,0,0,0);
|
||||||
|
init = vmode;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Hw32xScreenClear()
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
int l = (init == MARS_VDP_MODE_256) ? 320*224/2 + 0x100 : 320*200 + 0x100;
|
||||||
|
volatile unsigned short *frameBuffer16 = &MARS_FRAMEBUFFER;
|
||||||
|
|
||||||
|
// clear screen
|
||||||
|
for (i=0x100; i<l; i++)
|
||||||
|
frameBuffer16[i] = 0;
|
||||||
|
|
||||||
|
// Flip the framebuffer selection bit and wait for it to take effect
|
||||||
|
MARS_VDP_FBCTL = currentFB ^ 1;
|
||||||
|
while ((MARS_VDP_FBCTL & MARS_VDP_FS) == currentFB) ;
|
||||||
|
currentFB ^= 1;
|
||||||
|
|
||||||
|
// clear screen
|
||||||
|
for (i=0x100; i<l; i++)
|
||||||
|
frameBuffer16[i] = 0;
|
||||||
|
|
||||||
|
Hw32xSetFGColor(255,31,31,31);
|
||||||
|
Hw32xSetBGColor(0,0,0,0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Hw32xDelay(int ticks)
|
||||||
|
{
|
||||||
|
unsigned long ct = MARS_SYS_COMM12 + ticks;
|
||||||
|
while (MARS_SYS_COMM12 < ct) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Hw32xScreenFlip(int wait)
|
||||||
|
{
|
||||||
|
// Flip the framebuffer selection bit
|
||||||
|
MARS_VDP_FBCTL = currentFB ^ 1;
|
||||||
|
if (wait)
|
||||||
|
{
|
||||||
|
while ((MARS_VDP_FBCTL & MARS_VDP_FS) == currentFB) ;
|
||||||
|
currentFB ^= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Hw32xFlipWait()
|
||||||
|
{
|
||||||
|
while ((MARS_VDP_FBCTL & MARS_VDP_FS) == currentFB) ;
|
||||||
|
currentFB ^= 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// MD Command support code ---------------------------------------------
|
||||||
|
|
||||||
|
unsigned short HwMdReadPad(int port)
|
||||||
|
{
|
||||||
|
if (port == 0)
|
||||||
|
return MARS_SYS_COMM8;
|
||||||
|
else if (port == 1)
|
||||||
|
return MARS_SYS_COMM10;
|
||||||
|
else
|
||||||
|
return SEGA_CTRL_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned char HwMdReadSram(unsigned short offset)
|
||||||
|
{
|
||||||
|
while (MARS_SYS_COMM0) ; // wait until 68000 has responded to any earlier requests
|
||||||
|
MARS_SYS_COMM2 = offset;
|
||||||
|
MARS_SYS_COMM0 = 0x0100; // Read SRAM
|
||||||
|
while (MARS_SYS_COMM0) ;
|
||||||
|
return MARS_SYS_COMM2 & 0x00FF;
|
||||||
|
}
|
||||||
|
|
||||||
|
void HwMdWriteSram(unsigned char byte, unsigned short offset)
|
||||||
|
{
|
||||||
|
while (MARS_SYS_COMM0) ; // wait until 68000 has responded to any earlier requests
|
||||||
|
MARS_SYS_COMM2 = offset;
|
||||||
|
MARS_SYS_COMM0 = 0x0200 | byte; // Write SRAM
|
||||||
|
while (MARS_SYS_COMM0) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
int HwMdReadMouse(int port)
|
||||||
|
{
|
||||||
|
unsigned int mouse1, mouse2;
|
||||||
|
while (MARS_SYS_COMM0) ; // wait until 68000 has responded to any earlier requests
|
||||||
|
MARS_SYS_COMM0 = 0x0300|port; // tells 68000 to read mouse
|
||||||
|
while (MARS_SYS_COMM0 == (0x0300|port)) ; // wait for mouse value
|
||||||
|
mouse1 = MARS_SYS_COMM0;
|
||||||
|
mouse2 = MARS_SYS_COMM2;
|
||||||
|
MARS_SYS_COMM0 = 0; // tells 68000 we got the mouse value
|
||||||
|
return (int)((mouse1 << 16) | mouse2);
|
||||||
|
}
|
||||||
|
|
||||||
|
void HwMdClearScreen(void)
|
||||||
|
{
|
||||||
|
while (MARS_SYS_COMM0) ; // wait until 68000 has responded to any earlier requests
|
||||||
|
MARS_SYS_COMM0 = 0x0400; // Clear Screen (Name Table B)
|
||||||
|
while (MARS_SYS_COMM0) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
void HwMdSetOffset(unsigned short offset)
|
||||||
|
{
|
||||||
|
while (MARS_SYS_COMM0) ; // wait until 68000 has responded to any earlier requests
|
||||||
|
MARS_SYS_COMM2 = offset;
|
||||||
|
MARS_SYS_COMM0 = 0x0500; // Set offset (into either Name Table B or VRAM)
|
||||||
|
while (MARS_SYS_COMM0) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
void HwMdSetNTable(unsigned short word)
|
||||||
|
{
|
||||||
|
while (MARS_SYS_COMM0) ; // wait until 68000 has responded to any earlier requests
|
||||||
|
MARS_SYS_COMM2 = word;
|
||||||
|
MARS_SYS_COMM0 = 0x0600; // Set word at offset in Name Table B
|
||||||
|
while (MARS_SYS_COMM0) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
void HwMdSetVram(unsigned short word)
|
||||||
|
{
|
||||||
|
while (MARS_SYS_COMM0) ; // wait until 68000 has responded to any earlier requests
|
||||||
|
MARS_SYS_COMM2 = word;
|
||||||
|
MARS_SYS_COMM0 = 0x0700; // Set word at offset in VRAM
|
||||||
|
while (MARS_SYS_COMM0) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
void HwMdPuts(char *str, int color, int x, int y)
|
||||||
|
{
|
||||||
|
HwMdSetOffset(((y<<6) | x) << 1);
|
||||||
|
while (*str)
|
||||||
|
HwMdSetNTable(((*str++ - 0x20) & 0xFF) | color);
|
||||||
|
}
|
||||||
|
|
||||||
|
void HwMdPutc(char chr, int color, int x, int y)
|
||||||
|
{
|
||||||
|
HwMdSetOffset(((y<<6) | x) << 1);
|
||||||
|
HwMdSetNTable(((chr - 0x20) & 0xFF) | color);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Slave SH2 support code ----------------------------------------------
|
||||||
|
|
||||||
|
void slave(void)
|
||||||
|
{
|
||||||
|
while (1) ;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
#ifndef HW_32X_H
|
||||||
|
#define HW_32X_H
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
extern void Hw32xSetFGColor(int s, int r, int g, int b);
|
||||||
|
extern void Hw32xSetBGColor(int s, int r, int g, int b);
|
||||||
|
extern void Hw32xInit(int vmode, int lineskip);
|
||||||
|
extern int Hw32xScreenGetX();
|
||||||
|
extern int Hw32xScreenGetY();
|
||||||
|
extern void Hw32xScreenSetXY(int x, int y);
|
||||||
|
extern void Hw32xScreenClear();
|
||||||
|
extern void Hw32xDelay(int ticks);
|
||||||
|
extern void Hw32xScreenFlip(int wait);
|
||||||
|
extern void Hw32xFlipWait();
|
||||||
|
|
||||||
|
extern unsigned short HwMdReadPad(int port);
|
||||||
|
extern unsigned char HwMdReadSram(unsigned short offset);
|
||||||
|
extern void HwMdWriteSram(unsigned char byte, unsigned short offset);
|
||||||
|
extern int HwMdReadMouse(int port);
|
||||||
|
extern void HwMdClearScreen(void);
|
||||||
|
extern void HwMdSetOffset(unsigned short offset);
|
||||||
|
extern void HwMdSetNTable(unsigned short word);
|
||||||
|
extern void HwMdSetVram(unsigned short word);
|
||||||
|
extern void HwMdPuts(char *str, int color, int x, int y);
|
||||||
|
extern void HwMdPutc(char chr, int color, int x, int y);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -0,0 +1,98 @@
|
||||||
|
| SEGA 32X support code for the 68000
|
||||||
|
| by Chilly Willy
|
||||||
|
| First part of rom header
|
||||||
|
|
||||||
|
.text
|
||||||
|
|
||||||
|
| Initial exception vectors. When the console is first turned on, it is
|
||||||
|
| in MegaDrive mode. All vectors just point to the code to start up the
|
||||||
|
| Mars adapter. After the adapter is enabled, none of these vectors will
|
||||||
|
| appear as the adapter uses its own vector table to route exceptions to
|
||||||
|
| the jump table. 0x3F0 is where the 68000 starts at for the 32X.
|
||||||
|
|
||||||
|
.long 0x01000000,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0
|
||||||
|
.long 0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0
|
||||||
|
.long 0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0
|
||||||
|
.long 0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0
|
||||||
|
.long 0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0
|
||||||
|
.long 0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0
|
||||||
|
.long 0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0
|
||||||
|
.long 0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0
|
||||||
|
|
||||||
|
| Standard MegaDrive ROM header at 0x100
|
||||||
|
|
||||||
|
.ascii "SEGA 32X Example" /* SEGA must be the first four chars for TMSS */
|
||||||
|
.ascii "(C)2024 "
|
||||||
|
.ascii "ClassiCube 32X " /* export name */
|
||||||
|
.ascii " "
|
||||||
|
.ascii " "
|
||||||
|
.ascii "ClassiCube 32X " /* domestic (Japanese) name */
|
||||||
|
.ascii " "
|
||||||
|
.ascii " "
|
||||||
|
.ascii "GM MK-0000 -00"
|
||||||
|
.word 0x0000 /* checksum - not needed */
|
||||||
|
.ascii "J6 "
|
||||||
|
.long 0x00000000,0x0007FFFF /* ROM start, end */
|
||||||
|
.long 0x00FF0000,0x00FFFFFF /* RAM start, end */
|
||||||
|
|
||||||
|
.ifdef HAS_SAVE_RAM
|
||||||
|
.ascii "RA" /* External RAM */
|
||||||
|
.byte 0xF8 /* don't clear + odd bytes */
|
||||||
|
.byte 0x20 /* SRAM */
|
||||||
|
.long 0x00200001,0x0020FFFF /* SRAM start, end */
|
||||||
|
.else
|
||||||
|
.ascii " " /* no SRAM */
|
||||||
|
.endif
|
||||||
|
|
||||||
|
.ascii " "
|
||||||
|
.ascii " "
|
||||||
|
|
||||||
|
.ifdef MYTH_HOMEBREW
|
||||||
|
.ascii "MYTH3900" /* memo indicates Myth native executable */
|
||||||
|
.else
|
||||||
|
.ascii " " /* memo */
|
||||||
|
.endif
|
||||||
|
|
||||||
|
.ascii " "
|
||||||
|
.ascii " "
|
||||||
|
.ascii "F " /* enable any hardware configuration */
|
||||||
|
|
||||||
|
| Mars exception vector jump table at 0x200
|
||||||
|
|
||||||
|
jmp 0x880800.l /* reset = hot start */
|
||||||
|
jsr 0x880806.l /* EX_BusError */
|
||||||
|
jsr 0x880806.l /* EX_AddrError */
|
||||||
|
jsr 0x880806.l /* EX_IllInstr */
|
||||||
|
jsr 0x880806.l /* EX_DivByZero */
|
||||||
|
jsr 0x880806.l /* EX_CHK */
|
||||||
|
jsr 0x880806.l /* EX_TrapV */
|
||||||
|
jsr 0x880806.l /* EX_Priviledge */
|
||||||
|
jsr 0x880806.l /* EX_Trace */
|
||||||
|
jsr 0x880806.l /* EX_LineA */
|
||||||
|
jsr 0x880806.l /* EX_LineF */
|
||||||
|
.space 72 /* reserved */
|
||||||
|
jsr 0x880806.l /* EX_Spurious */
|
||||||
|
jsr 0x880806.l /* EX_Level1 */
|
||||||
|
jsr 0x880806.l /* EX_Level2 */
|
||||||
|
jsr 0x880806.l /* EX_Level3 */
|
||||||
|
jmp 0x88080C.l /* EX_Level4 HBlank */
|
||||||
|
jsr 0x880806.l /* EX_Level5 */
|
||||||
|
jmp 0x880812.l /* EX_Level6 VBlank */
|
||||||
|
jsr 0x880806.l /* EX_Level7 */
|
||||||
|
jsr 0x880806.l /* EX_Trap0 */
|
||||||
|
jsr 0x880806.l /* EX_Trap1 */
|
||||||
|
jsr 0x880806.l /* EX_Trap2 */
|
||||||
|
jsr 0x880806.l /* EX_Trap3 */
|
||||||
|
jsr 0x880806.l /* EX_Trap4 */
|
||||||
|
jsr 0x880806.l /* EX_Trap5 */
|
||||||
|
jsr 0x880806.l /* EX_Trap6 */
|
||||||
|
jsr 0x880806.l /* EX_Trap7 */
|
||||||
|
jsr 0x880806.l /* EX_Trap8 */
|
||||||
|
jsr 0x880806.l /* EX_Trap9 */
|
||||||
|
jsr 0x880806.l /* EX_TrapA */
|
||||||
|
jsr 0x880806.l /* EX_TrapB */
|
||||||
|
jsr 0x880806.l /* EX_TrapC */
|
||||||
|
jsr 0x880806.l /* EX_TrapD */
|
||||||
|
jsr 0x880806.l /* EX_TrapE */
|
||||||
|
jsr 0x880806.l /* EX_TrapF */
|
||||||
|
.space 166 /* reserved */
|
||||||
|
|
@ -0,0 +1,727 @@
|
||||||
|
! SEGA 32X support code for SH2
|
||||||
|
! by Chilly Willy
|
||||||
|
! Rom header and SH2 init/exception code - must be first in object list
|
||||||
|
|
||||||
|
.text
|
||||||
|
|
||||||
|
! Standard MD Header at 0x000
|
||||||
|
|
||||||
|
.incbin "build/32x/m68k_crt0.bin", 0, 0x3C0
|
||||||
|
|
||||||
|
! Standard Mars Header at 0x3C0
|
||||||
|
|
||||||
|
.ascii "ClassiCube 32X " /* module name (16 chars) */
|
||||||
|
.long 0x00000000 /* version */
|
||||||
|
.long __text_end-0x02000000 /* Source (in ROM) */
|
||||||
|
.long 0x00000000 /* Destination (in SDRAM) */
|
||||||
|
.long __data_size /* Size */
|
||||||
|
.long 0x06000240 /* Master SH2 Jump */
|
||||||
|
.long 0x06000244 /* Slave SH2 Jump */
|
||||||
|
.long 0x06000000 /* Master SH2 VBR */
|
||||||
|
.long 0x06000120 /* Slave SH2 VBR */
|
||||||
|
|
||||||
|
! Standard MD startup code at 0x3F0
|
||||||
|
|
||||||
|
.incbin "build/32x/m68k_crt1.bin"
|
||||||
|
|
||||||
|
|
||||||
|
.data
|
||||||
|
|
||||||
|
! Master Vector Base Table at 0x06000000
|
||||||
|
|
||||||
|
.long mstart /* 0, Cold Start PC */
|
||||||
|
.long 0x0603FC00 /* 1, Cold Start SP */
|
||||||
|
.long mstart /* 2, Manual Reset PC */
|
||||||
|
.long 0x0603FC00 /* 3, Manual Reset SP */
|
||||||
|
.long main_err /* 4, Illegal instruction */
|
||||||
|
.long _wdt_handler/* 5, reserved - repurposed for WDT */
|
||||||
|
.long main_err /* 6, Invalid slot instruction */
|
||||||
|
.long 0x20100400 /* 7, reserved */
|
||||||
|
.long 0x20100420 /* 8, reserved */
|
||||||
|
.long main_err /* 9, CPU address error */
|
||||||
|
.long main_err /* 10, DMA address error */
|
||||||
|
.long main_err /* 11, NMI vector */
|
||||||
|
.long main_err /* 12, User break vector */
|
||||||
|
.space 76 /* reserved */
|
||||||
|
.long main_err /* TRAPA #32 */
|
||||||
|
.long main_err /* TRAPA #33 */
|
||||||
|
.long main_err /* TRAPA #34 */
|
||||||
|
.long main_err /* TRAPA #35 */
|
||||||
|
.long main_err /* TRAPA #36 */
|
||||||
|
.long main_err /* TRAPA #37 */
|
||||||
|
.long main_err /* TRAPA #38 */
|
||||||
|
.long main_err /* TRAPA #39 */
|
||||||
|
.long main_err /* TRAPA #40 */
|
||||||
|
.long main_err /* TRAPA #41 */
|
||||||
|
.long main_err /* TRAPA #42 */
|
||||||
|
.long main_err /* TRAPA #43 */
|
||||||
|
.long main_err /* TRAPA #44 */
|
||||||
|
.long main_err /* TRAPA #45 */
|
||||||
|
.long main_err /* TRAPA #46 */
|
||||||
|
.long main_err /* TRAPA #47 */
|
||||||
|
.long main_err /* TRAPA #48 */
|
||||||
|
.long main_err /* TRAPA #49 */
|
||||||
|
.long main_err /* TRAPA #50 */
|
||||||
|
.long main_err /* TRAPA #51 */
|
||||||
|
.long main_err /* TRAPA #52 */
|
||||||
|
.long main_err /* TRAPA #53 */
|
||||||
|
.long main_err /* TRAPA #54 */
|
||||||
|
.long main_err /* TRAPA #55 */
|
||||||
|
.long main_err /* TRAPA #56 */
|
||||||
|
.long main_err /* TRAPA #57 */
|
||||||
|
.long main_err /* TRAPA #58 */
|
||||||
|
.long main_err /* TRAPA #59 */
|
||||||
|
.long main_err /* TRAPA #60 */
|
||||||
|
.long main_err /* TRAPA #61 */
|
||||||
|
.long main_err /* TRAPA #62 */
|
||||||
|
.long main_err /* TRAPA #63 */
|
||||||
|
.long main_irq /* Level 1 IRQ */
|
||||||
|
.long main_irq /* Level 2 & 3 IRQ's */
|
||||||
|
.long main_irq /* Level 4 & 5 IRQ's */
|
||||||
|
.long main_irq /* PWM interupt */
|
||||||
|
.long main_irq /* Command interupt */
|
||||||
|
.long main_irq /* H Blank interupt */
|
||||||
|
.long main_irq /* V Blank interupt */
|
||||||
|
.long main_irq /* Reset Button */
|
||||||
|
|
||||||
|
! Slave Vector Base Table at 0x06000120
|
||||||
|
|
||||||
|
.long sstart /* Cold Start PC */
|
||||||
|
.long 0x06040000 /* Cold Start SP */
|
||||||
|
.long sstart /* Manual Reset PC */
|
||||||
|
.long 0x06040000 /* Manual Reset SP */
|
||||||
|
.long slav_err /* Illegal instruction */
|
||||||
|
.long 0x00000000 /* reserved */
|
||||||
|
.long slav_err /* Invalid slot instruction */
|
||||||
|
.long 0x20100400 /* reserved */
|
||||||
|
.long 0x20100420 /* reserved */
|
||||||
|
.long slav_err /* CPU address error */
|
||||||
|
.long slav_err /* DMA address error */
|
||||||
|
.long slav_err /* NMI vector */
|
||||||
|
.long slav_err /* User break vector */
|
||||||
|
.space 76 /* reserved */
|
||||||
|
.long slav_err /* TRAPA #32 */
|
||||||
|
.long slav_err /* TRAPA #33 */
|
||||||
|
.long slav_err /* TRAPA #34 */
|
||||||
|
.long slav_err /* TRAPA #35 */
|
||||||
|
.long slav_err /* TRAPA #36 */
|
||||||
|
.long slav_err /* TRAPA #37 */
|
||||||
|
.long slav_err /* TRAPA #38 */
|
||||||
|
.long slav_err /* TRAPA #39 */
|
||||||
|
.long slav_err /* TRAPA #40 */
|
||||||
|
.long slav_err /* TRAPA #41 */
|
||||||
|
.long slav_err /* TRAPA #42 */
|
||||||
|
.long slav_err /* TRAPA #43 */
|
||||||
|
.long slav_err /* TRAPA #44 */
|
||||||
|
.long slav_err /* TRAPA #45 */
|
||||||
|
.long slav_err /* TRAPA #46 */
|
||||||
|
.long slav_err /* TRAPA #47 */
|
||||||
|
.long slav_err /* TRAPA #48 */
|
||||||
|
.long slav_err /* TRAPA #49 */
|
||||||
|
.long slav_err /* TRAPA #50 */
|
||||||
|
.long slav_err /* TRAPA #51 */
|
||||||
|
.long slav_err /* TRAPA #52 */
|
||||||
|
.long slav_err /* TRAPA #53 */
|
||||||
|
.long slav_err /* TRAPA #54 */
|
||||||
|
.long slav_err /* TRAPA #55 */
|
||||||
|
.long slav_err /* TRAPA #56 */
|
||||||
|
.long slav_err /* TRAPA #57 */
|
||||||
|
.long slav_err /* TRAPA #58 */
|
||||||
|
.long slav_err /* TRAPA #59 */
|
||||||
|
.long slav_err /* TRAPA #60 */
|
||||||
|
.long slav_err /* TRAPA #61 */
|
||||||
|
.long slav_err /* TRAPA #62 */
|
||||||
|
.long slav_err /* TRAPA #63 */
|
||||||
|
.long slav_irq /* Level 1 IRQ */
|
||||||
|
.long slav_irq /* Level 2 & 3 IRQ's */
|
||||||
|
.long slav_irq /* Level 4 & 5 IRQ's */
|
||||||
|
.long slav_irq /* PWM interupt */
|
||||||
|
.long slav_irq /* Command interupt */
|
||||||
|
.long slav_irq /* H Blank interupt */
|
||||||
|
.long slav_irq /* V Blank interupt */
|
||||||
|
.long slav_irq /* Reset Button */
|
||||||
|
|
||||||
|
! The main SH2 starts here at 0x06000240
|
||||||
|
|
||||||
|
mstart:
|
||||||
|
bra mcont
|
||||||
|
nop
|
||||||
|
|
||||||
|
! The slave SH2 starts here at 0x06000244
|
||||||
|
|
||||||
|
sstart:
|
||||||
|
bra scont
|
||||||
|
nop
|
||||||
|
|
||||||
|
! Each section of code below has its own data table so that the code
|
||||||
|
! can be extended without worrying about the offsets becoming too big.
|
||||||
|
! This results in duplicate entries, but not so many that we care. :)
|
||||||
|
|
||||||
|
mcont:
|
||||||
|
! clear interrupt flags
|
||||||
|
mov.l _master_int_clr,r1
|
||||||
|
mov.w r0,@-r1 /* PWM INT clear */
|
||||||
|
mov.w r0,@r1
|
||||||
|
mov.w r0,@-r1 /* CMD INT clear */
|
||||||
|
mov.w r0,@r1
|
||||||
|
mov.w r0,@-r1 /* H INT clear */
|
||||||
|
mov.w r0,@r1
|
||||||
|
mov.w r0,@-r1 /* V INT clear */
|
||||||
|
mov.w r0,@r1
|
||||||
|
mov.w r0,@-r1 /* VRES INT clear */
|
||||||
|
mov.w r0,@r1
|
||||||
|
|
||||||
|
mov.l _master_stk,r15
|
||||||
|
! purge cache and turn it off
|
||||||
|
mov.l _master_cctl,r0
|
||||||
|
mov #0x10,r1
|
||||||
|
mov.b r1,@r0
|
||||||
|
|
||||||
|
! clear bss
|
||||||
|
mov #0,r0
|
||||||
|
mov.l _master_bss_start,r1
|
||||||
|
mov.l _master_bss_end,r2
|
||||||
|
0:
|
||||||
|
mov.l r0,@r1
|
||||||
|
cmp/eq r1,r2
|
||||||
|
bf/s 0b
|
||||||
|
add #4,r1
|
||||||
|
|
||||||
|
! wait for 68000 to finish init
|
||||||
|
mov.l _master_sts,r0
|
||||||
|
mov.l _master_ok,r1
|
||||||
|
1:
|
||||||
|
mov.l @r0,r2
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
cmp/eq r1,r2
|
||||||
|
bt 1b
|
||||||
|
|
||||||
|
! do all initializers
|
||||||
|
mov.l _master_do_init,r0
|
||||||
|
jsr @r0
|
||||||
|
nop
|
||||||
|
|
||||||
|
! let Slave SH2 run
|
||||||
|
mov #0,r1
|
||||||
|
mov.l r1,@(4,r0) /* clear slave status */
|
||||||
|
|
||||||
|
mov #0x80,r0
|
||||||
|
mov.l _master_adapter,r1
|
||||||
|
mov.b r0,@r1 /* set FM */
|
||||||
|
mov #0x00,r0
|
||||||
|
mov.b r0,@(1,r1) /* set int enables */
|
||||||
|
mov #0x20,r0
|
||||||
|
ldc r0,sr /* allow ints */
|
||||||
|
|
||||||
|
! purge cache, turn it on, and run main()
|
||||||
|
mov.l _master_cctl,r0
|
||||||
|
mov #0x11,r1
|
||||||
|
mov.b r1,@r0
|
||||||
|
mov.l _master_go,r0
|
||||||
|
jsr @r0
|
||||||
|
nop
|
||||||
|
|
||||||
|
! do all finishers
|
||||||
|
mov.l _master_do_fini,r0
|
||||||
|
jsr @r0
|
||||||
|
nop
|
||||||
|
2:
|
||||||
|
bra 2b
|
||||||
|
nop
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
_master_int_clr:
|
||||||
|
.long 0x2000401E /* one word passed last int clr reg */
|
||||||
|
_master_stk:
|
||||||
|
.long 0x0603FC00 /* Cold Start SP */
|
||||||
|
_master_sts:
|
||||||
|
.long 0x20004020
|
||||||
|
_master_ok:
|
||||||
|
.ascii "M_OK"
|
||||||
|
_master_adapter:
|
||||||
|
.long 0x20004000
|
||||||
|
_master_cctl:
|
||||||
|
.long 0xFFFFFE92
|
||||||
|
_master_go:
|
||||||
|
.long _main
|
||||||
|
|
||||||
|
_master_bss_start:
|
||||||
|
.long __bss_start
|
||||||
|
_master_bss_end:
|
||||||
|
.long __bss_end
|
||||||
|
_master_do_init:
|
||||||
|
.long __INIT_SECTION__
|
||||||
|
_master_do_fini:
|
||||||
|
.long __FINI_SECTION__
|
||||||
|
|
||||||
|
scont:
|
||||||
|
! clear interrupt flags
|
||||||
|
mov.l _slave_int_clr,r1
|
||||||
|
mov.w r0,@-r1 /* PWM INT clear */
|
||||||
|
mov.w r0,@r1
|
||||||
|
mov.w r0,@-r1 /* CMD INT clear */
|
||||||
|
mov.w r0,@r1
|
||||||
|
mov.w r0,@-r1 /* H INT clear */
|
||||||
|
mov.w r0,@r1
|
||||||
|
mov.w r0,@-r1 /* V INT clear */
|
||||||
|
mov.w r0,@r1
|
||||||
|
mov.w r0,@-r1 /* VRES INT clear */
|
||||||
|
mov.w r0,@r1
|
||||||
|
|
||||||
|
mov.l _slave_stk,r15
|
||||||
|
! wait for Master SH2 and 68000 to finish init
|
||||||
|
mov.l _slave_sts,r0
|
||||||
|
mov.l _slave_ok,r1
|
||||||
|
1:
|
||||||
|
mov.l @r0,r2
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
cmp/eq r1,r2
|
||||||
|
bt 1b
|
||||||
|
|
||||||
|
mov.l _slave_adapter,r1
|
||||||
|
mov #0x00,r0
|
||||||
|
mov.b r0,@(1,r1) /* set int enables (different from master despite same address!) */
|
||||||
|
mov #0x20,r0
|
||||||
|
ldc r0,sr /* allow ints */
|
||||||
|
|
||||||
|
! purge cache, turn it on, and run slave()
|
||||||
|
mov.l _slave_cctl,r0
|
||||||
|
mov #0x11,r1
|
||||||
|
mov.b r1,@r0
|
||||||
|
mov.l _slave_go,r0
|
||||||
|
jmp @r0
|
||||||
|
nop
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
_slave_int_clr:
|
||||||
|
.long 0x2000401E /* one word passed last int clr reg */
|
||||||
|
_slave_stk:
|
||||||
|
.long 0x06040000 /* Cold Start SP */
|
||||||
|
_slave_sts:
|
||||||
|
.long 0x20004024
|
||||||
|
_slave_ok:
|
||||||
|
.ascii "S_OK"
|
||||||
|
_slave_adapter:
|
||||||
|
.long 0x20004000
|
||||||
|
_slave_cctl:
|
||||||
|
.long 0xFFFFFE92
|
||||||
|
_slave_go:
|
||||||
|
.long _slave
|
||||||
|
|
||||||
|
! Master exception handler
|
||||||
|
|
||||||
|
main_err:
|
||||||
|
rte
|
||||||
|
nop
|
||||||
|
|
||||||
|
! Master IRQ handler
|
||||||
|
|
||||||
|
main_irq:
|
||||||
|
mov.l r0,@-r15
|
||||||
|
|
||||||
|
stc sr,r0 /* SR holds IRQ level in I3-I0 */
|
||||||
|
shlr2 r0
|
||||||
|
and #0x38,r0
|
||||||
|
cmp/eq #0x28,r0
|
||||||
|
bt main_h_irq
|
||||||
|
cmp/eq #0x18,r0
|
||||||
|
bt main_pwm_irq
|
||||||
|
cmp/eq #0x30,r0
|
||||||
|
bt main_v_irq
|
||||||
|
cmp/eq #0x20,r0
|
||||||
|
bt main_cmd_irq
|
||||||
|
cmp/eq #0x38,r0
|
||||||
|
bt main_vres_irq
|
||||||
|
|
||||||
|
mov.l @r15+,r0
|
||||||
|
rte
|
||||||
|
nop
|
||||||
|
|
||||||
|
main_v_irq:
|
||||||
|
mov.l r1,@-r15
|
||||||
|
|
||||||
|
mov.l mvi_mars_adapter,r1
|
||||||
|
mov.w r0,@(0x16,r1) /* clear V IRQ */
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
|
||||||
|
! handle V IRQ
|
||||||
|
|
||||||
|
mov.l @r15+,r1
|
||||||
|
mov.l @r15+,r0
|
||||||
|
rte
|
||||||
|
nop
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
mvi_mars_adapter:
|
||||||
|
.long 0x20004000
|
||||||
|
|
||||||
|
main_h_irq:
|
||||||
|
mov.l r1,@-r15
|
||||||
|
|
||||||
|
mov.l mhi_mars_adapter,r1
|
||||||
|
mov.w r0,@(0x18,r1) /* clear H IRQ */
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
|
||||||
|
! handle H IRQ
|
||||||
|
|
||||||
|
mov.l @r15+,r1
|
||||||
|
mov.l @r15+,r0
|
||||||
|
rte
|
||||||
|
nop
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
mhi_mars_adapter:
|
||||||
|
.long 0x20004000
|
||||||
|
|
||||||
|
main_cmd_irq:
|
||||||
|
mov.l r1,@-r15
|
||||||
|
|
||||||
|
mov.l mci_mars_adapter,r1
|
||||||
|
mov.w r0,@(0x1A,r1) /* clear CMD IRQ */
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
|
||||||
|
! handle CMD IRQ
|
||||||
|
|
||||||
|
mov.l @r15+,r1
|
||||||
|
mov.l @r15+,r0
|
||||||
|
rte
|
||||||
|
nop
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
mci_mars_adapter:
|
||||||
|
.long 0x20004000
|
||||||
|
|
||||||
|
main_pwm_irq:
|
||||||
|
mov.l r1,@-r15
|
||||||
|
|
||||||
|
mov.l mpi_mars_adapter,r1
|
||||||
|
mov.w r0,@(0x1C,r1) /* clear PWM IRQ */
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
|
||||||
|
! handle PWM IRQ
|
||||||
|
|
||||||
|
mov.l @r15+,r1
|
||||||
|
mov.l @r15+,r0
|
||||||
|
rte
|
||||||
|
nop
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
mpi_mars_adapter:
|
||||||
|
.long 0x20004000
|
||||||
|
|
||||||
|
main_vres_irq:
|
||||||
|
mov.l mvri_mars_adapter,r1
|
||||||
|
mov.w r0,@(0x14,r1) /* clear VRES IRQ */
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
|
||||||
|
mov #0x0F,r0
|
||||||
|
shll2 r0
|
||||||
|
shll2 r0
|
||||||
|
ldc r0,sr /* disallow ints */
|
||||||
|
|
||||||
|
mov.l mvri_master_stk,r15
|
||||||
|
mov.l mvri_master_vres,r0
|
||||||
|
jmp @r0
|
||||||
|
nop
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
mvri_mars_adapter:
|
||||||
|
.long 0x20004000
|
||||||
|
mvri_master_stk:
|
||||||
|
.long 0x0603FC00 /* Cold Start SP */
|
||||||
|
mvri_master_vres:
|
||||||
|
.long main_reset
|
||||||
|
|
||||||
|
! Slave exception handler
|
||||||
|
|
||||||
|
slav_err:
|
||||||
|
rte
|
||||||
|
nop
|
||||||
|
|
||||||
|
! Slave IRQ handler
|
||||||
|
|
||||||
|
slav_irq:
|
||||||
|
mov.l r0,@-r15
|
||||||
|
|
||||||
|
stc sr,r0 /* SR holds IRQ level I3-I0 */
|
||||||
|
shlr2 r0
|
||||||
|
and #0x38,r0
|
||||||
|
cmp/eq #0x28,r0
|
||||||
|
bt slav_h_irq
|
||||||
|
cmp/eq #0x18,r0
|
||||||
|
bt slav_pwm_irq
|
||||||
|
cmp/eq #0x30,r0
|
||||||
|
bt slav_v_irq
|
||||||
|
cmp/eq #0x20,r0
|
||||||
|
bt slav_cmd_irq
|
||||||
|
cmp/eq #0x38,r0
|
||||||
|
bt slav_vres_irq
|
||||||
|
|
||||||
|
mov.l @r15+,r0
|
||||||
|
rte
|
||||||
|
nop
|
||||||
|
|
||||||
|
slav_v_irq:
|
||||||
|
mov.l r1,@-r15
|
||||||
|
|
||||||
|
mov.l svi_mars_adapter,r1
|
||||||
|
mov.w r0,@(0x16,r1) /* clear V IRQ */
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
|
||||||
|
! handle V IRQ
|
||||||
|
|
||||||
|
mov.l @r15+,r1
|
||||||
|
mov.l @r15+,r0
|
||||||
|
rte
|
||||||
|
nop
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
svi_mars_adapter:
|
||||||
|
.long 0x20004000
|
||||||
|
|
||||||
|
slav_h_irq:
|
||||||
|
mov.l r1,@-r15
|
||||||
|
|
||||||
|
mov.l shi_mars_adapter,r1
|
||||||
|
mov.w r0,@(0x18,r1) /* clear H IRQ */
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
|
||||||
|
! handle H IRQ
|
||||||
|
|
||||||
|
mov.l @r15+,r1
|
||||||
|
mov.l @r15+,r0
|
||||||
|
rte
|
||||||
|
nop
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
shi_mars_adapter:
|
||||||
|
.long 0x20004000
|
||||||
|
|
||||||
|
slav_cmd_irq:
|
||||||
|
mov.l r1,@-r15
|
||||||
|
|
||||||
|
mov.l sci_mars_adapter,r1
|
||||||
|
mov.w r0,@(0x1A,r1) /* clear CMD IRQ */
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
|
||||||
|
! handle CMD IRQ
|
||||||
|
|
||||||
|
mov.l @r15+,r1
|
||||||
|
mov.l @r15+,r0
|
||||||
|
rte
|
||||||
|
nop
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
sci_mars_adapter:
|
||||||
|
.long 0x20004000
|
||||||
|
|
||||||
|
slav_pwm_irq:
|
||||||
|
mov.l r1,@-r15
|
||||||
|
|
||||||
|
mov.l spi_mars_adapter,r1
|
||||||
|
mov.w r0,@(0x1C,r1) /* clear PWM IRQ */
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
|
||||||
|
! handle PWM IRQ
|
||||||
|
|
||||||
|
mov.l @r15+,r1
|
||||||
|
mov.l @r15+,r0
|
||||||
|
rte
|
||||||
|
nop
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
spi_mars_adapter:
|
||||||
|
.long 0x20004000
|
||||||
|
|
||||||
|
slav_vres_irq:
|
||||||
|
mov.l svri_mars_adapter,r1
|
||||||
|
mov.w r0,@(0x14,r1) /* clear VRES IRQ */
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
|
||||||
|
mov #0x0F,r0
|
||||||
|
shll2 r0
|
||||||
|
shll2 r0
|
||||||
|
ldc r0,sr /* disallow ints */
|
||||||
|
|
||||||
|
mov.l svri_slave_stk,r15
|
||||||
|
mov.l svri_slave_vres,r0
|
||||||
|
jmp @r0
|
||||||
|
nop
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
svri_mars_adapter:
|
||||||
|
.long 0x20004000
|
||||||
|
svri_slave_stk:
|
||||||
|
.long 0x06040000 /* Cold Start SP */
|
||||||
|
svri_slave_vres:
|
||||||
|
.long slav_reset
|
||||||
|
|
||||||
|
|
||||||
|
! Fast memcpy function - copies longs, runs from sdram for speed
|
||||||
|
! On entry: r4 = dst, r5 = src, r6 = len (in longs)
|
||||||
|
|
||||||
|
.align 4
|
||||||
|
.global _fast_memcpy
|
||||||
|
_fast_memcpy:
|
||||||
|
mov.l @r5+,r3
|
||||||
|
mov.l r3,@r4
|
||||||
|
dt r6
|
||||||
|
bf/s _fast_memcpy
|
||||||
|
add #4,r4
|
||||||
|
rts
|
||||||
|
nop
|
||||||
|
|
||||||
|
! Cache clear line function
|
||||||
|
! On entry: r4 = ptr - should be 16 byte aligned
|
||||||
|
|
||||||
|
.align 4
|
||||||
|
.global _CacheClearLine
|
||||||
|
_CacheClearLine:
|
||||||
|
mov.l _cache_flush,r0
|
||||||
|
or r0,r4
|
||||||
|
mov #0,r0
|
||||||
|
mov.l r0,@r4
|
||||||
|
rts
|
||||||
|
nop
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
|
||||||
|
_cache_flush:
|
||||||
|
.long 0x40000000
|
||||||
|
|
||||||
|
! Cache control function
|
||||||
|
! On entry: r4 = cache mode => 0x10 = CP, 0x08 = TW, 0x01 = CE
|
||||||
|
|
||||||
|
.align 4
|
||||||
|
.global _CacheControl
|
||||||
|
_CacheControl:
|
||||||
|
mov.l _sh2_cctl,r0
|
||||||
|
mov.b r4,@r0
|
||||||
|
rts
|
||||||
|
nop
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
|
||||||
|
_sh2_cctl:
|
||||||
|
.long 0xFFFFFE92
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
|
||||||
|
.text
|
||||||
|
|
||||||
|
main_reset:
|
||||||
|
! do any master SH2 specific reset code here
|
||||||
|
|
||||||
|
mov.l slav_st,r0
|
||||||
|
mov.l slav_ok,r1
|
||||||
|
0:
|
||||||
|
mov.l @r0,r2
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
cmp/eq r1,r2
|
||||||
|
bf 0b /* wait for slave */
|
||||||
|
|
||||||
|
! recopy rom data to sdram
|
||||||
|
|
||||||
|
mov.l rom_header,r1
|
||||||
|
mov.l @r1,r2 /* src relative to start of rom */
|
||||||
|
mov.l @(4,r1),r3 /* dst relative to start of sdram */
|
||||||
|
mov.l @(8,r1),r4 /* size (longword aligned) */
|
||||||
|
mov.l rom_start,r1
|
||||||
|
add r1,r2
|
||||||
|
mov.l sdram_start,r1
|
||||||
|
add r1,r3
|
||||||
|
shlr2 r4 /* number of longs */
|
||||||
|
add #-1,r4
|
||||||
|
1:
|
||||||
|
mov.l @r2+,r0
|
||||||
|
mov.l r0,@r3
|
||||||
|
add #4,r3
|
||||||
|
dt r4
|
||||||
|
bf 1b
|
||||||
|
|
||||||
|
mov.l main_st,r0
|
||||||
|
mov.l main_ok,r1
|
||||||
|
mov.l r1,@r0 /* tell everyone reset complete */
|
||||||
|
|
||||||
|
mov.l main_go,r0
|
||||||
|
jmp @r0
|
||||||
|
nop
|
||||||
|
|
||||||
|
slav_reset:
|
||||||
|
! do any slave SH2 specific reset code here
|
||||||
|
|
||||||
|
mov.l slav_st,r0
|
||||||
|
mov.l slav_ok,r1
|
||||||
|
mov.l r1,@r0 /* tell master to start reset */
|
||||||
|
|
||||||
|
mov.l main_st,r0
|
||||||
|
mov.l main_ok,r1
|
||||||
|
0:
|
||||||
|
mov.l @r0,r2
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
cmp/eq r1,r2
|
||||||
|
bf 0b /* wait for master to do the work */
|
||||||
|
|
||||||
|
mov.l slav_go,r0
|
||||||
|
jmp @r0
|
||||||
|
nop
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
main_st:
|
||||||
|
.long 0x20004020
|
||||||
|
main_ok:
|
||||||
|
.ascii "M_OK"
|
||||||
|
main_go:
|
||||||
|
.long mstart
|
||||||
|
rom_header:
|
||||||
|
.long 0x220003D4
|
||||||
|
rom_start:
|
||||||
|
.long 0x22000000
|
||||||
|
sdram_start:
|
||||||
|
.long 0x26000000
|
||||||
|
|
||||||
|
slav_st:
|
||||||
|
.long 0x20004024
|
||||||
|
slav_ok:
|
||||||
|
.ascii "S_OK"
|
||||||
|
slav_go:
|
||||||
|
.long sstart
|
||||||
|
|
||||||
|
|
||||||
|
.global _start
|
||||||
|
_start:
|
||||||
|
|
||||||
|
|
@ -0,0 +1,132 @@
|
||||||
|
ifeq ($(strip $(DEVKITPRO)),)
|
||||||
|
$(error "Please set DEVKITPRO in your environment. export DEVKITPRO=<path to>devkitPro)
|
||||||
|
endif
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# Configurable options
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# Name of the final output
|
||||||
|
TARGET = ClassiCube-3ds
|
||||||
|
# List of directories containing source code
|
||||||
|
SOURCE_DIRS = src src/3ds third_party/bearssl
|
||||||
|
# List of directories containing shader files
|
||||||
|
SHDR_DIRS = misc/3ds
|
||||||
|
# Directory where object files are placed
|
||||||
|
BUILD_DIR = build/3ds
|
||||||
|
|
||||||
|
APP_ICON = misc/3ds/icon.png
|
||||||
|
APP_TITLE = ClassiCube
|
||||||
|
APP_DESCRIPTION = Simple block building sandbox
|
||||||
|
APP_AUTHOR = ClassiCube team
|
||||||
|
|
||||||
|
CIA_BANNER_BIN = misc/3ds/banner.bin
|
||||||
|
CIA_ICON_BIN = misc/3ds/icon.bin
|
||||||
|
CIA_SPEC_RSF = misc/3ds/spec.rsf
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# Compilable files
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
S_FILES = $(foreach dir,$(SOURCE_DIRS),$(wildcard $(dir)/*.S))
|
||||||
|
C_FILES = $(foreach dir,$(SOURCE_DIRS),$(wildcard $(dir)/*.c))
|
||||||
|
OBJS = $(addprefix $(BUILD_DIR)/, $(notdir $(C_FILES:%.c=%.o) $(S_FILES:%.S=%.o)))
|
||||||
|
|
||||||
|
PICAFILES := $(foreach dir,$(SHDR_DIRS),$(notdir $(wildcard $(dir)/*.v.pica)))
|
||||||
|
OBJS += $(addprefix $(BUILD_DIR)/, $(PICAFILES:.v.pica=.shbin.o))
|
||||||
|
|
||||||
|
# Dependency tracking
|
||||||
|
DEPFLAGS = -MT $@ -MMD -MP -MF $(BUILD_DIR)/$*.d
|
||||||
|
DEPFILES := $(OBJS:%.o=%.d)
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# Code generation
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
ARCH = -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft
|
||||||
|
CFLAGS = -g -Wall -O2 -mword-relocations -ffunction-sections $(ARCH) $(INCLUDE) -D__3DS__ -DPLAT_3DS
|
||||||
|
ASFLAGS = -g $(ARCH)
|
||||||
|
|
||||||
|
LDFLAGS = -specs=3dsx.specs -g $(ARCH)
|
||||||
|
LIBS = -lctru -lm
|
||||||
|
INCLUDES=
|
||||||
|
|
||||||
|
CTRULIB = $(DEVKITPRO)/libctru
|
||||||
|
INCLUDES += $(foreach dir, $(CTRULIB), -I$(dir)/include)
|
||||||
|
LDFLAGS += $(foreach dir,$(CTRULIB), -L$(dir)/lib)
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# Compiler tools
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
PREFIX := $(DEVKITPRO)/devkitARM/bin/arm-none-eabi-
|
||||||
|
ARM_AS := $(PREFIX)as
|
||||||
|
ARM_CC := $(PREFIX)gcc
|
||||||
|
ARM_CXX := $(PREFIX)g++
|
||||||
|
|
||||||
|
_DSXTOOL := $(DEVKITPRO)/tools/bin/3dsxtool
|
||||||
|
SMDHTOOL := $(DEVKITPRO)/tools/bin/smdhtool
|
||||||
|
PICASSO := $(DEVKITPRO)/tools/bin/picasso
|
||||||
|
BIN2S := $(DEVKITPRO)/tools/bin/bin2s
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# Main targets
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
default: $(BUILD_DIR) $(TARGET).cia
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm $(TARGET).cia $(TARGET).3dsx $(TARGET).elf $(OBJS)
|
||||||
|
|
||||||
|
$(BUILD_DIR):
|
||||||
|
mkdir -p $(BUILD_DIR)
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# Executable generation
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
$(TARGET).elf: $(OBJS)
|
||||||
|
$(ARM_CC) $(LDFLAGS) $^ -o $@ $(LIBS)
|
||||||
|
|
||||||
|
$(BUILD_DIR).smdh: $(APP_ICON)
|
||||||
|
$(SMDHTOOL) --create "$(APP_TITLE)" "$(APP_DESCRIPTION)" "$(APP_AUTHOR)" $(APP_ICON) $@
|
||||||
|
|
||||||
|
$(TARGET).3dsx: $(TARGET).elf $(BUILD_DIR).smdh
|
||||||
|
$(_DSXTOOL) $< $@ --smdh=$(BUILD_DIR).smdh
|
||||||
|
|
||||||
|
$(BUILD_DIR)/makerom:
|
||||||
|
wget https://github.com/3DSGuy/Project_CTR/releases/download/makerom-v0.18.3/makerom-v0.18.3-ubuntu_x86_64.zip -O $(BUILD_DIR)/makerom.zip
|
||||||
|
unzip $(BUILD_DIR)/makerom.zip -d $(BUILD_DIR)
|
||||||
|
chmod +x $(BUILD_DIR)/makerom
|
||||||
|
|
||||||
|
$(TARGET).cia : $(TARGET).3dsx $(BUILD_DIR)/makerom
|
||||||
|
$(BUILD_DIR)/makerom -f cia -o $(TARGET).cia -elf $(TARGET).elf -rsf $(CIA_SPEC_RSF) -icon $(CIA_ICON_BIN) -banner $(CIA_BANNER_BIN) -exefslogo -target t
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# Object generation
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
$(BUILD_DIR)/%.o: src/%.c
|
||||||
|
$(ARM_CC) $(CFLAGS) $(INCLUDES) $(DEPFLAGS) -c $< -o $@
|
||||||
|
|
||||||
|
$(BUILD_DIR)/%.o: src/3ds/%.c
|
||||||
|
$(ARM_CC) $(CFLAGS) $(INCLUDES) $(DEPFLAGS) -c $< -o $@
|
||||||
|
|
||||||
|
$(BUILD_DIR)/%.o: third_party/bearssl/%.c
|
||||||
|
$(ARM_CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
|
||||||
|
|
||||||
|
$(BUILD_DIR)/%.shbin: misc/3ds/%.v.pica
|
||||||
|
$(PICASSO) $< -o $@
|
||||||
|
|
||||||
|
$(BUILD_DIR)/%.shbin.o: $(BUILD_DIR)/%.shbin
|
||||||
|
$(BIN2S) $< | $(ARM_CC) -x assembler-with-cpp -c - -o $@
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# Dependency tracking
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
$(DEPFILES):
|
||||||
|
|
||||||
|
include $(wildcard $(DEPFILES))
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
To see debug log messages in Citra:
|
||||||
|
|
||||||
|
1) Make sure log level set to "Debug.Emulated:Debug"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Commands used to generate the .bin files:
|
||||||
|
|
||||||
|
`bannertool makebanner -i banner.png -a audio.wav -o banner.bin`
|
||||||
|
|
||||||
|
`bannertool makesmdh -s ClassiCube -l ClassiCube -p UnknownShadow200 -i icon.png -o icon.bin`
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
Debug log messages output to debug service, so may be possible to see from console via remote gdb
|
||||||
|
After Width: | Height: | Size: 10 KiB |
|
|
@ -0,0 +1,34 @@
|
||||||
|
; Vertex shader for rendering coloured vertices for PICA200 GPU on the Nintendo 3DS
|
||||||
|
; ==================================================================================
|
||||||
|
|
||||||
|
; Uniforms (layout common to all shaders)
|
||||||
|
.alias MVP_0 c0
|
||||||
|
.alias MVP_1 c1
|
||||||
|
.alias MVP_2 c2
|
||||||
|
.alias MVP_3 c3
|
||||||
|
.alias TEX_OFFSET c4
|
||||||
|
|
||||||
|
; Constants (initialised in Graphics_3DS.c)
|
||||||
|
.alias ONE_DIV_255 c5
|
||||||
|
|
||||||
|
; Outputs
|
||||||
|
.out out_pos position
|
||||||
|
.out out_col color
|
||||||
|
|
||||||
|
; Inputs (defined as aliases for convenience)
|
||||||
|
.alias in_pos v0
|
||||||
|
.alias in_col v1
|
||||||
|
|
||||||
|
.proc main
|
||||||
|
; out_pos = MVP * in_pos
|
||||||
|
dp4 out_pos.x, MVP_0, in_pos
|
||||||
|
dp4 out_pos.y, MVP_1, in_pos
|
||||||
|
dp4 out_pos.z, MVP_2, in_pos
|
||||||
|
dp4 out_pos.w, MVP_3, in_pos
|
||||||
|
|
||||||
|
; out_col = in_col * ONE_DIV_255
|
||||||
|
mul out_col, ONE_DIV_255, in_col
|
||||||
|
|
||||||
|
end
|
||||||
|
.end
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
|
@ -1,12 +1,15 @@
|
||||||
; Vertex shader for rendering textured vertices with an offset for PICA200 GPU on the Nintendo 3DS
|
; Vertex shader for rendering textured vertices with an offset for PICA200 GPU on the Nintendo 3DS
|
||||||
; ==================================================================================
|
; ==================================================================================
|
||||||
|
|
||||||
; Uniforms
|
; Uniforms (layout common to all shaders)
|
||||||
.fvec MVP[4];
|
.alias MVP_0 c0
|
||||||
.fvec tex_offset;
|
.alias MVP_1 c1
|
||||||
|
.alias MVP_2 c2
|
||||||
|
.alias MVP_3 c3
|
||||||
|
.alias TEX_OFFSET c4
|
||||||
|
|
||||||
; Constants
|
; Constants (initialised in Graphics_3DS.c)
|
||||||
.constf ONE_DIV_255(0.003921568627, 0.003921568627, 0.003921568627, 0.003921568627)
|
.alias ONE_DIV_255 c5
|
||||||
|
|
||||||
; Outputs
|
; Outputs
|
||||||
.out out_pos position
|
.out out_pos position
|
||||||
|
|
@ -19,19 +22,17 @@
|
||||||
.alias in_tex v2
|
.alias in_tex v2
|
||||||
|
|
||||||
.proc main
|
.proc main
|
||||||
; r0 = in_pos
|
; out_pos = MVP * in_pos
|
||||||
mov r0, in_pos
|
dp4 out_pos.x, MVP_0, in_pos
|
||||||
|
dp4 out_pos.y, MVP_1, in_pos
|
||||||
; out_pos = MVP * r0
|
dp4 out_pos.z, MVP_2, in_pos
|
||||||
dp4 out_pos.x, MVP[0], r0
|
dp4 out_pos.w, MVP_3, in_pos
|
||||||
dp4 out_pos.y, MVP[1], r0
|
|
||||||
dp4 out_pos.z, MVP[2], r0
|
|
||||||
dp4 out_pos.w, MVP[3], r0
|
|
||||||
|
|
||||||
; out_col = in_col * ONE_DIV_255
|
; out_col = in_col * ONE_DIV_255
|
||||||
mul out_col, ONE_DIV_255, in_col
|
mul out_col, ONE_DIV_255, in_col
|
||||||
; out_tex = in_tex + tex_offset
|
; out_tex = in_tex + tex_offset
|
||||||
add out_tex, tex_offset, in_tex
|
add out_tex, TEX_OFFSET, in_tex
|
||||||
|
|
||||||
end
|
end
|
||||||
.end
|
.end
|
||||||
|
|
||||||
|
|
@ -0,0 +1,204 @@
|
||||||
|
# https://github.com/msikma/3ds-tpl
|
||||||
|
# https://gist.github.com/jakcron/9f9f02ffd94d98a72632
|
||||||
|
|
||||||
|
BasicInfo:
|
||||||
|
Title : ClassiCube
|
||||||
|
CompanyCode : "00"
|
||||||
|
ProductCode : CCBE
|
||||||
|
ContentType : Application
|
||||||
|
Logo : Nintendo
|
||||||
|
|
||||||
|
TitleInfo:
|
||||||
|
UniqueId : 0x00CCBE
|
||||||
|
Category : Application
|
||||||
|
|
||||||
|
CardInfo:
|
||||||
|
MediaSize : 128MB # 128MB / 256MB / 512MB / 1GB / 2GB / 4GB
|
||||||
|
MediaType : Card1 # Card1 / Card2
|
||||||
|
CardDevice : NorFlash # NorFlash(Pick this if you use savedata) / None
|
||||||
|
|
||||||
|
|
||||||
|
Option:
|
||||||
|
UseOnSD : true # true if App is to be installed to SD
|
||||||
|
FreeProductCode : true # Removes limitations on ProductCode
|
||||||
|
MediaFootPadding : false # If true CCI files are created with padding
|
||||||
|
EnableCrypt : false # Enables encryption for NCCH and CIA
|
||||||
|
EnableCompress : true # Compresses exefs code
|
||||||
|
|
||||||
|
AccessControlInfo:
|
||||||
|
#UseExtSaveData : true
|
||||||
|
#ExtSaveDataId: 0xff3ff
|
||||||
|
#UseExtendedSaveDataAccessControl: true
|
||||||
|
#AccessibleSaveDataIds: [0x101, 0x202, 0x303, 0x404, 0x505, 0x606]
|
||||||
|
|
||||||
|
SystemControlInfo:
|
||||||
|
SaveDataSize: 128KB
|
||||||
|
RemasterVersion: 0
|
||||||
|
StackSize: 0x40000
|
||||||
|
|
||||||
|
AccessControlInfo:
|
||||||
|
FileSystemAccess:
|
||||||
|
- Debug
|
||||||
|
- DirectSdmc
|
||||||
|
- DirectSdmcWrite
|
||||||
|
|
||||||
|
IdealProcessor : 0
|
||||||
|
AffinityMask : 1
|
||||||
|
|
||||||
|
Priority : 16
|
||||||
|
SystemMode : 80MB
|
||||||
|
MaxCpu : 0x9E # Default
|
||||||
|
DisableDebug : false
|
||||||
|
EnableForceDebug : false
|
||||||
|
CanWriteSharedPage : false
|
||||||
|
CanUsePrivilegedPriority : false
|
||||||
|
CanUseNonAlphabetAndNumber : false
|
||||||
|
PermitMainFunctionArgument : false
|
||||||
|
CanShareDeviceMemory : false
|
||||||
|
RunnableOnSleep : false
|
||||||
|
SpecialMemoryArrange : false
|
||||||
|
CoreVersion : 2
|
||||||
|
DescVersion : 2
|
||||||
|
|
||||||
|
ReleaseKernelMajor : "02"
|
||||||
|
ReleaseKernelMinor : "33"
|
||||||
|
MemoryType : Application
|
||||||
|
HandleTableSize: 512
|
||||||
|
|
||||||
|
# New3DS Exclusive Process Settings
|
||||||
|
SystemModeExt : 124MB # Legacy(Default)/124MB/178MB Legacy:Use Old3DS SystemMode
|
||||||
|
CpuSpeed : 804MHz # 268MHz(Default)/804MHz
|
||||||
|
EnableL2Cache : true # false(default)/true
|
||||||
|
CanAccessCore2 : true
|
||||||
|
|
||||||
|
# Virtual Address Mappings
|
||||||
|
IORegisterMapping:
|
||||||
|
- 1ff50000-1ff57fff # DSP memory
|
||||||
|
- 1ff70000-1ff77fff
|
||||||
|
MemoryMapping:
|
||||||
|
- 1f000000-1f5fffff # VRAM
|
||||||
|
|
||||||
|
SystemCallAccess:
|
||||||
|
ArbitrateAddress: 34
|
||||||
|
Break: 60
|
||||||
|
CancelTimer: 28
|
||||||
|
ClearEvent: 25
|
||||||
|
ClearTimer: 29
|
||||||
|
CloseHandle: 35
|
||||||
|
ConnectToPort: 45
|
||||||
|
ControlMemory: 1
|
||||||
|
CreateAddressArbiter: 33
|
||||||
|
CreateEvent: 23
|
||||||
|
CreateMemoryBlock: 30
|
||||||
|
CreateMutex: 19
|
||||||
|
CreateSemaphore: 21
|
||||||
|
CreateThread: 8
|
||||||
|
CreateTimer: 26
|
||||||
|
DuplicateHandle: 39
|
||||||
|
ExitProcess: 3
|
||||||
|
ExitThread: 9
|
||||||
|
GetCurrentProcessorNumber: 17
|
||||||
|
GetHandleInfo: 41
|
||||||
|
GetProcessId: 53
|
||||||
|
GetProcessIdOfThread: 54
|
||||||
|
GetProcessIdealProcessor: 6
|
||||||
|
GetProcessInfo: 43
|
||||||
|
GetResourceLimit: 56
|
||||||
|
GetResourceLimitCurrentValues: 58
|
||||||
|
GetResourceLimitLimitValues: 57
|
||||||
|
GetSystemInfo: 42
|
||||||
|
GetSystemTick: 40
|
||||||
|
GetThreadContext: 59
|
||||||
|
GetThreadId: 55
|
||||||
|
GetThreadIdealProcessor: 15
|
||||||
|
GetThreadInfo: 44
|
||||||
|
GetThreadPriority: 11
|
||||||
|
MapMemoryBlock: 31
|
||||||
|
OutputDebugString: 61
|
||||||
|
QueryMemory: 2
|
||||||
|
ReleaseMutex: 20
|
||||||
|
ReleaseSemaphore: 22
|
||||||
|
SendSyncRequest1: 46
|
||||||
|
SendSyncRequest2: 47
|
||||||
|
SendSyncRequest3: 48
|
||||||
|
SendSyncRequest4: 49
|
||||||
|
SendSyncRequest: 50
|
||||||
|
SetThreadPriority: 12
|
||||||
|
SetTimer: 27
|
||||||
|
SignalEvent: 24
|
||||||
|
SleepThread: 10
|
||||||
|
UnmapMemoryBlock: 32
|
||||||
|
WaitSynchronization1: 36
|
||||||
|
WaitSynchronizationN: 37
|
||||||
|
InterruptNumbers:
|
||||||
|
|
||||||
|
# Service List
|
||||||
|
# Maximum 34 services (32 if firmware is prior to 9.3.0)
|
||||||
|
ServiceAccessControl:
|
||||||
|
- APT:U
|
||||||
|
- $hioFIO
|
||||||
|
- $hostio0
|
||||||
|
- $hostio1
|
||||||
|
- ac:u
|
||||||
|
- boss:U
|
||||||
|
- cam:u
|
||||||
|
- cecd:u
|
||||||
|
- cfg:u
|
||||||
|
- dlp:FKCL
|
||||||
|
- dlp:SRVR
|
||||||
|
- dsp::DSP
|
||||||
|
- frd:u
|
||||||
|
- fs:USER
|
||||||
|
- gsp::Gpu
|
||||||
|
- hid:USER
|
||||||
|
- mic:u
|
||||||
|
- ndm:u
|
||||||
|
- news:s
|
||||||
|
- nwm::UDS
|
||||||
|
- ptm:u
|
||||||
|
- pxi:dev
|
||||||
|
- soc:U
|
||||||
|
- gsp::Lcd
|
||||||
|
- y2r:u
|
||||||
|
- ldr:ro
|
||||||
|
- ir:USER
|
||||||
|
- ir:u
|
||||||
|
- csnd:SND
|
||||||
|
- am:u
|
||||||
|
- ns:s
|
||||||
|
|
||||||
|
SystemControlInfo:
|
||||||
|
# Modules that run services listed above should be included below
|
||||||
|
# Maximum 48 dependencies
|
||||||
|
# If a module is listed that isn't present on the 3DS, the title will get stuck at the logo (3ds waves)
|
||||||
|
# So act, nfc and qtm are commented for 4.x support. Uncomment if you need these.
|
||||||
|
# <module name>:<module titleid>
|
||||||
|
Dependency:
|
||||||
|
ac: 0x0004013000002402L
|
||||||
|
am: 0x0004013000001502L
|
||||||
|
boss: 0x0004013000003402L
|
||||||
|
camera: 0x0004013000001602L
|
||||||
|
cecd: 0x0004013000002602L
|
||||||
|
cfg: 0x0004013000001702L
|
||||||
|
codec: 0x0004013000001802L
|
||||||
|
csnd: 0x0004013000002702L
|
||||||
|
dlp: 0x0004013000002802L
|
||||||
|
dsp: 0x0004013000001a02L
|
||||||
|
friends: 0x0004013000003202L
|
||||||
|
gpio: 0x0004013000001b02L
|
||||||
|
gsp: 0x0004013000001c02L
|
||||||
|
hid: 0x0004013000001d02L
|
||||||
|
i2c: 0x0004013000001e02L
|
||||||
|
ir: 0x0004013000003302L
|
||||||
|
mcu: 0x0004013000001f02L
|
||||||
|
mic: 0x0004013000002002L
|
||||||
|
ndm: 0x0004013000002b02L
|
||||||
|
news: 0x0004013000003502L
|
||||||
|
nim: 0x0004013000002c02L
|
||||||
|
nwm: 0x0004013000002d02L
|
||||||
|
pdn: 0x0004013000002102L
|
||||||
|
ps: 0x0004013000003102L
|
||||||
|
ptm: 0x0004013000002202L
|
||||||
|
ro: 0x0004013000003702L
|
||||||
|
socket: 0x0004013000002e02L
|
||||||
|
spi: 0x0004013000002302L
|
||||||
|
|
@ -1,11 +1,15 @@
|
||||||
; Vertex shader for rendering textured vertices for PICA200 GPU on the Nintendo 3DS
|
; Vertex shader for rendering textured vertices for PICA200 GPU on the Nintendo 3DS
|
||||||
; ==================================================================================
|
; ==================================================================================
|
||||||
|
|
||||||
; Uniforms
|
; Uniforms (layout common to all shaders)
|
||||||
.fvec MVP[4];
|
.alias MVP_0 c0
|
||||||
|
.alias MVP_1 c1
|
||||||
|
.alias MVP_2 c2
|
||||||
|
.alias MVP_3 c3
|
||||||
|
.alias TEX_OFFSET c4
|
||||||
|
|
||||||
; Constants
|
; Constants (initialised in Graphics_3DS.c)
|
||||||
.constf ONE_DIV_255(0.003921568627, 0.003921568627, 0.003921568627, 0.003921568627)
|
.alias ONE_DIV_255 c5
|
||||||
|
|
||||||
; Outputs
|
; Outputs
|
||||||
.out out_pos position
|
.out out_pos position
|
||||||
|
|
@ -18,14 +22,11 @@
|
||||||
.alias in_tex v2
|
.alias in_tex v2
|
||||||
|
|
||||||
.proc main
|
.proc main
|
||||||
; r0 = in_pos
|
; out_pos = MVP * in_pos
|
||||||
mov r0, in_pos
|
dp4 out_pos.x, MVP_0, in_pos
|
||||||
|
dp4 out_pos.y, MVP_1, in_pos
|
||||||
; out_pos = MVP * r0
|
dp4 out_pos.z, MVP_2, in_pos
|
||||||
dp4 out_pos.x, MVP[0], r0
|
dp4 out_pos.w, MVP_3, in_pos
|
||||||
dp4 out_pos.y, MVP[1], r0
|
|
||||||
dp4 out_pos.z, MVP[2], r0
|
|
||||||
dp4 out_pos.w, MVP[3], r0
|
|
||||||
|
|
||||||
; out_col = in_col * ONE_DIV_255
|
; out_col = in_col * ONE_DIV_255
|
||||||
mul out_col, ONE_DIV_255, in_col
|
mul out_col, ONE_DIV_255, in_col
|
||||||
|
|
@ -33,4 +34,5 @@
|
||||||
mov out_tex, in_tex
|
mov out_tex, in_tex
|
||||||
|
|
||||||
end
|
end
|
||||||
.end
|
.end
|
||||||
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
* Blocks over 256 are not saved or loaded at all.
|
|
||||||
* Custom block information for blocks over 256 is not saved or loaded at all.
|
|
||||||
* /hold 0 prevents you deleting blocks until you change to another.
|
|
||||||
* Sometimes when holding air and your own model is a block model, you crash.
|
|
||||||
* Labels and buttons overlap in launcher with some fonts. (e.g. Lucida Console)
|
|
||||||
* terrain.png with width under 16 insta-crash the game
|
|
||||||
* catbox.moe texture packs/terrain.png links insta-crash the game
|
|
||||||
* Sometimes you randomly crash reading leveldatachunk packet on OSX
|
|
||||||
* Models with size of over 2 are not supported at all
|
|
||||||
* Direct3D9 backend uses an ill-formed vertex format that works by accident
|
|
||||||
* Alt text doesn't update its Y position if you click on chat
|
|
||||||
* Menu inputs (save, edit hotkey, water level, etc) are reset on window resize
|
|
||||||
* Chat input caret is reset on window resize
|
|
||||||
* Position in chat (if you scrolled up into history) is reset on window resize
|
|
||||||
* Two blank lines get shown in chat when you type /client cuboid
|
|
||||||
* Alt text is closed on window resize
|
|
||||||
* Changing server texture packs sometimes still retains textures from previous one
|
|
||||||
* Crashes at startup when another process has exclusively acquired Direct3D9 device
|
|
||||||
* Can't bind controls to mouse buttons
|
|
||||||
* Does not work at all on 64 bit macOS
|
|
||||||
* Making a gas block undeletable doesn't prevent placing blocks over it
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
Here lies ClassicalSharp, the original C# client. (works with Mono and .NET framework 2.0)
|
|
||||||
It has unfixed bugs and missing features. There's no reason to use it anymore.
|
|
||||||
|
|
||||||
For licensing, please see license.txt inside ClassicalSharp.zip.
|
|
||||||
Absolutely no support or assistance will be provided for ClassicalSharp.
|
|
||||||
|
|
@ -1,61 +0,0 @@
|
||||||
// DER encoded Baltimore CyberTrust root certificate
|
|
||||||
static const unsigned char Baltimore_RootCert[] CERT_ATTRIBUTES = {
|
|
||||||
0x30, 0x82, 0x03, 0x77, 0x30, 0x82, 0x02, 0x5F, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x04, 0x02,
|
|
||||||
0x00, 0x00, 0xB9, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05,
|
|
||||||
0x05, 0x00, 0x30, 0x5A, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49,
|
|
||||||
0x45, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x09, 0x42, 0x61, 0x6C, 0x74,
|
|
||||||
0x69, 0x6D, 0x6F, 0x72, 0x65, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x0A,
|
|
||||||
0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03,
|
|
||||||
0x55, 0x04, 0x03, 0x13, 0x19, 0x42, 0x61, 0x6C, 0x74, 0x69, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x43,
|
|
||||||
0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x30, 0x1E,
|
|
||||||
0x17, 0x0D, 0x30, 0x30, 0x30, 0x35, 0x31, 0x32, 0x31, 0x38, 0x34, 0x36, 0x30, 0x30, 0x5A, 0x17,
|
|
||||||
0x0D, 0x32, 0x35, 0x30, 0x35, 0x31, 0x32, 0x32, 0x33, 0x35, 0x39, 0x30, 0x30, 0x5A, 0x30, 0x5A,
|
|
||||||
0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, 0x45, 0x31, 0x12, 0x30,
|
|
||||||
0x10, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x09, 0x42, 0x61, 0x6C, 0x74, 0x69, 0x6D, 0x6F, 0x72,
|
|
||||||
0x65, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x0A, 0x43, 0x79, 0x62, 0x65,
|
|
||||||
0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13,
|
|
||||||
0x19, 0x42, 0x61, 0x6C, 0x74, 0x69, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72,
|
|
||||||
0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D,
|
|
||||||
0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01,
|
|
||||||
0x0F, 0x00, 0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0xA3, 0x04, 0xBB, 0x22, 0xAB,
|
|
||||||
0x98, 0x3D, 0x57, 0xE8, 0x26, 0x72, 0x9A, 0xB5, 0x79, 0xD4, 0x29, 0xE2, 0xE1, 0xE8, 0x95, 0x80,
|
|
||||||
0xB1, 0xB0, 0xE3, 0x5B, 0x8E, 0x2B, 0x29, 0x9A, 0x64, 0xDF, 0xA1, 0x5D, 0xED, 0xB0, 0x09, 0x05,
|
|
||||||
0x6D, 0xDB, 0x28, 0x2E, 0xCE, 0x62, 0xA2, 0x62, 0xFE, 0xB4, 0x88, 0xDA, 0x12, 0xEB, 0x38, 0xEB,
|
|
||||||
0x21, 0x9D, 0xC0, 0x41, 0x2B, 0x01, 0x52, 0x7B, 0x88, 0x77, 0xD3, 0x1C, 0x8F, 0xC7, 0xBA, 0xB9,
|
|
||||||
0x88, 0xB5, 0x6A, 0x09, 0xE7, 0x73, 0xE8, 0x11, 0x40, 0xA7, 0xD1, 0xCC, 0xCA, 0x62, 0x8D, 0x2D,
|
|
||||||
0xE5, 0x8F, 0x0B, 0xA6, 0x50, 0xD2, 0xA8, 0x50, 0xC3, 0x28, 0xEA, 0xF5, 0xAB, 0x25, 0x87, 0x8A,
|
|
||||||
0x9A, 0x96, 0x1C, 0xA9, 0x67, 0xB8, 0x3F, 0x0C, 0xD5, 0xF7, 0xF9, 0x52, 0x13, 0x2F, 0xC2, 0x1B,
|
|
||||||
0xD5, 0x70, 0x70, 0xF0, 0x8F, 0xC0, 0x12, 0xCA, 0x06, 0xCB, 0x9A, 0xE1, 0xD9, 0xCA, 0x33, 0x7A,
|
|
||||||
0x77, 0xD6, 0xF8, 0xEC, 0xB9, 0xF1, 0x68, 0x44, 0x42, 0x48, 0x13, 0xD2, 0xC0, 0xC2, 0xA4, 0xAE,
|
|
||||||
0x5E, 0x60, 0xFE, 0xB6, 0xA6, 0x05, 0xFC, 0xB4, 0xDD, 0x07, 0x59, 0x02, 0xD4, 0x59, 0x18, 0x98,
|
|
||||||
0x63, 0xF5, 0xA5, 0x63, 0xE0, 0x90, 0x0C, 0x7D, 0x5D, 0xB2, 0x06, 0x7A, 0xF3, 0x85, 0xEA, 0xEB,
|
|
||||||
0xD4, 0x03, 0xAE, 0x5E, 0x84, 0x3E, 0x5F, 0xFF, 0x15, 0xED, 0x69, 0xBC, 0xF9, 0x39, 0x36, 0x72,
|
|
||||||
0x75, 0xCF, 0x77, 0x52, 0x4D, 0xF3, 0xC9, 0x90, 0x2C, 0xB9, 0x3D, 0xE5, 0xC9, 0x23, 0x53, 0x3F,
|
|
||||||
0x1F, 0x24, 0x98, 0x21, 0x5C, 0x07, 0x99, 0x29, 0xBD, 0xC6, 0x3A, 0xEC, 0xE7, 0x6E, 0x86, 0x3A,
|
|
||||||
0x6B, 0x97, 0x74, 0x63, 0x33, 0xBD, 0x68, 0x18, 0x31, 0xF0, 0x78, 0x8D, 0x76, 0xBF, 0xFC, 0x9E,
|
|
||||||
0x8E, 0x5D, 0x2A, 0x86, 0xA7, 0x4D, 0x90, 0xDC, 0x27, 0x1A, 0x39, 0x02, 0x03, 0x01, 0x00, 0x01,
|
|
||||||
0xA3, 0x45, 0x30, 0x43, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0xE5,
|
|
||||||
0x9D, 0x59, 0x30, 0x82, 0x47, 0x58, 0xCC, 0xAC, 0xFA, 0x08, 0x54, 0x36, 0x86, 0x7B, 0x3A, 0xB5,
|
|
||||||
0x04, 0x4D, 0xF0, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, 0x04, 0x08, 0x30,
|
|
||||||
0x06, 0x01, 0x01, 0xFF, 0x02, 0x01, 0x03, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01,
|
|
||||||
0xFF, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7,
|
|
||||||
0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x85, 0x0C, 0x5D, 0x8E, 0xE4,
|
|
||||||
0x6F, 0x51, 0x68, 0x42, 0x05, 0xA0, 0xDD, 0xBB, 0x4F, 0x27, 0x25, 0x84, 0x03, 0xBD, 0xF7, 0x64,
|
|
||||||
0xFD, 0x2D, 0xD7, 0x30, 0xE3, 0xA4, 0x10, 0x17, 0xEB, 0xDA, 0x29, 0x29, 0xB6, 0x79, 0x3F, 0x76,
|
|
||||||
0xF6, 0x19, 0x13, 0x23, 0xB8, 0x10, 0x0A, 0xF9, 0x58, 0xA4, 0xD4, 0x61, 0x70, 0xBD, 0x04, 0x61,
|
|
||||||
0x6A, 0x12, 0x8A, 0x17, 0xD5, 0x0A, 0xBD, 0xC5, 0xBC, 0x30, 0x7C, 0xD6, 0xE9, 0x0C, 0x25, 0x8D,
|
|
||||||
0x86, 0x40, 0x4F, 0xEC, 0xCC, 0xA3, 0x7E, 0x38, 0xC6, 0x37, 0x11, 0x4F, 0xED, 0xDD, 0x68, 0x31,
|
|
||||||
0x8E, 0x4C, 0xD2, 0xB3, 0x01, 0x74, 0xEE, 0xBE, 0x75, 0x5E, 0x07, 0x48, 0x1A, 0x7F, 0x70, 0xFF,
|
|
||||||
0x16, 0x5C, 0x84, 0xC0, 0x79, 0x85, 0xB8, 0x05, 0xFD, 0x7F, 0xBE, 0x65, 0x11, 0xA3, 0x0F, 0xC0,
|
|
||||||
0x02, 0xB4, 0xF8, 0x52, 0x37, 0x39, 0x04, 0xD5, 0xA9, 0x31, 0x7A, 0x18, 0xBF, 0xA0, 0x2A, 0xF4,
|
|
||||||
0x12, 0x99, 0xF7, 0xA3, 0x45, 0x82, 0xE3, 0x3C, 0x5E, 0xF5, 0x9D, 0x9E, 0xB5, 0xC8, 0x9E, 0x7C,
|
|
||||||
0x2E, 0xC8, 0xA4, 0x9E, 0x4E, 0x08, 0x14, 0x4B, 0x6D, 0xFD, 0x70, 0x6D, 0x6B, 0x1A, 0x63, 0xBD,
|
|
||||||
0x64, 0xE6, 0x1F, 0xB7, 0xCE, 0xF0, 0xF2, 0x9F, 0x2E, 0xBB, 0x1B, 0xB7, 0xF2, 0x50, 0x88, 0x73,
|
|
||||||
0x92, 0xC2, 0xE2, 0xE3, 0x16, 0x8D, 0x9A, 0x32, 0x02, 0xAB, 0x8E, 0x18, 0xDD, 0xE9, 0x10, 0x11,
|
|
||||||
0xEE, 0x7E, 0x35, 0xAB, 0x90, 0xAF, 0x3E, 0x30, 0x94, 0x7A, 0xD0, 0x33, 0x3D, 0xA7, 0x65, 0x0F,
|
|
||||||
0xF5, 0xFC, 0x8E, 0x9E, 0x62, 0xCF, 0x47, 0x44, 0x2C, 0x01, 0x5D, 0xBB, 0x1D, 0xB5, 0x32, 0xD2,
|
|
||||||
0x47, 0xD2, 0x38, 0x2E, 0xD0, 0xFE, 0x81, 0xDC, 0x32, 0x6A, 0x1E, 0xB5, 0xEE, 0x3C, 0xD5, 0xFC,
|
|
||||||
0xE7, 0x81, 0x1D, 0x19, 0xC3, 0x24, 0x42, 0xEA, 0x63, 0x39, 0xA9,
|
|
||||||
};
|
|
||||||
static const int Baltimore_RootCert_Size = sizeof(Baltimore_RootCert);
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,51 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 16
|
||||||
|
VisualStudioVersion = 16.0.32002.261
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ClassiCube-UWP", "ClassiCube-UWP.vcxproj", "{A901236D-C8EF-4041-966F-46F17511E342}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|ARM = Debug|ARM
|
||||||
|
Debug|ARM64 = Debug|ARM64
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Release|ARM = Release|ARM
|
||||||
|
Release|ARM64 = Release|ARM64
|
||||||
|
Release|x64 = Release|x64
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{A901236D-C8EF-4041-966F-46F17511E342}.Debug|ARM.ActiveCfg = Debug|ARM
|
||||||
|
{A901236D-C8EF-4041-966F-46F17511E342}.Debug|ARM.Build.0 = Debug|ARM
|
||||||
|
{A901236D-C8EF-4041-966F-46F17511E342}.Debug|ARM.Deploy.0 = Debug|ARM
|
||||||
|
{A901236D-C8EF-4041-966F-46F17511E342}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||||
|
{A901236D-C8EF-4041-966F-46F17511E342}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||||
|
{A901236D-C8EF-4041-966F-46F17511E342}.Debug|ARM64.Deploy.0 = Debug|ARM64
|
||||||
|
{A901236D-C8EF-4041-966F-46F17511E342}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{A901236D-C8EF-4041-966F-46F17511E342}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{A901236D-C8EF-4041-966F-46F17511E342}.Debug|x64.Deploy.0 = Debug|x64
|
||||||
|
{A901236D-C8EF-4041-966F-46F17511E342}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{A901236D-C8EF-4041-966F-46F17511E342}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{A901236D-C8EF-4041-966F-46F17511E342}.Debug|x86.Deploy.0 = Debug|Win32
|
||||||
|
{A901236D-C8EF-4041-966F-46F17511E342}.Release|ARM.ActiveCfg = Release|ARM
|
||||||
|
{A901236D-C8EF-4041-966F-46F17511E342}.Release|ARM.Build.0 = Release|ARM
|
||||||
|
{A901236D-C8EF-4041-966F-46F17511E342}.Release|ARM.Deploy.0 = Release|ARM
|
||||||
|
{A901236D-C8EF-4041-966F-46F17511E342}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||||
|
{A901236D-C8EF-4041-966F-46F17511E342}.Release|ARM64.Build.0 = Release|ARM64
|
||||||
|
{A901236D-C8EF-4041-966F-46F17511E342}.Release|ARM64.Deploy.0 = Release|ARM64
|
||||||
|
{A901236D-C8EF-4041-966F-46F17511E342}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{A901236D-C8EF-4041-966F-46F17511E342}.Release|x64.Build.0 = Release|x64
|
||||||
|
{A901236D-C8EF-4041-966F-46F17511E342}.Release|x64.Deploy.0 = Release|x64
|
||||||
|
{A901236D-C8EF-4041-966F-46F17511E342}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{A901236D-C8EF-4041-966F-46F17511E342}.Release|x86.Build.0 = Release|Win32
|
||||||
|
{A901236D-C8EF-4041-966F-46F17511E342}.Release|x86.Deploy.0 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {AB4A9C28-F91F-439E-8D2E-E54273138ADC}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
|
|
@ -0,0 +1,432 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<ProjectGuid>{a901236d-c8ef-4041-966f-46f17511e342}</ProjectGuid>
|
||||||
|
<RootNamespace>ClassiCube_UWP</RootNamespace>
|
||||||
|
<DefaultLanguage>en-US</DefaultLanguage>
|
||||||
|
<MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>
|
||||||
|
<AppContainerApplication>true</AppContainerApplication>
|
||||||
|
<ApplicationType>Windows Store</ApplicationType>
|
||||||
|
<WindowsTargetPlatformVersion Condition=" '$(WindowsTargetPlatformVersion)' == '' ">10.0.20348.0</WindowsTargetPlatformVersion>
|
||||||
|
<WindowsTargetPlatformMinVersion>10.0.10240.0</WindowsTargetPlatformMinVersion>
|
||||||
|
<ApplicationTypeRevision>10.0</ApplicationTypeRevision>
|
||||||
|
<AppxPackageSigningEnabled>false</AppxPackageSigningEnabled>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug|ARM">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>ARM</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|ARM64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>ARM64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<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|ARM">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>ARM</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|ARM64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>ARM64</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 Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
|
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
|
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
|
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
|
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
|
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</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|ARM'">
|
||||||
|
<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|ARM'">
|
||||||
|
<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" />
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
|
||||||
|
<ClCompile>
|
||||||
|
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
|
||||||
|
<DisableSpecificWarnings>4453;28204</DisableSpecificWarnings>
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||||
|
<CompileAs>Default</CompileAs>
|
||||||
|
<CompileAsWinRT>false</CompileAsWinRT>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
|
||||||
|
<ClCompile>
|
||||||
|
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
|
||||||
|
<DisableSpecificWarnings>4453;28204</DisableSpecificWarnings>
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||||
|
<CompileAs>Default</CompileAs>
|
||||||
|
<CompileAsWinRT>false</CompileAsWinRT>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||||
|
<ClCompile>
|
||||||
|
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
|
||||||
|
<DisableSpecificWarnings>4453;28204</DisableSpecificWarnings>
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||||
|
<CompileAs>Default</CompileAs>
|
||||||
|
<CompileAsWinRT>false</CompileAsWinRT>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||||
|
<ClCompile>
|
||||||
|
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
|
||||||
|
<DisableSpecificWarnings>4453;28204</DisableSpecificWarnings>
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||||
|
<CompileAs>Default</CompileAs>
|
||||||
|
<CompileAsWinRT>false</CompileAsWinRT>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
|
||||||
|
<DisableSpecificWarnings>4453;28204</DisableSpecificWarnings>
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||||
|
<CompileAs>Default</CompileAs>
|
||||||
|
<CompileAsWinRT>false</CompileAsWinRT>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
|
||||||
|
<DisableSpecificWarnings>4453;28204</DisableSpecificWarnings>
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||||
|
<CompileAs>Default</CompileAs>
|
||||||
|
<CompileAsWinRT>false</CompileAsWinRT>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
|
||||||
|
<DisableSpecificWarnings>4453;28204</DisableSpecificWarnings>
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||||
|
<CompileAs>Default</CompileAs>
|
||||||
|
<CompileAsWinRT>false</CompileAsWinRT>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
|
||||||
|
<DisableSpecificWarnings>4453;28204</DisableSpecificWarnings>
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||||
|
<CompileAs>Default</CompileAs>
|
||||||
|
<CompileAsWinRT>false</CompileAsWinRT>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<AppxManifest Include="Package.appxmanifest">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</AppxManifest>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="..\..\src\Animations.c" />
|
||||||
|
<ClCompile Include="..\..\src\Audio.c" />
|
||||||
|
<ClCompile Include="..\..\src\Audio_OpenAL.c" />
|
||||||
|
<ClCompile Include="..\..\src\AxisLinesRenderer.c" />
|
||||||
|
<ClCompile Include="..\..\src\Bitmap.c" />
|
||||||
|
<ClCompile Include="..\..\src\Block.c" />
|
||||||
|
<ClCompile Include="..\..\src\BlockPhysics.c" />
|
||||||
|
<ClCompile Include="..\..\src\Builder.c" />
|
||||||
|
<ClCompile Include="..\..\src\Camera.c" />
|
||||||
|
<ClCompile Include="..\..\src\Certs.c" />
|
||||||
|
<ClCompile Include="..\..\src\Chat.c" />
|
||||||
|
<ClCompile Include="..\..\src\Commands.c" />
|
||||||
|
<ClCompile Include="..\..\src\Deflate.c" />
|
||||||
|
<ClCompile Include="..\..\src\Drawer.c" />
|
||||||
|
<ClCompile Include="..\..\src\Drawer2D.c" />
|
||||||
|
<ClCompile Include="..\..\src\Entity.c" />
|
||||||
|
<ClCompile Include="..\..\src\EntityComponents.c" />
|
||||||
|
<ClCompile Include="..\..\src\EntityRenderers.c" />
|
||||||
|
<ClCompile Include="..\..\src\EnvRenderer.c" />
|
||||||
|
<ClCompile Include="..\..\src\Event.c" />
|
||||||
|
<ClCompile Include="..\..\src\ExtMath.c" />
|
||||||
|
<ClCompile Include="..\..\src\FancyLighting.c" />
|
||||||
|
<ClCompile Include="..\..\src\Formats.c" />
|
||||||
|
<ClCompile Include="..\..\src\Game.c" />
|
||||||
|
<ClCompile Include="..\..\src\GameVersion.c" />
|
||||||
|
<ClCompile Include="..\..\src\Generator.c" />
|
||||||
|
<ClCompile Include="..\..\src\Graphics_D3D11.c" />
|
||||||
|
<ClCompile Include="..\..\src\Gui.c" />
|
||||||
|
<ClCompile Include="..\..\src\HeldBlockRenderer.c" />
|
||||||
|
<ClCompile Include="..\..\src\Http_Worker.c" />
|
||||||
|
<ClCompile Include="..\..\src\Input.c" />
|
||||||
|
<ClCompile Include="..\..\src\InputHandler.c" />
|
||||||
|
<ClCompile Include="..\..\src\Inventory.c" />
|
||||||
|
<ClCompile Include="..\..\src\IsometricDrawer.c" />
|
||||||
|
<ClCompile Include="..\..\src\Launcher.c" />
|
||||||
|
<ClCompile Include="..\..\src\LBackend.c" />
|
||||||
|
<ClCompile Include="..\..\src\LBackend_Android.c" />
|
||||||
|
<ClCompile Include="..\..\src\Lighting.c" />
|
||||||
|
<ClCompile Include="..\..\src\Logger.c" />
|
||||||
|
<ClCompile Include="..\..\src\LScreens.c" />
|
||||||
|
<ClCompile Include="..\..\src\LWeb.c" />
|
||||||
|
<ClCompile Include="..\..\src\LWidgets.c" />
|
||||||
|
<ClCompile Include="..\..\src\MapRenderer.c" />
|
||||||
|
<ClCompile Include="..\..\src\MenuOptions.c" />
|
||||||
|
<ClCompile Include="..\..\src\Menus.c" />
|
||||||
|
<ClCompile Include="..\..\src\Model.c" />
|
||||||
|
<ClCompile Include="..\..\src\Options.c" />
|
||||||
|
<ClCompile Include="..\..\src\PackedCol.c" />
|
||||||
|
<ClCompile Include="..\..\src\Particle.c" />
|
||||||
|
<ClCompile Include="..\..\src\Physics.c" />
|
||||||
|
<ClCompile Include="..\..\src\Picking.c" />
|
||||||
|
<ClCompile Include="..\..\src\Protocol.c" />
|
||||||
|
<ClCompile Include="..\..\src\Queue.c" />
|
||||||
|
<ClCompile Include="..\..\src\Resources.c" />
|
||||||
|
<ClCompile Include="..\..\src\Screens.c" />
|
||||||
|
<ClCompile Include="..\..\src\SelectionBox.c" />
|
||||||
|
<ClCompile Include="..\..\src\SelOutlineRenderer.c" />
|
||||||
|
<ClCompile Include="..\..\src\Server.c" />
|
||||||
|
<ClCompile Include="..\..\src\SSL.c" />
|
||||||
|
<ClCompile Include="..\..\src\Stream.c" />
|
||||||
|
<ClCompile Include="..\..\src\String.c" />
|
||||||
|
<ClCompile Include="..\..\src\SystemFonts.c" />
|
||||||
|
<ClCompile Include="..\..\src\TexturePack.c" />
|
||||||
|
<ClCompile Include="..\..\src\TouchUI.c" />
|
||||||
|
<ClCompile Include="..\..\src\Utils.c" />
|
||||||
|
<ClCompile Include="..\..\src\UWP\Platform_UWP.cpp" />
|
||||||
|
<ClCompile Include="..\..\src\UWP\Window_UWP.cpp" />
|
||||||
|
<ClCompile Include="..\..\src\Vectors.c" />
|
||||||
|
<ClCompile Include="..\..\src\Vorbis.c" />
|
||||||
|
<ClCompile Include="..\..\src\Widgets.c" />
|
||||||
|
<ClCompile Include="..\..\src\World.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\aesctr_drbg.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\aes_big_cbcdec.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\aes_big_cbcenc.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\aes_big_ctr.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\aes_big_ctrcbc.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\aes_big_dec.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\aes_big_enc.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\aes_common.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\aes_x86ni.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\aes_x86ni_cbcdec.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\aes_x86ni_cbcenc.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\aes_x86ni_ctr.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\aes_x86ni_ctrcbc.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\asn1enc.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ccm.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ccopy.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\chacha20_ct.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\chacha20_sse2.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\dec32be.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\dec32le.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\dec64be.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\dec64le.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\dig_oid.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\dig_size.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ecdsa_atr.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ecdsa_default_vrfy_asn1.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ecdsa_default_vrfy_raw.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ecdsa_i31_bits.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ecdsa_i31_vrfy_asn1.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ecdsa_i31_vrfy_raw.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ec_all_m31.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ec_c25519_i31.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ec_c25519_m31.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ec_c25519_m62.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ec_c25519_m64.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ec_curve25519.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ec_default.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ec_p256_m31.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ec_p256_m62.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ec_p256_m64.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ec_prime_i31.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ec_secp256r1.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ec_secp384r1.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ec_secp521r1.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\enc32be.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\enc32le.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\enc64be.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\enc64le.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\gcm.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ghash_ctmul.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ghash_ctmul64.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ghash_pclmul.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\hmac.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\hmac_ct.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\hmac_drbg.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_add.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_bitlen.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_decmod.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_decode.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_decred.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_encode.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_fmont.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_iszero.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_moddiv.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_modpow.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_modpow2.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_montmul.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_mulacc.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_muladd.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_ninv31.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_reduce.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_rshift.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_sub.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_tmont.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i32_div32.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i62_modpow2.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\md5.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\md5sha1.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\multihash.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\poly1305_ctmul.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\poly1305_ctmulq.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\prf.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\prf_md5sha1.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\prf_sha256.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\prf_sha384.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\rsa_default_pkcs1_vrfy.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\rsa_default_priv.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\rsa_default_pub.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\rsa_i31_pkcs1_vrfy.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\rsa_i31_priv.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\rsa_i31_pub.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\rsa_i62_pkcs1_vrfy.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\rsa_i62_priv.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\rsa_i62_pub.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\rsa_pkcs1_sig_unpad.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\sha1.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\sha2big.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\sha2small.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_client.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_client_default_rsapub.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_client_full.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_engine.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_engine_default_aescbc.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_engine_default_aesccm.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_engine_default_aesgcm.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_engine_default_chapol.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_engine_default_ec.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_engine_default_ecdsa.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_engine_default_rsavrfy.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_hashes.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_hs_client.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_io.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_rec_cbc.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_rec_ccm.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_rec_chapol.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_rec_gcm.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\x509_minimal.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\x509_minimal_full.c" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Image Include="Assets\Square150x150Logo.scale-200.png">
|
||||||
|
<DeploymentContent>true</DeploymentContent>
|
||||||
|
</Image>
|
||||||
|
<Image Include="Assets\Square44x44Logo.scale-200.png">
|
||||||
|
<DeploymentContent>true</DeploymentContent>
|
||||||
|
</Image>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
||||||
|
|
@ -0,0 +1,445 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<Filter Include="Common">
|
||||||
|
<UniqueIdentifier>a901236d-c8ef-4041-966f-46f17511e342</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="BearSSL">
|
||||||
|
<UniqueIdentifier>{93fa4266-80e4-4bbf-a7fa-c47e07da5098}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<AppxManifest Include="Package.appxmanifest" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="..\..\src\Animations.c" />
|
||||||
|
<ClCompile Include="..\..\src\Audio.c" />
|
||||||
|
<ClCompile Include="..\..\src\AxisLinesRenderer.c" />
|
||||||
|
<ClCompile Include="..\..\src\Bitmap.c" />
|
||||||
|
<ClCompile Include="..\..\src\Block.c" />
|
||||||
|
<ClCompile Include="..\..\src\BlockPhysics.c" />
|
||||||
|
<ClCompile Include="..\..\src\Builder.c" />
|
||||||
|
<ClCompile Include="..\..\src\Camera.c" />
|
||||||
|
<ClCompile Include="..\..\src\Chat.c" />
|
||||||
|
<ClCompile Include="..\..\src\Commands.c" />
|
||||||
|
<ClCompile Include="..\..\src\Deflate.c" />
|
||||||
|
<ClCompile Include="..\..\src\Drawer.c" />
|
||||||
|
<ClCompile Include="..\..\src\Drawer2D.c" />
|
||||||
|
<ClCompile Include="..\..\src\Entity.c" />
|
||||||
|
<ClCompile Include="..\..\src\EntityComponents.c" />
|
||||||
|
<ClCompile Include="..\..\src\EntityRenderers.c" />
|
||||||
|
<ClCompile Include="..\..\src\EnvRenderer.c" />
|
||||||
|
<ClCompile Include="..\..\src\Event.c" />
|
||||||
|
<ClCompile Include="..\..\src\ExtMath.c" />
|
||||||
|
<ClCompile Include="..\..\src\FancyLighting.c" />
|
||||||
|
<ClCompile Include="..\..\src\Formats.c" />
|
||||||
|
<ClCompile Include="..\..\src\Game.c" />
|
||||||
|
<ClCompile Include="..\..\src\GameVersion.c" />
|
||||||
|
<ClCompile Include="..\..\src\Generator.c" />
|
||||||
|
<ClCompile Include="..\..\src\Gui.c" />
|
||||||
|
<ClCompile Include="..\..\src\HeldBlockRenderer.c" />
|
||||||
|
<ClCompile Include="..\..\src\Http_Worker.c" />
|
||||||
|
<ClCompile Include="..\..\src\Input.c" />
|
||||||
|
<ClCompile Include="..\..\src\InputHandler.c" />
|
||||||
|
<ClCompile Include="..\..\src\Inventory.c" />
|
||||||
|
<ClCompile Include="..\..\src\IsometricDrawer.c" />
|
||||||
|
<ClCompile Include="..\..\src\Launcher.c" />
|
||||||
|
<ClCompile Include="..\..\src\LBackend.c" />
|
||||||
|
<ClCompile Include="..\..\src\LBackend_Android.c" />
|
||||||
|
<ClCompile Include="..\..\src\Lighting.c" />
|
||||||
|
<ClCompile Include="..\..\src\Logger.c" />
|
||||||
|
<ClCompile Include="..\..\src\LScreens.c" />
|
||||||
|
<ClCompile Include="..\..\src\LWeb.c" />
|
||||||
|
<ClCompile Include="..\..\src\LWidgets.c" />
|
||||||
|
<ClCompile Include="..\..\src\MapRenderer.c" />
|
||||||
|
<ClCompile Include="..\..\src\MenuOptions.c" />
|
||||||
|
<ClCompile Include="..\..\src\Menus.c" />
|
||||||
|
<ClCompile Include="..\..\src\Model.c" />
|
||||||
|
<ClCompile Include="..\..\src\Options.c" />
|
||||||
|
<ClCompile Include="..\..\src\PackedCol.c" />
|
||||||
|
<ClCompile Include="..\..\src\Particle.c" />
|
||||||
|
<ClCompile Include="..\..\src\Physics.c" />
|
||||||
|
<ClCompile Include="..\..\src\Picking.c" />
|
||||||
|
<ClCompile Include="..\..\src\Protocol.c" />
|
||||||
|
<ClCompile Include="..\..\src\Queue.c" />
|
||||||
|
<ClCompile Include="..\..\src\Resources.c" />
|
||||||
|
<ClCompile Include="..\..\src\Screens.c" />
|
||||||
|
<ClCompile Include="..\..\src\SelectionBox.c" />
|
||||||
|
<ClCompile Include="..\..\src\SelOutlineRenderer.c" />
|
||||||
|
<ClCompile Include="..\..\src\Server.c" />
|
||||||
|
<ClCompile Include="..\..\src\SSL.c" />
|
||||||
|
<ClCompile Include="..\..\src\Stream.c" />
|
||||||
|
<ClCompile Include="..\..\src\String.c" />
|
||||||
|
<ClCompile Include="..\..\src\SystemFonts.c" />
|
||||||
|
<ClCompile Include="..\..\src\TexturePack.c" />
|
||||||
|
<ClCompile Include="..\..\src\TouchUI.c" />
|
||||||
|
<ClCompile Include="..\..\src\Utils.c" />
|
||||||
|
<ClCompile Include="..\..\src\Vectors.c" />
|
||||||
|
<ClCompile Include="..\..\src\Vorbis.c" />
|
||||||
|
<ClCompile Include="..\..\src\Widgets.c" />
|
||||||
|
<ClCompile Include="..\..\src\World.c" />
|
||||||
|
<ClCompile Include="..\..\src\Graphics_D3D11.c" />
|
||||||
|
<ClCompile Include="..\..\src\UWP\Platform_UWP.cpp" />
|
||||||
|
<ClCompile Include="..\..\src\UWP\Window_UWP.cpp" />
|
||||||
|
<ClCompile Include="..\..\src\Audio_OpenAL.c" />
|
||||||
|
<ClCompile Include="..\..\src\Certs.c" />
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\aes_big_cbcdec.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\aes_big_cbcenc.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\aes_big_ctr.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\aes_big_ctrcbc.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\aes_big_dec.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\aes_big_enc.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\aes_common.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\aes_x86ni.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\aes_x86ni_cbcdec.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\aes_x86ni_cbcenc.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\aes_x86ni_ctr.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\aes_x86ni_ctrcbc.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\aesctr_drbg.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\asn1enc.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ccm.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ccopy.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\chacha20_ct.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\chacha20_sse2.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\dec32be.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\dec32le.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\dec64be.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\dec64le.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\dig_oid.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\dig_size.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ec_all_m31.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ec_c25519_i31.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ec_c25519_m31.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ec_c25519_m62.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ec_c25519_m64.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ec_curve25519.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ec_default.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ec_p256_m31.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ec_p256_m62.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ec_p256_m64.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ec_prime_i31.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ec_secp256r1.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ec_secp384r1.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ec_secp521r1.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ecdsa_atr.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ecdsa_default_vrfy_asn1.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ecdsa_default_vrfy_raw.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ecdsa_i31_bits.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ecdsa_i31_vrfy_asn1.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ecdsa_i31_vrfy_raw.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\enc32be.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\enc32le.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\enc64be.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\enc64le.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\gcm.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ghash_ctmul.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ghash_ctmul64.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ghash_pclmul.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\hmac.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\hmac_ct.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\hmac_drbg.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_add.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_bitlen.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_decmod.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_decode.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_decred.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_encode.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_fmont.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_iszero.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_moddiv.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_modpow.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_modpow2.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_montmul.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_mulacc.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_muladd.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_ninv31.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_reduce.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_rshift.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_sub.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i31_tmont.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i32_div32.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\i62_modpow2.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\md5.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\md5sha1.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\multihash.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\poly1305_ctmul.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\poly1305_ctmulq.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\prf.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\prf_md5sha1.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\prf_sha256.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\prf_sha384.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\rsa_default_pkcs1_vrfy.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\rsa_default_priv.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\rsa_default_pub.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\rsa_i31_pkcs1_vrfy.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\rsa_i31_priv.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\rsa_i31_pub.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\rsa_i62_pkcs1_vrfy.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\rsa_i62_priv.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\rsa_i62_pub.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\rsa_pkcs1_sig_unpad.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\sha1.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\sha2big.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\sha2small.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_client.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_client_default_rsapub.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_client_full.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_engine.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_engine_default_aescbc.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_engine_default_aesccm.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_engine_default_aesgcm.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_engine_default_chapol.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_engine_default_ec.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_engine_default_ecdsa.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_engine_default_rsavrfy.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_hashes.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_hs_client.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_io.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_rec_cbc.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_rec_ccm.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_rec_chapol.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\ssl_rec_gcm.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\x509_minimal.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\third_party\bearssl\x509_minimal_full.c">
|
||||||
|
<Filter>BearSSL</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Image Include="Assets\Square44x44Logo.scale-200.png" />
|
||||||
|
<Image Include="Assets\Square150x150Logo.scale-200.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
|
|
@ -0,0 +1,50 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<Package
|
||||||
|
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
|
||||||
|
xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
|
||||||
|
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
|
||||||
|
IgnorableNamespaces="uap mp">
|
||||||
|
|
||||||
|
<Identity
|
||||||
|
Name="64f1d536-965b-4190-90d3-47d861786f88"
|
||||||
|
Publisher="CN=ClassiCube"
|
||||||
|
Version="1.0.0.0" />
|
||||||
|
|
||||||
|
<mp:PhoneIdentity PhoneProductId="64f1d536-965b-4190-90d3-47d861786f88" PhonePublisherId="00000000-0000-0000-0000-000000000000"/>
|
||||||
|
|
||||||
|
<Properties>
|
||||||
|
<DisplayName>ClassiCube-UWP</DisplayName>
|
||||||
|
<PublisherDisplayName>ClassiCube</PublisherDisplayName>
|
||||||
|
<Logo>Assets\StoreLogo.png</Logo>
|
||||||
|
</Properties>
|
||||||
|
|
||||||
|
<Dependencies>
|
||||||
|
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
|
||||||
|
</Dependencies>
|
||||||
|
|
||||||
|
<Resources>
|
||||||
|
<Resource Language="x-generate"/>
|
||||||
|
</Resources>
|
||||||
|
|
||||||
|
<Applications>
|
||||||
|
<Application Id="App"
|
||||||
|
Executable="$targetnametoken$.exe"
|
||||||
|
EntryPoint="ClassiCube_UWP.App">
|
||||||
|
<uap:VisualElements
|
||||||
|
DisplayName="ClassiCube-UWP"
|
||||||
|
Description="ClassiCube-UWP"
|
||||||
|
BackgroundColor="transparent" Square44x44Logo="Assets\Square44x44Logo.png" Square150x150Logo="Assets\Square150x150Logo.png">
|
||||||
|
<uap:DefaultTile>
|
||||||
|
<uap:ShowNameOnTiles>
|
||||||
|
<uap:ShowOn Tile="square150x150Logo"/>
|
||||||
|
</uap:ShowNameOnTiles>
|
||||||
|
</uap:DefaultTile>
|
||||||
|
</uap:VisualElements>
|
||||||
|
</Application>
|
||||||
|
</Applications>
|
||||||
|
|
||||||
|
<Capabilities>
|
||||||
|
<Capability Name="internetClient" />
|
||||||
|
</Capabilities>
|
||||||
|
</Package>
|
||||||
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
|
@ -0,0 +1,42 @@
|
||||||
|
TARGET := ClassiCube-amiga
|
||||||
|
BUILD_DIR := build/amiga
|
||||||
|
SOURCE_DIRS := src src/amiga
|
||||||
|
|
||||||
|
S_FILES := $(foreach dir,$(SOURCE_DIRS),$(wildcard $(dir)/*.S))
|
||||||
|
C_FILES := $(foreach dir,$(SOURCE_DIRS),$(wildcard $(dir)/*.c))
|
||||||
|
OBJS := $(addprefix $(BUILD_DIR)/, $(notdir $(C_FILES:%.c=%.o) $(S_FILES:%.S=%.o)))
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# Code generation
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
CC = vc +aos68k
|
||||||
|
CFLAGS = -rmcfg-amiga-softfloat -O1 -DPLAT_AMIGA
|
||||||
|
|
||||||
|
AS = vasmm68k_mot
|
||||||
|
ASFLAGS = -Fvobj -m68000 -no-fpu
|
||||||
|
|
||||||
|
LDFLAGS = $(CFLAGS)
|
||||||
|
LDLIBS = -lamiga -lmsoft
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# Main targets
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
default: $(BUILD_DIR) $(TARGET)
|
||||||
|
|
||||||
|
$(BUILD_DIR):
|
||||||
|
mkdir -p $(BUILD_DIR)
|
||||||
|
|
||||||
|
$(TARGET): $(OBJS)
|
||||||
|
$(CC) $(LDFLAGS) -final -o $@ $^ $(LDLIBS)
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# object generation
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
$(BUILD_DIR)/%.o : src/%.c
|
||||||
|
$(CC) $(CFLAGS) -c -o $@ $<
|
||||||
|
|
||||||
|
$(BUILD_DIR)/%.o : src/amiga/%.c
|
||||||
|
$(CC) $(CFLAGS) -c -o $@ $<
|
||||||
|
|
@ -0,0 +1,50 @@
|
||||||
|
TARGET := ClassiCube-amiga
|
||||||
|
BUILD_DIR := build/amiga_68k
|
||||||
|
SOURCE_DIRS := src src/amiga
|
||||||
|
|
||||||
|
S_FILES := $(foreach dir,$(SOURCE_DIRS),$(wildcard $(dir)/*.S))
|
||||||
|
C_FILES := $(foreach dir,$(SOURCE_DIRS),$(wildcard $(dir)/*.c))
|
||||||
|
OBJS := $(addprefix $(BUILD_DIR)/, $(notdir $(C_FILES:%.c=%.o) $(S_FILES:%.S=%.o)))
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# Code generation
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
AS := m68k-amigaos-as
|
||||||
|
CC := m68k-amigaos-gcc
|
||||||
|
CXX := m68k-amigaos-g++
|
||||||
|
CFLAGS := -O1 -fno-math-errno -DPLAT_AMIGA -DCC_BUILD_NOFPU
|
||||||
|
|
||||||
|
# Dependency tracking
|
||||||
|
DEPFLAGS = -MT $@ -MMD -MP -MF $(BUILD_DIR)/$*.d
|
||||||
|
DEPFILES := $(OBJS:%.o=%.d)
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# main targets
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
default: $(BUILD_DIR) $(TARGET).exe
|
||||||
|
|
||||||
|
$(BUILD_DIR):
|
||||||
|
mkdir -p $(BUILD_DIR)
|
||||||
|
|
||||||
|
$(TARGET).exe: $(C_OBJECTS)
|
||||||
|
$(CC) $(LDFLAGS) -o $(TARGET).exe $(C_OBJECTS)
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# object generation
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
$(BUILD_DIR)/%.o : src/amiga/%.S
|
||||||
|
$(AS) $< -o $@
|
||||||
|
|
||||||
|
$(BUILD_DIR)/%.o : src/%.c
|
||||||
|
$(CC) $(CFLAGS) $(DEPFLAGS) -S -c $< -o $@
|
||||||
|
|
||||||
|
$(BUILD_DIR)/%.o : src/amiga/%.c
|
||||||
|
$(CC) $(CFLAGS) $(DEPFLAGS) -S -c $< -o $@
|
||||||
|
|
||||||
|
# Dependency tracking
|
||||||
|
$(DEPFILES):
|
||||||
|
|
||||||
|
include $(wildcard $(DEPFILES))
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
TARGET := ClassiCube-atari
|
||||||
|
BUILD_DIR := build/atari_st
|
||||||
|
SOURCE_DIRS := src src/atari_st
|
||||||
|
|
||||||
|
S_FILES := $(foreach dir,$(SOURCE_DIRS),$(wildcard $(dir)/*.S))
|
||||||
|
C_FILES := $(foreach dir,$(SOURCE_DIRS),$(wildcard $(dir)/*.c))
|
||||||
|
OBJS := $(addprefix $(BUILD_DIR)/, $(notdir $(C_FILES:%.c=%.o) $(S_FILES:%.S=%.o)))
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# Code generation
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
CC = vc +tos
|
||||||
|
CFLAGS = -O1 -DPLAT_ATARIOS
|
||||||
|
|
||||||
|
AS = vasmm68k_mot
|
||||||
|
ASFLAGS = -Fvobj -m68000 -no-fpu
|
||||||
|
|
||||||
|
LDFLAGS = $(CFLAGS)
|
||||||
|
LDLIBS = -lm
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# Main targets
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
default: $(BUILD_DIR) $(TARGET).tos
|
||||||
|
|
||||||
|
$(BUILD_DIR):
|
||||||
|
mkdir -p $(BUILD_DIR)
|
||||||
|
|
||||||
|
$(TARGET).tos: $(OBJS)
|
||||||
|
$(CC) $(LDFLAGS) -final -o $@ $^ $(LDLIBS)
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# object generation
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
$(BUILD_DIR)/%.o : src/%.c
|
||||||
|
$(CC) $(CFLAGS) -c -o $@ $<
|
||||||
|
|
||||||
|
$(BUILD_DIR)/%.o : src/atari_st/%.c
|
||||||
|
$(CC) $(CFLAGS) -c -o $@ $<
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
void Main()
|
||||||
|
{
|
||||||
|
Console.WriteLine("static cc_uint8 font_bitmap[][8] = {");
|
||||||
|
using (Bitmap bmp = new Bitmap(@"C:\classicube-dev\default.png"))
|
||||||
|
{
|
||||||
|
for (int CY = 0; CY < 16; CY++)
|
||||||
|
for (int CX = 0; CX < 16; CX++)
|
||||||
|
DecodeTile(bmp, CX, CY);
|
||||||
|
}
|
||||||
|
Console.WriteLine("}");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void DecodeTile(Bitmap bmp, int cx, int cy) {
|
||||||
|
int c = (cy << 4) | cx;
|
||||||
|
if (c <= 32 || c >= 127) return;
|
||||||
|
|
||||||
|
int X = cx * 8, Y = cy * 8;
|
||||||
|
|
||||||
|
Console.Write("\t{ ");
|
||||||
|
|
||||||
|
for (int y = Y; y < Y + 8; y++) {
|
||||||
|
uint mask = 0;
|
||||||
|
int shift = 0;
|
||||||
|
|
||||||
|
for (int x = X; x < X + 8; x++, shift++) {
|
||||||
|
Color P = bmp.GetPixel(x, y);
|
||||||
|
|
||||||
|
if (P.A == 0) {
|
||||||
|
mask |= 0u << shift;
|
||||||
|
} else if (P.R == 255 && P.G == 255 && P.B == 255 && P.A == 255) {
|
||||||
|
mask |= 1u << shift;
|
||||||
|
} else {
|
||||||
|
throw new InvalidOperationException("unsupported colour" + P);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
string suffix = y == Y + 7 ? " " : ",";
|
||||||
|
Console.Write("0x" + mask.ToString("X2") + suffix);
|
||||||
|
}
|
||||||
|
Console.WriteLine("}, /* " + (char)c + " */");
|
||||||
|
}
|
||||||
|
|
@ -1,64 +0,0 @@
|
||||||
from http.server import HTTPServer, SimpleHTTPRequestHandler
|
|
||||||
import os
|
|
||||||
import subprocess
|
|
||||||
|
|
||||||
build_files = {
|
|
||||||
'/ClassiCube.exe' : 'cc-w32-d3d.exe', '/ClassiCube.opengl.exe' : 'cc-w32-ogl.exe',
|
|
||||||
'/ClassiCube.64.exe' : 'cc-w64-d3d.exe', '/ClassiCube.64-opengl.exe' : 'cc-w64-ogl.exe',
|
|
||||||
'/ClassiCube.32' : 'cc-nix32', '/ClassiCube' : 'cc-nix64',
|
|
||||||
'/ClassiCube.osx' : 'cc-osx32', '/ClassiCube.64.osx' : 'cc-osx64',
|
|
||||||
'/ClassiCube.js' : 'cc.js', '/ClassiCube.apk' : 'cc.apk',
|
|
||||||
'/ClassiCube.rpi' : 'cc-rpi',
|
|
||||||
'/cc-nix32-gl2' : 'cc-nix32-gl2', '/cc-nix64-gl2' : 'cc-nix64-gl2',
|
|
||||||
'/cc-osx32-gl2' : 'cc-osx32-gl2', '/cc-osx64-gl2' : 'cc-osx64-gl2',
|
|
||||||
}
|
|
||||||
|
|
||||||
release_files = {
|
|
||||||
'/win32' : 'win32/ClassiCube.exe', '/win64' : 'win64/ClassiCube.exe',
|
|
||||||
'/osx32' : 'osx32/ClassiCube.tar.gz', '/osx64' : 'osx64/ClassiCube.tar.gz',
|
|
||||||
'/mac32' : 'mac32/ClassiCube.tar.gz', '/mac64' : 'mac64/ClassiCube.tar.gz',
|
|
||||||
'/nix32' : 'nix32/ClassiCube.tar.gz', '/nix64' : 'nix64/ClassiCube.tar.gz',
|
|
||||||
'/rpi32' : 'rpi32/ClassiCube.tar.gz',
|
|
||||||
}
|
|
||||||
|
|
||||||
def run_script(file):
|
|
||||||
args = ["sh", file]
|
|
||||||
su = subprocess.Popen(args)
|
|
||||||
return su.wait()
|
|
||||||
|
|
||||||
class Handler(SimpleHTTPRequestHandler):
|
|
||||||
|
|
||||||
def serve_script(self, file, msg):
|
|
||||||
ret = run_script(file)
|
|
||||||
self.send_response(200)
|
|
||||||
self.end_headers()
|
|
||||||
self.wfile.write(msg % ret)
|
|
||||||
|
|
||||||
def do_GET(self):
|
|
||||||
if self.path in build_files:
|
|
||||||
self.serve_exe('client/src/' + build_files[self.path])
|
|
||||||
elif self.path in release_files:
|
|
||||||
self.serve_exe('client/release/' + release_files[self.path])
|
|
||||||
elif self.path == '/rebuild':
|
|
||||||
self.serve_script('build.sh', 'Rebuild client (%s)')
|
|
||||||
elif self.path == '/release':
|
|
||||||
self.serve_script('build_release.sh', 'Package release (%s)')
|
|
||||||
else:
|
|
||||||
self.send_error(404, "Unknown action")
|
|
||||||
return
|
|
||||||
|
|
||||||
def serve_exe(self, path):
|
|
||||||
try:
|
|
||||||
f = open(path, 'rb')
|
|
||||||
fs = os.fstat(f.fileno())
|
|
||||||
self.send_response(200)
|
|
||||||
self.send_header("Content-type", "application/octet-stream")
|
|
||||||
self.send_header("Content-Length", str(fs[6]))
|
|
||||||
self.end_headers()
|
|
||||||
self.copyfile(f, self.wfile)
|
|
||||||
f.close()
|
|
||||||
except IOError:
|
|
||||||
self.send_error(404, "File not found")
|
|
||||||
|
|
||||||
httpd = HTTPServer(('', 80), Handler)
|
|
||||||
httpd.serve_forever()
|
|
||||||
|
|
@ -1,267 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# These build instructions are for ubuntu. Other linux distributions may have saner behaviour.
|
|
||||||
# The build script relies on the following assumptions:
|
|
||||||
# - You have already cloned ClassiCube from github
|
|
||||||
# - The root folder is ~/client/ (i.e. folder layout is ~/client/.git/, ~/client/src/, etc)
|
|
||||||
# First you need to install these packages: gcc, i686-w64-mingw32-gcc and x86_64-w64-mingw32-gcc
|
|
||||||
#
|
|
||||||
# You then need to install these packages: libx11-dev and libgl1-mesa-dev
|
|
||||||
# - if 32 bit, also install the 64 bit variants of all these packages (e.g. libx11-dev:amd64)
|
|
||||||
# - if 64 bit, also install the 32 bit variants of all these packages (e.g. libx11-dev:i386)
|
|
||||||
#
|
|
||||||
# However! You may find that with some ubuntu versions, installing the alternate
|
|
||||||
# bit variant of libgl1-mesa-dev uninstalls your current package.
|
|
||||||
# To fix this, first reinstall the normal libgl1-mesa-dev package
|
|
||||||
# The alternate bit .so files should have been left behind in the mesa folder, so adding a symlink should make it compile again
|
|
||||||
# - for 32 bit: ln -sf /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 /usr/lib/x86_64-linux-gnu/libGL.so
|
|
||||||
# - for 64 bit: ln -sf /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
|
|
||||||
|
|
||||||
ROOT_DIR=~/client # can be changed
|
|
||||||
ALL_FLAGS="-O1 -s -fno-stack-protector -fno-math-errno -Qn -w"
|
|
||||||
|
|
||||||
# log file that errors are written to
|
|
||||||
ERRS_FILE=$ROOT_DIR/cc_errors.txt
|
|
||||||
rm "$ERRS_FILE"
|
|
||||||
|
|
||||||
# ----------------------------- compile windows
|
|
||||||
# I installed gcc-mingw-w64-i686 and gcc-mingw-w64-x86-64 packages
|
|
||||||
WIN32_CC="i686-w64-mingw32-gcc"
|
|
||||||
WIN64_CC="x86_64-w64-mingw32-gcc"
|
|
||||||
WIN32_FLAGS="-mwindows -nostartfiles -Wl,-e_main_real -DCC_NOMAIN"
|
|
||||||
WIN64_FLAGS="-mwindows -nostartfiles -Wl,-emain_real -DCC_NOMAIN"
|
|
||||||
|
|
||||||
build_win32() {
|
|
||||||
echo "Building win32.."
|
|
||||||
cp $ROOT_DIR/misc/windows/CCicon_32.res $ROOT_DIR/src/CCicon_32.res
|
|
||||||
|
|
||||||
$WIN32_CC *.c $ALL_FLAGS $WIN32_FLAGS -o cc-w32-d3d.exe CCicon_32.res -DCC_COMMIT_SHA=\"$LATEST\" -lwinmm -limagehlp
|
|
||||||
if [ $? -ne 0 ]; then echo "Failed to compile Windows 32 bit" >> "$ERRS_FILE"; fi
|
|
||||||
$WIN32_CC *.c $ALL_FLAGS $WIN32_FLAGS -o cc-w32-ogl.exe CCicon_32.res -DCC_COMMIT_SHA=\"$LATEST\" -DCC_BUILD_MANUAL -DCC_BUILD_WIN -DCC_BUILD_GL -DCC_BUILD_WINGUI -DCC_BUILD_WGL -DCC_BUILD_WINMM -DCC_BUILD_WININET -lwinmm -limagehlp -lopengl32
|
|
||||||
if [ $? -ne 0 ]; then echo "Failed to compile Windows 32 bit (OpenGL)" >> "$ERRS_FILE"; fi
|
|
||||||
$WIN32_CC *.c $ALL_FLAGS $WIN32_FLAGS -o cc-w32-d3d11.exe CCicon_32.res -DCC_COMMIT_SHA=\"$LATEST\" -DCC_BUILD_MANUAL -DCC_BUILD_WIN -DCC_BUILD_D3D11 -DCC_BUILD_WINGUI -DCC_BUILD_WGL -DCC_BUILD_WINMM -DCC_BUILD_WININET -lwinmm -limagehlp
|
|
||||||
if [ $? -ne 0 ]; then echo "Failed to compile Windows 32 bit (Direct3D11)" >> "$ERRS_FILE"; fi
|
|
||||||
|
|
||||||
# mingw defaults to i686, but some really old CPUs only support i586
|
|
||||||
$WIN32_CC *.c $ALL_FLAGS $WIN32_FLAGS -march=i586 -o cc-w9x-ogl.exe CCicon_32.res -DCC_COMMIT_SHA=\"$LATEST\" -DCC_BUILD_MANUAL -DCC_BUILD_WIN -DCC_BUILD_GL -DCC_BUILD_WINGUI -DCC_BUILD_WGL -DCC_BUILD_WINMM -DCC_BUILD_HTTPCLIENT -DCC_BUILD_SCHANNEL -lwinmm -limagehlp -lopengl32
|
|
||||||
if [ $? -ne 0 ]; then echo "Failed to compile Windows 9x (OpenGL)" >> "$ERRS_FILE"; fi
|
|
||||||
}
|
|
||||||
|
|
||||||
build_win64() {
|
|
||||||
echo "Building win64.."
|
|
||||||
cp $ROOT_DIR/misc/windows/CCicon_64.res $ROOT_DIR/src/CCicon_64.res
|
|
||||||
|
|
||||||
$WIN64_CC *.c $ALL_FLAGS $WIN64_FLAGS -o cc-w64-d3d.exe CCicon_64.res -DCC_COMMIT_SHA=\"$LATEST\" -lwinmm -limagehlp
|
|
||||||
if [ $? -ne 0 ]; then echo "Failed to compile Windows 64 bit" >> "$ERRS_FILE"; fi
|
|
||||||
$WIN64_CC *.c $ALL_FLAGS $WIN64_FLAGS -o cc-w64-ogl.exe CCicon_64.res -DCC_COMMIT_SHA=\"$LATEST\" -DCC_BUILD_MANUAL -DCC_BUILD_WIN -DCC_BUILD_GL -DCC_BUILD_WINGUI -DCC_BUILD_WGL -DCC_BUILD_WINMM -DCC_BUILD_WININET -lwinmm -limagehlp -lopengl32
|
|
||||||
if [ $? -ne 0 ]; then echo "Failed to compile Windows 64 bit (OpenGL)" >> "$ERRS_FILE"; fi
|
|
||||||
$WIN64_CC *.c $ALL_FLAGS $WIN64_FLAGS -o cc-w64-d3d11.exe CCicon_64.res -DCC_COMMIT_SHA=\"$LATEST\" -DCC_BUILD_MANUAL -DCC_BUILD_WIN -DCC_BUILD_D3D11 -DCC_BUILD_WINGUI -DCC_BUILD_WGL -DCC_BUILD_WINMM -DCC_BUILD_WININET -lwinmm -limagehlp
|
|
||||||
if [ $? -ne 0 ]; then echo "Failed to compile Windows 64 bit (Direct3D11)" >> "$ERRS_FILE"; fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# ----------------------------- compile linux
|
|
||||||
# I installed gcc and gcc-multilib packages
|
|
||||||
NIX32_FLAGS="-no-pie -fno-pie -m32 -fvisibility=hidden -rdynamic -DCC_BUILD_ICON"
|
|
||||||
NIX64_FLAGS="-no-pie -fno-pie -m64 -fvisibility=hidden -rdynamic -DCC_BUILD_ICON"
|
|
||||||
|
|
||||||
build_nix32() {
|
|
||||||
echo "Building linux32.."
|
|
||||||
rm cc-nix32
|
|
||||||
gcc *.c $ALL_FLAGS $NIX32_FLAGS -DCC_COMMIT_SHA=\"$LATEST\" -o cc-nix32 -lX11 -lXi -lpthread -lGL -lm -ldl
|
|
||||||
if [ $? -ne 0 ]; then echo "Failed to compile Linux 32 bit" >> "$ERRS_FILE"; fi
|
|
||||||
gcc *.c $ALL_FLAGS $NIX32_FLAGS -DCC_COMMIT_SHA=\"$LATEST\" -DCC_BUILD_GLMODERN -o cc-nix32-gl2 -lX11 -lXi -lpthread -lGL -lm -ldl
|
|
||||||
if [ $? -ne 0 ]; then echo "Failed to compile Linux 32 bit (OpenGL Modern)" >> "$ERRS_FILE"; fi
|
|
||||||
}
|
|
||||||
|
|
||||||
build_nix64() {
|
|
||||||
echo "Building linux64.."
|
|
||||||
rm cc-nix64
|
|
||||||
gcc *.c $ALL_FLAGS $NIX64_FLAGS -DCC_COMMIT_SHA=\"$LATEST\" -o cc-nix64 -lX11 -lXi -lpthread -lGL -lm -ldl
|
|
||||||
if [ $? -ne 0 ]; then echo "Failed to compile Linux 64 bit" >> "$ERRS_FILE"; fi
|
|
||||||
gcc *.c $ALL_FLAGS $NIX64_FLAGS -DCC_COMMIT_SHA=\"$LATEST\" -DCC_BUILD_GLMODERN -o cc-nix64-gl2 -lX11 -lXi -lpthread -lGL -lm -ldl
|
|
||||||
if [ $? -ne 0 ]; then echo "Failed to compile Linux 64 bit (OpenGL Modern)" >> "$ERRS_FILE"; fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# ----------------------------- compile macOS
|
|
||||||
MAC32_CC="/home/buildbot/osx/target/bin/o32-clang"
|
|
||||||
MAC64_CC="/home/buildbot/osx/target/bin/o64-clang"
|
|
||||||
MACOS_FLAGS="-fvisibility=hidden -rdynamic -DCC_BUILD_ICON"
|
|
||||||
|
|
||||||
build_mac32() {
|
|
||||||
echo "Building mac32.."
|
|
||||||
rm cc-osx32
|
|
||||||
$MAC32_CC *.c $ALL_FLAGS $MACOS_FLAGS -DCC_COMMIT_SHA=\"$LATEST\" -o cc-osx32 -framework Carbon -framework AGL -framework OpenGL -framework IOKit -lgcc_s.1
|
|
||||||
if [ $? -ne 0 ]; then echo "Failed to compile macOS 32 bit" >> "$ERRS_FILE"; fi
|
|
||||||
$MAC32_CC *.c $ALL_FLAGS $MACOS_FLAGS -DCC_COMMIT_SHA=\"$LATEST\" -DCC_BUILD_GLMODERN -o cc-osx32-gl2 -framework Carbon -framework AGL -framework OpenGL -framework IOKit -lgcc_s.1
|
|
||||||
if [ $? -ne 0 ]; then echo "Failed to compile macOS 32 bit (OpenGL Modern)" >> "$ERRS_FILE"; fi
|
|
||||||
}
|
|
||||||
|
|
||||||
build_mac64() {
|
|
||||||
echo "Building mac64.."
|
|
||||||
rm cc-osx64
|
|
||||||
$MAC64_CC *.c interop_cocoa.m $ALL_FLAGS $MACOS_FLAGS -DCC_COMMIT_SHA=\"$LATEST\" -o cc-osx64 -framework Cocoa -framework OpenGL -framework IOKit -lobjc
|
|
||||||
if [ $? -ne 0 ]; then echo "Failed to compile macOS 64 bit" >> "$ERRS_FILE"; fi
|
|
||||||
$MAC64_CC *.c interop_cocoa.m $ALL_FLAGS $MACOS_FLAGS -DCC_COMMIT_SHA=\"$LATEST\" -DCC_BUILD_GLMODERN -o cc-osx64-gl2 -framework Cocoa -framework OpenGL -framework IOKit -lobjc
|
|
||||||
if [ $? -ne 0 ]; then echo "Failed to compile macOS 64 bit (OpenGL Modern)" >> "$ERRS_FILE"; fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# ----------------------------- compile web
|
|
||||||
# I installed emscripten per https://emscripten.org/docs/getting_started/downloads.html
|
|
||||||
WEB_CC="/home/buildbot/emsdk/emscripten/1.38.31/emcc"
|
|
||||||
|
|
||||||
build_web() {
|
|
||||||
echo "Building web.."
|
|
||||||
rm cc.js
|
|
||||||
$WEB_CC *.c -O1 -o cc.js --js-library interop_web.js -s WASM=0 -s LEGACY_VM_SUPPORT=1 -s ALLOW_MEMORY_GROWTH=1 -s ABORTING_MALLOC=0 -s ENVIRONMENT=web
|
|
||||||
if [ $? -ne 0 ]; then echo "Failed to compile Webclient" >> "$ERRS_FILE"; fi
|
|
||||||
# fix mouse wheel scrolling page not being properly prevented
|
|
||||||
# "[Intervention] Unable to preventDefault inside passive event listener due to target being treated as passive."
|
|
||||||
sed -i 's#eventHandler.useCapture);#{ useCapture: eventHandler.useCapture, passive: false });#g' cc.js
|
|
||||||
}
|
|
||||||
|
|
||||||
# ----------------------------- compile raspberry pi
|
|
||||||
# I cloned https://github.com/raspberrypi/tools to get prebuilt cross compilers
|
|
||||||
# Then I copied across various files/folders from /usr/include and /usr/lib from a real Raspberry pi as needed
|
|
||||||
RPI32_CC=~/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-gcc-4.8.3
|
|
||||||
RPI_FLAGS="-fvisibility=hidden -rdynamic -DCC_BUILD_ICON -DCC_BUILD_RPI"
|
|
||||||
# I cloned from https://github.com/abhiTronix/raspberry-pi-cross-compilers
|
|
||||||
RPI64_CC=~/rpi64/cross-pi-gcc-9.4.0-64/bin/aarch64-linux-gnu-gcc
|
|
||||||
|
|
||||||
build_rpi32() {
|
|
||||||
echo "Building rpi32.."
|
|
||||||
rm cc-rpi
|
|
||||||
$RPI32_CC *.c $ALL_FLAGS $RPI_FLAGS -I ~/rpi/include -L ~/rpi/lib -DCC_COMMIT_SHA=\"$LATEST\" -o cc-rpi -lGLESv2 -lEGL -lX11 -lXi -lm -lpthread -ldl -lrt -Wl,-rpath-link ~/rpi/lib
|
|
||||||
if [ $? -ne 0 ]; then echo "Failed to compile Raspberry Pi 32 bit" >> "$ERRS_FILE"; fi
|
|
||||||
}
|
|
||||||
|
|
||||||
build_rpi64() {
|
|
||||||
echo "Building rpi64.."
|
|
||||||
rm cc-rpi64
|
|
||||||
$RPI64_CC *.c $ALL_FLAGS $RPI_FLAGS -DCC_COMMIT_SHA=\"$LATEST\" -o cc-rpi64 -lGLESv2 -lEGL -lX11 -lXi -lm -lpthread -ldl
|
|
||||||
if [ $? -ne 0 ]; then echo "Failed to compile Raspberry Pi 64 bit" >> "$ERRS_FILE"; fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# ----------------------------- compile android
|
|
||||||
DROID_FLAGS="-fPIC -shared -s -O1 -fvisibility=hidden -rdynamic -funwind-tables"
|
|
||||||
DROID_LIBS="-lGLESv2 -lEGL -lm -landroid -llog"
|
|
||||||
NDK_ROOT="/home/buildbot/android/android-ndk-r22/toolchains/llvm/prebuilt/linux-x86_64/bin"
|
|
||||||
TOOLS_ROOT="/home/buildbot/android/sdk/build-tools/26.0.0"
|
|
||||||
SDK_ROOT="/home/buildbot/android/sdk/platforms/android-28"
|
|
||||||
|
|
||||||
build_android() {
|
|
||||||
echo "Building android.."
|
|
||||||
rm cc.apk cc-droid-arm_16 cc-droid-arm_32 cc-droid-arm_64 cc-droid-x86_32 cc-droid-x86_64
|
|
||||||
$NDK_ROOT/armv7a-linux-androideabi16-clang *.c $DROID_FLAGS -march=armv5 $DROID_LIBS -DCC_COMMIT_SHA=\"$LATEST\" -o cc-droid-arm_16
|
|
||||||
if [ $? -ne 0 ]; then echo "Failed to compile Android ARM-16" >> "$ERRS_FILE"; fi
|
|
||||||
$NDK_ROOT/armv7a-linux-androideabi16-clang *.c $DROID_FLAGS $DROID_LIBS -DCC_COMMIT_SHA=\"$LATEST\" -o cc-droid-arm_32
|
|
||||||
if [ $? -ne 0 ]; then echo "Failed to compile Android ARM-32" >> "$ERRS_FILE"; fi
|
|
||||||
$NDK_ROOT/aarch64-linux-android21-clang *.c $DROID_FLAGS $DROID_LIBS -DCC_COMMIT_SHA=\"$LATEST\" -o cc-droid-arm_64
|
|
||||||
if [ $? -ne 0 ]; then echo "Failed to compile Android ARM-64" >> "$ERRS_FILE"; fi
|
|
||||||
$NDK_ROOT/i686-linux-android16-clang *.c $DROID_FLAGS $DROID_LIBS -DCC_COMMIT_SHA=\"$LATEST\" -o cc-droid-x86_32
|
|
||||||
if [ $? -ne 0 ]; then echo "Failed to compile Android x86-32" >> "$ERRS_FILE"; fi
|
|
||||||
$NDK_ROOT/x86_64-linux-android21-clang *.c $DROID_FLAGS $DROID_LIBS -DCC_COMMIT_SHA=\"$LATEST\" -o cc-droid-x86_64
|
|
||||||
if [ $? -ne 0 ]; then echo "Failed to compile Android x86-64" >> "$ERRS_FILE"; fi
|
|
||||||
|
|
||||||
cd $ROOT_DIR/android/app/src/main
|
|
||||||
# remove old java temp files
|
|
||||||
rm -rf obj
|
|
||||||
mkdir obj
|
|
||||||
rm classes.dex
|
|
||||||
# copy required native libraries
|
|
||||||
rm -rf lib
|
|
||||||
mkdir lib lib/armeabi lib/armeabi-v7a lib/arm64-v8a lib/x86 lib/x86_64
|
|
||||||
cp $ROOT_DIR/src/cc-droid-arm_16 lib/armeabi/libclassicube.so
|
|
||||||
cp $ROOT_DIR/src/cc-droid-arm_32 lib/armeabi-v7a/libclassicube.so
|
|
||||||
cp $ROOT_DIR/src/cc-droid-arm_64 lib/arm64-v8a/libclassicube.so
|
|
||||||
cp $ROOT_DIR/src/cc-droid-x86_32 lib/x86/libclassicube.so
|
|
||||||
cp $ROOT_DIR/src/cc-droid-x86_64 lib/x86_64/libclassicube.so
|
|
||||||
|
|
||||||
# The following commands are for manually building an .apk, see
|
|
||||||
# https://spin.atomicobject.com/2011/08/22/building-android-application-bundles-apks-by-hand/
|
|
||||||
# https://github.com/cnlohr/rawdrawandroid/blob/master/Makefile
|
|
||||||
# https://stackoverflow.com/questions/41132753/how-can-i-build-an-android-apk-without-gradle-on-the-command-line
|
|
||||||
# https://github.com/skanti/Android-Manual-Build-Command-Line/blob/master/hello-jni/Makefile
|
|
||||||
# https://github.com/skanti/Android-Manual-Build-Command-Line/blob/master/hello-jni/CMakeLists.txt
|
|
||||||
|
|
||||||
# compile java files into multiple .class files
|
|
||||||
cd $ROOT_DIR/android/app/src/main/java/com/classicube
|
|
||||||
javac *.java -d $ROOT_DIR/android/app/src/main/obj -classpath $SDK_ROOT/android.jar
|
|
||||||
if [ $? -ne 0 ]; then echo "Failed to compile Android Java" >> "$ERRS_FILE"; fi
|
|
||||||
|
|
||||||
cd $ROOT_DIR/android/app/src/main
|
|
||||||
# compile the multiple .class files into one .dex file
|
|
||||||
$TOOLS_ROOT/dx --dex --output=obj/classes.dex ./obj
|
|
||||||
# create initial .apk with packaged version of resources
|
|
||||||
$TOOLS_ROOT/aapt package -f -M AndroidManifest.xml -S res -F obj/cc-unsigned.apk -I $SDK_ROOT/android.jar
|
|
||||||
# and add all the required files
|
|
||||||
cp obj/classes.dex classes.dex
|
|
||||||
$TOOLS_ROOT/aapt add -f obj/cc-unsigned.apk classes.dex lib/armeabi/libclassicube.so lib/armeabi-v7a/libclassicube.so lib/arm64-v8a/libclassicube.so lib/x86/libclassicube.so lib/x86_64/libclassicube.so
|
|
||||||
# sign the apk with debug key (https://stackoverflow.com/questions/16711233/)
|
|
||||||
cp obj/cc-unsigned.apk obj/cc-signed.apk
|
|
||||||
jarsigner -sigalg SHA1withRSA -digestalg SHA1 -keystore debug.keystore -storepass android -keypass android obj/cc-signed.apk androiddebugkey
|
|
||||||
# jarsigner -verbose
|
|
||||||
# create aligned .apk file
|
|
||||||
$TOOLS_ROOT/zipalign -f 4 obj/cc-signed.apk $ROOT_DIR/src/cc.apk
|
|
||||||
# restore to normal directory now that finished
|
|
||||||
cd $ROOT_DIR/src/
|
|
||||||
}
|
|
||||||
|
|
||||||
# ----------------------------- compile ios
|
|
||||||
IOS_CC="ios-cc"
|
|
||||||
IOS_LIBS="-framework OpenGLES -framework CoreGraphics -framework IOKit -framework CoreFoundation -framework Foundation -framework UIKit -framework QuartzCore -framework CFNetwork -lobjc"
|
|
||||||
IOS_FLAGS="-s -O1 -fvisibility=hidden -rdynamic -funwind-tables -arch armv7 -arch arm64"
|
|
||||||
|
|
||||||
build_ios() {
|
|
||||||
echo "Building ios.."
|
|
||||||
# IPHONEOS_DEPLOYMENT_TARGET=7.0 $IOS_CC *.c interop_ios.m $IOS_FLAGS $IOS_LIBS -o cc-ios
|
|
||||||
$IOS_CC *.c interop_ios.m $IOS_FLAGS $IOS_LIBS -o cc-ios
|
|
||||||
if [ $? -ne 0 ]; then echo "Failed to compile iOS" >> "$ERRS_FILE"; fi
|
|
||||||
|
|
||||||
mkdir Payload
|
|
||||||
mkdir Payload/ClassiCube.app
|
|
||||||
cp cc-ios Payload/ClassiCube.app/ClassiCube
|
|
||||||
# https://askubuntu.com/questions/681949/plutil-equivalent-in-ubuntu
|
|
||||||
plistutil -i $ROOT_DIR/ios/Info.plist -o Payload/ClassiCube.app/Info.plist -f bin
|
|
||||||
# copy across the icon files
|
|
||||||
cp $ROOT_DIR/ios/ClassiCube/Assets.xcassets/AppIcon.appiconset/CC_40.png "Payload/ClassiCube.app/AppIcon40x40~ipad.png"
|
|
||||||
cp $ROOT_DIR/ios/ClassiCube/Assets.xcassets/AppIcon.appiconset/CC_76.png "Payload/ClassiCube.app/AppIcon76x76~ipad.png"
|
|
||||||
cp $ROOT_DIR/ios/ClassiCube/Assets.xcassets/AppIcon.appiconset/CC_80.png "Payload/ClassiCube.app/AppIcon40x40@2x.png"
|
|
||||||
cp $ROOT_DIR/ios/ClassiCube/Assets.xcassets/AppIcon.appiconset/CC_80.png "Payload/ClassiCube.app/AppIcon40x40@2x~ipad.png"
|
|
||||||
cp $ROOT_DIR/ios/ClassiCube/Assets.xcassets/AppIcon.appiconset/CC_120.png "Payload/ClassiCube.app/AppIcon40x40@3x.png"
|
|
||||||
cp $ROOT_DIR/ios/ClassiCube/Assets.xcassets/AppIcon.appiconset/CC_120.png "Payload/ClassiCube.app/AppIcon60x60@2x.png"
|
|
||||||
cp $ROOT_DIR/ios/ClassiCube/Assets.xcassets/AppIcon.appiconset/CC_152.png "Payload/ClassiCube.app/AppIcon76x76@2x~ipad.png"
|
|
||||||
cp $ROOT_DIR/ios/ClassiCube/Assets.xcassets/AppIcon.appiconset/CC_167.png "Payload/ClassiCube.app/AppIcon83.5x83.5@2x~ipad.png"
|
|
||||||
cp $ROOT_DIR/ios/ClassiCube/Assets.xcassets/AppIcon.appiconset/CC_180.png "Payload/ClassiCube.app/AppIcon60x60@3x.png"
|
|
||||||
zip -r cc.ipa Payload
|
|
||||||
}
|
|
||||||
|
|
||||||
# ----------------------------- driver
|
|
||||||
cd $ROOT_DIR/src/
|
|
||||||
echo $PWD
|
|
||||||
git pull https://github.com/UnknownShadow200/ClassiCube.git
|
|
||||||
git fetch --all
|
|
||||||
git reset --hard origin/master
|
|
||||||
LATEST=$(git rev-parse --short HEAD)
|
|
||||||
|
|
||||||
run_timed() {
|
|
||||||
beg=`date +%s`
|
|
||||||
$1
|
|
||||||
end=`date +%s`
|
|
||||||
|
|
||||||
runtime=$((end-beg))
|
|
||||||
echo "Compiling took $runtime"
|
|
||||||
}
|
|
||||||
|
|
||||||
run_timed build_win32
|
|
||||||
run_timed build_win64
|
|
||||||
run_timed build_nix32
|
|
||||||
run_timed build_nix64
|
|
||||||
run_timed build_mac32
|
|
||||||
run_timed build_mac64
|
|
||||||
run_timed build_web
|
|
||||||
run_timed build_rpi32
|
|
||||||
run_timed build_rpi64
|
|
||||||
run_timed build_android
|
|
||||||
|
|
||||||
cd ~
|
|
||||||
python3 notify.py
|
|
||||||
|
|
@ -1,60 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# paths, change these as needed
|
|
||||||
SOURCE_DIR=~/client/src
|
|
||||||
MISC_DIR=~/client/misc
|
|
||||||
BUILDS_DIR=~/client/release
|
|
||||||
|
|
||||||
# ./ClassiCube
|
|
||||||
make_nix_tar() {
|
|
||||||
cp $SOURCE_DIR/$1 ClassiCube
|
|
||||||
chmod +x ClassiCube
|
|
||||||
tar -zcvf ClassiCube.tar.gz ClassiCube
|
|
||||||
rm ClassiCube
|
|
||||||
}
|
|
||||||
|
|
||||||
# ./ClassiCube.app/Info.plist
|
|
||||||
# ./ClassiCube.app/Contents/MacOS/ClassiCube
|
|
||||||
# ./ClassiCube.app/Resources/ClassiCube.icns
|
|
||||||
make_mac_tar() {
|
|
||||||
mkdir ClassiCube.app
|
|
||||||
mkdir ClassiCube.app/Contents
|
|
||||||
mkdir ClassiCube.app/Contents/MacOS
|
|
||||||
mkdir ClassiCube.app/Contents/Resources
|
|
||||||
|
|
||||||
cp $SOURCE_DIR/$1 ClassiCube.app/Contents/MacOS/ClassiCube
|
|
||||||
chmod +x ClassiCube.app/Contents/MacOS/ClassiCube
|
|
||||||
|
|
||||||
cp $MISC_DIR/info.plist ClassiCube.app/Contents/Info.plist
|
|
||||||
cp $MISC_DIR/CCIcon.icns ClassiCube.app/Contents/Resources/ClassiCube.icns
|
|
||||||
tar -zcvf ClassiCube.tar.gz ClassiCube.app
|
|
||||||
rm -rf ClassiCube.app
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
mkdir -p $BUILDS_DIR
|
|
||||||
mkdir -p $BUILDS_DIR/win32 $BUILDS_DIR/win64 $BUILDS_DIR/osx32 $BUILDS_DIR/osx64
|
|
||||||
mkdir -p $BUILDS_DIR/nix32 $BUILDS_DIR/nix64 $BUILDS_DIR/mac32 $BUILDS_DIR/mac64
|
|
||||||
mkdir -p $BUILDS_DIR/rpi32
|
|
||||||
|
|
||||||
# edge doesn't respect download attribute, and having ClassiCube.64.exe breaks plugins
|
|
||||||
cp $SOURCE_DIR/cc-w32-d3d.exe $BUILDS_DIR/win32/ClassiCube.exe
|
|
||||||
cp $SOURCE_DIR/cc-w64-d3d.exe $BUILDS_DIR/win64/ClassiCube.exe
|
|
||||||
|
|
||||||
# use tar to preserve chmod +x, so users don't have to manually do it
|
|
||||||
cd $BUILDS_DIR/osx32/
|
|
||||||
make_nix_tar cc-osx32
|
|
||||||
cd $BUILDS_DIR/osx64/
|
|
||||||
make_nix_tar cc-osx64
|
|
||||||
cd $BUILDS_DIR/nix32/
|
|
||||||
make_nix_tar cc-nix32
|
|
||||||
cd $BUILDS_DIR/nix64/
|
|
||||||
make_nix_tar cc-nix64
|
|
||||||
cd $BUILDS_DIR/rpi32/
|
|
||||||
make_nix_tar cc-rpi
|
|
||||||
|
|
||||||
# generate ClassiCube.app for mac users
|
|
||||||
cd $BUILDS_DIR/mac32/
|
|
||||||
make_mac_tar cc-osx32
|
|
||||||
cd $BUILDS_DIR/mac64/
|
|
||||||
make_mac_tar cc-osx64
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
||||||
import requests, re, datetime, json, time, os
|
|
||||||
# Any resemblence to any discord bots written by 123DMWM is purely coincidental. I swear.
|
|
||||||
|
|
||||||
# The URL of the discord channel webhook to notify
|
|
||||||
# You can generate a webhook by right clicking channel -> Edit Channel -> Webhooks
|
|
||||||
WEBHOOK_URL = ''
|
|
||||||
# The ID of the user you want to ping on a build failure
|
|
||||||
# You can get this by right clicking user -> Copy ID
|
|
||||||
# You may have to go to settings -> Appearance -> Check Developer Mode to see this option
|
|
||||||
TARGET_USER = ''
|
|
||||||
|
|
||||||
def notify_webhook(body):
|
|
||||||
try:
|
|
||||||
webhook_data = {
|
|
||||||
"username": "CC BuildBot",
|
|
||||||
"avatar_url": "https://static.classicube.net/img/cc-cube-small.png",
|
|
||||||
"content" : body
|
|
||||||
}
|
|
||||||
r = requests.post(WEBHOOK_URL, json=webhook_data)
|
|
||||||
print("BuildNotify response: " + r.text)
|
|
||||||
except Exception as e:
|
|
||||||
print("BuildNotify failed: %s" % (e))
|
|
||||||
|
|
||||||
cc_errors = None
|
|
||||||
try:
|
|
||||||
with open('client/cc_errors.txt', 'r') as file:
|
|
||||||
cc_errors = file.read()
|
|
||||||
except FileNotFoundError:
|
|
||||||
# nothing to as no compile errors
|
|
||||||
pass
|
|
||||||
|
|
||||||
if cc_errors:
|
|
||||||
notify_webhook('**Houston, we have a problem** <@%s>\n\n%s' % (TARGET_USER, cc_errors))
|
|
||||||
|
|
@ -2,8 +2,5 @@ This folder contains build scripts for automatically compiling ClassiCube
|
||||||
|
|
||||||
|File|Description|
|
|File|Description|
|
||||||
|--------|-------|
|
|--------|-------|
|
||||||
|buildbot.sh | Compiles the game to optimised executables (with icons) |
|
|
||||||
|buildbot_plugin.sh | Compiles specified plugin for various platforms |
|
|buildbot_plugin.sh | Compiles specified plugin for various platforms |
|
||||||
|buildtestplugin.sh | Example script for how to use buildbot_plugin.sh |
|
|buildtestplugin.sh | Example script for how to use buildbot_plugin.sh |
|
||||||
|makerelease.sh | Packages the executables to produce files for a release |
|
|
||||||
|notify.py | Notifies a user on Discord if buildbot fails |
|
|
||||||