Question to Fred and/or Freak

Advanced game related topics
User avatar
StarBootics
Addict
Addict
Posts: 984
Joined: Sun Jul 07, 2013 11:35 am
Location: Canada

Question to Fred and/or Freak

Post by StarBootics »

Simply run the code below, revamped from Cpl.Bator (AKA G-Rom I guess) code released longtime ago.

Regards
StarBootics

Code: Select all

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Project Name : LoL - PB 5.40
; FileName : LOL - PB 5-40.pb
; File version : 2.0.0
; Programmation : OK
; Programmed by : Cpl.Bator
; Modified by : StarBootics
; Date : 21-01-2006
; Mise à jour : 10-01-2015
; Codé avec PureBasic V5.30
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Improvement done over the original code 
;
; 1. The animation restart avery 30 seconds
; 2. The screen size are the same as the desktop
; 3. The animation is centred in the screen
; 4. Compression of the data section
;
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Structure Chronometer
  
  StartTime.l
  TotalTime.l
  Running.b
  
EndStructure

Macro GetChronometerStartTime(ChronometerA)
  
  ChronometerA\StartTime
  
EndMacro

Macro GetChronometerTotalTime(ChronometerA)
  
  ChronometerA\TotalTime
  
EndMacro

Macro GetChronometerRunning(ChronometerA)
  
  ChronometerA\Running
  
EndMacro

Macro SetChronometerStartTime(ChronometerA, P_StartTime)
  
  GetChronometerStartTime(ChronometerA) = P_StartTime
  
EndMacro

Macro SetChronometerTotalTime(ChronometerA, P_TotalTime)
  
  GetChronometerTotalTime(ChronometerA) = P_TotalTime
  
EndMacro

Macro SetChronometerRunning(ChronometerA, P_Running)
  
  GetChronometerRunning(ChronometerA) = P_Running
  
EndMacro

Macro ResetChronometer(ChronometerA)
  
  ClearStructure(ChronometerA, Chronometer)
  
EndMacro


Macro SecondsToMilliseconds(Seconds)
  
  (Seconds * 1000)
  
EndMacro 

Macro MinutesToMilliseconds(Minutes)
  
  (Minutes * 60000)
  
EndMacro 

Macro HoursToMilliseconds(Hours)
  
  (Hours * 3600000)
  
EndMacro 

Macro DaysToMilliseconds(Days)
  
  (Days * 86400000)
  
EndMacro 

Procedure SetTemporizerTotalTime(*ChronoA.Chronometer, MilliSeconds.l, Seconds.l, Minutes.l, Hours.l, Days.l)
  
  SetChronometerTotalTime(*ChronoA, MilliSeconds + SecondsToMilliseconds(Seconds) + MinutesToMilliseconds(Minutes) + HoursToMilliseconds(Hours) + DaysToMilliseconds(Days))
  
EndProcedure 

