- 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.sidcủa player được link. Cảm ơnTuyệ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à Wizball và Parallax
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
Cuối cùng tôi đành phải tự thử làm
Claude thì hơi gian lận một chút: nó nhận ra file là gì, tải psid từ web xuống,
rồi tìm một wasm sid player và dựng hẳn một website trên đó
https://claude.ai/public/artifacts/df6cdcae-08dc-452b-ba19-ffae2d6546f6
https://claude.ai/share/4dd36c16-bc62-445a-b423-ad4637f06432
GPT-5.5 thì tạo ra cả đống script Python để trích xuất dữ liệu nhạc.
Bản triển khai Strudel thì thất bại, nhưng sau đó tôi cho nó làm website
https://ubiquitous-vacherin-8e7993.netlify.app/
Bên này là kết quả dịch nhạc sang JavaScript dựa trên source assembler
Cả hai đều khá ấn tượng, chỉ là vẫn cần chỉnh sửa lặp đi lặp lại một chút
Tiếc là nó nghe hoàn toàn không giống các track Wizball hay Game Over
Các bản tune của Green Beret và Rambo: 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
Đ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
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 Galway và Hubbard
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
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