'================
'WRITTEN IN STONE v1.2 for smart BASIC
'================
'
'A Word puzzle game by Dav, June 20th, 2015
'Originally coded in QB64 - Ported to smart BASIC.
'This game should run on iPad,iPad Mini & iPad Air.
'
'THIS GAME REQUIRES THE 'winstone-data' FOLDER
'AND ITS FILES TO BE IN THE CURRENT DIRECTORY.
'
'NOTE: This game was made for a PC screen, so the
'graphics are in a 1024x768,300 dpi resolution.
'The playing board was rather small for the iPad,
'and hard to select letters quickly. Therefore I
'Changed the board grid from 35x35 to 55x55 and
'scaled its images to fit to those demensions.
'That is why the scale values are all different.
'
'FIXED IN v1.2:  Stopped roll sfx when animation
'                done rolling in & out of the help
'                and config screens. Also reset 
'                music pointer when starting sfx
'                again. Crumble animation was too
'                fast on faster ipads. Fixed that.
'                Also stopped roll sfx when going
'                into credits screen. Fixed quote
'                #46 which was missing a word.
'                Cleaned up code a bit....
'
'FIXED IN v1.1:  Enlarged letters.  Changed timer
'                routine to only update every new
'                second and not constantly. The
'                touch should be more responsive.
'                Replaced half of the quotes to
'                fit the new fixed playing board.
'                Fixed some screen showing errors.'
'==================================================
'Visit my BASIC site: http://www.qbasicnews.com/dav
'==================================================

'_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|

'This game is only for the iPad.

if capstr$(device_type$()) <> "IPAD" then
   print "Sorry, this game is only for iPad."
   end
end if

'check for files first. Halt game if missing files.

gosub checkfiles

'_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|

' INITIALIZE...

option base 1         'indexes start at 1, not 0
set toolbar off       'hide toolbar, use fullscreen
set orientation 2     'go to side view

graphics              'go into graphics mode
graphics clear 0,0,0  'clear screen to black

refresh off           'turn off screen writes now
                      'while we load some things

'_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|

' SOME VARIABLES TO USE...

dpi=4.16667          'scale for 300dpi images

'failsafe flags
musicflag = 1        'flag for music on/off
sfxflag = 1          'flag for sfx on/off
timerflag = 1        'flag for timer on/off

maxquote = 50        'max# of quotes (dont change)

unsolved = 0         'How many quotes are solved

'_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|

gosub loadconfig     'Load config file (settings)

'_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|

'load & start game music first, if musicflag on

notes load "winstone-data/sfx/sfx_music.mid"
if musicflag=1 then notes play

'_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|

' LOAD OFTEN USED SOUND FILES (SFX)

music "dropdown" load "winstone-data/sfx/sfx_dropdown.mp3"
music "boom" load "winstone-data/sfx/sfx_boom.mp3"
music "pop" load "winstone-data/sfx/sfx_pop1.mp3"
music "click" load "winstone-data/sfx/sfx_click.mp3"
music "click2" load "winstone-data/sfx/sfx_click2.mp3"
music "click5" load "winstone-data/sfx/sfx_click5.mp3"
music "roll" load "winstone-data/sfx/sfx_roll.mp3"
music "crumble" load "winstone-data/sfx/sfx_crumble.mp3"
music "slideup" load "winstone-data/sfx/sfx_slideup.mp3"
music "clap" load "winstone-data/sfx/sfx_clap.mp3"
music "rumble" load "winstone-data/sfx/sfx_rumble.mp3"
music "rumble2" load "winstone-data/sfx/sfx_rumble2.mp3"
music "select" load "winstone-data/sfx/sfx_select.mp3"

'_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|

'LOAD SPRITES (images that will move)

sprite "title" load "winstone-data/img/paper-title.jpg" 
sprite "title" resize 1024,768
sprite "help" load "winstone-data/img/helpscreen.jpg"
sprite "help" resize 1024,768
sprite "config" load "winstone-data/img/configscreen2.jpg"
sprite "config" resize 1024,768
sprite "titleleft" load "winstone-data/img/paper-title-left.jpg"
sprite "titleleft" resize 512,768
sprite "titleright" load "winstone-data/img/paper-title-right.jpg"
sprite "titleright" resize 512,768
sprite "board" load "winstone-data/img/board6.jpg"
sprite "board" resize 1024,768
sprite "timeup" load "winstone-data/img/paper-timeup.jpg"
sprite "timeup" resize 1024,768

'_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|

'LOAD SCREENS (often used image files)

title$ ="winstone-data/img/paper-title.jpg"
menu$ ="winstone-data/img/menu_top2.jpg"
configscreen$="winstone-data/img/configscreen2.jpg"
helpscreen$="winstone-data/img/helpscreen.jpg"
selectscreen$="winstone-data/img/select.jpg"
board$="winstone-data/img/board6.jpg"
timegrn$="winstone-data/img/time_grn2.jpg"
timered$="winstone-data/img/time_red2.jpg"
timeyel$="winstone-data/img/time_yel2.jpg"
timeup$ ="winstone-data/img/paper-timeup.jpg"
'__________________________________________________

pause 1   'allow user time to turn ipad...

'__________________________________________________

'==================================================
'                 LOAD TITLE SCREEN
'==================================================

refresh on  'now turn on screen writes
call droptitle("title", sfxflag)  'show title
pause 2   'a pause for the cause

'========
titlemenu:
'========

refresh off
draw image title$ at 0,0 scale dpi
sprite "title" hide
refresh on

if sfxflag=1 then music "pop" play

draw image menu$ at 238,152 scale dpi

call DrawButton("config.jpg", 565, 229,dpi)
call DrawButton("help.jpg", 565, 177, dpi)
call DrawButton("startbtn.jpg", 565, 335, dpi)
call DrawButton("quitbtn.jpg", 565, 283, dpi)

'=== wait for a click

do
   gosub checkmusic

   '=== Catch mouse
   mx= touch_x(0)
   my= touch_y(0)

   '=== if start button clicked
   IF mx > 565 AND mx < 721 AND my > 335 AND my < 375 THEN
      call ClickButton("startbtn.jpg", 565, 335,dpi,sfxflag)
      draw image title$ at 0,0 scale dpi
      pause .25
      refresh off
      graphics clear 0,0,0
      sprite "title" at 0,0
      sprite "title" show
      refresh on
      'slide up title screen
      for y = 0 to -767 step -20
         sprite "title" at 0 , y
         pause .01
      next y
      break
   END IF

   ' === If quit button clicked
   IF mx > 565 AND mx < 721 AND my > 283 AND my < 323 THEN
      call ClickButton("quitbtn.jpg", 565, 283,dpi,sfxflag)
      GOTO Quit
   END IF

   '=== if help button clicked
   IF mx > 565 AND mx < 721 AND my > 177 AND my < 217 THEN
      ClickButton("help.jpg", 565, 177,dpi,sfxflag)
      if sfxflag= 1 then music "pop" play
      draw image title$ at 0,0 scale dpi
      pause .25
      gosub helpscreen
      pause .25
      GOTO titlemenu
   END IF

   '=== if config button clicked
   IF mx > 565 AND mx < 721 AND my > 229 AND my < 269 THEN
      ClickButton("config.jpg", 565, 229,dpi,sfxflag)
      if sfxflag= 1 then music "pop" play
      draw image title$ at 0,0 scale dpi
      pause .25
      gosub configscreen
      pause .25
      GOTO titlemenu
   END IF
until 0


'==================================================
'                  START THE GAME
'==================================================

quote = 1 'just a safety...

RANDOMIZE

gosub selectquote   'user selects quote #
gosub getquote      'gets quote data

'=======
newboard:
'=======

gosub scrolldownboard
gosub drawrows


'==================================================
'                  MAIN GAME LOOP
'==================================================

'=======
mainloop:
'=======

TIME RESET             'reset timer
starttime = TIME()

poppy = 0 'flag popup messages shown
rumbleon = 0 'flag for if rumble sound is happening

'===quote info here...
tx$ = "Quote:" & quote & " (" &  trim$(str$(unsolved)) & " left)"
draw color 100/255,100/255,100/255
draw text tx$ at 765,212

