Advertisement
glokyfull

mirorc2p v 0.002

Jan 22nd, 2024 (edited)
787
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; c2p 2 pixel = un octet 4bit 4bit
  2. ; c2p mirored
  3. ; 4 segment de 64 seul les 1er 32k sont utilisé + 1 segment de 64k 13 bit utilisé = 8192=8k, le reste du segment est utilisable
  4. ; 256k decoupé en tranche de 32k = 128k used 128 free + 64k 8k used 56k free
  5. ;total
  6.  
  7.     move (a0)+,d0
  8.     add (a1)+,d0
  9.     add (a2)+,d0  ; 2 byte = 2 couleur  1,7,7,1 bit = 32768= 32k  = de la place pour l'ecran 1,2,3,4 ou une zone memoire de 32768 a chaque fois
  10.     move.l d0,a6
  11.     move.w (a6)+,d1         ; 0000,%0xxxxyyyy000
  12.     move.l d1,a6
  13.     move.l (a6)+,d2         ; format movep  2bit 16 couleur xy000000
  14.     move.l (a6),d4          ; d4 format movep 00000yx
  15.  
  16.     move (a0)+,d5
  17.     add (a1)+,d5
  18.     add (a1)+,d5
  19.     move.l d5,a6
  20.     move.w (a6)+,d1         , 0000,%1xxxxyyyy000
  21.     move.l d1,a6
  22.     or.l (a6)+,d2           ; d2= xyxy0000
  23.     or.l (a6),d4            ; d4 = 0000yxyx
  24.  
  25.     move.w (a0)+,d6
  26.     add (a1)+,d6
  27.     add (a2)+,d6
  28.     move.l d6,a6
  29.     move.w (a6)+,d1         ; 00010xxxxyyyy000
  30.     move.l d1,a6
  31.     or.l (a6)+,d2       ; d2 =xyxyxy00
  32.     or.l (a6),d4        ; d4=00yxyxyx
  33.  
  34.     move.w (a0)+,d7
  35.     add (a1)+,d7
  36.     add (a2)+,d7
  37.     move.l d7,a6            ;00011xxxxyyyy000  tableau de 13 bit = enorme  total 256k de table + 2^13 octet de table = 8192 = 8K
  38.     move.w (a6)+,d1
  39.     move.l d1,a6
  40.     or.l (a6)+,d2           ; d2 = xyxyxyxy
  41.     or.l (a6)+,d4           ; d4 = yxyxyxyx
  42.  
  43.  
  44.     movep.l d2,0(a4)
  45.     movep.l d4,64-8+1(a4)   8*TLWORD=4*2
  46.  
  47.  
  48.   puis idem et
  49.     movep.l d2,1(a4)
  50.     movep.l d4,64-8(a4)
  51.  
  52. puis idem et
  53.  
  54.     movep.l d2,8(a4)
  55.     movep.l d4,64-16+1(a4)
  56.  
  57.  
  58. puis idem et
  59.     movep.l d2,9(a4)
  60.     movep.l d4,64-16(a4)
  61.  
  62. puis idem et
  63.  
  64.     movep.l d2,16(a4)
  65.     movep.l d4,64-24+1(a4)
  66.  
  67.  
  68. puis idem et
  69.     movep.l d2,16+1(a4)
  70.     movep.l d4,64-24(a4)  
  71.  
  72. puis idem et
  73.  
  74.     movep.l d2,16+8(a4)
  75.     movep.l d4,64-32+1(a4)
  76.  
  77. puis idem et
  78.  
  79.     movep.l d2,16+8+1(a4)
  80.     movep.l d4,32(a4)
  81.  
  82. ------------------------------------------------------------
  83.  
  84. ; c2p 2 pixel = un octet 4bit 4bit
  85. ; c2p mirored
  86. ; 4 segment de 64 seul les 1er 32k sont utilisé + 1 segment de 64k 13 bit utilisé = 8192=8k, le reste du segment est utilisable
  87. ; 256k decoupé en tranche de 32k = 128k used 128 free + 64k 8k used 56k free
  88. ;total
  89.  
  90. makecodegen2
  91.    ; a0 = ram
  92.     lea codepatern2,a3
  93.  
  94.     moveq #7,d0
  95. .bcl
  96.    lea codepatern1,a1
  97.     lea fincodepatern1,a2
  98.  
  99.  .1  move.w (a1)+,(a0)+
  100.     cmp.l a1,a2
  101.     bne.s .1
  102.  
  103.    
  104.     move.l (a3)+,(a0)+      ; 1er movep
  105.     move.l (a3)+,(a0)+      ; 2iem movep
  106.  
  107.     dbf d0,.bcl
  108.  
  109.     rts
  110.  
  111.  codepatern1
  112.     move (a0)+,d0
  113.     add (a1)+,d0
  114.     add (a2)+,d0  ; 2 byte = 2 couleur  1,7,7,1 bit = 32768= 32k  = de la place pour l'ecran 1,2,3,4 ou une zone memoire de 32768 a chaque fois
  115.     move.l d0,a6
  116.     move.w (a6)+,d1         ; 0000,%0xxxxyyyy000
  117.     move.l d1,a6
  118.     move.l (a6)+,d2         ; format movep  2bit 16 couleur xy000000
  119.     move.l (a6),d4          ; d4 format movep 00000yx
  120.  
  121.     move (a0)+,d5
  122.     add (a1)+,d5
  123.     add (a2)+,d5
  124.     move.l d5,a6
  125.     move.w (a6)+,d1         , 0000,%1xxxxyyyy000
  126.     move.l d1,a6
  127.     or.l (a6)+,d2           ; d2= xyxy0000
  128.     or.l (a6),d4            ; d4 = 0000yxyx
  129.  
  130.     move.w (a0)+,d6
  131.     add (a1)+,d6
  132.     add (a2)+,d6
  133.     move.l d6,a6
  134.     move.w (a6)+,d1         ; 00010xxxxyyyy000
  135.     move.l d1,a6
  136.     or.l (a6)+,d2       ; d2 =xyxyxy00
  137.     or.l (a6),d4        ; d4=00yxyxyx
  138.  
  139.     move.w (a0)+,d7
  140.     add (a1)+,d7
  141.     add (a2)+,d7
  142.     move.l d7,a6            ;00011xxxxyyyy000  tableau de 13 bit = enorme  total 256k de 2^13 octet de table = 8192 = 8K
  143.     move.w (a6)+,d1
  144.     move.l d1,a6
  145.     or.l (a6)+,d2           ; d2 = xyxyxyxy
  146.     or.l (a6),d4           ; d4 = yxyxyxyx
  147.  
  148.  fincodepatern1
  149.  
  150.  codepatern2
  151.     movep.l d2,0(a4)                4 octet
  152.     movep.l d4,64-8+1(a4)   8*TLWORD=4*2
  153.  
  154.     movep.l d2,1(a4)
  155.     movep.l d4,64-8(a4)
  156.  
  157.     movep.l d2,8(a4)
  158.     movep.l d4,64-16+1(a4)
  159.  
  160.     movep.l d2,9(a4)
  161.     movep.l d4,64-16(a4)
  162.  
  163.     movep.l d2,16(a4)
  164.     movep.l d4,64-24+1(a4)
  165.  
  166.     movep.l d2,16+1(a4)
  167.     movep.l d4,64-24(a4)  
  168.  
  169.     movep.l d2,16+8(a4)
  170.     movep.l d4,64-32+1(a4)
  171.  
  172.     movep.l d2,16+8+1(a4)
  173.     movep.l d4,32(a4)
  174.  
  175. fincodepatern2
  176.  
  177.  ;
  178.  ; format xxxxyyyy000
  179.  ; en movep.l
  180.  ;
  181.  ;
  182. routine1
  183.    lea c2ptable0,a0
  184. ; a1 = ram sur segment 64k
  185.  
  186.  
  187. ;.auto1 equ *+2
  188. ;    move.l #$80808080,d0
  189. ;.auto2  equ *+2
  190. ;    move.w #$01010101,d1
  191.  
  192.     moveq #4-1,d0
  193.     move.l #$80808080,d1
  194.     move.l #$01010101,d7
  195. .loopdecal
  196.    move.w d0,-(sp)
  197.  
  198. .auto0 equ *+2
  199.     move.l #$40404040,d0
  200.     move.w #0,d2
  201.     ;  d1, d7 libre move.w #255,d7
  202. .loop
  203.    bsr extruded2
  204.     ; d4,d5 = 2 valeur
  205.     move.l (a0,d4),d3  ; couleur format c2p
  206.     move.l d3,d4
  207.     and.l d1,d3         ; 1 bit only
  208.     and.l d7,d4
  209.     move.l (a0,d5),d5
  210.     move.l d5,d6
  211.     and.l d0,d5             ;#$40404040,d5
  212. .auto4 equ *+2
  213.     and.l #$02020202,d6
  214.     or.l d5,d3
  215.     or.l d6,d4
  216.  
  217.     move.l d3,(a1)+
  218.     move.l d4,(a1)+
  219.  
  220.     addq #1,d2       ; on ajoute 1 tout simplement (8 en fait = 8octet)
  221.     and.w #$00FF,d2
  222.     tst.w d2
  223.     bne.s .loop
  224.     ;dbf d7,.loop
  225.  
  226.     lsr.l #2,d1
  227.     lea .auto0,a2
  228.     move.l (a2),d2
  229.     lsr.l #2,d2
  230.     move.l d2,(a2)
  231.  
  232.     lsl.l #2,d7
  233.    
  234.    lea .auto4,a2
  235.     move.l (a2),d2
  236.     lsl.l #2,d2
  237.     move.l d2,(a2)
  238.  
  239.     lea 32768(a1),a1    ; on va au segment suivant
  240.  
  241.     move.w (sp)+,d0
  242.     dbf d0,.loopdecal
  243.  
  244.     rts
  245.  
  246.  
  247.  
  248. extruded2
  249.    move.w d2,d4
  250.     and.w #%11110000,d4
  251.     lsr #2,d4       ; value 1111 *4
  252.     moveq #0,d5
  253.     move.w d2,d5
  254.     and.w #%1111,d5
  255.     lsl #2,d5
  256.     rts
  257. c2p
  258.    
  259.     dc.l $00000000
  260.     dc.l $FF000000
  261.     dc.l $00FF0000
  262.     dc.l $FFFF0000
  263.     dc.l $0000FF00
  264.     dc.l $FF00FF00
  265.     dc.l $00FFFF00
  266.     dc.l $FFFFFF00
  267.     dc.l $000000FF
  268.     dc.l $FF0000FF
  269.     dc.l $00FF00FF
  270.     dc.l $FFFF00FF
  271.     dC.l $0000FFFF
  272.     dc.l $FF00FFFF
  273.     dc.l $00FFFFFF
  274.     dc.l $FFFFFFFF
  275.  
  276.  
  277.  
  278.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement