What's new
iamretro

Wow! It seems you have yet to create an account with us! Needless to say, you have to register in order to get the full "iamretro" experience! You will then be able to create your own topics, reply to posts and be an active member of the MOST prolific community in Greece (even further than that, but we're being modest for now). So don't delay! REGISTER!

Εισαγωγή σε βασικά εφέ και ορολογία των C64 demos

geoanas

Commodore Vampire
Staff member
Comrade
Joined
Oct 21, 2012
Messages
7,309
Είναι γνωστό ότι τα demos είναι στην ουσία κώδικας που «σπρώχνει» τον υπολογιστή μας στα όρια του ή και πέρα από αυτά. Είναι σχεδιασμένα για να αναδείξουν και να επιδείξουν όλες τις τεχνικές ικανότητες (γραφικά, μουσική, τρόπος και ταχύτητα μεταφοράς δεδομένων κλπ) σε ένα μεγάλο ακροατήριο χρηστών (και μη) του αγαπημένου μου μηχανήματος. Για την κατασκευή ενός demo συμμετέχει μια μεγάλη ομάδα δημιουργών αποτελούμενη από προγραμματιστές, γραφίστες, μουσικούς κλπ. Οι ομάδες αυτές, γνωστές ως groups συμμετέχουν συχνά σε partys με σκοπό φυσικά την ανάδειξη του καλύτερου.

Ένα demo μπορεί να γίνει και από μεμονωμένα άτομα. Έτσι αρκεί ένας δημιουργός, με την βοήθεια λίγου κώδικα για να μπορέσουμε να θαυμάσουμε μια υπέροχη εικόνα, να ακούσουμε μια όμορφη μελωδία ή να δούμε μερικά εντυπωσιακά εφέ. Ο παραπάνω κώδικας θα χρησιμεύσει για να φορτώσει (loader) και να εκτελέσει (player) το αρχείο. Τα demos αυτά είναι συνήθως μικρά σε μέγεθος. Στις περισσότερες περιπτώσεις αποτελούνται από ένα και μοναδικό εκτελέσιμο αρχείο (.prg) και είναι γνωστά ως one filer(s) ή one file demos. Αναλόγως του είδους τους χωρίζονται σε intros, cracktros, dentros, invitations κλπ.

Τα γνωστά σε όλους μας full demosdemos) αποτελούνται από αρκετά επιμέρους αρχεία (μουσικής, γραφικών κλπ) δεμένα μεταξύ τους με συμπαγή και βελτιστοποιημένο κώδικα ώστε η παρουσίαση στη οθόνη να γίνεται με τρόπο γρήγορο, συνεχές και χωρίς διακοπές. Ο συνδυασμός και η εναλλαγή εικόνων και γραφικών εφέ πρέπει να «γλυκαίνει το μάτι» (eye candy) και φυσικά η μουσική υπόκρουση να είναι σχετική με το θέμα του demo.

