Sida 2 av 2

Postat: 3 november 2005, 20:09:08
av Micket
Hmm. Det lutar nu att använda program som konverterar låtarna till midi/mod, och sedan
spela upp dessa med ljud som så myckey som möjligt liknar orginalet
Det skulle nog bli jävligt mycket lättare än att skriva en hel emulator som förmodligen inte så många chip skulle klara av särskilt väl (eller? jag har inte så stor uppfattning om microkontrollernas styrka)
Är det möjligt att köra en sådan emulator? Kanske man rent av kan sno en hel del kod från emulatorn (jag vet inte om emulator är rätt ord här) som spelaren nosefart använder sig av.

edit: Exile, tack för tipset, men passar verkligen detta så bra? Jag hade inte tänkt att det skulle vara möjligt att tanka på ny musik utan snarare att man läggar in alla låtar som finns direkt i hårdvaran.
Sedan så behöver jag inte mycket utrymme alls. Såvida inte midi/mod formatet tar upp en jäkla massa mer plats.

Postat: 3 november 2005, 20:32:47
av Rymdninja
hehe...vore rätt retro o coolt att ha en diskettstation till spelaren som man lägger sina låter på ...aja..
Har inte kollat nåt på koden som emulerar nintendoljudgrejjset, men jag vet vilket du menar och jag kan tänka mig att en hel del går att låna därifrån.

Jag tycker helt klart att du ska satsa på en emulering ist för en konvertering...

Postat: 3 november 2005, 21:20:17
av Micket
Mmm. emulering. Det kommer ju bli rätt svårt, även med referenser (emulatorn som jag har är visserligen kodad i C men den saknar kommentarer på cirka 80% av koden)

Hur mycket pallar de olika microkontrollerna då?


nsf2midi konverteraren kommer jag inte långt med. Försöker få folk att hjälpa mig på irc då jag inte har windows
Om någon vill prova så finns programmet här
http://gigo.retrogames.com/download.html#nsf2midi
fast på japanska
En lite äldre version finns här
http://www.zophar.net/utilities/converters.html
även på engelska

Sedan är det bara att ta en NSF från zophar.net/nsf

Postat: 3 november 2005, 21:45:54
av Icecap
En 6502 är inte snabb! Och den har aldrig varit det heller!

Nu för tiden är en MCU som tuggar 20MHz standart, då var man HÖG om man hade 2MHz. Varje instruktion i det skumma formatet kan alltså utlösa 10 instruktioner och fortfarande hålla farten.....

Men en sak jag undrar: så lite som jag förstår av vad som skrivits här (ids inte kolla länker o läsa en massa) är det inte kod till 6502'an men till en ljudgeneratorkrets som överförs. Om jag har rätt i det antagende är läget ju lugnt: vilken MCU som helst kan ju skyffla de data över och en 6502 är, förutom hopplöst utdaterat och krånglig även alldeles överflödig.

Postat: 3 november 2005, 22:25:11
av Micket
Icecap
Jag önskar jag kunde svara på din fråga bättre men NSF spec'en går inte igenom mycket utöver headern han själv valt att lägga dit (som för övrigt är väldigt enkel att tolka)
Så vitt jag förstår så är det helt enkelt data direkt rippat från kasetten där man letat upp de bitar som är för musiken.

http://www.zophar.net/tech/files/NESAudioRipping.TXT

Det du frågar om är nog bäst beskrivit i detta dokument, där jag inte kan få det till annat än att musiken är kodat i 6502 assembly



EDIT:
Jag tror vi kan slå fast vid en sak nu, jag citerar från NerdTracker 2s hemsida (en tracker för nes musik)
Q: Can I load my favorite NSF into NT2?

A: Nope, you CANNOT DIRECTLY load NSF rips into NT2; you can only load NT2's native NED format. Even compiled NSF's originally composed by NT2 can't be loaded.

Keep in mind that NSF's are actual 6502 program code (with its own replay engine & all), not simply a work-file that's fed into a music editor. Even if you were able to snip out the NSF header & replay code portion of your favorite NES soundtrack & slap a NED header in place, you still wouldn't be able to load it up in NT2 -- due to the simple fact that every game company's music data structure is different from each other.
Jaja. Jag fick iaf en midi från det där japanska programmet till slut så en möjligheten finns ju också.
Instrumenten kan man ju lägga dit och efterlikna hyffsat väl så det borde väl inte vara några problem att få det att låta likadant.

Men filerna blev nu 30 kb för en låt, istället för 40 kb för 25 låtar, samt att de saknar finesser som att loopas som nästintill alla nes låtar gör.


Edit igen: Så vad tror ni som kan mer om microkontrollers. Pallar dom att köra en hel 6502 emulator?
Eller kan jag få tag i en microkontroller med 6502 cpu?

Postat: 4 november 2005, 04:14:39
av Icecap
OK, då är det lite mer klart.

Att göra en 6502-emulator är nog inte så svårt, hitta databladet o kolla vad den kan och hur lång tid det tar, med en modern processor borde det gå snabbt att greja en emulator och den borde kunna "hänga med", helt enkelt för att den kör "rumpan ur byxorna" på en 6502.

Jag tror faktisk att det största jobbet blir att få den ner i hastighet så att varje instruktion tar lika lång tid som originalt men det är ju ett angenämt problem.

Se bara till att du gör programmet i C, då kan du porta det relativt enkelt om du skulle få för dig att byta processor osv om du vill.

Postat: 4 november 2005, 09:39:05
av Micket
Här kommer en liten bonus, spelaren nosefart använder sig av en nes6502 emulator skrivern i C

:)

Skall kolla närmare på det i helgen, skolan tar upp så mycket tid nu i veckodagarna!

Postat: 4 november 2005, 10:14:26
av Rymdninja
okej..jag gissar lite här nu:
Om man kollar på hårdvaruspecen till nes så ser man att ljudenehten är minnesmapad till en speciell area i minnet. Och ljudenheten har olika register som skrivs för att få olika ljud. Så min gissning är att större delen av ljudkoden består av olika movs eller load. Det borde inte vara så svårt att kolla upp genom att ladda en nsf fil i en hexeditor och kolla på (den troligtvis uberdokumenterade) instruktionsuppsättningen till 6502 för att se om det stämmer (det lämnas så klart som en övning till läsaren ;) ).

Hur som helst, OM det stämmer så är det antagligen en ganska liten del av 6502ans kod som måste emuleras och bara man kan lösa ljudgenereringen på något bra sätt så tror jag att du har ditt på det torra.

Men så klart, jag kan också ha helt fel...

Postat: 4 november 2005, 22:55:31
av Henrik
Jag har för mig att man på c-64:an satte ett register för den typ av ljud man ville ha: sågtand, fyrkant eller sinus. Sen ett annat för frekvensen.

Kommer jag ihåg rätt gjorde man som så när man rippade en låt att man helt sonika klippte ur den programkod som genererade låten. Den var oftast uppbyggd så att den skulle anropas av ett interrupt med konstanta tidsintervall. Det talas lite översiktligt om det i kapitel 4. Spotting Music Code.

Önskar jag kom ihåg mer om det, man kanske skulle packa upp sin gamla trotjänare med final cartridge III och minnas de första kravlande assemblerstegen... :)