Some great advice there. I'm sort of brainstorming things while Baggers works on that 256x192 16color driver, but I know he is working on something for OBC first.
Anyone got a link to Eric's code by any chance? (I have one of the drivers, but it didn't come with a demonstration so I'm not sure how to use it).
One thing with the standard propeller palette demo is there doesn't seem to be a yellow on my display. It goes from pale green to brown, and there is no yellow in the supersaturated set either. I'd be interested to see a different color space.
For movies, 256x192 with 16 colors and dithering is going to be fantastic.
For more static displays, I am thinking more along the lines of the tile drivers. eg, say you are displaying a web page, it is mostly a white background, and in the middle is a picture. So you have a white tile and you replicate that many times. And for the picture, that ends up being a number of tiles that might use up most of the memory. (eventually, do the dithering and scaling on the prop itself).
For the second application, is your (@potatohead) driver the best one yet? ie 256x240.
If so, can you explain what these numbers in the .chr file are
Dr_A, I've posted the 16 colour driver example, did you miss it?
Yes, it appears I have missed it (I was on holidays recently). Have you got a link?
Sorry, scratch that, yes I have seen the code from the 29th but I'm not sure how to use it. It starts like this
CON
_clkmode = xtal1 + pll16x
_xinfreq = 5_000_000
OBJ
Lite : "GFX_BINARY_Databus"
PUB Demo
Lite.PropGFX_Start
if(Lite.PropGFX_TestValid==0)
reboot
Lite.SetBasicMode(Lite#PROPGFX_NTSC,Lite#PROPGFX_4BIT_CHAR_MODE,Lite#PROPGFX_0_SCROLL_COGS,0,Lite#PROPGFX_NORMAL_SPRITES) ' mode+8 = SEPERATE CHAR LINE X SCROLLS
Lite.SendBuf(@picchr,$2000,$6000)
Lite.SendBuf(@picmap,$1800,$800)
Lite.SendBuf(@picpal,$1600,$100)
repeat
But I'm not sure what to do with that.
The 256x96 code that you have kindly posted earlier is quite different, and essentially you just put bytes into the array at 'screen' and it displays them.
Have you got a 256x192 display that works in a similar way?
{
Propeller TV Movie player by Dr_Acula (James Moxham), July 2011
Thanks to Baggers for the TV driver and Kye for the SD driver
See the vb.net program to create the movie files
Open source software
' hydra mode is data out 8 clock 9 data in 10, card select 11
}
CON
_clkfreq = 80_000_000 ' 5 Mhz clock
_clkmode = xtal1 + pll16x
_clockDataPin = 29
_clockClockPin = 28
_cardDataOutPin = 12 ' dracblade 12,13,14,15 for sd card
_cardClockPin = 13
_cardDataInPin = 14
_cardChipSelectPin = 15
' _switchRate = 5
' Keyboard
NUM = %100
CAPS = %010
SCROLL = %001
RepeatRate = 40
' MaxIcons = 15
' video setting
'modepins = %010_0000 ' dracblade = %010_0000, PROTO/DEMO BOARD = %001_0101, HYDRA = %011_0000
modepins = %010_0000 ' dracblade = %010_0000, PROTO/DEMO BOARD = %001_0101, HYDRA = %011_0000
'modepins = %001_0101 ' dracblade = %010_0000, PROTO/DEMO BOARD = %001_0101, HYDRA = %011_0000
PAL = %0001
NTSC = %0000
mode = $c0 + NTSC
x_tiles = 16
y_tiles = 6
my_hx = 11+((mode&1)*6)
'x_pixels = x_tiles*16 ' ? not used
'y_pixels = y_tiles*16
OBJ
fat : "SD2.0_FATEngine.spin" ' thanks to Kye
tv : "JB_TV_AMS_03"
VAR
long i ' general purpose variable
PUB Main
tv.start(@tvparams)
ifnot(fat.FATEngineStart(_cardDataOutPin, _cardClockPin, _cardDataInPin, _cardChipSelectPin, _clockDataPin, _clockClockPin))
reboot
fat.mountPartition(0,0) ' mount the sd card
Wallpaper ' startup splash screen
' repeat i from 0 to 600000 ' delay
' Movie(4266) ' play n frames in the movie
PUB Wallpaper
fat.openfile(string("taz.tv"),"R") ' 128x96
' fat.openfile(string("prop128.tv"),"R") ' 128x96
fat.readdata(@screen,256*96)
fat.closefile
PUB Movie(n)
fat.openfile(string("matrix2.tvm"),"R") ' 256x96 per frame
repeat i from 1 to n ' number of frames
fat.readdata(@screen,24576) ' 24576 bytes per frame
fat.closefile ' close the file
DAT
tvparams long 0 'status
long 1 'enable
long modepins 'pins
long mode 'mode
long x_tiles 'hc
long y_tiles 'vc
long my_hx 'hx
VSyncFlag long 0
nextline long 0
tvbitmapptr long @screen+$10
bordercolour long $02
long @palette+$10
screen byte $1b[256*96] 'file "title.bit"
@OBC: I saw this first on your YouTube channel, and I love it! I'm not big into retro games, and the entire reason I'm exited about PropGFX is that it can do nice GUI, so this is great!!
I'll download the code, but I have a job for the next 2 weeks that's pretty tight, so I may not get to work with it for a while. :-(
OBC, IIRC the VGA driver needed 6Mhz to get 320 pixels res, so it may be possible to do it 256 pixels wide, but not at the mo.
GFX is already VGA/Composite compatible, just a case of swapping the video driver, but you'll need 6Mhz as I coded it for 320 pixel width, and 256 modes have border like tv.
Jeff, we're seeing what people do with this free version, before even thinking about any upgrades to the full Lite version. etc!
It's basically a trial, to see if it's viable to take it further!
I think 3x5 is going to be too small to read. NTSC displays vary in quality and I would not recommend going below 8x8 so you know everyone will be able to read the text.
I think 3x5 is going to be too small to read. NTSC displays vary in quality and I would not recommend going below 8x8 so you know everyone will be able to read the text.
Here's another video test (and some discoveries I've made)
While it IS possible to do a minimal Windows style system using the PropGFX, I'm using 50% of my resources to pull this off. I'm going to move toward a combination of text and fixed controls where everything is a single "window" instead of Window(s). I think it'll be a better use of my resources. but impressive no?
Regarding windows and complexity, I came across the same issue recently with the efforts in C, and I am thinking at the moment that you only have one window, but you can have a special case popup dialog window that asks questions "yes/no" and is an input box. Thinking of other "special case" windows, that might also include the file directory dialog box from the .net programs, and the color picker box.
Generally these boxes/windows need immediate input from the user, and once something is selected (a file or whatever), the box is closed. This is very different from the behavior of windows that stay open all the time.
The popup dialog can capture the screen behind it first, then ask for input, and then redraw the screen behind afterwards. And you have to blank the mouse as well during those redraws.
Comments
Anyone got a link to Eric's code by any chance? (I have one of the drivers, but it didn't come with a demonstration so I'm not sure how to use it).
One thing with the standard propeller palette demo is there doesn't seem to be a yellow on my display. It goes from pale green to brown, and there is no yellow in the supersaturated set either. I'd be interested to see a different color space.
For movies, 256x192 with 16 colors and dithering is going to be fantastic.
For more static displays, I am thinking more along the lines of the tile drivers. eg, say you are displaying a web page, it is mostly a white background, and in the middle is a picture. So you have a white tile and you replicate that many times. And for the picture, that ends up being a number of tiles that might use up most of the memory. (eventually, do the dithering and scaling on the prop itself).
For the second application, is your (@potatohead) driver the best one yet? ie 256x240.
If so, can you explain what these numbers in the .chr file are
I think the background is white, so using the standard prop palette that would be $07. What is $FF
Yes, it appears I have missed it (I was on holidays recently). Have you got a link?
Sorry, scratch that, yes I have seen the code from the 29th but I'm not sure how to use it. It starts like this
But I'm not sure what to do with that.
The 256x96 code that you have kindly posted earlier is quite different, and essentially you just put bytes into the array at 'screen' and it displays them.
Have you got a 256x192 display that works in a similar way?
I'm not sure how to turn off the screen during the image loads, but my boy said that it made it look a little more "retro". (I'm proud of that kid!)
Edit: The next demo I'm working on is a non-game application of PropGFX. (Now that's different!)
Enjoy!
OBC
If you want to blank the screen in between slides just wipe the palette.
Insert this line into your imageload method at the top ;-)
Regards,
Coley
Grab a mouse and plug it in! It's a GUI control.
For some reason my screen doesn't always Sync. (Maybe Coley will have an answer) If yours doesn't, just run it again.
Guess what I'm creating to show at the expo?
OBC
Enjoy!
I'll download the code, but I have a job for the next 2 weeks that's pretty tight, so I may not get to work with it for a while. :-(
What is the screen resolution on that demo?
OBC
Any chance of VGA compatibility at this resolution so that the PropGFX becomes a universal video driver?
OBC
GFX is already VGA/Composite compatible, just a case of swapping the video driver, but you'll need 6Mhz as I coded it for 320 pixel width, and 256 modes have border like tv.
Or would I need to change the first few bytes to switch to 6mhz or would this work at all?
OBC
So what do we need to do to purchase the "expanded" version of this from you guys?
OBC
It's basically a trial, to see if it's viable to take it further!
For some reason I'm still fighting with sprite colors. Background doesn't always want to cooperate, or my position calculations are off.
A little step-by-step of the process that works best would be appreciated. Don't care if the programs are commercial at this point.
OBC
OBC
Edit: Hey Baggers, do you have a tiny font I can use with this?
Would a 3x5 do? ( 4x6 with gap )
It's in bitmap mode, but I'd like to run it in CHAR mode, so I can get a nice background in somewhere.
3x5 sounds good.
OBC
OBC
This looks almost like 5x5
Gonna do some testing and see what looks good.
OBC
While it IS possible to do a minimal Windows style system using the PropGFX, I'm using 50% of my resources to pull this off. I'm going to move toward a combination of text and fixed controls where everything is a single "window" instead of Window(s). I think it'll be a better use of my resources. but impressive no?
OBC
Regarding windows and complexity, I came across the same issue recently with the efforts in C, and I am thinking at the moment that you only have one window, but you can have a special case popup dialog window that asks questions "yes/no" and is an input box. Thinking of other "special case" windows, that might also include the file directory dialog box from the .net programs, and the color picker box.
Generally these boxes/windows need immediate input from the user, and once something is selected (a file or whatever), the box is closed. This is very different from the behavior of windows that stay open all the time.
The popup dialog can capture the screen behind it first, then ask for input, and then redraw the screen behind afterwards. And you have to blank the mouse as well during those redraws.
What language are you writing this in?