Publié : mer. 07/nov./2007 20:57
Bon, benpour le bruitage , j ai mis une explication dans truc et astuce....
CHAMPAGNE !
Bon, benpour le bruitage , j ai mis une explication dans truc et astuce....
J'ai rejoué au jeu( une valeur sûre, indémodable quoi), et voilà mes pensées( je n'ai pas dépassé le 3ème niveau):tonton a écrit :ravis que ca vous plaisent.
Code : Tout sélectionner
; tonton - purebasic - France - 2009
If InitMouse ()=0 Or InitKeyboard ()=0 Or InitSprite ()=0 Or InitSprite3D ()=0
MessageRequester ( "Error" , "Can't open DirectX 7 or later" , 0)
End
EndIf
If InitSound() = 0
MessageRequester("Error", "Can't open DirectX 7 Or Sound Card is not present", 0)
End
EndIf
Global manette.b
If InitJoystick()
manette=1
joyInfoEx.JOYINFOEX:joyInfoEx\dwSize = SizeOf(JOYINFOEX) ; croix directionnelle joypad
EndIf
Dim depastx.f(300): Dim depasty.f(300):Dim dirastx.f(300) :Dim dirasty.f(300):Dim tailast.f(300):Dim vitast.f(300):Dim typast(300)
Dim postirxx.f(200):Dim postiryy.f(200):Dim tirxx.f(200):Dim tiryy.f(200):Dim angtx.f(200):Dim angty.f(200):Dim typtir(200):Dim tramtir(200)
Dim cielx(200):Dim ciely(200):Dim tail_ciel(200)
Dim rciel(200):Dim gciel(200):Dim bciel(200) ; couleurs etoiles
For ciel_l= 0 To 199
rciel(ciel_l)=50+Random(205)
gciel(ciel_l)=50+Random(205)
bciel(ciel_l)=50+Random(205)
Next
Dim posproxx.f(2000):Dim posproyy.f(2000):Dim proxx.f(2000):Dim proyy.f(2000):Dim trampro(2000):Dim typpro(2000)
Dim alienx.f(1):Dim alieny.f(1):Dim depalienx.f(1):Dim depalieny.f(1)
Declare cdirection(joyCaps,joyInfoEx) ; croix directionnelle joypad
ExamineDesktops():larg=DesktopWidth(0):long = DesktopHeight(0):Depth=DesktopDepth(0);:OpenScreen(larg,long,Depth,"")
larg-256:long-256
If OpenWindow ( 0, 0,0, larg,long, "nostalgie-window-tonton-no sprite" , #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar| #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_ScreenCentered | #PB_Window_ScreenCentered )
OpenWindowedScreen ( WindowID ( 0 ), 0, 0, larg,long, 0, 1, 1) ; un ecran graphique dans la fenêtre toute simple.
SetWindowColor(0, RGB (0, 0, 0))
EndIf
KeyboardMode(#PB_Keyboard_International)
Global nbreis.b, directionX.b, directionY.b, bouton1.b
etapcouleur.w:bcouleur.w ; couleur tir amis ou pas
etapccouleur.w:ccouleur.w
zutA.w
level2.l:ori_rotx.l:ori_roty.l
larg1.f=larg:long1.f=long:posx.f:posy.f:rotm.f:rotm1.f:angle_l.f
pi.f=3.14159:pi2.f=3.14159/2:level=1
friction.f=0.99
vitesse.f=0.10
test_vais.l
test_enne.l
tail.f:
tail_ast.f
vit_ast.f
posalienx.f
posalieny.f
angtxx.f:angtyy.f
depastx2.f
depasty2.f
depastx1.f
depasty1.f
zone.f=10
ori_prox.f:ori_proy.f
angle_tir.f:ori_tirx.f:ori_tiry.f:nb_trame.l:vit_tir.f
tram.l:tram1.l:vaisseau.l:vaisseau1.l:ver_sound_vai.l:ver_sound_exp.l:ver_sound_exp1.l:ver_sound_tir.l
depmx.f:depmy.f:cosrot.f:sinrot.f:tirx.f:tiry.f:postirx.f:postiry.f:initirx.f:initiry.f
tirx1.f:tiry1.f:postirx1.f:postiry1.f:initirx1.f:initiry1.f:long_tir.f:init_angle_ast.f
angle_asterox.f:angle_asteroy.f: cos_magnet.f:sin_magnet.f
angle_tirx.f:angle_tiry.f
vie1=3
Gosub init_jeu
Gosub gene_son
init:
StopSound(1)
StopSound(2)
StopSound(3)
StopSound(8)
StopSound(0)
Gosub moins_vie
test_vais=1
test_enne=0
nb_astero=0
For nb_tir=0 To 200:typtir(nb_tir)=0 :Next
For nb_ast=0 To 300:typast(nb_ast)=0 :Next
For nb_pro=0 To 2000:typpro(nb_pro)=0 :Next
trame22=0
trame2=0
trame222=0
ene_oui=0
posx=larg/2
posy=long/2
rotm=0
tram=0:tram1=0:vaisseau=10:vaisseau1=1:ver_sound_vai=0:ver_sound_exp=0:ver_sound_exp1=0:ver_sound_tir=0
depmx=0:depmy=0:postirx=1000:postiry=1000
postirx1=1000:postiry1=1000: tail_l.f=1
Gosub num_level
; ******************************************************************************************************
Repeat ;- Boucle principale
; ******************************************************************************************************
Event= WindowEvent ()
; main:
If vie1=0:Delay(20):Goto saut1:EndIf
If test_vais=0 And nb_trame=1900:vie1-1:Gosub moins_vie: Goto init:EndIf
If nb_astero=256 :level+1 :Goto init: EndIf
saut1:
; Delay(10)
ClearScreen(0)
ExamineKeyboard()
;- Commandes: °°°°°°°°°°°°
If manette=1:ExamineJoystick(0):EndIf
; °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
directionX=0:directionY=0:bouton1=0
If manette=0
If KeyboardPushed ( #PB_Key_Up ):directionY=-1:EndIf; haut.
If KeyboardPushed ( #PB_Key_Down ):directionY=1:EndIf; bas.
If KeyboardPushed ( #PB_Key_Right ):directionX=1:EndIf ; droite.
If KeyboardPushed ( #PB_Key_Left ):directionX=-1:EndIf ; gauche.
If KeyboardPushed ( #PB_Key_X ):bouton1=1:EndIf ; bouton action
EndIf
If manette=1
If joyGetPosEx_(#JOYSTICKID1,joyInfoEx) = #JOYERR_NOERROR
cdirection(joyCaps,joyInfoEx)
EndIf
If JoystickAxisY(0)=-1:directionY=-1:EndIf; haut.
If JoystickAxisY(0)=1:directionY=1:EndIf; bas.
If JoystickAxisX(0)=1:directionX=1:EndIf ; droite.
If JoystickAxisX(0)=-1:directionX=-1:EndIf ; gauche.
If JoystickButton(0,1):bouton1=1:EndIf ; bouton action
EndIf
; °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
trame1+trame
trame2+trame22
If etapcouleur=0 ; couleur tir laser( légé sintillement mais pas trop. heu, oui, c'est dispensable)
bcouleur+10
If bcouleur>100:bcouleur=105:etapcouleur=1:EndIf
EndIf
If etapcouleur=1
bcouleur-10
If bcouleur<0:bcouleur=0:etapcouleur=0:EndIf
EndIf
If etapccouleur=0 ; couleur tir alien
ccouleur+5
If ccouleur>50:ccouleur=50:etapccouleur=1:EndIf
EndIf
If etapccouleur=1
ccouleur-5
If ccouleur<0:ccouleur=0:etapccouleur=0:EndIf
EndIf
;- fortiche: toutes les commandes de dessin
;- sont sur cette seule et unique surface:
StartDrawing(ScreenOutput()) ; et sans ralentissement !
Gosub convasci
tail_l.f=0.6
dep_cl.f=0
dep_car.f=0
pos_lx=20
pos_ly=30
depx_car.f=(30*tail_l)
depy_car=0;(35*tail_l)
angle_l=0
adress=?score
Gosub message1
If vie1=0: test_vais=0:Gosub over:Goto finie_jeu:EndIf
If trame22=0
level2=level+18
trame2+1
If trame2>200: trame22=1: EndIf
tail_l.f=0.6
dep_cl.f=0
dep_car.f=0
pos_lx=larg-200
pos_ly=long-30
depx_car.f=(30*tail_l)
depy_car=0;(35*tail_l)
angle_l=0
adress=?vie
Gosub message1
tail_l.f=1
dep_cl.f=0
dep_car.f=0
pos_lx=larg/2-140
pos_ly=long/2-50
depx_car.f=(30*tail_l)
depy_car=0;(35*tail_l)
angle_l=0
adress=?niveau
Gosub message1
If level>9 :level1.l=19 : dep_l.l=level1*32*4
pos_lx=larg/2+100
Gosub message:level2=level+8:EndIf
dep_l.l=level2*32*4
pos_lx=larg/2+125
Gosub message
EndIf
finie_jeu:
Gosub ciel
Gosub vaisseau
Gosub aff_tir
Gosub asteroide
Gosub enemi
Gosub col_tir
Gosub col_obj
Gosub affpro
StopDrawing() ;- et voilà.
; si appui sur touche F
If KeyboardPushed ( #PB_Key_F ) And nbreis=0:nbreis+1:EndIf
If KeyboardPushed ( #PB_Key_F )=0 And nbreis=1:nbreis+1:EndIf
If KeyboardPushed ( #PB_Key_F ) And nbreis=2:nbreis+1:EndIf
If KeyboardPushed ( #PB_Key_F )=0 And nbreis=3:nbreis=0:EndIf
If nbreis=1 Or nbreis=2
Gosub fps ; nombre d'image par seconde
EndIf
FlipBuffers()
Delay(12) ;- là les amis <--
Gosub clavier
; Goto main
If Event= #PB_Event_CloseWindow Or KeyboardPushed ( #PB_Key_Escape );:Fin():
EndIf; si clique coin haut droit ou touche Esc, alors ferme fenêtre.
ForEver
; ******************************************************************************************************
;- FIN Boucle principale
; ******************************************************************************************************
fps:
If Val ( FormatDate ( "%ss" , Date ()))=sek ; regardez pas là, c'est trop compliqué. Arrêtez j'vous dis! Bon ben, je
; vous aurez prévenu...
fps+1
Else
FPS$= Str (fps)
fps=0
EndIf
sek= Val ( FormatDate ( "%ss" , Date ()))
StartDrawing ( ScreenOutput ())
DrawingMode (1)
FrontColor ( RGB (255,255,255))
DrawText (1,1, "FPS: " +FPS$)
zutA=bcouleur
zutA$= Str (zutA)
FrontColor ( RGB (154,154,154)) :DrawText (1+1,120+1, "zutA: " +zutA$)
FrontColor ( RGB (234,234,234)) :DrawText (1,120, "zutA: " +zutA$)
StopDrawing ()
Return
;- colision tir ---
col_tir:
posalix=alienx(0)
posaliy=alieny(0)
For testt=0 To 199
If typtir(testt)=0 :Goto pas_testt:EndIf
postirx=postirxx(testt)
postiry=postiryy(testt)
For testa=0 To 256
If typast(testa)=0 :Goto pas_testa:EndIf
depastx=depastx(testa)
depasty=depasty(testa)
zone1=zone*tailast(testa)
If postirx<depastx+zone1 And postirx>depastx-zone1 And postiry<depasty+zone1 And postiry>depasty-zone1
ori_prox=depastx
ori_proy=depasty
If typast(testa)=2:score1+10:EndIf
If typast(testa)=3:score1+20:EndIf
If typast(testa)=5:score1+30:EndIf
If typast(testa)=6:score1+40:EndIf
If typast(testa)=11:score1+50:EndIf
If typast(testa)=5 Or typast(testa)=6:Gosub creafra:EndIf:Gosub explosion_a:typtir(testt)=0:memtyp=typast(testa):typast(testa)=0:Gosub div_2:Goto pas_testt:EndIf
pas_testa:
Next testa
fragm:
If typtir(testt)=2 :Gosub tir_alien:Goto pas_testt: EndIf
If test_enne=0:Goto pas_testt: EndIf
If postirx<posalix+30 And postirx>posalix-30 And postiry<posaliy+30 And postiry>posaliy-30
ori_prox=posalix
ori_proy=posaliy
typtir(testt)=0
trame222=0:test_enne=0:StopSound(8)
score1+100
Gosub explosion_e:EndIf
pas_testt:
Next testt
Return
tir_alien:
If test_vais=0:Return:EndIf
If postirx<posx+30 And postirx>posx-30 And postiry<posy+30 And postiry>posy-30
ori_prox=posalix
ori_proy=posaliy
typtir(testt)=0
Gosub explosion_v:test_vais=0:EndIf
Return
div_2:
memtail.f=tailast(testa)
If memtail>2
angle_asterox=Angty(testt)
angle_asteroy=Angtx(testt)
angle_asterox1.f=angle_asterox
angle_asteroy1.f=angle_asteroy
ori_astx=depastx(testa)
ori_asty=depasty(testa)
ori_astx1=ori_astx
ori_asty1=ori_asty
tail_ast=memtail-1
vit_ast=4/(memtail-1)
type_ast=memtyp
ori_astx=ori_astx+angle_asterox*80
ori_asty=ori_asty-angle_asteroy*80
angle_asterox=angle_asterox1
angle_asteroy=-angle_asteroy1
Gosub creaast1
ori_astx=ori_astx1-angle_asterox1*80
ori_asty=ori_asty1+angle_asteroy1*80
angle_asterox=-angle_asterox1
angle_asteroy=angle_asteroy1
Gosub creaast1
EndIf
Return
col_obj:;- colision objet ---
For testa1=0 To 256
If typast(testa1)=0 :Goto pas_testa1:EndIf
depastx=depastx(testa1)
depasty=depasty(testa1)
posalienx=alienx(0)
posalieny=alieny(0)
zone1=zone*tailast(testa1)
If test_vais=0: Goto pas_testa2:EndIf
If posx<depastx+zone1+20 And posx>depastx-zone1-20 And posy<depasty+zone1+20 And posy>depasty-zone1-20
ori_prox=posx
ori_proy=posy
Gosub explosion_v:test_vais=0:EndIf
pas_testa2:
If test_enne=0:Goto pas_testa1:EndIf
If posalienx<depastx+zone1+20 And posalienx>depastx-zone1-20 And posalieny<depasty+zone1+20 And posalieny>depasty-zone1-20
ori_prox=posalienx
ori_proy=posalieny
Gosub explosion_e:Gosub div_2:test_enne=0:trame222=0:EndIf
pas_testa1:
Next testa1
If test_enne=0 Or test_vais=0:Return:EndIf
If posalienx-20<posx+20 And posalienx+20>posx-20 And posalieny-20<posy+20 And posalieny+20>posy-20
ori_prox=posx
ori_proy=posy
Gosub explosion_v:test_vais=0
ori_prox=posalienx
ori_proy=posalieny
trame222=0:test_enne=0
Gosub explosion_e:EndIf
Return
;- *********************
enemi:;- ennemi
If test_enne=1:Goto mouv_ennemi:EndIf
trame222+1
If trame222>2000
test_enne=1
PlaySound(8,1)
alienx(0)=0
alieny(0)=Random(512)
depalienx(0)=2
depalieny(0)=0.5
EndIf
Return
mouv_ennemi:
Gosub evit_astero
If Random(150)=1
nb_trame=100
magnet_x1.f=posx-alienx(0):magnet_y1.f=posy-alieny(0)
If magnet_x1>larg/2:magnet_x1=posx-larg -alienx(0): EndIf
If magnet_x1<-larg/2:magnet_x1=posx+larg -alienx(0):EndIf
If magnet_y1>long/2:magnet_y1=posy-long -alieny(0):EndIf
If magnet_y1< -long/2:magnet_y1=posy+long -alieny(0):EndIf
vec_magnet1.f=Sqr(magnet_x1*magnet_x1+magnet_y1*magnet_y1)
angle_tirx=-(magnet_x1/vec_magnet1):angle_tiry=-(magnet_y1/vec_magnet1)
vit_tir=-4
type_tir=2
ori_tirx=alienx(0)
ori_tiry=alieny(0)
angtxx=angle_tirx
angtyy=angle_tiry
Gosub creatir1
EndIf
If Random(200)=1:depalienx(0)=Sin (Random(614)/100)*2:depalieny(0)=-Cos(Random(614)/100)*2:EndIf
alienx(0)+depalienx(0)
alieny(0)+depalieny(0)
Gosub alien
Return
evit_astero:;-evite asteroide
num_ast=0
evite:
If tailast(num_ast)=0:Goto pas_evite:EndIf
ast_alix.f= depastx(num_ast)
ast_aliy.f= depasty(num_ast)
If alienx(0)>ast_alix-80 And alienx(0)<ast_alix+80 And alieny(0)>ast_aliy-80 And alieny(0)<ast_aliy+80
depalienx(0)=dirastx(num_ast)*vitast(num_ast)*1.5
depalieny(0)=dirasty(num_ast)*vitast(num_ast)*2
EndIf
pas_evite:
num_ast+1
If num_ast<16:Goto evite:EndIf
Return
aster_suiveur:;- suiveur
If test_vais=0 :Return:EndIf
magnet_x.f=posx-depastx(nbast_l):magnet_y.f=posy-depasty(nbast_l)
If magnet_x>larg/2:magnet_x=posx-larg -depastx(nbast_l): EndIf
If magnet_x<-larg/2:magnet_x=posx+larg -depastx(nbast_l):EndIf
If magnet_y>long/2:magnet_y=posy-long -depasty(nbast_l):EndIf
If magnet_y< -long/2:magnet_y=posy+long -depasty(nbast_l):EndIf
vec_magnet.f=Sqr(magnet_x*magnet_x+magnet_y*magnet_y)
dirastx(nbast_l)=(magnet_x/vec_magnet):dirasty(nbast_l)=(magnet_y/vec_magnet):Return
clavier:;- clavier
ExamineKeyboard();- 999999999
If test_vais=0:Goto t_esc:EndIf
If directionX=-1: rotm-0.1:If rotm<0 :rotm=2*pi :EndIf:EndIf
If directionX=1:rotm+0.1:If rotm>2*pi :rotm=0 :EndIf:EndIf
If directionY=-1:depmx=depmx+Sin(rotm)*vitesse:depmy=depmy-Cos(rotm)*vitesse
push0=1:Else:push0=0:EndIf
If bouton1=1:If verrou_tir<>0:verrou_tir=0
nb_trame=50:angle_tir=rotm:vit_tir=-7:type_tir=1:ori_tirx=posx:ori_tiry=posy:
angtxx=Sin(rotm):angtyy=-Cos(rotm):Gosub creatir :PlaySound(1,0)
EndIf: Else:verrou_tir=1:EndIf:
t_esc:
If KeyboardPushed(#PB_Key_Escape):End:EndIf:Return:
explosion_v:;- explosion vaisseau
PlaySound(3,0):StopSound(0):For nomb_pro = 0 To 500:nb_trame=Random(200)+1:angle_pro.f=(Random (614))/100
vit_pro.f=(Random(100)/40)+0.2:type_pro=1:ori_prox=posx:ori_proy=posy:Gosub creapro:Next:Return
explosion_a:;- explosion asteroide
PlaySound(2,0):For nomb_pro = 0 To 50:nb_trame=Random(50)+1:angle_pro.f=(Random (614))/100
vit_pro.f=(Random(100)/60)+1:type_pro=1:type_pro=1:Gosub creapro: Next:Return
explosion_e:;- explosion ennemi
PlaySound(2,0):StopSound(8):For nomb_pro = 0 To 200:nb_trame=Random(50)+1:angle_pro.f=(Random (614))/100
vit_pro.f=(Random(100)/60)+1:type_pro=1:type_pro=1:Gosub creapro: Next:Return
creatir:;- création tir
angle_tirx=-Sin(angle_tir):angle_tiry=Cos(angle_tir)
creatir1:
nb_tir2=0
dej_tir1:
If typtir(nb_tir2)<>0:nb_tir2+1:Goto dej_tir1:EndIf
tramtir(nb_tir2)=nb_trame:tirxx(nb_tir2)=angle_tirx*vit_tir: tiryy(nb_tir2)=angle_tiry*vit_tir
typtir(nb_tir2)=type_tir:postirxx(nb_tir2)=ori_tirx:postiryy(nb_tir2)=ori_tiry
angtx(nb_tir2)=angtxx:angty(nb_tir2)=angtyy:Return
creapro:;- création projectil
angle_prox.f=-Sin(angle_pro):angle_proy.f=Cos(angle_pro)
creapro1:
nb_pro=0
dej_pro:
If typpro(nb_pro)<>0:nb_pro+1:Goto dej_pro:EndIf:trampro(nb_pro)=nb_trame
proxx(nb_pro)=angle_prox*vit_pro:proyy(nb_pro)=angle_proy*vit_pro:typpro(nb_pro)=type_pro
posproxx(nb_pro)=ori_prox:posproyy(nb_pro)=ori_proy:Return
creafra:;- création fragment
memtail.f=tailast(testa):angle_asterox1.f=Angty(testt):angle_asteroy1.f=Angtx(testt)
ori_astx=depastx(testa):ori_asty=depasty(testa):tail_ast=1.4:vit_ast=4:type_ast=11
ori_asty=depasty(testa)
angle_asterox=angle_asterox1:angle_asteroy=-angle_asteroy1: Gosub creaast1
angle_asterox=-angle_asterox1:angle_asteroy=angle_asteroy1:Gosub creaast1
angle_asterox=-angle_asteroy1:angle_asteroy=-angle_asterox1: Gosub creaast1
angle_asterox=angle_asteroy1: angle_asteroy=angle_asterox1:Gosub creaast1:Return
creatyp1:;- création astéroide initial
type_ast=2 : Gosub n_suiv : Return
creatyp2:
type_ast=3 : Gosub o_suiv :Return
creatyp3:
type_ast=5 : Gosub n_suiv :Return
creatyp4:
type_ast=6 : Gosub o_suiv:Return
n_suiv:
init_angle_ast=Random(628)/100
ori_astx=Random(1024):ori_asty=0:tail_ast=4:vit_ast=1:Gosub creaast : Return
o_suiv:
ori_astx=Random(1024):ori_asty=0:tail_ast=4:vit_ast=1:Gosub creaast :Return
creaast:;- création asteroide
angle_asterox=-Sin(init_angle_ast):angle_asteroy=Cos(init_angle_ast)
creaast1:
nb_ast=0
dej_ast:
If typast(nb_ast)<>0:nb_ast+1:Goto dej_ast:EndIf:dirastx(nb_ast)=angle_asterox:dirasty(nb_ast)=angle_asteroy
typast(nb_ast)=type_ast:depastx(nb_ast)=ori_astx:depasty(nb_ast)=ori_asty:tailast(nb_ast)=tail_ast
vitast(nb_ast)=vit_ast:Return
;- AFFICHAGE
message:;- affiche un caractere vectoriel
If angle_l>2*pi :angle_l=0 :EndIf
If angle_l<0 :angle_l=2*pi :EndIf
cosrot_l.f=Cos(angle_l):sinrot_l.f=Sin(angle_l)
point_l1.l = PeekL(?lettre+dep_l): If point_l1=-1: Goto fincarac : EndIf
point_l2.l = PeekL(?lettre+dep_l+4):point_l1*8:point_l2*8
coox1_l.l=PeekL(?carac+point_l1)+ori_rotx:cooy1_l.l=PeekL(?carac+point_l1+4)+ori_roty
coox2_l.l=PeekL(?carac+point_l2)+ori_rotx:cooy2_l.l=PeekL(?carac+point_l2+4)+ori_roty
coox11_l.f=cosrot_l * coox1_l - sinrot_l *cooy1_l :cooy11_l.f=sinrot_l * coox1_l + cosrot_l *cooy1_l
coox22_l.f=cosrot_l * coox2_l - sinrot_l *cooy2_l :cooy22_l.f=sinrot_l * coox2_l + cosrot_l *cooy2_l
coox11_l=coox11_l*tail_l:coox22_l=coox22_l*tail_l: cooy11_l=cooy11_l*tail_l:cooy22_l=cooy22_l*tail_l
If dep_l<76
LineXY(pos_lx+coox11_l,pos_ly+cooy11_l,pos_lx+coox22_l,pos_ly+cooy22_l,RGB(170, 210, 245)) ;- vaisseau du joueur
EndIf
If dep_l>75 And dep_l<100
LineXY(pos_lx+coox11_l,pos_ly+cooy11_l,pos_lx+coox22_l,pos_ly+cooy22_l,RGB(80, 128, 255)) ;- cocpit de ce vaisseau
EndIf
If dep_l>99 And dep_l<160
LineXY(pos_lx+coox11_l,pos_ly+cooy11_l,pos_lx+coox22_l,pos_ly+cooy22_l,RGB(255, 234, 0)) ;- flamme reacteur 1
EndIf
If dep_l>159 And dep_l<200
LineXY(pos_lx+coox11_l,pos_ly+cooy11_l,pos_lx+coox22_l,pos_ly+cooy22_l,RGB(255, 162, 0)) ;- flamme reacteur 2
EndIf
If dep_l>199 And dep_l<1151
LineXY(pos_lx+coox11_l,pos_ly+cooy11_l,pos_lx+coox22_l,pos_ly+cooy22_l,RGB(55,255,255)) ;- asteroide
EndIf
If dep_l>1151
LineXY(pos_lx+coox11_l,pos_ly+cooy11_l,pos_lx+coox22_l,pos_ly+cooy22_l,RGB(220, 50-ccouleur, 80-ccouleur)) ;- rouge pour vaisseau alien
EndIf
dep_l+8 :Goto message
fincarac:Return
message1:;- affiche une chaine vectoriel
pos_lx+depx_car
pos_ly+depy_car
ori_rotx=0
ori_roty=0
angle_l+0.000
car_l1.b = PeekB(adress+dep_cl): If car_l1=0: Goto fincarac1 : EndIf
If car_l1=32:dep_cl+1:Goto message1:EndIf
car_l1-30
dep_l.l=car_l1*32*4
Gosub message
dep_cl+1 :Goto message1
fincarac1:
Return
ciel:;- affiche ciel etoilé et coloré en mouvement
For ciel_l= 0 To 199
Circle(cielx(ciel_l),ciely(ciel_l),tail_ciel(ciel_l),RGB(rciel(ciel_l), gciel(ciel_l), bciel(ciel_l)))
ciely(ciel_l)+1
If ciely(ciel_l)>long:ciely(ciel_l)=0:EndIf
Next
Return
asteroide:;- affiche asteroide
nb_astero=0
nbast_l=0
affast:
If typast(nbast_l)=0:nb_astero+1:Goto pas_aff_ast:EndIf
If typast(nbast_l)=3 Or typast(nbast_l)=6:If vaisseau1>0: Gosub aster_suiveur:EndIf:EndIf
depastx(nbast_l)+dirastx(nbast_l)*vitast(nbast_l)
depasty(nbast_l)+dirasty(nbast_l)*vitast(nbast_l)
depastx1=depastx(nbast_l)
depasty1=depasty(nbast_l)
If depastx1>larg1:depastx1=0:If typast(nbast_l)=11:typast(nbast_l)=0:EndIf:EndIf
If depasty1>long1:depasty1=0:If typast(nbast_l)=11:typast(nbast_l)=0:EndIf:EndIf
If depastx1<0:depastx1=larg1:If typast(nbast_l)=11:typast(nbast_l)=0:EndIf:EndIf
If depasty1<0:depasty1=long1:If typast(nbast_l)=11:typast(nbast_l)=0:EndIf:EndIf
depastx(nbast_l)=depastx1
depasty(nbast_l)=depasty1
tail_l=tailast(nbast_l)
dep_l=typast(nbast_l)*32*4 ;- 1***
pos_lx=depastx1
pos_ly=depasty1
angle_l=0
ori_rotx=0
ori_roty=15
Gosub message
pas_aff_ast:
nbast_l+1
If nbast_l < 256:Goto affast:EndIf
Return
vaisseau:;- affiche vaisseau
If test_vais=0:Return:EndIf:depmx=depmx*friction :depmy=depmy*friction:posx=posx+depmx:posy=posy+depmy
If posx>larg:posx=0:EndIf:If posy>long:posy=0: EndIf:If posx<0: posx=larg:EndIf:If posy<0:posy=long:EndIf
dep_l=0*32*4 ;- 2***
: pos_lx=posx :pos_ly=posy: ori_rotx=0: ori_roty=10: tail_l=1.4:angle_l=rotm: Gosub message
If push0=1:If Random(1)=1:dep_l=1*32*4:pos_lx=posx:pos_ly=posy:angle_l=rotm:ori_rotx=0:ori_roty=50:tail_l=1.5:Gosub message
EndIf: If ver_sound_vai=0 :ver_sound_vai=1:PlaySound(0,1) :EndIf
Else : If ver_sound_vai=1 :ver_sound_vai=0:StopSound(0) :EndIf:EndIf:Return
alien:;- affiche alien
If test_enne=0:Return:EndIf
posalienx= alienx(0)
posalieny= alieny(0)
dep_l=9*32*4 ;- 3***
pos_lx=posalienx
pos_ly=posalieny
ori_rotx=0
ori_roty=10
tail_l=1.4
angle_l=pi2
If posalienx>larg1: posalienx=0:EndIf
If posalieny>long1: posalieny=0:EndIf
If posalienx<0: posalienx=larg1:EndIf
If posalieny<0: posalieny=long1:EndIf
alienx(0)=posalienx
alieny(0)=posalieny
Gosub message
Return
aff_tir:;- affiche tir
nb_tir=0
ret_tir:
If typtir(nb_tir)=0:nb_tir+1
If nb_tir>190 :Goto fin_tir:EndIf
Goto ret_tir
EndIf
postirxx(nb_tir)+tirxx(nb_tir)
postiryy(nb_tir)+tiryy(nb_tir)
postirx=postirxx(nb_tir)
postiry=postiryy(nb_tir)
tramtir(nb_tir)-1
If tramtir(nb_tir)=0:typtir(nb_tir)=0:tirxx(nb_tir)=0:tiryy(nb_tir)=0: EndIf
If postirx>larg:postirx=0:postirxx(nb_tir)=postirx:EndIf
If postiry>long:postiry=0:postiryy(nb_tir)=postiry:EndIf
If postirx<0:postirx=larg:postirxx(nb_tir)=postirx:EndIf
If postiry<0:postiry=long:postiryy(nb_tir)=postiry:EndIf
;- tir gentil ou pas <----
; Circle (postirx,postiry,3,RGB(85, 200, 255))
; Circle(postirx,postiry, 2 ,RGB(135, 210, 255))
Circle (postirx,postiry,3,RGB(85+bcouleur, 200, 255));255,255,255)) ;-
Circle(postirx,postiry, 2 ,RGB(135+bcouleur, 210,255))
nb_tir+1
If nb_tir<190: Goto ret_tir:EndIf
fin_tir:
; If ver_sound_tir=0 :ver_sound_tir=1:PlaySound(4,1) :EndIf
; If ver_sound_tir=1 :ver_sound_tir=0:StopSound(4) :EndIf
Return
affpro:;- affiche explosion
nb_proj=0
nb_trame=0
ret_proj:
If typpro(nb_proj)=0:nb_trame+1:Goto pas_proj:EndIf
posproxx(nb_proj)+proxx(nb_proj)
posproyy(nb_proj)+proyy(nb_proj)
posprox=posproxx(nb_proj)
posproy=posproyy(nb_proj)
trampro(nb_proj)-1
If trampro(nb_proj)=0:typpro(nb_proj)=0:proxx(nb_proj)=0:proyy(nb_proj)=0: EndIf
If posprox>larg:posprox=0:posproxx(nb_proj)=posprox:EndIf
If posproy>long:posproy=0:posproyy(nb_proj)=posproy:EndIf
If posprox<0:posprox=larg:posproxx(nb_proj)=posprox:EndIf
If posproy<0:posproy=long:posproyy(nb_proj)=posproy:EndIf
Circle (posprox,posproy,3,RGB(255,255,255))
pas_proj:
nb_proj+1
If nb_proj<1900: Goto ret_proj:EndIf
Return
init_jeu:;- initialisation jeu
For ini_ciel=0 To 199:cielx(ini_ciel)=Random(larg):ciely(ini_ciel)=Random(long):tail_ciel(ini_ciel)=Random(3)-1:Next
Return
convasci:;- convertis score ASCI
divid.l=100000
dep_sc=0
decim.l=0
conv_sc:
score3.l=0
score2.l=score1
score3=score2
For sco=0 To 5
score2/divid
decim=score2
score3=score3-decim*divid
score2=score3
divid/10
decim+48
PokeB(?score+dep_sc,decim)
dep_sc+1
Next
PokeB(?score+dep_sc,0)
Return
moins_vie:
PokeB(?vie+vie1-1,0)
Return
over:
tail_l.f=1
dep_cl.f=0
dep_car.f=0
pos_lx=larg/2-140
pos_ly=long/2-50
depx_car.f=(30*tail_l)
depy_car=0;(35*tail_l)
angle_l=0
adress=?fin_jeu
Gosub message1
Return
init_tableau:;- initialisation tableau
num_level:;- section niveau
For initast=0 To 15:tailast(initast)=0:depasty(initast)=0:Next
If level=1:Gosub creatyp1:Gosub creatyp1:Gosub creatyp1:Gosub creatyp1: EndIf
If level=2:Gosub creatyp1:Gosub creatyp1:Gosub creatyp1:Gosub creatyp2: EndIf
If level=3:Gosub creatyp1:Gosub creatyp1:Gosub creatyp1:Gosub creatyp3: EndIf
If level=4:Gosub creatyp1:Gosub creatyp1:Gosub creatyp1:Gosub creatyp4: EndIf
If level=5:Gosub creatyp1:Gosub creatyp1:Gosub creatyp2:Gosub creatyp4: EndIf
If level=6:Gosub creatyp1:Gosub creatyp1:Gosub creatyp3:Gosub creatyp4: EndIf
If level=7:Gosub creatyp1:Gosub creatyp1:Gosub creatyp4:Gosub creatyp4: EndIf
If level=8:Gosub creatyp1:Gosub creatyp2:Gosub creatyp4:Gosub creatyp4: EndIf
If level=9:Gosub creatyp1:Gosub creatyp3:Gosub creatyp4:Gosub creatyp4: EndIf
If level=10:Gosub creatyp1:Gosub creatyp4:Gosub creatyp4:Gosub creatyp4: EndIf
If level=11:Gosub creatyp2:Gosub creatyp4:Gosub creatyp4:Gosub creatyp4: EndIf
If level=12:Gosub creatyp3:Gosub creatyp4:Gosub creatyp4:Gosub creatyp4: EndIf
If level=13:Gosub creatyp4:Gosub creatyp4:Gosub creatyp4:Gosub creatyp4: EndIf
Return
Procedure.i cdirection(*caps.JOYCAPS, *info.JOYINFOEX) ; joypad: utilisation de la croix directionnelle.
If *info\dwPOV=0 Or *info\dwPOV=4500 Or *info\dwPOV=31500:directionY=-1:EndIf; haut
If *info\dwPOV=18000 Or *info\dwPOV=22500 Or *info\dwPOV=13500:directionY=1:EndIf; bas
If *info\dwPOV=9000 Or *info\dwPOV=4500 Or *info\dwPOV=13500:directionX=1:EndIf; droite
If *info\dwPOV=27000 Or *info\dwPOV=31500 Or *info\dwPOV=22500:directionX=-1:EndIf; gauche
EndProcedure
gene_son:
!MOV dword[add_dat],0
For br=0 To 6000;- bruit reacteur
brh0.f=Random(65000)-32000
brsong.w=brh0
!PUSH eax
!PUSH ebx
!PUSH edi
!MOV ax,word[v_brsong]
!LEA edi,[br_rea]
!ADD edi,[add_dat]
!ADD dword[add_dat],4
!MOV word[edi],ax
!MOV word[edi+2],ax
!POP edi
!POP ebx
!POP eax
Next br
CatchSound(0,?music0)
SoundVolume(0, 50)
SoundFrequency(0, 1500)
!MOV dword[add_dat],0
For br=0 To 6000;- bruit ennemi
a.f+0.1
brh0.f=Sin(a*a)*32000
brsong.w=brh0
!PUSH eax
!PUSH ebx
!PUSH edi
!MOV ax,word[v_brsong]
!LEA edi,[br_enn]
!ADD edi,[add_dat]
!ADD dword[add_dat],4
!MOV word[edi],ax
!MOV word[edi+2],ax
!POP edi
!POP ebx
!POP eax
Next br
CatchSound(8,?music8)
SoundVolume(8, 30)
SoundFrequency(8, 1450)
ral0.f=1
!MOV dword[add_dat],0
For br=0 To 60000
ral0+0.02
brh0.f=Random(500000)/ral0
brsong.w=brh0
!PUSH eax
!PUSH ebx
!PUSH edi
!MOV ax,word[v_brsong]
!LEA edi,[br_exp]
!ADD edi,[add_dat]
!ADD dword[add_dat],4
!MOV word[edi],ax
!MOV word[edi+2],ax
!POP edi
!POP ebx
!POP eax
Next br
CatchSound(2,?music2)
SoundVolume(2, 60)
SoundFrequency(2, 4000)
b.f=3;- bruit tir
!MOV dword[add_dat],0
For br=0 To 60000
a.f+b
b-0.0008
brh0.f=Sin(a)*15000
brsong.w=brh0
!PUSH eax
!PUSH ebx
!PUSH edi
!MOV ax,word[v_brsong]
!LEA edi,[br_tir]
!ADD edi,[add_dat]
!ADD dword[add_dat],4
!MOV word[edi],ax
!MOV word[edi+2],ax
!POP edi
!POP ebx
!POP eax
Next br
CatchSound(1,?music1)
SoundVolume(1, 60)
SoundFrequency(1, 7500)
!MOV dword[add_dat],0
a.f=1;- bruit explosion vaisseau
b.f=65000
For br=0 To 60000
a-0.00035
b-10
brh0.f=(Random(b)-b/2)*a
brsong.w=brh0
!PUSH eax
!PUSH ebx
!PUSH edi
!MOV ax,word[v_brsong]
!LEA edi,[br_expv]
!ADD edi,[add_dat]
!ADD dword[add_dat],4
!MOV word[edi],ax
!MOV word[edi+2],ax
!POP edi
!POP ebx
!POP eax
Next br
CatchSound(3,?music3)
SoundVolume(3, 100)
SoundFrequency(3, 1800)
Return
!section '.data' align 16
niveau:
!db "NIVEAU",0,0
nine1:
!db "ASTEROIDE SIMPLE",0,0
nine2:
!db "ASTEROIDE MAGNETIQUE",0,0
nine3:
!db "ASTEROIDE A FRAGMENTATION",0,0
nine4:
!db "ASTEROIDE MAGNETIQUE A FRAGMENTATION",0,0
score:
!db "1234567890",0,0
vie:
!db 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,0
fin_jeu:
!db "FIN DE JEU",0,0
carac:
! dd -10,-30,-5,-30,0,-30,5,-30,10,-30
! dd -10,-25,-5,-25,0,-25,5,-25,10,-25
! dd -10,-20,-5,-20,0,-20,5,-20,10,-20
! dd -10,-15,-5,-15,0,-15,5,-15,10,-15
! dd -10,-10,-5,-10,0,-10,5,-10,10,-10
! dd -10,-5,-5,-5,0,-5,5,-5,10,-5
! dd -10, 0,-5, 0,0, 0,5, 0,10, 0
! dd -10, 5,-5, 5,0, 5,5, 5,10, 5
! dd -10,10,-5,10,0,10,5,10,10,10
! dd -10,15,-5,15,0,15,5,15,10,15
lettre:
!dd 2,16,16,48,46,18,18,2,32,26,26,30,30,46,34,28,28,32,34,48,12,16,16,18,18,12,-1,0,0,0,0,0
!dd 2,11,11,32,32,13,13,2,2,15,15,47,47,19,19,2,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 5,16,16,25,25,22,22,29,29,18,18,9,9,12,12,5,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 10,6,6,11,11,12,12,8,8,14,14,13,13,18,18,24,24,28,28,23,23,22,22,26,26,20,20,21,21,16,16,10
!dd -1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 5,16,16,25,25,22,22,29,29,18,18,9,9,12,12,5,11,23,13,21,-1,0,0,0,0,0,0,0,0,0,0,0
!dd 10,6,6,11,11,12,12,8,8,14,14,13,13,18,18,24,24,28,28,23,23,22,22,26,26,20,20,21,21,16,16,10
!dd 11,23,13,21,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 0,4,4,30,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 4,2,2,7,7,6,6,10,10,20,20,26,26,27,27,32,32,34,34,29,29,28,28,23,23,24,24,14,14,13,13,8
!dd 8,9,9,4,6,26,7,27,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 6,10,10,16,16,25,25,21,21,22,22,27,27,29,29,23,23,19,19,8,8,12,12,6,-1,0,0,0,0,0,0,0
!dd 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 1,5,5,25,25,31,31,33,33,29,29,9,9,3,3,1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; 0
!dd 6,2,2,32,31,33,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; 1
!dd 5,1,1,3,3,9,9,14,14,30,30,34,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; 2
!dd 5,1,1,3,3,9,9,14,14,18,18,16,18,24,24,29,29,33,33,31,31,25,-1,0,0,0,0,0,0,0,0,0 ; 3
!dd 3,20,20,24,3,33,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; 4
!dd 4,0,0,15,15,18,18,24,24,29,29,33,33,31,31,25,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; 5
!dd 9,3,3,1,1,5,5,25,25,31,31,33,33,29,29,24,24,18,18,16,16,20,-1,0,0,0,0,0,0,0,0,0 ; 6
!dd 0,4,4,30,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; 7
!dd 1,5,5,10,10,16,16,20,20,25,25,31,31,33,33,29,29,24,24,18,18,14,14,9,9,3,3,1,16,18,-1,0 ; 8
!dd 25,31,31,33,33,29,29,9,9,3,3,1,1,5,5,10,10,16,16,18,18,14,-1,0,0,0,0,0,0,0,0,0 ; 9
!dd 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 1,3,3,14,14,34,1,10,10,30,15,19,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
; !dd 14,14,14,14,14,14,14,10,10,30,15,19,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 0,3,3,9,9,14,14,18,18,24,24,29,29,33,33,30,30,0,15,18,-1,0,0,0,0,0,0,0,0,0,0,0
!dd 9,3,3,1,1,5,5,25,25,31,31,33,33,29,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 3,0,0,30,30,33,33,29,29,9,9,3,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 4,0,0,30,30,34,15,18,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 4,0,0,30,15,18,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 9,3,3,1,1,5,5,25,25,31,31,33,33,29,29,19,19,18,-1,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 0,30,4,34,15,19,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 1,3,2,32,31,33,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 4,29,29,33,33,31,31,25,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 0,30,15,17,17,4,17,34,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 0,30,30,34,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 30,0,0,12,12,4,4,34,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 30,0,0,34,34,4,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 3,1,1,5,5,25,25,31,31,33,33,29,29,9,9,3,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 15,18,18,14,14,9,9,3,3,0,0,30,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 3,1,1,5,5,25,25,31,31,33,33,29,29,9,9,3,22,34,-1,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 0,3,3,9,9,14,14,18,18,24,24,34,0,30,15,18,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 9,3,3,1,1,5,5,10,10,16,16,18,18,24,24,29,29,33,33,31,31,25,-1,0,0,0,0,0,0,0,0,0
!dd 0,4,2,32,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 0,25,25,31,31,33,33,29,29,4,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 0,32,32,4,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 0,30,30,22,22,34,34,4,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 0,34,4,30,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 0,17,17,4,17,32,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 0,4,4,30,30,34,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 4,1,1,5,5,25,25,31,31,34,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!dd 3,0,0,30,30,33,33,29,29,9,9,3,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
!section '.data' align 16
!add_dat:
!dd 0
music0:
!db 052h,049h,046h,046h
!dd 6000-8
!db 057h,041h,056h,045h,066h,06dh,074h,020h
!dd 16
!dw 1,2
!dd 22050,88200
!dw 4,16
!db 064h,061h,074h,061h
!dd 6000-44
!br_rea:
!rd 60000
!section '.data' align 16
music1:
!db 052h,049h,046h,046h
!dd 15000-8
!db 057h,041h,056h,045h,066h,06dh,074h,020h
!dd 16
!dw 1,2
!dd 22050,88200
!dw 4,16
!db 064h,061h,074h,061h
!dd 15000-44
!br_tir:
!rd 30000
!section '.data' align 16
music2:
!db 052h,049h,046h,046h
!dd 6000-8
!db 057h,041h,056h,045h,066h,06dh,074h,020h
!dd 16
!dw 1,2
!dd 22050,88200
!dw 4,16
!db 064h,061h,074h,061h
!dd 6000-44
!br_exp:
!rd 620000
!section '.data' align 16
music3:
!db 052h,049h,046h,046h
!dd 15000-8
!db 057h,041h,056h,045h,066h,06dh,074h,020h
!dd 16
!dw 1,2
!dd 22050,88200
!dw 4,16
!db 064h,061h,074h,061h
!dd 15000-44
!br_expv:
!rd 60000
!section '.data' align 16
music8:
!db 052h,049h,046h,046h
!dd 6000-8
!db 057h,041h,056h,045h,066h,06dh,074h,020h
!dd 16
!dw 1,2
!dd 22050,88200
!dw 4,16
!db 064h,061h,074h,061h
!dd 6000-44
!br_enn:
!rd 80000