DO
    gosub checkmusic
    'get a screen touch
    do 
       get touch 0 as mx,my
       gosub updatetimer
       gosub checkmusic
    until mx > 0

    '=== break up screen in 55x55 grid
    col = int(mx / 55) '-1 '<<<<-
    row = int(my / 55) '-1 '<<<<-
    

        '=== clicked quote button here...
        IF mx > 392 AND mx < 582 AND my > 270 AND my < 320 THEN

            '=== turn off rumble if it was on
            IF rumbleon = 1 THEN
                IF sfxflag = 1 THEN
                    IF music_playing("rumble") = 1 THEN music "rumble" stop
                END IF
            END IF

            call ClickButton("quote.jpg", 392, 270, 5.1, sfxflag)

            '===== SCROOL UP SCREEN HERE
            'ScrollScreenUp 0, 60 'scroll up current screen
            gosub scrollupscreen
            gosub selectquote
            gosub getquote

            GOTO newboard

        END IF

        '==== Clicked HINT button
        IF mx > 610 AND mx < 800 AND my > 270 AND my < 320 THEN
            call ClickButton("hint.jpg", 610,270, 5.1,sfxflag)
            'Find first hint letter here, and select it for user.
            'hint letter is first letter in row that doesn't line up with origrow
            'Look in 1st row first
            found = 0
            FOR tt = 1 TO LEN(row1$) 'check row1 data
                H1$ = capstr$(MID$(row1$, tt, 1)) 'get letter in row1
                H2$ = capstr$(MID$(OrigRow1$, tt, 1)) 'compare with original spot
                'If row1$ part needs moved, then mark this
                IF H1$ <> H2$ THEN
                    hintcol = tt
                    hintrow = 1
                    found = 1
                    break
                END IF
            NEXT tt
            IF found = 0 THEN
                FOR tt = 1 TO LEN(row2$) 'check row1 data
                    H1$ = capstr$(MID$(row2$, tt, 1)) 'get letter in row1
                    H2$ = capstr$(MID$(OrigRow2$, tt, 1)) 'compare with original spot
                    'If row2$ part needs moved, then mark this
                    IF H1$ <> H2$ THEN
                        hintcol = tt
                        hintrow = 2
                        found = 1
                        break
                    END IF
                NEXT tt
            END IF
            IF found = 0 THEN
                FOR tt = 1 TO LEN(row3$) 'check row1 data
                    H1$ = capstr$(MID$(row3$, tt, 1)) 'get letter in row1
                    H2$ = capstr$(MID$(OrigRow3$, tt, 1)) 'compare with original spot
                    'If row3$ part needs moved, then mark this
                    IF H1$ <> H2$ THEN
                        hintcol = tt
                        hintrow = 3
                        found = 1
                        break
                    END IF
                NEXT tt

            END IF

            IF found = 1 THEN
                'flash hint letter
                FOR fl = 1 TO 3
                    dx = (hintcol * 55)-35
                    dy = (hintrow * 55)-30
                    di$ =  "winstone-data/fnt2/_" & H1$ & ".jpg"
                    draw image di$ at dx, dy scale 6.1
                    pause .15
                    di$ =  "winstone-data/fnt2/" & H1$ & ".jpg"
                    draw image di$ at dx, dy scale 6.1
                    pause .15
                NEXT fl
            END IF
        END IF


        '=== clicked title menu button here...
        IF mx > 829 AND mx < 1019 AND my > 270 AND my < 320 THEN

            '=== turn off rumble if it was on
            IF rumbleon = 1 THEN
                IF sfxflag = 1 THEN
                    IF music_playing("rumble") THEN music "rumble" stop
                END IF
            END IF

            ClickButton("title.jpg", 829, 270,5.1, sfxflag)


            '===================  scroll current up here
            'ScrollScreenUp 0, 75 'scroll up current screen

             gosub scrollupscreen

            'DO screen curtain slide in

            IF sfxflag = 1 THEN music "roll" play

            'ScreenCurtain "CLOSE", left&, right&, 180
            gosub screencurtain

            'draw image title$ at 0,0 scale dpi
            pause .25

            GOTO titlemenu

        END IF

        '===If inbound col & row fields clicked
        IF col <= 23 AND col > 0 AND row <= 3 AND row > 0 THEN

            IF selected = 0 THEN
                '=== If no letter selected yet, then...
                '=== Get 1st selected letter on current row
                gosub selectletter
                
            ELSE
                '=== must already but one selected, so...
                '=== get another selected letter (only on same Col)
                '=== then do the swap in rows$, then redraw new placements.

                '=== if same column (but not same row)...ok
                IF col = selectedcol AND row <> selectedrow THEN


                    '=== get 2nd selected letter
                    if row = 1 then sel2$ = MID$(row1$, col, 1)
                    if row = 2 then sel2$ = MID$(row2$, col, 1)
                    if row = 3 then sel2$ = MID$(row3$, col, 1)

                   

                    '=== only select if not a space or empty place
                    IF sel2$ <> " " AND sel2$ <> "" THEN

                        '=== load 2st selected letter (highlighted one)
                        
                        di$ = "winstone-data/fnt2/_" & sel2$ & ".jpg"
                        dx = (col * 55)-35
                        dy = (row * 55)-30
                        draw image di$ at dx, dy scale 6.1
                        
                        IF sfxflag = 1 THEN music "click2" play
                        
                        '=== SWAP LETTER DISPLAY HERE
                        FOR o = 1 TO 2

                            'load 2nd letter normal
                             di$ = "winstone-data/fnt2/" & sel2$ & ".jpg"
                             dx = (col * 55)-35
                             dy = (row * 55)-30
                             draw image di$ at dx, dy scale 6.1

                            'load first letter normal
                             di$ = "winstone-data/fnt2/" & sel$ & ".jpg"
                             dx = (col * 55)-35
                             dy = (selectedrow * 55)-30
                             draw image di$ at dx, dy scale 6.1

                            pause .05

                            'load 2nd letter highlighted
                             di$ = "winstone-data/fnt2/_" & sel2$ & ".jpg"
                             dx = (col * 55)-35
                             dy = (row * 55)-30
                             draw image di$ at dx, dy scale 6.1

                            'load first letter highlighted
                             di$ = "winstone-data/fnt2/_" & sel$ & ".jpg"
                             dx = (col * 55)-35
                             dy = (selectedrow * 55)-30
                             draw image di$ at dx, dy scale 6.1

                            '_DELAY .02

                        NEXT o

                        pause .2

                        '=== SWAP LETTERS INTERNALLY HERE
                        'replace current row letter with 1st sel$ letter

                            if row = 1 then row1$ = changebyte$(row1$, col, sel$)
                            if row = 2 then row2$ = changebyte$(row2$, col, sel$)
                            if row = 3 then row3$ = changebyte$(row3$, col, sel$)
                        
                        'replace 1st select row with curr row letter
                            if selectedrow = 1 then row1$ = changebyte$(row1$, col, sel2$)
                            if selectedrow = 2 then row2$ = changebyte$(row2$, col, sel2$)
                            if selectedrow = 3 then row3$ = changebyte$(row3$, col, sel2$)


                        '=== DONE Redraw rows'''
                        selected = 0
                        gosub drawrows

                    END IF
                ELSE
                    '=== must be a new column, so
                    '=== un select letters, select this new one...
                    gosub drawrows '=== fresh look
                    gosub selectletter
                END IF


            END IF

           

        END IF

        '==== If rows match original, YOU GOT IT!!!!
        IF row1$ = OrigRow1$ AND row2$ = OrigRow2$ AND row3$ = OrigRow3$ THEN

            '=== turn off rumble if it was on
            IF rumbleon = 1 THEN
                IF sfxflag = 1 THEN
                    IF music_playing("rumble") THEN music "rumble" stop
                END IF
            END IF

            IF sfxflag = 1 THEN music "clap" play

            '=== Popup a good message
            rndpop$ = trim$(STR$(RND(16) + 1)) 'get 1 of 16
            pi$ = "winstone-data/img/pop-z-" & rndpop$ & ".jpg"
            draw image pi$ at 0,450 scale dpi

            '==== flash letters here...
            gosub flashrows
            pause 1


            '=== Mark quote # as solved in config$ data
            config$ = changebyte$(config$, quote, "1")
            gosub updateconfig

            IF unsolved > 0 THEN
                unsolved = unsolved - 1 'decrease one from unsolved count
            END IF

            'scroll screen up here
            'ScrollScreenUp 0, 60
             gosub scrollupscreen

            '=== IF ALL QUOTES SOLVED - WIN - SHOW CREDITS
            IF unsolved = 0 THEN
                if musicflag=1 then notes stop
                gosub credits
                if musicflag=1 then notes play
                sprite "title" at 0,0
                GOTO quit
            END IF

            '=== if already solved next quote, go to select quote
            quote = quote + 1
            IF MID$(config$, quote, 1) = "1" THEN gosub selectquote


            '=== if at last quote, then go to select menu
            IF quote > maxquote THEN
                gosub selectquote
            END IF

            '==== next quote , scroll down board again..

            'scrool down board here again
            
            gosub scrolldownboard

            gosub getquote
            gosub drawrows

            GOTO mainloop

        END IF

        'gosub updatetimer 'not needed i think...


until 0


'_________________________________________________

quit:

'_________________________________________________

if sfxflag= 1 then music "pop" play

refresh off
graphics clear 0,0,0
sprite "title" at 0,0
sprite "title" show
refresh on

pause .5

if sfxflag =1 then music "crumble" play

' shake screen
for r =1 to 2
FOR g = 6 TO 1 STEP -1
    FOR S = 1 TO 6
        refresh off
        sprite "title" at RND(S * g), RND(S * g) scale 1+rnd(.07)
        refresh on
        pause .015
    NEXT S
NEXT g
next r

sprite "title" at 0,0'make sure it's centered

if musicflag=1 then
   notes stop
end if

if sfxflag =1 then 
   music "crumble" stop
   music "slideup" play
end if


txx$="This game was made on an iPad using smart BASIC"
draw color .5,.5,.5
draw text txx$ at 240,350

'slide up title screen
for y = 0 to -767 step -20
  sprite "title" at 0 , y
  pause .01
next y

pause .25

set orientation top
set toolbar on
text
end


updatetimer:

    '=== update timer stuff here...
    L = int(TIME() - starttime) + 1
   
    'only draw every new second here.....
   
    if timey<>L then
    'New way to draw timer because hint delay made it skip a draw sometimes
    FOR V = 0 TO L
        IF V > 0 AND V <= 34 THEN 
           vx = 10 + (V * 12)
           draw image timegrn$ at vx, 208 scale 5.1
        end if
        IF V > 34 AND V <= 49 THEN
           vx = 10 + (V * 12)
           draw image timeyel$ at vx, 208 scale 5.1

        end if
        IF V > 49 THEN 
           vx = 10 + (V * 12)
           draw image timered$ at vx, 208 scale 5.1
        end if
    NEXT V
    timey=L
    end if
    

    '============ GET A POPUP here ==========================
    rrr= rnd(6)+1
    rndpop$ = trim$(STR$(rrr))
    '========================================================
    '=== open pop....
    IF L = 2 AND poppy <> L THEN '<<<<<<<< poppy
        popi$ = "winstone-data/img/pop-a-" & rndpop$ & ".jpg"
        draw image popi$ at 0,450 scale dpi
        poppy = L '<<<<<<<< poppy
    END IF
    IF L = 10 AND poppy <> L THEN
        popi$ = "winstone-data/img/pop-b-" & rndpop$ & ".jpg"
        draw image popi$ at 0,450 scale dpi
        poppy = L '<<<<<<<< poppy
    END IF
    IF L = 18 AND poppy <> L THEN
        popi$ = "winstone-data/img/pop-c-" & rndpop$ & ".jpg"
        draw image popi$ at 0,450 scale dpi
        poppy = L '<<<<<<<< poppy
    END IF
    IF L = 26 AND poppy <> L THEN
        popi$ = "winstone-data/img/pop-d-" & rndpop$ & ".jpg"
        draw image popi$ at 0,450 scale dpi
        poppy = L '<<<<<<<< poppy
    END IF
    '==== yellow....
    IF L = 34 AND poppy <> L THEN
        popi$ = "winstone-data/img/pop-e-" & rndpop$ & ".jpg"
        draw image popi$ at 0,450 scale dpi
        poppy = L '<<<<<<<< poppy
    END IF
    IF L = 41 AND poppy <> L THEN
        popi$ = "winstone-data/img/pop-f-" & rndpop$ & ".jpg"
        draw image popi$ at 0,450 scale dpi
        poppy = L '<<<<<<<< poppy
    END IF
    '=== red.....
    IF L = 49 AND poppy <> L THEN
        popi$ = "winstone-data/img/pop-g-" & rndpop$ & ".jpg"
        draw image popi$ at 0,450 scale dpi
        poppy = L '<<<<<<<< poppy
    END IF
    IF L = 54 AND poppy <> L THEN
        popi$ = "winstone-data/img/pop-h-" & rndpop$ & ".jpg"
        draw image popi$ at 0,450 scale dpi
        poppy = L '<<<<<<<< poppy
    END IF

    '=== Start rumble is time near end (dooom coming...)
    IF L > 54 AND rumbleon = 0 THEN '<<<< was 114
         IF sfxflag = 1 THEN music "rumble2" play
        rumbleon = 1 'tag as rumble is playing
    END IF


    '========================================================

    IF L => 60 THEN '<<<< 60 seconds and timer is up

        '=========== Play drop down sound
        IF sfxflag = 1 THEN 
            music "dropdown" play
        endif

        '=== drop down screen
        call droptitle("timeup", sfxflag)
        refresh off
        draw image "winstone-data/img/paper-timeup.jpg" at 0,0 scale dpi
        sprite "timeup" at -2000,-2000
        refresh on
        if sfxflag = 1 then
           music "rumble2" stop
           'music "rumble" stop   '?
        end if

        '=== shake (BOOM)

        'IF sfxflag = 1 THEN music "boom" play
        'ScreenShake timesup&, 5, 4, 60

        pause 1.5

        IF sfxflag = 1 THEN music "roll"  play

b$="winstone-data/vid/roll"
x =-135
do
   for t = 0 to 5 step 1
    a$ = LTRIM$(STR$(t))
    IF LEN(a$) = 2 THEN a$ = "00" & a$
    IF LEN(a$) = 1 THEN a$ = "000" & a$
    c$ = b$ & a$ & ".jpg" 
    refresh off
    draw image c$ at x,0 scale dpi
    fill color 0,0,0
    fill rect x-20,0 to x,768
    refresh on
    x=x+20
    pause .012
   next t
until x > 1024 + 135

        '=== do retry quote here, or main menu....

        gosub selectquote
        gosub getquote

        'Place board back down

        gosub scrolldownboard

        gosub drawrows

        GOTO Mainloop

    END IF

return

'=================================================
'=================================================

selectletter:

'gets a selected letter, only if no space...

'make sure col is in bounds with len of row1$
if col > len(row1$) then
  selected = 1
else

if row = 1 then sel$ = MID$(row1$, col, 1)
if row = 2 then sel$ = MID$(row2$, col, 1)
if row =3 then  sel$ = MID$(row3$, col, 1)

'=== dont select if a space or empty place
IF sel$ = " " OR sel$ = "" THEN
    selected = 0
ELSE
    IF sfxflag = 1 THEN music "select" play

    '=== load 1st selected letter (highlighted one)
    si$ = "winstone-data/fnt2/_" & sel$ & ".jpg"
    sx = (col*55)-35
    sy = (row * 55)-30
    draw image si$ at sx,sy scale 6.1
    selected = 1
    selectedrow = row
    selectedcol = col
END IF

end if

'=== select sound
'=== time for finger to get up
pause .2

return


'==============================

