... | ... |
@@ -22,16 +22,9 @@ static Uint8 blending[4][16] = { |
22 | 22 |
{1, 2, 3, 1, 1, 2, 3, 1, 1, 2, 3, 1, 1, 2, 3, 1}, |
23 | 23 |
{2, 3, 1, 2, 2, 3, 1, 2, 2, 3, 1, 2, 2, 3, 1, 2}}; |
24 | 24 |
|
25 |
-static int |
|
26 |
-clamp(int val, int min, int max) |
|
27 |
-{ |
|
28 |
- return (val >= min) ? (val <= max) ? val : max : min; |
|
29 |
-} |
|
30 |
- |
|
31 | 25 |
static void |
32 | 26 |
screen_write(UxnScreen *p, Layer *layer, Uint16 x, Uint16 y, Uint8 color) |
33 | 27 |
{ |
34 |
- |
|
35 | 28 |
if(x < p->width && y < p->height) { |
36 | 29 |
Uint32 i = x + y * p->width; |
37 | 30 |
if(color != layer->pixels[i]) { |
... | ... |
@@ -86,11 +79,13 @@ screen_palette(UxnScreen *p, Uint8 *addr) |
86 | 79 |
void |
87 | 80 |
screen_resize(UxnScreen *p, Uint16 width, Uint16 height) |
88 | 81 |
{ |
89 |
- Uint8 |
|
90 |
- *bg = realloc(p->bg.pixels, width * height), |
|
91 |
- *fg = realloc(p->fg.pixels, width * height); |
|
92 |
- Uint32 |
|
93 |
- *pixels = realloc(p->pixels, width * height * sizeof(Uint32)); |
|
82 |
+ Uint8 *bg, *fg; |
|
83 |
+ Uint32 *pixels; |
|
84 |
+ if(width < 0x20 || height < 0x20 || width >= 0x400 || height >= 0x400) |
|
85 |
+ return; |
|
86 |
+ bg = realloc(p->bg.pixels, width * height), |
|
87 |
+ fg = realloc(p->fg.pixels, width * height); |
|
88 |
+ pixels = realloc(p->pixels, width * height * sizeof(Uint32)); |
|
94 | 89 |
if(bg) p->bg.pixels = bg; |
95 | 90 |
if(fg) p->fg.pixels = fg; |
96 | 91 |
if(pixels) p->pixels = pixels; |
... | ... |
@@ -130,10 +125,10 @@ screen_deo(Uint8 *ram, Uint8 *d, Uint8 port) |
130 | 125 |
{ |
131 | 126 |
switch(port) { |
132 | 127 |
case 0x3: |
133 |
- screen_resize(&uxn_screen, clamp(PEEK2(d + 2), 1, 1024), uxn_screen.height); |
|
128 |
+ screen_resize(&uxn_screen, PEEK2(d + 2), uxn_screen.height); |
|
134 | 129 |
break; |
135 | 130 |
case 0x5: |
136 |
- screen_resize(&uxn_screen, uxn_screen.width, clamp(PEEK2(d + 4), 1, 1024)); |
|
131 |
+ screen_resize(&uxn_screen, uxn_screen.width, PEEK2(d + 4)); |
|
137 | 132 |
break; |
138 | 133 |
case 0xe: { |
139 | 134 |
Uint16 x = PEEK2(d + 0x8), y = PEEK2(d + 0xa); |