1 คะแนน โดย GN⁺ 3 일 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • เผยแพร่ ไฟล์ซอร์สเพลงเกม Commodore 64 จากยุคทศวรรษ 1980 ทำให้สามารถตรวจสอบการทำงานภายในของ music player และวิธีการทำงานในยุคนั้นได้โดยตรง
  • ไฟล์ซอร์สสามารถนำไปใช้เพื่อ ประกอบกลับ แก้ไข และสร้างเพลงใหม่ ได้ โดยกำหนดให้ระบุเครดิต Martin Galway เมื่อนำไปใช้
  • ลิขสิทธิ์ความเป็นเจ้าของ ของเพลงและโค้ดโปรแกรมมิงเหล่านี้ ปัจจุบันเป็นของ Martin Galway ซึ่งในช่วงที่สร้างงานในทศวรรษ 1980 เขายังไม่ได้เป็นเจ้าของ และภายหลังได้สิทธิ์มาจาก Infogrames
  • player รุ่นที่ 1 ถูกใช้ใน Wizball และอิงตามการออกแบบที่ใช้ตั้งแต่ปี 1984 ถึงกลางปี 1987 ส่วน player รุ่นที่ 2 เขียนขึ้นสำหรับ Athena และต่อมาถูกใช้ต่อใน Times Of Lore และ Insects In Space
  • ทำให้ก้าวข้ามการฟังเพลงเกมคลาสสิกเพียงอย่างเดียวไปสู่การ วิเคราะห์และนำกลับมาใช้ใหม่ ได้ ช่วยให้เข้าใจและต่อยอดเทคนิคการสร้างงานในยุคนั้นโดยตรง

ภาพรวมของโปรเจกต์

  • เผยแพร่ ไฟล์ซอร์สเพลงเกม Commodore 64 จากยุคทศวรรษ 1980 ทำให้สามารถอ่านและวิเคราะห์ music player กับวิธีการทำงานในยุคนั้นได้โดยตรง
  • ไฟล์ซอร์สสามารถนำไปใช้เพื่อ ประกอบกลับ แก้ไข และสร้างเพลงใหม่ ได้ โดยระบุให้ให้เครดิต Martin Galway ในฐานะผู้สร้างต้นฉบับ
  • ปัจจุบัน ลิขสิทธิ์ความเป็นเจ้าของ ของเพลงและโค้ดโปรแกรมมิงนี้เป็นของ Martin Galway ซึ่งในช่วงที่สร้างงานในทศวรรษ 1980 เขายังไม่ได้เป็นเจ้าของ และภายหลังได้สิทธิ์มาจาก Infogrames

การแบ่งตามรุ่นของ player

  • player รุ่นที่ 1 ถูกใช้ใน "Wizball" และอิงตามการออกแบบที่ใช้ตั้งแต่ปี 1984 ถึงกลางปี 1987
  • player รุ่นที่ 2 ถูกใช้ครั้งแรกใน "Athena" และถูกเขียนขึ้นสำหรับเกมนี้
  • หลังจากนั้น player รุ่นที่ 2 ก็ถูกใช้ต่อในเกมอย่าง Times Of Lore, Insects In Space

ทำไมเรื่องนี้สำคัญ

  • ทำให้สามารถตรวจสอบ การทำงานภายในของ C64 music player และวิธีการทำงานจริงในยุคนั้นได้จากซอร์สต้นฉบับ
  • ไม่ได้หยุดอยู่แค่การรับฟัง แต่ยังสามารถ วิเคราะห์และนำกลับมาใช้ใหม่ ได้ ช่วยให้เข้าใจและต่อยอดเทคนิคการสร้างเพลงเกมคลาสสิกได้โดยตรง

