2016-11-02 2 views
3

Ich habe eine Zuordnung, die erfordert, dass ich ein Spiel in NES-Assembly (6502 Assembly) zu bauen. Ich würde gerne etwas Musik hineinlegen, aber das Schreiben von Code für die NES APU von Hand ist wirklich schmerzhaft. Ich habe mich also gefragt, ob jemand einen Musiksequenzer wie Mixcraft kennt, der aber ASM-Dateien ausgibt, die ich später in meinen Code aufnehmen kann, bevor ich ihn kompiliere.MIDI-Sequenzer, der .asm-Dateien ausgibt

Soll ich dieses Thema auf music.stackexchange ansprechen?

Vielen Dank im Voraus!

+0

Ich weiß nicht, ob ein solches Programm existiert, aber wenn man auf [einige Dokumentation] (http://wiki.nesdev.com/w/index.php/APU) der NES APU schaut, sieht es nicht aus als wäre es zu schwierig, eine MIDI-Datei mit einem Kanal für jeden Generator und ein paar Kanälen aufzunehmen, die die Eigenschaften dieser Generatoren (Hüllkurve usw.) anzeigen, und sie nach ASM zu kompilieren. Nur ein Gedanke. – Linuxios

Antwort

0

Nun, nach ziemlich viel Forschung, fand ich eine kleine Software, die mir dies ermöglicht. Es heißt FamiTracker here's the download page.

Die Schnittstelle ist wirklich nicht so toll und es dauert ein bisschen gewöhnungsbedürftig, aber ehrlich gesagt, es erreicht wirklich, was ich brauche. Es hat alle NES-Kanäle (2x Square, 1x Triangle und 1x Noise). Obwohl ich erfolgreich ein sehr einfaches Lied exportiert haben, die ich in eine .asm erstellt haben (und hier ist das Ergebnis):

; 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) 

habe ich noch einen Weg finden, um tatsächlich die Musik in meinem Spiel einfügen. Ich bin mir nicht ganz sicher, wie ich vorgehen soll. Ich werde diese Antwort auf dem neuesten Stand halten.

Verwandte Themen