Démos de transparence [Tom]

Discussions techniques et Pixel Art en 9 bits.

Modérateurs : SirG, Redfield1, shubibiman, Laucops

Avatar de l’utilisateur
Tanuki
Push Run Button!
Messages : 95
Inscription : mer. 14 oct. 2009 17:02

Re: Nouvelles démos de Tom (transparence inside)

Message par Tanuki »

Est ce que Jackie Chan utilise le bug pce pour l'effet des colonnes ou c'est une autre astuce ?
Avatar de l’utilisateur
xav
NECrophage
Messages : 1159
Inscription : mar. 05 juil. 2005 22:12
Localisation : Le plus grand four solaire de France, Montpellier

Re: Nouvelles démos de Tom (transparence inside)

Message par xav »

C'est bien ça, on joue sur le fait que le VCE essaye d'afficher un sprite/BG avec des priorités particulières.

D'ailleurs il n'est pas absolument obligatoire d'avoir un fond noir.

Je sais plus où est ma vieille démo de sonic et des cristaux de glace mais c'est le méme principe.
"Theory, it's when we know everything and nothing works. Practice, it's when everything works and nobody knows why. Here, we have put together theory and practice : Nothing works... and nobody knows why!" (Albert Einstein)
Avatar de l’utilisateur
shubibiman
Administrateur
Messages : 16382
Inscription : jeu. 23 sept. 2004 14:26
Localisation : Meet me at Shubibi's

Re: Nouvelles démos de Tom (transparence inside)

Message par shubibiman »

Celle-ci ne me dis rien du tout. J'ai pourtant pas mal de tes démos.
"You are truly the PCE game clearing master"

*****Membre du FLPCE Canal Historique*****
Avatar de l’utilisateur
Tanuki
Push Run Button!
Messages : 95
Inscription : mer. 14 oct. 2009 17:02

Re: Nouvelles démos de Tom (transparence inside)

Message par Tanuki »

xav a écrit :C'est bien ça, on joue sur le fait que le VCE essaye d'afficher un sprite/BG avec des priorités particulières.
Donc les colonnes à l'écran sont des sprites qui recouvrent les mêmes colonnes plus foncées de l'arrière-plan et lorsque le sprite du perso arrive sur elles ça fait apparaître celles de l'arrière-plan.

Correct ?
Avatar de l’utilisateur
Kaminari
Modérateur
Messages : 7039
Inscription : ven. 24 sept. 2004 19:36
Contact :

Re: Nouvelles démos de Tom (transparence inside)

Message par Kaminari »

Tu peux facilement décortiquer l'effet en jouant avec les options de sprite et de BG dans Ootake ou ME ; très instructif comme reverse-engineering :)
Avatar de l’utilisateur
touko
NECromancer
Messages : 2297
Inscription : lun. 31 mars 2008 14:32

Re: Nouvelles démos de Tom (transparence inside)

Message par touko »

Kaminari a écrit :Tu peux facilement décortiquer l'effet en jouant avec les options de sprite et de BG dans Ootake ou ME ; très instructif comme reverse-engineering :)
C'est clair :mrgreen:
Avatar de l’utilisateur
Tanuki
Push Run Button!
Messages : 95
Inscription : mer. 14 oct. 2009 17:02

Re: Nouvelles démos de Tom (transparence inside)

Message par Tanuki »

Merci mais je le savais. C'était juste pour gagner du temps. :wink:
Avatar de l’utilisateur
touko
NECromancer
Messages : 2297
Inscription : lun. 31 mars 2008 14:32

Effet de transparence de Tom sur une simple PCE

Message par touko »

Tout es dans le titre :mrgreen:

A récupérer ici : http://www.pcedev.net/demos/transparency/test0.zip
C'est pas énorme, mais l'effet est bluffant .

L'explication est là :
The transparency is realtime (Amiga planar style). That is to say, it uses the VDCs 4bit planar mode to do hardware assist transparency effects. The demo was never polished and finished, but you can still see the results. I had this crazy idea; instead of using fixed point entries as code lists with RTS instruction for the embedded video in st1/st2 opcodes, one would use the hsync interrupt or the TIMER interrupt to set a time limit to the transfer. You push the return address on a special stack or place in ram, jump to the address and let the cpu run hog wild. When the interrupt counter completes, you manually change the real stack with the special/saved address and return to that instead. Of course, you'll need a buffer in vram for over spill since neither the hsync interrupt or timer interrupt is fine enough cycle wise to do accurate stopping on an exact instruction. Crazy? Yup, but it's totally doable.
Ceux qui comprennent pas comment c'est fait, allez jouer sur MD :raleur:

PS: Je vous le dit, perso, j'ai rien compris :mrgreen:
Avatar de l’utilisateur
MooZ
Administrateur
Messages : 2090
Inscription : jeu. 16 déc. 2004 14:25
Contact :

Re: effet de transparence de tom sur une simple PCE

Message par MooZ »

Pareil, je ne vois pas des masses ce que ça a à voir avec la choucroute. J'aurais préféré un bout de code.

Mais si j'ai tout compris ça revient à la technique sur c64 pour avoir du code gourmand synchro avec les interruptions. En gros quand tu arrives dans l'interruption, la valeur du registre PC (en gros là où tu te trouvais avant que l'interruption pète) et le registre de statut sont poussés sur la pile. Le code de l'interruption est exécuté et quand rti (return from interrupt) est rencontré, les registres de statut et PC sont dépilés. Tu te retrouves alors là où tu avais été interrompu.

La technique consiste donc à pousser l'adresse du code "gourmand" ainsi que la valeur du registre de statut sur la pile. Tu te retrouves donc avec 2 tuples PC, statut sur la pile. A la fin du code de l'interruption, le rti t'envoie alors sur le code "gourmand". Mais tu n'es plus dans le contexte de l'interruption. Les autres interruptions peuvent claquer et tu as moins de chance d'exploser la synchro. Un truc important à noter, c'est que tu as toujours l'adresse du code "standard" et la valeur du registre de statut associé dans la pile. Il faut que le code "gourmand" se termine par un rti.

Niveau code ça donne un truc du genre:

Code : Tout sélectionner

interrupt_handler:
    ; Save registers
    pha
    phx
    phy

    ; Push routine adress
    lda    #high(uber_routine)
    pha

    lda    #low(uber_routine)
    pha

    ; Fake status register value
    cla
    pha

    ; [ISR code...]

    ; Let's jump to uber_routine
    rti

Code : Tout sélectionner

uber_routine:
    ; [do a lot of complicated stuff]

    ; Restore register
    ply
    plx
    pla

    ; Jump back to the "main" code
    rti
   
Bon après pour l'effet de transparence en lui même, je vois pas trop comment c'est fait. Ma première intuition est qu'il fait clignoter un sprite... Mais je doute que ce soit ça. Il faudrait que je regarde la ROM.
Avatar de l’utilisateur
touko
NECromancer
Messages : 2297
Inscription : lun. 31 mars 2008 14:32

Re: effet de transparence de tom sur une simple PCE

Message par touko »

Merci pour l'explication ..
J'avais vaguement compris un truc dans le genre, et je ne voyais pas non plus le rapport, donc je me suis dit, "bah j'ai rien compris" :mrgreen: ..

D'ailleurs je sais pas trop non plus comment il fait, mais bon je suis pas sur que ce soit réellement faisable hors d'une demo .
Y'a aucun sprite dedans, c'est que du background, il utilise les BP pour faire ça, comme sur amiga .
Ca doit surement limiter les tile concernées à 2bpp, donc 4 couleurs seulement/tile, voire moins peut être .
Avatar de l’utilisateur
MooZ
Administrateur
Messages : 2090
Inscription : jeu. 16 déc. 2004 14:25
Contact :

Re: effet de transparence de tom sur une simple PCE

Message par MooZ »

Ok je vois le truc. C'est un peu ce que j'avais fait pour avoir 4 damiers qui scrollaient indépendamment.
C'est vrai que pour 2 maps ça doit bouffer pas mal de VRAM et de temps CPU.
Avatar de l’utilisateur
touko
NECromancer
Messages : 2297
Inscription : lun. 31 mars 2008 14:32

Re: effet de transparence de tom sur une simple PCE

Message par touko »

Oui et il doit surement aussi réserver des couleurs dans la palette pour la transparence.
Avatar de l’utilisateur
shubibiman
Administrateur
Messages : 16382
Inscription : jeu. 23 sept. 2004 14:26
Localisation : Meet me at Shubibi's

Re: Effet de transparence de Tom sur une simple PCE

Message par shubibiman »

Je viens de tester et c'est beau. Miam, en esperant qu'il utilise l'effet dans le jeu qu'il compte developper.
"You are truly the PCE game clearing master"

*****Membre du FLPCE Canal Historique*****
Avatar de l’utilisateur
Kaminari
Modérateur
Messages : 7039
Inscription : ven. 24 sept. 2004 19:36
Contact :

Re: Démos de transparence [Tom]

Message par Kaminari »

10 ans plus tard, Tom remet le couvert... et partage ses progrès sur GitHub ! :bomberwhat:

https://www.youtube.com/watch?v=qWRT9JvUBTU
Répondre