def DrawButton(img$, x, y, dpi)
  'draws image in winstone-data/img/
  if dpi = 0 then dpi = 1
  c$ = "winstone-data/img/"& img$
  draw image c$ at x,y scale dpi
END def

'===================================
def ClickButton(img$,x,y,dpi,snd)
if dpi=0 then dpi =1
IF snd= 1 THEN music "click" play
    c$="_"&img$
    call DrawButton(c$, x, y,dpi)
     pause .2
    call DrawButton(img$, x, y,dpi)
    pause .3
end def
'=================================

def droptitle(a$, snd)
if snd =1 then music "dropdown" play

sprite a$ at -767,0
'drop down title screen
sprite a$ show
for y = -767 to 0 step 15
  
  sprite a$ at 0 , y
  
  pause .01
next y

if snd=1 then music "boom" play

' shake screen
FOR g = 6 TO 1 STEP -1
    FOR S = 1 TO 6
        refresh off
        sprite a$ at RND(S * g), RND(S * g) scale 1+rnd(.07)
        refresh on
        pause .015
    NEXT S
NEXT g
sprite a$ at 0,0'make sure it's centered

end def

'========

def changebyte$(string$, num, repl$)
  lstr$=left$(string$, num-1)
  sl=len(string$)
  rstr$=right$(string$, sl-num)
  changebyte$ = lstr$&repl$&rstr$
end def

'=================================================
'=================================================
configscreen:
'=============

IF sfxflag = 1 THEN 
   music "roll" time 0
   music "roll" play
end if

b$="winstone-data/vid/roll"
sprite "config" at -2000,-2000
sprite "config" show
x =-135
do
   for t = 0 to 5 step 1
    a$ = LTRIM$(STR$(t))
    IF LEN(a$) = 2 THEN a$ = "00" & a$
    IF LEN(a$) = 1 THEN a$ = "000" & a$
    c$ = b$ & a$ & ".jpg" 
    refresh off
    draw image c$ at x,0 scale dpi
    if x > 1024 then
      sprite "config" at 0, rnd(3)
    else
      sprite "config" at x-1024, rnd(3)
    end if
    refresh on
    x=x+22
    pause .012
   next t
until x > 1024 + 135

'turn off roll sound if still playing
IF sfxflag = 1 THEN
   IF music_playing("roll") = 1 THEN music "roll" stop
END IF

refresh off
draw image configscreen$ at 0,0 scale dpi
sprite "config" at -2000,-2000
refresh on

draw image configscreen$ at 0,0 scale dpi
configtop:

' mark current settings
fill color 0/255,255/255,0/255 'green

IF musicflag = 1 THEN
    fill rect 451, 252 to 476, 275
ELSE
    fill rect 585, 252 to 610, 275
END IF

IF sfxflag = 1 THEN
    fill rect 451, 309 to 476, 332
ELSE
    fill rect 587, 309 to 612, 332
END IF

IF timerflag = 1 THEN
    fill rect 451, 369 to 477, 393
ELSE
    fill rect 588, 370 to 614, 394
END IF


DO

    gosub checkmusic

    'get a screen touch
    'do ' get touch 0 as mx,my ' until mx > 0

    '=== Catch mouse
    mx= touch_x(0)
    my= touch_y(0)

    '=== if back button
    IF mx > 417 AND mx < 573 AND my > 687 AND my < 727 THEN
       ClickButton("back.jpg", 417, 687,dpi,sfxflag)
       break
    END IF

  'Music ON click
   IF mx > 451 AND mx < 477 AND my > 252 AND my < 276 THEN
      musicflag = 1
      config$=changebyte$(config$,51,"1")
     
      'UPDATE CONFIG FILE HERE !!!!

      notes play
      IF sfxflag = 1 THEN music "click2" play
      fill color 0/255,255/255,0/255 'green
      fill rect 451, 252 to 476, 275
      fill color 255/255,255/255,255/255 'white
      fill rect 585, 252 to 610, 275
      pause .3
   END IF

   'Music OFF clicked
   IF mx > 585 AND mx < 610 AND my > 252 AND my < 275 THEN
      musicflag = 0
      config$=changebyte$(config$,51,"0")
      
      'UPDATE CONFIG FILE,!!!!!!

       notes stop
       IF sfxflag = 1 THEN music "click2" play
       fill color 1,1,1

       fill rect 451, 252 to 476, 275
       fill color 0,1,0
       fill rect 585, 252 to 610, 275
       pause .3
   END IF

       'SFX ON clicked
        IF mx > 451 AND mx < 477 AND my > 309 AND my < 333 THEN
            sfxflag = 1
            config$=changebyte$(config$,52,"1")
            
            'UPDATE CONFIG HERE

            music "click2" play
            fill color 0, 1, 0
            FILL RECT 451, 309 to 476, 332
            fill color 1,1,1
            FILL RECT 587, 309 to 612, 332
            pause .3
        END IF

        'SFX OFF clicked
        IF mx > 587 AND mx < 612 AND my > 309 AND my < 332 THEN
            sfxflag = 0
            config$=changebyte$(config$,52,"0")

            music "click2" play
            fill color 1,1,1
            FILL RECT 451, 309 to 476, 332
            fill color 0,1,0
            FILL RECT 587, 309 to 612, 332
            pause .3
        END IF

        'TIMER OFF CLICKED
        IF mx > 588 AND mx < 614 AND my > 370 AND my < 394 THEN
            timerflag = 1
            'MID$(config$, 53, 1) = CHR$(1) 'MARK CONFIG SPOT AS TIMER ON
            'UPDATE CONFIG HERE

            IF sfxflag = 1 THEN music "click2" play
            pause .3

            'load timer wimp notice
        draw image "winstone-data/img/timernotice.jpg" at 218, 160 scale dpi


            '=== wait for Reply...
            DO
               gosub checkmusic
            'get a screen touch
            'do 'get touch 0 as mx2,my2 'until mx2 > 0
                '=== Catch mouse
                 mx2=touch_x(0)
                 my2=touch_y(0)
              
                IF mx2 > 286 AND mx2 < 717 AND my2 > 466 AND my2 < 520 THEN
                        ClickButton("wimp.jpg", 286, 466, dpi, sfxflag)
                        break
                END IF

            until 0

            draw image configscreen$ at 0,0 scale dpi

            GOTO ConfigTop

        END IF


        '==== RESET GAME CLICKED
        IF mx > 369 AND mx < 617 AND my > 585 AND my < 639 THEN
            ClickButton("reset.jpg", 369, 585, dpi, sfxflag)

        draw image "winstone-data/img/resetnotice.jpg" at 276, 160 scale dpi

            '=== Get YES or NO
            DO
                gosub checkmusic
           'GET TOUCH HERE
               'get a screen touch
          'do ' get touch 0 as mx2,my2 'until mx2 > 0
    '=== Catch mouse
    mx2=touch_x(0)
    my2=touch_y(0)
                'YES button poll
                IF mx2 > 318 AND mx2 < 474 AND my2 > 395 AND my2 < 435 THEN
                        ClickButton("yes.jpg", 318, 395, dpi, sfxflag)

                        '===  RESET CONFIG DATA HERE (ONLY QUOTE STUFF)
                        config$=""
                        FOR cc = 1 TO 50
                          config$= config$&"0"
                        NEXT cc
                        unsolved = 50
                        if musicflag =1 then
                           config$=config$&"1"
                        else
                           config$=config$&"0"
                        end if
                        if sfxflag =1 then
                           config$=config$&"1"
                        else
                           config$=config$&"0"
                        end if
                        if timerflag =1 then
                           config$=config$&"1"
                        else
                           config$=config$&"0"
                        end if
                        BREAK
                END IF

                'NO BUTTON poll
                IF mx2 > 516 AND mx2 < 672 AND my2 > 395 AND my2 < 435 THEN

                        ClickButton("no.jpg", 516, 395,dpi,sfxflag)
                        break
                END IF


            until 0

            draw image configscreen$ at 0,0 scale dpi

            GOTO ConfigTop


        END IF

until 0

sprite "title" at -2000,-2000
sprite "title" show

IF sfxflag = 1 THEN 
   music "roll" time 0
   music "roll" play
end if

x =1024
do
   for t = 5 to 0 step -1
    a$ = LTRIM$(STR$(t))
    IF LEN(a$) = 2 THEN a$ = "00" & a$
    IF LEN(a$) = 1 THEN a$ = "000" & a$
    c$ = b$ & a$ & ".jpg" 
    refresh off
    draw image c$ at x,0 scale dpi
    if x > -135 then
      sprite "title" at x+135, rnd(3)
    else
      sprite "title" at 0, rnd(3)
    end if
    refresh on
    x=x-22
    pause .012
   next t
until x <-135

'turn off roll sound if still playing
IF sfxflag = 1 THEN
   IF music_playing("roll") = 1 THEN music "roll" stop
END IF

refresh off
draw image title$ at 0,0 scale dpi
sprite "title" at -2000,-2000
refresh on


'========
updateconfig:
'======
cfile$ = "winstone-data/winstone.dat"
file cfile$ delete
for t = 1 to 50
   cv$=mid$(config$,t,1)
   file cfile$ write cv$
next t
if musicflag =1 then
   file cfile$ write "1"
else
   file cfile$ write "0"
end if
if sfxflag =1 then
   file cfile$ write "1"
else
   file cfile$ write "0"
end if
if timerflag=1 then
   file cfile$ write "1"
else
   file cfile$ write "0"
end if


return


'==========
helpscreen:
'==========

IF sfxflag = 1 THEN 
   music "roll" time 0
   music "roll" play
end if

b$="winstone-data/vid/roll"
sprite "help" at -2000,-2000
sprite "help" show
x =-135
do
   for t = 0 to 5 step 1
    a$ = LTRIM$(STR$(t))
    IF LEN(a$) = 2 THEN a$ = "00" & a$
    IF LEN(a$) = 1 THEN a$ = "000" & a$
    c$ = b$ & a$ & ".jpg" 
    refresh off
    draw image c$ at x,0 scale dpi
    if x > 1024 then
      sprite "help" at 0, rnd(3)
    else
      sprite "help" at x-1024, rnd(3)
    end if
    refresh on
    x=x+25
    pause .012
   next t
until x > 1024 + 135

refresh off
draw image helpscreen$ at 0,0 scale dpi
sprite "help" at -2000,-2000
refresh on

'turn off roll sound if still playing
IF sfxflag = 1 THEN
   IF music_playing("roll") = 1 THEN music "roll" stop
END IF

do

    gosub checkmusic
    'get a screen touch
    'do ' get touch 0 as mx,my ' until mx > 0

    '=== Catch mouse
    mx= touch_x(0)
    my= touch_y(0) 

        '=== if back button
        IF mx > 417 AND mx < 573 AND my > 687 AND my < 727 THEN
            call ClickButton("back.jpg", 417, 687, dpi, sfxflag)
            break
        END IF
until 0

sprite "title" at -2000,-2000
sprite "title" show

IF sfxflag = 1 THEN 
   music "roll" time 0
   music "roll" play
end if

x =1024
do
   for t = 5 to 0 step -1
    a$ = LTRIM$(STR$(t))
    IF LEN(a$) = 2 THEN a$ = "00" & a$
    IF LEN(a$) = 1 THEN a$ = "000" & a$
    c$ = b$ & a$ & ".jpg" 
    refresh off
    draw image c$ at x,0 scale dpi
    if x > -135 then
      sprite "title" at x+135, rnd(3)
    else
      sprite "title" at 0, rnd(3)
    end if
    refresh on
    x=x-25
    pause .012
   next t
until x <-135
refresh off
draw image title$ at 0,0 scale dpi
sprite "title" at -2000,-2000
refresh on

'turn off roll sound if still playing
IF sfxflag = 1 THEN
   IF music_playing("roll") = 1 THEN music "roll" stop
END IF

return


'==========
selectquote:
'============================================================


