TIME=0 'GENERATIVE ADVERSARIAL NETWORK 'ANYTHING STARTING WITH G DENOTES VARIABLES FOR THE GENERATOR FUNCTION 'ANYTHING STARTING ON C DENOTES CLASSIFIER 'GENERATOR ARCHITECTURE '. NOISE NODES (8) '. RNN INJECTION(8X8) EACH 8 '. LAYER 1. (8X8) EACH 5X5 '. LAYER 2. (8X8) EACH 5X5 '. LAYER 3. (8X8) EACH 5X5 'CLASSIFIER ARCHITEXTURE 'INPUT. 'LAYER 1. 4X4 'LAYER 2. 2X2 'OUTPUT 1 DIM GNODE(11,11,2) DIM GNOISE(7) DIM GNET0(7,7,7) DIM GNET1(7,7,4,4) DIM GNET2(7,7,4,4) DIM GNET3(7,7,4,4) DIM GBIAS(7,7,2) DIM GNET0G(7,7,7) DIM GNET1G(7,7,4,4) DIM GNET2G(7,7,4,4) DIM GNET3G(7,7,4,4) 'SET RANDOM WEIGHTS FOR X=0 TO 7 FOR Y=0 TO 7 FOR L=0 TO 2 GBIAS(X,Y,L)=RND-0.5 NEXT L FOR I=0 TO 7 GNET0(X,Y,I)=RND-0.5 NEXT I FOR XX=0 TO 4 FOR YY=0 TO 4 GNET1(X,Y,XX,YY)=RND-0.5 GNET2(X,Y,XX,YY)=RND-0.5 GNET3(X,Y,XX,YY)=RND-0.5 NEXT YY NEXT XX NEXT Y NEXT X DIM GBIASG(7,7,2) DIM CNET0(3,3,7,7) DIM CNET1(1,1,3,3) DIM CNET2(1,1) DIM CBIAS0(3,3) DIM CBIAS2(1,1) GLOBAL CBIAS 'RUN GENERATOR NETWORK 'CLEAR NODES FOR X=0 TO 11 FOR Y=0 TO 11 FOR I=0 TO 2 GNODE(X,Y,I)=0 NEXT I NEXT Y NEXT X 'NOISE TO FIRST LAYER RANDOMIZE TIMER FOR I=0 TO 7 GNOISE(I)=RND NEXT I FOR X=0 TO 7 FOR Y=0 TO 7 GNODE(X,Y,0)=GBIAS(X,Y,0) FOR I=0 TO 7 ADD GNODE(X+2,Y+2,0), GNOISE(I)*GNET0(X,Y,I) NEXT I 'RELU GNODE(X,Y,0)=MAX(0,GNODE(X,Y,0)) NEXT Y NEXT X RECUR = 2 FOR E = 0 TO RECUR FOR X=0 TO 7 FOR Y=0 TO 7 ADD GNODE(X+2,Y+2,1),GBIAS(X,Y,1) FOR XX=0 TO 4 FOR YY=0 TO 4 ADD GNODE(X+2,Y+2,1), GNODE(X+XX,Y+YY,0)*GNET1(X,Y,XX,YY) NEXT YY NEXT XX 'RELU GNODE(X+2,Y+2,1)=MAX(0,GNODE(X+2,Y+2,1)) NEXT Y NEXT X FOR X=0 TO 7 FOR Y=0 TO 7 ADD GNODE(X+2,Y+2,2),GBIAS(X,Y,2) FOR XX=0 TO 4 FOR YY=0 TO 4 ADD GNODE(X+2,Y+2,2), GNODE(X+XX,Y+YY,1)*GNET2(X,Y,XX,YY) NEXT YY NEXT XX GNODE(X+2,Y+2,2)=MAX(0,GNODE(X+2,Y+2,2)) NEXT Y NEXT X FOR X=0 TO 7 FOR Y=0 TO 7 ADD GNODE(X+2,Y+2,0),GBIAS(X,Y,0) FOR XX=0 TO 4 FOR YY=0 TO 4 ADD GNODE(X+2,Y+2,0), GNODE(X+XX,Y+YY,2)*GNET3(X,Y,XX,YY) NEXT YY NEXT XX GNODE(X+2,Y+2,0)=MAX(0,GNODE(X+2,Y+2,0)) NEXT Y NEXT X NEXT E FOR X=0 TO 7 FOR Y=0 TO 7 CALL PHPIXEL(X,Y,GNODE(X+2,Y+2,0)) NEXT Y NEXT X FOR I=0 TO 31 SPRITE I*2,RND*80,RND*80,0 SPRITE.A I*2+1,(0,1,,,) NEXT I DO INC TIME FOR I=0 TO 31 SPRITE I*2,MIN(120,MAX(0,SPRITE.X(I*2)+RND*3-1)),SPRITE.Y(I*2)+RND*3-1,I SPRITE I*2+1,SPRITE.X(I*2)-7,SPRITE.Y(I*2),I NEXT I WAIT 6 LOOP SUB PHPIXEL(X,Y,C) YY=Y MOD 8 XX=7-((X) MOD 8) CH=INT(Y/8)*16+INT(X/8) P1=$A000+16*CH+YY P2=P1+8 N=2^XX N1=((C) MOD 2)*N N2=(-(C>1))*N M=NOT N POKE P1,(PEEK(P1) AND M)+N1 POKE P2,(PEEK(P2) AND M)+N2 END SUB #2:MAIN CHARACTERS 00000000000000000000000000000000 0050E0B0E05000000000000000000000 000040E0B0E040000000000000000000 80D0E0B0E05000000000000000000000 0044E4B8A0F048000000000000000000 40F8B0A0F03010200000000000000000 0050F0DCB0F020400000000000000000 0070D090B0E020400000000000000000 00C0F090F060C0000000000000000000 00C0F090F020C0000000000000000000 00047CD090FC44000000000000000000 0000E0B0B0F8F4500000000000000000 2020E0B0B0F8F4500000000000000000 0000E0B0B8FCAA000000000000000000 66FE9ECCEEFEAA8A0000000000000000 67FF9E9CFEFF33330000000000000000 60F09090F0F030200000000000000000 F8A4F070303020600000000000000000 C0A0F070703060200000000000000000 C0A0F070703060200000000000000000 60F89C9CFCF860600000000000000000 00017ED0B0F848040000000000000000 10D0B0B0F060C0000000000000000000 66FE9ECCEEFE2ACA0000000000000000 8ED1A0BCE25010200000000000000000 66FE9ECCEEFE2ACA0000000000000000 00C0A0B0F060E0300000000000000000 0000E0F0C8FCFEAA0000000000000000 0000E0B0B8FCAA000000000000000000 E0D0BCF4F02020380000000000000000 64FC9CD8F8AE11110000000000000000 66FE9E9CFEFEAA8A0000000000000000 80C0E0B0E05010200000000000000000 80C0E0BCE25010200000000000000000 80C0A0B0F8B888900000000000000000 80C0A0A0C0A0A0800000000000000000 80C0B0B8C8A8A0800000000000000000 10D0B0B0F060E0200000000000000000 2044F4D8D0F020100000000000000000 4040F0B0BCF424400000000000000000 4040F0D0DCF424400000000000000000 40E0A0E0400000000000000000000000