1 điểm bởi GN⁺ 8 giờ trước | 1 bình luận | Chia sẻ qua WhatsApp
  • Công bố các tệp nguồn nhạc game Commodore 64 từ thập niên 1980, giúp có thể trực tiếp xem cách triển khai bên trong và quy trình làm việc của các trình phát nhạc thời đó
  • Các tệp nguồn có thể được dùng để biên dịch lại, chỉnh sửa, tạo nhạc mới, và yêu cầu ghi công Martin Galway khi sử dụng
  • Quyền sở hữu bản quyền của phần nhạc và mã lập trình hiện thuộc về Martin Galway; ông không phải chủ sở hữu vào thời điểm tạo ra chúng trong thập niên 1980 và đã nhận lại quyền từ Infogrames sau này
  • Trình phát thế hệ 1 được dùng cho Wizball và dựa trên thiết kế được sử dụng từ năm 1984 đến giữa năm 1987, còn trình phát thế hệ 2 được viết cho Athena và sau đó tiếp tục được dùng trong Times Of Lore và Insects In Space
  • Không chỉ dừng ở mức thưởng thức nhạc game cổ điển, dự án còn cho phép phân tích và tái sử dụng, giúp hiểu trực tiếp và mở rộng các kỹ thuật sản xuất thời đó

Tổng quan dự án

  • Công bố các tệp nguồn nhạc game Commodore 64 từ thập niên 1980, giúp có thể trực tiếp đọc và phân tích các trình phát nhạc cùng quy trình làm việc thời đó
  • Các tệp nguồn có thể được dùng để biên dịch lại, chỉnh sửa, tạo nhạc mới, đồng thời nêu rõ rằng cần ghi công Martin Galway với tư cách tác giả gốc
  • Hiện nay quyền sở hữu bản quyền của phần nhạc và mã lập trình thuộc về Martin Galway; vào thời điểm tạo ra chúng trong thập niên 1980, ông không phải chủ sở hữu và sau đó đã nhận quyền từ Infogrames

Phân chia các thế hệ trình phát

  • Trình phát thế hệ 1 được dùng trong "Wizball", dựa trên thiết kế được sử dụng từ năm 1984 đến giữa năm 1987
  • Trình phát thế hệ 2 lần đầu được dùng trong "Athena" và được viết riêng cho trò chơi đó
  • Sau đó, trình phát thế hệ 2 tiếp tục được dùng trong các game như Times Of Lore, Insects In Space

Vì sao điều này quan trọng

  • Cho phép kiểm chứng trực tiếp cách triển khai bên trong của trình phát nhạc C64 và quy trình làm việc thực tế thời đó thông qua mã nguồn gốc
  • Không chỉ dừng ở việc nghe, dự án còn cho phép phân tích và tái sử dụng, giúp hiểu trực tiếp và mở rộng các kỹ thuật làm nhạc game cổ điển

