ASM, Poking, and Screen 12
Posted: Sun Apr 10, 2005 9:17 am
well im using a picture-less battle system and still i have problems. i have a large (300 by 480) column on the left side that is a huge scroller. however, there is no problem with that it works fine and fast. the problem is my DrawBox sub. it takes the LOCATEion as input and draw a box, fills the inside, and outlines any text inside according to which color the text is. bt its slow. and i have to do it everytime i print a line. someone told me to switch over to INTEGERs and that certainly helped. i need faster.
ive looked at ASM tutorials and stuff but they never say exactly what ill need and what ill need to do FIRST. so, is there anyway i can replace that which is below with some quick asm thingy?
FOR x% = x1% * 8 - 2 TO x2% * 8 - 1
FOR y% = y1% * 16 - 1 TO y2% * 16 - 1
SELECT CASE POINT(x%, y%)
CASE 0: PSET (x%, y%), 4
CASE 7
IF POINT(x% - 1, y%) <> 7 THEN PSET (x% - 1, y%), 5
IF POINT(x% + 1, y%) <> 7 THEN PSET (x% + 1, y%), 5
IF POINT(x%, y% - 1) <> 7 THEN PSET (x%, y% - 1), 5
IF POINT(x%, y% + 1) <> 7 THEN PSET (x%, y% + 1), 5
CASE 8
IF POINT(x% - 1, y%) <> 8 THEN PSET (x% - 1, y%), 6
IF POINT(x% + 1, y%) <> 8 THEN PSET (x% + 1, y%), 6
IF POINT(x%, y% - 1) <> 8 THEN PSET (x%, y% - 1), 6
IF POINT(x%, y% + 1) <> 8 THEN PSET (x%, y% + 1), 6
CASE 9
IF POINT(x% - 1, y%) <> 9 THEN PSET (x% - 1, y%), 10
IF POINT(x% + 1, y%) <> 9 THEN PSET (x% + 1, y%), 10
IF POINT(x%, y% - 1) <> 9 THEN PSET (x%, y% - 1), 10
IF POINT(x%, y% + 1) <> 9 THEN PSET (x%, y% + 1), 10
CASE 14
IF POINT(x% - 1, y%) <> 14 THEN PSET (x% - 1, y%), 15
IF POINT(x% + 1, y%) <> 14 THEN PSET (x% + 1, y%), 15
IF POINT(x%, y% - 1) <> 14 THEN PSET (x%, y% - 1), 15
IF POINT(x%, y% + 1) <> 14 THEN PSET (x%, y% + 1), 15
CASE ELSE
END SELECT
NEXT y%
NEXT x%
ive looked at ASM tutorials and stuff but they never say exactly what ill need and what ill need to do FIRST. so, is there anyway i can replace that which is below with some quick asm thingy?
FOR x% = x1% * 8 - 2 TO x2% * 8 - 1
FOR y% = y1% * 16 - 1 TO y2% * 16 - 1
SELECT CASE POINT(x%, y%)
CASE 0: PSET (x%, y%), 4
CASE 7
IF POINT(x% - 1, y%) <> 7 THEN PSET (x% - 1, y%), 5
IF POINT(x% + 1, y%) <> 7 THEN PSET (x% + 1, y%), 5
IF POINT(x%, y% - 1) <> 7 THEN PSET (x%, y% - 1), 5
IF POINT(x%, y% + 1) <> 7 THEN PSET (x%, y% + 1), 5
CASE 8
IF POINT(x% - 1, y%) <> 8 THEN PSET (x% - 1, y%), 6
IF POINT(x% + 1, y%) <> 8 THEN PSET (x% + 1, y%), 6
IF POINT(x%, y% - 1) <> 8 THEN PSET (x%, y% - 1), 6
IF POINT(x%, y% + 1) <> 8 THEN PSET (x%, y% + 1), 6
CASE 9
IF POINT(x% - 1, y%) <> 9 THEN PSET (x% - 1, y%), 10
IF POINT(x% + 1, y%) <> 9 THEN PSET (x% + 1, y%), 10
IF POINT(x%, y% - 1) <> 9 THEN PSET (x%, y% - 1), 10
IF POINT(x%, y% + 1) <> 9 THEN PSET (x%, y% + 1), 10
CASE 14
IF POINT(x% - 1, y%) <> 14 THEN PSET (x% - 1, y%), 15
IF POINT(x% + 1, y%) <> 14 THEN PSET (x% + 1, y%), 15
IF POINT(x%, y% - 1) <> 14 THEN PSET (x%, y% - 1), 15
IF POINT(x%, y% + 1) <> 14 THEN PSET (x%, y% + 1), 15
CASE ELSE
END SELECT
NEXT y%
NEXT x%