MSU-1
Moderator: ikari_01
- lytron
- Code Bro

- Beiträge: 2664
- Registriert: 12. August 2012, 20:18
- +Positive Tradingpoints+: 12 von 12
- Wohnort: ハノーファー区
- Kontaktdaten:
Re: msu (Erklärung)
Mal zwei doofe Fragen:
1) Kann man den/die MSU-1 auch dazu nutzen, nur High-Quality-Musik abzuspielen? Kann ich bald Wendy Koopa zu "Girls just wanna have fun" killen?
2) Wäre es möglich, z. B. nur auf der oberen Bildschirmhälfte ein Videoablaufen zu lassen, während die untere Hälfte "klassisch" mit Tiles und Sprites funktioniert? Ich habe da eine sehr unkonventionelle Idee...
1) Kann man den/die MSU-1 auch dazu nutzen, nur High-Quality-Musik abzuspielen? Kann ich bald Wendy Koopa zu "Girls just wanna have fun" killen?
2) Wäre es möglich, z. B. nur auf der oberen Bildschirmhälfte ein Videoablaufen zu lassen, während die untere Hälfte "klassisch" mit Tiles und Sprites funktioniert? Ich habe da eine sehr unkonventionelle Idee...
pantalytron: ルトロンはくそのディスアセンブラだよ!
Perikles hat geschrieben:Man muss sich das mal reinziehen: die Idee ist scheiße, die theoretische Ausarbeitung ist scheiße, die praktische Umsetzung ist scheiße und der so entstehende Anspruch noch beschissener.
-
Ocer R.
- Foren-Fossil

- Beiträge: 2592
- Registriert: 30. Dezember 2006, 18:00
- +Positive Tradingpoints+: 166 von 166
- Wohnort: Thüringen
Re: msu (Erklärung)
Sehr schön. Vielen Dank!
!!! CLICK <--- Meine SNES-Sammlung auf snesfreaks.com ---> CLICK !!!Snes-für-immer hat geschrieben:...(gaigig ist nicht da also schnell zuschlagen![]()
![]()
)
!!! CLICK <--- Meine GameBoy-Sammlung auf gameboyland.de ---> CLICK !!!
- wrampi
- Mr SNES

- Beiträge: 1821
- Registriert: 11. Januar 2009, 15:32
- +Positive Tradingpoints+: 11 von 11
- Wohnort: Lemförde
Re: msu (Erklärung)
@lytron
zu 1
im prinzip ja. nur du mußt dann im rom des spiels den soundchip hacken, so das er in den moment eine msu datei abspielt.
zu2
nein, das geht nicht. so hab ich das verstanden.
zu 1
im prinzip ja. nur du mußt dann im rom des spiels den soundchip hacken, so das er in den moment eine msu datei abspielt.
zu2
nein, das geht nicht. so hab ich das verstanden.
Tester vom SD2SNES
SD2SNES blog hier : http://sd2snes.de/blog/
SD2SNES blog hier : http://sd2snes.de/blog/
- lytron
- Code Bro

- Beiträge: 2664
- Registriert: 12. August 2012, 20:18
- +Positive Tradingpoints+: 12 von 12
- Wohnort: ハノーファー区
- Kontaktdaten:
Re: msu (Erklärung)
Dannke für die Info, wrampi!
Hm. Das macht die Einsatzmöglichkeiten für die MSU-1 auch eher begrenzt. Damit kann man dann eben "nur" FMVs und nicht gesamplete Musik abspielen. Was ansich selbstverständlich schon Features sind, für die sich die SNES-Entwickler vor zwanzig Jahren die Beine ausgerissen hätten.
Apropos: Wahrscheinlich gibt es dann bald einen MSU-1-Hack von Tales of Phantasia? Da gab es doch einige Lieder, die aufgrund der Kompression total vergurkt wurden, oder?
Hm. Das macht die Einsatzmöglichkeiten für die MSU-1 auch eher begrenzt. Damit kann man dann eben "nur" FMVs und nicht gesamplete Musik abspielen. Was ansich selbstverständlich schon Features sind, für die sich die SNES-Entwickler vor zwanzig Jahren die Beine ausgerissen hätten.
Apropos: Wahrscheinlich gibt es dann bald einen MSU-1-Hack von Tales of Phantasia? Da gab es doch einige Lieder, die aufgrund der Kompression total vergurkt wurden, oder?
pantalytron: ルトロンはくそのディスアセンブラだよ!
Perikles hat geschrieben:Man muss sich das mal reinziehen: die Idee ist scheiße, die theoretische Ausarbeitung ist scheiße, die praktische Umsetzung ist scheiße und der so entstehende Anspruch noch beschissener.
- wrampi
- Mr SNES

