Implementing AggPas with PtcGraph

classic Classic list List threaded Threaded
103 messages Options
1 ... 3456
Reply | Threaded
Open this post in threaded view
|

Re: Implementing AggPas with PtcGraph

Zaaphod
I defined a static array to convert the mode 13h VGA palette to separate red, green and blue to send to aggpas as well as the packed RGB565 format needed to send to ptcgraph 16bit colors.

James


Type
   VGARGBRec= Record
      R,G,B:Byte;
      RGB:Word;
   end;

Const
   VGA256: Array[0..255] of VGARGBRec = (
      (R:$00; G:$00; B:$00; RGB:$0000),
      (R:$00; G:$00; B:$AA; RGB:$0015),
      (R:$00; G:$AA; B:$00; RGB:$0540),
      (R:$00; G:$AA; B:$AA; RGB:$0555),
      (R:$AA; G:$00; B:$00; RGB:$A800),
      (R:$AA; G:$00; B:$AA; RGB:$A815),
      (R:$AA; G:$55; B:$00; RGB:$AAA0),
      (R:$AA; G:$AA; B:$AA; RGB:$AD55),
      (R:$55; G:$55; B:$55; RGB:$52AA),
      (R:$55; G:$55; B:$FF; RGB:$52BF),
      (R:$55; G:$FF; B:$55; RGB:$57EA),
      (R:$55; G:$FF; B:$FF; RGB:$57FF),
      (R:$FF; G:$55; B:$55; RGB:$FAAA),
      (R:$FF; G:$55; B:$FF; RGB:$FABF),
      (R:$FF; G:$FF; B:$55; RGB:$FFEA),
      (R:$FF; G:$FF; B:$FF; RGB:$FFFF),
      (R:$00; G:$00; B:$00; RGB:$0000),
      (R:$14; G:$14; B:$14; RGB:$10A2),
      (R:$20; G:$20; B:$20; RGB:$2104),
      (R:$2C; G:$2C; B:$2C; RGB:$2965),
      (R:$38; G:$38; B:$38; RGB:$39C7),
      (R:$44; G:$44; B:$44; RGB:$4228),
      (R:$50; G:$50; B:$50; RGB:$528A),
      (R:$61; G:$61; B:$61; RGB:$630C),
      (R:$71; G:$71; B:$71; RGB:$738E),
      (R:$81; G:$81; B:$81; RGB:$8410),
      (R:$91; G:$91; B:$91; RGB:$9492),
      (R:$A1; G:$A1; B:$A1; RGB:$A514),
      (R:$B6; G:$B6; B:$B6; RGB:$B5B6),
      (R:$CA; G:$CA; B:$CA; RGB:$CE59),
      (R:$E2; G:$E2; B:$E2; RGB:$E71C),
      (R:$FF; G:$FF; B:$FF; RGB:$FFFF),
      (R:$00; G:$00; B:$FF; RGB:$001F),
      (R:$40; G:$00; B:$FF; RGB:$401F),
      (R:$7D; G:$00; B:$FF; RGB:$781F),
      (R:$BE; G:$00; B:$FF; RGB:$B81F),
      (R:$FF; G:$00; B:$FF; RGB:$F81F),
      (R:$FF; G:$00; B:$BE; RGB:$F817),
      (R:$FF; G:$00; B:$7D; RGB:$F80F),
      (R:$FF; G:$00; B:$40; RGB:$F808),
      (R:$FF; G:$00; B:$00; RGB:$F800),
      (R:$FF; G:$40; B:$00; RGB:$FA00),
      (R:$FF; G:$7D; B:$00; RGB:$FBE0),
      (R:$FF; G:$BE; B:$00; RGB:$FDE0),
      (R:$FF; G:$FF; B:$00; RGB:$FFE0),
      (R:$BE; G:$FF; B:$00; RGB:$BFE0),
      (R:$7D; G:$FF; B:$00; RGB:$7FE0),
      (R:$40; G:$FF; B:$00; RGB:$47E0),
      (R:$00; G:$FF; B:$00; RGB:$07E0),
      (R:$00; G:$FF; B:$40; RGB:$07E8),
      (R:$00; G:$FF; B:$7D; RGB:$07EF),
      (R:$00; G:$FF; B:$BE; RGB:$07F7),
      (R:$00; G:$FF; B:$FF; RGB:$07FF),
      (R:$00; G:$BE; B:$FF; RGB:$05FF),
      (R:$00; G:$7D; B:$FF; RGB:$03FF),
      (R:$00; G:$40; B:$FF; RGB:$021F),
      (R:$7D; G:$7D; B:$FF; RGB:$7BFF),
      (R:$9D; G:$7D; B:$FF; RGB:$9BFF),
      (R:$BE; G:$7D; B:$FF; RGB:$BBFF),
      (R:$DE; G:$7D; B:$FF; RGB:$DBFF),
      (R:$FF; G:$7D; B:$FF; RGB:$FBFF),
      (R:$FF; G:$7D; B:$DE; RGB:$FBFB),
      (R:$FF; G:$7D; B:$BE; RGB:$FBF7),
      (R:$FF; G:$7D; B:$9D; RGB:$FBF3),
      (R:$FF; G:$7D; B:$7D; RGB:$FBEF),
      (R:$FF; G:$9D; B:$7D; RGB:$FCEF),
      (R:$FF; G:$BE; B:$7D; RGB:$FDEF),
      (R:$FF; G:$DE; B:$7D; RGB:$FEEF),
      (R:$FF; G:$FF; B:$7D; RGB:$FFEF),
      (R:$DE; G:$FF; B:$7D; RGB:$DFEF),
      (R:$BE; G:$FF; B:$7D; RGB:$BFEF),
      (R:$9D; G:$FF; B:$7D; RGB:$9FEF),
      (R:$7D; G:$FF; B:$7D; RGB:$7FEF),
      (R:$7D; G:$FF; B:$9D; RGB:$7FF3),
      (R:$7D; G:$FF; B:$BE; RGB:$7FF7),
      (R:$7D; G:$FF; B:$DE; RGB:$7FFB),
      (R:$7D; G:$FF; B:$FF; RGB:$7FFF),
      (R:$7D; G:$DE; B:$FF; RGB:$7EFF),
      (R:$7D; G:$BE; B:$FF; RGB:$7DFF),
      (R:$7D; G:$9D; B:$FF; RGB:$7CFF),
      (R:$B6; G:$B6; B:$FF; RGB:$B5BF),
      (R:$C6; G:$B6; B:$FF; RGB:$C5BF),
      (R:$DA; G:$B6; B:$FF; RGB:$DDBF),
      (R:$EA; G:$B6; B:$FF; RGB:$EDBF),
      (R:$FF; G:$B6; B:$FF; RGB:$FDBF),
      (R:$FF; G:$B6; B:$EA; RGB:$FDBD),
      (R:$FF; G:$B6; B:$DA; RGB:$FDBB),
      (R:$FF; G:$B6; B:$C6; RGB:$FDB8),
      (R:$FF; G:$B6; B:$B6; RGB:$FDB6),
      (R:$FF; G:$C6; B:$B6; RGB:$FE36),
      (R:$FF; G:$DA; B:$B6; RGB:$FED6),
      (R:$FF; G:$EA; B:$B6; RGB:$FF56),
      (R:$FF; G:$FF; B:$B6; RGB:$FFF6),
      (R:$EA; G:$FF; B:$B6; RGB:$EFF6),
      (R:$DA; G:$FF; B:$B6; RGB:$DFF6),
      (R:$C6; G:$FF; B:$B6; RGB:$C7F6),
      (R:$B6; G:$FF; B:$B6; RGB:$B7F6),
      (R:$B6; G:$FF; B:$C6; RGB:$B7F8),
      (R:$B6; G:$FF; B:$DA; RGB:$B7FB),
      (R:$B6; G:$FF; B:$EA; RGB:$B7FD),
      (R:$B6; G:$FF; B:$FF; RGB:$B7FF),
      (R:$B6; G:$EA; B:$FF; RGB:$B75F),
      (R:$B6; G:$DA; B:$FF; RGB:$B6DF),
      (R:$B6; G:$C6; B:$FF; RGB:$B63F),
      (R:$00; G:$00; B:$71; RGB:$000E),
      (R:$1C; G:$00; B:$71; RGB:$180E),
      (R:$38; G:$00; B:$71; RGB:$380E),
      (R:$55; G:$00; B:$71; RGB:$500E),
      (R:$71; G:$00; B:$71; RGB:$700E),
      (R:$71; G:$00; B:$55; RGB:$700A),
      (R:$71; G:$00; B:$38; RGB:$7007),
      (R:$71; G:$00; B:$1C; RGB:$7003),
      (R:$71; G:$00; B:$00; RGB:$7000),
      (R:$71; G:$1C; B:$00; RGB:$70E0),
      (R:$71; G:$38; B:$00; RGB:$71C0),
      (R:$71; G:$55; B:$00; RGB:$72A0),
      (R:$71; G:$71; B:$00; RGB:$7380),
      (R:$55; G:$71; B:$00; RGB:$5380),
      (R:$38; G:$71; B:$00; RGB:$3B80),
      (R:$1C; G:$71; B:$00; RGB:$1B80),
      (R:$00; G:$71; B:$00; RGB:$0380),
      (R:$00; G:$71; B:$1C; RGB:$0383),
      (R:$00; G:$71; B:$38; RGB:$0387),
      (R:$00; G:$71; B:$55; RGB:$038A),
      (R:$00; G:$71; B:$71; RGB:$038E),
      (R:$00; G:$55; B:$71; RGB:$02AE),
      (R:$00; G:$38; B:$71; RGB:$01CE),
      (R:$00; G:$1C; B:$71; RGB:$00EE),
      (R:$38; G:$38; B:$71; RGB:$39CE),
      (R:$44; G:$38; B:$71; RGB:$41CE),
      (R:$55; G:$38; B:$71; RGB:$51CE),
      (R:$61; G:$38; B:$71; RGB:$61CE),
      (R:$71; G:$38; B:$71; RGB:$71CE),
      (R:$71; G:$38; B:$61; RGB:$71CC),
      (R:$71; G:$38; B:$55; RGB:$71CA),
      (R:$71; G:$38; B:$44; RGB:$71C8),
      (R:$71; G:$38; B:$38; RGB:$71C7),
      (R:$71; G:$44; B:$38; RGB:$7227),
      (R:$71; G:$55; B:$38; RGB:$72A7),
      (R:$71; G:$61; B:$38; RGB:$7307),
      (R:$71; G:$71; B:$38; RGB:$7387),
      (R:$61; G:$71; B:$38; RGB:$6387),
      (R:$55; G:$71; B:$38; RGB:$5387),
      (R:$44; G:$71; B:$38; RGB:$4387),
      (R:$38; G:$71; B:$38; RGB:$3B87),
      (R:$38; G:$71; B:$44; RGB:$3B88),
      (R:$38; G:$71; B:$55; RGB:$3B8A),
      (R:$38; G:$71; B:$61; RGB:$3B8C),
      (R:$38; G:$71; B:$71; RGB:$3B8E),
      (R:$38; G:$61; B:$71; RGB:$3B0E),
      (R:$38; G:$55; B:$71; RGB:$3AAE),
      (R:$38; G:$44; B:$71; RGB:$3A2E),
      (R:$50; G:$50; B:$71; RGB:$528E),
      (R:$59; G:$50; B:$71; RGB:$5A8E),
      (R:$61; G:$50; B:$71; RGB:$628E),
      (R:$69; G:$50; B:$71; RGB:$6A8E),
      (R:$71; G:$50; B:$71; RGB:$728E),
      (R:$71; G:$50; B:$69; RGB:$728D),
      (R:$71; G:$50; B:$61; RGB:$728C),
      (R:$71; G:$50; B:$59; RGB:$728B),
      (R:$71; G:$50; B:$50; RGB:$728A),
      (R:$71; G:$59; B:$50; RGB:$72CA),
      (R:$71; G:$61; B:$50; RGB:$730A),
      (R:$71; G:$69; B:$50; RGB:$734A),
      (R:$71; G:$71; B:$50; RGB:$738A),
      (R:$69; G:$71; B:$50; RGB:$6B8A),
      (R:$61; G:$71; B:$50; RGB:$638A),
      (R:$59; G:$71; B:$50; RGB:$5B8A),
      (R:$50; G:$71; B:$50; RGB:$538A),
      (R:$50; G:$71; B:$59; RGB:$538B),
      (R:$50; G:$71; B:$61; RGB:$538C),
      (R:$50; G:$71; B:$69; RGB:$538D),
      (R:$50; G:$71; B:$71; RGB:$538E),
      (R:$50; G:$69; B:$71; RGB:$534E),
      (R:$50; G:$61; B:$71; RGB:$530E),
      (R:$50; G:$59; B:$71; RGB:$52CE),
      (R:$00; G:$00; B:$40; RGB:$0008),
      (R:$10; G:$00; B:$40; RGB:$1008),
      (R:$20; G:$00; B:$40; RGB:$2008),
      (R:$30; G:$00; B:$40; RGB:$3008),
      (R:$40; G:$00; B:$40; RGB:$4008),
      (R:$40; G:$00; B:$30; RGB:$4006),
      (R:$40; G:$00; B:$20; RGB:$4004),
      (R:$40; G:$00; B:$10; RGB:$4002),
      (R:$40; G:$00; B:$00; RGB:$4000),
      (R:$40; G:$10; B:$00; RGB:$4080),
      (R:$40; G:$20; B:$00; RGB:$4100),
      (R:$40; G:$30; B:$00; RGB:$4180),
      (R:$40; G:$40; B:$00; RGB:$4200),
      (R:$30; G:$40; B:$00; RGB:$3200),
      (R:$20; G:$40; B:$00; RGB:$2200),
      (R:$10; G:$40; B:$00; RGB:$1200),
      (R:$00; G:$40; B:$00; RGB:$0200),
      (R:$00; G:$40; B:$10; RGB:$0202),
      (R:$00; G:$40; B:$20; RGB:$0204),
      (R:$00; G:$40; B:$30; RGB:$0206),
      (R:$00; G:$40; B:$40; RGB:$0208),
      (R:$00; G:$30; B:$40; RGB:$0188),
      (R:$00; G:$20; B:$40; RGB:$0108),
      (R:$00; G:$10; B:$40; RGB:$0088),
      (R:$20; G:$20; B:$40; RGB:$2108),
      (R:$28; G:$20; B:$40; RGB:$2908),
      (R:$30; G:$20; B:$40; RGB:$3108),
      (R:$38; G:$20; B:$40; RGB:$3908),
      (R:$40; G:$20; B:$40; RGB:$4108),
      (R:$40; G:$20; B:$38; RGB:$4107),
      (R:$40; G:$20; B:$30; RGB:$4106),
      (R:$40; G:$20; B:$28; RGB:$4105),
      (R:$40; G:$20; B:$20; RGB:$4104),
      (R:$40; G:$28; B:$20; RGB:$4144),
      (R:$40; G:$30; B:$20; RGB:$4184),
      (R:$40; G:$38; B:$20; RGB:$41C4),
      (R:$40; G:$40; B:$20; RGB:$4204),
      (R:$38; G:$40; B:$20; RGB:$3A04),
      (R:$30; G:$40; B:$20; RGB:$3204),
      (R:$28; G:$40; B:$20; RGB:$2A04),
      (R:$20; G:$40; B:$20; RGB:$2204),
      (R:$20; G:$40; B:$28; RGB:$2205),
      (R:$20; G:$40; B:$30; RGB:$2206),
      (R:$20; G:$40; B:$38; RGB:$2207),
      (R:$20; G:$40; B:$40; RGB:$2208),
      (R:$20; G:$38; B:$40; RGB:$21C8),
      (R:$20; G:$30; B:$40; RGB:$2188),
      (R:$20; G:$28; B:$40; RGB:$2148),
      (R:$2C; G:$2C; B:$40; RGB:$2968),
      (R:$30; G:$2C; B:$40; RGB:$3168),
      (R:$34; G:$2C; B:$40; RGB:$3168),
      (R:$3C; G:$2C; B:$40; RGB:$3968),
      (R:$40; G:$2C; B:$40; RGB:$4168),
      (R:$40; G:$2C; B:$3C; RGB:$4167),
      (R:$40; G:$2C; B:$34; RGB:$4166),
      (R:$40; G:$2C; B:$30; RGB:$4166),
      (R:$40; G:$2C; B:$2C; RGB:$4165),
      (R:$40; G:$30; B:$2C; RGB:$4185),
      (R:$40; G:$34; B:$2C; RGB:$41A5),
      (R:$40; G:$3C; B:$2C; RGB:$41E5),
      (R:$40; G:$40; B:$2C; RGB:$4205),
      (R:$3C; G:$40; B:$2C; RGB:$3A05),
      (R:$34; G:$40; B:$2C; RGB:$3205),
      (R:$30; G:$40; B:$2C; RGB:$3205),
      (R:$2C; G:$40; B:$2C; RGB:$2A05),
      (R:$2C; G:$40; B:$30; RGB:$2A06),
      (R:$2C; G:$40; B:$34; RGB:$2A06),
      (R:$2C; G:$40; B:$3C; RGB:$2A07),
      (R:$2C; G:$40; B:$40; RGB:$2A08),
      (R:$2C; G:$3C; B:$40; RGB:$29E8),
      (R:$2C; G:$34; B:$40; RGB:$29A8),
      (R:$2C; G:$30; B:$40; RGB:$2988),
      (R:$00; G:$00; B:$00; RGB:$0000),
      (R:$00; G:$00; B:$00; RGB:$0000),
      (R:$00; G:$00; B:$00; RGB:$0000),
      (R:$00; G:$00; B:$00; RGB:$0000),
      (R:$00; G:$00; B:$00; RGB:$0000),
      (R:$00; G:$00; B:$00; RGB:$0000),
      (R:$00; G:$00; B:$00; RGB:$0000),
      (R:$00; G:$00; B:$00; RGB:$0000));


