Code: Select all
EnableExplicit
UsePNGImageDecoder()
; =========================================================
; CONSTANTES
; =========================================================
#WIN_W = 800
#WIN_H = 600
#GROUND_Y = 520
#GRAVITY = 0.6
#JUMP_FORCE = -13
#SPEED = 4
#FRAME_W = 46
#FRAME_H = 50
#ANIM_IDLE = 0
#ANIM_WALK = 1
#ANIM_JUMP = 3
Define *pixels, event
; =========================================================
; STRUCTURE JOUEUR
; =========================================================
Structure Player
x.f
y.f
vx.f
vy.f
w.f
h.f
onGround.b
frame.i
frameTimer.i
anim.i
facing.i ; 1 = droite, -1 = gauche
EndStructure
Global player.Player
Global texID, imgW, imgH
; =========================================================
; FENETRE OPENGL
; =========================================================
OpenWindow(0, 0, 0, #WIN_W, #WIN_H, "Platformer 2D OpenGL - PureBasic",
#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
OpenGLGadget(0, 0, 0, #WIN_W, #WIN_H)
glMatrixMode_(#GL_PROJECTION)
glLoadIdentity_()
glOrtho_(0, #WIN_W, #WIN_H, 0, -1, 1)
glMatrixMode_(#GL_MODELVIEW)
glLoadIdentity_()
glEnable_(#GL_TEXTURE_2D)
glDisable_(#GL_DEPTH_TEST)
; =========================================================
; TRANSPARENCE
; =========================================================
glEnable_(#GL_BLEND)
glBlendFunc_(#GL_SRC_ALPHA, #GL_ONE_MINUS_SRC_ALPHA)
; =========================================================
; CHARGEMENT SPRITE
; =========================================================
;If LoadImage(0, "player-spritemap-v9.png") = 0
If CatchImage(0,?playerpng) = 0
MessageRequester("Erreur", "Image player.png introuvable")
End
EndIf
imgW = ImageWidth(0)
imgH = ImageHeight(0)
StartDrawing(ImageOutput(0))
*pixels = DrawingBuffer()
StopDrawing()
glGenTextures_(1, @texID)
glBindTexture_(#GL_TEXTURE_2D, texID)
glTexParameteri_(#GL_TEXTURE_2D, #GL_TEXTURE_MIN_FILTER, #GL_NEAREST)
glTexParameteri_(#GL_TEXTURE_2D, #GL_TEXTURE_MAG_FILTER, #GL_NEAREST)
glTexImage2D_(#GL_TEXTURE_2D, 0, #GL_RGBA,
imgW, imgH, 0,
#GL_BGRA_EXT, #GL_UNSIGNED_BYTE, *pixels)
; =========================================================
; INIT JOUEUR
; =========================================================
player\x = 100
player\y = #GROUND_Y - #FRAME_H
player\w = #FRAME_W
player\h = #FRAME_H
player\facing = 1
; =========================================================
; DESSIN JOUEUR
; =========================================================
Procedure DrawPlayer(*p.Player)
Protected u0.f, u1.f, v0.f, v1.f
; UV horizontales pour la frame
u0 = (*p\frame * #FRAME_W) / imgW
u1 = u0 + #FRAME_W / imgW
; UV verticales pour la ligne d'animation
v0 = ((*p\anim - 1) * #FRAME_H) / imgH
v1 = v0 + #FRAME_H / imgH
; flip horizontal : gauche = inversé, droite = normal
; If *p\facing = 1
; Swap u0, u1 ; regarder à gauche
; EndIf
glBindTexture_(#GL_TEXTURE_2D, texID)
glBegin_(#GL_QUADS)
If *p\facing = 1
; regarde à droite → UV normales
glTexCoord2f_(u0, v1) : glVertex2f_(*p\x, *p\y)
glTexCoord2f_(u1, v1) : glVertex2f_(*p\x + *p\w*1.5, *p\y)
glTexCoord2f_(u1, v0) : glVertex2f_(*p\x + *p\w*1.5, *p\y + *p\h *1.5)
glTexCoord2f_(u0, v0) : glVertex2f_(*p\x, *p\y + *p\h *1.5)
Else
; regarde à gauche → inverser UV X
glTexCoord2f_(u1, v1) : glVertex2f_(*p\x, *p\y)
glTexCoord2f_(u0, v1) : glVertex2f_(*p\x + *p\w*1.5, *p\y)
glTexCoord2f_(u0, v0) : glVertex2f_(*p\x + *p\w*1.5, *p\y + *p\h *1.5)
glTexCoord2f_(u1, v0) : glVertex2f_(*p\x, *p\y + *p\h *1.5)
EndIf
glEnd_()
EndProcedure
InitKeyboard()
;SetFrameRate(30)
; =========================================================
; BOUCLE PRINCIPALE
; =========================================================
Repeat
; -------------------
; EVENTS
; -------------------
Repeat
If WindowEvent() = #PB_Event_CloseWindow
End
EndIf
Until Event = 0
ExamineKeyboard()
; -------------------
; INPUT
; -------------------
player\vx = 0
If KeyboardPushed(#PB_Key_Left)
player\vx = -#SPEED * 0.63
player\facing = -1
EndIf
If KeyboardPushed(#PB_Key_Right)
player\vx = #SPEED * 0.63
player\facing = 1
EndIf
If KeyboardPushed(#PB_Key_Space) And player\onGround
player\vy = #JUMP_FORCE * 0.3
player\onGround = #False
EndIf
; -------------------
; PHYSIQUE
; -------------------
player\vy + #GRAVITY * 0.1
player\x + player\vx
player\y + player\vy
; collision sol
If player\y + player\h >= #GROUND_Y - 25
player\y = #GROUND_Y - player\h - 25
player\vy = 0
player\onGround = #True
EndIf
; -------------------
; ANIMATION
; -------------------
If player\onGround = 0
player\anim = #ANIM_JUMP
ElseIf player\vx <> 0
player\anim = #ANIM_WALK
Else
player\anim = #ANIM_IDLE
EndIf
; Avancer frames seulement pour walk et jump
If player\anim = #ANIM_WALK Or player\anim = #ANIM_JUMP
player\frameTimer + 1
If player\frameTimer > 6
player\frame + 1
player\frameTimer = 0
EndIf
EndIf
; Boucle frames selon animation
Select player\anim
Case #ANIM_IDLE : player\frame = 0 ; idle statique
Case #ANIM_WALK : player\frame = player\frame % 8
Case #ANIM_JUMP : player\frame = 4
EndSelect
; -------------------
; RENDER
; -------------------
glClearColor_(0.2, 0.2, 0.25, 1)
glClear_(#GL_COLOR_BUFFER_BIT)
glLoadIdentity_()
; sol
glDisable_(#GL_TEXTURE_2D) ; sol unie, pas de texture
glColor3f_(0.0, 0.8, 0.0)
glBegin_(#GL_QUADS)
glVertex2f_(0, #GROUND_Y)
glVertex2f_(#WIN_W, #GROUND_Y)
glVertex2f_(#WIN_W, #WIN_H)
glVertex2f_(0, #WIN_H)
glEnd_()
; joueur
glEnable_(#GL_TEXTURE_2D)
glColor3f_(1, 1, 1)
DrawPlayer(@player)
SetGadgetAttribute(0, #PB_OpenGL_FlipBuffers, #True)
;Delay(16)
ForEver
DataSection
playerpng:
Data.q $0A1A0A0D474E5089,$524448490D000000,$C800000070010000,$A7D9030000000304,$47527301000000A0,$0000E91CCEAE0042,$000045544C502100,$663C284534202200,$877E843B568F3139
Data.q $3F3FE16E5B2671DF,$DE9AC3EEFCDBCB74,$7401000000F2977A,$66D8E64000534E52,$44474B6201000000,$000000481D058800,$0B00007359487009,$9A0001130B000013,$497407000000189C
Data.q $36170F02DE07454D,$13000065D138B802,$EDDA785441444951,$FE368EB8E393315D,$E7B6CA3595A7D081,$5E99782E0E80FCD5,$52AAA5D9367414F9,$A48A767248E66031,$062EDAEC3AF2370B
Data.q $8045B4F6C80795FA,$266577D7B3D8D2DD,$49041047D0D30D33,$2CBDCBDD5AB133F1,$D5E23E0A147FF82E,$D142171D545A219A,$246CAE8A7CFF67D5,$55341EA82D1EFC3C,$F5F5FEBE1EAE8A00
Data.q $EBFAFF9A43C0B9F7,$D1410AA643D505F7,$21E05CE3E3D3C3D5,$936F9A7A7CFF0FCD,$68F0F5745042A9A0,$C7B7FE6909575CCC,$42A9A0F57668C7C7,$81B30ECDF0F57450,$EAFCE5337C3F3407
Data.q $1921EAE8A0855341,$FCCBC336690F03E6,$F5012801882D21EA,$17C8D49B1DCE50C9,$0240EB81D5A0202D,$ED2912F0F1AF3462,$570D1D9BB3C3D5D1,$B4EF59E1B56990F1,$E60C33062E8F6D58
Data.q $501E7F2187059A55,$126E38FCF931BE69,$23351CAA49462A5B,$EF1D6A5709F552BA,$A0CC1D9F02E5C186,$38ABAE7C84FAA421,$0CC6C493BA235B17,$8F29534CDFA9F525,$CD9397402506F124
Data.q $8393AC2983267F45,$664B3AE66CAA0619,$5386CE8EFD615E09,$2774A72C64EC1331,$95C9CBA0023713F0,$9714829EDC44EF9D,$7934CC3B4CD4E0D2,$067B50B42837AA42,$816320D85CFFC2D6
Data.q $532745891CCF3613,$CE58379CEB31A088,$BAC7B51CCDA611ED,$050A6D50DD9FC0B9,$A1860F6F2E5C68F8,$D7E28FCD9EC647E4,$B6AFB59D8DA6122A,$B756529ED4B1ED94,$C0C6496B345589E4
Data.q $15E020ACC30C515F,$03C83331BCDF8972,$E28FA3D2FC98DE2E,$179CBE4C733A42D7,$3EB2B670700C2853,$26651799C284A1F0,$24652085096496D3,$599498C378626F67,$51B3A3C4CDC47249
Data.q $5575A59D18B9255C,$883C50F6F4507B14,$649633E452FB23E8,$22C036F0AC664588,$51C728345037C651,$2AE28E278BA3C845,$D7B157A1C93C3946,$1F9EDFA15B1EDC15,$9B1AF064978FCBC0
Data.q $3DA507C9B9261B44,$488B0251C74210CE,$B022694DA3236388,$ABC49EDCAF26D7BE,$C92E46A97023999E,$0542ABC06A15E5C0,$9E3B97E047625ECE,$6045594DC09138B3,$0A3F8F6A7201845E
Data.q $1702412D9C6392B3,$335106E08870324B,$9F1E90A02A562463,$BF8A505310622B80,$7B50BEC1EFA20461,$1423BF11C0C7B8FC,$57B24AF2324BC7D1,$363542EAC59C7D25,$6FBEEBAF175772EA
Data.q $547E8B7BE018A857,$5F5C8317D630E021,$98BA9C8B523501F1,$37574315CE1BF99E,$2C3C4FA6EBCAA35D,$7E9A3B5D35DF0109,$BE842B9633FA9F5A,$72EA9578BAE035EF,$45CB5D60B23B0C55
Data.q $5FA7F5BEBA6FB74C,$8098C56DDD43FBF2,$775A687444AAD1CC,$A269BC93174486B5,$3C2E4653EDD86299,$3E3315A6BB6C3BB1,$DD7826315BD66F01,$AD1A91B7448D8C60,$DD7EF6A576DDBB37
Data.q $E85C8C8F61C314CE,$B032ADF75CFEEF59,$1B7240BC1318B818,$243FBB6DE4081D7F,$F756F2F63E2A9D92,$4A880467FE04ADE6,$BF7ADC39AB7DEA8B,$F8141698EACAB7ED,$A17B774DBF03FA5C
Data.q $0D5657BD69B7DD24,$5EDBAEA087C548F4,$20521F200FE1C4BA,$7B50BFC4368D0FAE,$9FC1C2D0956D2B64,$DB648877620DD625,$916A09EB488752C9,$BB4DB0E189AD4AB4,$5F401D4EE22057A6
Data.q $7F5A0B287C58A8F6,$A408CE4531D5D395,$064E4E2B123E1393,$A93B4FD529E0148C,$D5BD6D0DC35EC5A5,$0DC069D0B65FD8D6,$77079C0A6487E12D,$167A3C556A19BC2A,$57C2C4883A24743B
Data.q $9DB6912E6B809AD2,$AF16691742DD7C0A,$CDE1070056C5ADD6,$54BD0735CFECB127,$56F0256BB8A3B70C,$A0E5D5BF6DF6E7DB,$49ADD7BF05F606CC,$03F0314563D6AA27,$88668A72788363E2
Data.q $31954DF67D4D6681,$708D3DE074882A38,$027AF822B1D3FBCF,$F262AB81F524B3E2,$CACEAA6349DFD037,$B2C7E97920FB5A84,$9EE7C5D48F144F95,$793AB4F15488A720,$C7D2E03DFEFAFE8A
Data.q $F02A2BE9A842ED69,$5BC0CF49ABEE075A,$6A1D09B4A1ED3C55,$94AAC8702AA78004,$A2F4233A2753CE16,$D5B8467CBE4C4050,$023D866A0380F3C5,$7440EED011AAFD6F,$6FC433375E2F0FE7
Data.q $EAB375880C229A0D,$1E381F2B928A795D,$51E3F2BE287334DA,$D6B01F4F13795F53,$01EEBF9C036FAE11,$0643DC64FB766C07,$2501FE20229D4F80,$9B1C0C26862A7080,$95796F574DD7C099
Data.q $0BDAF13846791E22,$BD7890CC62650EB1,$6D345D375622BF0D,$F3BF3155E441DF78,$E261E72F3EB84CF2,$2FAC6158FC31012B,$4E042EDA71211AD7,$3796F91900FBC3B1,$97CBAFE2E4F9309C
Data.q $26A9781FC5F101B2,$E19FAB129F0C0620,$239BEF5206BD1C08,$2F890D82489229F0,$F8177E2026A97BBE,$FCD09D15DE70266A,$67F98701EF57C07D,$7FEE0CCFC17F7F3D,$FDFFAA0449642CB1
Data.q $D21EA8112590BF5D,$AA0449632F812BF2,$11258CB2C2FCB487,$258CB2CAFF101EAA,$2F8B52FF101EAA11,$14BFC407AA844962,$FC407AA8449622F8,$443A7CE03B09674B,$CB130B2F10115488
Data.q $012239517E782C26,$2C5AE21154804496,$71A52413028B6D1B,$80D6B68D9A01A1CA,$702D77321DF169CC,$596CC930D16DFAF8,$AFE8758C6C528338,$55268951B251999B,$3C692EC9ECF2257E
Data.q $4CE0D80E2C61C1B8,$31BE793B04E5709E,$EB5F9081D89E4095,$A186A87260587629,$3D461ED4ADBF13CA,$B08161ED1794FF8C,$FC99D755C35F3039,$9B75B808B80EC9E1,$C5CB971B1DC0918D
Data.q $F0A5F6E4C8E64619,$669C99D717147E6C,$10C3173C085F328E,$DBC4F647CF412D5E,$21BE0258E3901259,$2BF03312401B97E4,$9B6CE39547FC20A7,$E62F0C9D95264943,$A3A0C816C5EDB9C7
Data.q $49F47A5C5C6259D1,$D632B8AB2BE95F9C,$4674B8C3706AE848,$A8F725635B12098E,$E697C41532632E32,$0DFC8EBF3CE28ECD,$949AAC50B03C3589,$0CC1CB3E5179A0F7,$10CC9ED9399549AF
Data.q $E2A72E211C0F81C2,$A671F0AFA578B064,$16527878894F8575,$6DDC0299E495594D,$9F0232497909E054,$459D6EBC624E78EC,$40F4ED89AA828B11,$C4ACC944A6FAFE13,$324E2427024EB328
Data.q $1348D83169D5F909,$9A06CE39B75D1B5B,$125E4C1B271268F1,$94B59194B4937D3E,$45D4EB108226CC28,$1D3F9F3170527428,$308C23AD14933830,$832B923404AD3931,$03154DFC20C6AEFC
Data.q $57879178B668F7E2,$A68A204CE6C19898,$41EAF69D5558FD4B,$53C0B16B90BC4052,$24C09C7966FD4E5C,$AE355F51B143C19E,$1854CC4778C0411B,$78E47671625E2D9C,$A18539A9C0A63C9C
Data.q $DB628DF77E1CA741,$BC57347D30A99880,$83B07FCD6518F804,$943A47986842294E,$C2E346EAEFB1F682,$15D96BAEFB3E6268,$966666C9C1A2F101,$1D7ECC04BB7D3448,$C93AEFB761B4112A
Data.q $B71040F6998809E2,$878EBF9322F13CD1,$CE0E4C28B43F8DD3,$4FEEC163DBC1A6D0,$1277893F9D38A56A,$6F1743FEB0E34B61,$B5D75C1470A959AF,$4F08A192F3475677,$25310843698F02DB
Data.q $62DC2258AA576EDB,$0AFAE24E837ED75F,$848F2C8D02FB0393,$3D127324A3926141,$BBC49CF1654EC7DE,$233FEB6B96969A56,$DBC08CDC035CDC55,$62690979E0C24274,$356E114F9360E57A
Data.q $10FAF3825628CF16,$6FBABB8B3C432F61,$BFA001A3478F5AAF,$E47C59E2A184173C,$F163508469F74FF7,$E230FAF36257B8B0,$A2BF57B7DD71148E,$C360C7AD8F4C0320,$4F1655AF005C8A0B
Data.q $10180154A794CC40,$8491E5C9C9F014FF,$A9D9362F79DF5498,$52505331013C5804,$07B5E009FE203009,$87C8A4343E6668FC,$34C404F1655DA9D3,$5F2F2F15CD1A63B5,$ED3243CC287F91F6
Data.q $123A891EF5BE463B,$7880C68B6AD3617D,$5141780F69A3E179,$8D3698F430D3DD70,$B7A351998809E2CA,$360A91DB11C9BA27,$178DD8255CCC4E0D,$81880C20AAAA52CB,$1B7C405531CA5256
Data.q $6538B75C388989E0,$76EA18808CE604C3,$BC9C1BC53CE7F881,$D08A3C8DB4F9A34B,$0BB4D0C4068C5F5A,$3DBBE287CE0137C4,$5324E8FC0BCFD3CB,$7CAEDCCD699414E0,$A4FA0C404F1601E0
Data.q $4036C84F812DFD0E,$864A771D187D7AD3,$BAA4CED8108AB7D1,$AB7CBFFC599BD369,$25178A7A3FB512D1,$BAFA83DC884F1675,$D3253E2E76E8EB15,$FF3A748F23A1148D,$8EF507B9109E2CE8
Data.q $A70CB14FC036FEC0,$228213171BBE940C,$5A31C0E89EDFD2B4,$AC973D2729EC5E20,$985CA61FA9DFFA17,$9DAF34E0151C054F,$603088287929F0A7,$DB2F8027F8816893,$CBDF112E0317CC76
Data.q $DCBDCBDCBDCBDCBD,$9AF4FCBDCBDCBDCB,$55B0F033E3C6F976,$EC3C14F95F07C772,$E0A7C94DECC77237,$4D9A09B41DC99F61,$03B923EC3C14FB85,$F053FC0B9A286F90,$5095F2C48EE48FB0
Data.q $E4CD87839F70A973,$FDB73455B97C340E,$25E48EE4CD87839F,$E31B0F093F13125E,$C1B0F0F3F5451162,$0B3EAA5996329E8C,$04664B74330C1B0F,$62761E167C3323CC,$9BBD90FE39647A07
Data.q $312399B0F0D3EAA1,$FDBCE647F33DEFB8,$8EB5F0CCEC3C34FD,$FC059DB966FCA629,$91BCCAF1B3B0F073,$6FC0A7B4CFDEF4DA,$1E33B0F2D7B6C3C0,$EDF46FD78DDA7150,$8ABEC3C96F522F87
Data.q $3F6EE90AA05E39EC,$C36FCFAC1F76691E,$4DA91EC3C16E4EC3,$F6CBB57CF61F582B,$D878CDF3E5743C0C,$953323B06C3CB5D9,$D0E6EA7B40B39390,$8792BBB61E47D565,$8A7D879ABB38931D
Data.q $EF3F06CEA432306C,$2DCDB0F23F977C0A,$74E4EC3CB5C3D878,$B8E5D93B8348DDAB,$F6C3C6FD9B9F002B,$C0D5656C3C4E5F8F,$E65E2026B0E528FC,$BB8F0E9E5D43472B,$26402AE5071F9A02
Data.q $A5E437C93192A75C,$80ED4AD70992050A,$288BEBF44FC99978,$5237E11C3402BBCE,$CCE5878D5A1BC2B5,$C2F121DAF450116D,$CDF8717EE191D665,$925E34679C6482BB,$6D6A309BC6AD0DE4
Data.q $572E97890ED7A3B9,$0482BB17479793CA,$D72FE21BC69BE5F5,$101DAF5291050DA3,$18FF5921A7E50E2F,$F1A7BB7E8650F15B,$00199EFAE95BC686,$41CD4FF121DA9CD1,$BAE2F042976F2BEC
Data.q $FB78E86F1A173754,$21DA8138CDC4AE1E,$1BD0A5F9DBFDE2F1,$6FDC69209A3AC2F0,$6855443795041CA7,$F910ED40AEBC12FE,$DCEE9569126F26E8,$AA01B7DB76E8BDB8,$2DC853B16D2086F3
Data.q $9293747C88519601,$E8D3DF67FEA55E18,$86F00F768FEBB3DF,$C0795DBEDDBBAFB0,$C1C025FC624FB503,$38ED876957368614,$21BCA8AD774F6CD9,$9675658A0EE9BEC0,$CC79E023747C8851
Data.q $7B76BF23CC8E0BDB,$B6D8C10DE34624BA,$28CB00A106E4F211,$AD0354A78DBA3E44,$BCDB0DFE7694AA9A,$E021BC28DBB7CF6F,$BFAFF1483F8ECF1B,$806DD1F2214658D1,$938118283F8DC697
Data.q $EB5E21BC6B819C2F,$196548E3BBDD3A9D,$CA939571B747C885,$10DE019FD3A26BF3,$076A061B13A808FE,$2F72F72F72F747C9,$2FFF2F72F72F72F7,$5ABD60886635B2CB,$6F6E0615EE89BE20
Data.q $18F0F0DAD5D7700A,$A482DF3744DF17CD,$28436BD1ED0219D2,$57BA16EFEF9EA0F1,$5E8B4041FAABF5F0,$5BE2E878E749E1FB,$04B5D419250C06E8,$643740DC78E32F6A,$65F2011C51F1E1EE
Data.q $1E55A3DAC8F681D8,$81BF293134C2DBD5,$E441B7D3D50DCCEE,$36FE242D55101B02,$7311461596ADCAA8,$23745701375D2BD2,$5FEEB2AE0DD14BFE,$5CB0C2703E9FEEFF,$F1ED47B5107602D3
Data.q $960C42E432794557,$8DD483E3D6F4EECF,$3AD624C4EE8A56C6,$55968A35B954DCA1,$ECC8D19699A70666,$FC478E67442D245E,$A60A6561BC4E6E9A,$241926E1084A906A,$02D2061F30A9267D
Data.q $38254B489D9BF8E2,$AA28E4E78C01BA48,$484E7AD28D985896,$0E9231994F0CCB98,$9D30D75F1C4CA604,$5195C1BB1572929B,$108548FA83354A52,$8D810BD790B2BB11,$BA90E989195955F8
Data.q $92C2A78D615250AD,$C6727EFB8E255184,$EA4508CB32A4A9C6,$10C50BC4F92B2AA3,$CA8542F86F71958F,$2F9F0E6A58328DFB,$0200AF20C961148A,$F31DCF20E5D2BB93,$04FCBE28BB3DC1E7
Data.q $3673245D6AFE062A,$6BF4FD9E07B5250D,$5132A6B135E4F01A,$F91650A5A1FBE2F6,$9C56F93244EC91E7,$83B1B06562667A1B,$9AC339C0262C062B,$3ADC0C387D2D8975,$BC85A1D44D94BD8C
Data.q $3D0A9B35B13127BA,$6318B8CCBB3C078E,$FF091571739967EB,$59BE25431CC94CC9,$738198C4E4C50F13,$64C1F21319994F3E,$67EB4CB1E0156143,$B07373C6E525534A,$3985FE37C9349F9C
Data.q $11AE023B7AF2848E,$0ECA3D6835BB488D,$4903C9244F2DF18E,$A26215FA0B9FDE4C,$716A94CB1E63E79C,$9F02D87F2A2C185E,$A362A989754CCB4F,$D6F9BB901F4007DD,$A26313B6263588A2
Data.q $CC6E6057BE54F6A0,$724B1860A472F4AB,$AA41EDFA6878C913,$8A01B430B1FEE45E,$83A4644AF9C6D75D,$B957102C4883663E,$0E3E13AC393D638C,$36D2E11040F1467D,$1622956DF1B07426
Data.q $E2834AA3DA70AD32,$AF8DDA5BC3284EFC,$48BCAED53D4525C5,$428D9D9B97A706EB,$4EE513F3D95B293D,$5FA7691E0CA22082,$D25A5BB5EC3EB607,$DE9CA37B31F81D5D,$2B5AD4F6B408C930
Data.q $6AA47A77CBF03E9B,$FDD7DEFFB6BEF514,$7742E69FC71075E5,$9FF6ED3B47C4F468,$E4C3A96CC6F74B54,$16AEDBD6DB63AC3E,$8BA3A4A05D8C55D7,$D5B239FEF55B28C8,$5453E7F6C8818284
Data.q $946870B1F1CE7D2F,$EEDA6D3C0ABD70EC,$AEC6E2715D9C9FB0,$732B7FE5956E87A1,$97F81507D637D1AC,$DDAA8BDB6707C343,$03313E835DEB5716,$D10B856C3EF73E53,$5DD8F75D7C06A907
Data.q $8D011B4D742381E4,$ED044D28DF09EA07,$6BDEB375C358E44E,$37AAD2F9E7A85E59,$BF7ACCF23FF3E0AF,$AAC7909F42808F05,$4E03A9E4AB75D7C0,$AF23D6417D178839,$BE531C9BE863DCE4
Data.q $BBB667A3872447CE,$DE6CFBC7AEBE0346,$A773541DDE3003F8,$015AEA6FBC079DA5,$71BD824A74D29ECE,$CA66AB1006DFAF78,$6D5CD8E1D912B447,$9C8130CB809C942B,$A3C998E2CF7272E2
Data.q $A27C4AC94C2B871F,$8B96700AA7DE0F49,$E3752FAC060E3571,$F175374A4E2FC2F9,$A8DF4732DE47FA94,$E3462657CBF792B7,$98FFB63C618BA213,$891BA3C02B42680E,$EA0F49185A63838E
Data.q $4D374FBA7B5DC569,$B81255208F01E741,$1EB8B0728D350DF1,$CB718FC7196B2679,$62090A41B0707223,$9D4334CA1CCF2218,$EEEF34A69E825327,$A0455E3218791C0C,$8F308271A630274D
Data.q $846A4E525524F941,$B4BC9BE140191802,$7AD33535101A7DF4,$69A4D146D193BE14,$26F8748A473EC8D7,$CA3351868522D02F,$51150B16E7792A71,$36C2E1BBC77DAB3B,$C025F85E9DFC0B99
Data.q $DA0A4CB80F7A864F,$70197199C78E04CD,$F0CACEE9D1359FC5,$578A7682925071BB,$BC5E77C072729E68,$FCEF76A5D3F03CFF,$AED13503CEA65370,$35FEB8BA03F6C392,$C3F9C7B9521995A8
Data.q $49CFBD53A0910E13,$7844AD43958FF175,$4922E039FC7596E5,$BF97EB3DD0CD1B63,$E566347B30A93492,$128D54422851BAC7,$13E3EABD1AE032FD,$9677F2F7E079F82B,$6C102C30A9B001FF
Data.q $454900000000DA4F
Data.a $4E,$44,$AE,$42,$60,$82
EndDataSection