- Beiträge: 1821
- Registriert: 11. Januar 2009, 15:32
- +Positive Tradingpoints+: 11 von 11
- Wohnort: Lemförde
Re: msu (Erklärung)
hab was hochgeladen. einmal bei rapidshare und es wird grade auch in der snes cloud hochgeladen. das war ein versprechen an fieserwolf, das ich das mache. vileicht hilft es ja ihn zu übereden auch was auf snes zumachen an musik.
https://rapidshare.com/files/1058253636 ... f-NETT.rar
ich mache die tage noch mehr, ob ihr es mögt oder nicht.
https://rapidshare.com/files/1058253636 ... f-NETT.rar
ich mache die tage noch mehr, ob ihr es mögt oder nicht.
Tester vom SD2SNES
SD2SNES blog hier : http://sd2snes.de/blog/
SD2SNES blog hier : http://sd2snes.de/blog/
- lytron
- Code Bro

- Beiträge: 2664
- Registriert: 12. August 2012, 20:18
- +Positive Tradingpoints+: 12 von 12
- Wohnort: ハノーファー区
- Kontaktdaten:
Re: msu (Erklärung)
Hat hier jemand einen möglichst simplen MSU-(Sound)-Player-Sourcecode herumliegen? Ich würde mich gern mal damit beschäftigen, besonders mit dem Audiozeug (wie man Videos abspielen kann, ist gerade für mich eher zweitrangig), und es wäre leichter, wenn man bestehendes untersuchen kann, statt sich mit byuus Dev-Anleitung da von vorne reinzufrimeln. Man braucht ja das Rad nicht zweimal erfinden. 
ikari_01, hast du da noch was rumfliegen?
ikari_01, hast du da noch was rumfliegen?
pantalytron: ルトロンはくそのディスアセンブラだよ!
Perikles hat geschrieben:Man muss sich das mal reinziehen: die Idee ist scheiße, die theoretische Ausarbeitung ist scheiße, die praktische Umsetzung ist scheiße und der so entstehende Anspruch noch beschissener.
-
snoer
- SNES-Programmer

- Beiträge: 249
- Registriert: 27. Januar 2013, 13:10
- +Positive Tradingpoints+: 5 von 5
Re: msu (Erklärung)
hier ist der player von luigiblood
http://www.mediafire.com/download.php?qzsvikjlldlklwp
edit: ist aber ohne quellcode soweit ich das sehe.
hab den link hierher.
http://www.nesforum.fr/showthread.php?tid=166&pid=1547
(da gibts auch ein screenshot)
http://www.mediafire.com/download.php?qzsvikjlldlklwp
edit: ist aber ohne quellcode soweit ich das sehe.
hab den link hierher.
http://www.nesforum.fr/showthread.php?tid=166&pid=1547
(da gibts auch ein screenshot)
- ChronoMoogle
- snesfreaks.com-Team

- Beiträge: 9895
- Registriert: 26. Februar 2007, 14:56
- +Positive Tradingpoints+: 98 von 98
- Wohnort: Nippon
- Kontaktdaten:
Re: msu (Erklärung)
Ihatovo Monogatari-Orchestration Hack? Ihatovo Monogatari-Orchestration Hack.lytron hat geschrieben:Ich würde mich gern mal damit beschäftigen

| Mein YT Channel | Mein Twitter | Ich suche | Ich verkaufe | Foren SuFu |
...weil Terranigma einfach das Größte ist!
- lytron
- Code Bro

- Beiträge: 2664
- Registriert: 12. August 2012, 20:18
- +Positive Tradingpoints+: 12 von 12
- Wohnort: ハノーファー区
- Kontaktdaten:
Re: msu (Erklärung)
ChronoMoogle hat geschrieben:Ihatovo Monogatari-Orchestration Hack? Ihatovo Monogatari-Orchestration Hack.lytron hat geschrieben:Ich würde mich gern mal damit beschäftigen
pantalytron: ルトロンはくそのディスアセンブラだよ!
Perikles hat geschrieben:Man muss sich das mal reinziehen: die Idee ist scheiße, die theoretische Ausarbeitung ist scheiße, die praktische Umsetzung ist scheiße und der so entstehende Anspruch noch beschissener.
- Ramsis
- SNES-Freak

