{"id":131,"date":"2026-07-31T10:34:19","date_gmt":"2026-07-30T22:34:19","guid":{"rendered":"https:\/\/xpd.co.nz\/?page_id=131"},"modified":"2026-09-03T18:22:17","modified_gmt":"2026-09-03T06:22:17","slug":"amiga","status":"publish","type":"page","link":"https:\/\/xpd.co.nz\/index.php\/amiga\/","title":{"rendered":"Amiga"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The following are links to my Amiga resources I have collected from various sites and archives. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I do not claim ownership over any of the files unless specified (usually by the filename or readme)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">These are clean of Windows based viruses\/malware to my knowledge &#8211; I am not responsible for the contents.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Games<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Magazines<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adverts<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Books<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Manuals<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Workbench<\/p>\n\n\n\n<!--\n  MOD\/Tracker Player Embed \u2014 for WordPress \"Custom HTML\" block\n  ---------------------------------------------------------------\n  Uses chiptune3 (JS wrapper around libopenmpt, compiled to WASM)\n  to play .mod, .xm, .s3m, .it and similar tracker formats directly\n  in the browser. No server-side plugin, no WP dependency at all \u2014\n  just paste this whole block into a Custom HTML block in the editor.\n\n  SETUP:\n  1. Upload your .mod file to the WordPress Media Library (or any\n     web-accessible URL).\n  2. Replace MOD_FILE_URL below with that file's URL.\n  3. Paste this entire <div>...<\/script> block into a Custom HTML\n     block on the page\/post you want it to appear on.\n\n  Notes:\n  - chiptune3 is loaded from GitHub Pages CDN (drsnuggles.github.io).\n    If you want it fully self-hosted instead of relying on that CDN,\n    download chiptune3.min.js and host it in your theme\/uploads,\n    then just change the <script src=\"...\"> below.\n  - Browsers block autoplay of audio until a user gesture, so this\n    is a click-to-play button by design \u2014 that's not a bug.\n-->\n\n<div class=\"mod-player-widget\" style=\"max-width:420px;font-family:sans-serif;border:1px solid #ccc;border-radius:8px;padding:16px;background:#f9f9f9;\">\n  <div style=\"font-weight:bold;margin-bottom:8px;\" id=\"mod-title\">Loading track\u2026<\/div>\n  <div style=\"display:flex;gap:8px;align-items:center;\">\n    <button id=\"mod-play\" style=\"padding:6px 14px;cursor:pointer;\">\u25b6 Play<\/button>\n    <button id=\"mod-stop\" style=\"padding:6px 14px;cursor:pointer;\">\u25a0 Stop<\/button>\n    <span id=\"mod-status\" style=\"font-size:0.85em;color:#666;margin-left:auto;\">idle<\/span>\n  <\/div>\n<\/div>\n\n<script src=\"https:\/\/drsnuggles.github.io\/chiptune\/chiptune3.min.js\"><\/script>\n<script>\n(function () {\n  \/\/ ---- CONFIG: change this to your .mod file's URL ----\n  const MOD_FILE_URL = \"https:\/\/xpd.co.nz\/wp-content\/uploads\/mods\/Ackerlight1.mod\";\n  const TRACK_LABEL = \"your-track.mod\"; \/\/ shown as the title, purely cosmetic\n  \/\/ -------------------------------------------------------\n\n  const titleEl = document.getElementById(\"mod-title\");\n  const statusEl = document.getElementById(\"mod-status\");\n  const playBtn = document.getElementById(\"mod-play\");\n  const stopBtn = document.getElementById(\"mod-stop\");\n\n  titleEl.textContent = TRACK_LABEL;\n\n  let player = null;\n  let loaded = false;\n\n  function initPlayer() {\n    if (player) return;\n    const config = new ChiptuneJsConfig({ repeatCount: -1 }); \/\/ -1 = loop forever, 0 = play once\n    player = new ChiptuneJsPlayer(config);\n\n    player.onError(() => {\n      statusEl.textContent = \"error loading file\";\n    });\n\n    player.onEnded(() => {\n      statusEl.textContent = \"stopped\";\n    });\n  }\n\n  playBtn.addEventListener(\"click\", function () {\n    initPlayer();\n\n    if (loaded) {\n      \/\/ already loaded once \u2014 just resume\/replay\n      player.togglePause();\n      statusEl.textContent = player.currentPlayingNode ? \"playing\" : \"paused\";\n      return;\n    }\n\n    statusEl.textContent = \"loading\u2026\";\n    fetch(MOD_FILE_URL)\n      .then((r) => {\n        if (!r.ok) throw new Error(\"fetch failed: \" + r.status);\n        return r.arrayBuffer();\n      })\n      .then((buffer) => {\n        player.play(buffer);\n        loaded = true;\n        statusEl.textContent = \"playing\";\n      })\n      .catch((err) => {\n        statusEl.textContent = \"error: \" + err.message;\n      });\n  });\n\n  stopBtn.addEventListener(\"click\", function () {\n    if (player) {\n      player.stop();\n      loaded = false;\n      statusEl.textContent = \"idle\";\n    }\n  });\n})();\n<\/script>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The following are links to my Amiga resources I have collected from various sites and archives. I do not claim ownership over any of the files unless specified (usually by the filename or readme) These are clean of Windows based viruses\/malware to my knowledge &#8211; I am not responsible for the contents. Games Magazines Adverts [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-131","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/xpd.co.nz\/index.php\/wp-json\/wp\/v2\/pages\/131","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/xpd.co.nz\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/xpd.co.nz\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/xpd.co.nz\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/xpd.co.nz\/index.php\/wp-json\/wp\/v2\/comments?post=131"}],"version-history":[{"count":2,"href":"https:\/\/xpd.co.nz\/index.php\/wp-json\/wp\/v2\/pages\/131\/revisions"}],"predecessor-version":[{"id":144,"href":"https:\/\/xpd.co.nz\/index.php\/wp-json\/wp\/v2\/pages\/131\/revisions\/144"}],"wp:attachment":[{"href":"https:\/\/xpd.co.nz\/index.php\/wp-json\/wp\/v2\/media?parent=131"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}