06 April 2022, 00:23 | #1 |
Registered User
Join Date: Mar 2012
Location: UK
Posts: 1,895
|
Game not working on 1.3
I know this has been a topic of conversation before but has anyone worked out why a game works on 2.0 but not 1.3?
My Flappy Bird game is the Amiga Addict cover disk and works on an A500+ upwards but fails on an A500. I realised that my startup-sequence didn't work (had assign) but even when I remove this the game just gurus? It does ask for L: on boot so not sure if I should be doing something with this? Or are some commands not 1.3 compatible? Can't see anything in the manual saying this and does say that on floppy it starts from a minimal 1.3 environment. If anyone fancies looking at the source code: Code:
WBStartup ;tiles for pipes LoadShape 1,"graphics/pipe1" LoadShape 2,"graphics/pipe2" LoadShape 3,"graphics/pipe3" LoadShape 4,"graphics/blank" ;LoadShape 5,"graphics/pipemove" ;flappy bird sprite LoadShape 8,"graphics/flappy1":GetaSprite 7,8 LoadShape 9,"graphics/flappy2":GetaSprite 8,9 LoadShape 10,"graphics/flappy3":GetaSprite 9,10 LoadShape 11,"graphics/flappyup1":GetaSprite 0,11 LoadShape 12,"graphics/flappyup2":GetaSprite 1,12 LoadShape 13,"graphics/flappyup3":GetaSprite 2,13 LoadShape 14,"graphics/flappydown1":GetaSprite 3,14 LoadShape 15,"graphics/flappydown2":GetaSprite 4,15 LoadShape 16,"graphics/flappydown3":GetaSprite 5,16 LoadShape 17,"graphics/flappydown4":GetaSprite 6,17 LoadShape 18,"graphics/lemming":GetaSprite 20,18 LoadShape 19,"graphics/shot":GetaSprite 21,19 ;background elements LoadShape 20,"graphics/background28" LoadShape 21,"graphics/background38" LoadShape 24,"graphics/background8" LoadShape 25,"graphics/gameover" LoadShape 26,"graphics/backgroundend" LoadShape 27 ,"graphics/getready" LoadShape 28,"graphics/flappywin" LoadShape 29,"graphics/startscreen" ;numbers LoadShape 30,"graphics/zero":GetaSprite 10,30 LoadShape 31,"graphics/one":GetaSprite 11,31 LoadShape 32,"graphics/two":GetaSprite 12,32 LoadShape 33,"graphics/three":GetaSprite 13,33 LoadShape 34,"graphics/four":GetaSprite 14,34 LoadShape 35,"graphics/five":GetaSprite 15,35 LoadShape 36,"graphics/six":GetaSprite 16,36 LoadShape 37,"graphics/seven":GetaSprite 17,37 LoadShape 38,"graphics/eight":GetaSprite 18,38 LoadShape 39,"graphics/nine":GetaSprite 19,39 LoadShape 40,"graphics/0" LoadShape 41,"graphics/1" LoadShape 42,"graphics/2" LoadShape 43,"graphics/3" LoadShape 44,"graphics/4" LoadShape 45,"graphics/5" LoadShape 46,"graphics/6" LoadShape 47,"graphics/7" LoadShape 48,"graphics/8" LoadShape 49,"graphics/9" ;medals LoadShape 50,"graphics/bronze" LoadShape 51,"graphics/silver" LoadShape 52,"graphics/gold" LoadShape 53,"graphics/platinum" ;AA Logo LoadShape 54,"graphics/AAlogo" ;set up palette LoadPalette 0,"graphics/pipe3" LoadPalette 0,"graphics/AAlogo",8 LoadPalette 0,"graphics/flappy1",16 LoadPalette 1,"graphics/pipe3" LoadPalette 1,"graphics/AAlogo",8 LoadPalette 1,"graphics/lemming",16 LoadPalette 2,"graphics/backgroundend" LoadPalette 3,"graphics/flappywin" ;load sounds LoadSound 0,"sounds/flap.iff" LoadSound 1,"sounds/ping.iff" LoadSound 2,"sounds/smack.iff" LoadSound 3,"sounds/shot.iff" BitMap 0,576,256,3 BitMap 1,576,256,3 BitMap 2,320,256,3 BitMap 3,320,256,5 ;dualplayfield $20+$6 (for 6 bitplanes) ;set colours to 32 for sprites InitCopList 0,44,256,$20+$6,8,32,0 InitCopList 1,44,256,$5,8,32,0 InitCopList 2,44,256,$5,8,32,0 BLITZ DisplayBitMap 1,3 BlitzKeys On ; load highscore from disk highold=0 If OpenFile (0,"highscoret.dat")=-1 Fields 0,highold End If Get 0,0 CloseFile 0 high=highold Dim sc(3) Dim pipex(6) DisplayAdjust 0, 0,0,0,95,-95; narrow display DisplayAdjust 1, 0,0,0,95,-95; narrow display Buffer 0,16384 .restart score=0 DisplayPalette 0,1 CreateDisplay 0 Use BitMap 2: Block 24,0,0 Use BitMap 0: Cls UnBuffer 0 DisplayBitMap 0,0,0,0,2,0,0 ;set up random map Dim map(1500): mp=0 Dim r(1500) Gosub setup_map ;mp=180 SetColl 7,3,1; set colour - bird to collide with pipes ;pipe variables pipex=0 :pipe_y=0:pipe_count=0:px=48:py=0 Scrollx=16:count=1 ;main variables by=60:lx=40 fx=0:fy=0:fydir=0:fireball=0 fb=30:fb1=1 s$="":p=0 ani=0 control=1 flap=0 :sc1=0 cheat=0; set cheat=0 for no collisions gravity=0:jump=0 :sp=1 : die=0 : starty=1 :mv=1:mdir=1:speed=1 db=0 vy=0:grav=0.35 mp=0 ;reset pipe position counter for new game For n=0 To 6: pipex(n)=0: Next n DisplayPalette 0,1 While RawStatus(69)=0 ;Poke.w $dff180,$f00 If starty=1 Then VWait(1) If starty>0 Then UnBuffer 0 Use BitMap db If mp=1000 Then lemming=1 .debug ;show variables ;BitMapOutput 2:Colour 4,5 ; Locate 10,25:Print"by=":Print by:Print" " ; Locate 10,26:Print"vy=":Print vy:Print" " ; Locate 10,27:Print"die=":Print die:Print" " ; Locate 10,28:Print"m=":Print m:Print" ":Print"mp=":Print mp:Print" " ; Locate 10,29:Print"scrollx=":Print scrollx:Print" " ;Locate 10,25:Print"lx=":Print lx ; MouseWait ;slow down game ;VWait (5) If die=1 Then Goto loop4 If starty>0 Then Goto loop2 If control=1 If RawStatus(64)=0 Then flap=0 If RawStatus(64)=-1 AND jump=0 AND flap=0 Then ani=1:Sound 0,1: flap=1: jump=1 : sp=8:gravity=0 End If If control=2 If Joyb(0)=0 Then flap=0 If Joyb(0)=1 AND jump=0 AND flap=0 Then ani=1:Sound 0,1: flap=1: jump=1 : sp=8:gravity=0 End If If control=3 If Joyb(1)=0 Then flap=0 If Joyb(1)=1 AND jump=0 AND flap=0 Then ani=1: Sound 0,1: flap=1: jump=1 : sp=8:gravity=0 End If ;bouncing code If jump=1 Then vy=4 :jump=0 If cheat=0 Then by=by-vy:vy=vy-grav: If vy<-6 Then vy=-6 .loop If mp>1021 Then Goto loop4 ;Poke.w $dff180,$0f0 .drawpipe If count>192 Then Goto skip2 ;if pipe_count=0 then get number from array and inc pipe_count If pipe_count=0 m=map(mp) gap=r(mp) End If pipe_count=pipe_count+1 If pipe_count>12 AND pipe_count<17 Then Goto skip2 If pipe_count>28 Then Goto skip2 ;blit pipe or space If m=0 Then Block 4,px,py If m=1 Then Block 1,px,py If m=2 AND py>103 Block 1,px,py If m=2 Then Block 3,px,80 ;y+16 to draw next piece of pipe py=py+16 .skip2 ;draw gaps If m=1 If pipe_count=13 Then Block 2,px,gap If pipe_count=14 Then Block 4,px,gap+16 If pipe_count=15 Then Block 4,px,gap+32 If pipe_count=16 Then Block 3,px,gap+48: pipex(p)=128:p=p+1:If p=6 Then p=0 If pipe_count=29 Then Block 2,px,gap If pipe_count=30 Then Block 4,px,gap+16 If pipe_count=31 Then Block 4,px,gap+32 If pipe_count=32 Then Block 3,px,gap+48 End If ;copy pipe to next screen If pipe_count=16 Then px=px+224-32:py=0 If pipe_count=32 Then px=px-224+32:px=px+32:pipe_count=0:mp=mp+1:py=0 count=count+1 ;reset if full screen drawn If count=224-32 Then px=48:py=0:count=1:pipe_count=0:mp=mp+1:py=0 If cheat=1 Then Goto nodie DoColl If PColl(0)=-1 Then Sound 2,1:die=1 .nodie ;decrease pipex variable (if not 0) and check to see ;if this equals bx to increase score For n=0 To 5 If pipex(n)=0 Then Goto skip3 pipex(n)=pipex(n)-1 If pipex(n)=0 Then score=score+1 :Sound 1,2 .skip3 Next n .loop4 ;die routie If die=1 by=by+8 If by>184 Use BitMap 0:Cls DisplaySprite 0,1,320,0,0 For n=1 To 6 Step 2 DisplaySprite 0,1,320,0,n Next n CreateDisplay 1 DisplayPalette 1,2 Use BitMap 3 Blit 26,0,0 ;Blit 25,95,50 s$=Str$(score) :l=Len(s$) For n=1 To l b$=Mid$(s$,n,1) sc(n)=Val(b$) Blit sc(n)+40,164+(n*7)-((l-1)*9),98;,n-1 Next n s$=Str$(high) :l=Len(s$) For n=1 To l b$=Mid$(s$,n,1) sc(n)=Val(b$) Blit sc(n)+40,170+(n*7)-((l-1)*9),118,n+2 Next n If score>=10 AND score<20 Then Blit 50,117,112 If score>=20 AND score<30 Then Blit 51,117,112 If score>=50 AND score<100 Then Blit 52,117,112 If score>=100 Then Blit 53,117,112 ;VWait DisplayBitMap 1,3 VWait If score>high Then high=score VWait(200): Goto restart End If ;Goto loop2 End If If die=1 OR vy<-5.99 Then DisplaySprite 0,6,100,by,0:Goto loop3 If by>184 Then by=184 .skip1 If ani=3 Then ani=0 If jump=0 Then DisplaySprite 0,7+ani,100,by,0 ;If jump>2 AND jump<4 Then DisplaySprite 0,7+ani,100,by,0 ;If jump>4 Then DisplaySprite 0,1,100,by,0 ami_count=ami_count+1: If ami_count=5 Then ami_count=0:ani=ani+1 ;lemming appears If mp>1020 AND lx>7 Then DisplaySprite 0,20,lx+182,62,4:lx=lx-1 .loop3 ;lemming fires If lx<8 If fx<90 Then fydir=Rnd(4)-2:fx=lx+180:fy=74:fireball=fireball+1:Sound 3,4 If fireball=50 Goto game_finished DisplaySprite 0,21,fx,fy,2 fx=fx-2:fy=fy+fydir If RectsHit (100,by,15,11,fx,fy,6,6)=-1 Then Sound 1,2:die=1 End If ; by=by+gravity:gravity=gravity+gr : If gravity>8 Then gravity=8 ;don't touch the floor or ceiling If by>185 Then die=1 : Sound 2,1 If by<6 Then die=1 :Sound 2,1 :by=6 .loop2 ;If die=1 AND by>185 ;End If ;display score If mp<1021 AND starty=0 s$=Str$(score) :l=Len(s$) For n=1 To l b$=Mid$(s$,n,1) sc(n)=Val(b$) DisplaySprite 0,sc(n)+10,140+(n*13)-((l-1)*11),10,n*2 Next n End If Use BitMap 2 If starty=1 AND RawStatus(64)<>0 Then starty=2:control=1 If starty=1 AND Joyb(0)<>0 Then starty=2:control=2 If starty=1 AND Joyb(1)<>0 Then starty=2:control=3 If starty=1 Block 29,0,0;:Blit 20,sc1+71,192 DisplaySprite 0,8+ani,100,fb+38,0 End If If starty>1 If starty=2 Block 24,0,0 :Blit 20,sc1+71,192 ; Use BitMap 1:Block 24,0,0 :Blit 20,sc1+71,192 End If BBlit 0,27,101,50: starty=starty+1 If starty=50 starty=0:by=80 UnBuffer 0 Block 24,0,0 scrollx=0 EndIf EndIf If starty=1 fb=fb+fb1: If fb>40 Then fb1=-2:ani=ani+1 If fb<25 Then fb1=2 :ani=ani+1 If fb=30 Then ani=ani+1 If ani=2 Then ani=0 End If ;Poke.w $dff180,$00f ;Use BitMap 2 If mp<1022 AND starty=0 Blit 20,sc1+71,192 : sc1=sc1-1:If sc1<-11 Then sc1=0 scrollx=scrollx+1: If scrollx=224-33 Then scrollx=0 End If VWait If starty=0 Then DisplayBitMap 0,db,scrollx,0,2,0,0 If starty>0 Then DisplayBitMap 0,0,0,0,2,0,0 ;db=1-db ;Poke.w $dff180,$0ff ;MouseWait Wend End If high>highold dummy= OpenFile (0,"highscoret.dat")=-1 Fields 0,high Put 0,0 CloseFile 0 End If End .setup_map mp=0 ;easy pipes For n= 0 To 50 If mp=1 Then map(n)=1: r(n)=Rnd(100)+8 mp=mp+1: If mp=3 Then mp=0 Next n mp=0 ;harder pipes For n= 51 To 100 If mp=1 Then map(n)=1: r(n)=Rnd(100)+8 mp=mp+1: If mp=2 Then mp=0 Next n ;25% chance of doubles mp=0 For n= 110 To 160 If mp=1 Then map(n)=1: r(n)=Rnd(100)+8 If mp=2 AND Rnd(100)>75 Then map(n)=1:r(n)=r(n-1) mp=mp+1: If mp=3 Then mp=0 Next n mp=0 ;harder pipes For n= 161 To 210 If mp=1 Then map(n)=1: r(n)=Rnd(100)+8 mp=mp+1: If mp=2 Then mp=0 Next n ;50% chance of doubles mp=0 For n= 221 To 270 If mp=1 Then map(n)=1: r(n)=Rnd(100)+8 If mp=2 AND Rnd(100)>50 Then map(n)=1:r(n)=r(n-1) mp=mp+1: If mp=3 Then mp=0 Next n mp=0 ;harder pipes For n= 271 To 320 If mp=1 Then map(n)=1: r(n)=Rnd(100)+8 mp=mp+1: If mp=2 Then mp=0 Next n ;75% chance of doubles mp=0 For n= 331 To 380 If mp=1 Then map(n)=1: r(n)=Rnd(100)+8 If mp=2 AND Rnd(100)>25 Then map(n)=1:r(n)=r(n-1) mp=mp+1: If mp=3 Then mp=0 Next n mp=0 ;harder pipes For n= 382 To 432 If mp=1 Then map(n)=1: r(n)=Rnd(100)+8 mp=mp+1: If mp=2 Then mp=0 Next n ;tunnels r=48 For n= 442 To 464 Step 3 r=r+8 For i= 0 To 2 map(n+i)=1: r(n+i)=r Next i Next n ;tunnels r=100 For n= 466 To 490 Step 3 r=r-8 For i= 0 To 2 map(n+i)=1: r(n+i)=r Next i Next n ;All doubles mp=0 For n= 495 To 545 If mp=1 Then map(n)=1: r(n)=Rnd(100)+8 If mp=2 Then map(n)=1:r(n)=r(n-1) mp=mp+1: If mp=3 Then mp=0 Next n mp=0 ;harder pipes For n= 550 To 600 If mp=1 Then map(n)=1: r(n)=Rnd(100)+8 mp=mp+1: If mp=2 Then mp=0 Next n ;straight tunnel 1 r=108 For n= 601 To 630 Step 3 For i= 0 To 2 map(n+i)=1: r(n+i)=r Next i Next n ;straight tunnel 2 r=16 For n= 635 To 662 Step 3 For i= 0 To 2 map(n+i)=1: r(n+i)=r Next i Next n ;straight tunnel 3 r=Rnd(100)+8 For n= 667 To 694 Step 3 For i= 0 To 2 map(n+i)=1: r(n+i)=r Next i Next n mp=0 ;harder pipes For n= 700 To 750 If mp=1 Then map(n)=1: r(n)=Rnd(100)+8 mp=mp+1: If mp=2 Then mp=0 Next n ;diagonal tunnel up and down r=108 For n= 755 To 766 Step 3 For i= 0 To 2 map(n+i)=1: r(n+i)=r r=r-8 Next i Next n For n= 767 To 778 Step 3 For i= 0 To 2 map(n+i)=1: r(n+i)=r r=r+8 Next i Next n r=108 For n= 779 To 790 Step 3 For i= 0 To 2 map(n+i)=1: r(n+i)=r r=r-8 Next i Next n For n= 791 To 802 Step 3 For i= 0 To 2 map(n+i)=1: r(n+i)=r r=r+8 Next i Next n ;All doubles big gaps mp=0 :rr=0 For n= 805 To 860 If mp=1 OR mp=5 Then map(n)=1: r(n)=108+rr If mp=2 OR mp=6 Then map(n)=1:r(n)=r(n-1) mp=mp+1: If mp=7 Then mp=0 If rr=0 AND mp=5 Then rr=-92:Goto loop5 rr=0 .loop5 Next n ;diagonal tunnel up and down r=108 For n= 862 To 873 Step 3 For i= 0 To 2 map(n+i)=1: r(n+i)=r r=r-8 Next i Next n For n= 874 To 885 Step 3 For i= 0 To 2 map(n+i)=1: r(n+i)=r r=r+8 Next i Next n mp=0 ;harder pipes For n= 886 To 950 If mp=1 Then map(n)=1: r(n)=Rnd(100)+8 mp=mp+1: If mp=2 Then mp=0 Next n ;straight tunnel middle r=50 For n= 951 To 999 Step 3 For i= 0 To 2 map(n+i)=1: r(n+i)=r Next i Next n ;platform for lemming map(1020)=2 r(1020)=50 Return .game_finished CreateDisplay 2 DisplayPalette 2,3 DisplayBitMap 2,3 Block 28,0,0 VWait (250) For n=0 To 4 DisplaySprite 0,0,0,0,n Next n Goto restart |
06 April 2022, 08:37 | #2 |
Registered User
Join Date: Nov 2019
Location: Celle / Germany
Posts: 145
|
I guess you are talking about BlitzBasicII as the used compiler?
What guru occurs? Did you try to run the game directly from BB2 with activated debugger? |
06 April 2022, 10:56 | #3 |
Registered User
Join Date: Jun 2009
Location: Dublin, then Glasgow
Posts: 6,374
|
Over the years I've come across a couple of commands that don't work under 1.3 but are fine under 2.0+... I can't remember now which ones are like that, but they do exist. However, I can't see anything in your code that makes me thing it's the culprit.
Running from the editor as suggested is a good idea, but make sure you run the editor under 1.3 as well so any 2.0-specific requirements trigger a failure that the debugger can hopefully catch. L: is needed on 1.3 because the RAM handler isn't built into ROM and needs to be loaded from disk. You can probably avoid the requirement if you don't reference RAM: anywhere in the startup-sequence. What was the Assign doing? Perhaps it's required by the code? When the Blitz manual talks about starting from a minimal 1.3 environment, it means the basic editor. The code is a different story, and while most of the core stuff will work on 1.3, if you include anything that needs 2.0 (e.g. GadTools), the resulting executable will naturally need 2.0 and will crash on 1.3. |
06 April 2022, 17:39 | #4 |
Registered User
Join Date: Mar 2012
Location: UK
Posts: 1,895
|
Running from compiler in 1.3 sounds like a sensible idea. Thanks both for the suggestion.
Would like to sort this as would like my Target Renegade to run on A500 if possible. |
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Looking for *working* version of EA's classic basketball game: One on One | Deckard75 | request.Old Rare Games | 3 | 06 April 2018 12:44 |
Xbox Controller Not working after it switches off within game | papermurder | support.FS-UAE | 2 | 21 February 2017 00:52 |
Game not working in Netplay - singleplay o.k. - A500+ | R-TEAM | support.FS-UAE | 2 | 25 April 2014 00:14 |
links to game updates not working | denbob1200 | project.GameBase Amiga | 6 | 14 June 2007 23:04 |
PEPSI Game - German - 100% working | andreas | request.Old Rare Games | 0 | 03 January 2005 15:50 |
|
|