English Amiga Board


Go Back   English Amiga Board > Coders > Coders. Language > Coders. Blitz Basic

 
 
Thread Tools
Old 06 April 2022, 00:23   #1
Havie
Registered User
 
Havie's Avatar
 
Join Date: Mar 2012
Location: UK
Posts: 1,894
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
Havie is offline  
Old 06 April 2022, 08:37   #2
Honitos
Registered User
 
Honitos's Avatar
 
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?
Honitos is offline  
Old 06 April 2022, 10:56   #3
Daedalus
Registered User
 
Daedalus's Avatar
 
Join Date: Jun 2009
Location: Dublin, then Glasgow
Posts: 6,343
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.
Daedalus is offline  
Old 06 April 2022, 17:39   #4
Havie
Registered User
 
Havie's Avatar
 
Join Date: Mar 2012
Location: UK
Posts: 1,894
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.
Havie is offline  
 


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

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +2. The time now is 23:18.

Top

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.
Page generated in 0.09400 seconds with 13 queries