'=== Play Select menu fly in vid
b$ = "winstone-data/vid/sel"
for t = 15 to 0 step -1
    a$ = LTRIM$(STR$(t))
    IF LEN(a$) = 2 THEN a$ = "00" & a$
    IF LEN(a$) = 1 THEN a$ = "000" & a$
    c$ = b$ & a$ & ".jpg" 
    draw image c$ at 0,0 
    pause .008

next t

draw image "winstone-data/img/select.jpg" at 0,0 scale dpi

solved$ = "winstone-data/img/solved.jpg"

'=== If quotes have been solved, put solved tag image ..
IF MID$(config$, 1, 1) = "1" THEN draw image solved$ at 209, 173 scale dpi
IF MID$(config$, 2, 1) = "1" THEN draw image solved$ at 284, 173 scale dpi
IF MID$(config$, 3, 1) = "1" THEN draw image solved$ at 359, 173 scale dpi
IF MID$(config$, 4, 1) = "1" THEN draw image solved$ at 434, 173 scale dpi
IF MID$(config$, 5, 1) = "1" THEN draw image solved$ at 509, 173 scale dpi
IF MID$(config$, 6, 1) = "1" THEN draw image solved$ at 584, 173 scale dpi
IF MID$(config$, 7, 1) = "1" THEN draw image solved$ at 659, 173 scale dpi
IF MID$(config$, 8, 1) = "1" THEN draw image solved$ at 734, 173 scale dpi

IF MID$(config$, 9, 1) = "1" THEN draw image solved$ at 209, 235 scale dpi
IF MID$(config$, 10, 1) = "1" THEN draw image solved$ at 284, 235 scale dpi
IF MID$(config$, 11, 1) = "1" THEN draw image solved$ at 359, 235 scale dpi
IF MID$(config$, 12, 1) = "1" THEN draw image solved$ at 434, 235 scale dpi
IF MID$(config$, 13, 1) = "1" THEN draw image solved$ at 509, 235 scale dpi
IF MID$(config$, 14, 1) = "1" THEN draw image solved$ at 584, 235 scale dpi
IF MID$(config$, 15, 1) = "1" THEN draw image solved$ at 659, 235 scale dpi
IF MID$(config$, 16, 1) = "1" THEN draw image solved$ at 734, 235 scale dpi

IF MID$(config$, 17, 1) = "1" THEN draw image solved$ at 209, 297 scale dpi
IF MID$(config$, 18, 1) = "1" THEN draw image solved$ at 284, 297 scale dpi
IF MID$(config$, 19, 1) = "1" THEN draw image solved$ at 359, 297 scale dpi
IF MID$(config$, 20, 1) = "1" THEN draw image solved$ at 434, 297 scale dpi
IF MID$(config$, 21, 1) = "1" THEN draw image solved$ at 509, 297 scale dpi
IF MID$(config$, 22, 1) = "1" THEN draw image solved$ at 584, 297 scale dpi
IF MID$(config$, 23, 1) = "1" THEN draw image solved$ at 659, 297 scale dpi
IF MID$(config$, 24, 1) = "1" THEN draw image solved$ at 734, 297 scale dpi

IF MID$(config$, 25, 1) = "1" THEN draw image solved$ at 209, 359 scale dpi
IF MID$(config$, 26, 1) = "1" THEN draw image solved$ at 284, 359 scale dpi
IF MID$(config$, 27, 1) = "1" THEN draw image solved$ at 359, 359 scale dpi
IF MID$(config$, 28, 1) = "1" THEN draw image solved$ at 434, 359 scale dpi

IF MID$(config$, 29, 1) = "1" THEN draw image  solved$ at 509, 359 scale dpi

IF MID$(config$, 30, 1) = "1" THEN draw image solved$ at 584, 359 scale dpi
IF MID$(config$, 31, 1) = "1" THEN draw image solved$ at 659, 359 scale dpi
IF MID$(config$, 32, 1) = "1" THEN draw image solved$ at 734, 359 scale dpi

IF MID$(config$, 33, 1) = "1" THEN draw image solved$ at 209, 421 scale dpi
IF MID$(config$, 34, 1) = "1" THEN draw image solved$ at 284, 421 scale dpi
IF MID$(config$, 35, 1) = "1" THEN draw image solved$ at 359, 421 scale dpi
IF MID$(config$, 36, 1) = "1" THEN draw image solved$ at 434, 421 scale dpi
IF MID$(config$, 37, 1) = "1" THEN draw image solved$ at 509, 421 scale dpi
IF MID$(config$, 38, 1) = "1" THEN draw image solved$ at 584, 421 scale dpi
IF MID$(config$, 39, 1) = "1" THEN draw image solved$ at 659, 421 scale dpi
IF MID$(config$, 40, 1) = "1" THEN draw image solved$ at 734, 421 scale dpi

IF MID$(config$, 41, 1) = "1" THEN draw image solved$ at 209, 483 scale dpi
IF MID$(config$, 42, 1) = "1" THEN draw image solved$ at 284, 483 scale dpi
IF MID$(config$, 43, 1) = "1" THEN draw image solved$ at 359, 483 scale dpi
IF MID$(config$, 44, 1) = "1" THEN draw image solved$ at 434, 483 scale dpi
IF MID$(config$, 45, 1) = "1" THEN draw image solved$ at 509, 483 scale dpi
IF MID$(config$, 46, 1) = "1" THEN draw image solved$ at 584, 483 scale dpi
IF MID$(config$, 47, 1) = "1" THEN draw image solved$ at 659, 483 scale dpi
IF MID$(config$, 48, 1) = "1" THEN draw image solved$ at 734, 483 scale dpi

IF MID$(config$, 49, 1) = "1" THEN draw image solved$ at 209, 545 scale dpi
IF MID$(config$, 50, 1) = "1" THEN draw image solved$ at 284, 545 scale dpi


'===load select menu message based on solved #
IF unsolved = 0 THEN
    draw image "winstone-data/img/select-champ.jpg" at 376, 547 scale dpi
ELSE
    draw image "winstone-data/img/select-msg.jpg" at 400, 548 scale dpi
END IF

DO

   gosub checkmusic

 'get a screen touch
    'do ' get touch 0 as mx,my 'until mx > 0

    '=== Catch mouse
    mx= touch_x(0)
    my= touch_y(0)

        '== 1
        IF mx > 209 AND mx < 277 AND my > 173 AND my < 227 THEN 
        call SelectNumber("1", 209, 173, dpi, sfxflag)
       quote = 1
end if
        '== 2
        IF mx > 284 AND mx < 353 AND my > 173 AND my < 227 THEN
            call SelectNumber("2", 284, 173, dpi, sfxflag)
        quote=2
        END IF
        '== 3
        IF mx > 359 AND mx < 428 AND my > 173 AND my < 227 THEN
            call SelectNumber("3", 359, 173, dpi, sfxflag)
        quote=3
        END If
        '== 4
        IF mx > 434 AND mx < 503 AND my > 173 AND my < 227 THEN
            call SelectNumber("4", 434, 173, dpi, sfxflag)
         quote=4
        END IF
        '== 5
        IF mx > 509 AND mx < 578 AND my > 173 AND my < 227 THEN
            call SelectNumber("5", 509, 173, dpi, sfxflag)
         quote=5
        END IF
        '== 6
        IF mx > 584 AND mx < 652 AND my > 173 AND my < 227 THEN
            call SelectNumber("6", 584, 173, dpi, sfxflag)
         quote=6
        END IF
        '== 7
        IF mx > 659 AND mx < 727 AND my > 173 AND my < 227 THEN
            call SelectNumber("7", 659, 173, dpi, sfxflag)
          quote=7
        END IF
        '== 8
        IF mx > 734 AND mx < 803 AND my > 173 AND my < 227 THEN
            call SelectNumber("8", 735, 173, dpi, sfxflag)
          quote=8
        END IF
        '== 9
        IF mx > 209 AND mx < 278 AND my > 235 AND my < 289 THEN
            call SelectNumber("9", 209, 235, dpi, sfxflag)
         quote=9
        END IF
        '== 10
        IF mx > 284 AND mx < 353 AND my > 235 AND my < 289 THEN
            call SelectNumber("10", 284, 235, dpi, sfxflag)
         quote=10
        END IF
        '== 11
        IF mx > 359 AND mx < 428 AND my > 235 AND my < 289 THEN
            call SelectNumber("11", 359, 235, dpi, sfxflag)
        quote=11
        END IF
        '== 12
        IF mx > 434 AND mx < 503 AND my > 235 AND my < 289 THEN
            call SelectNumber("12", 434, 235, dpi, sfxflag)
          quote=12
        END IF
        '== 13
        IF mx > 509 AND mx < 578 AND my > 235 AND my < 289 THEN
            call SelectNumber("13", 509, 235, dpi, sfxflag)
        quote=13
        END IF
        '=== 14
        IF mx > 584 AND mx < 653 AND my > 235 AND my < 289 THEN
            call SelectNumber("14", 584, 235, dpi, sfxflag)
         quote=14
        END IF
        '=== 15
        IF mx > 659 AND mx < 728 AND my > 235 AND my < 289 THEN
            call SelectNumber("15", 659, 235, dpi, sfxflag)
         quote=15
        END IF
        '=== 16
        IF mx > 734 AND mx < 803 AND my > 235 AND my < 289 THEN
            call SelectNumber("16", 734, 235, dpi, sfxflag)
        quote=16
        END IF
        '=== 17
        IF mx > 209 AND mx < 278 AND my > 297 AND my < 351 THEN
            call SelectNumber("17", 209, 297, dpi, sfxflag)
        quote=17
        END IF
        '=== 18
        IF mx > 284 AND mx < 353 AND my > 297 AND my < 351 THEN
            call SelectNumber("18", 284, 297, dpi, sfxflag)
         quote= 18
        END IF
        '=== 19
        IF mx > 359 AND mx < 428 AND my > 297 AND my < 351 THEN
            call SelectNumber("19", 359, 297, dpi, sfxflag)
          quote=19
        END IF
        '=== 20
        IF mx > 434 AND mx < 503 AND my > 297 AND my < 351 THEN
            call SelectNumber("20", 434, 297, dpi, sfxflag)
        quote=20
        END IF
        '=== 21
        IF mx > 509 AND mx < 578 AND my > 297 AND my < 351 THEN
            call SelectNumber("21", 509, 297, dpi, sfxflag)
         quote=21
        END IF
        '=== 22
        IF mx > 584 AND mx < 653 AND my > 297 AND my < 351 THEN
            call SelectNumber("22", 584, 297, dpi, sfxflag)
        quote=22
        END IF
        '=== 23
        IF mx > 659 AND mx < 728 AND my > 297 AND my < 351 THEN
            call SelectNumber("23", 659, 297, dpi, sfxflag)
        quote=23
        END IF
        '=== 24
        IF mx > 734 AND mx < 803 AND my > 297 AND my < 351 THEN
            call SelectNumber("24", 734, 297, dpi, sfxflag)
        quote=24
        END IF
        '=== 25
        IF mx > 209 AND mx < 278 AND my > 359 AND my < 413 THEN
            call SelectNumber("25", 209, 359, dpi, sfxflag)
        quote=25
        END IF
        '=== 26
        IF mx > 284 AND mx < 353 AND my > 359 AND my < 413 THEN
            call SelectNumber("26", 284, 359, dpi, sfxflag)
        quote=26
        END IF
        '=== 27
        IF mx > 359 AND mx < 428 AND my > 359 AND my < 413 THEN
            call SelectNumber("27", 359, 359, dpi, sfxflag)
        quote=27
        END IF
        '=== 28
        IF mx > 434 AND mx < 503 AND my > 359 AND my < 413 THEN
            call SelectNumber("28", 434, 359, dpi, sfxflag)
       quote =28
        END IF
        '=== 29
        IF mx > 509 AND mx < 578 AND my > 359 AND my < 413 THEN
            call SelectNumber("29", 509, 359, dpi, sfxflag)
        quote = 29
        END IF
        '=== 30
        IF mx > 584 AND mx < 653 AND my > 359 AND my < 413 THEN
            call SelectNumber("30", 584, 359, dpi, sfxflag)
        quote =30
        END IF
        '=== 31
        IF mx > 659 AND mx < 728 AND my > 359 AND my < 413 THEN
            call SelectNumber("31", 659, 359, dpi, sfxflag)
         quote=31
        END IF
        '=== 32
        IF mx > 734 AND mx < 803 AND my > 359 AND my < 413 THEN
            call SelectNumber("32", 734, 359, dpi, sfxflag)
         quote =32
        END IF
        '=== 33
        IF mx > 209 AND mx < 278 AND my > 421 AND my < 475 THEN
            call SelectNumber("33", 209, 421, dpi, sfxflag)
         quote =33
        END IF
        '=== 34
        IF mx > 284 AND mx < 353 AND my > 421 AND my < 475 THEN
            call SelectNumber("34", 284, 421, dpi, sfxflag)
        quote =34
        END IF
        '=== 35
        IF mx > 359 AND mx < 428 AND my > 421 AND my < 475 THEN
            call SelectNumber("35", 359, 421, dpi, sfxflag)
         quote =35
        END IF
        '=== 36
        IF mx > 434 AND mx < 503 AND my > 421 AND my < 475 THEN
            call SelectNumber("36", 434, 421, dpi, sfxflag)
        quote =36
        END IF
        '=== 37
        IF mx > 509 AND mx < 578 AND my > 421 AND my < 475 THEN
            call SelectNumber("37", 509, 421, dpi, sfxflag)
        quote =37
        END IF
        '=== 38
        IF mx > 584 AND mx < 653 AND my > 421 AND my < 475 THEN
            call SelectNumber("38", 584, 421, dpi, sfxflag)
         quote =38
        END IF
        '=== 39
        IF mx > 659 AND mx < 728 AND my > 421 AND my < 475 THEN
            call SelectNumber("39", 659, 421, dpi, sfxflag)
        quote =39
        END IF
        '=== 40
        IF mx > 734 AND mx < 803 AND my > 421 AND my < 475 THEN
            call SelectNumber("40", 734, 421, dpi, sfxflag)
         quote =40
        END IF
        '=== 41
        IF mx > 209 AND mx < 278 AND my > 483 AND my < 537 THEN
            call SelectNumber("41", 209, 483, dpi, sfxflag)
        quote =41
        END IF
        '=== 42
        IF mx > 284 AND mx < 353 AND my > 483 AND my < 537 THEN
            call SelectNumber("42", 284, 483, dpi, sfxflag)
       quote =42
        END IF
        '=== 43
        IF mx > 359 AND mx < 428 AND my > 483 AND my < 537 THEN
            call SelectNumber("43", 359, 483, dpi, sfxflag)
        quote=43
        END IF
        '=== 44
        IF mx > 434 AND mx < 503 AND my > 483 AND my < 537 THEN
            call SelectNumber("44", 434, 483, dpi, sfxflag)
         quote =44
        END IF
        '=== 45
        IF mx > 509 AND mx < 578 AND my > 483 AND my < 537 THEN
            call SelectNumber("45", 509, 483, dpi, sfxflag)
        quote =45
        END IF
        '=== 46
        IF mx > 584 AND mx < 653 AND my > 483 AND my < 537 THEN
            call SelectNumber("46", 584, 483, dpi, sfxflag)
         quote =46
        END IF
        '=== 47
        IF mx > 659 AND mx < 728 AND my > 483 AND my < 537 THEN
            call SelectNumber("47", 659, 483, dpi, sfxflag)
        quote =47
        END IF
        '=== 48
        IF mx > 734 AND mx < 803 AND my > 483 AND my < 537 THEN
            call SelectNumber("48", 734, 483, dpi, sfxflag)
         quote =48
        END IF
        '=== 49
        IF mx > 209 AND mx < 278 AND my > 545 AND my < 599 THEN
            call SelectNumber("49", 209, 545, dpi, sfxflag)
         quote =49
        END IF
        '=== 50
        IF mx > 284 AND mx < 353 AND my > 545 AND my < 599 THEN
            call SelectNumber("50", 284, 545, dpi, sfxflag)
         quote =50
        END IF


