252 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			252 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
_runtimePath_ "../../at67/gbas/runtime"
 | 
						|
_codeRomType_ ROMv3
 | 
						|
cls : mode 2
 | 
						|
 | 
						|
'audio fix for ROMv5a
 | 
						|
poke &h21, peek(&h21) OR 3
 | 
						|
sound off
 | 
						|
cls
 | 
						|
 | 
						|
' ------------------
 | 
						|
'   Constants
 | 
						|
' ------------------
 | 
						|
const MAXFISH = 8
 | 
						|
const TETRA = 0
 | 
						|
const RASBORA = 1
 | 
						|
const MOLLY = 2
 | 
						|
const SWIMRIGHT = 0
 | 
						|
const SWIMLEFT = 1
 | 
						|
const SWIMUP = 0
 | 
						|
const SWIMDOWN = 1
 | 
						|
const SWIMFWD = 2
 | 
						|
const MIX1 = 0
 | 
						|
const MIX2 = 1
 | 
						|
const MIX3 = 2
 | 
						|
 | 
						|
' ------------------
 | 
						|
'   Sprites
 | 
						|
' ------------------
 | 
						|
const TETRA1 = 0
 | 
						|
load sprite, ./graphics/cardinalTetra.tga, TETRA1
 | 
						|
const TETRA2 = 1
 | 
						|
load sprite, ./graphics/cardinalTetra.tga, TETRA2, FlipX
 | 
						|
const RASBORA1 = 2
 | 
						|
load sprite, ./graphics/harlequinRasbora.tga, RASBORA1
 | 
						|
const RASBORA2 = 3
 | 
						|
load sprite, ./graphics/harlequinRasbora.tga, RASBORA2, FlipX
 | 
						|
const MOLLY1 = 4
 | 
						|
load sprite, ./graphics/molly.tga, MOLLY1
 | 
						|
const MOLLY2 = 5
 | 
						|
load sprite, ./graphics/molly.tga, MOLLY2, FlipX
 | 
						|
 | 
						|
' ------------------
 | 
						|
'   Fish Arrays
 | 
						|
' ------------------
 | 
						|
dim fishType%(MAXFISH) = TETRA, TETRA, TETRA, TETRA, TETRA, RASBORA, RASBORA, MOLLY
 | 
						|
dim fishSprite%(MAXFISH)
 | 
						|
dim fishX%(MAXFISH)
 | 
						|
dim fishY%(MAXFISH)
 | 
						|
dim fishXmax%(MAXFISH)
 | 
						|
dim fishXmin%(MAXFISH)
 | 
						|
dim fishYmax%(MAXFISH)
 | 
						|
dim fishYmin%(MAXFISH)
 | 
						|
dim fishThink1%(MAXFISH)
 | 
						|
dim fishThink2%(MAXFISH)
 | 
						|
dim fishTimer%(MAXFISH)
 | 
						|
 | 
						|
' ------------------
 | 
						|
'   Tank Vars
 | 
						|
' ------------------
 | 
						|
dim gravelMix1%(7) = 0, 6, 22, 10, 47, 42, 47
 | 
						|
dim gravelMix2%(7) = 0, 6, 22, 10, 47, 42, 3
 | 
						|
dim gravelMix3%(7) = 0, 6, 22, 10, 47, 49, 33
 | 
						|
dim tankGravel%(7)
 | 
						|
gravelType = MIX1
 | 
						|
 | 
						|
' ------------------
 | 
						|
'   Other Vars
 | 
						|
' ------------------
 | 
						|
inputDevice = 255
 | 
						|
 | 
						|
' ------------------
 | 
						|
'   Game Setup
 | 
						|
' ------------------
 | 
						|
gosub drawTank
 | 
						|
gosub drawGravel
 | 
						|
gosub initFish
 | 
						|
 | 
						|
' ------------------
 | 
						|
'   Main Loop
 | 
						|
' ------------------
 | 
						|
loop:
 | 
						|
    gosub updateFish
 | 
						|
    gosub drawFish
 | 
						|
    gosub checkInput
 | 
						|
    goto &loop
 | 
						|
 | 
						|
' ------------------
 | 
						|
'   Fish
 | 
						|
' ------------------
 | 
						|
updateFish:
 | 
						|
    for i = 0 to (MAXFISH -1)
 | 
						|
        fishTimer(i) = fishTimer(i) + 1
 | 
						|
 | 
						|
        if fishTimer(i) > 100
 | 
						|
            fishTimer(i) = 0
 | 
						|
            fishRandom = rnd(100)
 | 
						|
            if fishRandom < 10
 | 
						|
                fishThink2(i) = SWIMDOWN
 | 
						|
            elseif fishRandom < 20
 | 
						|
                fishThink2(i) = SWIMUP
 | 
						|
            else
 | 
						|
                fishThink2(i) = SWIMFWD
 | 
						|
            endif
 | 
						|
        endif
 | 
						|
 | 
						|
        if fishThink1(i) &= SWIMRIGHT
 | 
						|
            if fishX(i) > fishXmax(i)
 | 
						|
                fishSprite(i) = fishSprite(i) + 1
 | 
						|
                fishThink1(i) = SWIMLEFT
 | 
						|
            else
 | 
						|
                fishX(i) = fishX(i) + 1
 | 
						|
            endif
 | 
						|
        elseif fishThink1(i) &= SWIMLEFT
 | 
						|
            if fishX(i) < fishXmin(i)
 | 
						|
                fishSprite(i) = fishSprite(i) - 1
 | 
						|
                fishThink1(i) = SWIMRIGHT
 | 
						|
            else
 | 
						|
                fishX(i) = fishX(i) - 1
 | 
						|
            endif
 | 
						|
        endif
 | 
						|
 | 
						|
        if fishThink2(i) &= SWIMUP
 | 
						|
            if fishY(i) < fishYmin(i)
 | 
						|
                fishThink2(i) = SWIMDOWN
 | 
						|
            else
 | 
						|
                fishY(i) = fishY(i) - 1
 | 
						|
            endif
 | 
						|
        elseif fishThink2(i) &= SWIMDOWN
 | 
						|
            if fishY(i) > fishYmax(i)
 | 
						|
                fishThink2(i) = SWIMUP
 | 
						|
            else
 | 
						|
                fishY(i) = fishY(i) + 1
 | 
						|
            endif
 | 
						|
        endif
 | 
						|
    next i
 | 
						|
 | 
						|
    wait 2
 | 
						|
