It is currently Tue Oct 22, 2019 8:00 pm

All times are UTC + 1 hour




Post new topic Reply to topic  [ 11 posts ] 
Author Message
 Post subject: Question to Fred and/or Freak
PostPosted: Sun Jan 11, 2015 4:26 am 
Offline
Enthusiast
Enthusiast
User avatar

Joined: Sun Jul 07, 2013 11:35 am
Posts: 409
Location: Canada
Simply run the code below, revamped from Cpl.Bator (AKA G-Rom I guess) code released longtime ago.

Regards
StarBootics
Code:
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; 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 !


Top
 Profile  
Reply with quote  
 Post subject: Re: Question to Fred and/or Freak
PostPosted: Sun Jan 11, 2015 4:51 am 
Offline
Enthusiast
Enthusiast
User avatar

Joined: Sun Jul 07, 2013 11:35 am
Posts: 409
Location: Canada
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:
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; 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 !


Top
 Profile  
Reply with quote  
 Post subject: Re: Question to Fred and/or Freak
PostPosted: Sun Jan 11, 2015 4:56 am 
Offline
Always Here
Always Here

Joined: Fri Oct 23, 2009 2:33 am
Posts: 5835
Location: Wales, UK
Clever! :mrgreen:

_________________
IdeasVacuum
If it sounds simple, you have not grasped the complexity.


Top
 Profile  
Reply with quote  
 Post subject: Re: Question to Fred and/or Freak
PostPosted: Sun Jan 11, 2015 2:15 pm 
Offline
Addict
Addict
User avatar

Joined: Tue Aug 11, 2009 1:56 pm
Posts: 860
Location: Essen (Germany)
Hey that's nice :D

~ thank you ~

_________________
Two growing code-collections: WinApi-Lib by RSBasic ~ LinuxAPI-Lib by Omi

Missing a download-file on the forums? ~ check out this backup page.


Top
 Profile  
Reply with quote  
 Post subject: Re: Question to Fred and/or Freak
PostPosted: Sun Jan 11, 2015 3:51 pm 
Offline
Enthusiast
Enthusiast
User avatar

Joined: Sun Jun 22, 2003 7:43 pm
Posts: 446
Location: Germany, Saarbrücken
Here is an alternative UpdateFlare-Procedure:
Code:
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?

_________________
Electronics, Crazy & Interesting Stuff, all that with text, image and sound? Click here!

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.


Top
 Profile  
Reply with quote  
 Post subject: Re: Question to Fred and/or Freak
PostPosted: Sun Jan 11, 2015 4:48 pm 
Offline
Enthusiast
Enthusiast
User avatar

Joined: Sun Jul 07, 2013 11:35 am
Posts: 409
Location: Canada
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:
      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

_________________
The Stone Age did not end due to a shortage of stones !


Last edited by StarBootics on Sat Jan 17, 2015 4:47 am, edited 1 time in total.

Top
 Profile  
Reply with quote  
 Post subject: Re: Question to Fred and/or Freak
PostPosted: Sun Jan 11, 2015 10:12 pm 
Offline
Addict
Addict

Joined: Fri Nov 09, 2012 11:04 pm
Posts: 1681
Location: Uttoxeter, UK
@StarBootics,

Very nice!
Thank you. :D

_________________
DE AA EB


Top
 Profile  
Reply with quote  
 Post subject: Re: Question to Fred and/or Freak
PostPosted: Sat May 14, 2016 12:01 am 
Offline
Enthusiast
Enthusiast
User avatar

Joined: Sun Jul 07, 2013 11:35 am
Posts: 409
Location: Canada
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/jkawltu3msv4qj8/LOL_Version_3.zip?dl=0

Best regards
StarBootics

_________________
The Stone Age did not end due to a shortage of stones !


Top
 Profile  
Reply with quote  
 Post subject: Re: Question to Fred and/or Freak
PostPosted: Sat May 14, 2016 1:06 am 
Offline
Always Here
Always Here

Joined: Fri Oct 23, 2009 2:33 am
Posts: 5835
Location: Wales, UK
Very nice code 8)

_________________
IdeasVacuum
If it sounds simple, you have not grasped the complexity.


Top
 Profile  
Reply with quote  
 Post subject: Re: Question to Fred and/or Freak
PostPosted: Sun May 15, 2016 4:28 pm 
Offline
Enthusiast
Enthusiast
User avatar

Joined: Sun Jul 07, 2013 11:35 am
Posts: 409
Location: Canada
Hello everyone,

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

Best regards
StarBootics

_________________
The Stone Age did not end due to a shortage of stones !


Top
 Profile  
Reply with quote  
 Post subject: Re: Question to Fred and/or Freak
PostPosted: Tue May 17, 2016 1:49 pm 
Offline
Addict
Addict
User avatar

Joined: Sun Nov 05, 2006 11:42 pm
Posts: 4511
Location: Lyon - France
Very very nice :D
Thanks for sharing 8)

_________________
ImageThe happiness is a road...
Not a destination


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 11 posts ] 

All times are UTC + 1 hour


Who is online

Users browsing this forum: andrewroom and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
Jump to:  

 


Powered by phpBB © 2008 phpBB Group
subSilver+ theme by Canver Software, sponsor Sanal Modifiye