1 bình luận

 
Ý kiến trên Hacker News
  • Có thể nghe bản Wizball tune ở đây
    https://deepsid.chordian.net/?file=/MUSICIANS/G/Galway_Martin/Wizball.sid&subtune=4

    Có thể đổi subtune bằng các mũi tên nhỏ lên/xuống

    • Hay quá. Hồi đó tôi cực thích bản Short Circuit tune, đến mức từng soi mã bằng cartridge monitor
      để thử trích nó ra nhét vào shell player standalone của mình. Có khi tôi đã làm được thật

      Thật vui khi giờ có thể xác nhận từ source những địa chỉ và ý nghĩa mà 40 năm trước chỉ có thể đoán mò

      Nhân tiện, nó cũng có trong Short_circuit.sid của player được link. Cảm ơn

    • Tuyệt thật. Ký ức về việc làm chuyện này cùng bố tôi khoảng 35 năm trước vẫn còn rất rõ

  • Trong file này https://github.com/MartinGalway/C64_music/blob/main/ocean_assembler_directives.txt

    DSP nhiều khả năng là displacement. Nó được dùng cùng với ORG,
    nên có vẻ ORG chỉ định vị trí bộ nhớ nơi mã sẽ chạy, còn DSP thì đẩy mã lùi sâu hơn trong bộ nhớ
    với giả định rằng khi chạy thực tế nó sẽ được chuyển lại về địa chỉ ORG

    DFC có vẻ giống DFM nhưng tạo PETSCII thay vì ASCII

  • Quá tuyệt. Hồi nhỏ tôi rất mê nhạc C64 của Galway, đặc biệt là WizballParallax
    Tôi cũng nhớ là từng định tự viết player bằng assembly, nhưng rồi lại thành thêm một dự án dang dở nữa

    • Thực sự xuất sắc. Không chỉ Galway mà âm nhạc của cả thời đó đều như vậy

      Trong thời Covid, do một chuỗi xui xẻo kỳ quặc, tôi bị kẹt 2,5 tháng ở một nước khác, xa vợ con,
      và tình cờ lại phải ở một mình trong ngôi nhà nơi tôi lớn lên. Tôi lôi chiếc C128 cũ từ gác mái xuống,
      xem YouTube để vệ sinh nó, lau cả ổ đĩa rồi tra chút dầu để chạy lại mấy chiếc đĩa cũ

      Commando vẫn load được, và tôi thường để bản nhạc Rob Hubbard ở màn hình intro phát hàng giờ trong lúc làm việc khác

      Tôi chưa từng tự làm bản SID hay mod-player, nhưng hàng xóm của tôi đã làm Amiga mod player
      cho Atari ST. Chất âm khác đi và cũng ngốn kha khá CPU, nhưng phát 4 kênh thì thật sự làm được

      Gần đây tôi còn ném mấy file DOS .ASM cũ vào Sonnet 4.6 để làm cho chúng biên dịch lại được,
      rồi sau khi biết đến các công cụ như UASM thì cuối cùng cũng build thành công

      Nên tôi nghĩ có lẽ cũng có thể làm vậy với các file C64 assembly này.
      Chắc chỉ cần hỏi LLM cách biên dịch và cách phát trong emulator,
      nhưng sẽ rất hữu ích nếu có một hướng dẫn ngắn là nên bắt đầu từ đâu

      Với mảng DOS .ASM cũ thì bản TL;DR trước đây là "biên dịch bằng UASM miễn phí rồi chạy trong DOSBox"

  • Tôi tự hỏi đã có ai chuyển cái này sang Tidal Cycles hay Strudel JS chưa
    ý là thử dịch nó sang dạng pattern performance dựa trên ký pháp

    Theo AI thì việc dịch khá khó nhưng vẫn khả thi
    https://claude.ai/share/65c16d60-5d27-496b-96a7-40959e95ac62

    Cũng có một bản dịch AI của một số nốt mà Claude cho là giai điệu chính
    https://strudel.cc/#Ci8vIFdpemJhbGwgIklucHV0IE5hbWUiIC0gbWFpbiBtZWxvZHkgKGNoYW5uZWwgMCkKLy8gT3JpZ2luYWw6IE1hcnRpbiBHYWx3YXksIDE5ODcuIE5vdGUgaW5kaWNlcyBmcm9tIEM2NCBTSUQgYXNtCi8vIHRyYW5zbGF0ZWQgYXMgTUlESSA9IGluZGV4ICsgMTIuCgpzZXRjcHMoMTQwLzYwLzQpCgokOiBub3RlKGA8CiAgW2E0IH4gfiBhNF0gW2c0IH4gfiBnNF0gW2YjNCB%2BIH4gfl0KICBbfiB%2BIH4gYjRdIFtiNCBiNCBiNCB%2BXSBbYjQgfiBiNCB%2BXQogIFtkNSBkNSBkNSBkNV0gW2Q1IGQ1IGY1IGQ1XSBbYzUgZDUgYzUgZzRdCiAgW2E0IH4gfiBhNF0gW2c0IGc0IH4gfl0gW2YjNCB%2BIGE0IH5dCiAgW2c0IH4gfiB%2BXQo%2BYCkKICAucygic3F1YXJlIikKICAuYXR0YWNrKC4wMDUpLmRlY2F5KC4wOCkuc3VzdGFpbiguNCkucmVsZWFzZSguMSkKICAubHBmKDIyMDApLmxwcSgzKQogIC5nYWluKC42KQoKLy8gQ2hhbm5lbCAxOiB0aGUgaGlnaCBCNSBjaGltZSB0aGF0IHB1bmN0dWF0ZXMgdGhyb3VnaG91dAokOiBub3RlKCJiNSB%2BIH4gfiB%2BIH4gYjUgfiIuZmFzdCgyKSkKICAucygidHJpYW5nbGUiKQogIC5hdHRhY2soLjAwMSkuZGVjYXkoLjA0KS5zdXN0YWluKDApLnJlbGVhc2UoLjA1KQogIC5nYWluKC4zKQoKLy8gQ2hhbm5lbCAyOiBiYXNzIGxpbmUgLSByb290IG1vdGlvbiBEIC0gQSAtIEcgLSBECiQ6IG5vdGUoIjxkMyBhMiBnMiBkMz4iKQogIC5zKCJzYXd0b290aCIpCiAgLmxwZig4MDApLmxwcSgyKQogIC5hdHRhY2soLjAwNSkuZGVjYXkoLjIpLnN1c3RhaW4oLjYpLnJlbGVhc2UoLjEpCiAgLmdhaW4oLjUpCg%3D%3D

    Và bản theme gốc thật sự rất tuyệt, rất đáng nghe
    https://youtu.be/sFYzjU-C3mA

  • Các bản tune của Green BeretRambo: First Blood Part 2 đến giờ nghe vẫn đáng kinh ngạc, Martin gần như là một phù thủy

  • Việc Martin Galway công khai thứ này thật sự rất đáng trân trọng
    Ước gì chuyện như vậy phổ biến hơn, và các tác giả khi ký hợp đồng với nhà xuất bản
    có thể yêu cầu thời hạn bản quyền ngắn hơn

    Dĩ nhiên, tôi không rõ các tác giả sách còn kiếm được bao nhiêu tiền sau 10, 20 hay 30 năm.
    Có lẽ vẫn có những trường hợp mang lại thu nhập lớn như quỹ di sản JRR Tolkien hay K.K. Rowling,
    nhưng với các tác giả ít nổi tiếng hơn thì đó có thể là một chiến lược khá ổn

    • JRR Tolkien vẫn kiếm được tiền nhờ bản quyền, nhưng tiếc là giờ không thể viết thêm sách nữa
      Điều đó cho thấy rất rõ sự phi lý của luật bản quyền hiện hành
  • Tôi đã nghe slayradio ngắt quãng nhưng liên tục suốt hơn 10 năm
    https://slayradio.org

    • Tôi đã mong có ai đó nhắc đến slayradio. Cộng đồng ở đó thật sự tuyệt vời,
      và tôi cũng đã nghe và chat với họ suốt hàng chục năm nay
  • Cảm giác hoài niệm ùa về. Tôi cực thích GalwayHubbard
    Trong những giới hạn như thế mà họ làm được bao điều thú vị, và giờ nghe lại vẫn hay

    • Tôi lớn lên chủ yếu với cái tên lớn là Hubbard,
      nhưng hồi nhỏ tôi cũng chơi Arkanoid rất, rất nhiều
  • Tôi không đủ lớn để từng trực tiếp trải qua thời kỳ điện toán đó, nhưng tôi biết Cosmic Bakery là cực hay

  • Vì các file source này vượt quá dung lượng RAM của C64,
    nên có lẽ nhạc ban đầu không được phát triển dưới dạng source file như thế này

    • Tôi không rõ Ocean ra sao, nhưng nhiều công ty đã dùng Tatung Einstein làm nền tảng phát triển,
      mà máy đó cũng thuộc loại 64KiB. Dù vậy, phần mềm build các công cụ kiểu này
      vẫn có thể xử lý những file source lớn hơn, không nhất thiết phải nạp hết vào bộ nhớ máy cùng lúc

      Đến thời Wizball phát hành, có thể họ đã chuyển sang Atari ST, máy tương thích IBM hoặc Amiga, nhưng
      việc làm nhạc dưới dạng source file thì vẫn là chuyện bình thường

    • Không hẳn vậy, nhưng một số assembler phổ biến chạy trên C64 dùng văn bản token hóa
      nên có thể nhét được khá nhiều nội dung vào RAM