1 ความคิดเห็น

 
GN⁺ 3 일 전
ความคิดเห็นจาก Hacker News
  • ฟัง ทูนของ Wizball ได้ที่นี่
    https://deepsid.chordian.net/?file=/MUSICIANS/G/Galway_Martin/Wizball.sid&subtune=4

    เปลี่ยน subtune ได้ด้วยลูกศรขึ้น/ลงเล็ก ๆ

    • เยี่ยมมาก สมัยก่อนผมชอบทูนของ Short Circuit มาก ถึงขั้นเปิดดูโค้ดด้วย cartridge monitor
      เพื่อพยายามดึงมันไปใส่ใน standalone player shell ของตัวเองด้วยซ้ำ อาจจะทำสำเร็จจริง ๆ ก็ได้

      ดีใจที่ตอนนี้ได้เห็นจากซอร์สแล้วว่า address กับความหมาย ที่เมื่อ 40 ปีก่อนต้องเดาเอาเองนั้นคืออะไร

      อ้อ มันอยู่ใน Short_circuit.sid ของ linked player ด้วย ขอบคุณ

    • เจ๋งมาก ความทรงจำที่ได้ทำสิ่งนี้กับพ่อเมื่อราว ๆ 35 ปีก่อน ยังชัดเจนอยู่เลย

  • จากไฟล์นี้ https://github.com/MartinGalway/C64_music/blob/main/ocean_assembler_directives.txt

    DSP น่าจะหมายถึง displacement ใช้คู่กับ ORG
    โดย ORG ระบุตำแหน่งหน่วยความจำที่โค้ดจะถูกรัน ส่วน DSP ดูเหมือนจะเลื่อนโค้ดไปวางไว้ถัดไปในหน่วยความจำก่อน
    แล้วค่อยย้ายกลับมาที่ address ของ ORG ตอนรันจริง

    DFC ดูเหมือนจะเหมือน DFM แต่สร้าง PETSCII แทน ASCII

  • สุดยอดจริง ๆ ตอนเด็กผมชอบ เพลง C64 ของ Galway มาก โดยเฉพาะ Wizball กับ Parallax ที่เปิดฟังบ่อยมาก
    จำได้ลาง ๆ ว่าเคยคิดจะเขียน player เองด้วย assembly เหมือนกัน แต่สุดท้ายก็กลายเป็นอีกโปรเจกต์ที่ทำไม่เสร็จ

    • มันยอดเยี่ยมจริง ๆ และไม่ได้มีแค่ Galway แต่เพลงยุคนั้นโดยรวมก็เป็นแบบนั้น

      ช่วงโควิดมีจังหวะชีวิตแปลก ๆ จนผมต้องติดอยู่คนละประเทศกับภรรยาและลูก 2.5 เดือน
      แล้วบังเอิญได้กลับไปอยู่บ้านที่ตัวเองโตมาเพียงลำพัง เลยไปคุ้ย C128 เครื่องเก่าออกมาจากห้องใต้หลังคา
      เปิดยูทูบดูวิธีทำความสะอาด จัดการทำความสะอาดไดรฟ์ดิสก์ แล้วหยอดน้ำมันนิดหน่อยก่อนลองเปิดดิสก์เก่า ๆ

      Commando ยังโหลดได้อยู่ และผมก็ปล่อยเพลง Rob Hubbard บนหน้าจออินโทรเล่นทิ้งไว้เป็นชั่วโมง ๆ ระหว่างทำอย่างอื่น

      ผมไม่ได้ทำเพลง SID หรือ mod-player เอง แต่เพื่อนบ้านเคยทำ Amiga mod player สำหรับ Atari ST
      เสียงมันต่างออกไปและกิน CPU พอสมควร แต่เล่น 4 แชนเนลได้จริง

      ช่วงหลัง ๆ ผมเอาไฟล์ DOS .ASM เก่า ๆ ไปให้ Sonnet 4.6 ช่วยจนคอมไพล์ได้อีกครั้ง
      และหลังจากได้รู้จักเครื่องมืออย่าง UASM สุดท้ายก็ build สำเร็จ

      เลยคิดว่าไฟล์ C64 assembly แบบนี้ก็น่าจะทำคล้ายกันได้
      ถาม LLM ว่าจะคอมไพล์ยังไงแล้วเล่นในอีมูเลเตอร์อย่างไรน่าจะพอได้
      ถ้ามีไกด์สั้น ๆ ว่าควรเริ่มจากตรงไหนก็คงดีมาก

      TL;DR ของฝั่ง DOS .ASM เก่าคือประมาณว่า "คอมไพล์ด้วย UASM ฟรี แล้วรันใน DOSBox"

  • สงสัยว่ามีใครเคยลองย้ายสิ่งนี้ไปเป็น Tidal Cycles หรือ Strudel JS บ้างไหม
    คือแปลงมันให้อยู่ในรูปของ pattern performance ที่อิงสัญลักษณ์น่ะ

    AI บอกว่าการแปลแบบนี้ยาก แต่ก็พอเป็นไปได้
    https://claude.ai/share/65c16d60-5d27-496b-96a7-40959e95ac62

    แล้วก็นี่คือเวอร์ชันแปลด้วย AI ของโน้ตบางส่วนที่ Claude อ้างว่าเป็นเมโลดี้หลัก
    https://strudel.cc/#Ci8vIFdpemJhbGwgIklucHV0IE5hbWUiIC0gbWFpbiBtZWxvZHkgKGNoYW5uZWwgMCkKLy8gT3JpZ2luYWw6IE1hcnRpbiBHYWx3YXksIDE5ODcuIE5vdGUgaW5kaWNlcyBmcm9tIEM2NCBTSUQgYXNtCi8vIHRyYW5zbGF0ZWQgYXMgTUlESSA9IGluZGV4ICsgMTIuCgpzZXRjcHMoMTQwLzYwLzQpCgokOiBub3RlKGA8CiAgW2E0IH4gfiBhNF0gW2c0IH4gfiBnNF0gW2YjNCB%2BIH4gfl0KICBbfiB%2BIH4gYjRdIFtiNCBiNCBiNCB%2BXSBbYjQgfiBiNCB%2BXQogIFtkNSBkNSBkNSBkNV0gW2Q1IGQ1IGY1IGQ1XSBbYzUgZDUgYzUgZzRdCiAgW2E0IH4gfiBhNF0gW2c0IGc0IH4gfl0gW2YjNCB%2BIGE0IH5dCiAgW2c0IH4gfiB%2BXQo%2BYCkKICAucygic3F1YXJlIikKICAuYXR0YWNrKC4wMDUpLmRlY2F5KC4wOCkuc3VzdGFpbiguNCkucmVsZWFzZSguMSkKICAubHBmKDIyMDApLmxwcSgzKQogIC5nYWluKC42KQoKLy8gQ2hhbm5lbCAxOiB0aGUgaGlnaCBCNSBjaGltZSB0aGF0IHB1bmN0dWF0ZXMgdGhyb3VnaG91dAokOiBub3RlKCJiNSB%2BIH4gfiB%2BIH4gYjUgfiIuZmFzdCgyKSkKICAucygidHJpYW5nbGUiKQogIC5hdHRhY2soLjAwMSkuZGVjYXkoLjA0KS5zdXN0YWluKDApLnJlbGVhc2UoLjA1KQogIC5nYWluKC4zKQoKLy8gQ2hhbm5lbCAyOiBiYXNzIGxpbmUgLSByb290IG1vdGlvbiBEIC0gQSAtIEcgLSBECiQ6IG5vdGUoIjxkMyBhMiBnMiBkMz4iKQogIC5zKCJzYXd0b290aCIpCiAgLmxwZig4MDApLmxwcSgyKQogIC5hdHRhY2soLjAwNSkuZGVjYXkoLjIpLnN1c3RhaW4oLjYpLnJlbGVhc2UoLjEpCiAgLmdhaW4oLjUpCg%3D%3D

    แล้วธีมต้นฉบับก็ยอดเยี่ยมมาก ควรค่าแก่การฟังจริง ๆ
    https://youtu.be/sFYzjU-C3mA

    • สุดท้ายก็ต้องลองทำเอง

      Claude แอบเหมือนโกงนิด ๆ เพราะมันจำชนิดของไฟล์ได้ ไปดาวน์โหลด psid จากเว็บ
      แล้วหา wasm sid player มาสร้างเป็นเว็บไซต์ทับอีกที
      https://claude.ai/public/artifacts/df6cdcae-08dc-452b-ba19-ffae2d6546f6
      https://claude.ai/share/4dd36c16-bc62-445a-b423-ad4637f06432

      GPT-5.5 สร้างสคริปต์ Python จำนวนมากเพื่อดึงข้อมูลเพลงออกมา
      แม้ implementation ของ Strudel จะล้มเหลว แต่หลังจากนั้นผมก็ให้มันสร้างเว็บไซต์ต่อ
      https://ubiquitous-vacherin-8e7993.netlify.app/

      ฝั่งนี้เป็นผลลัพธ์จากการแปลเพลงจากซอร์ส assembler มาเป็น JavaScript

      ทั้งสองอันน่าประทับใจทีเดียว เพียงแต่ต้องคอยแก้ซ้ำอีกหน่อย

    • น่าเสียดาย แต่นั่นฟังดูไม่เหมือนแทร็กของ Wizball หรือ Game Over เลยแม้แต่น้อย

  • ทูนของ Green Beret กับ Rambo: First Blood Part 2 ยังฟังแล้วน่าทึ่งแม้ในตอนนี้ และ Martin ก็แทบจะเป็นพ่อมดเลย

  • ต้องยกย่อง Martin Galway มากที่ เผยแพร่ สิ่งนี้ออกมา
    อยากให้เรื่องแบบนี้เกิดขึ้นบ่อยกว่านี้ และอยากให้เหล่านักเขียนสามารถเรียกร้องกับสำนักพิมพ์ได้ตอนทำสัญญา
    ให้กำหนด ระยะเวลาลิขสิทธิ์ ให้สั้นลง

    แน่นอน ผมก็ไม่รู้หรอกว่านักเขียนหนังสือจะยังมีรายได้อีกแค่ไหนในอีก 10, 20, 30 ปี
    บางกรณีก็ยังทำเงินก้อนโตได้อย่างมูลนิธิจัดการมรดกของ JRR Tolkien หรือ K.K. Rowling
    แต่สำหรับนักเขียนที่มีชื่อเสียงน้อยกว่า กลยุทธ์แบบนั้นอาจจะเหมาะมากทีเดียว

    • JRR Tolkien ยังทำเงินได้จากลิขสิทธิ์ แต่ที่น่าเศร้าคือเขา เขียนหนังสือเพิ่มไม่ได้แล้ว
      นั่นแหละที่สะท้อน ความวิปริตของกฎหมายลิขสิทธิ์สมัยใหม่ ได้ชัดเจน
  • ผมฟัง slayradio แบบ ๆ หยุด ๆ มามากกว่า 10 ปีแล้ว
    https://slayradio.org

    • หวังว่าจะมีคนพูดถึง slayradio อยู่พอดี ชุมชนนี้ยอดเยี่ยมจริง ๆ
      ผมเองก็ฟังและแชตกับคนที่นั่นมาหลายสิบปีแล้ว
  • ความทรงจำย้อนกลับมาเต็ม ๆ ผมชอบ Galway กับ Hubbard มาก
    พวกเขาทำสิ่งที่น่าสนใจอย่างเหลือเชื่อได้ภายใต้ข้อจำกัดขนาดนั้น และตอนนี้กลับไปฟังก็ยังเพราะอยู่

    • ผมโตมากับชื่อใหญ่อย่าง Hubbard เป็นหลัก แต่ตอนเด็กก็เล่น Arkanoid หนักมากเหมือนกัน
  • ผมไม่อายุมากพอจะทันยุคคอมพิวเตอร์สมัยนั้นด้วยตัวเอง แต่รู้ว่า Cosmic Bakery นั้นยอดเยี่ยมมาก

  • ไฟล์ซอร์สพวกนี้ใหญ่เกิน ขนาด RAM ของ C64
    เลยคิดว่าเพลงคงไม่ได้ถูกพัฒนาในรูปไฟล์ซอร์สแบบนี้มาตั้งแต่แรก

    • ผมไม่รู้เรื่อง Ocean เท่าไร แต่หลายบริษัทใช้ Tatung Einstein เป็นแพลตฟอร์มพัฒนา
      ซึ่งเครื่องนั้นก็อยู่แถว ๆ 64KiB เหมือนกัน ถึงอย่างนั้นซอฟต์แวร์ที่ใช้ build เครื่องมือพวกนี้
      ก็น่าจะรองรับไฟล์ซอร์สขนาดใหญ่กว่าที่ใส่ในหน่วยความจำของเครื่องได้ทั้งหมดในคราวเดียว

      ช่วงที่ Wizball ออกมาแล้วก็อาจย้ายไปใช้ Atari ST, เครื่องตระกูล IBM compatible หรือ Amiga กันบ้าง
      แต่การทำเพลงในรูป ไฟล์ซอร์ส นั้นเป็นเรื่องปกติมาก

    • ไม่เชิงแบบนั้น แต่ assembler ยอดนิยมบางตัวบน C64 ใช้ข้อความแบบ tokenized
      ทำให้ยัดข้อมูลจำนวนมากลงใน RAM ได้พอสมควร