until mx > 0

b$ = "winstone-data/vid/sel"
for t = 0 to 15
    a$ = LTRIM$(STR$(t))
    IF LEN(a$) = 2 THEN a$ = "00" & a$
    IF LEN(a$) = 1 THEN a$ = "000" & a$
    c$ = b$ & a$ & ".jpg" 
    draw image c$ at 0,0
    pause .01
next t

return



getquote:

'=== Gets new quote to solve based on quote value,
'=== Sets the Row data...

    '' QUOTES MUST NOT BE LONGER THAN 23 LETTERS ON ONE ROW
    '' AND ALL ROWS SHOULD BE SAME LENGTH (PAD WITH SPACES)

if quote = 1 then
        OrigRow1$ = "GREAT MINDS     " ! row1$ = OrigRow1$
        OrigRow2$ = "THINK ALIKE     " ! row2$ = OrigRow2$
        OrigRow3$ = "                " ! row3$ = OrigRow3$
end if

if quote = 2 then
        OrigRow1$ = "TO ERR IS HUMAN  " ! row1$ = OrigRow1$
        OrigRow2$ = "TO FORGIVE DEVINE" ! row2$ = OrigRow2$
        OrigRow3$ = "                 " ! row3$ = OrigRow3$
end if
if quote = 3 then
        OrigRow1$ = "IT AINT OVER TILL  " ! row1$ = OrigRow1$
        OrigRow2$ = "THE FAT LADY SINGS " ! row2$ = OrigRow2$
        OrigRow3$ = "                   " ! row3$ = OrigRow3$
end if
if quote = 4 then
        OrigRow1$ = "A ROLLING STONE " ! row1$ = OrigRow1$
        OrigRow2$ = "GATHERS NO MOSS " ! row2$ = OrigRow2$
        OrigRow3$ = "                " ! row3$ = OrigRow3$
end if
if quote = 5 then
        OrigRow1$ = "LAUGHTER IS THE " ! row1$ = OrigRow1$
        OrigRow2$ = "BEST  MEDICINE  " ! row2$ = OrigRow2$
        OrigRow3$ = "                " ! row3$ = OrigRow3$
end if

if quote = 6 then 
        OrigRow1$ = "ABSENCE MAKES THE " ! row1$ = OrigRow1$
        OrigRow2$ = "HEART GROW FONDER " ! row2$ = OrigRow2$
        OrigRow3$ = "                  " ! row3$ = OrigRow3$
end if

if quote = 7 then
        OrigRow1$ = "YOU  CANT HAVE " ! row1$ = OrigRow1$
        OrigRow2$ = "YOUR CAKE AND  " ! row2$ = OrigRow2$
        OrigRow3$ = "EAT  IT   TOO  " ! row3$ = OrigRow3$
end if

if quote = 8 then
        OrigRow1$ = "IF AT FIRST YOU" ! row1$ = OrigRow1$
        OrigRow2$ = "DONT   SUCCEED " ! row2$ = OrigRow2$
        OrigRow3$ = "TRY   TRY AGAIN" ! row3$ = OrigRow3$
end if
if quote = 9 then
        OrigRow1$ = "NECESSITY IS  " ! row1$ = OrigRow1$
        OrigRow2$ = "THE MOTHER OF " ! row2$ = OrigRow2$
        OrigRow3$ = "INVENTION     " ! row3$ = OrigRow3$
end if
if quote = 10 then
        OrigRow1$ = "CLEANLINESS " ! row1$ = OrigRow1$
        OrigRow2$ = "IS NEXT TO  " ! row2$ = OrigRow2$
        OrigRow3$ = "GODLINESS   " ! row3$ = OrigRow3$
end if
if quote = 11 then
        OrigRow1$ = "THE BIGGER THEY " ! row1$ = OrigRow1$
        OrigRow2$ = "ARE  THE HARDER " ! row2$ = OrigRow2$
        OrigRow3$ = "THEY FALL       " ! row3$ = OrigRow3$
end if
if quote = 12 then
        OrigRow1$ = "ACTIONS SPEAK  " ! row1$ = OrigRow1$
        OrigRow2$ = "LOUDER  THAN   " ! row2$ = OrigRow2$
        OrigRow3$ = "WORDS          " ! row3$ = OrigRow3$
end if
if quote = 13 then
        OrigRow1$ = "A CHAIN IS ONLY  " ! row1$ = OrigRow1$
        OrigRow2$ = "AS STRONG AS ITS " ! row2$ = OrigRow2$
        OrigRow3$ = "WEAKEST LINK     " ! row3$ = OrigRow3$
end if
if quote = 14 then
        OrigRow1$ = "BIRDS OF A    " ! row1$ = OrigRow1$
        OrigRow2$ = "FEATHER FLOCK " ! row2$ = OrigRow2$
        OrigRow3$ = "TOGETHER      " ! row3$ = OrigRow3$
end if
if quote = 15 then
        OrigRow1$ = "WHEN THE  CATS " ! row1$ = OrigRow1$
        OrigRow2$ = "AWAY  THE MICE " ! row2$ = OrigRow2$
        OrigRow3$ = "WILL PLAY      " ! row3$ = OrigRow3$
end if
if quote = 16 then
        OrigRow1$ = "A FOOL AND HIS " ! row1$ = OrigRow1$
        OrigRow2$ = "MONEY ARE SOON " ! row2$ = OrigRow2$
        OrigRow3$ = " PARTED        " ! row3$ = OrigRow3$
end if
if quote = 17 then
        OrigRow1$ = "NONE SO BLIND " ! row1$ = OrigRow1$
        OrigRow2$ = "AS THOSE WHO  " ! row2$ = OrigRow2$
        OrigRow3$ = "WILL NOT SEE  " ! row3$ = OrigRow3$
end if
if quote = 18 then
        OrigRow1$ = "YOU CANT JUDGE " ! row1$ = OrigRow1$
        OrigRow2$ = "A BOOK BY ITS  " ! row2$ = OrigRow2$
        OrigRow3$ = "COVER          " ! row3$ = OrigRow3$
end if
if quote = 19 then
        OrigRow1$ = "DONT PUT ALL " ! row1$ = OrigRow1$
        OrigRow2$ = "YOUR EGGS IN " ! row2$ = OrigRow2$
        OrigRow3$ = "ONE  BASKET  " ! row3$ = OrigRow3$
end if
if quote = 20 then
        OrigRow1$ = "FOOLS RUSH IN " ! row1$ = OrigRow1$
        OrigRow2$ = "WHERE ANGELS  " ! row2$ = OrigRow2$
        OrigRow3$ = "FEAR TO TREAD " ! row3$ = OrigRow3$
end if
if quote = 21 then
        OrigRow1$ = "ALL WORK AND NO " ! row1$ = OrigRow1$
        OrigRow2$ = "PLAY MAKES JACK " ! row2$ = OrigRow2$
        OrigRow3$ = "A    DULL  BOY  " ! row3$ = OrigRow3$
end if
if quote = 22 then
        OrigRow1$ = "OLD SOLDIERS NEVER " ! row1$ = OrigRow1$
        OrigRow2$ = "DIE THEY  SIMPLY   " ! row2$ = OrigRow2$
        OrigRow3$ = "    FADE   AWAY    " ! row3$ = OrigRow3$
end if
if quote = 23 then
        OrigRow1$ = "DONT COUNT YOUR " ! row1$ = OrigRow1$
        OrigRow2$ = "CHICKENS BEFORE " ! row2$ = OrigRow2$
        OrigRow3$ = "THEY ARE HATCHED" ! row3$ = OrigRow3$
end if
if quote = 24 then
        OrigRow1$ = "LIGHTNING NEVER  " ! row1$ = OrigRow1$
        OrigRow2$ = "STRIKES TWICE IN " ! row2$ = OrigRow2$
        OrigRow3$ = "THE  SAME  PLACE " ! row3$ = OrigRow3$
