home *** CD-ROM | disk | FTP | other *** search
/ Dream 44 / Amiga_Dream_44.iso / RiscPc / jeux / biohazard.arc / s / spriteVGA < prev    next >
Text File  |  1994-11-20  |  24KB  |  1,247 lines

  1. ; Use the GET directive to include register definitions as if typed here
  2.  
  3.       KEEP
  4.           GET     h.WolfReg
  5.  
  6. ; Use the GET directive to include a list of SWI names as if typed here
  7.  
  8.           GET     h.SWInames
  9.  
  10. ; Area name C$$code advisable as wanted to link with C output
  11.  
  12.           AREA    |C$$code|, CODE, READONLY
  13.  
  14. ; Export global symbols
  15.  
  16.       EXPORT  |PlotSpriteVGA|
  17.  
  18. ;Plot Sprite
  19. ;
  20. ; on entry :-
  21. ;    r0 = pointer to data block where :-
  22. ;     0 = frame number
  23. ;     1 = left clip value
  24. ;     2 = right clip value (relative to size of sprite)
  25. ;     3 = size of square (height)
  26. ;     4 = increment (20 bit fixed point number)
  27. ;     5 = x position of square centre on screen
  28. ;     6 = screen address
  29. ;     7 = pointer to frame base address
  30. ;     8 = screen width
  31. ;     9 = screen height
  32. ;    10 = y_value
  33.  
  34. |PlotSpriteVGA|
  35.       STMFD   r13!,{r0-r12,link}
  36.  
  37.  
  38.     ;compute base screen address for plot
  39.     LDR   r1,[r0,#32]  ;load screen width
  40.     LDR   r2,[r0,#12]  ;load height
  41.     LDR   r3,[r0,#20]  ;load centre pos
  42.     LDR   r4,[r0,#36]  ;load screen height
  43.     LDR   r14,[r0,#24] ;load screen address
  44.  
  45.     ;clear y_value
  46.     MOV   r5,#0
  47.     STR   r5,[r0,#40]
  48.  
  49.     ;((screen height - (height)/2) * 640)
  50.     MOV   r5,r4,LSR #1
  51.         SUB   r5,r5,r2,LSR #1
  52.  
  53.     MOV   r12,r5,LSL #7    ; * 128
  54.         ADD   r5,r12,r5,LSL #9 ; + (* 512)
  55.     SUB   r5,r5,#320
  56.  
  57.     ;(screen width + centre pos - (height/2))
  58.     ;SUB   r6,r3,r2,LSR #1
  59.         ;ADD   r6,r6,r1
  60.  
  61.     ;sum results and add to screen base
  62.         ;ADD   r5,r5,r6
  63.     ADD   r5,r5,r14
  64.     STR   r5,[r0,#24]
  65.  
  66.     ;get data from Frame Database
  67.         ; locate frame data in Database
  68.         LDR   r6,[r0,#28]  ;load pointer to database
  69.  
  70.     ;skip the inital 4 words, these are not required
  71.     ADD   r6,r6,#16
  72.  
  73.     ;locate pointer to our frame
  74.     LDR   r7,[r0]      ;load frame number
  75.  
  76.     ;multiply by 4, and add to database pointer
  77.     ADD   r7,r6,r7,LSL #2
  78.  
  79.     ;get the address of the frame data
  80.     LDR   r7,[r7]
  81.     SUB   r6,r6,#16
  82.     ADD   r6,r6,r7 ;add databaase pointer to frame address
  83.  
  84.     ;calculate reverse increment
  85.     MOV   r10,r2,LSL #13
  86.  
  87. PlotNextLine
  88.  
  89.     ;load the number of vertical lines to skip
  90.     LDRB  r7,[r6],#1
  91.     CMP   r7,#254
  92.     BEQ   EndPlotSprite
  93.  
  94.     ;compute increment and number of lines to plot
  95.     LDR   r8,[r0,#40]
  96.     LDR   r9,[r0,#16]
  97.     ADD   r11,r8,r9
  98.  
  99.     MOV   r12,r11,LSR #20
  100.     SUBS  r12,r12,r8,LSR #20
  101.     STRNE r12,[r0,#44]
  102.     STRNE r11,[r0,#40]
  103.     MOVNE r11,#1
  104.     STRNE r11,[r0,#48]
  105.     BNE   Skip_Calc
  106.  
  107.     ADD   r11,r11,r9
  108.     MOV   r12,r11,LSR #20
  109.     SUBS  r12,r12,r8,LSR #20
  110.     STRNE r12,[r0,#44]
  111.     STRNE r11,[r0,#40]
  112.     MOVNE r11,#2
  113.     STRNE r11,[r0,#48]
  114.     BNE   Skip_Calc
  115.  
  116.     ADD   r11,r11,r9
  117.     MOV   r12,r11,LSR #20
  118.     SUBS  r12,r12,r8,LSR #20
  119.     STRNE r12,[r0,#44]
  120.     STRNE r11,[r0,#40]
  121.     MOVNE r11,#3
  122.     STRNE r11,[r0,#48]
  123.     BNE   Skip_Calc
  124.  
  125.     ADD   r11,r11,r9
  126.     MOV   r12,r11,LSR #20
  127.     SUBS  r12,r12,r8,LSR #20
  128.     STRNE r12,[r0,#44]
  129.     STRNE r11,[r0,#40]
  130.     MOVNE r11,#4
  131.     STRNE r11,[r0,#48]
  132.     BNE   Skip_Calc
  133.  
  134. Skip_Calc
  135.     ;multiply by reverse increment
  136.     MUL   r7,r10,r7
  137.     MOV   r7,r7,LSR #20
  138.  
  139.     ;multiply by 640
  140.     MOV   r8,r7,LSL #7
  141.     ADD   r7,r8,r7,LSL #9
  142.  
  143.     ;add to base screen address
  144.     ADD   r5,r5,r7
  145.  
  146. NextSegment
  147.     ;load the line length and horizontal skip
  148.     LDRB  r14,[r6],#1 ;line length
  149.     ADD   r14,r14,#1
  150.     LDRB  r9,[r6],#1 ;horizontal skip
  151.     ;ADD   r9,r9,#1
  152.  
  153.     ;reverse increment = height/128
  154.     ;we treat 'height' as reverse increment wiht 7 bit
  155.         ;fixed point accuracy.
  156.  
  157.     ;multiply horizontal skip by reverse increment to get 'offset'
  158.     ; load increment
  159.     ;LDR   r10,[r0,#16]
  160.     LDR   r2,[r0,#12]
  161.     MUL   r9,r10,r9
  162.     MOV   r9,r9,LSR #20
  163.     SUB   r11,r3,r2,LSR #1 ;centre-(height/2)
  164.     ADD   r9,r9,r11        ;hs + (centre-(height/2))
  165.  
  166.         ;multiply source domain line length by increment to get real
  167.     ;'line length'
  168.     MUL   r8,r10,r14
  169.     MOV   r8,r8,LSR #20
  170.  
  171.     ;load left and right clip values
  172.     LDR   r11,[r0,#4] ;left
  173.     LDR   r12,[r0,#8] ;right
  174.     LDR   r2,[r0,#16]
  175.  
  176.     CMP   r12,r9
  177.     MOVLE r8,#0
  178.     MOVLE r9,#0
  179.     BLE   skip_leftclip_else
  180.     ;if offset < left clip then
  181.     ;  source offset = ((left clip - offset) * reverse increment)
  182.     ;  base screen address += left clip
  183.     ;  line length = (line length - (left clip - offset)
  184.     ;end if
  185.     SUBS  r1,r11,r9 ;left clip - offset
  186.     BMI   skip_leftclip
  187.     ADD   r7,r8,r9
  188.     CMP   r11,r7
  189.     MOVGE r8,#0
  190.     MOVGE r9,#0
  191.     BGE   skip_leftclip_else
  192.     MUL   r4,r2,r1
  193.     MOV   r4,r4,LSR #20 ;((left clip - offset) * increment)
  194.     ADD   r7,r6,r4
  195.  
  196.     ADD   r5,r5,r11 ;base screen address += left clip
  197.     MOV   r9,r11
  198.  
  199.     SUB   r8,r8,r1
  200.     B     skip_leftclip_else
  201.  
  202. skip_leftclip
  203.         ADD   r5,r5,r9 ;base screen address += offset
  204.     MOV   r7,r6
  205.  
  206. skip_leftclip_else
  207.     CMP   r8,#0
  208.     BEQ   skip_reg_load
  209.  
  210.     ;clip right by modifying line length
  211.     ADD   r4,r8,r9
  212.     CMP   r4,r12
  213.     SUBGT r8,r12,r9
  214.  
  215.     ;store registers on stack
  216.     STMFD   r13!,{r0-r12,link}
  217.  
  218.     ;set up registers
  219.     MOV    r4,r7
  220.     MOV     r6,r8
  221.     MOV     r1,r5
  222.  
  223.     LDR     r11,[r0,#48]
  224.     B       PlotLine
  225.  
  226. NextLine
  227.     ;load registers from stack
  228.     LDMFD   r13!,{r0-r12,link}
  229.  
  230. skip_reg_load
  231.     ;modify database pointer to point to end of line block
  232.     ADD     r6,r6,r14
  233.     ;ADD     r6,r6,#1
  234.     LDRB    r7,[r6]
  235.     CMP     r7,#254
  236.     BEQ     Test2EndPlotSprite
  237.  
  238.     CMP     r7,#255
  239.     SUB     r5,r5,r9
  240.     BNE     NextSegment
  241.  
  242.     LDR     r8,[r0,#44]
  243.     CMP     r8,#1
  244.     BEQ     skip_modify_database
  245.  
  246.     ;skip required number of lines through database
  247.     ADD     r6,r6,#1
  248.     SUB     r8,r8,#1
  249.     ADD     r5,r5,#640 ;modify screen address
  250.  
  251. skip_database_line
  252.     ;load vskip
  253.     ADD     r6,r6,#1
  254.  
  255. skip_next_segment
  256.     ;load length
  257.     LDRB    r12,[r6],#1
  258.  
  259.     ;load hskip
  260.     ADD     r6,r6,#2
  261.  
  262.     ADD     r6,r6,r12
  263.  
  264.     LDRB    r7,[r6]
  265.     CMP     r7,#254
  266.     BEQ     TestEndPlotSprite
  267.  
  268.     CMP     r7,#255
  269.     BNE     skip_next_segment
  270.  
  271.     SUBS    r8,r8,#1
  272.     ADD     r6,r6,#1
  273.     BNE     skip_database_line
  274.  
  275.     B       PlotNextLine
  276.  
  277. skip_modify_database
  278.     ;update screen address
  279.     LDR     r8,[r0,#48]
  280.     MOV     r11,r8,LSL #7
  281.     ADD     r8,r11,r8,LSL #9
  282.     ADD     r5,r5,r8
  283.  
  284.     ADD     r6,r6,#1
  285.  
  286.     B       PlotNextLine
  287.  
  288. TestEndPlotSprite
  289.     B       EndPlotSprite
  290.  
  291. Test2EndPlotSprite
  292.     B       EndPlotSprite
  293.  
  294.  
  295. ; line plotter
  296. ;
  297. ; on entry :-
  298. ;    r11 = number of lines to plot
  299. ;    r4 = source base address
  300. ;    r6 = line length
  301. ;       r2 = increment
  302. ;    r1 = screen address
  303.  
  304. PlotLine
  305.  
  306.     ;check for zero length line
  307.     CMP   r6,#0
  308.     BEQ   end_plotOne
  309.  
  310.     ;update y incrememt and calculate number of lines to draw
  311.     CMP   r11,#1
  312.     BEQ   OneLine
  313.     CMP   r11,#2
  314.     BEQ   TwoLine
  315.     CMP   r11,#3
  316.     BEQ   ThreeLine
  317.     B     FourLine
  318.  
  319. ;**********************************
  320. ;
  321. ; One Line draw
  322. ;
  323. ;**********************************
  324. OneLine
  325.     ;find offsets - start & end of line
  326.     AND   r7,r1,#3
  327.     RSB   r7,r7,#4
  328.     AND   r7,r7,#3
  329.  
  330.     ADD   r11,r1,r6
  331.     AND   r11,r11,#3
  332.     MOV   r12,r6
  333.  
  334.     ;plot start pixels
  335.     MOV   r3,#0
  336.     CMP   r7,#0
  337.     BEQ   skip_start_plotOne
  338.  
  339.     LDRB  r10,[r4,r3,LSR #20]
  340.     ADD   r3,r3,r2
  341.     STRB  r10,[r1,#320]
  342.     STRB  r10,[r1],#1
  343.     ;check for small pixel line
  344.     SUBS  r12,r12,#1
  345.         BEQ   end_plotOne
  346.     CMP   r7,#1
  347.         BEQ   skip_start_plotOne
  348.  
  349.     LDRB  r10,[r4,r3,LSR #20]
  350.     ADD   r3,r3,r2
  351.     STRB  r10,[r1,#320]
  352.     STRB  r10,[r1],#1
  353.     ;check for small pixel line
  354.     SUBS  r12,r12,#1
  355.         BEQ   end_plotOne
  356.     CMP   r7,#2
  357.         BEQ   skip_start_plotOne
  358.  
  359.     LDRB  r10,[r4,r3,LSR #20]
  360.     ADD   r3,r3,r2
  361.     STRB  r10,[r1,#320]
  362.     STRB  r10,[r1],#1
  363.     ;check for small pixel line
  364.     SUBS  r12,r12,#1
  365.         BEQ   end_plotOne
  366.  
  367. skip_start_plotOne
  368.     MOV   r12,r6
  369.     ADD   r9,r7,r11
  370.     SUB   r9,r6,r9
  371.     MOV   r9,r9,LSR #2
  372.  
  373.     MOVS  r8,r9,LSR #2
  374.     BEQ   skip_four_word_plotOne
  375.  
  376. four_word_plotOne
  377.     LDRB  r5,[r4,r3,LSR #20]
  378.     ADD   r3,r3,r2
  379.     LDRB  r14,[r4,r3,LSR #20]
  380.     ADD   r3,r3,r2
  381.     ADD   r5,r5,r14,LSL #8
  382.     LDRB  r14,[r4,r3,LSR #20]
  383.     ADD   r3,r3,r2
  384.     ADD   r5,r5,r14,LSL #16
  385.     LDRB  r14,[r4,r3,LSR #20]
  386.     ADD   r3,r3,r2
  387.     ADD   r5,r5,r14,LSL #24
  388.  
  389.     LDRB  r6,[r4,r3,LSR #20]
  390.     ADD   r3,r3,r2
  391.     LDRB  r14,[r4,r3,LSR #20]
  392.     ADD   r3,r3,r2
  393.     ADD   r6,r6,r14,LSL #8
  394.     LDRB  r14,[r4,r3,LSR #20]
  395.     ADD   r3,r3,r2
  396.     ADD   r6,r6,r14,LSL #16
  397.     LDRB  r14,[r4,r3,LSR #20]
  398.     ADD   r3,r3,r2
  399.     ADD   r6,r6,r14,LSL #24
  400.  
  401.     LDRB  r7,[r4,r3,LSR #20]
  402.     ADD   r3,r3,r2
  403.     LDRB  r14,[r4,r3,LSR #20]
  404.     ADD   r3,r3,r2
  405.     ADD   r7,r7,r14,LSL #8
  406.     LDRB  r14,[r4,r3,LSR #20]
  407.     ADD   r3,r3,r2
  408.     ADD   r7,r7,r14,LSL #16
  409.     LDRB  r14,[r4,r3,LSR #20]
  410.     ADD   r3,r3,r2
  411.     ADD   r7,r7,r14,LSL #24
  412.  
  413.     LDRB  r8,[r4,r3,LSR #20]
  414.     ADD   r3,r3,r2
  415.     LDRB  r14,[r4,r3,LSR #20]
  416.     ADD   r3,r3,r2
  417.     ADD   r8,r8,r14,LSL #8
  418.     LDRB  r14,[r4,r3,LSR #20]
  419.     ADD   r3,r3,r2
  420.     ADD   r8,r8,r14,LSL #16
  421.     LDRB  r14,[r4,r3,LSR #20]
  422.     ADD   r3,r3,r2
  423.     ADD   r8,r8,r14,LSL #24
  424.  
  425.     ADD   r1,r1,#320
  426.     STMIA r1,{r5-r8}
  427.     SUB   r1,r1,#320
  428.     STMIA r1!,{r5-r8}
  429.     SUB   r9,r9,#4
  430.         MOVS  r8,r9,LSR #2
  431.     BNE   four_word_plotOne
  432.  
  433. skip_four_word_plotOne
  434.     ANDS  r8,r9,#2
  435.     BEQ   skip_two_word_plotOne
  436.  
  437.     ;two word plot
  438.     LDRB  r7,[r4,r3,LSR #20]
  439.     ADD   r3,r3,r2
  440.     LDRB  r14,[r4,r3,LSR #20]
  441.     ADD   r3,r3,r2
  442.     ADD   r7,r7,r14,LSL #8
  443.     LDRB  r14,[r4,r3,LSR #20]
  444.     ADD   r3,r3,r2
  445.     ADD   r7,r7,r14,LSL #16
  446.     LDRB  r14,[r4,r3,LSR #20]
  447.     ADD   r3,r3,r2
  448.     ADD   r7,r7,r14,LSL #24
  449.  
  450.     LDRB  r8,[r4,r3,LSR #20]
  451.     ADD   r3,r3,r2
  452.     LDRB  r14,[r4,r3,LSR #20]
  453.     ADD   r3,r3,r2
  454.     ADD   r8,r8,r14,LSL #8
  455.     LDRB  r14,[r4,r3,LSR #20]
  456.     ADD   r3,r3,r2
  457.     ADD   r8,r8,r14,LSL #16
  458.     LDRB  r14,[r4,r3,LSR #20]
  459.     ADD   r3,r3,r2
  460.     ADD   r8,r8,r14,LSL #24
  461.  
  462.     ADD   r1,r1,#320
  463.     STMIA r1,{r7-r8}
  464.     SUB   r1,r1,#320
  465.     STMIA r1!,{r7-r8}
  466.     SUB   r9,r9,#2
  467.  
  468. skip_two_word_plotOne
  469.     ANDS  r8,r9,#1
  470.     BEQ   skip_one_word_plotOne
  471.  
  472.     ;one word plot
  473.     LDRB  r8,[r4,r3,LSR #20]
  474.     ADD   r3,r3,r2
  475.     LDRB  r14,[r4,r3,LSR #20]
  476.     ADD   r3,r3,r2
  477.     ADD   r8,r8,r14,LSL #8
  478.     LDRB  r14,[r4,r3,LSR #20]
  479.     ADD   r3,r3,r2
  480.     ADD   r8,r8,r14,LSL #16
  481.     LDRB  r14,[r4,r3,LSR #20]
  482.     ADD   r3,r3,r2
  483.     ADD   r8,r8,r14,LSL #24
  484.  
  485.     STR   r8,[r1,#320]
  486.     STR   r8,[r1],#4
  487.  
  488. skip_one_word_plotOne
  489.     ;plot_end_pixels
  490.     CMP   r11,#0
  491.     BEQ   end_plotOne
  492.  
  493.     LDRB  r10,[r4,r3,LSR #20]
  494.     ADD   r3,r3,r2
  495.     STRB  r10,[r1,#320]
  496.     STRB  r10,[r1],#1
  497.     ;check for small pixel line
  498.     SUBS  r12,r12,#1
  499.         BEQ   end_plotOne
  500.     CMP   r11,#1
  501.         BEQ   end_plotOne
  502.  
  503.     LDRB  r10,[r4,r3,LSR #20]
  504.     ADD   r3,r3,r2
  505.     STRB  r10,[r1,#320]
  506.     STRB  r10,[r1],#1
  507.     ;check for small pixel line
  508.     SUBS  r12,r12,#1
  509.         BEQ   end_plotOne
  510.     CMP   r11,#2
  511.         BEQ   end_plotOne
  512.  
  513.     LDRB  r10,[r4,r3,LSR #20]
  514.     ADD   r3,r3,r2
  515.     STRB  r10,[r1,#320]
  516.     STRB  r10,[r1],#1
  517.     ;check for small pixel line
  518.     SUBS  r12,r12,#1
  519.         BEQ   end_plotOne
  520.  
  521. end_plotOne
  522.     B     NextLine
  523.  
  524. ;**********************************
  525. ;
  526. ; Two Line draw
  527. ;
  528. ;**********************************
  529. TwoLine
  530.     ;find offsets - start & end of line
  531.     AND   r7,r1,#3
  532.     RSB   r7,r7,#4
  533.     AND   r7,r7,#3
  534.  
  535.     ADD   r11,r1,r6
  536.     AND   r11,r11,#3
  537.  
  538.     ;plot start pixels
  539.     MOV   r3,#0
  540.     CMP   r7,#0
  541.     BEQ   skip_start_plotTwo
  542.  
  543.     LDRB  r10,[r4,r3,LSR #20]
  544.     ADD   r3,r3,r2
  545.     STRB  r10,[r1,#960]
  546.     STRB  r10,[r1,#640]
  547.     STRB  r10,[r1,#320]
  548.     STRB  r10,[r1],#1
  549.     ;check for 1 pixel line
  550.     CMP   r6,#1
  551.         BEQ   end_plotTwo
  552.     CMP   r7,#1
  553.         BEQ   skip_start_plotTwo
  554.  
  555.     LDRB  r10,[r4,r3,LSR #20]
  556.     ADD   r3,r3,r2
  557.     STRB  r10,[r1,#960]
  558.     STRB  r10,[r1,#640]
  559.     STRB  r10,[r1,#320]
  560.     STRB  r10,[r1],#1
  561.     ;check for 2 pixel line
  562.     CMP   r6,#2
  563.         BEQ   end_plotTwo
  564.     CMP   r7,#2
  565.         BEQ   skip_start_plotTwo
  566.  
  567.     LDRB  r10,[r4,r3,LSR #20]
  568.     ADD   r3,r3,r2
  569.     STRB  r10,[r1,#960]
  570.     STRB  r10,[r1,#640]
  571.     STRB  r10,[r1,#320]
  572.     STRB  r10,[r1],#1
  573.     ;check for 3 pixel line
  574.     CMP   r6,#3
  575.         BEQ   end_plotTwo
  576.  
  577. skip_start_plotTwo
  578.     ADD   r9,r7,r11
  579.     SUB   r9,r6,r9
  580.     MOV   r9,r9,LSR #2
  581.  
  582.     MOVS  r8,r9,LSR #2
  583.     BEQ   skip_four_word_plotTwo
  584.  
  585. four_word_plotTwo
  586.     LDRB  r5,[r4,r3,LSR #20]
  587.     ADD   r3,r3,r2
  588.     LDRB  r14,[r4,r3,LSR #20]
  589.     ADD   r3,r3,r2
  590.     ADD   r5,r5,r14,LSL #8
  591.     LDRB  r14,[r4,r3,LSR #20]
  592.     ADD   r3,r3,r2
  593.     ADD   r5,r5,r14,LSL #16
  594.     LDRB  r14,[r4,r3,LSR #20]
  595.     ADD   r3,r3,r2
  596.     ADD   r5,r5,r14,LSL #24
  597.  
  598.     LDRB  r6,[r4,r3,LSR #20]
  599.     ADD   r3,r3,r2
  600.     LDRB  r14,[r4,r3,LSR #20]
  601.     ADD   r3,r3,r2
  602.     ADD   r6,r6,r14,LSL #8
  603.     LDRB  r14,[r4,r3,LSR #20]
  604.     ADD   r3,r3,r2
  605.     ADD   r6,r6,r14,LSL #16
  606.     LDRB  r14,[r4,r3,LSR #20]
  607.     ADD   r3,r3,r2
  608.     ADD   r6,r6,r14,LSL #24
  609.  
  610.     LDRB  r7,[r4,r3,LSR #20]
  611.     ADD   r3,r3,r2
  612.     LDRB  r14,[r4,r3,LSR #20]
  613.     ADD   r3,r3,r2
  614.     ADD   r7,r7,r14,LSL #8
  615.     LDRB  r14,[r4,r3,LSR #20]
  616.     ADD   r3,r3,r2
  617.     ADD   r7,r7,r14,LSL #16
  618.     LDRB  r14,[r4,r3,LSR #20]
  619.     ADD   r3,r3,r2
  620.     ADD   r7,r7,r14,LSL #24
  621.  
  622.     LDRB  r8,[r4,r3,LSR #20]
  623.     ADD   r3,r3,r2
  624.     LDRB  r14,[r4,r3,LSR #20]
  625.     ADD   r3,r3,r2
  626.     ADD   r8,r8,r14,LSL #8
  627.     LDRB  r14,[r4,r3,LSR #20]
  628.     ADD   r3,r3,r2
  629.     ADD   r8,r8,r14,LSL #16
  630.     LDRB  r14,[r4,r3,LSR #20]
  631.     ADD   r3,r3,r2
  632.     ADD   r8,r8,r14,LSL #24
  633.  
  634.     ADD   r1,r1,#320
  635.     STMIA r1,{r5-r8}
  636.     ADD   r1,r1,#320
  637.     STMIA r1,{r5-r8}
  638.     ADD   r1,r1,#320
  639.     STMIA r1,{r5-r8}
  640.     SUB   r1,r1,#960
  641.     STMIA r1!,{r5-r8}
  642.     SUB   r9,r9,#4
  643.         MOVS  r8,r9,LSR #2
  644.     BNE   four_word_plotTwo
  645.  
  646. skip_four_word_plotTwo
  647.     ANDS  r8,r9,#2
  648.     BEQ   skip_two_word_plotTwo
  649.  
  650.     ;two word plot
  651.     LDRB  r7,[r4,r3,LSR #20]
  652.     ADD   r3,r3,r2
  653.     LDRB  r14,[r4,r3,LSR #20]
  654.     ADD   r3,r3,r2
  655.     ADD   r7,r7,r14,LSL #8
  656.     LDRB  r14,[r4,r3,LSR #20]
  657.     ADD   r3,r3,r2
  658.     ADD   r7,r7,r14,LSL #16
  659.     LDRB  r14,[r4,r3,LSR #20]
  660.     ADD   r3,r3,r2
  661.     ADD   r7,r7,r14,LSL #24
  662.  
  663.     LDRB  r8,[r4,r3,LSR #20]
  664.     ADD   r3,r3,r2
  665.     LDRB  r14,[r4,r3,LSR #20]
  666.     ADD   r3,r3,r2
  667.     ADD   r8,r8,r14,LSL #8
  668.     LDRB  r14,[r4,r3,LSR #20]
  669.     ADD   r3,r3,r2
  670.     ADD   r8,r8,r14,LSL #16
  671.     LDRB  r14,[r4,r3,LSR #20]
  672.     ADD   r3,r3,r2
  673.     ADD   r8,r8,r14,LSL #24
  674.  
  675.     ADD   r1,r1,#320
  676.     STMIA r1,{r7-r8}
  677.     ADD   r1,r1,#320
  678.     STMIA r1,{r7-r8}
  679.     ADD   r1,r1,#320
  680.     STMIA r1,{r7-r8}
  681.     SUB   r1,r1,#960
  682.     STMIA r1!,{r7-r8}
  683.     SUB   r9,r9,#2
  684.  
  685. skip_two_word_plotTwo
  686.     ANDS  r8,r9,#1
  687.     BEQ   skip_one_word_plotTwo
  688.  
  689.     ;one word plot
  690.     LDRB  r8,[r4,r3,LSR #20]
  691.     ADD   r3,r3,r2
  692.     LDRB  r14,[r4,r3,LSR #20]
  693.     ADD   r3,r3,r2
  694.     ADD   r8,r8,r14,LSL #8
  695.     LDRB  r14,[r4,r3,LSR #20]
  696.     ADD   r3,r3,r2
  697.     ADD   r8,r8,r14,LSL #16
  698.     LDRB  r14,[r4,r3,LSR #20]
  699.     ADD   r3,r3,r2
  700.     ADD   r8,r8,r14,LSL #24
  701.  
  702.     STR   r8,[r1,#320]
  703.     STR   r8,[r1,#640]
  704.     STR   r8,[r1,#960]
  705.     STR   r8,[r1],#4
  706.  
  707. skip_one_word_plotTwo
  708.     ;plot_end_pixels
  709.     CMP   r11,#0
  710.     BEQ   end_plotTwo
  711.  
  712.     LDRB  r10,[r4,r3,LSR #20]
  713.     ADD   r3,r3,r2
  714.     STRB  r10,[r1,#320]
  715.     STRB  r10,[r1,#640]
  716.     STRB  r10,[r1,#960]
  717.     STRB  r10,[r1],#1
  718.     CMP   r11,#1
  719.         BEQ   end_plotTwo
  720.  
  721.     LDRB  r10,[r4,r3,LSR #20]
  722.     ADD   r3,r3,r2
  723.     STRB  r10,[r1,#320]
  724.     STRB  r10,[r1,#640]
  725.     STRB  r10,[r1,#960]
  726.     STRB  r10,[r1],#1
  727.     CMP   r11,#2
  728.         BEQ   end_plotTwo
  729.  
  730.     LDRB  r10,[r4,r3,LSR #20]
  731.     ADD   r3,r3,r2
  732.     STRB  r10,[r1,#320]
  733.     STRB  r10,[r1,#640]
  734.     STRB  r10,[r1,#960]
  735.     STRB  r10,[r1],#1
  736.  
  737. end_plotTwo
  738.     B     NextLine
  739.  
  740.  
  741. ;**********************************
  742. ;
  743. ; Three Line draw
  744. ;
  745. ;**********************************
  746. ThreeLine
  747.     ;find offsets - start & end of line
  748.     AND   r7,r1,#3
  749.     RSB   r7,r7,#4
  750.     AND   r7,r7,#3
  751.  
  752.     ADD   r11,r1,r6
  753.     AND   r11,r11,#3
  754.  
  755.     ;plot start pixels
  756.     MOV   r3,#0
  757.     CMP   r7,#0
  758.     BEQ   skip_start_plotThree
  759.  
  760.     LDRB  r10,[r4,r3,LSR #20]
  761.     ADD   r3,r3,r2
  762.     STRB  r10,[r1,#320]
  763.     STRB  r10,[r1,#640]
  764.     STRB  r10,[r1,#960]
  765.     STRB  r10,[r1,#1280]
  766.     STRB  r10,[r1,#1600]
  767.     STRB  r10,[r1],#1
  768.     ;check for 1 pixel line
  769.     CMP   r6,#1
  770.         BEQ   end_plotTwo
  771.     CMP   r7,#1
  772.         BEQ   skip_start_plotThree
  773.  
  774.     LDRB  r10,[r4,r3,LSR #20]
  775.     ADD   r3,r3,r2
  776.     STRB  r10,[r1,#640]
  777.     STRB  r10,[r1,#320]
  778.     STRB  r10,[r1,#960]
  779.     STRB  r10,[r1,#1280]
  780.     STRB  r10,[r1,#1600]
  781.     STRB  r10,[r1],#1
  782.     ;check for 2 pixel line
  783.     CMP   r6,#2
  784.         BEQ   end_plotTwo
  785.     CMP   r7,#2
  786.         BEQ   skip_start_plotThree
  787.  
  788.     LDRB  r10,[r4,r3,LSR #20]
  789.     ADD   r3,r3,r2
  790.     STRB  r10,[r1,#640]
  791.     STRB  r10,[r1,#320]
  792.     STRB  r10,[r1,#960]
  793.     STRB  r10,[r1,#1280]
  794.     STRB  r10,[r1,#1600]
  795.     STRB  r10,[r1],#1
  796.     ;check for 3 pixel line
  797.     CMP   r6,#3
  798.         BEQ   end_plotTwo
  799.  
  800. skip_start_plotThree
  801.     ADD   r9,r7,r11
  802.     SUB   r9,r6,r9
  803.     MOV   r9,r9,LSR #2
  804.  
  805.     MOVS  r8,r9,LSR #2
  806.     BEQ   skip_four_word_plotThree
  807.  
  808. four_word_plotThree
  809.     LDRB  r5,[r4,r3,LSR #20]
  810.     ADD   r3,r3,r2
  811.     LDRB  r14,[r4,r3,LSR #20]
  812.     ADD   r3,r3,r2
  813.     ADD   r5,r5,r14,LSL #8
  814.     LDRB  r14,[r4,r3,LSR #20]
  815.     ADD   r3,r3,r2
  816.     ADD   r5,r5,r14,LSL #16
  817.     LDRB  r14,[r4,r3,LSR #20]
  818.     ADD   r3,r3,r2
  819.     ADD   r5,r5,r14,LSL #24
  820.  
  821.     LDRB  r6,[r4,r3,LSR #20]
  822.     ADD   r3,r3,r2
  823.     LDRB  r14,[r4,r3,LSR #20]
  824.     ADD   r3,r3,r2
  825.     ADD   r6,r6,r14,LSL #8
  826.     LDRB  r14,[r4,r3,LSR #20]
  827.     ADD   r3,r3,r2
  828.     ADD   r6,r6,r14,LSL #16
  829.     LDRB  r14,[r4,r3,LSR #20]
  830.     ADD   r3,r3,r2
  831.     ADD   r6,r6,r14,LSL #24
  832.  
  833.     LDRB  r7,[r4,r3,LSR #20]
  834.     ADD   r3,r3,r2
  835.     LDRB  r14,[r4,r3,LSR #20]
  836.     ADD   r3,r3,r2
  837.     ADD   r7,r7,r14,LSL #8
  838.     LDRB  r14,[r4,r3,LSR #20]
  839.     ADD   r3,r3,r2
  840.     ADD   r7,r7,r14,LSL #16
  841.     LDRB  r14,[r4,r3,LSR #20]
  842.     ADD   r3,r3,r2
  843.     ADD   r7,r7,r14,LSL #24
  844.  
  845.     LDRB  r8,[r4,r3,LSR #20]
  846.     ADD   r3,r3,r2
  847.     LDRB  r14,[r4,r3,LSR #20]
  848.     ADD   r3,r3,r2
  849.     ADD   r8,r8,r14,LSL #8
  850.     LDRB  r14,[r4,r3,LSR #20]
  851.     ADD   r3,r3,r2
  852.     ADD   r8,r8,r14,LSL #16
  853.     LDRB  r14,[r4,r3,LSR #20]
  854.     ADD   r3,r3,r2
  855.     ADD   r8,r8,r14,LSL #24
  856.  
  857.     ADD   r1,r1,#320
  858.     STMIA r1,{r5-r8}
  859.     ADD   r1,r1,#320
  860.     STMIA r1,{r5-r8}
  861.     ADD   r1,r1,#320
  862.     STMIA r1,{r5-r8}
  863.     ADD   r1,r1,#320
  864.     STMIA r1,{r5-r8}
  865.     ADD   r1,r1,#320
  866.     STMIA r1,{r5-r8}
  867.     SUB   r1,r1,#1600
  868.     STMIA r1!,{r5-r8}
  869.     SUB   r9,r9,#4
  870.         MOVS  r8,r9,LSR #2
  871.     BNE   four_word_plotThree
  872.  
  873. skip_four_word_plotThree
  874.     ANDS  r8,r9,#2
  875.     BEQ   skip_two_word_plotThree
  876.  
  877.     ;two word plot
  878.     LDRB  r7,[r4,r3,LSR #20]
  879.     ADD   r3,r3,r2
  880.     LDRB  r14,[r4,r3,LSR #20]
  881.     ADD   r3,r3,r2
  882.     ADD   r7,r7,r14,LSL #8
  883.     LDRB  r14,[r4,r3,LSR #20]
  884.     ADD   r3,r3,r2
  885.     ADD   r7,r7,r14,LSL #16
  886.     LDRB  r14,[r4,r3,LSR #20]
  887.     ADD   r3,r3,r2
  888.     ADD   r7,r7,r14,LSL #24
  889.  
  890.     LDRB  r8,[r4,r3,LSR #20]
  891.     ADD   r3,r3,r2
  892.     LDRB  r14,[r4,r3,LSR #20]
  893.     ADD   r3,r3,r2
  894.     ADD   r8,r8,r14,LSL #8
  895.     LDRB  r14,[r4,r3,LSR #20]
  896.     ADD   r3,r3,r2
  897.     ADD   r8,r8,r14,LSL #16
  898.     LDRB  r14,[r4,r3,LSR #20]
  899.     ADD   r3,r3,r2
  900.     ADD   r8,r8,r14,LSL #24
  901.  
  902.     ADD   r1,r1,#320
  903.     STMIA r1,{r7-r8}
  904.     ADD   r1,r1,#320
  905.     STMIA r1,{r7-r8}
  906.     ADD   r1,r1,#320
  907.     STMIA r1,{r7-r8}
  908.     ADD   r1,r1,#320
  909.     STMIA r1,{r7-r8}
  910.     ADD   r1,r1,#320
  911.     STMIA r1,{r7-r8}
  912.     SUB   r1,r1,#1600
  913.     STMIA r1!,{r7-r8}
  914.     SUB   r9,r9,#2
  915.  
  916. skip_two_word_plotThree
  917.     ANDS  r8,r9,#1
  918.     BEQ   skip_one_word_plotThree
  919.  
  920.     ;one word plot
  921.     LDRB  r8,[r4,r3,LSR #20]
  922.     ADD   r3,r3,r2
  923.     LDRB  r14,[r4,r3,LSR #20]
  924.     ADD   r3,r3,r2
  925.     ADD   r8,r8,r14,LSL #8
  926.     LDRB  r14,[r4,r3,LSR #20]
  927.     ADD   r3,r3,r2
  928.     ADD   r8,r8,r14,LSL #16
  929.     LDRB  r14,[r4,r3,LSR #20]
  930.     ADD   r3,r3,r2
  931.     ADD   r8,r8,r14,LSL #24
  932.  
  933.     STR   r8,[r1,#320]
  934.     STR   r8,[r1,#640]
  935.     STR   r8,[r1,#960]
  936.     STR   r8,[r1,#1280]
  937.     STR   r8,[r1,#1600]
  938.     STR   r8,[r1],#4
  939.  
  940. skip_one_word_plotThree
  941.     ;plot_end_pixels
  942.     CMP   r11,#0
  943.     BEQ   end_plotThree
  944.  
  945.     LDRB  r10,[r4,r3,LSR #20]
  946.     ADD   r3,r3,r2
  947.     STRB  r10,[r1,#320]
  948.     STRB  r10,[r1,#640]
  949.     STRB  r10,[r1,#960]
  950.     STRB  r10,[r1,#1280]
  951.     STRB  r10,[r1,#1600]
  952.     STRB  r10,[r1],#1
  953.     CMP   r11,#1
  954.         BEQ   end_plotThree
  955.  
  956.     LDRB  r10,[r4,r3,LSR #20]
  957.     ADD   r3,r3,r2
  958.     STRB  r10,[r1,#640]
  959.     STRB  r10,[r1,#320]
  960.     STRB  r10,[r1,#960]
  961.     STRB  r10,[r1,#1280]
  962.     STRB  r10,[r1,#1600]
  963.     STRB  r10,[r1],#1
  964.     CMP   r11,#2
  965.         BEQ   end_plotThree
  966.  
  967.     LDRB  r10,[r4,r3,LSR #20]
  968.     ADD   r3,r3,r2
  969.     STRB  r10,[r1,#640]
  970.     STRB  r10,[r1,#320]
  971.     STRB  r10,[r1,#960]
  972.     STRB  r10,[r1,#1280]
  973.     STRB  r10,[r1,#1600]
  974.     STRB  r10,[r1],#1
  975.  
  976. end_plotThree
  977.     B     NextLine
  978.  
  979. ;**********************************
  980. ;
  981. ; Four Line draw
  982. ;
  983. ;**********************************
  984. FourLine
  985.     ;find offsets - start & end of line
  986.     AND   r7,r1,#3
  987.     RSB   r7,r7,#4
  988.     AND   r7,r7,#3
  989.  
  990.     ADD   r11,r1,r6
  991.     AND   r11,r11,#3
  992.  
  993.     ;plot start pixels
  994.     MOV   r3,#0
  995.     CMP   r7,#0
  996.     BEQ   skip_start_plotFour
  997.  
  998.     LDRB  r10,[r4,r3,LSR #20]
  999.     ADD   r3,r3,r2
  1000.     STRB  r10,[r1,#960]
  1001.     STRB  r10,[r1,#640]
  1002.     STRB  r10,[r1,#320]
  1003.     STRB  r10,[r1,#1280]
  1004.     STRB  r10,[r1,#1600]
  1005.     STRB  r10,[r1,#1920]
  1006.     STRB  r10,[r1,#2240]
  1007.     STRB  r10,[r1],#1
  1008.     ;check for 1 pixel line
  1009.     CMP   r6,#1
  1010.         BEQ   end_plotFour
  1011.     CMP   r7,#1
  1012.         BEQ   skip_start_plotFour
  1013.  
  1014.     LDRB  r10,[r4,r3,LSR #20]
  1015.     ADD   r3,r3,r2
  1016.     STRB  r10,[r1,#960]
  1017.     STRB  r10,[r1,#640]
  1018.     STRB  r10,[r1,#320]
  1019.     STRB  r10,[r1,#1280]
  1020.     STRB  r10,[r1,#1600]
  1021.     STRB  r10,[r1,#1920]
  1022.     STRB  r10,[r1,#2240]
  1023.     STRB  r10,[r1],#1
  1024.     ;check for 2 pixel line
  1025.     CMP   r6,#2
  1026.         BEQ   end_plotFour
  1027.     CMP   r7,#2
  1028.         BEQ   skip_start_plotFour
  1029.  
  1030.     LDRB  r10,[r4,r3,LSR #20]
  1031.     ADD   r3,r3,r2
  1032.     STRB  r10,[r1,#960]
  1033.     STRB  r10,[r1,#640]
  1034.     STRB  r10,[r1,#320]
  1035.     STRB  r10,[r1,#1280]
  1036.     STRB  r10,[r1,#1600]
  1037.     STRB  r10,[r1,#1920]
  1038.     STRB  r10,[r1,#2240]
  1039.     STRB  r10,[r1],#1
  1040.     ;check for 3 pixel line
  1041.     CMP   r6,#3
  1042.         BEQ   end_plotFour
  1043.  
  1044. skip_start_plotFour
  1045.     ADD   r9,r7,r11
  1046.     SUB   r9,r6,r9
  1047.     MOV   r9,r9,LSR #2
  1048.  
  1049.     MOVS  r8,r9,LSR #2
  1050.     BEQ   skip_four_word_plotFour
  1051.  
  1052. four_word_plotFour
  1053.     LDRB  r5,[r4,r3,LSR #20]
  1054.     ADD   r3,r3,r2
  1055.     LDRB  r14,[r4,r3,LSR #20]
  1056.     ADD   r3,r3,r2
  1057.     ADD   r5,r5,r14,LSL #8
  1058.     LDRB  r14,[r4,r3,LSR #20]
  1059.     ADD   r3,r3,r2
  1060.     ADD   r5,r5,r14,LSL #16
  1061.     LDRB  r14,[r4,r3,LSR #20]
  1062.     ADD   r3,r3,r2
  1063.     ADD   r5,r5,r14,LSL #24
  1064.  
  1065.     LDRB  r6,[r4,r3,LSR #20]
  1066.     ADD   r3,r3,r2
  1067.     LDRB  r14,[r4,r3,LSR #20]
  1068.     ADD   r3,r3,r2
  1069.     ADD   r6,r6,r14,LSL #8
  1070.     LDRB  r14,[r4,r3,LSR #20]
  1071.     ADD   r3,r3,r2
  1072.     ADD   r6,r6,r14,LSL #16
  1073.     LDRB  r14,[r4,r3,LSR #20]
  1074.     ADD   r3,r3,r2
  1075.     ADD   r6,r6,r14,LSL #24
  1076.  
  1077.     LDRB  r7,[r4,r3,LSR #20]
  1078.     ADD   r3,r3,r2
  1079.     LDRB  r14,[r4,r3,LSR #20]
  1080.     ADD   r3,r3,r2
  1081.     ADD   r7,r7,r14,LSL #8
  1082.     LDRB  r14,[r4,r3,LSR #20]
  1083.     ADD   r3,r3,r2
  1084.     ADD   r7,r7,r14,LSL #16
  1085.     LDRB  r14,[r4,r3,LSR #20]
  1086.     ADD   r3,r3,r2
  1087.     ADD   r7,r7,r14,LSL #24
  1088.  
  1089.     LDRB  r8,[r4,r3,LSR #20]
  1090.     ADD   r3,r3,r2
  1091.     LDRB  r14,[r4,r3,LSR #20]
  1092.     ADD   r3,r3,r2
  1093.     ADD   r8,r8,r14,LSL #8
  1094.     LDRB  r14,[r4,r3,LSR #20]
  1095.     ADD   r3,r3,r2
  1096.     ADD   r8,r8,r14,LSL #16
  1097.     LDRB  r14,[r4,r3,LSR #20]
  1098.     ADD   r3,r3,r2
  1099.     ADD   r8,r8,r14,LSL #24
  1100.  
  1101.     ADD   r1,r1,#320
  1102.     STMIA r1,{r5-r8}
  1103.     ADD   r1,r1,#320
  1104.     STMIA r1,{r5-r8}
  1105.     ADD   r1,r1,#320
  1106.     STMIA r1,{r5-r8}
  1107.     ADD   r1,r1,#320
  1108.     STMIA r1,{r5-r8}
  1109.     ADD   r1,r1,#320
  1110.     STMIA r1,{r5-r8}
  1111.     ADD   r1,r1,#320
  1112.     STMIA r1,{r5-r8}
  1113.     ADD   r1,r1,#320
  1114.     STMIA r1,{r5-r8}
  1115.     SUB   r1,r1,#2240
  1116.     STMIA r1!,{r5-r8}
  1117.     SUB   r9,r9,#4
  1118.         MOVS  r8,r9,LSR #2
  1119.     BNE   four_word_plotFour
  1120.  
  1121. skip_four_word_plotFour
  1122.     ANDS  r8,r9,#2
  1123.     BEQ   skip_two_word_plotFour
  1124.  
  1125.     ;two word plot
  1126.     LDRB  r7,[r4,r3,LSR #20]
  1127.     ADD   r3,r3,r2
  1128.     LDRB  r14,[r4,r3,LSR #20]
  1129.     ADD   r3,r3,r2
  1130.     ADD   r7,r7,r14,LSL #8
  1131.     LDRB  r14,[r4,r3,LSR #20]
  1132.     ADD   r3,r3,r2
  1133.     ADD   r7,r7,r14,LSL #16
  1134.     LDRB  r14,[r4,r3,LSR #20]
  1135.     ADD   r3,r3,r2
  1136.     ADD   r7,r7,r14,LSL #24
  1137.  
  1138.     LDRB  r8,[r4,r3,LSR #20]
  1139.     ADD   r3,r3,r2
  1140.     LDRB  r14,[r4,r3,LSR #20]
  1141.     ADD   r3,r3,r2
  1142.     ADD   r8,r8,r14,LSL #8
  1143.     LDRB  r14,[r4,r3,LSR #20]
  1144.     ADD   r3,r3,r2
  1145.     ADD   r8,r8,r14,LSL #16
  1146.     LDRB  r14,[r4,r3,LSR #20]
  1147.     ADD   r3,r3,r2
  1148.     ADD   r8,r8,r14,LSL #24
  1149.  
  1150.     ADD   r1,r1,#320
  1151.     STMIA r1,{r7-r8}
  1152.     ADD   r1,r1,#320
  1153.     STMIA r1,{r7-r8}
  1154.     ADD   r1,r1,#320
  1155.     STMIA r1,{r7-r8}
  1156.     ADD   r1,r1,#320
  1157.     STMIA r1,{r7-r8}
  1158.     ADD   r1,r1,#320
  1159.     STMIA r1,{r7-r8}
  1160.     ADD   r1,r1,#320
  1161.     STMIA r1,{r7-r8}
  1162.     ADD   r1,r1,#320
  1163.     STMIA r1,{r7-r8}
  1164.     SUB   r1,r1,#2240
  1165.     STMIA r1!,{r7-r8}
  1166.     SUB   r9,r9,#2
  1167.  
  1168. skip_two_word_plotFour
  1169.     ANDS  r8,r9,#1
  1170.     BEQ   skip_one_word_plotFour
  1171.  
  1172.     ;one word plot
  1173.     LDRB  r8,[r4,r3,LSR #20]
  1174.     ADD   r3,r3,r2
  1175.     LDRB  r14,[r4,r3,LSR #20]
  1176.     ADD   r3,r3,r2
  1177.     ADD   r8,r8,r14,LSL #8
  1178.     LDRB  r14,[r4,r3,LSR #20]
  1179.     ADD   r3,r3,r2
  1180.     ADD   r8,r8,r14,LSL #16
  1181.     LDRB  r14,[r4,r3,LSR #20]
  1182.     ADD   r3,r3,r2
  1183.     ADD   r8,r8,r14,LSL #24
  1184.  
  1185.     STR   r8,[r1,#960]
  1186.     STR   r8,[r1,#640]
  1187.     STR   r8,[r1,#320]
  1188.     STR   r8,[r1,#1280]
  1189.     STR   r8,[r1,#1600]
  1190.     STR   r8,[r1,#1920]
  1191.     STR   r8,[r1,#2240]
  1192.     STR   r8,[r1],#4
  1193.  
  1194. skip_one_word_plotFour
  1195.     ;plot_end_pixels
  1196.     CMP   r11,#0
  1197.     BEQ   end_plotFour
  1198.  
  1199.     LDRB  r10,[r4,r3,LSR #20]
  1200.     ADD   r3,r3,r2
  1201.     STRB  r10,[r1,#960]
  1202.     STRB  r10,[r1,#320]
  1203.     STRB  r10,[r1,#640]
  1204.     STRB  r10,[r1,#960]
  1205.     STRB  r10,[r1,#1280]
  1206.     STRB  r10,[r1,#1600]
  1207.     STRB  r10,[r1,#1920]
  1208.     STRB  r10,[r1,#2240]
  1209.     STRB  r10,[r1],#1
  1210.     CMP   r11,#1
  1211.         BEQ   end_plotFour
  1212.  
  1213.     LDRB  r10,[r4,r3,LSR #20]
  1214.     ADD   r3,r3,r2
  1215.     STRB  r10,[r1,#960]
  1216.     STRB  r10,[r1,#640]
  1217.     STRB  r10,[r1,#320]
  1218.     STRB  r10,[r1,#1280]
  1219.     STRB  r10,[r1,#1600]
  1220.     STRB  r10,[r1,#1920]
  1221.     STRB  r10,[r1,#2240]
  1222.     STRB  r10,[r1],#1
  1223.     CMP   r11,#2
  1224.         BEQ   end_plotFour
  1225.  
  1226.     LDRB  r10,[r4,r3,LSR #20]
  1227.     ADD   r3,r3,r2
  1228.     STRB  r10,[r1,#960]
  1229.     STRB  r10,[r1,#640]
  1230.     STRB  r10,[r1,#320]
  1231.     STRB  r10,[r1,#1280]
  1232.     STRB  r10,[r1,#1600]
  1233.     STRB  r10,[r1,#1920]
  1234.     STRB  r10,[r1,#2240]
  1235.     STRB  r10,[r1],#1
  1236.  
  1237. end_plotFour
  1238.     B     NextLine
  1239.  
  1240.  
  1241.  
  1242.  
  1243. EndPlotSprite
  1244.         LDMFD   r13!,{r0-r12,pc}
  1245.  
  1246.     END
  1247.