This one uses recursion
Code: Select all
Global Dim M(15, 15)
Procedure InitBayer(x, y, s, v, st)
If s = 1
M(y, x) = v
Else
s >> 1
InitBayer(x, y, s, v, st<<2)
InitBayer(x+s, y+s, s, v+st, st<<2)
InitBayer(x+s, y, s, v+st<<1, st<<2)
InitBayer(x, y+s, s, v+st*3, st<<2)
EndIf
EndProcedure
Debug "DataSection"
Debug ""
s = 2
While s <= 16
InitBayer(0, 0, s, 0, 1)
Debug " ; "+Str(s)+"x"+Str(s)+" Bayer Matrix"
Debug " Bayer"+Str(s)+"x"+Str(s)+":"
For y = 0 To s-1
ds.s = " Data.a "
For x = 0 To s-2
ds + RSet(Str(M(y, x)),3)+", "
Next
ds + RSet(Str(M(y, s-1)),3)
Debug ds
Next
Debug " Bayer"+Str(s)+"x"+Str(s)+"_end:"
Debug ""
s << 1
Wend
Debug "EndDataSection"
Code: Select all
DataSection
; 2x2 Bayer Matrix
Bayer2x2:
Data.a 0, 2
Data.a 3, 1
Bayer2x2_end:
; 4x4 Bayer Matrix
Bayer4x4:
Data.a 0, 8, 2, 10
Data.a 12, 4, 14, 6
Data.a 3, 11, 1, 9
Data.a 15, 7, 13, 5
Bayer4x4_end:
; 8x8 Bayer Matrix
Bayer8x8:
Data.a 0, 32, 8, 40, 2, 34, 10, 42
Data.a 48, 16, 56, 24, 50, 18, 58, 26
Data.a 12, 44, 4, 36, 14, 46, 6, 38
Data.a 60, 28, 52, 20, 62, 30, 54, 22
Data.a 3, 35, 11, 43, 1, 33, 9, 41
Data.a 51, 19, 59, 27, 49, 17, 57, 25
Data.a 15, 47, 7, 39, 13, 45, 5, 37
Data.a 63, 31, 55, 23, 61, 29, 53, 21
Bayer8x8_end:
; 16x16 Bayer Matrix
Bayer16x16:
Data.a 0, 128, 32, 160, 8, 136, 40, 168, 2, 130, 34, 162, 10, 138, 42, 170
Data.a 192, 64, 224, 96, 200, 72, 232, 104, 194, 66, 226, 98, 202, 74, 234, 106
Data.a 48, 176, 16, 144, 56, 184, 24, 152, 50, 178, 18, 146, 58, 186, 26, 154
Data.a 240, 112, 208, 80, 248, 120, 216, 88, 242, 114, 210, 82, 250, 122, 218, 90
Data.a 12, 140, 44, 172, 4, 132, 36, 164, 14, 142, 46, 174, 6, 134, 38, 166
Data.a 204, 76, 236, 108, 196, 68, 228, 100, 206, 78, 238, 110, 198, 70, 230, 102
Data.a 60, 188, 28, 156, 52, 180, 20, 148, 62, 190, 30, 158, 54, 182, 22, 150
Data.a 252, 124, 220, 92, 244, 116, 212, 84, 254, 126, 222, 94, 246, 118, 214, 86
Data.a 3, 131, 35, 163, 11, 139, 43, 171, 1, 129, 33, 161, 9, 137, 41, 169
Data.a 195, 67, 227, 99, 203, 75, 235, 107, 193, 65, 225, 97, 201, 73, 233, 105
Data.a 51, 179, 19, 147, 59, 187, 27, 155, 49, 177, 17, 145, 57, 185, 25, 153
Data.a 243, 115, 211, 83, 251, 123, 219, 91, 241, 113, 209, 81, 249, 121, 217, 89
Data.a 15, 143, 47, 175, 7, 135, 39, 167, 13, 141, 45, 173, 5, 133, 37, 165
Data.a 207, 79, 239, 111, 199, 71, 231, 103, 205, 77, 237, 109, 197, 69, 229, 101
Data.a 63, 191, 31, 159, 55, 183, 23, 151, 61, 189, 29, 157, 53, 181, 21, 149
Data.a 255, 127, 223, 95, 247, 119, 215, 87, 253, 125, 221, 93, 245, 117, 213, 85
Bayer16x16_end:
EndDataSection