end if
if quote = 25 then
        OrigRow1$ = "ONE MANS TRASH " ! row1$ = OrigRow1$
        OrigRow2$ = "IS ANOTHER MANS" ! row2$ = OrigRow2$
        OrigRow3$ = "   TREASURE    " ! row3$ = OrigRow3$
end if
if quote = 26 then
        OrigRow1$ = "DONT CROSS YOUR " ! row1$ = OrigRow1$
        OrigRow2$ = "BRIDGES  BEFORE " ! row2$ = OrigRow2$
        OrigRow3$ = "YOU COME TO THEM" ! row3$ = OrigRow3$
end if
if quote = 27 then
        OrigRow1$ = "IT WAS THE LAST  " ! row1$ = OrigRow1$
        OrigRow2$ = "STRAW THAT BROKE " ! row2$ = OrigRow2$
        OrigRow3$ = "THE   CAMELS BACK" ! row3$ = OrigRow3$
end if
if quote = 28 then
        OrigRow1$ = "YOU CAN CATCH MORE " ! row1$ = OrigRow1$
        OrigRow2$ = "FLIES WITH HONEY   " ! row2$ = OrigRow2$
        OrigRow3$ = "THAN WITH  VINEGAR " ! row3$ = OrigRow3$
end if
if quote = 29 then
        OrigRow1$ = "DONT PUT OFF UNTIL" ! row1$ = OrigRow1$
        OrigRow2$ = "TOMORROW WHAT YOU " ! row2$ = OrigRow2$
        OrigRow3$ = "CAN DO   TODAY    " ! row3$ = OrigRow3$
end if
if quote = 30 then
        OrigRow1$ = "IF YOU LIE DOWN   " ! row1$ = OrigRow1$
        OrigRow2$ = "WITH DOGS YOU WILL" ! row2$ = OrigRow2$
        OrigRow3$ = "GET UP WITH FLEAS " ! row3$ = OrigRow3$
end if
if quote = 31 then
        OrigRow1$ = "DISCRETION  IS   " ! row1$ = OrigRow1$
        OrigRow2$ = "THE GREATER PART " ! row2$ = OrigRow2$
        OrigRow3$ = "OF  VALOR        " ! row3$ = OrigRow3$
end if
if quote = 32 then
        OrigRow1$ = "DONT THROW OUT  " ! row1$ = OrigRow1$
        OrigRow2$ = "THE  BABY  WITH " ! row2$ = OrigRow2$
        OrigRow3$ = "THE  BATH WATER "! row3$ = OrigRow3$
end if
if quote = 33 then
        OrigRow1$ = "THE APPLE DOESNT " ! row1$ = OrigRow1$
        OrigRow2$ = "FALL FAR  FROM   " ! row2$ = OrigRow2$
        OrigRow3$ = "THE  TREE        " ! row3$ = OrigRow3$
end if
if quote = 34 then
        OrigRow1$ = "HOPE FOR   THE   " ! row1$ = OrigRow1$
        OrigRow2$ = "BEST BUT PREPARE " ! row2$ = OrigRow2$
        OrigRow3$ = "FOR  THE WORST   " ! row3$ = OrigRow3$
end if
if quote = 35 then
        OrigRow1$ = "WHEN  THE GOING " ! row1$ = OrigRow1$
        OrigRow2$ = "GETS  TOUGH THE "! row2$ = OrigRow2$
        OrigRow3$ = "TOUGH GET GOING " ! row3$ = OrigRow3$
end if
if quote = 36 then
        OrigRow1$ = "DONT TALK THE TALK" ! row1$ = OrigRow1$
        OrigRow2$ = "IF YOU CANT WALK  " ! row2$ = OrigRow2$
        OrigRow3$ = "   THE WALK       " ! row3$ = OrigRow3$
end if
if quote = 37 then
        OrigRow1$ = "BEAUTY IS IN THE" ! row1$ = OrigRow1$
        OrigRow2$ = "EYE    OF  THE  " ! row2$ = OrigRow2$
        OrigRow3$ = "       BEHOLDER " ! row3$ = OrigRow3$
end if
if quote = 38 then
        OrigRow1$ = "YOU CANT TEACH  " ! row1$ = OrigRow1$
        OrigRow2$ = "AN  OLD   DOG   " ! row2$ = OrigRow2$
        OrigRow3$ = "    MEW  TRICKS " ! row3$ = OrigRow3$
end if
if quote = 39 then
        OrigRow1$ = "NEVER  LOOK " ! row1$ = OrigRow1$
        OrigRow2$ = "A GIFT HORSE" ! row2$ = OrigRow2$
        OrigRow3$ = "IN THE MOUTH" ! row3$ = OrigRow3$
end if
if quote = 40 then
        OrigRow1$ = "DONT BITE THE  " ! row1$ = OrigRow1$
        OrigRow2$ = "HAND THAT FEEDS" ! row2$ = OrigRow2$
        OrigRow3$ = "YOU            " ! row3$ = OrigRow3$
end if
if quote = 41 then
        OrigRow1$ = "KEEP YOUR FRIENDS " ! row1$ = OrigRow1$
        OrigRow2$ = "CLOSE AND YOUR    " ! row2$ = OrigRow2$
        OrigRow3$ = "ENEMIES CLOSER    " ! row3$ = OrigRow3$
end if
if quote = 42 then
        OrigRow1$ = "ALL GOOD THINGS " ! row1$ = OrigRow1$
        OrigRow2$ = "MUST COME TO AN " ! row2$ = OrigRow2$
        OrigRow3$ = "END             " ! row3$ = OrigRow3$
end if
if quote = 43 then
        OrigRow1$ = "FOOL ME ONCE SHAME " ! row1$ = OrigRow1$
        OrigRow2$ = "ON  YOU FOOL ME    " ! row2$ = OrigRow2$
        OrigRow3$ = "TWICE SHAME ON ME  " ! row3$ = OrigRow3$
end if
if quote = 44 then
        OrigRow1$ = "GOOD THINGS  " ! row1$ = OrigRow1$
        OrigRow2$ = "COME TO THOSE" ! row2$ = OrigRow2$
        OrigRow3$ = "WHO  WAIT    " ! row3$ = OrigRow3$
end if
if quote = 45 then
        OrigRow1$ = "THE PEN   IS   "! row1$ = OrigRow1$
        OrigRow2$ = "MIGHTIER THAN  " ! row2$ = OrigRow2$
        OrigRow3$ = " THE  SWORD    " ! row3$ = OrigRow3$
end if
if quote = 46 then
        OrigRow1$ = "THE ROAD TO HELL" ! row1$ = OrigRow1$
        OrigRow2$ = "IS  PAVED   WITH" ! row2$ = OrigRow2$
        OrigRow3$ = "GOOD INTENTIONS " ! row3$ = OrigRow3$
end if
if quote = 47 then
        OrigRow1$ = "ITS NO  USE  " ! row1$ = OrigRow1$
        OrigRow2$ = "CRYING  OVER " ! row2$ = OrigRow2$
        OrigRow3$ = "SPILLED MILK " ! row3$ = OrigRow3$
end if
if quote = 48 then
        OrigRow1$ = "A LITTLE  BIT OF" ! row1$ = OrigRow1$
        OrigRow2$ = "KNOWLEDGE IS  A " ! row2$ = OrigRow2$
        OrigRow3$ = "DANGEROUS THING " ! row3$ = OrigRow3$
end if
if quote = 49 then
        OrigRow1$ = "WHATS GOOD FOR   " ! row1$ = OrigRow1$
        OrigRow2$ = "THE GOOSE IS GOOD" ! row2$ = OrigRow2$
        OrigRow3$ = "FOR THE   GANDER " ! row3$ = OrigRow3$
end if

if quote = 50 then
        OrigRow1$ = "DO UNTO OTHERS AS " ! row1$ = OrigRow1$
        OrigRow2$ = "YOU  WOULD HAVE   " ! row2$ = OrigRow2$
        OrigRow3$ = "THEM DO UNTO YOU  " ! row3$ = OrigRow3$
end if

'failsafes...
if quote < 1 and quote > 50 then
        OrigRow1$ = "TO ERR  IS HUMAN " ! row1$ = OrigRow1$
        OrigRow2$ = "TO FORGIVE DEVINE" ! row2$ = OrigRow2$
        OrigRow3$ = "                 " ! row3$ = OrigRow3$
end if


remix:

'maybe make tag to set if 1&2 were not swapped, swap 1&3, if no space.?

'=== Randomly Mix up the letters in rows
FOR t = 1 TO LEN(row1$)
    '=== mix up row 1 with 2
    r1$ = MID$(row1$, t, 1)
    r2$ = MID$(row2$, t, 1)
    '=== Only swap 1 & 2 when no space present
    IF r1$ <> " " AND r2$ <> " " THEN
        IF INT(RND(2))= 1 THEN
            row1$ = changebyte$(row1$, t, r2$)
            row2$ = changebyte$(row2$, t, r1$)
        END IF
    END IF
    '=== mix up row 2 with 3
    r2$ = MID$(row2$, t, 1)
    r3$ = MID$(row3$, t, 1)
    '=== Only swap 2 &3 when no space present
    IF r2$ <> " " AND r3$ <> " " THEN
        IF INT(RND(2))= 1 THEN
            row2$ = changebyte$(row2$, t, r3$)
            row3$ = changebyte$(row3$, t, r2$)
        END IF
    END IF
NEXT t

'=== just in case no mixing occurred (happens once in a blue moon)..
IF OrigRow1$ = row1$ AND OrigRow2$ = row2$ THEN GOTO remix

return


'============================
def SelectNumber (number$, x, y, dpi, sfxflag)
IF sfxflag = 1 THEN music "click" play

btn$ = "winstone-data/num/" & number$ & ".jpg"
draw image btn$ at x,y scale dpi
pause .15
draw image "winstone-data/img/select.jpg" at 0,0 scale dpi 
pause .15
END def

'=========================================

drawrows:

'== Draws the row1$, row2$, row3$ data to screen.

'===draw row1
FOR t = 1 TO LEN(row1$)
    L$ = capstr$(MID$(row1$, t, 1))
    IF L$ <> " " THEN
        letter$ ="winstone-data/fnt2/" & L$ & ".jpg"
        lx = (t * 55)-35
        draw image letter$ at lx, 55-30 scale 6.1
    END IF
NEXT t

'===draw row2
FOR t = 1 TO LEN(row2$)
    L$ = capstr$(MID$(row2$, t, 1))
    IF L$ <> " " THEN
        letter$ ="winstone-data/fnt2/" & L$ & ".jpg"
        lx =  (t * 55)-35
        draw image letter$ at lx, 110-30 scale 6.1
    END IF
NEXT t

'===draw row3
FOR t = 1 TO LEN(row3$)
    L$ = capstr$(MID$(row3$, t, 1))
    IF L$ <> " " THEN
        letter$ ="winstone-data/fnt2/" & L$ & ".jpg"
        lx =(t * 55)-35
        draw image letter$ at lx, 165-30 scale 6.1
    END IF
NEXT t

return

'===========
flashrows:

'=== Animate quote rows for a sec to show solved.

FOR flash = 1 TO 5
    '===draw row1 highlighted
    FOR t = 1 TO LEN(row1$)
        L$ = capstr$(MID$(row1$, t, 1))
        IF L$ <> " " THEN
           letter$ ="winstone-data/fnt2/_" & L$ & ".jpg"
           lx = (t * 55)-35
           draw image letter$ at lx, 55-30 scale 6.1
        END IF
    NEXT t

    '===draw row2
    FOR t = 1 TO LEN(row2$)
        L$ = capstr$(MID$(row2$, t, 1))
        'IF L$ = " " THEN L$ = "space"
        IF L$ <> " " THEN
           letter$ ="winstone-data/fnt2/_" & L$ & ".jpg"
           lx = (t * 55)-35
           draw image letter$ at lx, 110-30 scale 6.1
        END IF
    NEXT t

    '===draw row3
    FOR t = 1 TO LEN(row3$)
        L$ = capstr$(MID$(row3$, t, 1))
        'IF L$ = " " THEN L$ = "space"
        IF L$ <> " " THEN
           letter$ ="winstone-data/fnt2/_" & L$ & ".jpg"
           lx =  (t * 55)-35
           draw image letter$ at lx, 165-30 scale 6.1
        END IF
    NEXT t

    pause .2

    gosub drawrows  'Show them normal

    pause .2

