mirror of
https://github.com/badvision/lawless-legends.git
synced 2024-11-18 23:07:53 +00:00
Some little optimizations for automap display.
This commit is contained in:
parent
faa5270a0c
commit
8f3f60ede7
3
.gitignore
vendored
3
.gitignore
vendored
@ -7,6 +7,9 @@
|
|||||||
*.bak
|
*.bak
|
||||||
*.orig
|
*.orig
|
||||||
|
|
||||||
|
# Don't check in song files
|
||||||
|
*.mid
|
||||||
|
|
||||||
# Ignore utility shortcuts that build and run
|
# Ignore utility shortcuts that build and run
|
||||||
g
|
g
|
||||||
m
|
m
|
||||||
|
@ -247,20 +247,20 @@ end
|
|||||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
def scrollUp(dist)#0
|
def scrollUp(dist)#0
|
||||||
// srcLine srcOff dstLine dstOff width dir nLines
|
// srcLine srcOff dstLine dstOff width dir nLines
|
||||||
scroll(MAP_TOP+dist, MAP_LEFT, MAP_TOP, MAP_LEFT, SCREEN_COLS, 1, (SCREEN_ROWS*8)-dist)
|
scroll(MAP_TOP+dist, MAP_LEFT, MAP_TOP, MAP_LEFT, SCREEN_COLS, 1, (SCREEN_ROWS<<3)-dist)
|
||||||
|
|
||||||
// top, bottom, left, right
|
// top, bottom, left, right
|
||||||
setWindow(MAP_TOP+SCREEN_ROWS*8-dist, MAP_TOP+SCREEN_ROWS*8, MAP_LEFT*7, (MAP_LEFT+SCREEN_COLS)*7)
|
setWindow(MAP_TOP+(SCREEN_ROWS<<3)-dist, MAP_TOP+(SCREEN_ROWS<<3), MAP_LEFT*7, (MAP_LEFT+SCREEN_COLS)*7)
|
||||||
clearWindow
|
clearWindow
|
||||||
end
|
end
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
def scrollDown(dist)#0
|
def scrollDown(dist)#0
|
||||||
word bottom
|
word bottom
|
||||||
bottom = MAP_TOP + (SCREEN_ROWS*8) - 1
|
bottom = MAP_TOP + (SCREEN_ROWS<<3) - 1
|
||||||
|
|
||||||
// srcLine srcOff dstLine dstOff width dir nLines
|
// srcLine srcOff dstLine dstOff width dir nLines
|
||||||
scroll(bottom-dist, MAP_LEFT, bottom, MAP_LEFT, SCREEN_COLS, -1, (SCREEN_ROWS*8)-dist)
|
scroll(bottom-dist, MAP_LEFT, bottom, MAP_LEFT, SCREEN_COLS, -1, (SCREEN_ROWS<<3)-dist)
|
||||||
|
|
||||||
// top, bottom, left, right
|
// top, bottom, left, right
|
||||||
setWindow(MAP_TOP, MAP_TOP+dist, MAP_LEFT*7, (MAP_LEFT+SCREEN_COLS)*7)
|
setWindow(MAP_TOP, MAP_TOP+dist, MAP_LEFT*7, (MAP_LEFT+SCREEN_COLS)*7)
|
||||||
@ -270,23 +270,23 @@ end
|
|||||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
def scrollLeft(dist)#0
|
def scrollLeft(dist)#0
|
||||||
// srcLine srcOff dstLine dstOff width dir nLines
|
// srcLine srcOff dstLine dstOff width dir nLines
|
||||||
scroll(MAP_TOP, MAP_LEFT+dist, MAP_TOP, MAP_LEFT, SCREEN_COLS-dist, 1, SCREEN_ROWS*8)
|
scroll(MAP_TOP, MAP_LEFT+dist, MAP_TOP, MAP_LEFT, SCREEN_COLS-dist, 1, SCREEN_ROWS<<3)
|
||||||
|
|
||||||
// top, bottom, left, right
|
// top, bottom, left, right
|
||||||
setWindow(MAP_TOP, MAP_TOP+SCREEN_ROWS*8, (MAP_LEFT+SCREEN_COLS-dist)*7, (MAP_LEFT+SCREEN_COLS)*7)
|
setWindow(MAP_TOP, MAP_TOP+(SCREEN_ROWS<<3), (MAP_LEFT+SCREEN_COLS-dist)*7, (MAP_LEFT+SCREEN_COLS)*7)
|
||||||
clearWindow
|
clearWindow
|
||||||
end
|
end
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
def scrollRight(dist)#0
|
def scrollRight(dist)#0
|
||||||
word bottom
|
word bottom
|
||||||
bottom = MAP_TOP + (SCREEN_ROWS*8) - 1
|
bottom = MAP_TOP + (SCREEN_ROWS<<3) - 1
|
||||||
|
|
||||||
// srcLine srcOff dstLine dstOff width dir nLines
|
// srcLine srcOff dstLine dstOff width dir nLines
|
||||||
scroll(bottom, MAP_LEFT, bottom, MAP_LEFT+dist, SCREEN_COLS-dist, -1, SCREEN_ROWS*8)
|
scroll(bottom, MAP_LEFT, bottom, MAP_LEFT+dist, SCREEN_COLS-dist, -1, SCREEN_ROWS<<3)
|
||||||
|
|
||||||
// top, bottom, left, right
|
// top, bottom, left, right
|
||||||
setWindow(MAP_TOP, MAP_TOP+SCREEN_ROWS*8, MAP_LEFT*7, (MAP_LEFT+dist)*7)
|
setWindow(MAP_TOP, MAP_TOP+(SCREEN_ROWS<<3), MAP_LEFT*7, (MAP_LEFT+dist)*7)
|
||||||
clearWindow
|
clearWindow
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -441,8 +441,8 @@ end
|
|||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
def displaySection3D(pSection)#0
|
def displaySection3D(pSection)#0
|
||||||
word pSmallTiles, tileTrans, mapData, rowData, pScreen
|
word pSmallTiles, tileTrans, mapData, rowData
|
||||||
byte nTextures, y, rowSize
|
byte nTextures, y, rowSize, line, lx
|
||||||
|
|
||||||
// Figure out where the small tiles reside (at the end of the full size tiles)
|
// Figure out where the small tiles reside (at the end of the full size tiles)
|
||||||
pSmallTiles = pSection=>pm_tileset + 1 + ((^(pSection=>pm_tileset)) << 5)
|
pSmallTiles = pSection=>pm_tileset + 1 + ((^(pSection=>pm_tileset)) << 5)
|
||||||
@ -456,13 +456,17 @@ def displaySection3D(pSection)#0
|
|||||||
loop
|
loop
|
||||||
mapData = tileTrans + (nTextures*3) + 2 // *2 for tilenum+texnum, *1 for texture flags, 2 for zero-terms
|
mapData = tileTrans + (nTextures*3) + 2 // *2 for tilenum+texnum, *1 for texture flags, 2 for zero-terms
|
||||||
|
|
||||||
|
// The +1's below are to skip over the sentinel row and column that 3D maps have
|
||||||
|
rowData = mapData + ((pSection->bm_oy + 1) * rowSize) + pSection->bm_ox + 1
|
||||||
|
// The << 3 below is because each row is 8 screen lines
|
||||||
|
line = (pSection->bm_sy << 3) + MAP_TOP
|
||||||
|
lx = MAP_LEFT + pSection->bm_sx
|
||||||
|
|
||||||
// Display each visible row
|
// Display each visible row
|
||||||
for y = 1 to pSection->bm_ch // offset is 1 to skip over sentinel row
|
for y = 1 to pSection->bm_ch // offset is 1 to skip over sentinel row
|
||||||
// The +1's below are to skip over the sentinel row and column that 3D maps have
|
displayRow3D(getScreenLine(line) + lx, rowData, tileTrans, pSmallTiles, pSection->bm_cw)
|
||||||
rowData = mapData + ((y + pSection->bm_oy) * rowSize) + pSection->bm_ox + 1
|
rowData = rowData + rowSize
|
||||||
// The << 3 below is because each row is 8 screen lines
|
line = line + 8
|
||||||
pScreen = getScreenLine(((y + pSection->bm_sy) << 3) + (MAP_TOP-8)) + MAP_LEFT + pSection->bm_sx
|
|
||||||
displayRow3D(pScreen, rowData, tileTrans, pSmallTiles, pSection->bm_cw)
|
|
||||||
next
|
next
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -610,7 +614,7 @@ def _automap_show()#1
|
|||||||
if screenY1-8 > 0
|
if screenY1-8 > 0
|
||||||
screenY0 = screenY0 - 8 // north
|
screenY0 = screenY0 - 8 // north
|
||||||
screenY1 = screenY1 - 8
|
screenY1 = screenY1 - 8
|
||||||
scrollDown(8*8)
|
scrollDown(64)
|
||||||
fin
|
fin
|
||||||
break
|
break
|
||||||
is 'D'; is 'L'; is 21
|
is 'D'; is 'L'; is 21
|
||||||
@ -624,7 +628,7 @@ def _automap_show()#1
|
|||||||
if screenY0+8 < totalMapHeight-1
|
if screenY0+8 < totalMapHeight-1
|
||||||
screenY0 = screenY0 + 8 // south
|
screenY0 = screenY0 + 8 // south
|
||||||
screenY1 = screenY1 + 8
|
screenY1 = screenY1 + 8
|
||||||
scrollUp(8*8)
|
scrollUp(64)
|
||||||
fin
|
fin
|
||||||
break
|
break
|
||||||
is 'A'; is 'J'; is 8
|
is 'A'; is 'J'; is 8
|
||||||
|
Loading…
Reference in New Issue
Block a user