- Beiträge: 538
- Registriert: 29. Dezember 2011, 15:33
- +Positive Tradingpoints+: 3 von 3
- Wohnort: Löwenhöhle :3
- Kontaktdaten:
Re: msu (Erklärung)
Ich bin zwar nicht ikari_01, aber ich hab da gewissermaßen noch was rumfliegen.lytron hat geschrieben:Hat hier jemand einen möglichst simplen MSU-(Sound)-Player-Sourcecode herumliegen? (...)
ikari_01, hast du da noch was rumfliegen?
Der Code selber ist simpel und lässt sich im Prinzip direkt in eins der bekannten Beispiel-Homebrew-ROMs einpflanzen. Ich hab vor einiger Zeit testweise nevikstis Starter-Kit benutzt, man kann aber auch ein beliebiges anderes nehmen.
Wichtig ist, dass man dem SPC700 quasi miteilt, dass er Passthrough aktiviert, bevor PCM wiedergegeben werden kann. Diese Info habe ich von ikari selbst (hier). Irgendwie klappte das Ganze bei meinem ersten Test trotzdem nicht. Ich hab dann irgendwo gelesen, dass man zusätzlich noch die Echo Volume auf beiden Kanälen deaktivieren muss - weiß leider nicht mehr, wo. (Finde auch gerade den Dev-Guide nicht mehr online, den ich benutzt habe - es war nicht der von byuu.)
Hier also der relevante Code-Teil (!), einzusetzen in eine Main-Sektion. Der SPC-Upload-Code stammt von ikari/blargg/necronomfive (?), der Maschinen-Code für den SPC700 von ikari (glaube ich). Der Starterkit kann am besten mit WLA DX kompiliert werden. Die WAV-Dateien müssen natürlich erst mit einem Tool (hieß wav2msu und war auch von ikari, IIRC) konvertiert und entsprechend benannt werden (track-01.pcm oder so).
Wenn's denn mal läuft - und das tat es letztlich - macht das Ganze durchaus Laune.
Code: Alles auswählen
; *************************** DEFINES
; status bits
.DEFINE XY_8BIT $10
.DEFINE A_8BIT $20
; SPC700 I/O registers
.equ APUIO0 $2140
.equ APUIO1 $2141
.equ APUIO2 $2142
.equ APUIO3 $2143
; MSU1 registers
.define MSU_STATUS $2000
.define MSU_READ $2001
.define MSU_ID $2002
.define MSU_SEEK $2000
.define MSU_TRACK $2004
.define MSU_VOLUME $2006
.define MSU_CONTROL $2007
; *************************** MAIN CODE
CheckForMSU:
lda MSU_ID
cmp #'S'
beq +
brl NoMSU
+ lda MSU_ID+1
cmp #'-'
bne NoMSU
lda MSU_ID+2
cmp #'M'
bne NoMSU
lda MSU_ID+3
cmp #'S'
bne NoMSU
lda MSU_ID+4
cmp #'U'
bne NoMSU
lda MSU_ID+5
cmp #'1'
bne NoMSU
MSUFound:
; SPC700 pass-through enabling needed, source: http://board.byuu.org/viewtopic.php?p=65217#p65217
php
sep #A_8BIT
rep #XY_8BIT
sei ; Disable NMI & IRQ
stz $4200
; ---- Begin upload
ldy #$0002
jsr spc_begin_upload
; ---- Upload SPC700 pass-through code
ldx #$0000
-
lda.w spccode,x
jsr spc_upload_byte
inx
cpy #41 ; size of spc code
bne -
; ---- Execute loader
ldy #$0002
jsr spc_execute
lda #$81 ; VBlank NMI + Auto Joypad Read
sta $4200 ; re-enable VBlank NMI
cli
plp
SetCursorPos 0, 0
PrintString "Playing a PCM tune :-)\n"
jsr PlayTrack
; lda MSU_STATUS
; sta temp
; PrintHexNum temp
bra ForeverLoader
NoMSU:
SetCursorPos 0, 0
PrintString "No MSU1 media enhancement hardware found!"
bra ForeverLoader
PlayTrack:
; ldx #$0000
; stx MSU_SEEK ; zero out data port address
; stx MSU_SEEK+2
;- bit MSU_STATUS ; wait for the data port busy bit to clear
; bmi -
lda #$00
sta MSU_VOLUME
ldx #$0001
stx MSU_TRACK
- bit MSU_STATUS ; Wait for the Audio Busy bit to clear.
bvs -
lda #$01 ; Set audio state to play, no repeat.
sta MSU_CONTROL
lda #$00
- inc a
wai
sta MSU_VOLUME
cmp #$FF
bne -
; The MSU1 will now start playing.
; Use lda #$03 to play a song repeatedly.
rts
ForeverLoader:
lda #$81
sta $4200 ; turn on NMI
ForeverLoop:
wai ; wait for next frame
bra ForeverLoop
; ************************ SPC700 pass-through *************************
spc_begin_upload:
sty APUIO2 ; Set address
ldy #$BBAA ; Wait for SPC
-
cpy APUIO0
bne -
lda #$CC ; Send acknowledgement
sta APUIO1
sta APUIO0
- ; Wait for acknowledgement
cmp APUIO0
bne -
ldy #0 ; Initialize index
rts
spc_upload_byte:
sta APUIO1
tya ; Signal it's ready
sta APUIO0
- ; Wait for acknowledgement
cmp APUIO0
bne -
iny
rts
spc_execute:
sty APUIO2
stz APUIO1
lda APUIO0
inc a
inc a
sta APUIO0
; Wait for acknowledgement
-
cmp APUIO0
bne -
rts
spccode:
.byt $e8, $6c ; - MOV A, #$6c ; FLG register
.byt $c4, $f2 ; MOV $f2, A
.byt $e8, $20 ; MOV A, #$20 ; unmute, disable echo
.byt $c4, $f3 ; MOV $f3, A
.byt $78, $20, $f3 ; CMP $f3, #$20
.byt $d0, $f3 ; BNE -
.byt $e8, $2c ; - MOV A, #$2c ; Echo volume left
.byt $c4, $f2 ; MOV $f2, A
.byt $e8, $00 ; MOV A, #$00 ; silent
.byt $c4, $f3 ; MOV $f3, A
.byt $78, $00, $f3 ; CMP $f3, #$00
.byt $d0, $f3 ; BNE -
.byt $e8, $3c ; - MOV A, #$3c ; Echo volume right
.byt $c4, $f2 ; MOV $f2, A
.byt $e8, $00 ; MOV A, #$00 ; silent
.byt $c4, $f3 ; MOV $f3, A
.byt $78, $00, $f3 ; CMP $f3, #$00
.byt $d0, $f3 ; BNE -
.byt $2f, $fe ; - BRA -
- lytron
- Code Bro