NEXT flash

return

'=======================

scrollupscreen:

'grabs current graphics screen as sprite
'scrolls it up out of sight

sprite "screen" scan 0,0,1024,768
refresh off
graphics clear 0,0,0
sprite "screen" at 0,0
sprite "screen" show
sprite "screen" at 0,0
refresh on
for y = 0 to -767 step -20
  sprite "screen" at 0 , y
  pause .01
next y

return

'==================================
scrolldownboard:

refresh off
sprite "board" show
sprite "board" at -2000,-2000
refresh on
for y = -767 to 0 step 20
  'sprite "board" at -100, y scale 1.151
  sprite "board" at 15, y -14 scale 1.2251
  pause .02
next y
refresh off
draw image board$ at -100,-100 scale 5.1
sprite "board" hide
refresh on

return

'===============================
screencurtain:

refresh off
'move them out of sight first
sprite "titleleft" at -2000,-2000
sprite "titleright" at -2000,-2000
sprite "title" at -2000,-2000
'turn them on now...
sprite "title" show
sprite "titleleft" show
sprite "titleright" show
refresh on

        x2 = 1024
        FOR x = -511 TO 0 STEP 15
            'The y is randoming shaked up
            'for a dragging effect
            sprite "titleleft" at x, rnd(3)
            sprite "titleright" at x2, RND(3)
            x2 = x2 - 15
            pause .03
        NEXT x

        '=== make sure image is centered
        refresh off
        sprite "titleleft" at -2000,-2000
        sprite "titleright" at-2000,-2000
        sprite "title" at 0,0
        refresh on
        
       
        '=== A little shake to show joining
 if sfxflag = 1 then 
     music "roll" stop
     music "boom" play
 end if
       
' shake screen
FOR g = 4 TO 1 STEP -1
    FOR S = 1 TO 4
        refresh off
        sprite "title" at RND(S * g), RND(S * g) scale 1+rnd(.03)
        refresh on
        pause .015
    NEXT S
NEXT g

        'refresh off
        draw image title$ at 0,0 scale dpi
        sprite "titleleft" at -2000,-2000
        sprite "titleright" at -2000,-2000
        sprite "title" at -2000,-2000
        refresh on
return


'================================================
loadconfig:

cfile$ = "winstone-data/winstone.dat"

'=== IF NO CONFIG FILE, MAKE ONE

IF FILE_EXISTS(cfile$) = 0 THEN
    '=== file not there so make a new dat file
    '=== mark all quotes unsolved
    config$ = ""
    FOR i = 1 TO maxquote
        v$ = "0"
        config$ = config$ & v$ 'all unsolved for now
        file cfile$ write v$
        unsolved = unsolved + 1
    NEXT i
    '=== add music, sfx & timer settings (all 1 by default)
    v2$ = "1"
    config$ = config$ & "111"
    file cfile$ write v2$
    file cfile$ write v2$
    file cfile$ write v2$
    'GOTO loadedconfig
    return
END IF


'=== see if file isnt large enough to read settings
'=== if not then make a new file
IF file_size(cfile$) < 53 THEN '(50 quotes & 3 game settings)
    '=== file must be currupt, so close file, kill it, make new one.
    file cfile$ delete
    config$ = ""
    FOR i = 1 TO maxquote
        v$ = "0"
        config$ = config$ & v$ 'all unsolved for now
        file cfile$ write v$
        unsolved = unsolved + 1
    NEXT i
    '=== add music, sfx & timer settings (all 1 by default)
    v$ = "1"
    config$ = config$ & "111"
    file cfile$ write v$
    file cfile$ write v$
    file cfile$ write v$ 
    'GOTO loadedconfig
    return
END IF

'==== file must be there and large enough so load data.
config$ = ""
FOR i = 1 TO maxquote
    file cfile$ read a$ 
    config$ = config$ & a$
    IF a$ = "0" THEN unsolved = unsolved + 1
NEXT i

'=== get game settings now
file cfile$ read a$
IF a$ = "0" THEN
    musicflag = 0 ! config$ = config$ & "0"
ELSE
    musicflag = 1 ! config$ = config$ & "1"
END IF

file cfile$ read a$
IF a$ = "0" THEN
    sfxflag = 0 ! config$ = config$ & "0"
ELSE
    sfxflag = 1 ! config$ = config$ & "1"
END IF

file cfile$ read a$
IF a$ = "0" THEN
    timerflag = 0 ! config$ = config$ & "1"
ELSE
    timerflag = 1 ! config$ = config$ & "1"
    '<<, TIMER ALWAYS 1 for now
END IF


loadedconfig:
return

'============================================

Credits:

if musicflag=1 then music "roll" play

gosub screencurtain



pause .15

'=== start crumble sound

IF sfxflag = 1 THEN music "crumble" play

'=== BIG Shake
'FOR b = 1 TO 2
'    ScreenShake 0, 6, 5, 60
'NEXT

'CRUMLE.........
'=== Play Select menu fly in vid
b$ = "winstone-data/vid/crum"
for t = 0 to 14
    a$ = LTRIM$(STR$(t))
    IF LEN(a$) = 2 THEN a$ = "00" & a$
    IF LEN(a$) = 1 THEN a$ = "000" & a$
    c$ = b$ & a$ & ".jpg" 
    draw image c$ at 0,0
    pause .02
next t

'WASH OUT.....
graphics clear 0,0,0
for t = 0 to 255 step 10
   refresh off
   graphics clear t/255,t/255,t/255
   refresh on
   pause .03
next t
for t = 254 to 0 step -10
   refresh off
   graphics clear t/255,t/255,t/255
   refresh on
   pause .03
next t

pause .5
IF sfxflag = 1 THEN music "crumble" stop

IF sfxflag = 1 THEN 
  'music "fanfare" load "winstone-data/sfx/sfx_fanfare.mp3"
  'music "fanfare" play
end if

IF musicflag = 1 THEN 
   music "credits" load "winstone-data/sfx/sfx_credits.mp3"
   music "credits" loop

   'notes load "winstone-data/sfx/sfx_music3.mid"
   'notes play 
end if

'if sfxflag=1 then music "fanfare" stop

'pause 1

sprite "win" load "winstone-data/img/win.jpg"
sprite "win" resize 1024,5672
sprite "win" at -2000,-2000
sprite "win" show

y = 768

button "creditclose" text "Close" at 0,0

DO
    'graphics clear 0,0,0 'cls
    sprite "win" at 0, y 
    y = y -1
   IF y < -5672 THEN break 'or y = 0 to start over
    
    if button_pressed("creditclose") then break

    pause .02
    
until 0

button "creditclose" delete


IF musicflag=1 then 
   'notes stop
   'notes load "winstone-data/sfx/sfx_music.mid"
   music "credits" stop
end if

refresh off
sprite "win" at -2000,-2000
refresh off

return
'
'=====================
checkmusic:
'if music over, reload, start over
if musicflag=1 then
   if notes_time() => notes_length() then
     notes load "winstone-data/sfx/sfx_music.mid"
     notes play
   end if
end if
return

'=====================
checkfiles:

option base 1

'count files first...
restore to filenames
totalfiles=-1
while a$<>"#"
  read a$ ! totalfiles+=1
end while

'divide in half for real number
'(half of READ was to get filesize)
totalfiles = totalfiles / 2

dim filename$(totalfiles)
dim filesize(totalfiles)

'fill arrays with names and sizes
RESTORE TO filenames
   for g = 1 to totalfiles
   read a$ ! filesize(g) = val(a$)
   read b$ ! filename$(g) = b$
next g


'Check if folders there...
if file_exists("winstone-data/") = 0  then
  print "The 'winstone-data/' folder not found."
  print "Please re-install the game."
  end
end if

if file_exists("winstone-data/fnt2/") = 0 then 
  print "The 'winstone-data/fnt2/' folder not found."
  print "Please re-install the game."
  end
end if

if file_exists("winstone-data/img/") = 0 then 
  print "The 'winstone-data/img/' folder not found."
  print "Please re-install the game."
  end
end if

if file_exists("winstone-data/num/") = 0 then 
  print "The 'winstone-data/num/' folder not found."
  print "Please re-install the game."
  end
end if

if file_exists("winstone-data/sfx/") = 0 then 
  print "The 'winstone-data/sfx/' folder not found."
  print "Please re-install the game."
  end
end if

if file_exists("winstone-data/vid/") = 0 then 
  print "The 'winstone-data/vid/' folder not found."
  print "Please re-install the game."
  end
end if

'check if files are there
for r = 1 to totalfiles
  if not file_exists(filename$(r)) then
     print filename$(r) ; " not found."
     print "Please re-install game."
     end 
  end if
next r


return


