Skip to content

Commit

Permalink
Fix floodfill crash. Disable ESC. Add cursor-wrap.
Browse files Browse the repository at this point in the history
Cursor wrap can be enabled/disabled in sped.ini with
the setting CWRAP=1
  • Loading branch information
robogeek42 committed Mar 3, 2024
1 parent 13b9b7f commit 43ab3bf
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 13 deletions.
42 changes: 29 additions & 13 deletions sped.bas
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
10 REM Sprite editor for the Agon Light and Console8 by Assif (robogeek42)
20 VERSION$="v1.02"
20 VERSION$="v1.03"
30 ON ERROR GOTO 700
40 DIM graphics 1024 : REM memory for file load
50 IF HIMEM>65536 THEN ADL=1 ELSE ADL=0 : REM 24-bit addr basic
Expand All @@ -11,6 +11,7 @@
110 CONFIG_SIZE=1 : CONFIG_JOY=0
120 CONFIG_JOYDELAY=20 : BM_MAX=8
130 C1=21: C2=19: REM Help colours (C1=highlight)
135 CRWAP=0: REM cursor wrap off
140 PROCconfig("sped.ini")
150 IF CONFIG_SIZE=1 THEN BMW%=16 : BMH%=16
155 IF CONFIG_SIZE=2 THEN BMW%=8 : BMH%=8
Expand Down Expand Up @@ -73,16 +74,8 @@
770 IF key = ASC("x") OR key=ASC("X") ISEXIT=1 : REM x=exit
780 IF ISEXIT=1 THEN yn$=FNinputStr("Are you sure (y/N)"): IF yn$<>"Y" AND yn$<>"y" THEN ISEXIT=0
790 REM grid cursor movement
800 IF key = KEYG(0) AND PX%>0 THEN PX%=PX%-1 : REM left
810 IF key = KEYG(1) AND PX%<(BMW%-1) THEN PX%=PX%+1 : REM right
820 IF key = KEYG(2) AND PY%>0 THEN PY%=PY%-1 : REM up
830 IF key = KEYG(3) AND PY%<(BMH%-1) THEN PY%=PY%+1 : REM down
840 REM joystick movement
850 IF JOY>0 AND (JOY AND 223)=JOY AND PX%>0 THEN PX%=PX%-1 : TIME=0: REPEATUNTILTIME>CONFIG_JOYDELAY : REM LEFT
860 IF JOY>0 AND (JOY AND 127)=JOY AND PX%<(BMW%-1) THEN PX%=PX%+1 : TIME=0: REPEATUNTILTIME>CONFIG_JOYDELAY : REM RIGHT
870 IF JOY>0 AND (JOY AND 253)=JOY AND PY%>0 THEN PY%=PY%-1 : TIME=0 : REPEATUNTILTIME>CONFIG_JOYDELAY : REM UP
880 IF JOY>0 AND (JOY AND 247)=JOY AND PY%<(BMH%-1) THEN PY%=PY%+1 : TIME=0 : REPEATUNTILTIME>CONFIG_JOYDELAY :REM DOWN
890 REM colour select movement
800 IF CWRAP=0 PROCmovecheck ELSE PROCmovecheckWrap
870 REM colour select movement
900 IF (key = KEYP(0) OR key=KEYP(0)-32) AND COL%>0 THEN PROCselectPaletteCol(COL%-1) : REM left
910 IF (key = KEYP(1) OR key=KEYP(1)-32) AND COL%<63 THEN PROCselectPaletteCol(COL%+1) : REM right
920 IF (key = KEYP(2) OR key=KEYP(2)-32) AND COL%>(PALW%-1) THEN PROCselectPaletteCol(COL%-PALW%) : REM up
Expand Down Expand Up @@ -136,7 +129,29 @@
1390 GOTO 15010
1400 END

1500 REM ------ Static Screen Update Functions
1410 DEF PROCmovecheck
1415 IF key = KEYG(0) AND PX%>0 THEN PX%=PX%-1 : REM left
1420 IF key = KEYG(1) AND PX%<(BMW%-1) THEN PX%=PX%+1 : REM right
1425 IF key = KEYG(2) AND PY%>0 THEN PY%=PY%-1 : REM up
1430 IF key = KEYG(3) AND PY%<(BMH%-1) THEN PY%=PY%+1 : REM down
1435 IF JOY>0 AND (JOY AND 223)=JOY AND PX%>0 THEN PX%=PX%-1 : TIME=0: REPEATUNTILTIME>CONFIG_JOYDELAY : REM LEFT
1440 IF JOY>0 AND (JOY AND 127)=JOY AND PX%<(BMW%-1) THEN PX%=PX%+1 : TIME=0: REPEATUNTILTIME>CONFIG_JOYDELAY : REM RIGHT
1445 IF JOY>0 AND (JOY AND 253)=JOY AND PY%>0 THEN PY%=PY%-1 : TIME=0 : REPEATUNTILTIME>CONFIG_JOYDELAY : REM UP
1450 IF JOY>0 AND (JOY AND 247)=JOY AND PY%<(BMH%-1) THEN PY%=PY%+1 : TIME=0 : REPEATUNTILTIME>CONFIG_JOYDELAY :REM DOWN
1455 ENDPROC

1460 DEF PROCmovecheckWrap
1465 IF key = KEYG(0) THEN PX%=(PX%-1+BMW%)MOD BMW% : REM left
1470 IF key = KEYG(1) THEN PX%=(PX%+1)MOD BMW% : REM right
1475 IF key = KEYG(2) THEN PY%=(PY%-1+BMH%)MOD BMH% : REM up
1480 IF key = KEYG(3) THEN PY%=(PY%+1)MOD BMH% : REM down
1485 IF JOY>0 AND (JOY AND 223)=JOY THEN PX%=(PX%-1+BMW%)MOD BMW% : TIME=0: REPEATUNTILTIME>CONFIG_JOYDELAY : REM LEFT
1490 IF JOY>0 AND (JOY AND 127)=JOY THEN PX%=(PX%+1)MOD BMW% : TIME=0: REPEATUNTILTIME>CONFIG_JOYDELAY : REM RIGHT
1495 IF JOY>0 AND (JOY AND 253)=JOY THEN PY%=(PY%-1+BMH%)MOD BMH% : TIME=0 : REPEATUNTILTIME>CONFIG_JOYDELAY : REM UP
1500 IF JOY>0 AND (JOY AND 247)=JOY THEN PY%=(PY%+1)MOD BMH% : TIME=0 : REPEATUNTILTIME>CONFIG_JOYDELAY :REM DOWN
1510 ENDPROC

1590 REM ------ Static Screen Update Functions

1600 DEF PROCprintTitle
1610 COLOUR 54:PRINT TAB(0,0);"SPRITE EDITOR";
Expand Down Expand Up @@ -773,7 +788,8 @@
10450 IF var$="C1" THEN C1=VAL(val$)
10460 IF var$="C2" THEN C2=VAL(val$)
10470 IF var$="BM_MAX" THEN BM_MAX=VAL(val$)
10480 ENDPROC
10480 IF var$="CWRAP" THEN CWRAP=VAL(val$)
10490 ENDPROC

10500 DEF FNinputOpts2(line%,base$,hili%,opt1$,opt2$)
10510 C. C1: PRINT TAB(0,line%);base$;" ";
Expand Down
3 changes: 3 additions & 0 deletions sped.ini
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,6 @@ JOYDELAY=20
# Help colours
C1=21
C2=19

# Cursor wrap 0=off, 1=on
CWRAP=1
Binary file added sped103.bbc
Binary file not shown.

0 comments on commit 43ab3bf

Please sign in to comment.