- Beiträge: 2664
- Registriert: 12. August 2012, 20:18
- +Positive Tradingpoints+: 12 von 12
- Wohnort: ハノーファー区
- Kontaktdaten:
Re: msu (Erklärung)
Öhm, UI! O_O
Hallöle Ramsis,
ich hatte nicht mit dir gerechnet, das ist alles!
Danke dir für den Code, ich werde mich da mal reinfuchsen und dann nochmal ein Statement zu geben. Bitte vergib, wenn das ein bisschen brauchen wird.
Hallöle Ramsis,
ich hatte nicht mit dir gerechnet, das ist alles!
Danke dir für den Code, ich werde mich da mal reinfuchsen und dann nochmal ein Statement zu geben. Bitte vergib, wenn das ein bisschen brauchen wird.
pantalytron: ルトロンはくそのディスアセンブラだよ!
Perikles hat geschrieben:Man muss sich das mal reinziehen: die Idee ist scheiße, die theoretische Ausarbeitung ist scheiße, die praktische Umsetzung ist scheiße und der so entstehende Anspruch noch beschissener.
-
d4s
- Moderator

- Beiträge: 345
- Registriert: 13. Juni 2006, 16:11
- +Positive Tradingpoints+: 1 von 1
- Kontaktdaten:
Re: msu (Erklärung)
Das ist selbstverständlich möglich.lytron hat geschrieben: 2) Wäre es möglich, z. B. nur auf der oberen Bildschirmhälfte ein Videoablaufen zu lassen, während die untere Hälfte "klassisch" mit Tiles und Sprites funktioniert? Ich habe da eine sehr unkonventionelle Idee...
Bevor du hier aber auf die falsche Fährte kommst:
Das MSU1 bietet keinerlei Spezialfeatures, die dich beim Abspielen von Videos unterstützen oder es gar automatisieren.
Alles, was das MSU1 bereitstellt, sind eine Menge Speicher und Audio-Tracks.
Den Videoplayer und alles, was dazu gehört, musst du selbst schreiben, wenn du nicht gerade die Dünnbrettbohrervariante wählst und den Player aus Ikaris Videodemo unverändert übernimmst, so wie das der ein oder andere ohne Programmierkenntnis bereits getan hat.
In letzterem Fall kannst du das von dir genannte natürlich knicken.
Problematisch ist, dass beim SNES weder die Größe des VRAM noch die Bandbreite dorthin ausreichen, um bei nativer Auflösung Vollbildvideo mit 256 Farben bei akzeptablen Framerates zu ermöglichen.
Die beiden vorhandenen Player gehen daher Kompromisse ein:
Ikaris Player zeigt das Video rundherum mit dicken schwarzen Balken.
Mein Player zeigt das Video von einem schwarzen Balken oben abgesehen in Vollbild, ist aber auf 15 Farben pro 8x8 Tile begrenzt. Ausserdem führt der zugehörige Videokonverter ähnlich aussehende Tiles zusammen, um die benötigte Bandbreite zu begrenzen. Dies sind die Gründe für die "Blöckchenbildung", die szenenabhängig mal mehr, mal weniger auffällt.
Wenn du ernsthaft daran interessiert bist, was auf MSU1 zu machen, empfehle ich dir einen Blick in den Super Road Blaster Sourcecode (z.B. hier: https://github.com/DocSchoko/SNES-Super ... msu1.65816 ) zu werfen.
Im Gegensatz zu Codeschnipseln aus Tutorials hat der den Vorteil, bereits einige Zeit im praktischen Einsatz gereift und auf verschiedenen SNES-Varianten getestet worden zu sein.
Dort werden auch Eigenarten des sd2snes behandelt, die zu debuggen einige Mühe gekostet hat.
- lytron
- Code Bro

- Beiträge: 2664
- Registriert: 12. August 2012, 20:18
- +Positive Tradingpoints+: 12 von 12
- Wohnort: ハノーファー区
- Kontaktdaten:
Re: msu (Erklärung)
Vielen lieben Dank euch! 
Ich möchte mich in jedem Fall damit mal intensiv auseinandersetzen, deswegen bin ich für die bisherige Materialsammlung sehr dankbar. Aber bittet erwartet bei meinem bisherigen Arbeitstempo nicht allzubald Ergebnisse!
Ich werde mich auf jeden Fall damit näher beschäftigen, danke!
Ich möchte mich in jedem Fall damit mal intensiv auseinandersetzen, deswegen bin ich für die bisherige Materialsammlung sehr dankbar. Aber bittet erwartet bei meinem bisherigen Arbeitstempo nicht allzubald Ergebnisse!
Ich werde mich auf jeden Fall damit näher beschäftigen, danke!
pantalytron: ルトロンはくそのディスアセンブラだよ!
Perikles hat geschrieben:Man muss sich das mal reinziehen: die Idee ist scheiße, die theoretische Ausarbeitung ist scheiße, die praktische Umsetzung ist scheiße und der so entstehende Anspruch noch beschissener.
MSU-1
Hi!
Ich versuche mich gerade mit dem Konvertieren von Videos für den MSU1 und das Chrono Trigger Intro bereitet mir ziemliche Kopfschmerzen. Ich bekomme es einfach nicht hin Bild und Ton synchron zu halten.
Zuvor habe ich mit dem Vandread Video geübt und dort keine Probleme gehabt.
Hier mal mein Vorgehen für das Vandread Video, für Chrono Trigger habe ich einfach die Dateinamen ausgetauscht:
Nun zum Chrono Trigger Opening:
Das einzige was ich bisher machen konnte ist, die Framerate durch Probieren in ffmpeg so zu erzwingen, dass Bild und Ton einigermaßen synchron sind. In der MSU Datei stelle ich die Frames dann auf 29.97.
Aber das kanns ja nicht sein. Wo liegt mein Fehler? Ist die Videoquelle einfach Müll oder entgehen mir da wichtige Schritte die ich noch durchführen müsste?
Ich versuche mich gerade mit dem Konvertieren von Videos für den MSU1 und das Chrono Trigger Intro bereitet mir ziemliche Kopfschmerzen. Ich bekomme es einfach nicht hin Bild und Ton synchron zu halten.
Zuvor habe ich mit dem Vandread Video geübt und dort keine Probleme gehabt.
Hier mal mein Vorgehen für das Vandread Video, für Chrono Trigger habe ich einfach die Dateinamen ausgetauscht:
versteckter Inhalt:
Nun zum Chrono Trigger Opening:
versteckter Inhalt:
Aber das kanns ja nicht sein. Wo liegt mein Fehler? Ist die Videoquelle einfach Müll oder entgehen mir da wichtige Schritte die ich noch durchführen müsste?
Zuletzt geändert von MStar am 20. Oktober 2013, 18:48, insgesamt 1-mal geändert.
