Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.
|
Forum Index : Microcontroller and PC projects : CMM2: V5.06.00b1 - Pages and Pages
Page 1 of 3 | |||||
Author | Message | ||||
matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 8570 |
V5.06.00b1 http://geoffg.net/Downloads/Maximite/CMM2_Beta.zip As I intimated previously I was thinking about doing major piece of re-coding of the graphics primitives and this is the result. For many programs it should have no impact. For some it will significantly improve performance and a very small number that use Cfunctions in a particular way or peek and poke the graphics memory in some modes will break. Currently I'm only aware this applies to Gauntlet (should be an easy fix for Mauro) and the scrolling text demo in the welcome tape. Previously, all graphics pages were limited to be the same size in any given mode and in modes 3, 5, 6, 7, 12, and 13 lines in all pages were duplicated to match the format needed for the VGA output. In the new version line duplication only occurs for PAGE 0 and, in the case of 12-bit colour, page 1 as well. This means there are many more pages available in these modes which of course include the key modes used for high performance games. In mode 3,8 there are now 55 pages available to the programmer vs 28 previously. In addition pages are packed together more tightly in memory so there are additional pages now available in some other modes. The page addresses are all calculated when the mode is changed and are available for inspection with the command LIST PAGES MM.INFO(MAX PAGES) and MM.INFO(PPAGE ADDRESS n) can be used as before. MM.HRES and MM.VRES track the current write page A new sub command allows you to resize pages to make them smaller than the mode default PAGE RESIZE pageno, width, height When writing to a resized page the new dimensions will be respected by drawing commands as in the demo program and screenshot below. This should provide a huge benefit to anyone looking to develop a TUI type application as each screen tab could have a differently sized page allocated to it. PAGE COPY can be used between identically resized pages but BLIT must be used between pages with different sizes This release also fixes the INC bugs and the DATA bugs and the STRING$ feature (thanks Geoff). I've tested the code with all the welcome tape programs and haven't found anything major other than as described above but this is a major re-write of a big part of the CMM2 internals so please report anything you find on this thread mode 13,16 '400x300 page resize 3,200,200 page resize 2,200,200 list pages page write 2 cls print "Hello this is a test of the first very long string to see if it wraps. " print "Hello this is a test of the second very long string to see if it wraps. " print "Hello this is a test of the third very long string to see if it wraps. " print "Hello this is a test of the fourth very long string to see if it wraps. " print "Hello this is a test of the fifth very long string to see if it wraps. " print "Hello this is a test of the sixth very long string to see if it wraps. " print "Hello this is a test of the seventh very long string to see if it wraps. " print "Apparently it works. Smiley face" box 0,0,mm.hres,mm.vres ' mm.hres and mm.vres track the current write page page write 0 page copy 2 to 3' can do this because they are the same size BLIT 0,0,100,50,200,200,3' pages are different sizes so have to use BLIT do:loop |
||||
twofingers Guru Joined: 02/06/2014 Location: GermanyPosts: 1133 |
Hi Peter, sorry, I am getting strange temporary artifacts from 27-10-2020 15332 MandelbrotEXP.bas s. picture: Regards Michael |
||||
Sasquatch Senior Member Joined: 08/05/2020 Location: United StatesPosts: 296 |
Ver 6.06.00b1 It looks like there may be problems with Page XOR_PIXELS in Mode 1,16. Try Z)oom and then +/- in MandelbrotEXP16. The original MandelbrotEXP using Mode 1,8 seems Ok in this respect. -Carl |
||||
twofingers Guru Joined: 02/06/2014 Location: GermanyPosts: 1133 |
I can't confirm that! The screenshot above is mode 1,8. This picture is better: Edited 2020-11-20 07:45 by twofingers |
||||
PeteCotton Guru Joined: 13/08/2020 Location: CanadaPosts: 313 |
Wow! Another amazing boost to the machine. I cannot thank you enough! |
||||
LeoNicolas Guru Joined: 07/10/2020 Location: CanadaPosts: 440 |
Will be the 5.05 RCxx changes moved to the v5.06? |
||||
matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 8570 |
Since I have precisely no idea what your CFunction is doing I can't possibly give any useful comment. Cfunctions are highly likely to be affected and may need re-compiling but that is not something I can advise on without source RC21 was the basis for the new development |
||||
twofingers Guru Joined: 02/06/2014 Location: GermanyPosts: 1133 |
Isn't it your CSub? Maybe Carl (Sasquatch) will do the recompile. |
||||
PeteCotton Guru Joined: 13/08/2020 Location: CanadaPosts: 313 |
Heliblast now runs at 30 fps. Holy smoke. Awesome job! |
||||
LeoNicolas Guru Joined: 07/10/2020 Location: CanadaPosts: 440 |
After running my octahedron code using this firmware I can confirm that the INC command bug stills happening. |
||||
TassyJim Guru Joined: 07/08/2011 Location: AustraliaPosts: 5886 |
I agree, the INC command seems to ignore the increment. It always INC's by one Jim VK7JH MMedit MMBasic Help |
||||
matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 8570 |
That teaches me for trying to use a shortform parse rather than the generic version. Will fix in the next beta Excellent news - that was the hoped for effect for graphics intensive applications Edited 2020-11-20 17:57 by matherp |
||||
matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 8570 |
V5.06.00b2 http://geoffg.net/Downloads/Maximite/CMM2_Beta.zip I really hope this finally fixes the INC command In addition this release now supports the #DEFINE directive #DEFINE "replacethis", "withthis" The program can support up to 64 #define statements and both parameters must be literal quoted strings. The pre-processor does a simple string substitution of the "replacethis" string with the "withthis" string. Matches within quoted strings in the program are ignored. DEFINEs are executed in reverse order of creation so a symbol can be redefined and from that point on in the program the new definition will be active. Case is ignored in the strings in the DEFINE directive #DEFINE "FROMSTRING","print" #DEFINE "endstring","end" ' FROMSTRING "Hello" 'will be converted to PRINT "Hello" ' #DEFINE "fromstring","TEXT 100,500," FROMSTRING "Hello" 'will be converted to TEXT 100,100,"Hello" ' print @(0,mm.info(Fontheight))"fromstring" 'won't be converted print "" ' list ENDSTRING |
||||
thwill Guru Joined: 16/09/2019 Location: United KingdomPosts: 3833 |
Thanks Peter. Brave man. I predict a flurry of additional enhancement directive requests now arriving, I will try to refrain. Tom Edited 2020-11-20 20:48 by thwill Game*Mite, CMM2 Welcome Tape, Creaky old text adventures |
||||
thwill Guru Joined: 16/09/2019 Location: United KingdomPosts: 3833 |
Actually unless I am experiencing some caching issue that zip file has the wrong contents: Game*Mite, CMM2 Welcome Tape, Creaky old text adventures |
||||
matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 8570 |
Try again - working for me - clear cache if still a problem To make Gauntlet work on V5.06.00 and still on V5.05.06 add the line shown below. Great code from Mauro a single variable change and it all works Edited 2020-11-20 21:50 by matherp |
||||
panky Guru Joined: 02/10/2012 Location: AustraliaPosts: 1094 |
Peter, In the lower resolution pages (such as 3, 4 5 etc), using the LIST PAGES command scrolls the upper section of the list off screen so the only way to see the result is to capture the output somehow via the console. Is there any way to limit the output of LIST PAGES to just one screen full at a time? Doug. ... almost all of the Maximites, the MicromMites, the MM Extremes, the ArmMites, the PicoMite and loving it! |
||||
thwill Guru Joined: 16/09/2019 Location: United KingdomPosts: 3833 |
Two new (probably old) bugs for you @matherp, is this the place to report them? 1. MM.INFO(FILESIZE f$) returns -1 if f$ is the root, IMO should return 2 > Print Mm.Info(FileSize "A:") -1 > Print Mm.Info(FileSize "/") -1 > Print Mm.Info(FileSize "\") -1 > Print Mm.Info(FileSize "A:/zmim") -2 > Print Mm.Info(FileSize "A:\zmim") -2 > Print Mm.Info(FileSize "\zmim") -2 > Print Mm.Info(FileSize "/zmim") -2 2. Behaviour of CWD$() inconsistent between root directory and sub-directories > chdir "/" > Print Cwd$ A:/ > chdir "ZMIM" > Print Cwd$ A:/ZMIM Note that A: gets the trailing "/" but no other directory does. Let a discussion of drives vs. directories begin , but I'm convinced issue #1 is a bug since -1 is the return code for does not exist. Tom Game*Mite, CMM2 Welcome Tape, Creaky old text adventures |
||||
matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 8570 |
1 is what FATFS returns when you ask for the filesize of the root directory so that isn't going to change 2 has probably be built into things like Napolean Commander so that isn't going to change either |
||||
thwill Guru Joined: 16/09/2019 Location: United KingdomPosts: 3833 |
2 has probably be built into things like Napolean Commander so that isn't going to change either Oh well, guess I need to write and use some wrapper functions. Thanks Peter. Game*Mite, CMM2 Welcome Tape, Creaky old text adventures |
||||
Page 1 of 3 |
Print this page |