'ANTI-ALIASING SAMPLER, ED. 2020-11-XX *UNRELEASED*, BY NATHANIEL BABIAK. GLOBAL TRUE, FALSE TRUE = -1 DIM GLOBAL PXL_MASKS(159),PXL_MASKX(159),PXL_MASKR(159),PXL_MASKW(159),PXL_MASKL(159) GLOBAL PXL_PXHI, PXL_PYHI, PXL_FXHI, PXL_FYHI, PXL_PAL1, PXL_PAL2, PXL_DIRADDR, PXL_DIRSIZE GLOBAL PXL_RBUFADDR, PXL_RBUFSIZE, PXL_RBUFDATASIZE, PXL_RBUFDATASTEP, PXL_RCOPYSIZE DIM GLOBAL PXL_XADDR( 159 ), PXL_YADDR( 127 ), PXL_RSRC( 127 ), PXL_RDST( 127 ) 'PXL LIBRARY 2.0, BY NATHANIEL R. BABIAK, ED. NOVEMBER 10, 2020 DIM GLOBAL QUEUE_X( 32767 ), QUEUE_Y( 32767 ) GLOBAL QUEUE_BACK, QUEUE_FRONT GLOBAL R, C CALL MAIN END SUB MAIN T2 = 2 * PI - 0.001 TS = 90 * PI / 180 / 8 FOR T = 0 TO -T2 STEP -TS BG 1 CALL PXL_INIT( ROM(4) ) BG 0 R = 63 C = 64 CALL ARROW( T, 15 ) FOR P = 0 TO 127 STEP 16 CALL PXL_VERT( P, 0, 127, -1, TRUE ) CALL PXL_HORZ( 0, 127, P, -1, TRUE ) NEXT P CALL FLOODFILL( 64, 64 ) CALL AA CALL SHOWDATA( T ) NEXT T END SUB SUB ARROW( T, A ) CALL PXL_CLS AX = R * COS( T ) + C AY = R * SIN( T ) + C BX = R * COS( T - A ) + C BY = R * SIN( T - A ) + C CX = R * COS( T + A ) + C CY = R * SIN( T + A ) + C CALL PXL_LINE( AX, AY, BX, BY, 1, FALSE ) CALL PXL_LINE( BX, BY, CX, CY, 1, FALSE ) CALL PXL_LINE( CX, CY, AX, AY, 1, FALSE ) END SUB SUB FLOODFILL( PX, PY ) CALL QUEUE_RESET CALL QUEUE_ADD( PX, PY ) QUEUE_IS_EMPTY = FALSE IS_SET = FALSE CALL PXL_SETP( PX, PY, -1, FALSE ) REPEAT CALL QUEUE_REMOVE( PX, PY ) CALL PXL_TESTP( PX + 1, PY, FALSE, IS_SET ) IF NOT IS_SET THEN CALL PXL_SETP( PX + 1, PY, -1, FALSE ) CALL QUEUE_ADD( PX + 1, PY ) END IF CALL PXL_TESTP( PX, PY + 1, FALSE, IS_SET ) IF NOT IS_SET THEN CALL PXL_SETP( PX, PY + 1, -1, FALSE ) CALL QUEUE_ADD( PX, PY + 1 ) END IF CALL PXL_TESTP( PX - 1, PY, FALSE, IS_SET ) IF NOT IS_SET THEN CALL PXL_SETP( PX - 1, PY, -1, FALSE ) CALL QUEUE_ADD( PX - 1, PY ) END IF CALL PXL_TESTP( PX, PY - 1, FALSE, IS_SET ) IF NOT IS_SET THEN CALL PXL_SETP( PX, PY - 1, -1, FALSE ) CALL QUEUE_ADD( PX, PY - 1 ) END IF CALL QUEUE_TEST( QUEUE_IS_EMPTY ) UNTIL QUEUE_IS_EMPTY END SUB SUB QUEUE_RESET QUEUE_BACK = 0 QUEUE_FRONT = 0 END SUB SUB QUEUE_ADD( PX, PY ) QUEUE_X( QUEUE_BACK ) = PX QUEUE_Y( QUEUE_BACK ) = PY QUEUE_BACK = ( QUEUE_BACK + 1 ) MOD 32768 END SUB SUB QUEUE_REMOVE( RETURN_PX, RETURN_PY ) RETURN_PX = QUEUE_X( QUEUE_FRONT ) RETURN_PY = QUEUE_Y( QUEUE_FRONT ) QUEUE_FRONT = ( QUEUE_FRONT + 1 ) MOD 32768 END SUB SUB QUEUE_TEST( RETURN_IS_EMPTY ) RETURN_IS_EMPTY = QUEUE_BACK = QUEUE_FRONT END SUB SUB AA F = 16 IS_SET = FALSE FOR CY = 0 TO 127 STEP F FOR CX = 0 TO 127 STEP F PC = 0 FOR PY = 0 TO F - 1 FOR PX = 0 TO F - 1 CALL PXL_TESTP( CX + PX, CY + PY, FALSE, IS_SET ) IF IS_SET THEN INC PC CALL PXL_SETP( CX + PX, CY + PY, -1, FALSE ) NEXT PX NEXT PY IF PC < 64 THEN PC = 0 ELSE IF PC < 128 THEN PC = 1 ELSE IF PC < 192 THEN PC = 2 ELSE PC = 3 END IF CALL PXL2_SETP( 128 + CX \ F, CY \ F, PC ) NEXT CX NEXT CY END SUB SUB SHOWDATA( T ) CLS 0 LOCATE 0, 0 PRINT "T="; INT( T * 180 / PI * 10 ) / 10 PRINT "_B_LO_HI_" FOR PY = 0 TO 7 PRINT PY, "", B = PEEK( PXL_XADDR( 128) + PXL_YADDR( PY ) ) PRINT HEX$( B ) + " ", B = PEEK( PXL_XADDR( 128) + PXL_YADDR( PY ) + 8 ) PRINT HEX$( B ) NEXT PY PRINT "" PRINT "TAP OR CLICK..." TOUCHSCREEN REPEAT WAIT VBL UNTIL TAP CLS 0 END SUB SUB PXL_INIT( R ) FOR PX = 0 TO 159 BIT = 7 - PX MOD 8 PXL_MASKS( PX ) = 2 ^ BIT PXL_MASKX( PX ) = 2 ^ BIT XOR $FF PXL_MASKR( PX ) = 2 ^ ( BIT + 1 ) - 1 PXL_MASKW( PX ) = PXL_MASKR( PX ) XOR $FF PXL_MASKL( PX ) = 2 ^ BIT - 1 XOR $FF NEXT PX PXL_PXHI = PEEK( R + 2 ) PXL_PYHI = PEEK( R + 3 ) PXL_FXHI = PXL_PXHI + 0.5 PXL_FYHI = PXL_PYHI + 0.5 PXL_PAL1 = PEEK( R + 4 ) PXL_PAL2 = PEEK( R + 5 ) PXL_DIRADDR = PEEKW( R + 6 ) + 32768 PXL_DIRSIZE = PEEKW( R + 8 ) + 32768 PXL_RBUFADDR = PEEKW( R + 10 ) + 32768 PXL_RBUFSIZE = PEEKW( R + 12 ) + 32768 PXL_RBUFDATASIZE = PEEKW( R + 14 ) + 32768 PXL_RBUFDATASTEP = PEEKW( R + 16 ) + 32768 PXL_RCOPYSIZE = PEEK( R + 18 ) RFULL = PEEK( R + 19 ) A = R + 20 FOR C = 0 TO 159 STEP 8 FOR P = 0 TO 7 PXL_XADDR( C + P ) = PEEKW( A ) + 32768 IF C <= 127 THEN PXL_YADDR( C + P ) = PEEKW( A + 2 ) + P + 32768 NEXT P IF C <= 127 THEN ADD A, 4 ELSE ADD A, 2 NEXT C IF PXL_RCOPYSIZE THEN FOR CR = 0 TO 120 STEP 8 PXL_RSRC( CR ) = PEEKW( A ) + 32768 PXL_RDST( CR ) = PEEKW( A + 2 ) + 32768 IF PXL_RDST( CR ) THEN FOR P = 1 TO 7 PXL_RSRC( CR + P ) = PXL_RSRC( CR ) + P * PXL_RCOPYSIZE PXL_RDST( CR + P ) = PXL_RDST( CR ) + P * PXL_RCOPYSIZE NEXT P END IF ADD A, 4 NEXT CR IF RFULL THEN ON RASTER CALL PXL_RBUF1 ELSE ON RASTER CALL PXL_RBUF0 END IF CALL PXL_CLS WAIT VBL BG COPY 0, 0, 20, 16 TO 0, 0 END SUB SUB PXL_RBUF1 COPY PXL_RSRC( RASTER ), PXL_RCOPYSIZE TO PXL_RDST( RASTER ) END SUB SUB PXL_RBUF0 IF PXL_RDST( RASTER ) THEN COPY PXL_RSRC( RASTER ), PXL_RCOPYSIZE TO PXL_RDST( RASTER ) END SUB SUB PXL_CLS FILL PXL_DIRADDR, PXL_DIRSIZE IF PXL_RBUFDATASIZE THEN A2 = PXL_RBUFADDR + PXL_RBUFSIZE - 1 FOR A = PXL_RBUFADDR TO A2 STEP PXL_RBUFDATASTEP FILL A, PXL_RBUFDATASIZE NEXT A ELSE FILL PXL_RBUFADDR, PXL_RBUFSIZE END IF END SUB SUB PXL_SETP( PX, PY, MODE, USE_HI ) DST = PXL_XADDR( PX ) + PXL_YADDR( PY ) + ( 8 AND USE_HI ) IF MODE = 1 THEN POKE DST, PEEK( DST ) OR PXL_MASKS( PX ) ELSE IF MODE THEN POKE DST, PEEK( DST ) XOR PXL_MASKS( PX ) ELSE POKE DST, PEEK( DST ) AND PXL_MASKX( PX ) END IF END SUB SUB PXL_TESTP( PX, PY, USE_HI, RETURN_FLAG ) DST = PXL_XADDR( PX ) + PXL_YADDR( PY ) + ( 8 AND USE_HI ) RETURN_FLAG = ( PEEK( DST ) AND PXL_MASKS( PX ) ) <> FALSE END SUB SUB PXL_LINE( FX1, FY1, FX2, FY2, MODE, USE_HI ) IF FX2 = FX1 THEN IS_STEEP = TRUE ELSE IS_STEEP = ABS( (FY2-FY1) / (FX2-FX1) ) >= 1.0 ADD_HI = 8 AND USE_HI IF IS_STEEP THEN IF FY1 <= FY2 THEN FX = FX1 + 0.5 PY = INT( FY1 + 0.5 ) FX_HI = FX2 + 0.5 PY_HI = INT( FY2 + 0.5 ) ELSE FX = FX2 + 0.5 PY = INT( FY2 + 0.5 ) FX_HI = FX1 + 0.5 PY_HI = INT( FY1 + 0.5 ) END IF IF PY = PY_HI THEN FX_STEP = 0.0 ELSE FX_STEP = (FX_HI-FX) / (PY_HI-PY) IF MODE = 1 THEN FOR PY = PY TO PY_HI ADDR = PXL_XADDR( FX ) + PXL_YADDR( PY ) + ADD_HI POKE ADDR, PEEK( ADDR ) OR PXL_MASKS( FX ) ADD FX, FX_STEP NEXT PY ELSE IF MODE THEN FOR PY = PY TO PY_HI ADDR = PXL_XADDR( FX ) + PXL_YADDR( PY ) + ADD_HI POKE ADDR, PEEK( ADDR ) XOR PXL_MASKS( FX ) ADD FX, FX_STEP NEXT PY ELSE FOR PY = PY TO PY_HI ADDR = PXL_XADDR( FX ) + PXL_YADDR( PY ) + ADD_HI POKE ADDR, PEEK( ADDR ) AND PXL_MASKX( FX ) ADD FX, FX_STEP NEXT PY END IF ELSE IF FX1 <= FX2 THEN PX = INT( FX1 + 0.5 ) FY = FY1 + 0.5 PX_HI = INT( FX2 + 0.5 ) FY_HI = FY2 + 0.5 ELSE PX = INT( FX2 + 0.5 ) FY = FY2 + 0.5 PX_HI = INT( FX1 + 0.5 ) FY_HI = FY1 + 0.5 END IF FY_STEP = (FY_HI-FY) / (PX_HI-PX) IF MODE = 1 THEN FOR PX = PX TO PX_HI ADDR = PXL_XADDR( PX ) + PXL_YADDR( FY ) + ADD_HI POKE ADDR, PEEK( ADDR ) OR PXL_MASKS( PX ) ADD FY, FY_STEP NEXT PX ELSE IF MODE THEN FOR PX = PX TO PX_HI ADDR = PXL_XADDR( PX ) + PXL_YADDR( FY ) + ADD_HI POKE ADDR, PEEK( ADDR ) XOR PXL_MASKS( PX ) ADD FY, FY_STEP NEXT PX ELSE FOR PX = PX TO PX_HI ADDR = PXL_XADDR( PX ) + PXL_YADDR( FY ) + ADD_HI POKE ADDR, PEEK( ADDR ) AND PXL_MASKX( PX ) ADD FY, FY_STEP NEXT PX END IF END IF END SUB SUB PXL2_SETP( PX, PY, PC ) DST = PXL_XADDR( PX ) + PXL_YADDR( PY ) IF PC AND 1 THEN POKE DST,PEEK(DST) OR PXL_MASKS(PX) ELSE POKE DST,PEEK(DST) AND PXL_MASKX(PX) ADD DST, 8 IF PC AND 2 THEN POKE DST,PEEK(DST) OR PXL_MASKS(PX) ELSE POKE DST,PEEK(DST) AND PXL_MASKX(PX) END SUB SUB PXL_VERT( FX, FY1, FY2, MODE, USE_HI ) ADDR = PXL_XADDR( FX + 0.5 ) + ( 8 AND USE_HI ) PY_HI = INT( FY2 + 0.5 ) IF MODE = 1 THEN MASKS = PXL_MASKS( FX + 0.5 ) FOR PY = INT( FY1 + 0.5 ) TO PY_HI POKE ADDR + PXL_YADDR( PY ), PEEK( ADDR + PXL_YADDR( PY ) ) OR MASKS NEXT PY ELSE IF MODE THEN MASKS = PXL_MASKS( FX + 0.5 ) FOR PY = INT( FY1 + 0.5 ) TO PY_HI POKE ADDR + PXL_YADDR( PY ), PEEK( ADDR + PXL_YADDR( PY ) ) XOR MASKS NEXT PY ELSE MASKX = PXL_MASKX( FX + 0.5 ) FOR PY = INT( FY1 + 0.5 ) TO PY_HI POKE ADDR + PXL_YADDR( PY ), PEEK( ADDR + PXL_YADDR( PY ) ) AND MASKX NEXT PY END IF END SUB SUB PXL_HORZ( FX1, FX2, FY, MODE, USE_HI ) PX = FX1 + 0.5 AND %11111000 PX_HI = ( FX2 + 0.5 AND %11111000 ) - 8 IF PX = PX_HI + 8 THEN MASK1 = PXL_MASKR( FX1 + 0.5 ) AND PXL_MASKL( FX2 + 0.5 ) USE_MASK2 = FALSE ELSE MASK1 = PXL_MASKR( FX1 + 0.5 ) USE_MASK2 = TRUE MASK2 = PXL_MASKL( FX2 + 0.5 ) END IF ADDR = PXL_YADDR( FY + 0.5 ) + ( 8 AND USE_HI ) IF MODE = 1 THEN POKE ADDR+PXL_XADDR(PX), PEEK(ADDR+PXL_XADDR(PX)) OR MASK1 FOR PX = PX + 8 TO PX_HI STEP 8 POKE ADDR+PXL_XADDR(PX), $FF NEXT PX IF USE_MASK2 THEN POKE ADDR+PXL_XADDR(PX), PEEK(ADDR+PXL_XADDR(PX)) OR MASK2 ELSE IF MODE THEN POKE ADDR+PXL_XADDR(PX), PEEK(ADDR+PXL_XADDR(PX)) XOR MASK1 FOR PX = PX + 8 TO PX_HI STEP 8 POKE ADDR+PXL_XADDR(PX), NOT PEEK(ADDR+PXL_XADDR(PX)) NEXT PX IF USE_MASK2 THEN POKE ADDR+PXL_XADDR(PX), PEEK(ADDR+PXL_XADDR(PX)) XOR MASK2 ELSE POKE ADDR+PXL_XADDR(PX), PEEK(ADDR+PXL_XADDR(PX)) AND NOT MASK1 FOR PX = PX + 8 TO PX_HI STEP 8 POKE ADDR+PXL_XADDR(PX), 0 NEXT PX IF USE_MASK2 THEN POKE ADDR+PXL_XADDR(PX), PEEK(ADDR+PXL_XADDR(PX)) AND NOT MASK2 END IF END SUB #1:MAIN PALETTES 00152A3F00383400003C0C00003F3C00 003F2A15003F2A15003F2A15003F2A15 #2:MAIN CHARACTERS 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0000000000000000FFFFFFFFFFFFFFFF 0018181818001800FFE7E7E7E7FFE7FF 006C6C2400000000FF9393DBFFFFFFFF 00247E24247E2400FFDB81DBDB81DBFF 00083E380E3E0800FFF7C1C7F1C1F7FF 0062640810264600FF9D9BF7EFD9B9FF 001C34386E643A00FFE3CBC7919BC5FF 0018183000000000FFE7E7CFFFFFFFFF 000C183030180C00FFF3E7CFCFE7F3FF 0030180C0C183000FFCFE7F3F3E7CFFF 000024187E182400FFFFDBE781E7DBFF 000018187E181800FFFFE7E781E7E7FF 0000000018183000FFFFFFFFE7E7CFFF 000000007E000000FFFFFFFF81FFFFFF 0000000000181800FFFFFFFFFFE7E7FF 00060C1830604000FFF9F3E7CF9FBFFF 003C666E76663C00FFC399918999C3FF 0018381818187E00FFE7C7E7E7E781FF 003C660C18307E00FFC399F3E7CF81FF 003C660C06663C00FFC399F3F999C3FF 0066667E06060600FF999981F9F9F9FF 007E607C06067C00FF819F83F9F983FF 001C307C66663C00FFE3CF839999C3FF 007E060C18303000FF81F9F3E7CFCFFF 003C663C66663C00FFC399C39999C3FF 003C663E06663C00FFC399C1F999C3FF 0000001800180000FFFFFFE7FFE7FFFF 0000001800183000FFFFFFE7FFE7CFFF 00000C1830180C00FFFFF3E7CFE7F3FF 0000007E007E0000FFFFFF81FF81FFFF 000030180C183000FFFFCFE7F3E7CFFF 003C660C18001800FFC399F3E7FFE7FF 003C666E6E603C00FFC39991919FC3FF 00183C667E666600FFE7C399819999FF 007C667C66667C00FF839983999983FF 003C666060663C00FFC3999F9F99C3FF 00786C66666C7800FF879399999387FF 007E607860607E00FF819F879F9F81FF 007E607860606000FF819F879F9F9FFF 003C606E66663C00FFC39F919999C3FF 0066667E66666600FF999981999999FF 003C181818183C00FFC3E7E7E7E7C3FF 001E060606663C00FFE1F9F9F999C3FF 00666C78786C6600FF999387879399FF 0060606060607E00FF9F9F9F9F9F81FF 0042667E7E666600FFBD9981819999FF 0066767E6E666600FF998981919999FF 003C666666663C00FFC399999999C3FF 007C667C60606000FF8399839F9F9FFF 003C66666A6C3E00FFC399999593C1FF 007C667C786C6600FF839983879399FF 003E603C06067C00FFC19FC3F9F983FF 007E181818181800FF81E7E7E7E7E7FF 0066666666663C00FF9999999999C3FF 00666666663C1800FF99999999C3E7FF 0066667E7E664200FF9999818199BDFF 00663C183C666600FF99C3E7C39999FF 0066663C18181800FF9999C3E7E7E7FF 007E0C1830607E00FF81F3E7CF9F81FF 003C303030303C00FFC3CFCFCFCFC3FF 006030180C060200FF9FCFE7F3F9FDFF 003C0C0C0C0C3C00FFC3F3F3F3F3C3FF 00183C6600000000FFE7C399FFFFFFFF 0000000000007E00FFFFFFFFFFFF81FF #3:PXL BG 00001410010002000300040005000600 0700080009000A00A100A200A300A400 A500A600A700A800A900AA000B000C00 0D000E000F0010001100120013001400 AB00AC00AD00AE00AF00B000B100B200 B300B400150016001700180019001A00 1B001C001D001E00A100A200A300A400 A500A600A700A800A900AA001F002000 21002200230024002500260027002800 AB00AC00AD00AE00AF00B000B100B200 B300B40029002A002B002C002D002E00 2F00300031003200A100A200A300A400 A500A600A700A800A900AA0033003400 350036003700380039003A003B003C00 AB00AC00AD00AE00AF00B000B100B200 B300B4003D003E003F00400041004200 4300440045004600A100A200A300A400 A500A600A700A800A900AA0047004800 49004A004B004C004D004E004F005000 AB00AC00AD00AE00AF00B000B100B200 B300B400510052005300540055005600 5700580059005A00A100A200A300A400 A500A600A700A800A900AA005B005C00 5D005E005F0060006100620063006400 AB00AC00AD00AE00AF00B000B100B200 B300B400650066006700680069006A00 6B006C006D006E00A100A200A300A400 A500A600A700A800A900AA006F007000 71007200730074007500760077007800 AB00AC00AD00AE00AF00B000B100B200 B300B40079007A007B007C007D007E00 7F00800081008200A100A200A300A400 A500A600A700A800A900AA0083008400 850086008700880089008A008B008C00 AB00AC00AD00AE00AF00B000B100B200 B300B4008D008E008F00900091009200 9300940095009600A100A200A300A400 A500A600A700A800A900AA0097009800 99009A009B009C009D009E009F00A000 AB00AC00AD00AE00AF00B000B100B200 B300B400 #4:PXL METADATA 4E42A08000001000008A0020008A0080 00801401100000802000A08030004081 4000E08150008082600020837000C083 8000608490000085A000A08500204086 1020E08620208087302020884020C088 502060896020702080209020A020B00A 4021100AE021B00A8022100A2023B00A C023100A6024B00A0025100AA025B00A 4026100AE026B00A8027100A2028B00A C028100A6029B00A0020100A