import synthesijer.lib.axi.SimpleAXIMemIface32RTLTest;
public class TestFrame {
SimpleAXIMemIface32RTLTest obj = new SimpleAXIMemIface32RTLTest();
private void set_color_0(int base, int color){
int v = 0;
v = obj.read_data(base);
v = (v & 0xFF000000) | (color & 0x00FFFFFF);
obj.write_data(base, v);
}
private void set_color_1(int base, int color){
int v = 0;
v = obj.read_data(base);
v = (v & 0x000000FF) | ((color & 0x00FFFFFF) << 8);
obj.write_data(base, v);
}
private void set_color_2(int base, int color){
int v = 0;
v = obj.read_data(base);
v = (v & 0x0000FFFF) | ((color & 0x0000FFFF) << 16);
obj.write_data(base, v);
v = obj.read_data(base + 4);
v = (v & 0xFFFFFF00) | ((color & 0x00FF0000) >> 16);
obj.write_data(base + 4, v);
}
private void set_color_3(int base, int color){
int v = 0;
v = obj.read_data(base);
v = (v & 0x00FFFFFF) | ((color & 0x000000FF) << 24);
obj.write_data(base, v);
v = obj.read_data(base + 4);
v = (v & 0xFFFF0000) | ((color & 0x00FFFF00) >> 8);
obj.write_data(base + 4, v);
}
public void pset(int x, int y, int color){
int offset = 0x3F000000;
int pt = (y << 10) + (y << 9) + (y << 8) + (y << 7) + x; // y * 1920 + x
int base = ((pt << 1) + pt) & 0xFFFFFFFC; // (pt * 3) & 0xFFFFFFFC
int idx = ((pt << 1) + pt) & 0x00000003; // (pt * 3) & 0x00000003
base = base + offset;
int v = 0;
switch(idx){
case 0:
set_color_0(base, color);
break;
case 1:
set_color_1(base, color);
break;
case 2:
set_color_2(base, color);
break;
case 3:
set_color_3(base, color);
break;
default: break;
}
return;
}
public void clear(){
for(int i = 0; i < 1080; i++){
for(int j = 0; j < 1920; j++){
pset(i, j, 0x00000000);
}
}
}
public void fill_rect(int x, int y, int w, int h, int c){
for(int i = 0; i < w; i++){
for(int j = 0; j < h; j++){
pset(x+i, y+j, c);
}
}
}
public void test(){
for(int i = 30; i < 120; i++){
for(int j = 30; j < 120; j++){
pset(i, j, 0x00FF0000);
}
}
}
public void flush(){
}
}