2016-11-02 7 views
3

У меня есть назначение, которое требует от меня создания игры в сборке NES (сборка 6502). Я хотел бы поместить в него какую-то музыку, но писать код для NES APU вручную - это реально, очень мучительно. Поэтому мне было интересно, знает ли кто-нибудь о музыкальном секвенсере, например Mixcraft, но это выводит файлы .asm, которые я позже могу включить в свой код перед компиляцией.MIDI-секвенсер, который выводит файлы .asm

Должен ли я обращаться к этой теме на music.stackexchange?

Заранее благодарен!

+0

Я не знаю, существует ли такая программа, но, глядя на [некоторую документацию] (http://wiki.nesdev.com/w/index.php/APU) NES APU, она не выглядит например, было бы слишком сложно взять файл MIDI с использованием одного канала для каждого генератора и несколько каналов, указывающих свойства этих генераторов (конверт и т. д.), и скомпилировать его в ASM. Просто мысль. – Linuxios

ответ

0

Ну, после небольшого исследования я нашел небольшое программное обеспечение, которое позволяет мне это делать. Он называется FamiTracker here's the download page.

Интерфейс действительно не так уж хорош, и он требует немного привыкания, но, откровенно говоря, он действительно выполняет то, что мне нужно. Он имеет все каналы NES (2x Square, 1x Triangle и 1x Noise). Хотя я успешно экспортировала очень простую песню, которую я создал в .asm (и вот результат):

; FamiTracker exported music data: musique.ftm 
; 

; Module header 
    .word ft_song_list 
    .word ft_instrument_list 
    .word ft_sample_list 
    .word ft_samples 
    .byte 0 ; flags 
    .word 3600 ; NTSC speed 
    .word 3000 ; PAL speed 

; Instrument pointer list 
ft_instrument_list: 
    .word ft_inst_0 
    .word ft_inst_1 

; Instruments 
ft_inst_0: 
    .byte 16 
    .word ft_seq_2a03_4 

ft_inst_1: 
    .byte 17 
    .word ft_seq_2a03_10 
    .word ft_seq_2a03_9 

; Sequences 
ft_seq_2a03_4: 
    .byte $05, $FF, $00, $00, $02, $01, $02, $03, $02 
ft_seq_2a03_9: 
    .byte $04, $FF, $00, $00, $03, $03, $03, $03 
ft_seq_2a03_10: 
    .byte $05, $FF, $00, $00, $0C, $0A, $08, $07, $06 

; DPCM instrument list (pitch, sample index) 
ft_sample_list: 

; DPCM samples list (location, size, bank) 
ft_samples: 


; Song pointer list 
ft_song_list: 
    .word ft_song_0 

; Song info 
ft_song_0: 
    .word ft_s0_frames 
    .byte 1 ; frame count 
    .byte 128 ; pattern length 
    .byte 6 ; speed 
    .byte 60 ; tempo 
    .byte 0 ; initial bank 


; 
; Pattern and frame data for all songs below 
; 

; Bank 0 
ft_s0_frames: 
    .word ft_s0f0 
ft_s0f0: 
    .word ft_s0p0c0, ft_s0p0c1, ft_s0p1c2, ft_s0p0c1, ft_s0p0c1 
; Bank 0 
ft_s0p0c0: 
    .byte $82, $00, $E1, $31, $29, $2C, $31, $33, $2A, $2E, $33, $35, $2E, $31, $35, $84, $36, $03, $82, $00 
    .byte $35, $31, $2C, $35, $33, $2C, $2A, $33, $2C, $29, $25, $2C, $84, $31, $03, $7F, $5F 

; Bank 0 
ft_s0p0c1: 
    .byte $00, $7F 

; Bank 0 
ft_s0p1c2: 
    .byte $82, $03, $E1, $31, $E0, $30, $2E, $2C, $2A, $29, $2C, $25, $84, $7F, $5F 


; DPCM samples (located at DPCM segment) 

Я до сих пор найти способ на самом деле вставить музыку в моей игре. Я не совсем уверен в процедуре. Я обязательно буду поддерживать этот ответ в актуальном состоянии.