Τα περισσότερα από τα οπτικά εφέ (visuals) βασίζονται κυρίως στα “αχαρτογράφητα ύδατα” του ολοκληρωμένου chip που χρησιμοποιείται για την απεικόνιση στον C64, του γνωστού μας MOS VIC-II. Εδώ φυσικά αναφέρομαι σε χαρακτηριστικά, εντολές ή λειτουργίες του VIC-II που δεν ανήκουν στην επίσημη λίστα που διέθετε ο κατασκευαστής ταυτόχρονα με την εμπορική κυκλοφορία του chip στους προγραμματιστές. Τα χαρακτηριστικά αυτά είναι γνωστά ως undocumented instructions ή illegal opcodes.
Η απόκρυψη τέτοιων στοιχείων ήταν συνηθισμένη τις δεκαετίες του ’70 και του ’80 . Την συναντάμε σε αρκετούς επεξεργαστές της εποχής εκείνης όπως τους 6502, Z80, 8086 κλπ. Δεν ήταν κάτι εσκεμμένο, ούτε αποτελούσε καμιά θεωρία συνομωσίας. Οφείλονταν κυρίως σε κατασκευαστικές, ας πούμε «απροσεξίες», αφού οι έλεγχοι ποιότητας των chips απείχαν παρασάγγας από τα σημερινά standards. Έτσι κάποια «παραπανίσια» ή “ελλιπής» εσωτερική σύνδεση transistors οδηγούσε σε λειτουργίες του chip, που δεν είχαν σχεδιαστεί για να υπάρχουν. Πολλές από αυτές τις παράτυπες λειτουργίες δεν είχαν κανένα αντίκτυπο. Ελάχιστες οδηγούσαν σε crash του chip και συνήθως διορθώνονταν κατά τα στάδια της παραγωγής. Κάποιες όμως, λιγοστές σε αριθμό, μας οδηγούσαν σε κάτι όμορφο και κυρίως χρήσιμο. Κάποιες επιτάχυναν ορισμένες διαδικασίες ενώ κάποιες άλλες μας έδιναν πανέμορφα εφέ. Όλα αυτά τα στοιχεία ερχόταν στην επιφάνεια, το ένα μετά το άλλο, όσο οι προγραμματιστές ανακάλυπταν το μηχάνημα και εμβάθυναν σε αυτό. Αν ψάξει κάποιος στο internet θα βρει πλήθος από web pages, που περιέχουν θησαυρούς από τέτοιους αναλυτικούς καταλόγους και προγραμματιστικά κόλπα.

Παραθέτω κάποια χρήσιμα links για όσους θέλουν να ψάξουν περισσότερο :

How MOS 6502 illegal opcodes really work
:arrow: http://www.pagetable.com/?p=39

Από τους εκπληκτικούς “Oxyron” έχουμε τόνους πληροφοριών :
:arrow: http://www.oxyron.de/html/opcodes02.html

Από το την παρακαταθήκη του θεματοφύλακα CodeBASE 64
:arrow: http://codebase64.org/doku.php?id=base:6510_8502_undocumented_commands

Η λίστα με τους χρήσιμους συνδέσμους δεν έχει τέλος…

Ας περάσουμε τώρα στην αναφορά κάποιων όρων που μπορεί να συναντήσει κάποιος που ασχολείται με την C64 demo scene.
Ακολουθεί η παράθεση [quoting] όπως τους βρήκα σε διάφορες πηγές που τις αναφέρω στο τέλος και η επεξήγηση τους (Όσο μου ήταν εφικτό με μετάφραση ή/και videos).

SPRITE SCROLLERS

Sprite scrollers were placed in the border. By tricking the hardware not to draw the border around the screen, sprites could be moved into this area and displayed.
Sprites were multiplexed across vertical raster lines (over 8 sprites, sometimes up to 120 sprites). A common perception is that no more than 8 sprites could appear at once on the screen, but assigning new Y coordinates once it has started being drawn made it reappear further down the screen.


Sprite Scrollers. Όπως το λένε και οι λέξεις. Χρησιμοποιούνται μεγάλα sprites που κυλούν ομαλά προς μια ή πολλαπλές κατευθύνσεις. Η κύλιση (scrolling) γίνεται από τη μια άκρη του περιθωρίου της οθόνης προς την άλλη. Αρκετές φορές τα sprites ξεκινούν και πάνω από τα περιθώρια χωρίς να υπολογίζουν όρια, δίνοντας πολύ εντυπωσιακά αποτελέσματα (όπως στο Bobby Border part του Camel Park των Camelot)

Camelot – CamelPark :arrow: (15:49)

Sprites Multiplexing across Raster lines. Αρκετές φορές βλέπουμε να εμφανίζονται πολύ περισσότερα sprites από το επιτρεπόμενο όριο (Πάνω από 8 και σε κάποιες περιπτώσεις μέχρι και 120 sprites)

The Dreams-Darwin 100% Demo :arrow: (3:14)