'note: file sizes are not used for now...
filenames:
data "2242","winstone-data/fnt2/A.jpg"
data "1101","winstone-data/fnt2/B.jpg"
data "1082","winstone-data/fnt2/C.jpg"
data "1094","winstone-data/fnt2/D.jpg"
data "1063","winstone-data/fnt2/E.jpg"
data "1035","winstone-data/fnt2/F.jpg"
data "1112","winstone-data/fnt2/G.jpg"
data "1081","winstone-data/fnt2/H.jpg"
data "1044","winstone-data/fnt2/I.jpg"
data "1044","winstone-data/fnt2/J.jpg"
data "1097","winstone-data/fnt2/K.jpg"
data "996","winstone-data/fnt2/L.jpg"
data "1089","winstone-data/fnt2/M.jpg"
data "1087","winstone-data/fnt2/N.jpg"
data "1118","winstone-data/fnt2/O.jpg"
data "1050","winstone-data/fnt2/P.jpg"
data "1124","winstone-data/fnt2/Q.jpg"
data "1089","winstone-data/fnt2/R.jpg"
data "1117","winstone-data/fnt2/S.jpg"
data "935","winstone-data/fnt2/space.jpg"
data "1029","winstone-data/fnt2/T.jpg"
data "1083","winstone-data/fnt2/U.jpg"
data "1104","winstone-data/fnt2/V.jpg"
data "1091","winstone-data/fnt2/W.jpg"
data "1122","winstone-data/fnt2/X.jpg"
data "1072","winstone-data/fnt2/Y.jpg"
data "1078","winstone-data/fnt2/Z.jpg"
data "1101","winstone-data/fnt2/_A.jpg"
data "1087","winstone-data/fnt2/_B.jpg"
data "1076","winstone-data/fnt2/_C.jpg"
data "1081","winstone-data/fnt2/_D.jpg"
data "1059","winstone-data/fnt2/_E.jpg"
data "1021","winstone-data/fnt2/_F.jpg"
data "1102","winstone-data/fnt2/_G.jpg"
data "1067","winstone-data/fnt2/_H.jpg"
data "1029","winstone-data/fnt2/_I.jpg"
data "1026","winstone-data/fnt2/_J.jpg"
data "1081","winstone-data/fnt2/_K.jpg"
data "982","winstone-data/fnt2/_L.jpg"
data "1069","winstone-data/fnt2/_M.jpg"
data "1074","winstone-data/fnt2/_N.jpg"
data "1108","winstone-data/fnt2/_O.jpg"
data "1031","winstone-data/fnt2/_P.jpg"
data "1114","winstone-data/fnt2/_Q.jpg"
data "1078","winstone-data/fnt2/_R.jpg"
data "1107","winstone-data/fnt2/_S.jpg"
data "1028","winstone-data/fnt2/_T.jpg"
data "1084","winstone-data/fnt2/_U.jpg"
data "1087","winstone-data/fnt2/_V.jpg"
data "1087","winstone-data/fnt2/_W.jpg"
data "1107","winstone-data/fnt2/_X.jpg"
data "1056","winstone-data/fnt2/_Y.jpg"
data "1066","winstone-data/fnt2/_Z.jpg"
data "1544","winstone-data/img/back.jpg"
data "55148","winstone-data/img/board6.jpg"
data "1694","winstone-data/img/config.jpg"
data "193282","winstone-data/img/configscreen2.jpg"
data "1466","winstone-data/img/help.jpg"
data "197422","winstone-data/img/helpscreen.jpg"
data "1389","winstone-data/img/hint.jpg"
data "38291","winstone-data/img/menu_top2.jpg"
data "1284","winstone-data/img/no.jpg"
data "186692","winstone-data/img/paper-timeup.jpg"
data "92639","winstone-data/img/paper-title-left.jpg"
data "92323","winstone-data/img/paper-title-right.jpg"
data "183301","winstone-data/img/paper-title.jpg"
data "10996","winstone-data/img/pop-a-1.jpg"
data "9575","winstone-data/img/pop-a-2.jpg"
data "10025","winstone-data/img/pop-a-3.jpg"
data "7404","winstone-data/img/pop-a-4.jpg"
data "8612","winstone-data/img/pop-a-5.jpg"
data "6395","winstone-data/img/pop-a-6.jpg"
data "7381","winstone-data/img/pop-b-1.jpg"
data "5979","winstone-data/img/pop-b-2.jpg"
data "6606","winstone-data/img/pop-b-3.jpg"
data "7093","winstone-data/img/pop-b-4.jpg"
data "5228","winstone-data/img/pop-b-5.jpg"
data "5863","winstone-data/img/pop-b-6.jpg"
data "5615","winstone-data/img/pop-c-1.jpg"
data "5865","winstone-data/img/pop-c-2.jpg"
data "6980","winstone-data/img/pop-c-3.jpg"
data "5748","winstone-data/img/pop-c-4.jpg"
data "6015","winstone-data/img/pop-c-5.jpg"
data "6585","winstone-data/img/pop-c-6.jpg"
data "6214","winstone-data/img/pop-d-1.jpg"
data "6653","winstone-data/img/pop-d-2.jpg"
data "4651","winstone-data/img/pop-d-3.jpg"
data "6624","winstone-data/img/pop-d-4.jpg"
data "6142","winstone-data/img/pop-d-5.jpg"
data "6878","winstone-data/img/pop-d-6.jpg"
data "6545","winstone-data/img/pop-e-1.jpg"
data "5404","winstone-data/img/pop-e-2.jpg"
data "5027","winstone-data/img/pop-e-3.jpg"
data "6183","winstone-data/img/pop-e-4.jpg"
data "6007","winstone-data/img/pop-e-5.jpg"
data "4484","winstone-data/img/pop-e-6.jpg"
data "5438","winstone-data/img/pop-f-1.jpg"
data "5766","winstone-data/img/pop-f-2.jpg"
data "6131","winstone-data/img/pop-f-3.jpg"
data "6240","winstone-data/img/pop-f-4.jpg"
data "6006","winstone-data/img/pop-f-5.jpg"
data "5659","winstone-data/img/pop-f-6.jpg"
data "5073","winstone-data/img/pop-g-1.jpg"
data "4976","winstone-data/img/pop-g-2.jpg"
data "5959","winstone-data/img/pop-g-3.jpg"
data "6729","winstone-data/img/pop-g-4.jpg"
data "5791","winstone-data/img/pop-g-5.jpg"
data "5928","winstone-data/img/pop-g-6.jpg"
data "6246","winstone-data/img/pop-h-1.jpg"
data "5840","winstone-data/img/pop-h-2.jpg"
data "5831","winstone-data/img/pop-h-3.jpg"
data "6608","winstone-data/img/pop-h-4.jpg"
data "7125","winstone-data/img/pop-h-5.jpg"
data "7437","winstone-data/img/pop-h-6.jpg"
data "4716","winstone-data/img/pop-z-1.jpg"
data "4759","winstone-data/img/pop-z-10.jpg"
data "4976","winstone-data/img/pop-z-11.jpg"
data "4820","winstone-data/img/pop-z-12.jpg"
data "5154","winstone-data/img/pop-z-13.jpg"
data "4941","winstone-data/img/pop-z-14.jpg"
data "4688","winstone-data/img/pop-z-15.jpg"
data "4473","winstone-data/img/pop-z-16.jpg"
data "4816","winstone-data/img/pop-z-2.jpg"
data "5920","winstone-data/img/pop-z-3.jpg"
data "4959","winstone-data/img/pop-z-4.jpg"
data "4629","winstone-data/img/pop-z-5.jpg"
data "5146","winstone-data/img/pop-z-6.jpg"
data "4402","winstone-data/img/pop-z-7.jpg"
data "5366","winstone-data/img/pop-z-8.jpg"
data "4794","winstone-data/img/pop-z-9.jpg"
data "3800","winstone-data/img/popstrip.jpg"
data "1408","winstone-data/img/quitbtn.jpg"
data "1559","winstone-data/img/quote.jpg"
data "2819","winstone-data/img/reset.jpg"
data "18563","winstone-data/img/resetnotice.jpg"
data "7381","winstone-data/img/select-champ.jpg"
data "6383","winstone-data/img/select-msg.jpg"
data "53532","winstone-data/img/select.jpg"
data "919","winstone-data/img/solved.jpg"
data "1583","winstone-data/img/startbtn.jpg"
data "37527","winstone-data/img/timernotice.jpg"
data "664","winstone-data/img/time_grn2.jpg"
data "676","winstone-data/img/time_red2.jpg"
data "661","winstone-data/img/time_yel2.jpg"
data "1941","winstone-data/img/title.jpg"
data "4522","winstone-data/img/wimp.jpg"
data "187273","winstone-data/img/win.jpg"
data "1389","winstone-data/img/yes.jpg"
data "1639","winstone-data/img/_back.jpg"
data "1808","winstone-data/img/_config.jpg"
data "1586","winstone-data/img/_help.jpg"
data "1499","winstone-data/img/_hint.jpg"
data "1405","winstone-data/img/_no.jpg"
data "1538","winstone-data/img/_quitbtn.jpg"
data "1665","winstone-data/img/_quote.jpg"
data "2958","winstone-data/img/_reset.jpg"
data "1725","winstone-data/img/_startbtn.jpg"
data "2037","winstone-data/img/_title.jpg"
data "4757","winstone-data/img/_wimp.jpg"
data "1506","winstone-data/img/_yes.jpg"
data "1048","winstone-data/num/1.jpg"
data "1213","winstone-data/num/10.jpg"
data "1161","winstone-data/num/11.jpg"
data "1216","winstone-data/num/12.jpg"
data "1209","winstone-data/num/13.jpg"
data "1216","winstone-data/num/14.jpg"
data "1204","winstone-data/num/15.jpg"
data "1229","winstone-data/num/16.jpg"
data "1193","winstone-data/num/17.jpg"
data "1232","winstone-data/num/18.jpg"
data "1230","winstone-data/num/19.jpg"
data "1097","winstone-data/num/2.jpg"
data "1248","winstone-data/num/20.jpg"
data "1194","winstone-data/num/21.jpg"
data "1249","winstone-data/num/22.jpg"
data "1247","winstone-data/num/23.jpg"
data "1252","winstone-data/num/24.jpg"
data "1261","winstone-data/num/25.jpg"
data "1270","winstone-data/num/26.jpg"
data "1228","winstone-data/num/27.jpg"
data "1264","winstone-data/num/28.jpg"
data "1262","winstone-data/num/29.jpg"
data "1119","winstone-data/num/3.jpg"
data "1264","winstone-data/num/30.jpg"
data "1214","winstone-data/num/31.jpg"
data "1270","winstone-data/num/32.jpg"
data "1259","winstone-data/num/33.jpg"
data "1248","winstone-data/num/34.jpg"
data "1275","winstone-data/num/35.jpg"
data "1276","winstone-data/num/36.jpg"
data "1234","winstone-data/num/37.jpg"
data "1281","winstone-data/num/38.jpg"
data "1285","winstone-data/num/39.jpg"
data "1082","winstone-data/num/4.jpg"
data "1246","winstone-data/num/40.jpg"
data "1203","winstone-data/num/41.jpg"
data "1245","winstone-data/num/42.jpg"
data "1276","winstone-data/num/43.jpg"
data "1251","winstone-data/num/44.jpg"
data "1272","winstone-data/num/45.jpg"
data "1269","winstone-data/num/46.jpg"
data "1227","winstone-data/num/47.jpg"
data "1271","winstone-data/num/48.jpg"
data "1270","winstone-data/num/49.jpg"
data "1119","winstone-data/num/5.jpg"
data "1275","winstone-data/num/50.jpg"
data "1114","winstone-data/num/6.jpg"
data "1078","winstone-data/num/7.jpg"
data "1129","winstone-data/num/8.jpg"
data "1123","winstone-data/num/9.jpg"
data "43094","winstone-data/sfx/sfx_boom.mp3"
data "59477","winstone-data/sfx/sfx_clap.mp3"
data "10368","winstone-data/sfx/sfx_click.mp3"
data "5960","winstone-data/sfx/sfx_click2.mp3"
data "10158","winstone-data/sfx/sfx_click5.mp3"
data "171699","winstone-data/sfx/sfx_credits.mp3"
data "34736","winstone-data/sfx/sfx_crumble.mp3"
data "12717","winstone-data/sfx/sfx_dropdown.mp3"
data "3858","winstone-data/sfx/sfx_music.mid"
data "4444","winstone-data/sfx/sfx_pop1.mp3"
data "36907","winstone-data/sfx/sfx_roll.mp3"
data "105870","winstone-data/sfx/sfx_rumble.mp3"
data "105870","winstone-data/sfx/sfx_rumble2.mp3"
data "6396","winstone-data/sfx/sfx_select.mp3"
data "13501","winstone-data/sfx/sfx_slideup.mp3"
data "61506","winstone-data/vid/crum0000.jpg"
data "62013","winstone-data/vid/crum0001.jpg"
data "63214","winstone-data/vid/crum0002.jpg"
data "64006","winstone-data/vid/crum0003.jpg"
data "64119","winstone-data/vid/crum0004.jpg"
data "63966","winstone-data/vid/crum0005.jpg"
data "63104","winstone-data/vid/crum0006.jpg"
data "62907","winstone-data/vid/crum0007.jpg"
data "51274","winstone-data/vid/crum0008.jpg"
data "42284","winstone-data/vid/crum0009.jpg"
data "32678","winstone-data/vid/crum0010.jpg"
data "26198","winstone-data/vid/crum0011.jpg"
data "18806","winstone-data/vid/crum0012.jpg"
data "15227","winstone-data/vid/crum0013.jpg"
data "13850","winstone-data/vid/crum0014.jpg"
data "17133","winstone-data/vid/roll0000.jpg"
data "17074","winstone-data/vid/roll0001.jpg"
data "17025","winstone-data/vid/roll0002.jpg"
data "16976","winstone-data/vid/roll0003.jpg"
data "16857","winstone-data/vid/roll0004.jpg"
data "16631","winstone-data/vid/roll0005.jpg"
data "25927","winstone-data/vid/sel0000.jpg"
data "23638","winstone-data/vid/sel0001.jpg"
data "20104","winstone-data/vid/sel0002.jpg"
data "17789","winstone-data/vid/sel0003.jpg"
data "15694","winstone-data/vid/sel0004.jpg"
data "13662","winstone-data/vid/sel0005.jpg"
data "12329","winstone-data/vid/sel0006.jpg"
data "11103","winstone-data/vid/sel0007.jpg"
data "10106","winstone-data/vid/sel0008.jpg"
data "9163","winstone-data/vid/sel0009.jpg"
data "8398","winstone-data/vid/sel0010.jpg"
data "7631","winstone-data/vid/sel0011.jpg"
data "7111","winstone-data/vid/sel0012.jpg"
data "6553","winstone-data/vid/sel0013.jpg"
data "5980","winstone-data/vid/sel0014.jpg"
data "4875","winstone-data/vid/sel0015.jpg"
data "#"