return
 | 
						|
 | 
						|
drawFish:
 | 
						|
    for i = 0 to (MAXFISH -1)
 | 
						|
        if fishThink1(i) &= SWIMRIGHT
 | 
						|
            sprite noFlip, fishSprite(i), fishX(i), fishY(i)
 | 
						|
        else
 | 
						|
            sprite FlipX, fishSprite(i), fishX(i), fishY(i)
 | 
						|
        endif
 | 
						|
    next i
 | 
						|
return
 | 
						|
 | 
						|
randomFish:
 | 
						|
    for i = 0 to (MAXFISH -1)
 | 
						|
        fishType(i) = rnd(3)
 | 
						|
    next i
 | 
						|
return
 | 
						|
 | 
						|
' ------------------
 | 
						|
'   Tank
 | 
						|
' ------------------
 | 
						|
setGravelMix:
 | 
						|
    for i = 0 to 7
 | 
						|
        if gravelType &= MIX1
 | 
						|
            tankGravel(i) = gravelMix1(i)
 | 
						|
        elseif gravelType &= MIX2
 | 
						|
            tankGravel(i) = gravelMix2(i)
 | 
						|
        elseif gravelType &= MIX3
 | 
						|
            tankGravel(i) = gravelMix3(i)
 | 
						|
        endif
 | 
						|
    next i
 | 
						|
return
 | 
						|
 | 
						|
drawGravel:
 | 
						|
    gosub setGravelMix
 | 
						|
 | 
						|
    for x = 0 to 159
 | 
						|
        for y = 110 to 119 
 | 
						|
            pset x, y, tankGravel(rnd(0) AND 7)
 | 
						|
        next y
 | 
						|
    next x
 | 
						|
return
 | 
						|
 | 
						|
drawTank:
 | 
						|
    set BG_COLOUR, 32
 | 
						|
    set FG_COLOUR, 32
 | 
						|
    rectf 0, 0, 159, 109
 | 
						|
return
 | 
						|
 | 
						|
' ------------------
 | 
						|
'   Input
 | 
						|
' ------------------
 | 
						|
checkInput:
 | 
						|
    inputDevice = get("BUTTON_STATE")
 | 
						|
 | 
						|
    if inputDevice = 127
 | 
						|
        gosub drawTank
 | 
						|
        gosub randomFish
 | 
						|
        gosub initFish
 | 
						|
    elseif inputDevice = 191
 | 
						|
        gravelType = gravelType + 1
 | 
						|
        if gravelType > 2
 | 
						|
            gravelType = 0
 | 
						|
        endif
 | 
						|
        gosub drawGravel
 | 
						|
    endif
 | 
						|
return
 | 
						|
 | 
						|
' ------------------
 | 
						|
'   Sound FX
 | 
						|
' ------------------
 | 
						|
 | 
						|
 | 
						|
' ------------------
 | 
						|
'   Init
 | 
						|
' ------------------
 | 
						|
initFish:
 | 
						|
    for i = 0 to (MAXFISH -1)
 | 
						|
        fishTimer(i) = rnd(100)
 | 
						|
 | 
						|
        if fishType(i) &= TETRA
 | 
						|
            fishXmax(i) = 140
 | 
						|
            fishXmin(i) = 3
 | 
						|
            fishYmax(i) = 95
 | 
						|
            fishYmin(i) = 5
 | 
						|
            fishX(i) = rnd(135)
 | 
						|
            fishY(i) = rnd(90)
 | 
						|
            fishThink1(i) = rnd(2)
 | 
						|
            fishThink2(i) = SWIMFWD
 | 
						|
            fishSprite(i) = TETRA1 + fishThink1(i)
 | 
						|
        elseif fishType(i) &= RASBORA
 | 
						|
            fishXmax(i) = 135
 | 
						|
            fishXmin(i) = 3
 | 
						|
            fishYmax(i) = 95
 | 
						|
            fishYmin(i) = 5
 | 
						|
            fishX(i) = rnd(130)
 | 
						|
            fishY(i) = rnd(90)
 | 
						|
            fishThink1(i) = rnd(2)
 | 
						|
            fishThink2(i) = SWIMFWD
 | 
						|
            fishSprite(i) = RASBORA1 + fishThink1(i)
 | 
						|
        elseif fishType(i) &= MOLLY
 | 
						|
            fishXmax(i) = 135
 | 
						|
            fishXmin(i) = 3
 | 
						|
            fishYmax(i) = 95
 | 
						|
            fishYmin(i) = 5
 | 
						|
            fishX(i) = rnd(130)
 | 
						|
            fishY(i) = rnd(90)
 | 
						|
            fishThink1(i) = rnd(2)
 | 
						|
            fishThink2(i) = SWIMFWD
 | 
						|
            fishSprite(i) = MOLLY1 + fishThink1(i)
 | 
						|
        endif
 | 
						|
    next i
 | 
						|
return
 | 
						|
 |