FLD - Flexible Line Distance

FLD: (Flexible Line Distance). You can have variable distance between the lines, which is referred to as charlines (= 8 pixel lines). So this means top-down: 8 lines of graphics, some empty lines, another 8 lines of graphics, more empty lines, and so on...Note, the 'empty lines' may of course be *empty* themselves ;) which then gives us 16 (or more) lines of grapics

C64 FLD Flexible Line Distance (Example)

FPD - Flexible Pixel Distance

FPD: (Flexible Pixel Distance). You can have variable distance between each pixel lines, Top-down: 1 line of gfx, some empty space, another line of gfx, empty space, etc.. Example: The remake of the good old 'Starion Intro' by Booze Design.

Booze Design – Starion Intro Remake

FPP - Flexible Pixel Positioning

The two prior effects (FLD and FPD) are just able to 'stretch' the graphics by putting empty space inbetween. With FPP you can put *any* line of the graphics *anywhere* on the screen (vertically). Example: Yes, the Crest-logo in Krestage.

FPP: (Flexible Pixel Positioning). Basically a variation of the FLI mode, allows the placement of any line of a character-based graphic at any one y-position, allowing for effects like x-rotating logos, barrel-like effects or smooth stretching and waving over the whole screen.

Oxyron – Parts :arrow: (5:16)

Περισσότερη συζήτηση, εδώ :
http://www.lemon64.com/forum/viewtopic.php?t=45898&sid=5a5a6719bee40c4cf5e356fccbb77220
και…
http://csdb.dk/forums/index.php?roomid=10&topicid=3350

FLI - Flexible Line Interpretation

FLI, or Flexible Line Interpretation, can be used to increase the number of unique colors which can appear in an 8×8 or 8×4 block on the screen. This mode is occasionally extended further with sprites and/or interlacing two bitmaps together (as in SHIFLI or UIFLI). These modes usually cause the left-most 24 pixels of the display to become unusable.

Εδώ δεν θα κάνω καμία μετάφραση παρά σας παραπέμπω στην συνέντευξη του Algo που είχα ανεβάσει στην κεντρική σελίδα του iamretro :
English: :arrow: http://www.iamretro.gr/introducing-algorithm/
Greek: :arrow: http://www.iamretro.gr/γνωρίστε-τον-algorithm/

Επίσης δείτε και το καταπληκτικό demo των Crest / Oxyron - Deus Ex Machina :arrow: (1:04)

TEC-TEC / TECH-TECH/ TIC-TAC

Tec-Tec (also Tech-Tech or Tic Tac) assigns a new x-position to any line of a graphic. By using animated sine waves you could for example wave a logo horizontally over the screen.

Tec-Tec (Tech-Tech ή Tic Tac). Σε κάθε γραμμή ενός graphic, έχουμε κίνηση κατά τον οριζόντιο άξονα Χ. Με χρήση ημιτονοειδούς κύματος θα μπορούσαμε για παράδειγμα να δώσουμε σε ένα λογότυπο ή ένα bitmap μια οριζόντια κυματιστή κίνηση στην οθόνη.

Rawhead - Pimple Squeezer 3

VSP - Variable Screen Positioning

VSP (Variable Screen Positioning), also known as HSP, allows arbitrary x-placement of a bitmap, with the bitmap wrapping around at the border.

VSP (Variable Screen Positioning), επίσης γνωστό και ως HSP.
Επιτρέπει την τυχαία κίνηση ενός bitmap με οριζόντια κατεύθυνση. Το bitmap δείχνει να κρύβεται ή να «τυλίγεται» στα περιθώρια της οθόνης.


LINECRUNCHER

Linecruncher Allows to scroll a bitmap larger than one screen vertically without having to move all the bitmap data manually.

Linecruncher. Eπιτρέπει την κύλιση ενός bitmap (μεγαλύτερου σε ανάλυση της μιας οθόνης), με κάθετη κατεύθυνση, χωρίς να χρειάζεται να μεταφερθούν όλα τα δεδομένα του bitmap χειροκίνητα.

