mirror of
https://github.com/dschmenk/PLASMA.git
synced 2025-04-05 03:37:43 +00:00
All graphics libraries get consistent mode set API
This commit is contained in:
parent
912a865a25
commit
8f3780617b
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -13,4 +13,7 @@ import dgrlib
|
||||
predef dgrSwap#0
|
||||
predef dgrDrawBuf(page)#0
|
||||
predef dgrColor(clr)#0
|
||||
const dgrPage1 = 0
|
||||
const dgrPage2 = 1
|
||||
const dgrOff = -1
|
||||
end
|
||||
|
@ -13,4 +13,7 @@ import grlib
|
||||
predef grSwap#0
|
||||
predef grDrawBuf(page)#0
|
||||
predef grColor(clr)#0
|
||||
const grPage1 = 0
|
||||
const grPage2 = 1
|
||||
const grOff = -1
|
||||
end
|
||||
|
@ -21,4 +21,7 @@ import hgrlib
|
||||
predef hgrSwap#1
|
||||
predef hgrDrawBuf(page)#1
|
||||
predef hgrColor(clr)#0
|
||||
const hgrPage1 = 0
|
||||
const hgrPage2 = 1
|
||||
const hgrOff = -1
|
||||
end
|
||||
|
@ -5,9 +5,5 @@ import hgrtile
|
||||
predef tileAndDraw(x, y, tileptr)#0
|
||||
predef tileDrawStr(x, y, strptr, strlen, tileset)#0
|
||||
predef tileFromText(txtpage, tileset)#0
|
||||
predef tileMode(mode)#1
|
||||
predef tileClear#0
|
||||
predef tileShow(page)#1
|
||||
predef tileSwap#1
|
||||
predef tileDrawBuf(page)#1
|
||||
end
|
||||
|
@ -520,32 +520,48 @@ export def dgrClear(clr)#0
|
||||
dgrFill(0, 0, @clrtile)
|
||||
end
|
||||
export def dgrMode(mode)#1
|
||||
if mode
|
||||
//
|
||||
// Set double lores graphics, return draw buffer
|
||||
//
|
||||
^showlores
|
||||
^showfull
|
||||
^showgraphics
|
||||
^showpage1
|
||||
^ena80 = 0
|
||||
^show80 = 0
|
||||
^an3on
|
||||
drawpage = 1
|
||||
drawbuff = dgrbuff[1]
|
||||
return 1
|
||||
fin
|
||||
//
|
||||
// Set text mode
|
||||
//
|
||||
^showtext
|
||||
^showpage1
|
||||
^ena80 = 0
|
||||
^show40 = 0
|
||||
^mapmain = 0
|
||||
^an3off
|
||||
call($FC58, 0, 0, 0, 0) // home()
|
||||
return 0
|
||||
when mode
|
||||
is page1
|
||||
//
|
||||
// Set double lores graphics, return draw buffer
|
||||
//
|
||||
^showlores
|
||||
^showfull
|
||||
^showgraphics
|
||||
^showpage1
|
||||
^ena80 = 0
|
||||
^show80 = 0
|
||||
^an3on
|
||||
drawpage = page2
|
||||
drawbuff = dgrbuff[page2]
|
||||
break
|
||||
is page2
|
||||
//
|
||||
// Set double lores graphics, return draw buffer
|
||||
//
|
||||
^showlores
|
||||
^showfull
|
||||
^showgraphics
|
||||
^showpage1
|
||||
^ena80 = 0
|
||||
^show80 = 0
|
||||
^an3on
|
||||
drawpage = 1
|
||||
drawbuff = dgrbuff[1]
|
||||
break
|
||||
otherwise
|
||||
//
|
||||
// Set text mode
|
||||
//
|
||||
^showtext
|
||||
^showpage1
|
||||
^ena80 = 0
|
||||
^show40 = 0
|
||||
^mapmain = 0
|
||||
^an3off
|
||||
call($FC58, 0, 0, 0, 0) // home()
|
||||
wend
|
||||
return mode
|
||||
end
|
||||
//
|
||||
// Set display page, return other page
|
||||
|
@ -443,33 +443,50 @@ end
|
||||
// Set lores graphics, return draw buffer
|
||||
//
|
||||
export def grMode(mode)#1
|
||||
if mode
|
||||
//
|
||||
// Set GR mode
|
||||
//
|
||||
^showlores
|
||||
^showfull
|
||||
^showgraphics
|
||||
^showpage1
|
||||
^ena80 = 0
|
||||
^show40 = 0
|
||||
^mapmain = 0
|
||||
^an3off
|
||||
drawpage = 1
|
||||
drawbuff = grbuff[1]
|
||||
return 1
|
||||
fin
|
||||
//
|
||||
// Set text mode
|
||||
//
|
||||
^showtext
|
||||
^showpage1
|
||||
^ena80 = 0
|
||||
^show40 = 0
|
||||
^mapmain = 0
|
||||
^an3off
|
||||
call($FC58, 0, 0, 0, 0) // home()
|
||||
return 0
|
||||
when mode
|
||||
is page1
|
||||
//
|
||||
// Set GR mode
|
||||
//
|
||||
^showlores
|
||||
^showfull
|
||||
^showgraphics
|
||||
^showpage1
|
||||
^ena80 = 0
|
||||
^show40 = 0
|
||||
^mapmain = 0
|
||||
^an3off
|
||||
drawpage = page2
|
||||
drawbuff = grbuff[page2]
|
||||
break
|
||||
is page2
|
||||
//
|
||||
// Set GR mode
|
||||
//
|
||||
^showlores
|
||||
^showfull
|
||||
^showgraphics
|
||||
^showpage2
|
||||
^ena80 = 0
|
||||
^show40 = 0
|
||||
^mapmain = 0
|
||||
^an3off
|
||||
drawpage = page1
|
||||
drawbuff = grbuff[page1]
|
||||
break
|
||||
otherwise
|
||||
//
|
||||
// Set text mode
|
||||
//
|
||||
^showtext
|
||||
^showpage1
|
||||
^ena80 = 0
|
||||
^show40 = 0
|
||||
^mapmain = 0
|
||||
^an3off
|
||||
call($FC58, 0, 0, 0, 0) // home()
|
||||
wend
|
||||
return mode
|
||||
end
|
||||
//
|
||||
// Set display page, return other page
|
||||
|
@ -1157,14 +1157,7 @@ export def hgrBLT(x, y, w, h, srcptr)#0
|
||||
end
|
||||
export def hgrMode(mode)#1
|
||||
when mode
|
||||
is 0
|
||||
//
|
||||
// Show text mode
|
||||
//
|
||||
^showpage1
|
||||
^showtext
|
||||
break
|
||||
is 1
|
||||
is page1
|
||||
//
|
||||
// Set HGR1 mode
|
||||
//
|
||||
@ -1173,21 +1166,27 @@ export def hgrMode(mode)#1
|
||||
^showfull
|
||||
^showhires
|
||||
^showgraphics
|
||||
drawpage = 1
|
||||
drawbuff = hgrbuff[1]
|
||||
drawpage = page2
|
||||
drawbuff = hgrbuff[page2]
|
||||
break
|
||||
is 2
|
||||
is page2
|
||||
//
|
||||
// Set HGR2 mode
|
||||
//
|
||||
memset(hgr2, 0, $2000) // Clear HGR2
|
||||
^showpage1
|
||||
^showpage2
|
||||
^showfull
|
||||
^showhires
|
||||
^showgraphics
|
||||
drawpage = 1
|
||||
drawbuff = hgrbuff[1]
|
||||
drawpage = page1
|
||||
drawbuff = hgrbuff[page1]
|
||||
break
|
||||
otherwise
|
||||
//
|
||||
// Show text mode
|
||||
//
|
||||
^showpage1
|
||||
^showtext
|
||||
wend
|
||||
return mode
|
||||
end
|
||||
|
@ -353,44 +353,9 @@ export def tileFromText(txtpage, tileset)#0
|
||||
tileDrawStr(0, y, rowaddr[y] | txtptr, 40, tileset)
|
||||
next
|
||||
end
|
||||
export def tileMode(mode)#1
|
||||
if mode
|
||||
//
|
||||
// Set HGR mode
|
||||
//
|
||||
memset(hgr1, 0, $2000) // Clear HGR page 1
|
||||
^showpage1
|
||||
^showfull
|
||||
^showhires
|
||||
^showgraphics
|
||||
drawpage = 0
|
||||
drawbuff = hgr1
|
||||
return 0
|
||||
fin
|
||||
//
|
||||
// Show text mode
|
||||
//
|
||||
^showpage1
|
||||
^showtext
|
||||
return 0
|
||||
end
|
||||
export def tileClear#0
|
||||
memset(drawbuff, $0000, drawbuff) // Clear current HGR page
|
||||
end
|
||||
//
|
||||
// Set display page, return other page
|
||||
// Set draw buffer
|
||||
//
|
||||
export def tileShow(page)#1
|
||||
page = page & 1
|
||||
^(showpage1 + page)
|
||||
return page ^ 1
|
||||
end
|
||||
export def tileSwap#1
|
||||
^(showpage1 + drawpage)
|
||||
drawpage = drawpage ^ 1
|
||||
drawbuff = hgrbuff[drawpage]
|
||||
return drawpage
|
||||
end
|
||||
export def tileDrawBuf(page)#1
|
||||
drawpage = page & 1
|
||||
drawbuff = hgrbuff[drawpage]
|
||||
|
@ -24,8 +24,8 @@ def dgrTest#0
|
||||
byte b, l, k
|
||||
word i, j, ii, ij
|
||||
|
||||
b = dgrMode(TRUE)
|
||||
dgrDrawBuf(0)
|
||||
b = dgrMode(dgrPage1)
|
||||
dgrDrawBuf(dgrPage1)
|
||||
for k = 15 downto 0
|
||||
dgrClear(k)
|
||||
next
|
||||
@ -43,7 +43,7 @@ def dgrTest#0
|
||||
i = 40
|
||||
j = 10
|
||||
^$C010
|
||||
dgrDrawBuf(1)
|
||||
dgrDrawBuf(dgrPage2)
|
||||
while ^$C000 < 128
|
||||
dgrFill(k, k, @tile1)
|
||||
dgrBLT(i, j, 8, 8, @sprite1)
|
||||
@ -59,7 +59,7 @@ def dgrTest#0
|
||||
fin
|
||||
loop
|
||||
^$C010
|
||||
dgrMode(FALSE)
|
||||
dgrMode(dgrOff)
|
||||
end
|
||||
|
||||
dgrTest
|
||||
|
@ -24,8 +24,8 @@ def grTest#0
|
||||
byte b, l, k
|
||||
word i, j, ii, ij
|
||||
|
||||
b = grMode(TRUE)
|
||||
grDrawBuf(0)
|
||||
b = grMode(grPage1)
|
||||
grDrawBuf(grPage1)
|
||||
for k = 15 downto 0
|
||||
grClear(k)
|
||||
next
|
||||
@ -43,7 +43,7 @@ def grTest#0
|
||||
i = 20
|
||||
j = 10
|
||||
^$C010
|
||||
grDrawBuf(1)
|
||||
grDrawBuf(grPage2)
|
||||
while ^$C000 < 128
|
||||
grFill(k, k, @tile1)
|
||||
grBLT(i, j, 8, 8, @sprite1)
|
||||
@ -59,7 +59,7 @@ def grTest#0
|
||||
fin
|
||||
loop
|
||||
^$C010
|
||||
grMode(FALSE)
|
||||
grMode(grOff)
|
||||
end
|
||||
|
||||
grTest
|
||||
|
@ -65,16 +65,16 @@ def testblt(sprtnum)#0
|
||||
loop
|
||||
end
|
||||
|
||||
hgrMode(TRUE)
|
||||
spriteDrawBuf(hgrDrawBuf(0)) // So we can see the compile process
|
||||
hgrMode(hgrPage1)
|
||||
spriteDrawBuf(hgrDrawBuf(hgrPage1)) // So we can see the compile process
|
||||
sprtBall = spriteCompile(10, 10, 5, 5, @ball)
|
||||
hgrColor(0)
|
||||
hgrClear()
|
||||
testline
|
||||
memcpy($4000, $2000, $2000) // Copy to both buffers
|
||||
spriteDrawBuf(hgrDrawBuf(1))
|
||||
spriteDrawBuf(hgrDrawBuf(hgrPage2))
|
||||
spriteAdd(0, sprtBall)
|
||||
testblt(16)
|
||||
getc
|
||||
hgrMode(FALSE)
|
||||
hgrMode(hgrOff)
|
||||
done
|
||||
|
@ -575,8 +575,8 @@ next
|
||||
heapstart = heapmark()
|
||||
//puts("\nBeginning available memory: "); puti(heapavail()); putln
|
||||
repeat
|
||||
hgrMode(TRUE)
|
||||
spriteDrawBuf(hgrDrawBuf(0)) // Single buffered
|
||||
hgrMode(hgrPage1)
|
||||
spriteDrawBuf(hgrDrawBuf(hgrPage1)) // Single buffered
|
||||
spriteAdd(SHIP_SPRTNUM, sprtShip)
|
||||
spriteAdd(SPIDER_SPRTEBASE, sprtEgg3)
|
||||
//
|
||||
@ -617,7 +617,8 @@ repeat
|
||||
puts("\nEarth has been overrun")
|
||||
puts("\nby the Spiders from Mars\n")
|
||||
fin
|
||||
hgrMode(FALSE)
|
||||
hgrMode(hgrOFF)
|
||||
//hgrDrawBuf(hgrPage1)
|
||||
//
|
||||
// Clear sprite lists
|
||||
//
|
||||
|
@ -169,8 +169,8 @@ var sprtSplat1, sprtSplat2
|
||||
var sprtWeb1, sprtWeb2, sprtWeb3
|
||||
var sprtShip, sprtMissle, sprtDummy
|
||||
|
||||
hgrMode(TRUE)
|
||||
spriteDrawBuf(hgrDrawBuf(0)) // So we can see the compile process
|
||||
hgrMode(hgrPage1)
|
||||
spriteDrawBuf(hgrDrawBuf(hgrPage1)) // So we can see the compile process
|
||||
sprtShip = spriteCompile(14, 14, 7, 13, @ship)
|
||||
sprtMissle = spriteCompile( 6, 8, 3, 0, @missle)
|
||||
sprtEgg3 = spriteCompile(14, 12, 7, 6, @egg3)
|
||||
@ -185,7 +185,7 @@ sprtWeb3 = spriteCompile(20, 8, 10, 0, @web3)
|
||||
sprtSplat1 = spriteCompile(20, 13, 10, 6, @splat1)
|
||||
sprtSplat2 = spriteCompile(24, 17, 12, 8, @splat2)
|
||||
sprtDummy = spriteCompile( 7, 8, 0, 0, @dummy)
|
||||
hgrMode(FALSE)
|
||||
hgrMode(hgrOff)
|
||||
spriteSave("SHIP", sprtShip)
|
||||
spriteSave("MISSLE", sprtMissle)
|
||||
spriteSave("EGG3", sprtEgg3)
|
||||
|
@ -1,13 +1,15 @@
|
||||
include "inc/cmdsys.plh"
|
||||
include "inc/hgrlib.plh"
|
||||
include "inc/hgrtile.plh"
|
||||
include "inc/hgrfont.plh"
|
||||
sysflags reshgr1 // Reserve HGR page 1
|
||||
|
||||
tileMode(TRUE)
|
||||
hgrMode(hgrPage1)
|
||||
tileDrawBuf(hgrPage1)
|
||||
hgrPutStr(5, 1, "Hello HiRes Tile Demo")
|
||||
getc
|
||||
tileFromText(0, @hgrFont)
|
||||
getc
|
||||
tileMode(FALSE)
|
||||
hgrMode(hgrOff)
|
||||
done
|
||||
|
||||
|
@ -30,7 +30,7 @@ SRC" GRLIB.4TH"
|
||||
;
|
||||
|
||||
: BOUNCE
|
||||
1 GRMODE DROP
|
||||
0 GRMODE DROP
|
||||
0 GRDRAWBUF
|
||||
0 GRCLEAR
|
||||
BEGIN
|
||||
@ -38,7 +38,7 @@ SRC" GRLIB.4TH"
|
||||
?TERMINAL
|
||||
UNTIL
|
||||
KEY DROP
|
||||
0 GRMODE DROP
|
||||
-1 GRMODE DROP
|
||||
;
|
||||
|
||||
BOUNCE
|
||||
|
@ -34,7 +34,7 @@ SRC" HGRLIB.4TH"
|
||||
;
|
||||
|
||||
: BOUNCE
|
||||
1 HGRMODE DROP
|
||||
0 HGRMODE DROP
|
||||
0 HGRDRAWBUF DROP
|
||||
0 HGRSHOW DROP
|
||||
BEGIN
|
||||
@ -42,7 +42,7 @@ SRC" HGRLIB.4TH"
|
||||
?TERMINAL
|
||||
UNTIL
|
||||
KEY DROP
|
||||
0 HGRMODE DROP
|
||||
-1 HGRMODE DROP
|
||||
;
|
||||
|
||||
BOUNCE
|
||||
|
Loading…
x
Reference in New Issue
Block a user