Procedure StartTemporizer(*ChronoA.Chronometer)
  
  If GetChronometerRunning(*ChronoA) = #False
    
    SetChronometerStartTime(*ChronoA, ElapsedMilliseconds())
    SetChronometerRunning(*ChronoA, #True)
    
  EndIf
  
EndProcedure 

Procedure StopTemporizer(*ChronoA.Chronometer)
  
  If GetChronometerRunning(*ChronoA) = #True
    
    SetChronometerTotalTime(*ChronoA, GetChronometerTotalTime(*ChronoA) - ElapsedMilliseconds() + GetChronometerStartTime(*ChronoA))
    SetChronometerRunning(*ChronoA, #False)
    
  EndIf 
  
EndProcedure 

Procedure.l ConsultTemporizer(*ChronoA.Chronometer)
  
  If GetChronometerRunning(*ChronoA) = #True
    TotalTime.l = GetChronometerTotalTime(*ChronoA) - ElapsedMilliseconds() + GetChronometerStartTime(*ChronoA) 
  Else
    TotalTime = GetChronometerTotalTime(*ChronoA)
  EndIf 
  
  ProcedureReturn TotalTime
EndProcedure 

Structure Flares
  
  X.f
  Y.f
  TX.f
  TY.f
  Speed.f
  Flag.b
  
EndStructure

Macro GetFlaresX(FlaresA)
  
  FlaresA\X
  
EndMacro

Macro GetFlaresY(FlaresA)
  
  FlaresA\Y
  
EndMacro

Macro GetFlaresTX(FlaresA)
  
  FlaresA\TX
  
EndMacro

Macro GetFlaresTY(FlaresA)
  
  FlaresA\TY
  
EndMacro

Macro GetFlaresSpeed(FlaresA)
  
  FlaresA\Speed
  
EndMacro

Macro GetFlaresFlag(FlaresA)
  
  FlaresA\Flag
  
EndMacro

Macro SetFlaresX(FlaresA, P_X)
  
  GetFlaresX(FlaresA) = P_X
  
EndMacro

Macro SetFlaresY(FlaresA, P_Y)
  
  GetFlaresY(FlaresA) = P_Y
  
EndMacro

Macro SetFlaresTX(FlaresA, P_TX)
  
  GetFlaresTX(FlaresA) = P_TX
  
EndMacro

Macro SetFlaresTY(FlaresA, P_TY)
  
  GetFlaresTY(FlaresA) = P_TY
  
EndMacro

Macro SetFlaresSpeed(FlaresA, P_Speed)
  
  GetFlaresSpeed(FlaresA) = P_Speed
  
EndMacro

Macro SetFlaresFlag(FlaresA, P_Flag)
  
  GetFlaresFlag(FlaresA) = P_Flag
  
EndMacro

Macro LinearlySpacedValue(IncrementID, IncrementMax, MinValue, MaxValue)
  
  (MinValue + (MaxValue - MinValue) * (IncrementID / IncrementMax))
  
EndMacro

Procedure UpdateFlare(List Flares.Flares())
  
  ForEach Flares()
    
    DisplayTransparentSprite(0, GetFlaresX(Flares()), GetFlaresY(Flares()))
    
    If GetFlaresFlag(Flares()) = 1
      
      If GetFlaresX(Flares()) < GetFlaresTX(Flares())
        SetFlaresX(Flares(), GetFlaresX(Flares()) + GetFlaresSpeed(Flares()))
      EndIf
      
      If GetFlaresX(Flares()) > GetFlaresTX(Flares())
        SetFlaresX(Flares(), GetFlaresX(Flares()) - GetFlaresSpeed(Flares()))
      EndIf
      
      If GetFlaresY(Flares()) < GetFlaresTY(Flares())
        SetFlaresY(Flares(), GetFlaresY(Flares()) + GetFlaresSpeed(Flares()))
      EndIf
      
      If GetFlaresY(Flares()) > GetFlaresTY(Flares())
        SetFlaresY(Flares(), GetFlaresY(Flares()) - GetFlaresSpeed(Flares()))
      EndIf
      
    EndIf
    
  Next
  
EndProcedure

Procedure.s DataRestore(P_Sequence.s)
  
  BlockCount = CountString(P_Sequence, ",") + 1
  
  For Index = 1 To BlockCount
    
    Count = Val(StringField(Trim(StringField(P_Sequence, Index, ",")), 1, ":"))
    Value.s = StringField(Trim(StringField(P_Sequence, Index, ",")), 2, ":")
    
    For Index2 = 1 To Count
      SequenceOut.s + Value
    Next
    
  Next
  
  ProcedureReturn SequenceOut
EndProcedure

Procedure MakeBackground(PosX, PosY, List Flares.Flares())
  
  Shared Color.l,Count.l,FlareI.l
  Protected Index
  
  Restore BackGround:
  
  For Y = PosY To PosY + 767 Step 4
    
    Read.s Line.s
    
    Index = 1
    Sequence.s = DataRestore(Line)
    
    For X = PosX To PosX + 1023 Step 4

      If Val(Mid(Sequence, Index, 1)) = 1
        AddElement(Flares())
        SetFlaresTX(Flares(), X)
        SetFlaresTY(Flares(), Y)
      EndIf
      
      Index + 1
      
    Next
    
  Next
  
EndProcedure

Procedure MakeFlare()
  
  PS = 6
  Size = PS << 1
  
  If CreateSprite(0, Size, Size)
    
    TransparentSpriteColor(0, 0)
    
    If StartDrawing(SpriteOutput(0))
      
      Box(0,0, Size, Size, 0)
      Cxy = PS
      
      For Radius = 0 To PS
        Circle(Cxy, Cxy, PS - Radius, RGB(COLORV >> 1, COLORV >> 1, COLORV))
        COLORV = Int(LinearlySpacedValue(Radius, PS, 0, 255))
      Next
      
      StopDrawing() 
    EndIf
  EndIf
  
EndProcedure

Procedure InitializeEffex(List Flares.Flares(), Width, Height)
  
  ForEach Flares()
    SetFlaresX(Flares(), Random(Width))
    SetFlaresY(Flares(), Random(Height))
    SetFlaresSpeed(Flares(), 1 + Random(3))
    SetFlaresFlag(Flares(), 1)
  Next 
  
EndProcedure 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

If InitSprite() <> 0 And InitKeyboard() <> 0 ; And InitMouse() <> 0 
  
  ExamineDesktops()
  
  Width = DesktopWidth(0)
  Height = DesktopHeight(0)
  Depth = DesktopDepth(0)
  
  If Width < 1024
    Width = 1024
  EndIf
  
  If Height < 768
    Height = 768
  EndIf
  
  If OpenScreen(Width, Height, Depth, "LoL - PB 5.40")
    
    RandomSeed(650000)
    MakeFlare()
    
    NewList Flare.Flares()
    
    PosX = (Width - 1024) >> 1
    PosY = (Height - 768) >> 1
    
    MakeBackground(PosX, PosY, Flare())
    InitializeEffex(Flare(), Width, Height)
    
    SetTemporizerTotalTime(Tempo.chronometer, 0, 30, 0, 0, 0)
    StartTemporizer(Tempo)
    
    Repeat 
      
      ExamineKeyboard() 
      ClearScreen(0) 
      UpdateFlare(Flare())
      FlipBuffers() 
      
      If ConsultTemporizer(Tempo) <= 0
        StopTemporizer(Tempo)
        InitializeEffex(Flare(), Width, Height)
        SetTemporizerTotalTime(Tempo, 0, 30, 0, 0, 0)
        StartTemporizer(Tempo)
      EndIf 
      
    Until KeyboardPushed(#PB_Key_Escape) 
    
  EndIf 
  
EndIf 


DataSection
  
  BackGround:
  
  Data.s "256:0"
  Data.s "256:0"
  Data.s "70:0, 2:1, 184:0"
  Data.s "68:0, 5:1, 183:0"
  Data.s "65:0, 11:1, 180:0"
  Data.s "63:0, 15:1, 178:0"
  Data.s "60:0, 20:1, 71:0, 2:1, 103:0"
  Data.s "58:0, 24:1, 65:0, 7:1, 102:0"
  Data.s "56:0, 29:1, 56:0, 15:1, 100:0"
  Data.s "55:0, 32:1, 50:0, 20:1, 99:0"
  Data.s "55:0, 34:1, 42:0, 28:1, 97:0"
  Data.s "54:0, 37:1, 39:0, 30:1, 46:0, 8:1, 42:0"
  Data.s "54:0, 38:1, 38:0, 32:1, 36:0, 17:1, 41:0"
  Data.s "53:0, 40:1, 37:0, 33:1, 34:0, 19:1, 40:0"
  Data.s "53:0, 16:1, 4:0, 20:1, 38:0, 34:1, 31:0, 22:1, 38:0"
  Data.s "52:0, 15:1, 8:0, 18:1, 38:0, 35:1, 30:0, 22:1, 38:0"
  Data.s "52:0, 12:1, 14:0, 16:1, 37:0, 36:1, 28:0, 25:1, 36:0"
  Data.s "52:0, 11:1, 16:0, 15:1, 37:0, 36:1, 27:0, 27:1, 35:0"
  Data.s "51:0, 11:1, 20:0, 13:1, 36:0, 12:1, 9:0, 15:1, 26:0, 9:1, 9:0, 10:1, 35:0"
  Data.s "51:0, 11:1, 21:0, 12:1, 36:0, 9:1, 13:0, 14:1, 25:0, 10:1, 10:0, 9:1, 35:0"
  Data.s "50:0, 11:1, 23:0, 11:1, 36:0, 2:1, 22:0, 12:1, 25:0, 9:1, 13:0, 7:1, 35:0"
  Data.s "50:0, 11:1, 23:0, 12:1, 60:0, 12:1, 24:0, 8:1, 14:0, 7:1, 35:0"
  Data.s "49:0, 11:1, 25:0, 11:1, 61:0, 11:1, 24:0, 7:1, 15:0, 8:1, 34:0"
  Data.s "49:0, 11:1, 25:0, 12:1, 61:0, 10:1, 24:0, 7:1, 15:0, 8:1, 34:0"
  Data.s "48:0, 11:1, 26:0, 12:1, 61:0, 11:1, 23:0, 7:1, 16:0, 7:1, 34:0"
  Data.s "48:0, 11:1, 27:0, 11:1, 61:0, 11:1, 23:0, 7:1, 16:0, 7:1, 34:0"
  Data.s "48:0, 11:1, 27:0, 12:1, 60:0, 11:1, 23:0, 7:1, 16:0, 7:1, 34:0"
  Data.s "47:0, 11:1, 29:0, 11:1, 61:0, 10:1, 24:0, 6:1, 16:0, 7:1, 34:0"
  Data.s "46:0, 12:1, 28:0, 11:1, 62:0, 10:1, 24:0, 6:1, 16:0, 7:1, 34:0"
  Data.s "46:0, 11:1, 29:0, 11:1, 62:0, 10:1, 24:0, 6:1, 16:0, 7:1, 34:0"
  Data.s "48:0, 9:1, 28:0, 12:1, 62:0, 10:1, 24:0, 6:1, 16:0, 7:1, 34:0"
  Data.s "50:0, 6:1, 29:0, 11:1, 63:0, 11:1, 23:0, 7:1, 15:0, 7:1, 34:0"
  Data.s "25:0, 4:1, 23:0, 4:1, 28:0, 12:1, 63:0, 11:1, 23:0, 7:1, 16:0, 6:1, 34:0"
  Data.s "24:0, 7:1, 23:0, 1:1, 29:0, 11:1, 64:0, 11:1, 23:0, 7:1, 16:0, 6:1, 34:0"
  Data.s "21:0, 14:1, 48:0, 12:1, 65:0, 10:1, 23:0, 5:1, 18:0, 6:1, 34:0"
  Data.s "20:0, 17:1, 46:0, 11:1, 66:0, 11:1, 45:0, 8:1, 32:0"
  Data.s "17:0, 24:1, 42:0, 11:1, 65:0, 12:1, 14:0, 6:1, 25:0, 9:1, 31:0"
  Data.s "17:0, 24:1, 41:0, 11:1, 66:0, 12:1, 12:0, 11:1, 22:0, 10:1, 30:0"
  Data.s "16:0, 26:1, 40:0, 11:1, 65:0, 13:1, 10:0, 16:1, 19:0, 11:1, 29:0"
  Data.s "16:0, 26:1, 39:0, 12:1, 64:0, 13:1, 9:0, 21:1, 18:0, 8:1, 30:0"
  Data.s "16:0, 9:1, 6:0, 12:1, 38:0, 11:1, 64:0, 13:1, 9:0, 24:1, 17:0, 7:1, 30:0"
  Data.s "16:0, 7:1, 12:0, 8:1, 37:0, 11:1, 65:0, 13:1, 8:0, 25:1, 18:0, 5:1, 31:0"
  Data.s "15:0, 7:1, 14:0, 8:1, 36:0, 11:1, 64:0, 13:1, 9:0, 25:1, 19:0, 3:1, 32:0"
  Data.s "15:0, 7:1, 14:0, 8:1, 35:0, 12:1, 61:0, 15:1, 10:0, 9:1, 4:0, 13:1, 19:0, 1:1, 9:0, 6:1, 18:0"
  Data.s "15:0, 7:1, 15:0, 8:1, 34:0, 11:1, 56:0, 21:1, 10:0, 8:1, 9:0, 10:1, 24:0, 10:1, 18:0"
  Data.s "14:0, 8:1, 15:0, 8:1, 34:0, 11:1, 52:0, 24:1, 10:0, 7:1, 13:0, 8:1, 24:0, 10:1, 18:0"
  Data.s "14:0, 7:1, 17:0, 7:1, 33:0, 11:1, 47:0, 29:1, 11:0, 7:1, 14:0, 7:1, 24:0, 10:1, 18:0"
  Data.s "14:0, 7:1, 17:0, 7:1, 33:0, 11:1, 43:0, 33:1, 10:0, 8:1, 14:0, 8:1, 23:0, 10:1, 18:0"
  Data.s "14:0, 6:1, 17:0, 7:1, 33:0, 11:1, 40:0, 36:1, 11:0, 7:1, 16:0, 8:1, 22:0, 10:1, 18:0"
  Data.s "13:0, 7:1, 17:0, 7:1, 33:0, 11:1, 39:0, 36:1, 12:0, 7:1, 16:0, 8:1, 22:0, 10:1, 18:0"
  Data.s "13:0, 7:1, 16:0, 8:1, 32:0, 11:1, 40:0, 36:1, 12:0, 7:1, 16:0, 7:1, 23:0, 10:1, 18:0"
  Data.s "15:0, 5:1, 16:0, 8:1, 32:0, 11:1, 39:0, 36:1, 12:0, 7:1, 17:0, 7:1, 23:0, 10:1, 18:0"
  Data.s "18:0, 1:1, 17:0, 7:1, 32:0, 12:1, 38:0, 33:1, 16:0, 7:1, 17:0, 7:1, 23:0, 10:1, 18:0"
  Data.s "36:0, 7:1, 33:0, 11:1, 38:0, 27:1, 22:0, 7:1, 16:0, 7:1, 52:0"
  Data.s "35:0, 7:1, 34:0, 12:1, 36:0, 24:1, 25:0, 8:1, 16:0, 7:1, 52:0"
  Data.s "35:0, 7:1, 35:0, 11:1, 35:0, 19:1, 35:0, 3:1, 17:0, 7:1, 52:0"
  Data.s "35:0, 7:1, 35:0, 12:1, 34:0, 15:1, 58:0, 8:1, 52:0"
  Data.s "34:0, 8:1, 35:0, 12:1, 33:0, 13:1, 61:0, 7:1, 53:0"
  Data.s "34:0, 7:1, 37:0, 11:1, 32:0, 13:1, 62:0, 7:1, 53:0"
  Data.s "34:0, 7:1, 37:0, 11:1, 32:0, 12:1, 62:0, 7:1, 54:0"
  Data.s "33:0, 7:1, 38:0, 12:1, 32:0, 11:1, 62:0, 7:1, 54:0"
  Data.s "33:0, 7:1, 39:0, 11:1, 34:0, 8:1, 63:0, 7:1, 54:0"
  Data.s "33:0, 7:1, 39:0, 8:1, 38:0, 6:1, 64:0, 7:1, 54:0"
  Data.s "33:0, 8:1, 38:0, 5:1, 43:0, 4:1, 63:0, 7:1, 55:0"
  Data.s "34:0, 8:1, 38:0, 2:1, 46:0, 2:1, 64:0, 7:1, 55:0"
  Data.s "34:0, 8:1, 151:0, 8:1, 55:0"
  Data.s "34:0, 8:1, 151:0, 8:1, 55:0"
  Data.s "35:0, 8:1, 151:0, 8:1, 54:0"
  Data.s "36:0, 5:1, 78:0, 2:1, 73:0, 8:1, 54:0"
  Data.s "36:0, 3:1, 73:0, 10:1, 73:0, 8:1, 53:0"
  Data.s "87:0, 3:1, 19:0, 13:1, 73:0, 8:1, 53:0"
  Data.s "87:0, 6:1, 14:0, 15:1, 74:0, 6:1, 54:0"
  Data.s "86:0, 8:1, 13:0, 16:1, 74:0, 4:1, 55:0"
  Data.s "41:0, 5:1, 40:0, 11:1, 10:0, 16:1, 74:0, 1:1, 58:0"
  Data.s "41:0, 7:1, 37:0, 14:1, 9:0, 15:1, 133:0"
  Data.s "40:0, 10:1, 35:0, 16:1, 7:0, 15:1, 133:0"
  Data.s "40:0, 10:1, 34:0, 17:1, 7:0, 15:1, 79:0, 2:1, 52:0"
  Data.s "40:0, 10:1, 34:0, 16:1, 8:0, 15:1, 79:0, 6:1, 48:0"
  Data.s "40:0, 10:1, 33:0, 17:1, 9:0, 14:1, 78:0, 10:1, 45:0"
  Data.s "39:0, 10:1, 34:0, 16:1, 10:0, 15:1, 77:0, 10:1, 45:0"
  Data.s "39:0, 10:1, 34:0, 16:1, 10:0, 15:1, 77:0, 10:1, 45:0"
  Data.s "39:0, 10:1, 33:0, 16:1, 11:0, 15:1, 76:0, 10:1, 46:0"
  Data.s "41:0, 7:1, 34:0, 16:1, 11:0, 15:1, 76:0, 10:1, 46:0"
  Data.s "45:0, 3:1, 35:0, 14:1, 12:0, 9:1, 82:0, 10:1, 46:0"
  Data.s "85:0, 12:1, 13:0, 4:1, 85:0, 10:1, 47:0"
  Data.s "88:0, 9:1, 105:0, 7:1, 47:0"
  Data.s "89:0, 7:1, 108:0, 5:1, 47:0"
  Data.s "92:0, 3:1, 161:0"
  Data.s "94:0, 1:1, 161:0"
  Data.s "256:0"
  Data.s "256:0"
  Data.s "20:0, 3:1, 2:0, 3:1, 2:0, 3:1, 3:0, 3:1, 7:0, 3:1, 7:0, 5:1, 7:0, 3:1, 7:0, 3:1, 19:0, 3:1, 1:0, 5:1, 7:0, 3:1, 6:0, 4:1, 3:0, 3:1, 2:0, 4:1, 11:0, 5:1, 7:0, 3:1, 2:0, 4:1, 12:0, 3:1, 12:0, 5:1, 10:0, 8:1, 9:0, 5:1, 19:0"
  Data.s "20:0, 8:1, 2:0, 3:1, 3:0, 4:1, 6:0, 3:1, 6:0, 7:1, 6:0, 3:1, 6:0, 4:1, 19:0, 3:1, 1:0, 6:1, 6:0, 3:1, 6:0, 4:1, 3:0, 3:1, 1:0, 6:1, 9:0, 7:1, 6:0, 3:1, 2:0, 5:1, 11:0, 3:1, 11:0, 7:1, 8:0, 9:1, 8:0, 7:1, 18:0"
  Data.s "20:0, 8:1, 2:0, 3:1, 3:0, 4:1, 6:0, 3:1, 5:0, 9:1, 5:0, 4:1, 5:0, 4:1, 19:0, 11:1, 5:0, 3:1, 6:0, 4:1, 3:0, 3:1, 1:0, 7:1, 7:0, 9:1, 5:0, 3:1, 1:0, 7:1, 9:0, 5:1, 9:0, 9:1, 7:0, 9:1, 7:0, 9:1, 17:0"
  Data.s "20:0, 8:1, 2:0, 3:1, 3:0, 4:1, 6:0, 3:1, 4:0, 11:1, 4:0, 4:1, 5:0, 4:1, 19:0, 12:1, 4:0, 3:1, 6:0, 4:1, 3:0, 12:1, 5:0, 11:1, 4:0, 12:1, 8:0, 5:1, 8:0, 11:1, 7:0, 8:1, 6:0, 11:1, 16:0"
  Data.s "20:0, 8:1, 2:0, 3:1, 3:0, 4:1, 6:0, 3:1, 3:0, 5:1, 3:0, 5:1, 3:0, 5:1, 4:0, 4:1, 19:0, 5:1, 3:0, 5:1, 3:0, 3:1, 6:0, 4:1, 3:0, 7:1, 1:0, 5:1, 3:0, 5:1, 3:0, 5:1, 3:0, 7:1, 1:0, 5:1, 6:0, 7:1, 6:0, 5:1, 3:0, 5:1, 8:0, 3:1, 8:0, 5:1, 3:0, 5:1, 15:0"
  Data.s "20:0, 8:1, 2:0, 3:1, 3:0, 4:1, 6:0, 3:1, 3:0, 4:1, 5:0, 4:1, 3:0, 5:1, 4:0, 4:1, 19:0, 5:1, 4:0, 4:1, 3:0, 3:1, 6:0, 4:1, 3:0, 6:1, 3:0, 4:1, 3:0, 4:1, 5:0, 4:1, 3:0, 6:1, 3:0, 4:1, 6:0, 3:1, 1:0, 3:1, 6:0, 4:1, 5:0, 4:1, 8:0, 3:1, 8:0, 4:1, 5:0, 4:1, 15:0"
  Data.s "20:0, 8:1, 2:0, 3:1, 3:0, 4:1, 6:0, 3:1, 3:0, 3:1, 7:0, 1:1, 5:0, 6:1, 3:0, 4:1, 19:0, 5:1, 4:0, 4:1, 3:0, 3:1, 6:0, 4:1, 3:0, 5:1, 4:0, 4:1, 3:0, 3:1, 7:0, 2:1, 4:0, 6:1, 4:0, 3:1, 5:0, 4:1, 1:0, 4:1, 5:0, 4:1, 7:0, 1:1, 9:0, 3:1, 8:0, 4:1, 6:0, 2:1, 16:0"
  Data.s "20:0, 8:1, 2:0, 3:1, 3:0, 4:1, 6:0, 3:1, 3:0, 3:1, 13:0, 6:1, 3:0, 4:1, 19:0, 4:1, 5:0, 4:1, 3:0, 3:1, 6:0, 4:1, 3:0, 5:1, 4:0, 4:1, 3:0, 3:1, 13:0, 5:1, 5:0, 3:1, 5:0, 3:1, 3:0, 3:1, 5:0, 4:1, 17:0, 3:1, 8:0, 4:1, 24:0"
  Data.s "20:0, 8:1, 2:0, 3:1, 3:0, 4:1, 6:0, 3:1, 3:0, 4:1, 12:0, 7:1, 2:0, 4:1, 19:0, 3:1, 6:0, 4:1, 3:0, 3:1, 6:0, 4:1, 3:0, 5:1, 4:0, 4:1, 3:0, 4:1, 12:0, 5:1, 4:0, 4:1, 4:0, 4:1, 3:0, 4:1, 4:0, 4:1, 17:0, 3:1, 8:0, 4:1, 24:0"
  Data.s "20:0, 8:1, 2:0, 3:1, 3:0, 3:1, 7:0, 3:1, 3:0, 5:1, 11:0, 3:1, 1:0, 3:1, 2:0, 4:1, 19:0, 3:1, 5:0, 5:1, 3:0, 3:1, 6:0, 4:1, 3:0, 4:1, 4:0, 5:1, 3:0, 5:1, 11:0, 4:1, 4:0, 5:1, 4:0, 3:1, 5:0, 3:1, 4:0, 5:1, 16:0, 3:1, 8:0, 4:1, 24:0"
  Data.s "20:0, 8:1, 2:0, 3:1, 3:0, 13:1, 4:0, 9:1, 6:0, 3:1, 1:0, 4:1, 1:0, 4:1, 19:0, 11:1, 5:0, 3:1, 6:0, 4:1, 3:0, 3:1, 2:0, 6:1, 6:0, 9:1, 6:0, 4:1, 1:0, 7:1, 4:0, 4:1, 5:0, 4:1, 5:0, 8:1, 11:0, 3:1, 8:0, 4:1, 24:0"
  Data.s "20:0, 8:1, 2:0, 3:1, 3:0, 13:1, 5:0, 8:1, 6:0, 3:1, 2:0, 3:1, 1:0, 4:1, 19:0, 11:1, 5:0, 3:1, 6:0, 4:1, 3:0, 3:1, 2:0, 6:1, 8:0, 7:1, 6:0, 3:1, 2:0, 6:1, 5:0, 4:1, 6:0, 3:1, 5:0, 8:1, 11:0, 3:1, 8:0, 4:1, 24:0"
  Data.s "20:0, 8:1, 2:0, 3:1, 3:0, 13:1, 4:0, 9:1, 6:0, 3:1, 2:0, 8:1, 19:0, 9:1, 7:0, 3:1, 6:0, 4:1, 3:0, 3:1, 2:0, 4:1, 9:0, 8:1, 6:0, 3:1, 2:0, 7:1, 4:0, 13:1, 7:0, 8:1, 9:0, 3:1, 8:0, 4:1, 24:0"
  Data.s "20:0, 8:1, 2:0, 3:1, 3:0, 13:1, 4:0, 8:1, 7:0, 3:1, 3:0, 3:1, 1:0, 3:1, 19:0, 3:1, 1:0, 4:1, 8:0, 3:1, 5:0, 5:1, 3:0, 3:1, 2:0, 4:1, 8:0, 9:1, 6:0, 3:1, 2:0, 7:1, 4:0, 13:1, 7:0, 8:1, 9:0, 3:1, 8:0, 4:1, 24:0"
  Data.s "20:0, 8:1, 2:0, 3:1, 3:0, 4:1, 6:0, 3:1, 3:0, 4:1, 12:0, 3:1, 3:0, 7:1, 19:0, 3:1, 13:0, 3:1, 5:0, 5:1, 3:0, 3:1, 3:0, 4:1, 6:0, 4:1, 12:0, 3:1, 6:0, 4:1, 3:0, 13:1, 12:0, 4:1, 7:0, 4:1, 8:0, 4:1, 24:0"
  Data.s "20:0, 8:1, 2:0, 3:1, 3:0, 4:1, 6:0, 3:1, 3:0, 3:1, 13:0, 3:1, 4:0, 6:1, 19:0, 3:1, 13:0, 3:1, 4:0, 6:1, 3:0, 3:1, 4:0, 3:1, 6:0, 3:1, 13:0, 3:1, 6:0, 4:1, 3:0, 13:1, 13:0, 3:1, 8:0, 3:1, 8:0, 4:1, 24:0"
  Data.s "20:0, 8:1, 1:0, 4:1, 3:0, 4:1, 6:0, 3:1, 3:0, 3:1, 7:0, 1:1, 5:0, 3:1, 4:0, 6:1, 19:0, 3:1, 13:0, 3:1, 4:0, 6:1, 3:0, 3:1, 4:0, 4:1, 5:0, 3:1, 7:0, 2:1, 4:0, 3:1, 7:0, 3:1, 3:0, 4:1, 6:0, 3:1, 4:0, 2:1, 7:0, 3:1, 8:0, 3:1, 8:0, 4:1, 6:0, 2:1, 16:0"
  Data.s "20:0, 8:1, 1:0, 3:1, 4:0, 4:1, 6:0, 3:1, 3:0, 3:1, 7:0, 2:1, 4:0, 3:1, 5:0, 5:1, 19:0, 3:1, 13:0, 3:1, 3:0, 7:1, 3:0, 3:1, 4:0, 4:1, 5:0, 3:1, 6:0, 3:1, 4:0, 3:1, 6:0, 4:1, 3:0, 4:1, 6:0, 3:1, 4:0, 3:1, 6:0, 3:1, 8:0, 3:1, 8:0, 4:1, 6:0, 2:1, 16:0"
  Data.s "20:0, 12:1, 4:0, 4:1, 6:0, 3:1, 3:0, 5:1, 3:0, 5:1, 3:0, 3:1, 5:0, 5:1, 19:0, 3:1, 13:0, 5:1, 1:0, 7:1, 3:0, 3:1, 5:0, 3:1, 5:0, 5:1, 3:0, 5:1, 3:0, 3:1, 5:0, 5:1, 3:0, 4:1, 6:0, 3:1, 3:0, 5:1, 3:0, 5:1, 8:0, 3:1, 8:0, 5:1, 4:0, 4:1, 15:0"
  Data.s "20:0, 11:1, 5:0, 4:1, 6:0, 3:1, 4:0, 4:1, 3:0, 4:1, 4:0, 3:1, 6:0, 4:1, 19:0, 3:1, 14:0, 12:1, 3:0, 3:1, 6:0, 3:1, 5:0, 4:1, 3:0, 5:1, 3:0, 3:1, 5:0, 5:1, 3:0, 4:1, 6:0, 3:1, 4:0, 5:1, 2:0, 4:1, 9:0, 3:1, 9:0, 5:1, 2:0, 4:1, 16:0"
  Data.s "21:0, 10:1, 5:0, 4:1, 6:0, 3:1, 5:0, 9:1, 5:0, 3:1, 6:0, 4:1, 19:0, 3:1, 15:0, 11:1, 3:0, 3:1, 6:0, 4:1, 5:0, 9:1, 5:0, 11:1, 5:0, 4:1, 6:0, 3:1, 5:0, 9:1, 7:0, 9:1, 7:0, 9:1, 17:0"
  Data.s "22:0, 8:1, 6:0, 4:1, 6:0, 3:1, 6:0, 7:1, 6:0, 3:1, 7:0, 3:1, 19:0, 3:1, 16:0, 5:1, 1:0, 4:1, 3:0, 3:1, 6:0, 4:1, 6:0, 7:1, 6:0, 10:1, 6:0, 4:1, 6:0, 3:1, 6:0, 7:1, 8:0, 9:1, 8:0, 7:1, 18:0"
  Data.s "23:0, 2:1, 2:0, 3:1, 6:0, 4:1, 6:0, 3:1, 7:0, 5:1, 7:0, 3:1, 7:0, 3:1, 19:0, 3:1, 17:0, 3:1, 2:0, 4:1, 3:0, 3:1, 7:0, 2:1, 8:0, 5:1, 7:0, 9:1, 7:0, 4:1, 6:0, 3:1, 7:0, 5:1, 9:0, 9:1, 9:0, 5:1, 19:0"
  Data.s "256:0"
  Data.s "256:0"
  Data.s "256:0"
  Data.s "256:0"
  Data.s "256:0"
  Data.s "256:0"
  Data.s "256:0"
  Data.s "256:0"
  Data.s "256:0"
  Data.s "256:0"
  Data.s "256:0"
  Data.s "24:0, 4:1, 5:0, 1:1, 6:0, 13:1, 27:0, 3:1, 9:0, 5:1, 24:0, 3:1, 1:0, 4:1, 1:0, 3:1, 6:0, 8:1, 6:0, 3:1, 13:0, 3:1, 29:0, 3:1, 1:0, 4:1, 12:0, 4:1, 31:0"
  Data.s "24:0, 4:1, 4:0, 3:1, 5:0, 13:1, 20:0, 3:1, 3:0, 4:1, 9:0, 6:1, 22:0, 4:1, 1:0, 4:1, 1:0, 3:1, 6:0, 8:1, 6:0, 3:1, 13:0, 3:1, 28:0, 4:1, 1:0, 5:1, 10:0, 6:1, 30:0"
  Data.s "24:0, 4:1, 4:0, 4:1, 4:0, 14:1, 18:0, 5:1, 2:0, 4:1, 8:0, 8:1, 21:0, 4:1, 1:0, 4:1, 1:0, 3:1, 6:0, 8:1, 6:0, 3:1, 13:0, 3:1, 28:0, 11:1, 8:0, 9:1, 28:0"
  Data.s "24:0, 4:1, 4:0, 5:1, 3:0, 13:1, 20:0, 4:1, 2:0, 4:1, 7:0, 10:1, 20:0, 4:1, 1:0, 4:1, 1:0, 3:1, 6:0, 8:1, 6:0, 3:1, 13:0, 3:1, 28:0, 12:1, 6:0, 10:1, 28:0"
  Data.s "24:0, 4:1, 5:0, 5:1, 2:0, 4:1, 30:0, 3:1, 2:0, 4:1, 6:0, 4:1, 3:0, 5:1, 19:0, 4:1, 1:0, 4:1, 1:0, 3:1, 8:0, 4:1, 8:0, 3:1, 13:0, 3:1, 28:0, 7:1, 2:0, 5:1, 3:0, 5:1, 3:0, 5:1, 26:0"
  Data.s "24:0, 4:1, 6:0, 4:1, 2:0, 4:1, 30:0, 3:1, 2:0, 4:1, 5:0, 4:1, 5:0, 4:1, 19:0, 4:1, 1:0, 4:1, 1:0, 3:1, 8:0, 4:1, 8:0, 3:1, 13:0, 3:1, 28:0, 6:1, 4:0, 4:1, 2:0, 4:1, 6:0, 3:1, 27:0"
  Data.s "24:0, 4:1, 6:0, 4:1, 2:0, 4:1, 30:0, 3:1, 2:0, 4:1, 5:0, 4:1, 6:0, 3:1, 19:0, 4:1, 1:0, 4:1, 1:0, 3:1, 8:0, 4:1, 8:0, 3:1, 13:0, 3:1, 28:0, 6:1, 4:0, 4:1, 2:0, 4:1, 5:0, 1:1, 1:0, 1:1, 28:0"
  Data.s "24:0, 4:1, 6:0, 4:1, 2:0, 4:1, 30:0, 3:1, 2:0, 4:1, 5:0, 4:1, 5:0, 4:1, 19:0, 4:1, 1:0, 4:1, 1:0, 3:1, 8:0, 4:1, 8:0, 3:1, 13:0, 3:1, 28:0, 6:1, 4:0, 4:1, 2:0, 4:1, 36:0"
  Data.s "24:0, 4:1, 6:0, 4:1, 2:0, 10:1, 24:0, 3:1, 2:0, 4:1, 5:0, 4:1, 4:0, 5:1, 19:0, 4:1, 1:0, 4:1, 1:0, 3:1, 8:0, 4:1, 8:0, 3:1, 13:0, 3:1, 28:0, 5:1, 5:0, 4:1, 2:0, 5:1, 35:0"
  Data.s "24:0, 4:1, 6:0, 4:1, 2:0, 11:1, 23:0, 3:1, 2:0, 4:1, 5:0, 4:1, 3:0, 6:1, 19:0, 4:1, 1:0, 4:1, 1:0, 3:1, 8:0, 4:1, 8:0, 3:1, 13:0, 3:1, 28:0, 4:1, 5:0, 4:1, 4:0, 5:1, 34:0"
  Data.s "24:0, 4:1, 6:0, 4:1, 2:0, 12:1, 22:0, 3:1, 2:0, 4:1, 5:0, 4:1, 2:0, 7:1, 19:0, 4:1, 1:0, 4:1, 1:0, 3:1, 8:0, 4:1, 8:0, 3:1, 13:0, 3:1, 28:0, 4:1, 1:0, 7:1, 6:0, 8:1, 30:0"
  Data.s "24:0, 4:1, 6:0, 4:1, 2:0, 6:1, 2:0, 5:1, 20:0, 4:1, 2:0, 4:1, 5:0, 4:1, 1:0, 4:1, 1:0, 3:1, 19:0, 4:1, 1:0, 4:1, 1:0, 3:1, 8:0, 4:1, 8:0, 3:1, 13:0, 3:1, 28:0, 4:1, 1:0, 6:1, 8:0, 7:1, 30:0"
  Data.s "24:0, 4:1, 6:0, 4:1, 2:0, 4:1, 5:0, 5:1, 19:0, 12:1, 3:0, 9:1, 1:0, 3:1, 19:0, 4:1, 1:0, 4:1, 1:0, 3:1, 8:0, 4:1, 8:0, 3:1, 13:0, 3:1, 28:0, 4:1, 1:0, 7:1, 6:0, 8:1, 30:0"
  Data.s "24:0, 4:1, 6:0, 4:1, 3:0, 2:1, 7:0, 4:1, 18:0, 13:1, 3:0, 7:1, 3:0, 3:1, 19:0, 4:1, 1:0, 4:1, 1:0, 3:1, 8:0, 4:1, 8:0, 3:1, 13:0, 3:1, 28:0, 4:1, 2:0, 1:1, 1:0, 5:1, 5:0, 8:1, 30:0"
  Data.s "24:0, 4:1, 6:0, 4:1, 12:0, 4:1, 18:0, 13:1, 3:0, 7:1, 3:0, 3:1, 19:0, 4:1, 1:0, 4:1, 1:0, 3:1, 8:0, 4:1, 8:0, 3:1, 13:0, 3:1, 28:0, 4:1, 5:0, 5:1, 2:0, 5:1, 35:0"
  Data.s "24:0, 4:1, 6:0, 3:1, 13:0, 4:1, 18:0, 13:1, 3:0, 5:1, 5:0, 3:1, 19:0, 4:1, 1:0, 4:1, 1:0, 3:1, 8:0, 4:1, 8:0, 3:1, 13:0, 3:1, 28:0, 4:1, 6:0, 4:1, 2:0, 4:1, 36:0"
  Data.s "24:0, 4:1, 5:0, 4:1, 13:0, 3:1, 27:0, 3:1, 5:0, 5:1, 5:0, 3:1, 19:0, 4:1, 1:0, 4:1, 1:0, 3:1, 8:0, 4:1, 8:0, 3:1, 13:0, 3:1, 28:0, 4:1, 6:0, 4:1, 2:0, 4:1, 36:0"
  Data.s "24:0, 4:1, 4:0, 4:1, 5:0, 3:1, 6:0, 4:1, 25:0, 4:1, 5:0, 4:1, 6:0, 3:1, 19:0, 4:1, 1:0, 8:1, 8:0, 4:1, 8:0, 3:1, 13:0, 3:1, 28:0, 4:1, 6:0, 4:1, 2:0, 4:1, 6:0, 3:1, 27:0"
  Data.s "24:0, 5:1, 3:0, 4:1, 4:0, 5:1, 4:0, 4:1, 9:0, 2:1, 15:0, 4:1, 5:0, 5:1, 4:0, 4:1, 19:0, 4:1, 1:0, 8:1, 8:0, 4:1, 8:0, 3:1, 13:0, 3:1, 28:0, 4:1, 5:0, 5:1, 2:0, 5:1, 4:0, 5:1, 26:0"
  Data.s "25:0, 5:1, 2:0, 3:1, 6:0, 5:1, 2:0, 5:1, 8:0, 4:1, 14:0, 4:1, 6:0, 5:1, 2:0, 5:1, 20:0, 11:1, 9:0, 4:1, 8:0, 3:1, 13:0, 3:1, 28:0, 4:1, 4:0, 5:1, 4:0, 5:1, 2:0, 5:1, 27:0"
  Data.s "26:0, 8:1, 8:0, 10:1, 8:0, 6:1, 13:0, 6:1, 5:0, 10:1, 21:0, 10:1, 8:0, 8:1, 6:0, 13:1, 3:0, 13:1, 18:0, 12:1, 6:0, 10:1, 28:0"
  Data.s "27:0, 7:1, 9:0, 8:1, 10:0, 4:1, 16:0, 3:1, 7:0, 8:1, 23:0, 9:1, 8:0, 8:1, 6:0, 13:1, 3:0, 13:1, 18:0, 11:1, 8:0, 8:1, 29:0"
  Data.s "28:0, 6:1, 10:0, 6:1, 12:0, 2:1, 18:0, 1:1, 9:0, 6:1, 25:0, 3:1, 1:0, 4:1, 8:0, 8:1, 6:0, 13:1, 3:0, 13:1, 18:0, 10:1, 10:0, 6:1, 30:0"
  Data.s "256:0"
  Data.s "256:0"
  Data.s "256:0"
  Data.s "256:0"
  Data.s "256:0"
  Data.s "256:0"
  Data.s "256:0"
  Data.s "256:0"
  Data.s "256:0"
  Data.s "256:0"
  Data.s "256:0"
  Data.s "256:0"
  Data.s "64:0, 3:1, 2:0, 5:1, 9:0, 7:1, 6:0, 3:1, 16:0, 7:1, 11:0, 3:1, 11:0, 7:1, 10:0, 6:1, 6:0, 4:1, 1:0, 5:1, 15:0, 6:1, 49:0"
  Data.s "64:0, 3:1, 1:0, 7:1, 7:0, 9:1, 5:0, 3:1, 16:0, 8:1, 10:0, 4:1, 10:0, 8:1, 8:0, 8:1, 5:0, 11:1, 13:0, 8:1, 48:0"
  Data.s "64:0, 3:1, 1:0, 8:1, 5:0, 11:1, 4:0, 3:1, 14:0, 11:1, 8:0, 5:1, 8:0, 11:1, 6:0, 10:1, 4:0, 12:1, 11:0, 10:1, 47:0"
  Data.s "64:0, 7:1, 1:0, 5:1, 3:0, 5:1, 3:0, 5:1, 3:0, 3:1, 13:0, 5:1, 3:0, 5:1, 6:0, 7:1, 7:0, 4:1, 3:0, 5:1, 4:0, 4:1, 3:0, 5:1, 3:0, 7:1, 1:0, 5:1, 9:0, 5:1, 2:0, 5:1, 46:0"
  Data.s "64:0, 6:1, 3:0, 4:1, 3:0, 4:1, 5:0, 4:1, 3:0, 3:1, 13:0, 4:1, 5:0, 4:1, 6:0, 7:1, 6:0, 4:1, 5:0, 4:1, 3:0, 4:1, 5:0, 4:1, 3:0, 6:1, 3:0, 4:1, 9:0, 4:1, 5:0, 3:1, 46:0"
  Data.s "64:0, 6:1, 4:0, 3:1, 3:0, 3:1, 7:0, 2:1, 4:0, 3:1, 13:0, 3:1, 7:0, 2:1, 7:0, 3:1, 1:0, 4:1, 5:0, 4:1, 6:0, 2:1, 4:0, 4:1, 6:0, 2:1, 4:0, 6:1, 4:0, 3:1, 10:0, 2:1, 6:0, 3:1, 46:0"
  Data.s "64:0, 5:1, 4:0, 4:1, 3:0, 3:1, 13:0, 3:1, 13:0, 3:1, 15:0, 4:1, 1:0, 4:1, 5:0, 4:1, 12:0, 4:1, 12:0, 5:1, 5:0, 3:1, 18:0, 3:1, 46:0"
  Data.s "64:0, 5:1, 4:0, 4:1, 3:0, 4:1, 12:0, 3:1, 13:0, 4:1, 13:0, 4:1, 3:0, 4:1, 4:0, 4:1, 12:0, 4:1, 12:0, 5:1, 5:0, 3:1, 18:0, 3:1, 46:0"
  Data.s "64:0, 4:1, 4:0, 5:1, 3:0, 5:1, 11:0, 3:1, 13:0, 5:1, 12:0, 4:1, 4:0, 3:1, 4:0, 5:1, 11:0, 5:1, 11:0, 4:1, 6:0, 3:1, 17:0, 4:1, 46:0"
  Data.s "64:0, 4:1, 1:0, 7:1, 5:0, 9:1, 6:0, 3:1, 14:0, 9:1, 7:0, 3:1, 5:0, 4:1, 4:0, 8:1, 8:0, 9:1, 6:0, 4:1, 6:0, 3:1, 16:0, 5:1, 46:0"
  Data.s "64:0, 3:1, 2:0, 6:1, 7:0, 8:1, 6:0, 3:1, 15:0, 8:1, 6:0, 4:1, 5:0, 4:1, 6:0, 7:1, 9:0, 7:1, 6:0, 4:1, 6:0, 3:1, 15:0, 4:1, 48:0"
  Data.s "64:0, 3:1, 2:0, 5:1, 8:0, 8:1, 6:0, 3:1, 15:0, 8:1, 6:0, 3:1, 7:0, 3:1, 6:0, 8:1, 7:0, 8:1, 6:0, 4:1, 6:0, 3:1, 14:0, 5:1, 48:0"
  Data.s "64:0, 3:1, 2:0, 4:1, 8:0, 9:1, 6:0, 3:1, 14:0, 9:1, 6:0, 13:1, 7:0, 8:1, 5:0, 9:1, 6:0, 4:1, 6:0, 3:1, 13:0, 4:1, 50:0"
  Data.s "64:0, 3:1, 3:0, 3:1, 7:0, 5:1, 11:0, 3:1, 13:0, 5:1, 11:0, 13:1, 11:0, 5:1, 3:0, 5:1, 11:0, 4:1, 6:0, 3:1, 13:0, 4:1, 50:0"
  Data.s "64:0, 3:1, 3:0, 4:1, 6:0, 4:1, 12:0, 3:1, 13:0, 4:1, 12:0, 13:1, 13:0, 3:1, 3:0, 4:1, 12:0, 4:1, 6:0, 3:1, 13:0, 4:1, 50:0"
  Data.s "64:0, 3:1, 4:0, 4:1, 5:0, 3:1, 13:0, 3:1, 13:0, 3:1, 13:0, 3:1, 7:0, 3:1, 13:0, 3:1, 3:0, 4:1, 12:0, 4:1, 6:0, 3:1, 14:0, 3:1, 50:0"
  Data.s "64:0, 3:1, 4:0, 4:1, 5:0, 3:1, 7:0, 2:1, 4:0, 3:1, 13:0, 3:1, 7:0, 2:1, 4:0, 4:1, 6:0, 3:1, 4:0, 2:1, 7:0, 3:1, 3:0, 4:1, 6:0, 2:1, 4:0, 4:1, 6:0, 3:1, 67:0"
  Data.s "64:0, 3:1, 5:0, 3:1, 5:0, 4:1, 5:0, 4:1, 3:0, 3:1, 13:0, 4:1, 5:0, 4:1, 3:0, 4:1, 6:0, 3:1, 3:0, 4:1, 5:0, 4:1, 3:0, 4:1, 5:0, 4:1, 3:0, 4:1, 5:0, 4:1, 14:0, 2:1, 51:0"
  Data.s "64:0, 3:1, 5:0, 4:1, 5:0, 5:1, 2:0, 5:1, 3:0, 3:1, 14:0, 4:1, 3:0, 5:1, 3:0, 4:1, 6:0, 3:1, 4:0, 4:1, 3:0, 5:1, 4:0, 5:1, 2:0, 5:1, 3:0, 4:1, 4:0, 5:1, 13:0, 4:1, 50:0"
  Data.s "64:0, 3:1, 6:0, 4:1, 5:0, 10:1, 4:0, 13:1, 4:0, 11:1, 4:0, 4:1, 6:0, 3:1, 5:0, 10:1, 6:0, 10:1, 4:0, 12:1, 13:0, 6:1, 49:0"
  Data.s "64:0, 3:1, 7:0, 3:1, 6:0, 8:1, 5:0, 13:1, 6:0, 8:1, 5:0, 4:1, 6:0, 3:1, 6:0, 8:1, 8:0, 8:1, 5:0, 11:1, 15:0, 4:1, 50:0"
  Data.s "64:0, 3:1, 7:0, 3:1, 7:0, 6:1, 6:0, 13:1, 7:0, 6:1, 6:0, 4:1, 6:0, 3:1, 7:0, 6:1, 10:0, 6:1, 6:0, 10:1, 17:0, 3:1, 50:0"
  Data.s "256:0"
  Data.s "256:0"
  Data.s "256:0"
  Data.s "256:0"
  Data.s "256:0"
  Data.s "256:0"
  Data.s "256:0"
  Data.s "256:0"
  Data.s "256:0"
  Data.s "256:0"
  
EndDataSection

; <<<<<<<<<<<<<<<<<<<<<
; <<<<< END OF FILE <<<<<
; <<<<<<<<<<<<<<<<<<<<<
The Stone Age did not end due to a shortage of stones !
User avatar
StarBootics
Addict
Addict
Posts: 984
Joined: Sun Jul 07, 2013 11:35 am
Location: Canada

Re: Question to Fred and/or Freak

Post by StarBootics »

I forget ...
For those you would like to change the message, this is the code to use the generate the datasection

Best regards
Starbootics

Code: Select all

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Project name : LOL PB-5.40 DataSection generation
; File Name : LOL PB-5-40 DataSection.pb
; File version: 1.0.0
; Programming : OK
; Programmed by : StarBootics
; Date : 10-01-2015
; Last Update : 10-01-2015
; PureBasic code : V5.31
; Platform : Windows, Linux, MacOS X
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Procedure.s ReducedSequence(P_Sequence.s)
  
  Count = CountString(P_Sequence, "01")
  StartPos = 1
  StopPos = 1
  
  For Index = 0 To Count
    
    StartPos = FindString(P_Sequence, "01", StartPos)
    StopPos = FindString(P_Sequence, "10", StopPos)
    
    If StartPos = 0
      ZeroCount = CountString(P_Sequence, "0")
    Else
      ZeroCount = CountString(Left(P_Sequence, StartPos), "0")
    EndIf
    
    OneCount = CountString(Mid(P_Sequence, StartPos+1, StopPos - StartPos), "1")
    
    FinaleSequence.s + Str(ZeroCount) + ":0"
    
    If OneCount <> 0
      FinaleSequence + ", " + Str(OneCount) + ":1, "
      OneCount = 0
    EndIf
    
    P_Sequence = Right(P_Sequence, Len(P_Sequence) - StopPos)
    
    StartPos = 1
    StopPos = 1
    
    
  Next
  
  ProcedureReturn FinaleSequence
EndProcedure

UseJPEGImageDecoder()

; Your black background - white message image have to be
; 256 pixels wide by 192 pixel by high.
; Run this code with the debugger active then copy the 
; output into the data section.

LoadImage(0, "lol5-40.jpg")

Width = ImageWidth(0) - 1
Height = ImageHeight(0) -1


If StartDrawing(ImageOutput(0))
  
  For HeightID = 0 To Height ;Step 2
    
    Line.s = ""
    
    For WidthID = 0 To Width ;Step 2
      
      Color = Point(WidthID, HeightID)
      
      If Color > 100000
        Line + "1"
      Else
        Line + "0"
      EndIf
      
    Next
    
    Debug "Data.s " + Chr(34) + ReducedSequence(Line) + Chr(34)

  Next
  
  StopDrawing()
  
EndIf

; <<<<<<<<<<<<<<<<<<<<<<<
; <<<<< END OF FILE <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<
The Stone Age did not end due to a shortage of stones !
IdeasVacuum
Always Here
Always Here
Posts: 6425
Joined: Fri Oct 23, 2009 2:33 am
Location: Wales, UK
Contact:

Re: Question to Fred and/or Freak

Post by IdeasVacuum »

Clever! :mrgreen:
IdeasVacuum
If it sounds simple, you have not grasped the complexity.
User avatar
Vera
Addict
Addict
Posts: 858
Joined: Tue Aug 11, 2009 1:56 pm
Location: Essen (Germany)

Re: Question to Fred and/or Freak

Post by Vera »

Hey that's nice :D

~ thank you ~
User avatar
NicTheQuick
Addict
Addict
Posts: 1224
Joined: Sun Jun 22, 2003 7:43 pm
Location: Germany, Saarbrücken
Contact:

Re: Question to Fred and/or Freak

Post by NicTheQuick »

Here is an alternative UpdateFlare-Procedure:

Code: Select all

Procedure UpdateFlare(List Flares.Flares())
	
	ForEach Flares()
		
		DisplayTransparentSprite(0, GetFlaresX(Flares()), GetFlaresY(Flares()))
		
		If GetFlaresFlag(Flares()) = 1
		
			Protected deltaX.f = GetFlaresTX(Flares()) - GetFlaresX(Flares())
			Protected deltaY.f = GetFlaresTY(Flares()) - GetFlaresY(Flares())
			Protected speed.f = GetFlaresSpeed(Flares()) * 0.5 * (0.01 * Sqr(deltaX * deltaX + deltaY * deltaY) + 1)
			Protected angle.f = ATan2(deltaX, deltaY)
			
			SetFlaresX(Flares(), GetFlaresX(Flares()) + speed * Cos(angle))
			SetFlaresY(Flares(), GetFlaresY(Flares()) + speed * Sin(angle))
			
			If (Abs(deltaX) < 1 And Abs(deltaY) < 1)
				SetFlaresFlag(Flares(), 0)
			EndIf
		EndIf
		
	Next
	
EndProcedure
And why did you not use your 'SetFlaresFlag(Flares(), 0)' Macro?
The english grammar is freeware, you can use it freely - But it's not Open Source, i.e. you can not change it or publish it in altered way.
User avatar
StarBootics
Addict
Addict
Posts: 984
Joined: Sun Jul 07, 2013 11:35 am
Location: Canada

Re: Question to Fred and/or Freak

Post by StarBootics »

NicTheQuick wrote:And why did you not use your 'SetFlaresFlag(Flares(), 0)' Macro?
Because after I make the code to work I didn't go any further. But indeed this "Flag" field is to avoid the position calculation if it's not needed. A simple :

Code: Select all

      If GetFlaresX(Flares()) = GetFlaresTX(Flares()) And GetFlaresY(Flares()) = GetFlaresTY(Flares())
        SetFlaresFlag(Flares(), 0)
      EndIf
in the UpdateFlares() can be added. Anyway I have planed to rewrite the sprite movement using a simple 2D vector addition (Position + Speed) until the target position is reach. Also apply a speed reduction when the sprite arrive at certain distance to the target position.

But thanks for the feedback.

Best regards
StarBootics
Last edited by StarBootics on Sat Jan 17, 2015 4:47 am, edited 1 time in total.
The Stone Age did not end due to a shortage of stones !
davido
Addict
Addict
Posts: 1890
Joined: Fri Nov 09, 2012 11:04 pm
Location: Uttoxeter, UK

Re: Question to Fred and/or Freak

Post by davido »

@StarBootics,

Very nice!
Thank you. :D
DE AA EB
User avatar
StarBootics
Addict
Addict
Posts: 984
Joined: Sun Jul 07, 2013 11:35 am
Location: Canada

Re: Question to Fred and/or Freak

Post by StarBootics »

Hello everyone,

A little update to this animation, it feature the use of Modules, Vector2D to move flares and flares speed reduction.
https://www.dropbox.com/s/jkawltu3msv4q ... 3.zip?dl=0

Best regards
StarBootics
The Stone Age did not end due to a shortage of stones !
IdeasVacuum
Always Here
Always Here
Posts: 6425
Joined: Fri Oct 23, 2009 2:33 am
Location: Wales, UK
Contact:

Re: Question to Fred and/or Freak

Post by IdeasVacuum »

Very nice code 8)
IdeasVacuum
If it sounds simple, you have not grasped the complexity.
User avatar
StarBootics
Addict
Addict
Posts: 984
Joined: Sun Jul 07, 2013 11:35 am
Location: Canada

Re: Question to Fred and/or Freak

Post by StarBootics »

Hello everyone,

Some minor changes to the code handling the flare movement.
https://www.dropbox.com/s/jkawltu3msv4q ... 3.zip?dl=0

Best regards
StarBootics
The Stone Age did not end due to a shortage of stones !
User avatar
Kwai chang caine
Always Here
Always Here
Posts: 5342
Joined: Sun Nov 05, 2006 11:42 pm
Location: Lyon - France

Re: Question to Fred and/or Freak

Post by Kwai chang caine »

Very very nice :D
Thanks for sharing 8)
ImageThe happiness is a road...
Not a destination
Post Reply