Chorus – Irrational

AGSP - Any Given Screen Position

AGSP (Any Given Screen Position) is the combination of VSP and Linecruncher, for example making possible games with colorful bitmap graphics that scrolled, such as Hannes Sommer's "Fred's Back" series.

AGSP (Any Given Screen Position). Αποτελεί συνδυασμό κίνησης των VSP και Linecruncher.



ΠΗΓΕΣ :

Illegal Opcodes (Wikipedia)
https://en.wikipedia.org/wiki/Illegal_opcode

Commodore 64 demos
https://en.wikipedia.org/wiki/Commodore_64_demos

Introduction to demo coding – Colorful raster bars code
http://z9.io/2008/01/11/introduction-to-c64-demo-coding/

Slideshow Code – Make your own slideshows with music (Italian)
http://www.associazione64.it/home/t...slideshow-con-foto-e-musica-sul-commodore-64/

(Πολύ αναλυτικές επεξηγήσεις! Με λίγο μελέτη και 2-3 απλές κινήσεις, έφτιαξα μόνος μου κάποια slideshows που σας έχω παρουσιάσει κι εδώ) ;) Π.χ.



An Introduction to Programming C64 Demos, by Puterman
http://z9.io/wp-content/uploads/2008/01/intro-to-programming-c64-demos.html

Αυτά τα ολίγα :mrgreen:
 

nkary

Too Retro to post!
Comrade
Joined
May 20, 2012
Messages
4,431
Άρε geo, δώσε πράμα στο λαό :)
 

geoanas

Commodore Vampire
Staff member
Comrade
Joined
Oct 21, 2012
Messages
7,309
...και που είσαι ακόμα !! Έχω ανοίξει μεγάλες δουλειές με αρκετούς C64 sceners και σας ετοιμάζω ωραία πράγματα ;) Την υγειά μας να έχουμε και από διάθεση είμαι στα κόκκινα :lol:

Θεώρησα λοιπόν υποχρέωση μου, να αρχίσω μια προετοιμασία στην ορολογία (αν και βέβαια οι μεταφράσεις δεν μου βγήκαν όπως θα ήθελα :? ...τες πα ! :D )
 

turrican

Retro Guru
Comrade
Joined
Jun 13, 2012
Messages
2,925
Έκανες μπόλικη δουλίτσα φίλε!!!
Respect...
 

geoanas

Commodore Vampire
Staff member
Comrade
Joined
Oct 21, 2012
Messages
7,309
Thanks ! Δική μου ευχαρίστηση...μαθαίνω κι εγώ, μη νομίζετε ;)
 

antnik

Retro Addict
Comrade
Joined
Sep 30, 2014
Messages
599
Μπράβο Γιώργο για άλλη μια φορά. Τι άλλο να πω.... :thumbup:
 

dR_wH0

Solder Noob
Staff member
Comrade
Joined
Mar 24, 2012
Messages
5,854
Divine post. Πρέπει να εντρυφήσουμε στο συγκεκριμένο άθλημα.
 

geoanas

Commodore Vampire
Staff member
Comrade
Joined
Oct 21, 2012
Messages
7,309
Οφείλουμε, να το κάνουμε dr :!: :D

Μαζεύω υλικό για το δεύτερο μέρος, η λίστα με τους όρους φαντάζει ατέλειωτη ;)
 

turrican

Retro Guru
Comrade
Joined
Jun 13, 2012
Messages
2,925
Πως να μη τον εκτιμήσουμε; Όποια πέτρα να σηκώσουμε, επάνω στον μαρμαρωμένο βασιλιά θα πέσουμε!
Όλα τα ακούσματα που είχα στον Atari ST (και όχι μόνο) προέρχονταν από εκεί...
Γέννησε ουσιαστικά τη demo σκηνή!
 
Top