old school demo effects test timing

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
jmg49
Messages : 153
Inscription : mer. 26/févr./2014 8:53

old school demo effects test timing

Message par jmg49 »

Bonjour,

après mes tests sur comment "timer" des effets graphiques dans une démo / cracktro en utilisant les fichiers musique modules protrekkr et V2M , place à FMOD

je me suis permis de rassembler pas mal de codes d'ici où là, avec les remerciement qui vont avec,

external libs :

- FMODex-min
- MP3D
- Directx9 : dll à avoir dans windows\system32 ou dans le dossier de l'exe
lien vers l'archive contenant tout ce qui peut être utile, si pas envie de vous prendre la tête il y a l'exe, vous pouvez l'envoyer sur virustotal celui ça ne me dérange pas il n'y a pas de routines d'indétection qui pourrait ensuite être distribuées.

https://drive.google.com/file/d/1gqxiKd ... vhfcC/view

ok sous PB 5.42 LTS , problème avec le shader HL_SL sous 5.62 (unicode ?)

les textes des scrolltexts ne veulent rien dire et ne sont là que pour test et ...y'a pas de fin donc [ESC]

Code : Tout sélectionner



; greetz JohnJohnSHERMAN for fmod oscillo wave 
; inc. for shader DirectX HLSL code slightly modded by my fingers
; Falsam for FMOD_DataSectionLoadSound() function

IncludeFile "fmodex-min.pbi"


#FMOD_OPENMEMORY  = $00000800

Enumeration
  #rightbar
  #leftbar
  #Mainform
  #Wave
  #spectrum
  #rambo
EndEnumeration

;----------------Init variables globales --------------------------------------

Global fmodsystem.i, Channel.i, i.i, j.i, Max.i, Position.i, YCurrentWave.i, YOldWave.i, Angle.f
Global Dim Sounds(1)
Global Dim Plasma.i(1)
Global Dim WaveArray.f(1024) ; Array for Waves --------------------------------------
u=0                          ; manual timer :)


Structure FMOD_CREATESOUNDEXINFO
  cbsize.i      
  length.i       
  params.i[32]   
EndStructure
;-----------------------------------------------------------------------------


;----------------Init Display, Scroll, Rasters, Fonts, Sprites----------------


EP_InitFXLib()

