Danke Roland, ich schau mir das heute abend mal an. Und meld mich dann, wenn ich das geschafft hab ![]()
Wobble-Effekt für Intro-Logo
-
neoman -
7. Juli 2009 um 16:41 -
Erledigt
Es gibt 60 Antworten in diesem Thema, welches 14.528 mal aufgerufen wurde. Der letzte Beitrag (
-
-
wie roland sagte...

mein erster versuch war das hier: Bitte melde dich an, um diesen Link zu sehen. .... falscher gehts kaum glaub ich

-
Woohoo. Ich bin stolz auf mich. Danke für die ganzen Tipps, es funktioniert jetzt auf jeden Fall nach harter Arbeit

-
Und das ganze jetzt nochmal mit ner Rasterbar und etwas Farbe im Scroller

So langsam macht mir das ganze echt Spass

Bitte mal anschauen und kommentieren. Wie ist denn das mit der Musik? Womit macht man die am besten? Welcher Player erzeugt eine Routine die möglichst wenig Rasterzeit verschwendet? Soviel habe ich nicht mehr übrig....
Oder hat jemand Lust, mir dafür Musik zu geben/machen?
-
Sieht gut aus, aber irgendwie stört es mich, daß Du einen Group-Namen benutzt der schon vergeben ist.

-
Glückwunsch!
Schön, hier mit zu lesen. War sogar teilweise für Nicht-110%-Nerds zu verstehen.
Macht etwas Mut für den Winter, um evtl. dann doch selbst mal mit ASM anzufangen.Weiter so!
-
Der ist nicht vergeben, da fehlt nur ein Wort.

Und bis jetzt war ich zu faul, das Wort (wenn dann klein) mit drunter zu schreiben

Kommt noch!
-
Na, selbst ohne multiplexing hast Du ja noch 8 Sprites frei

Und selbst multiplex sollte sauber gehen - hast ja eh nen stabilen Raster, hehe -
Mann sieht das Mega scharf aus!
Ich wollt ich wüsste auch schon so viel über ASM, bis zu meiner Penison werde ich wohl hoffentlich auch so ein tolles Intro basteln können
Weiter so!
znarF -
yay, sieht doch schon super aus

was mir dazu spontan einfällt.... derartige sinus-basierte effekte wie du sie da benutzt lassen sich relativ leicht, aber dafür recht effektvoll aufpeppen ... in dem du nicht nur eine einzelne sinuswelle sondern mehrere benutzt (zwei reichen schon meisst). also zb für die bewegung der dycp nicht:
yoffs=sinus(framecounter+(xpos*xstep))
sondern etwas in der form
yoffs=sinus1(framecounter1+(xpos*xstep1))+sinus2(framecounter2+(xpos*xstep2))
dabei kann man viel rumspielen was die tabellen, schrittweiten, zähler etc angeht und so interessantere bewegungsmuster erreichen. (tip: für die schrittweiten irgendwelcher counter primzahlen nehmen - dann gibts schön lange perioden bei der resultierenden funktion)
-
Danke sauhund. Sowas kommt dann noch rein

So jetzt die ganze Geschichte mal mit Musik!!!
THX an NecroPolo -
Es war noch Platz für eine rotierende Rasterbar und den Zusatz für das Logo (weil ja oft angemerkt wurde, dass ich einen fremden Groupnamen verwende). Das zweite Wort ist jetzt also auch drin

Schauts euch nochmal an!
Das ist jetzt also fast die finale Version.Danke auf jeden Fall schonmal für all die super Unterstützung hier, insb. bei Roland! Ich habe echt viel gelernt

-
Ein kleiner Kritikpunkt (habe ich zu Beginn meiner DYCP Programmierung auch falsch gemacht).
Ist dir aufgefallen, dass der DYCP nicht sehr flüssig ist? Der "springt" zwischendurch immer so.Woran liegt das?
Es ist ja so, dass du jeden Buchstaben in einer fortlaufenden Sinuswelle auf und ab bewegen willst.
Die Buchstaben sind untereinander 8 Bytes in der Sinuswelle verschoben.
Der Ausgangspointer der Sinuswelle wird jeden Frame um 4 Bytes verringert (auf $c080).
Soweit ist noch alles OK.
Doch nun kommt noch das Scrolling hinzu. Du scrollst mit einer Geschwindigkeit von 1 Pixel (auf $c088 ).
Wenn der Screen nun um 8 Pixel verschoben wurde, erhöhst du den Scrolltextzeiger ($c08c).UND JETZT KOMMT DER FEHLER.
Wenn du die Buchstaben quasi um eine Position nach links verschiebst, musst du natürlich auch den Pointer der Sinuswelle mit verschieben.
Sonst bekommt plötzlich der Buchstabe die falsche Sinushöhe. Nämlich die von seinem Vorgänger.
Also muss da der Sinus-Pointer um 8 Bytes angepasst (in deinem Fall um 8 Bytes erhöht) werden.
Ich hab das mal mit einem JSR auf $c08c realisiert (und das Rücksetzen des $D016 Zeigers von $0a auf Bitte melde dich an, um diesen Link zu sehen. auch in die neue Routine platziert).Jetzt ist der DYCP schön flüssig.
-
Liegt zwar schon länger zurück der Thread... aber mich würde mal interessieren, wie man so einen "Sinus-Scroller" (hoffe das Ding heißt so) realisiert?
Ebenso würd ich gerne wissen, in was für einem Format so ein Logo am besten vorliegen sollte...und mit welchem Proggie am C64 man das am besten macht,
habe bisher nur Erfahrungen mit Koala Painter und vor allem Drazpaint.. (also Multicolor) -
Zu dem Wobble-Kram/Logos kann ich nix sagen. Auf Richard's Seite wird IIRC viel über dieses ominöse Logo-Format fabuliert.
Für diese Art von Scrolling (kann man sicher Sinus Scrolling nennen) gibt es einen schönen Source von Pasi Ojala auf dem Silbertablett:
Bitte melde dich an, um diesen Link zu sehen. -
Moin, danke! klappt prächtig.
Habs eben mal kleine Korrekturen für RELAUNCH64 gemacht:
Code
Alles anzeigen!to "sinus-scroll.prg",cbm SINUS= $CF00 ; Place for the sinus table CHRSET= $3800 ; Here begins the character set memory GFX= $3C00 ; Here we plot the dycp data X16= $CE00 ; values multiplicated by 16 (0,16,32..) D16= $CE30 ; divided by 16 (16 x 0,16 x 1 ...) START= $033C ; Pointer to the start of the sinus COUNTER= $033D ; Scroll counter (x-scroll register) POINTER= $033E ; Pointer to the text char YPOS= $0340 ; Lower 4 bits of the character y positions YPOSH= $0368 ; y positions divided by 16 CHAR= $0390 ; Scroll text characters, multiplicated by eight ZP= $FB ; Zeropage area for indirect addressing ZP2= $FD AMOUNT= 38 ; Amount of chars to plot-1 PADCHAR= 32 ; Code used for clearing the screen *= $C000 SEI ; Disable interrupts LDA #$32 ; Character generator ROM to address space STA $01 LDX #0 LOOP0 LDA $D000,X ; Copy the character set STA CHRSET,X LDA $D100,X STA CHRSET+256,X DEX BNE LOOP0 LDA #$37 ; Normal memory configuration STA $01 LDY #31 LOOP1 LDA #66 ; Compose a full sinus from a 1/4th of a CLC ; cycle ADC SIN,X STA SINUS,X STA SINUS+32,Y LDA #64 SEC SBC SIN,X STA SINUS+64,X STA SINUS+96,Y INX DEY BPL LOOP1 LDX #$7F LOOP2 LDA SINUS,X LSR CLC ADC #32 STA SINUS+128,X DEX BPL LOOP2 LDX #39 LOOP3 TXA ASL ASL ASL ASL STA X16,X ; Multiplication table (for speed) TXA LSR LSR LSR LSR CLC ADC #>GFX STA D16,X ; Dividing table LDA #0 STA CHAR,X ; Clear the scroll DEX BPL LOOP3 STA POINTER ; Initialize the scroll pointer LDX #7 STX COUNTER LOOP10 STA CHRSET,X ; Clear the @-sign.. DEX BPL LOOP10 LDA #>CHRSET ; The right page for addressing STA ZP2+1 LDA #<IRQ ; Our interrupt handler address STA $0314 LDA #>IRQ STA $0315 LDA #$7F ; Disable timer interrupts STA $DC0D LDA #$81 ; Enable raster interrupts STA $D01A LDA #$A8 ; Raster compare to scan line $A8 STA $D012 LDA #$1B ; 9th bit STA $D011 LDA #30 STA $D018 ; Use the new charset CLI ; Enable interrupts and return RTS IRQ INC START ; Increase counter LDY #AMOUNT LDX START LOOP4 LDA SINUS,X ; Count a pointer for each text char and according AND #7 ; to it fetch a y-position from the sinus table STA YPOS,Y ; Then divide it to two bytes LDA SINUS,X LSR LSR LSR STA YPOSH,Y INX ; Chars are two positions apart INX DEY BPL LOOP4 LDA #0 LDX #79 LOOP11 STA GFX,X ; Clear the dycp data STA GFX+80,X STA GFX+160,X STA GFX+240,X STA GFX+320,X STA GFX+400,X STA GFX+480,X STA GFX+560,X DEX BPL LOOP11 MAKE LDA COUNTER ; Set x-scroll register STA $D016 LDX #AMOUNT CLC ; Clear carry LOOP5 LDY YPOSH,X ; Determine the position in video matrix TXA ADC LINESL,Y ; Carry won't be set here STA ZP ; low byte LDA #4 ADC LINESH,Y STA ZP+1 ; high byte LDA #PADCHAR ; First clear above and below the char LDY #0 ; 0. row STA (ZP),Y LDY #120 ; 3. row STA (ZP),Y TXA ; Then put consecuent character codes to the places ASL ; Carry will be cleared ORA #$80 ; Inverted chars LDY #40 ; 1. row STA (ZP),Y ADC #1 ; Increase the character code, Carry won't be set LDY #80 ; 2. row STA (ZP),Y LDA CHAR,X ; What character to plot ? (source) STA ZP2 ; (char is already multiplicated by eight) LDA X16,X ; Destination low byte ADC YPOS,X ; (16*char code + y-position's 3 lowest bits) STA ZP LDA D16,X ; Destination high byte STA ZP+1 LDY #6 ; Transfer 7 bytes from source to destination LDA (ZP2),Y : STA (ZP),Y DEY ; This is the fastest way I could think of. LDA (ZP2),Y : STA (ZP),Y DEY LDA (ZP2),Y : STA (ZP),Y DEY LDA (ZP2),Y : STA (ZP),Y DEY LDA (ZP2),Y : STA (ZP),Y DEY LDA (ZP2),Y : STA (ZP),Y DEY LDA (ZP2),Y : STA (ZP),Y DEX BPL LOOP5 ; Get next char in scroll LDA #1 STA $D019 ; Acknowledge raster interrupt DEC COUNTER ; Decrease the counter = move the scroll by 1 pixel BPL OUT LOOP12 LDA CHAR+1,Y ; Move the text one position to the left STA CHAR,Y ; (Y-register is initially zero) INY CPY #AMOUNT BNE LOOP12 LDA POINTER AND #63 ; Text is 64 bytes long TAX LDA SCROLL,X ; Load a new char and multiply it by eight ASL ASL ASL STA CHAR+AMOUNT ; Save it to the right side DEC START ; Compensation for the text scrolling DEC START INC POINTER ; Increase the text pointer LDA #7 STA COUNTER ; Initialize X-scroll OUT JMP $EA7E ; Return from interrupt SIN !byte 0,3,6,9,12,15,18,21,24,27,30,32,35,38,40,42,45 !byte 47,49,51,53,54,56,57,59,60,61,62,62,63,63,63 ; 1/4 of the sinus LINESL !byte 0,40,80,120,160,200,240,24,64,104,144,184,224 !byte 8,48,88,128,168,208,248,32 LINESH !byte 0,0,0,0,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,2,3 SCROLL !scr "THIS@IS@AN@EXAMPLE@SCROLL@FOR@" !scr "COMMODORE@MAGAZINE@BY@PASI@OJALA@@" ; SCR will convert text to screen codesWar ja nur an gewissen Stellen die Syntax ändern. (zB BYT in !byte ... usw)
Werde mir das jetzt zu Gemüte führen.
-
Zitat
Zu dem Wobble-Kram/Logos kann ich nix sagen.
im einfachsten fall.... nur jede rasterzeile $D016 (also X-Scroll) verändern. da eine kleine sinustabelle durchlaufen lassen und es kommt sowas wie zb im ikari crack intro dabei raus.
-
Zu dem Wobblezeugs kannst du auch einige Beiträge vorher in dem Thread schauen. Da habe ich den Code geposted. Das Logo ist einfach im Koala Format.
-
Zitat von »Roland«
ah, so ist das
jedenfalls ist "deus ex..." ne ganz schön feiste demo, wusste bis dahin gar nicht, dass
interlace mit nem 64er möglich ist...bis denne
plxWo warst du die letzten 18 Jahre?

Geht auch noch besser, momentaner state-of-the-art in interlace hier (hidden part):
Bitte melde dich an, um diesen Link zu sehen.Dee
(auch irgendwie an Deus beteiligt...
-
-