Mercurial > repos > blastem
annotate ppm.c @ 2688:b42f00a3a937 default tip
Fix default target. Ensure m68k.h and z80.h are built before anything else when no dep info is available
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 31 Mar 2025 21:06:18 -0700 |
parents | da2e06c42d16 |
children |
rev | line source |
---|---|
1263
5f65a16c23ff
Implement raw screenshot functionality requested in ticket:10
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
1 #include <stdint.h> |
5f65a16c23ff
Implement raw screenshot functionality requested in ticket:10
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
2 #include <stdio.h> |
2685
da2e06c42d16
Add a compile-time flag to use RGB565 instead of ABGR/ARGB
Michael Pavone <pavone@retrodev.com>
parents:
1263
diff
changeset
|
3 #include "pixel.h" |
1263
5f65a16c23ff
Implement raw screenshot functionality requested in ticket:10
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
4 |
2685
da2e06c42d16
Add a compile-time flag to use RGB565 instead of ABGR/ARGB
Michael Pavone <pavone@retrodev.com>
parents:
1263
diff
changeset
|
5 void save_ppm(FILE *f, pixel_t *buffer, uint32_t width, uint32_t height, uint32_t pitch) |
1263
5f65a16c23ff
Implement raw screenshot functionality requested in ticket:10
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
6 { |
5f65a16c23ff
Implement raw screenshot functionality requested in ticket:10
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
7 fprintf(f, "P6\n%d %d\n255\n", width, height); |
5f65a16c23ff
Implement raw screenshot functionality requested in ticket:10
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
8 for(uint32_t y = 0; y < height; y++) |
5f65a16c23ff
Implement raw screenshot functionality requested in ticket:10
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
9 { |
2685
da2e06c42d16
Add a compile-time flag to use RGB565 instead of ABGR/ARGB
Michael Pavone <pavone@retrodev.com>
parents:
1263
diff
changeset
|
10 pixel_t *line = buffer; |
1263
5f65a16c23ff
Implement raw screenshot functionality requested in ticket:10
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
11 for (uint32_t x = 0; x < width; x++, line++) |
5f65a16c23ff
Implement raw screenshot functionality requested in ticket:10
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
12 { |
5f65a16c23ff
Implement raw screenshot functionality requested in ticket:10
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
13 uint8_t buf[3] = { |
2685
da2e06c42d16
Add a compile-time flag to use RGB565 instead of ABGR/ARGB
Michael Pavone <pavone@retrodev.com>
parents:
1263
diff
changeset
|
14 #ifdef USE_RGB565 |
da2e06c42d16
Add a compile-time flag to use RGB565 instead of ABGR/ARGB
Michael Pavone <pavone@retrodev.com>
parents:
1263
diff
changeset
|
15 (*line >> 8 & 0xF8) | (*line >> (8+5)), //red |
da2e06c42d16
Add a compile-time flag to use RGB565 instead of ABGR/ARGB
Michael Pavone <pavone@retrodev.com>
parents:
1263
diff
changeset
|
16 (*line >> 3 & 0xFC) | (*line >> (3+5) & 0x3), //green |
da2e06c42d16
Add a compile-time flag to use RGB565 instead of ABGR/ARGB
Michael Pavone <pavone@retrodev.com>
parents:
1263
diff
changeset
|
17 *line << 3 | (*line >> (5-3) & 0x3) //blue |
da2e06c42d16
Add a compile-time flag to use RGB565 instead of ABGR/ARGB
Michael Pavone <pavone@retrodev.com>
parents:
1263
diff
changeset
|
18 #else |
da2e06c42d16
Add a compile-time flag to use RGB565 instead of ABGR/ARGB
Michael Pavone <pavone@retrodev.com>
parents:
1263
diff
changeset
|
19 #ifdef USE_GLES |
da2e06c42d16
Add a compile-time flag to use RGB565 instead of ABGR/ARGB
Michael Pavone <pavone@retrodev.com>
parents:
1263
diff
changeset
|
20 *line, //red |
da2e06c42d16
Add a compile-time flag to use RGB565 instead of ABGR/ARGB
Michael Pavone <pavone@retrodev.com>
parents:
1263
diff
changeset
|
21 *line >> 8, //green |
da2e06c42d16
Add a compile-time flag to use RGB565 instead of ABGR/ARGB
Michael Pavone <pavone@retrodev.com>
parents:
1263
diff
changeset
|
22 *line >> 16 //blue |
da2e06c42d16
Add a compile-time flag to use RGB565 instead of ABGR/ARGB
Michael Pavone <pavone@retrodev.com>
parents:
1263
diff
changeset
|
23 #else |
1263
5f65a16c23ff
Implement raw screenshot functionality requested in ticket:10
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
24 *line >> 16, //red |
5f65a16c23ff
Implement raw screenshot functionality requested in ticket:10
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
25 *line >> 8, //green |
5f65a16c23ff
Implement raw screenshot functionality requested in ticket:10
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
26 *line //blue |
2685
da2e06c42d16
Add a compile-time flag to use RGB565 instead of ABGR/ARGB
Michael Pavone <pavone@retrodev.com>
parents:
1263
diff
changeset
|
27 #endif |
da2e06c42d16
Add a compile-time flag to use RGB565 instead of ABGR/ARGB
Michael Pavone <pavone@retrodev.com>
parents:
1263
diff
changeset
|
28 #endif |
1263
5f65a16c23ff
Implement raw screenshot functionality requested in ticket:10
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
29 }; |
5f65a16c23ff
Implement raw screenshot functionality requested in ticket:10
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
30 fwrite(buf, 1, sizeof(buf), f); |
5f65a16c23ff
Implement raw screenshot functionality requested in ticket:10
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
31 } |
2685
da2e06c42d16
Add a compile-time flag to use RGB565 instead of ABGR/ARGB
Michael Pavone <pavone@retrodev.com>
parents:
1263
diff
changeset
|
32 buffer = buffer + pitch / sizeof(pixel_t); |
1263
5f65a16c23ff
Implement raw screenshot functionality requested in ticket:10
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
33 } |
5f65a16c23ff
Implement raw screenshot functionality requested in ticket:10
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
34 } |