MP_Graphics3DWindow(150,50,1024,768,"",#PB_Window_BorderLess  )

EP_Init2DStars(200,7,1.3,0,0,1024,768)
EP_2DStarsColor(1,RGB(255,0,0))
EP_2DStarsColor(2,RGB(0,255,0))

EP_CatchFont32(1,?font,?endfont)
EP_CatchFont32(2,?font2, ?endfont2)
EP_CatchFont32(3,?font3, ?endfont3)

ramb=MP_CatchSprite(?rambo,?rambo-?endrambo)
decrunch=MP_CatchSprite(?decrunch,?decrunch-?enddecrunch)

InitSprite()
InitKeyboard()



EP_FastRasterBar(0,RGB(40,140,250),32)                        ; blue1
EP_FastRasterBar(1,RGB(73,51,140),32)                         ; purple
EP_FastRasterBar(3,RGB(73,51,140),32,210,2,0,2)               ; blue moving
                                                              ;EP_SetRasterSinAdd(3,8.5)
EP_FastRasterBar(4,RGB(40,140,250),32,100,2,0,2)              ; purple moving
EP_FastRasterBar(5,RGB(40,140,250),32,130,3,0,1)              ; blue2
EP_FastRasterBar(6,RGB(73,51,140),32,130,3,0,2)               ; red


EP_SetScrollText(1, "         .....Another JMG new Prod @2017.... blue sky and yellow sun"+
                    "....................take a look.....let's add some colour .........."+
                    "...........ahhh   ok  ! ..........some move now ? .............., alright.............    is it better  ? ... "+
                    "sure ........so.....what's going on there ? ...........")
EP_Create32Scroll(1, 1, 1, 480)
EP_SetScroll32Speed(1, 8)




EP_SetScrollText(2,"    ohhh   what ??!!       Another scrolling text sinus ! very pretty effect ! ..FIRE ! ")
EP_Create32Scroll(2, 2, 2,400, 20,1025)

EP_SetScroll32Speed(2, 4)
EP_SetSinScroll32(2, 0, 2, 170, -4) 



EP_SetScrollText(3,"  Well Well Well ..........what a beautiful oldschool character font.....does it come from Amstrad ??  ")
EP_Create32Scroll(3, 3, 3, 700)
EP_SetScroll32Speed(3, 8)

EP_SetScrollText(4,"  hey......look ! ..............it's   Rambo !! ................     wow wow wow !   a turning Rambo !"+
                   "                                                       "+
                   "                                     a rambo cube With turning texture too !!! .."+
                   "                               what about a plamsa shader texture ? ")
EP_Create32Scroll(4, 4, 2, 20)
EP_SetScroll32Speed(4, 8)


;----------------Init Spectrum stuff -----------------------------------------

CanvasGadget(#spectrum, 240, 150, 540, 330)

;------------------------------Init 3DCube---------------------------------------------

camera=MP_CreateCamera()
cube=MP_CreateCube()
Texture =  MP_CatchTexture(?rambo,?endrambo)
MP_PositionEntity (cube,0,-1.8,8)

;------------------------------Init Plasma Shader---------------------------------------------


Plasma  = MP_CreateBackBufferTexture()
shader5FX.s = PeekS(?sh2,?sh2end-?sh2)
Plasma(1) = MP_CreateMyShader(shader5FX)
Post_FX = 1

;-----------------------------------------------------------------------------



;----------------Procedures---------------------------------------------------

Procedure GoScroll2()
  
  
  EP_Move32Scroll(2)
  
  
EndProcedure

Procedure EndScroll2()
  
  EP_Close32Scroll(2)
  
EndProcedure

Procedure GoScroll1()
  
  
  EP_Move32Scroll(1)
  
  
EndProcedure

Procedure EndScroll1()
  
  EP_Close32Scroll(1)
  
EndProcedure

Procedure GoScroll3()
  
  
  EP_Move32Scroll(3)
  
  
EndProcedure

Procedure EndScroll3()
  
  EP_Close32Scroll(3)
  
EndProcedure

Procedure GoScroll4()
  
  
  EP_Move32Scroll(4)
  
  
EndProcedure

Procedure EndScroll4()
  
  EP_Close32Scroll(4)
  
EndProcedure

Procedure StopRaster1()
  
  EP_CloseRasterBar(0)
  EP_CloseRasterBar(1)
  
EndProcedure

Procedure StopRaster2()
  
  EP_CloseRasterBar(3)
  EP_CloseRasterBar(4)
  
EndProcedure

Procedure StopRaster3()
  
  EP_CloseRasterBar(5)
  EP_CloseRasterBar(6)
  
EndProcedure

Procedure StopSpectrum()
  
  
  StopDrawing()
  
EndProcedure

Procedure FMOD_DataSectionLoadSound(SoundId, SoundLocStart, SoundLocEnd)   
  Protected exinfo.FMOD_CREATESOUNDEXINFO
  
  exinfo\cbSize = SizeOf(FMOD_CREATESOUNDEXINFO)
  exinfo\Length = SoundLocEnd - SoundLocStart 
  
  FMOD_System_CreateStream(FmodSystem, SoundLocStart, #FMOD_SOFTWARE | #FMOD_OPENMEMORY, @exinfo, @Sounds(SoundId))
EndProcedure



;----------------Init sound First Part-------------------------------------------------
first:

FMOD_System_Create(@fmodsystem)
FMOD_System_Init(fmodsystem, 32, #FMOD_INIT_NORMAL, 0)
FMOD_DataSectionLoadSound(0, ?ams, ?endams)

FMOD_System_PlaySound(fmodsystem, #FMOD_CHANNEL_FREE, Sounds(0), 0, @channel)






;------------------------------First Screen Décrunch-------------------------------------
Repeat
  event=WindowEvent()  
  MP_DrawSprite(decrunch,300,150)
  u=u+1
  
  
  
  If Post_FX > 0
    MP_ShaderSetVar_f (Plasma(Post_FX),"time",MP_ElapsedMicroseconds()/100000 )   
    MP_SetTechniqueMyShader (Plasma(Post_FX),"PostProcess")   
    MP_UseBackbufferShader(Plasma, Plasma(Post_FX)) 
  EndIf
  
  If Post_FX > 0
    MP_RenderToTexture( Plasma )
    MP_TextureToBackBuffer (Plasma)
  EndIf
  
  
  ;Debug u
  
  MP_Flip ()
  
Until u=700

MP_FreeSprite(decrunch)
FMOD_Channel_Stop(Channel)
FMOD_System_Release(fmodsystem)


;----------------Init sound Second Part-------------------------------------------------

second:

FMOD_System_Create(@fmodsystem)
FMOD_System_Init(fmodsystem, 32, #FMOD_INIT_NORMAL, 0)
FMOD_DataSectionLoadSound(1, ?File, ?EndFile)
FMOD_System_PlaySound(fmodsystem, #FMOD_CHANNEL_FREE, Sounds(1), 0, @channel) ; GO Sound and Go Diego !!!





;---------------------MainLoop-------------------------------------------------------------------MainLoop----------------------------------------------

Repeat
  
  
  event=WindowEvent()         
  
  FMOD_Channel_GetWaveData(Channel, WaveArray(), 1024, 0)
  FMOD_Channel_GetPosition(channel, @pos, #FMOD_TIMEUNIT_MS)
  
  
  
  GoScroll1() 
  
  
  
  
  
  
  ;-----------------Go Starfield------------------------------------------------
  EP_2DStarsDraw()           
  ;-----------------------------------------------------------------------------
  
  
  
  
  ;-----------------------------Tests Position & Events------------------------
  
  If pos > 10000
    EP_DisplayRasterBar(0,30)
    EP_DisplayRasterBar(1,740) ;   display rasters 1
    
    
  EndIf
  
  
  
  
  
  If pos > 13000
    StopRaster1()
    
    
    EP_DisplayRasterBar(5,10) ;   display rasters 2 
    EP_DisplayRasterBar(6,760) 
    
  EndIf
  
  
  
  If pos > 22000  ; go scrolltext 
    GoScroll2()
    
  EndIf
  
  ;----------------- Display Spectrum--------------------------------------  
  
  If pos >38500 
    
    StartDrawing(CanvasOutput(#spectrum))
    
    
    DrawingMode(#PB_2DDrawing_Transparent) 
    Box(0, 0, 1026, 400,0) 
    
    
    DrawingMode(#PB_2DDrawing_Default)
    For i=1 To 1024
      YOldWave=(WaveArray(i-1)+1)*250
      YCurrentWave=(WaveArray(i)+1)*250
      LineXY(i-1,YOldWave,i,YCurrentWave,RGB(0,200,50))
      LineXY(i-1,YOldWave+1,i,YCurrentWave+1,RGB(0,90,50))
      LineXY(i-1,YOldWave-1,i,YCurrentWave-1,RGB(0,110,50))
    Next 
    
    StopDrawing()  
    
    
  EndIf  
  
  ;-----------------------------------------------------------------------------  
  
  If pos >39000
    EndScroll1()  ; stop tout le bordel et start scroll 3
    EndScroll2()
    GoScroll3()
  EndIf
  
  
  
  If pos > 48000 
    GoScroll4()
    MP_DrawSprite(ramb,430 , 490) ; Display my old friend Rambo
  EndIf
  
  If pos > 55000
    MP_TurnSprite(ramb,1)
  EndIf
  
  
  If pos > 58000
    MP_FreeSprite(ramb)
    MP_EntitySetTexture (cube, Texture) 
    MP_TurnEntity (cube,2,0.8,0.8)
  EndIf
  
  
  If pos > 65000
    Angle.f + 1.5
    MP_RotateTexture (Texture , Angle)
  EndIf
  
  
  If pos > 73000
    
    EndScroll3()
    EndScroll4()
    
    
    If Post_FX > 0
      MP_ShaderSetVar_f (Plasma(Post_FX),"time",MP_ElapsedMicroseconds()/100000 )   
      MP_SetTechniqueMyShader (Plasma(Post_FX),"PostProcess")   
      MP_UseBackbufferShader(Plasma, Plasma(Post_FX)) 
    EndIf
    
    If Post_FX > 0
      MP_RenderToTexture( Plasma )
      MP_TextureToBackBuffer (Plasma)
      MP_EntitySetTexture (cube, Plasma)
    EndIf
  EndIf
  
  
  
  MP_RenderWorld() 
  MP_Flip () 
  
  
Until GetAsyncKeyState_(#VK_ESCAPE)


FMOD_Channel_Stop(Channel)
FMOD_System_Release(fmodsystem)



End


;-------------- useful stuff 

DataSection
  ams:
  IncludeBinary "ams.mp3"
  endams:
  File:
  IncludeBinary "spit.mp3"
  EndFile:
  font:
  IncludeBinary "fnt1.png"
  endfont:
  font2:
  IncludeBinary "fnt2.bmp"
  endfont2:
  font3:
  IncludeBinary "fnt3.bmp"
  endfont3:
  rambo:
  IncludeBinary "rambo.bmp"
  endrambo:
  decrunch:
  IncludeBinary "decrunch.png"
  enddecrunch:
  sh2:
  Data.q $2E33205350202F2F,$6F69737265762030,$6F6C660A0D0A0D6E,$6F73657220327461,$3D206E6F6974756C
  Data.q $372C343230317B20,$6C660A0D3B7D3836,$656D69742074616F,$6F6C660A0D0A0D3B,$6853794D20347461
  Data.q $6F6C662872656461,$2078655420327461,$4F4F43584554203A,$4F43203A20294452,$0A0D7B0A0D524F4C
  Data.q $74616F6C66202020,$3B726F6C6F432034,$662020200A0D0A0D,$3D20782074616F6C,$2A20782E78655420
  Data.q $74756C6F73657220,$0D3B20782E6E6F69,$616F6C662020200A,$6554203D20792074,$6572202A20792E78
  Data.q $6E6F6974756C6F73,$200A0D0A0D3B792E,$2074616F6C662020,$78203D2030766F6D,$7328736F632B792B
  Data.q $29656D6974286E69,$3030312A292E322A,$2F78286E69732B2E,$312A292E3030313D,$200A0D3B2E303030
  Data.q $2074616F6C662020,$79203D2031766F6D,$6F73657220202F20,$792E6E6F6974756C,$2032392E30202F20
  Data.q $0D3B656D6974202B,$616F6C662020200A,$3D2032766F6D2074,$657220202F207820,$6E6F6974756C6F73
  Data.q $322E30202F20782E,$662020200A0D3B20,$2031632074616F6C,$697328736261203D,$742B31766F6D286E
  Data.q $2B2E322F29656D69,$2D2E322F32766F6D,$766F6D2D31766F6D,$3B29656D69742B32,$6F6C662020200A0D
  Data.q $203D203263207461,$286E697328736261,$6D286E69732B3163,$303030312F30766F,$656D69742B2E3030
  Data.q $2F79286E69732B29,$656D69742B2E3034,$7828286E69732B29,$303030312F29792B,$29292E332A292E30
  Data.q $6C662020200A0D3B,$3D2033632074616F,$736F632873626120,$28736F632B326328,$766F6D2B31766F6D
  Data.q $69732B2932632B32,$2B2932766F6D286E,$30312F78286E6973,$2929292E30303030,$65722020200A0D3B
  Data.q $6C6F43206E727574,$6F6C66203D20726F,$2C31632028347461,$2E312C33632C3263,$0A0D7D0A0D3B2930
  Data.q $2D2D2D202F2F0A0D,$2D2D2D2D2D2D2D2D,$2D2D2D2D2D2D2D2D,$2D2D2D2D2D2D2D2D,$2D2D2D2D2D2D2D2D
  Data.q $2D2D2D2D2D2D2D2D,$56202F2F0A0D2D2D,$6853207865747265,$0A0D0A0D72656461,$5620746375727473
  Data.q $0D5455504E495F53,$202020200A0D7B0A,$70203374616F6C66,$096E6F697469736F,$495449534F50203A
  Data.q $2020200A0D3B4E4F,$203274616F6C6620,$3065727574786574,$54203A2020202020,$3044524F4F435845
  Data.q $0D0A0D3B7D0A0D3B,$207463757274730A,$555054554F5F5356,$20200A0D7B0A0D54,$74616F6C66202020
  Data.q $7469736F70682034,$4F50203A206E6F69,$0D3B4E4F49544953,$6C6620202020200A,$786574203274616F
  Data.q $3A20203065727574,$524F4F4358455420,$0D3B7D0A0D3B3044,$554F5F53560A0D0A,$76796D2054555054
  Data.q $4E495F5356202873,$29204E4920545550,$2020200A0D7B0A0D,$5054554F5F535620,$0D3B54554F205455
  Data.q $4F202020200A0D0A,$69736F70682E5455,$66203D206E6F6974,$4E49283474616F6C,$6F697469736F702E
  Data.q $2E4E492C20782E6E,$6E6F697469736F70,$702E4E492C20792E,$2E6E6F697469736F,$0A0D3B2931202C7A
  Data.q $2E54554F20202020,$3065727574786574,$65742E4E49203D20,$0D3B306572757478,$746572202020200A
  Data.q $3B54554F206E7275,$202F2F0A0D7D0A0D,$2D2D2D2D2D2D2D2D,$2D2D2D2D2D2D2D2D,$2D2D2D2D2D2D2D2D
  Data.q $2D2D2D2D2D2D2D2D,$2D2D2D2D2D2D2D2D,$0D0A0D2D2D2D2D2D,$71696E686365740A,$5074736F50206575
  Data.q $0A0D737365636F72,$70202020200A0D7B,$0A0D317020737361,$200A0D7B20202020,$2F2F202020202020
  Data.q $6E69746867694C20,$65757254203D2067,$20202020200A0D3B,$7865747265562020,$3D20726564616853
  Data.q $656C69706D6F6320,$20305F335F737620,$0D3B29287376796D,$202020202020200A,$68536C6578695020
  Data.q $63203D2072656461,$7020656C69706D6F,$794D20305F335F73,$2928726564616853,$7D202020200A0D3B
  Data.b $0D,$0A,$0D,$0A,$7D
  sh2end:
EndDataSection     

; EndPB 
; PB 5.42 x86



Dernière modification par jmg49 le ven. 20/avr./2018 8:34, modifié 2 fois.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: old school demo effects test timing

Message par Kwai chang caine »

Pour l'exe ça tourne pas, il me manque la "d3dx9_43.dll"
Pour le code, marche pas non plus, sous systeme dx9 introuvable
Je pense que ça doit avoir un rapport avec "DirectX 9"
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
jmg49
Messages : 153
Inscription : mer. 26/févr./2014 8:53

Re: old school demo effects test timing

Message par jmg49 »

ah, en effet j'ai la d3dx9_43.dll dans mon \windows\system32 .... si elle est manquante ça tourne pas,
update de l'archive, lien mis à jour aussi

merci
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: old school demo effects test timing

Message par Kwai chang caine »

Ca marche beaucoup mieux avec la DLL 8)
Cette fois je suis sous W10, j'ai essayé l'exe et j'ai un msg d'erreur "Error create effect" au début

Mais après ça marche dur
Des textes dans tous les sens, en serpent, j'avais déjà vu ça je crois avec un code de zorro 8)

Alors je connaissais le bouillon de poulet en cube, mais le couillon de militaire en cube, j'avais jamais vu 8O
Super le rambo en cube, je dirais même en rubik's cube :D

Pour essayer le code, j'ai pourtant déposé la dll dans le sys32 et il dit que le sous systeme dx9 est absent :|

Merci pour le partage 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
jmg49
Messages : 153
Inscription : mer. 26/févr./2014 8:53

Re: old school demo effects test timing

Message par jmg49 »

:D y'a du mieux !

je pense que tu dois ajouter dx9 dans les options du compilo => Bibliothèque sous-système

merci d'avoir pris le temps de tester,
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: old school demo effects test timing

Message par djes »

Hey tu t'es bien fait plaisir ! Sympa :)
Répondre