6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
# File 'lib/native_file_types/apple2/ShapeTable.rb', line 6
def draw_shape(canvas,shape_table,shape_number,x,y,colour)
shape_pointer=shape_table[shape_number*2]+0x100*shape_table[1+shape_number*2]
code_byte=shape_table[shape_pointer]
shape_pointer+=1
begin
code_0=code_byte>>6
code_1=(code_byte & 0b111000)>>3
code_2=code_byte & 0b111
if (code_0==0) then
if (code_1==0) then
codes=[code_2]
else
codes=[code_2,code_1]
end
else
codes=[code_2,code_1,code_0]
end
codes.each do |code|
if (code>=4) && (!canvas.nil?) then
canvas[x,y]=colour
end
case (code % 4)
when 0b00 then y-=1
when 0b01 then x+=1
when 0b10 then y+=1
when 0b11 then x-=1
end
end
code_byte=shape_table[shape_pointer]
shape_pointer+=1
end until code_byte==0 || code_byte.nil?
[x,y]
end
|