_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: Implementing AggPas with PtcGraph

Zaaphod
In reply to this post by Zaaphod
I've been having very good results with the accelerated putimage() in ptcgraph.    I am wondering if this modification could be added to 3.04, or some future release,  as I think everyone would want putimage() to happen as fast as possible.    I can't figure out how or where to submit this though.   I got the original code from here: https://sourceforge.net/p/ptcpas/code/785/tree/trunk/  and  the code modified code I have is here: https://github.com/Zaaphod/ptcpas/tree/Avoid_ReChecking_Bitblt.   I don't see any method to submit something similar to a pull request though.   Is there some method to contribute code to the PTCPAS project?  

I am also wondering if it would be beneficial to accelerate other procedures in the same way especially getimage()   I'm wanting to make it appear as it an object moves across the screen so I want to getimage() a small portion of the screen, copy the image variable, draw the object in the copy, putimage() the copy to show the object, then when it's time to move it, putimage() the original back, then start the process over again in the next location.

James

_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: Implementing AggPas with PtcGraph

Zaaphod

>I am also wondering if it would be beneficial to accelerate other procedures in the same way especially getimage()

I went ahead and tried it and I've got getimage() to about 18x faster on my system.  I changed how it works a little, the original was checking every single pixel if it was in the viewport or not, instead of doing that, I just fixed the nested loop to only operate within the range included in the viewport.  I also added a section to only include items that are actually on the screen as well.  I've updated my github repository, the changes I've made are on the 'zaaphod_custom' branch.  Here's a link

https://github.com/Zaaphod/ptcpas/blob/Zaaphod_Custom/ptcgraph/ptcgraph.pp
 

I'm wondering if I should take the default procedures out of graph.inc and replace them with just an error and halt as many of the other procedures have done.

I thought I would include the i386-win32 and x86_64-win64 compiled units of ptcpas with the accelerated versions of putimage() and getimage() in my repository if anyone wants to give them a try.   They are in a 'units' directory on the 'compiled' branch Here's the link:

https://github.com/Zaaphod/ptcpas/commit/b96f7208f079d4e2fe208ba5ac464f8f6808d79b

https://github.com/Zaaphod/ptcpas/tree/Compiled


James

_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
1 ... 3456