platform_matrix.html 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  5. <head>
  6. <title>MegaZeux Platform Support Matrix</title>
  7. <script language="JavaScript">
  8. function note_link(note) {
  9. return '<a href="#note' + note + '">[' + note + ']</a>';
  10. }
  11. function defunct(_v) {
  12. // Historically supported platform
  13. return _v + note_link(1);
  14. }
  15. function _yes(_v="YES") {
  16. // Ideal
  17. return {c: "yes", v: _v};
  18. }
  19. function std(_v, note=0) {
  20. // Normal
  21. if(note) _v += note_link(note);
  22. return {c: "std", v: _v};
  23. }
  24. function subopt(_v="NO", note=0)
  25. {
  26. // Supoptimal, trivially fixable
  27. if(note) _v += note_link(note);
  28. return {c: "no2", v: _v};
  29. }
  30. function _FAULTY(_v="NO", note=0)
  31. {
  32. // Faulty, not trivially fixable
  33. if(note) _v += note_link(note);
  34. return {c: "no", v: _v};
  35. }
  36. // Some common values
  37. var yes = _yes();
  38. var no = std("NO");
  39. var no_mingw_stack_protector = subopt("NO", 4);
  40. var no_low_memory = subopt("NO", 5);
  41. var no_updater = subopt("NO", 6);
  42. var no_updater_unix = subopt("NO", 7);
  43. var no_sdl_3ds = std("NO", 9);
  44. var optional_sdl_wii = std("OPTIONAL", 10);
  45. var yes_but_8bpp = subopt("YES (8bpp)", 11);
  46. var no_gl_switch = subopt("NO", 12);
  47. var ZIP = _yes("ZIP");
  48. var DMG = _yes("DMG");
  49. var LHA = _yes("LHA");
  50. var xmp = std("xmp");
  51. var libvorbis = std("libvorbis");
  52. var tremor = std("tremor");
  53. var tremor_lowmem = std("tremor (lowmem)");
  54. var render_ctr = std("render_ctr");
  55. var render_nds = std("render_nds");
  56. var render_gp2x = std("render_gp2x");
  57. var render_gx = std("render_gx\nrender_xfb");
  58. var speed = "Speed";
  59. var size = "Size";
  60. var fields =
  61. {
  62. platform: "$PLATFORM",
  63. description: "Description",
  64. architecture: "Architecutre(s)<br />(Tested Only)",
  65. endian: "Endian",
  66. toolchain: "Toolchain",
  67. packaged: "Packaged",
  68. visibility: "Optimized Visibility" + note_link(3),
  69. stack_protector: "Stack Protector",
  70. layer_rendering: "Layer Rendering",
  71. module_engine: "Module Engine",
  72. ogg_vorbis: "Ogg Vorbis",
  73. optimization: "Optimization",
  74. sdl: "SDL",
  75. editor: "EDITOR",
  76. helpsys: "HELPSYS",
  77. audio: "AUDIO",
  78. software: "SOFTWARE",
  79. overlay: "SOFTSCALE",
  80. gl: "GL",
  81. glsl: "GLSL",
  82. updater: "UPDATER",
  83. modular: "MODULAR",
  84. png: "PNG",
  85. x11: "X11",
  86. hashtables: "HASH TABLES",
  87. loadsave_meter: "LOADSAVE_METER",
  88. };
  89. var archs =
  90. {
  91. /*
  92. // NOTE: If a field isn't applicable to your arch, it can be omitted entirely.
  93. // An omitted field will appear greyed out and read "N/A" in the table.
  94. your_arch_here:
  95. {
  96. platform: // config platform name
  97. description: // short description
  98. architecture: // target processor architecture
  99. endian: // "Little" or "Big"
  100. toolchain: // gcc/clang/binutils/etc versions
  101. packaged: // ZIP or other
  102. visibility: // Optimized visibility (See note 3)
  103. stack_protector: // Is the stack protector enabled? (usually _FAULTY())
  104. module_engine: // xmp or other
  105. ogg_vorbis: // vorbis, tremor, tremor_lowmem or _FAULTY()
  106. optimization: // speed or size
  107. sdl: // Does this platform rely on SDL?
  108. editor: // Does this platform ship with the editor enabled?
  109. helpsys: // Does this platform ship with the help file enabled?
  110. audio: // Does this platform ship with audio enabled?
  111. software: // Does this platform have a software/proprietary renderer?
  112. gl: // Does this platform use the OpenGL fixed function renderers?
  113. overlay: // Does this platform use the overlay renderers?
  114. glsl: // Does this platform use the GLSL renderer?
  115. updater: // Is this platform compatible with the updater?
  116. modular: // Does this platform use modular builds?
  117. png: // Does this platform build with libpng?
  118. x11: // Can this platform link to X11?
  119. hashtables: // Does this platform use hash tables for counter lookups?
  120. loadsave_meter: // Does this platform ship with the loadsave meter enabled?
  121. },
  122. */
  123. _3ds:
  124. {
  125. platform: "3ds",
  126. description: "Nintendo 3DS",
  127. architecture: "ARM11 (ELF)",
  128. endian: "Little",
  129. toolchain: "gcc 8.3.0 <br /> binutils 2.32 <br /> (dk r52)",
  130. packaged: ZIP,
  131. stack_protector: _FAULTY(),
  132. layer_rendering: yes,
  133. module_engine: xmp,
  134. ogg_vorbis: tremor,
  135. optimization: speed,
  136. sdl: no_sdl_3ds,
  137. editor: no_low_memory,
  138. helpsys: no_low_memory,
  139. audio: yes,
  140. software: render_ctr,
  141. updater: no_updater,
  142. png: yes,
  143. hashtables: yes,
  144. loadsave_meter: yes,
  145. },
  146. darwin:
  147. {
  148. platform: "darwin",
  149. description: "MacOS 10.x",
  150. architecture: "x86_64 (Mach-O) <br /> i686 (Mach-O) <br /> PPC (Mach-O)",
  151. endian: "Varies",
  152. toolchain: "Various",
  153. packaged: DMG,
  154. visibility: yes,
  155. stack_protector: yes,
  156. layer_rendering: yes,
  157. module_engine: xmp,
  158. ogg_vorbis: libvorbis,
  159. optimization: speed,
  160. sdl: yes,
  161. editor: yes,
  162. helpsys: yes,
  163. audio: yes,
  164. software: yes,
  165. gl: yes,
  166. overlay: yes,
  167. glsl: yes,
  168. updater: no_updater,
  169. modular: yes,
  170. png: yes,
  171. hashtables: yes,
  172. loadsave_meter: no,
  173. },
  174. mingw:
  175. {
  176. platform: "mingw",
  177. description: "Windows <br /> (GNU toolchain)",
  178. architecture: "x64 (PE+ COFF) <br /> x86 (PE COFF)",
  179. endian: "Little",
  180. toolchain: "gcc 8.3.0 (x64) <br /> gcc 7.4.0 (x86) <br /> binutils 2.30",
  181. packaged: ZIP,
  182. visibility: yes,
  183. stack_protector: no_mingw_stack_protector,
  184. layer_rendering: yes,
  185. module_engine: xmp,
  186. ogg_vorbis: libvorbis,
  187. optimization: speed,
  188. sdl: yes,
  189. editor: yes,
  190. helpsys: yes,
  191. audio: yes,
  192. software: yes,
  193. gl: yes,
  194. overlay: yes,
  195. glsl: yes,
  196. updater: yes,
  197. modular: yes,
  198. png: yes,
  199. hashtables: yes,
  200. loadsave_meter: no,
  201. },
  202. msvc:
  203. {
  204. platform: "msvc",
  205. description: "Windows <br /> (Visual Studio)",
  206. architecture: "x64 (PE+ COFF) <br /> x86 (PE COFF)",
  207. endian: "Little",
  208. toolchain: "Visual Studio 2017",
  209. packaged: subopt("NO", 2),
  210. visibility: yes,
  211. stack_protector: _FAULTY(),
  212. layer_rendering: yes,
  213. module_engine: xmp,
  214. ogg_vorbis: libvorbis,
  215. optimization: speed,
  216. sdl: yes,
  217. editor: yes,
  218. helpsys: yes,
  219. audio: yes,
  220. software: yes,
  221. gl: yes,
  222. overlay: yes,
  223. glsl: yes,
  224. updater: yes,
  225. modular: yes,
  226. png: yes,
  227. hashtables: yes,
  228. loadsave_meter: no,
  229. },
  230. nds:
  231. {
  232. platform: "nds",
  233. description: "Nintendo DS",
  234. architecture: "ARM9 (ELF)",
  235. endian: "Little",
  236. toolchain: "gcc 8.3.0 <br /> binutils 2.32 <br /> (dk r52)",
  237. packaged: ZIP,
  238. stack_protector: _FAULTY(),
  239. layer_rendering: _FAULTY(),
  240. module_engine: _FAULTY(),
  241. ogg_vorbis: _FAULTY(),
  242. optimization: size,
  243. sdl: no,
  244. editor: no_low_memory,
  245. helpsys: no_low_memory,
  246. audio: _FAULTY(),
  247. software: render_nds,
  248. updater: no_updater,
  249. png: no_low_memory,
  250. hashtables: no_low_memory,
  251. loadsave_meter: yes,
  252. },
  253. psp:
  254. {
  255. platform: "psp",
  256. description: "PlayStation Portable",
  257. architecture: "MIPS (ELF)",
  258. endian: "Little",
  259. toolchain: "gcc 4.6.2 <br /> binutils 2.22 <br /> (dk r16)",
  260. packaged: ZIP,
  261. stack_protector: _FAULTY(),
  262. layer_rendering: yes_but_8bpp,
  263. module_engine: xmp,
  264. ogg_vorbis: tremor_lowmem,
  265. optimization: size,
  266. sdl: yes,
  267. editor: no_low_memory,
  268. helpsys: no_low_memory,
  269. audio: yes,
  270. software: yes,
  271. updater: no_updater,
  272. png: yes,
  273. hashtables: yes,
  274. loadsave_meter: yes,
  275. },
  276. switch:
  277. {
  278. platform: "switch",
  279. description: "Nintendo Switch",
  280. architecture: "ARMv8/AArch64 (ELF)",
  281. endian: "Little",
  282. toolchain: "gcc 8.3.0 <br /> binutils 2.32 <br /> (dk r13)",
  283. packaged: ZIP,
  284. stack_protector: _FAULTY(),
  285. layer_rendering: yes,
  286. module_engine: xmp,
  287. ogg_vorbis: libvorbis,
  288. optimization: speed,
  289. sdl: yes,
  290. editor: yes,
  291. helpsys: yes,
  292. audio: yes,
  293. software: yes,
  294. overlay: yes,
  295. gl: no_gl_switch,
  296. glsl: no_gl_switch,
  297. updater: no_updater,
  298. png: yes,
  299. hashtables: yes,
  300. loadsave_meter: yes,
  301. },
  302. unix:
  303. {
  304. platform: "unix",
  305. description: "Linux, BSD, Solaris, HaikuOS, etc.",
  306. architecture: "AMD64 (ELF) <br /> i386 (ELF) <br /> PPC64 (ELF)",
  307. endian: "Varies",
  308. toolchain: "Various",
  309. packaged: _yes("Various"),
  310. visibility: yes,
  311. stack_protector: yes,
  312. layer_rendering: yes,
  313. module_engine: xmp,
  314. ogg_vorbis: libvorbis,
  315. optimization: speed,
  316. sdl: yes,
  317. editor: yes,
  318. helpsys: yes,
  319. audio: yes,
  320. software: yes,
  321. gl: yes,
  322. overlay: yes,
  323. glsl: yes,
  324. updater: no_updater_unix,
  325. modular: yes,
  326. png: yes,
  327. x11: yes,
  328. hashtables: yes,
  329. loadsave_meter: no,
  330. },
  331. wii:
  332. {
  333. platform: "wii",
  334. description: "Nintendo Wii",
  335. architecture: "PPC (ELF)",
  336. endian: "Big",
  337. toolchain: "gcc 8.2.0 <br /> binutils 2.32 <br /> (dk r34)",
  338. packaged: ZIP,
  339. stack_protector: _FAULTY(),
  340. layer_rendering: yes,
  341. module_engine: xmp,
  342. ogg_vorbis: tremor,
  343. optimization: speed,
  344. sdl: optional_sdl_wii,
  345. editor: yes,
  346. helpsys: yes,
  347. audio: yes,
  348. software: render_gx,
  349. updater: no_updater,
  350. png: yes,
  351. hashtables: yes,
  352. loadsave_meter: yes,
  353. },
  354. xcode:
  355. {
  356. platform: "xcode",
  357. description: ">= MacOS 10.6",
  358. architecture: "x86_64 (Mach-O) <br /> i686 (Mach-O)",
  359. endian: "Little",
  360. toolchain: "clang 900.0.38 <br /> LLVM 9.0.0",
  361. packaged: DMG,
  362. visibility: yes,
  363. stack_protector: yes,
  364. layer_rendering: yes,
  365. module_engine: xmp,
  366. ogg_vorbis: libvorbis,
  367. optimization: speed,
  368. sdl: yes,
  369. editor: yes,
  370. helpsys: yes,
  371. audio: yes,
  372. software: yes,
  373. gl: yes,
  374. overlay: yes,
  375. glsl: yes,
  376. updater: no_updater,
  377. modular: yes,
  378. png: yes,
  379. hashtables: yes,
  380. loadsave_meter: no,
  381. },
  382. _0: "spacer",
  383. amiga:
  384. {
  385. platform: defunct("amiga"),
  386. description: "AmigaOS 4.x",
  387. architecture: "PPC (ELF)",
  388. endian: "Big",
  389. toolchain: "gcc 4.2.2 <br /> binutils 2.14 <br /> clib2",
  390. packaged: LHA,
  391. visibility: yes,
  392. stack_protector: yes,
  393. layer_rendering: yes,
  394. module_engine: xmp,
  395. ogg_vorbis: libvorbis,
  396. optimization: speed,
  397. sdl: yes,
  398. editor: yes,
  399. helpsys: yes,
  400. audio: yes,
  401. software: yes,
  402. gl: yes,
  403. overlay: yes,
  404. glsl: yes,
  405. updater: no_updater,
  406. modular: yes,
  407. png: yes,
  408. hashtables: yes,
  409. loadsave_meter: no,
  410. },
  411. android:
  412. {
  413. platform: defunct("android"),
  414. description: "Android",
  415. architecture: "ARMv7-a (ELF) <br /> i686 (ELF)",
  416. endian: "Little",
  417. toolchain: "gcc 4.2.1 <br /> binutils 2.17 <br /> bionic",
  418. packaged: _FAULTY("TBD", 8),
  419. visibility: yes,
  420. stack_protector: _FAULTY("NO", 8),
  421. layer_rendering: _FAULTY("NO", 8),
  422. module_engine: xmp,
  423. ogg_vorbis: tremor_lowmem,
  424. optimization: size,
  425. sdl: no,
  426. editor: yes,
  427. helpsys: yes,
  428. audio: _FAULTY("TBD", 8),
  429. software: no,
  430. gl: yes,
  431. overlay: _FAULTY("NO", 8),
  432. glsl: yes,
  433. updater: no_updater,
  434. modular: yes,
  435. png: yes,
  436. hashtables: yes,
  437. loadsave_meter: no,
  438. },
  439. gp2x:
  440. {
  441. platform: defunct("gp2x"),
  442. description: "GP2x",
  443. architecture: "ARM9 (ELF)",
  444. endian: "Little",
  445. toolchain: "gcc 4.1.1 <br /> binutils 2.16.1 <br /> glibc2.3.7 <br /> (open2x)",
  446. packaged: ZIP,
  447. stack_protector: _FAULTY(),
  448. layer_rendering: _FAULTY(),
  449. module_engine: xmp,
  450. ogg_vorbis: tremor_lowmem,
  451. optimization: size,
  452. sdl: yes,
  453. editor: no_low_memory,
  454. helpsys: no_low_memory,
  455. audio: yes,
  456. software: render_gp2x,
  457. updater: no_updater,
  458. png: yes,
  459. hashtables: yes,
  460. loadsave_meter: yes,
  461. },
  462. pandora:
  463. {
  464. platform: defunct("pandora"),
  465. description: "Pandora",
  466. architecture: "ARMv7-a (ELF)",
  467. endian: "Little",
  468. toolchain: "gcc 4.4.1 <br /> binutils 2.19.51 <br /> (CS 2009q3)",
  469. packaged: subopt("ZIP (PND?)"),
  470. visibility: yes,
  471. stack_protector: yes,
  472. layer_rendering: yes,
  473. module_engine: xmp,
  474. ogg_vorbis: tremor_lowmem,
  475. optimization: speed,
  476. sdl: yes,
  477. editor: yes,
  478. helpsys: yes,
  479. audio: yes,
  480. software: yes,
  481. gl: _FAULTY(),
  482. overlay: _FAULTY(),
  483. glsl: _FAULTY(),
  484. updater: no_updater,
  485. png: yes,
  486. x11: subopt(),
  487. hashtables: yes,
  488. loadsave_meter: no,
  489. },
  490. };
  491. function build_table()
  492. {
  493. var content = ""
  494. var i = 0;
  495. function th(_data)
  496. {
  497. content += '<th>';
  498. if(typeof(_data) === 'object')
  499. {
  500. content += _data.v;
  501. }
  502. else
  503. if(typeof(_data) === 'string')
  504. {
  505. content += _data;
  506. }
  507. else
  508. {
  509. content += 'N/A';
  510. }
  511. content += '</th>\n';
  512. }
  513. function td(_data)
  514. {
  515. if(typeof(_data) === 'object')
  516. {
  517. content += '<td class="' + _data.c + '">';
  518. content += _data.v;
  519. }
  520. else
  521. if(typeof(_data) === 'string')
  522. {
  523. content += '<td>';
  524. content += _data;
  525. }
  526. else
  527. {
  528. content += '<td class="na">';
  529. content += 'N/A';
  530. }
  531. content += '</td>\n';
  532. }
  533. function spacer()
  534. {
  535. content += '<td class="spacer"></td>\n';
  536. }
  537. for(var f in fields)
  538. {
  539. content += '<tr>\n';
  540. th(fields[f]);
  541. if(i == 0)
  542. {
  543. // Header row
  544. for(var a in archs)
  545. {
  546. if(archs[a] === "spacer")
  547. spacer();
  548. else
  549. th(archs[a][f]);
  550. }
  551. i = 1;
  552. }
  553. else
  554. {
  555. // Data row
  556. for(var a in archs)
  557. {
  558. if(archs[a] === "spacer")
  559. spacer();
  560. else
  561. td(archs[a][f]);
  562. }
  563. }
  564. content += "</tr>\n";
  565. }
  566. document.getElementById('matrix').innerHTML = content;
  567. }
  568. window.onload = build_table;
  569. </script>
  570. <style type="text/css">
  571. body {
  572. font-family : "Verdana", "Bitstream Vera Sans";
  573. margin-left : 1em;
  574. margin-right : 1em;
  575. font-size : 9pt;
  576. }
  577. p#legend {
  578. margin-left : 1em;
  579. margin-right : 1em;
  580. }
  581. table {
  582. border-collapse : collapse;
  583. border : 2px solid black;
  584. border-spacing : 0;
  585. width : 150em;
  586. }
  587. td, th {
  588. text-align : center;
  589. border-width : 1px 1px 1px 1px;
  590. border-style : inset inset inset inset;
  591. border-color : gray;
  592. padding : 5px;
  593. color : black;
  594. width : 8.3%;
  595. }
  596. td {
  597. vertical-align : top;
  598. }
  599. th {
  600. background-color : rgb(200,200,200);
  601. }
  602. td.yes, td.no, td.no2, td.na, td.std {
  603. vertical-align : middle;
  604. }
  605. span.yes, span.no, span.no2, span.na, span.std {
  606. border : 1px solid black;
  607. padding-right : 1em;
  608. padding-left : 1em;
  609. }
  610. .yes {
  611. background-color : rgb(0,255,0);
  612. }
  613. .no {
  614. background-color : rgb(255,0,0);
  615. font-weight : bold;
  616. color : white;
  617. }
  618. .no2 {
  619. background-color : rgb(255,150,150);
  620. color : black;
  621. }
  622. .na {
  623. background-color : rgb(220,220,200);
  624. }
  625. .std {
  626. background-color : rgb(150,255,150);
  627. }
  628. .spacer {
  629. border-top : none;
  630. border-bottom : none;
  631. padding-left : 10px;
  632. width : 2%;
  633. }
  634. a {
  635. font-weight : normal;
  636. font-size : 8pt;
  637. }
  638. li {
  639. padding : 2px;
  640. width : 50%;
  641. }
  642. </style>
  643. </head>
  644. <body>
  645. <h1>MegaZeux Platform Support Matrix</h1>
  646. <p>Best viewed with &gt;=1920 pixel monitor. Requires Javascript.</p>
  647. <p id="legend">
  648. <b>Legend:</b>
  649. <span class="yes">Ideal</span>
  650. <span class="std">Normal</span>
  651. <span class="na">Not applicable</span>
  652. <span class="no2">Suboptimal, Trivially fixable</span>
  653. <span class="no">Faulty, Not trivially fixable</span>
  654. </p>
  655. <table id="matrix"></table>
  656. <h3>Platform Notes</h3>
  657. <ol>
  658. <li><a name="note1"/>These platforms are currently unsupported due to lack
  659. of available hardware to test on, lack of working toolchains, inherent
  660. compatibility issues with MegaZeux, or simply lack of interest. Information
  661. based on last known working builds (if any).
  662. </li>
  663. <li><a name="note2"/>Could use existing `package.sh' however this does
  664. not handle PDB files.<br/>
  665. MSVC binaries are replicate of MinGW binaries and require a proprietary non
  666. cross-capable compiler.
  667. </li>
  668. <li><a name="note3"/>&quot;Optimized Visibility&quot; refers to the
  669. hiding of library symbols which are not required or referenced
  670. outside of that library. An &quot;optimized&quot; library is smaller
  671. and loads faster.<br/>
  672. Required on Win32. Only applicable with CONFIG_MODULAR=y builds.
  673. </li>
  674. <li><a name="note4"/>Disabled due to miscompilation of stack protector in
  675. conjunction with C++ exceptions with some MinGW compilers.
  676. </li>
  677. <li><a name="note5"/>The editor and help system features are disabled
  678. to conserve cache on embedded platforms. The features build and work
  679. on these platforms, but they are basically unusable due to the lack of any
  680. on-screen keyboard. Additionally, hash tables have been disabled on the NDS to
  681. conserve memory.
  682. </li>
  683. <li><a name="note6"/>The updater may or may not work on these platforms, but
  684. no builds are currently provided by the official update hosts.
  685. </li>
  686. <li><a name="note7"/>The updater is typically disabled in the Linux
  687. binaries that are shipped (for distributions like Debian or Fedora), even
  688. though the feature can easily be enabled.<br/>The issue is that MegaZeux is
  689. installed system-wide on these platforms and overwrites cannot be
  690. guaranteed.<br/>Additionally, it is felt that the advanced package management
  691. on these platforms supercedes any usefulness of the built-in updater.
  692. </li>
  693. <li><a name="note8"/>The Android platform, while having been listed in this
  694. table for a long time, has never really been supported. What little work exists
  695. is extremely old, and no viable build has ever been created.
  696. </li>
  697. <li><a name="note9"/>Building MZX with SDL on the 3DS is viable, but the
  698. software renderer is far slower, currently offers no additional functionality,
  699. and doesn't allow for special features such as screen dragging. Furthermore,
  700. SDL significantly increases the size of the MZX executable.
  701. </li>
  702. <li><a name="note10"/>Building MZX with SDL Wii is viable, but produces larger
  703. binaries than desired, relies on the software renderer, and SDL Wii is
  704. considered unstable.
  705. </li>
  706. <li><a name="note11"/>Layer rendering is supported on this platform by as it
  707. uses the SDL software renderer, but this port does not currently support a color
  708. depth greater than 8bpp, so the UI palette will not be protected in SMZX mode.
  709. </li>
  710. <li><a name="note12"/>The GL renderers work on the Switch but have been
  711. disabled because they cause system crashes when exiting MegaZeux. They generally
  712. seem to perform worse than softscale, so there isn't much reason to fix this.
  713. </li>
  714. </ol>
  715. <h3>Copyright</h3>
  716. <p>This document may be copied and redistributed without limitation
  717. or reservation.</p>
  718. </body>
  719. </html>