... | ... |
@@ -65,6 +65,40 @@ screen_blit(Uint8 *layer, Uint8 *ram, Uint16 addr, int x1, int y1, int color, in |
65 | 65 |
} |
66 | 66 |
} |
67 | 67 |
|
68 |
+/* clang-format off */ |
|
69 |
+ |
|
70 |
+static Uint8 icons[] = { |
|
71 |
+ 0x00, 0x7c, 0x82, 0x82, 0x82, 0x82, 0x82, 0x7c, 0x00, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, |
|
72 |
+ 0x10, 0x00, 0x7c, 0x82, 0x02, 0x7c, 0x80, 0x80, 0xfe, 0x00, 0x7c, 0x82, 0x02, 0x1c, 0x02, |
|
73 |
+ 0x82, 0x7c, 0x00, 0x0c, 0x14, 0x24, 0x44, 0x84, 0xfe, 0x04, 0x00, 0xfe, 0x80, 0x80, 0x7c, |
|
74 |
+ 0x02, 0x82, 0x7c, 0x00, 0x7c, 0x82, 0x80, 0xfc, 0x82, 0x82, 0x7c, 0x00, 0x7c, 0x82, 0x02, |
|
75 |
+ 0x1e, 0x02, 0x02, 0x02, 0x00, 0x7c, 0x82, 0x82, 0x7c, 0x82, 0x82, 0x7c, 0x00, 0x7c, 0x82, |
|
76 |
+ 0x82, 0x7e, 0x02, 0x82, 0x7c, 0x00, 0x7c, 0x82, 0x02, 0x7e, 0x82, 0x82, 0x7e, 0x00, 0xfc, |
|
77 |
+ 0x82, 0x82, 0xfc, 0x82, 0x82, 0xfc, 0x00, 0x7c, 0x82, 0x80, 0x80, 0x80, 0x82, 0x7c, 0x00, |
|
78 |
+ 0xfc, 0x82, 0x82, 0x82, 0x82, 0x82, 0xfc, 0x00, 0x7c, 0x82, 0x80, 0xf0, 0x80, 0x82, 0x7c, |
|
79 |
+ 0x00, 0x7c, 0x82, 0x80, 0xf0, 0x80, 0x80, 0x80}; |
|
80 |
+ |
|
81 |
+/* clang-format on */ |
|
82 |
+ |
|
83 |
+static void |
|
84 |
+draw_byte(Uint8 v, Uint16 x, Uint16 y, Uint8 color) |
|
85 |
+{ |
|
86 |
+ screen_blit(uxn_screen.fg, icons, v >> 4 << 3, x, y, color, 0, 0, 0); |
|
87 |
+ screen_blit(uxn_screen.fg, icons, (v & 0xf) << 3, x + 8, y, color, 0, 0, 0); |
|
88 |
+} |
|
89 |
+ |
|
90 |
+static void |
|
91 |
+screen_debugger(Uxn *u) |
|
92 |
+{ |
|
93 |
+ int i; |
|
94 |
+ for(i = 0; i < u->wst.ptr; i++) |
|
95 |
+ draw_byte(u->wst.dat[i], i * 0x18 + 0x8, uxn_screen.height - 0x18, 0x2); |
|
96 |
+ for(i = 0; i < u->rst.ptr; i++) |
|
97 |
+ draw_byte(u->rst.dat[i], i * 0x18 + 0x8, uxn_screen.height - 0x10, 0x3); |
|
98 |
+ for(i = 0; i < 0x40; i++) |
|
99 |
+ draw_byte(u->ram[i], (i & 0x7) * 0x18 + 0x8, ((i >> 3) << 3) + 0x8, 1 + !!u->ram[i]); |
|
100 |
+} |
|
101 |
+ |
|
68 | 102 |
void |
69 | 103 |
screen_palette(Uint8 *addr) |
70 | 104 |
{ |
... | ... |
@@ -111,15 +145,19 @@ screen_resize(Uint16 width, Uint16 height) |
111 | 145 |
} |
112 | 146 |
|
113 | 147 |
void |
114 |
-screen_redraw(void) |
|
148 |
+screen_redraw(Uxn *u) |
|
115 | 149 |
{ |
116 | 150 |
Uint8 *fg = uxn_screen.fg, *bg = uxn_screen.bg; |
117 | 151 |
Uint32 palette[16], *pixels = uxn_screen.pixels; |
118 |
- int i, x, y, w = uxn_screen.width, h = uxn_screen.height; |
|
119 |
- int x1 = uxn_screen.x1; |
|
120 |
- int y1 = uxn_screen.y1; |
|
121 |
- int x2 = uxn_screen.x2 > w ? w : uxn_screen.x2; |
|
122 |
- int y2 = uxn_screen.y2 > h ? h : uxn_screen.y2; |
|
152 |
+ int i, x, y, w = uxn_screen.width, h = uxn_screen.height, x1, y1, x2, y2; |
|
153 |
+ if(u->dev[0x0e]) { |
|
154 |
+ screen_change(0, 0, w, h); |
|
155 |
+ screen_debugger(u); |
|
156 |
+ } |
|
157 |
+ x1 = uxn_screen.x1; |
|
158 |
+ y1 = uxn_screen.y1; |
|
159 |
+ x2 = uxn_screen.x2 > w ? w : uxn_screen.x2; |
|
160 |
+ y2 = uxn_screen.y2 > h ? h : uxn_screen.y2; |
|
123 | 161 |
for(i = 0; i < 16; i++) |
124 | 162 |
palette[i] = uxn_screen.palette[(i >> 2) ? (i >> 2) : (i & 3)]; |
125 | 163 |
for(y = y1; y < y2; y++) |
... | ... |
@@ -131,40 +169,6 @@ screen_redraw(void) |
131 | 169 |
uxn_screen.x2 = uxn_screen.y2 = 0; |
132 | 170 |
} |
133 | 171 |
|
134 |
-/* clang-format off */ |
|
135 |
- |
|
136 |
-Uint8 icons[] = { |
|
137 |
- 0x00, 0x7c, 0x82, 0x82, 0x82, 0x82, 0x82, 0x7c, 0x00, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, |
|
138 |
- 0x10, 0x00, 0x7c, 0x82, 0x02, 0x7c, 0x80, 0x80, 0xfe, 0x00, 0x7c, 0x82, 0x02, 0x1c, 0x02, |
|
139 |
- 0x82, 0x7c, 0x00, 0x0c, 0x14, 0x24, 0x44, 0x84, 0xfe, 0x04, 0x00, 0xfe, 0x80, 0x80, 0x7c, |
|
140 |
- 0x02, 0x82, 0x7c, 0x00, 0x7c, 0x82, 0x80, 0xfc, 0x82, 0x82, 0x7c, 0x00, 0x7c, 0x82, 0x02, |
|
141 |
- 0x1e, 0x02, 0x02, 0x02, 0x00, 0x7c, 0x82, 0x82, 0x7c, 0x82, 0x82, 0x7c, 0x00, 0x7c, 0x82, |
|
142 |
- 0x82, 0x7e, 0x02, 0x82, 0x7c, 0x00, 0x7c, 0x82, 0x02, 0x7e, 0x82, 0x82, 0x7e, 0x00, 0xfc, |
|
143 |
- 0x82, 0x82, 0xfc, 0x82, 0x82, 0xfc, 0x00, 0x7c, 0x82, 0x80, 0x80, 0x80, 0x82, 0x7c, 0x00, |
|
144 |
- 0xfc, 0x82, 0x82, 0x82, 0x82, 0x82, 0xfc, 0x00, 0x7c, 0x82, 0x80, 0xf0, 0x80, 0x82, 0x7c, |
|
145 |
- 0x00, 0x7c, 0x82, 0x80, 0xf0, 0x80, 0x80, 0x80}; |
|
146 |
- |
|
147 |
-/* clang-format on */ |
|
148 |
- |
|
149 |
-void |
|
150 |
-draw_byte(Uint8 v, Uint16 x, Uint16 y, Uint8 color) |
|
151 |
-{ |
|
152 |
- screen_blit(uxn_screen.fg, icons, v >> 4 << 3, x, y, color, 0, 0, 0); |
|
153 |
- screen_blit(uxn_screen.fg, icons, (v & 0xf) << 3, x + 8, y, color, 0, 0, 0); |
|
154 |
-} |
|
155 |
- |
|
156 |
-void |
|
157 |
-screen_debugger(Uxn *u) |
|
158 |
-{ |
|
159 |
- int i; |
|
160 |
- for(i = 0; i < u->wst.ptr; i++) |
|
161 |
- draw_byte(u->wst.dat[i], i * 0x18 + 0x8, uxn_screen.height - 0x18, 0x2); |
|
162 |
- for(i = 0; i < u->rst.ptr; i++) |
|
163 |
- draw_byte(u->rst.dat[i], i * 0x18 + 0x8, uxn_screen.height - 0x10, 0x3); |
|
164 |
- for(i = 0; i < 0x40; i++) |
|
165 |
- draw_byte(u->ram[i], (i & 0x7) * 0x18 + 0x8, ((i >> 3) << 3) + 0x8, 1 + !!u->ram[i]); |
|
166 |
-} |
|
167 |
- |
|
168 | 172 |
Uint8 |
169 | 173 |
screen_dei(Uxn *u, Uint8 addr) |
170 | 174 |
{ |
... | ... |
@@ -26,8 +26,7 @@ void screen_fill(Uint8 *layer, int x1, int y1, int x2, int y2, int color); |
26 | 26 |
void screen_palette(Uint8 *addr); |
27 | 27 |
void screen_resize(Uint16 width, Uint16 height); |
28 | 28 |
void screen_change(Uint16 x1, Uint16 y1, Uint16 x2, Uint16 y2); |
29 |
-void screen_redraw(void); |
|
30 |
-void screen_debugger(Uxn *u); |
|
29 |
+void screen_redraw(Uxn *u); |
|
31 | 30 |
|
32 | 31 |
Uint8 screen_dei(Uxn *u, Uint8 addr); |
33 | 32 |
void screen_deo(Uint8 *ram, Uint8 *d, Uint8 port); |
... | ... |
@@ -209,12 +209,7 @@ emu_resize(int width, int height) |
209 | 209 |
static void |
210 | 210 |
emu_redraw(Uxn *u) |
211 | 211 |
{ |
212 |
- if(u->dev[0x0e]) { |
|
213 |
- screen_change(0, 0, uxn_screen.width, uxn_screen.height); |
|
214 |
- screen_redraw(); |
|
215 |
- screen_debugger(u); |
|
216 |
- } else |
|
217 |
- screen_redraw(); |
|
212 |
+ screen_redraw(u); |
|
218 | 213 |
if(SDL_UpdateTexture(emu_texture, NULL, uxn_screen.pixels, uxn_screen.width * sizeof(Uint32)) != 0) |
219 | 214 |
system_error("SDL_UpdateTexture", SDL_GetError()); |
220 | 215 |
SDL_RenderClear(emu_renderer); |