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