libmsx
C library for MSX
Loading...
Searching...
No Matches
im.h
Go to the documentation of this file.
1// -*- coding: utf-8-unix -*-
2/*
3 * Copyright (c) 2021-2025 Daishi Mori (mori0091)
4 *
5 * This software is released under the MIT License.\n
6 * See https://github.com/mori0091/libmsx/blob/main/LICENSE
7 *
8 * GitHub libmsx project\n
9 * https://github.com/mori0091/libmsx
10 */
160#ifndef IMG_H_
161#define IMG_H_
162
163#include <stddef.h>
164#include <stdint.h>
165
171typedef uint8_t BM8x8[8];
172
178typedef BM8x8 SP8x8;
179
186typedef BM8x8 SP16x16[4];
187
196void im_copy_BM8x8(const BM8x8 * src, BM8x8 * dst);
197
209void im_copy_v_BM8x8(const BM8x8 * src);
210
219void im_hflip_BM8x8(const BM8x8 * src, BM8x8 * dst);
220
232void im_hflip_v_BM8x8(const BM8x8 * src);
233
242void im_vflip_BM8x8(const BM8x8 * src, BM8x8 * dst);
243
255void im_vflip_v_BM8x8(const BM8x8 * src);
256
265void im_tr_BM8x8(const BM8x8 * src, BM8x8 * dst);
266
278void im_tr_v_BM8x8(const BM8x8 * src);
279
288void im_adtr_BM8x8(const BM8x8 * src, BM8x8 * dst);
289
301void im_adtr_v_BM8x8(const BM8x8 * src);
302
311void im_rot90_BM8x8(const BM8x8 * src, BM8x8 * dst);
312
324void im_rot90_v_BM8x8(const BM8x8 * src);
325
334void im_rot180_BM8x8(const BM8x8 * src, BM8x8 * dst);
335
347void im_rot180_v_BM8x8(const BM8x8 * src);
348
357void im_rot270_BM8x8(const BM8x8 * src, BM8x8 * dst);
358
370void im_rot270_v_BM8x8(const BM8x8 * src);
371
380void im_cmpl_BM8x8(const BM8x8 * src, BM8x8 * dst);
381
393void im_cmpl_v_BM8x8(const BM8x8 * src);
394
404void im_diff_BM8x8(const BM8x8 * src1, const BM8x8 * src2, BM8x8 * dst);
405
418void im_diff_v_BM8x8(const BM8x8 * src1, const BM8x8 * src2);
419
429void im_and_BM8x8(const BM8x8 * src1, const BM8x8 * src2, BM8x8 * dst);
430
443void im_and_v_BM8x8(const BM8x8 * src1, const BM8x8 * src2);
444
454void im_or_BM8x8(const BM8x8 * src1, const BM8x8 * src2, BM8x8 * dst);
455
468void im_or_v_BM8x8(const BM8x8 * src1, const BM8x8 * src2);
469
479void im_xor_BM8x8(const BM8x8 * src1, const BM8x8 * src2, BM8x8 * dst);
480
493void im_xor_v_BM8x8(const BM8x8 * src1, const BM8x8 * src2);
494
504void im_shift_u_BM8x8(uint8_t sft, const BM8x8 * src, BM8x8 * dst);
505
518void im_shift_u_v_BM8x8(uint8_t sft, const BM8x8 * src);
519
529void im_shift_d_BM8x8(uint8_t sft, const BM8x8 * src, BM8x8 * dst);
530
543void im_shift_d_v_BM8x8(uint8_t sft, const BM8x8 * src);
544
554void im_shift_l_BM8x8(uint8_t sft, const BM8x8 * src, BM8x8 * dst);
555
568void im_shift_l_v_BM8x8(uint8_t sft, const BM8x8 * src);
569
579void im_shift_r_BM8x8(uint8_t sft, const BM8x8 * src, BM8x8 * dst);
580
593void im_shift_r_v_BM8x8(uint8_t sft, const BM8x8 * src);
594
604void im_rotate_u_BM8x8(uint8_t sft, const BM8x8 * src, BM8x8 * dst);
605
618void im_rotate_u_v_BM8x8(uint8_t sft, const BM8x8 * src);
619
629void im_rotate_d_BM8x8(uint8_t sft, const BM8x8 * src, BM8x8 * dst);
630
643void im_rotate_d_v_BM8x8(uint8_t sft, const BM8x8 * src);
644
654void im_rotate_l_BM8x8(uint8_t sft, const BM8x8 * src, BM8x8 * dst);
655
668void im_rotate_l_v_BM8x8(uint8_t sft, const BM8x8 * src);
669
679void im_rotate_r_BM8x8(uint8_t sft, const BM8x8 * src, BM8x8 * dst);
680
693void im_rotate_r_v_BM8x8(uint8_t sft, const BM8x8 * src);
694
705void im_shift_l_vec_BM8x8(uint8_t sft, size_t n, const BM8x8 * src, BM8x8 * dst);
706
717void im_shift_r_vec_BM8x8(uint8_t sft, size_t n, const BM8x8 * src, BM8x8 * dst);
718
729void im_rotate_l_vec_BM8x8(uint8_t sft, size_t n, const BM8x8 * src, BM8x8 * dst);
730
741void im_rotate_r_vec_BM8x8(uint8_t sft, size_t n, const BM8x8 * src, BM8x8 * dst);
742
804
805// *** NOT SUPPORTED YET ***
806// /*
807// * Enumeration of boolean operators for images.
808// */
809// enum ImOp_boolean {
810// // Unary operators : image -> image
811// IM_NOT = IM_COMPLEMENT,
812// // Binary operators : (image, image) -> image
813// IM_AND = 2,
814// IM_OR = 4,
815// IM_XOR = 6,
816// IM_NAND = IM_NOT | IM_AND,
817// IM_NOR = IM_NOT | IM_OR,
818// IM_NXOR = IM_NOT | IM_XOR,
819// IM_INTERSECTION = IM_AND,
820// IM_UNION = IM_OR,
821// IM_SETDIFF = 8,
822// // (reserved 9 to 15)
823// };
824
825// *** NOT SUPPORTED YET ***
826// /*
827// * Enumeration of shift operators for images.
828// */
829// enum ImOp_shift {
830// // Shift operators : (scalar, image) -> image
831// IM_SHIFT_UP = 16,
832// IM_SHIFT_DOWN = 17,
833// IM_SHIFT_LEFT = 18,
834// IM_SHIFT_RIGHT = 19,
835// IM_ROTATE_UP = 20,
836// IM_ROTATE_DOWN = 21,
837// IM_ROTATE_LEFT = 22,
838// IM_ROTATE_RIGHT = 23,
839// // (reserved 24 to 31)
840// };
841
892void im_tilemap_BM8x8(const BM8x8 tileset[256], size_t n, const uint8_t tilemap[][2], BM8x8 * dst);
893
929void im_tilemap_v_BM8x8(const BM8x8 tileset[256], size_t n, const uint8_t tilemap[][2]);
930
939void im_copy_SP16x16(const SP16x16 * src, SP16x16 * dst);
940
952void im_copy_v_SP16x16(const SP16x16 * src);
953
961void im_hflip_SP16x16(const SP16x16 * src, SP16x16 * dst);
962
973void im_hflip_v_SP16x16(const SP16x16 * src);
974
982void im_vflip_SP16x16(const SP16x16 * src, SP16x16 * dst);
983
994void im_vflip_v_SP16x16(const SP16x16 * src);
995
1004void im_tr_SP16x16(const SP16x16 * src, SP16x16 * dst);
1005
1017void im_tr_v_SP16x16(const SP16x16 * src);
1018
1028void im_adtr_SP16x16(const SP16x16 * src, SP16x16 * dst);
1029
1042void im_adtr_v_SP16x16(const SP16x16 * src);
1043
1052void im_rot90_SP16x16(const SP16x16 * src, SP16x16 * dst);
1053
1065void im_rot90_v_SP16x16(const SP16x16 * src);
1066
1075void im_rot180_SP16x16(const SP16x16 * src, SP16x16 * dst);
1076
1089
1098void im_rot270_SP16x16(const SP16x16 * src, SP16x16 * dst);
1099
1112
1121void im_cmpl_SP16x16(const SP16x16 * src, SP16x16 * dst);
1122
1134void im_cmpl_v_SP16x16(const SP16x16 * src);
1135
1145void im_diff_SP16x16(const SP16x16 * src1, const SP16x16 * src2, SP16x16 * dst);
1146
1159void im_diff_v_SP16x16(const SP16x16 * src1, const SP16x16 * src2);
1160
1170void im_and_SP16x16(const SP16x16 * src1, const SP16x16 * src2, SP16x16 * dst);
1171
1184void im_and_v_SP16x16(const SP16x16 * src1, const SP16x16 * src2);
1185
1195void im_or_SP16x16(const SP16x16 * src1, const SP16x16 * src2, SP16x16 * dst);
1196
1209void im_or_v_SP16x16(const SP16x16 * src1, const SP16x16 * src2);
1210
1220void im_xor_SP16x16(const SP16x16 * src1, const SP16x16 * src2, SP16x16 * dst);
1221
1234void im_xor_v_SP16x16(const SP16x16 * src1, const SP16x16 * src2);
1235
1245void im_shift_u_SP16x16(uint8_t sft, const SP16x16 * src, SP16x16 * dst);
1246
1259void im_shift_u_v_SP16x16(uint8_t sft, const SP16x16 * src);
1260
1270void im_shift_d_SP16x16(uint8_t sft, const SP16x16 * src, SP16x16 * dst);
1271
1284void im_shift_d_v_SP16x16(uint8_t sft, const SP16x16 * src);
1285
1295void im_shift_l_SP16x16(uint8_t sft, const SP16x16 * src, SP16x16 * dst);
1296
1309void im_shift_l_v_SP16x16(uint8_t sft, const SP16x16 * src);
1310
1320void im_shift_r_SP16x16(uint8_t sft, const SP16x16 * src, SP16x16 * dst);
1321
1334void im_shift_r_v_SP16x16(uint8_t sft, const SP16x16 * src);
1335
1345void im_rotate_u_SP16x16(uint8_t sft, const SP16x16 * src, SP16x16 * dst);
1346
1359void im_rotate_u_v_SP16x16(uint8_t sft, const SP16x16 * src);
1360
1370void im_rotate_d_SP16x16(uint8_t sft, const SP16x16 * src, SP16x16 * dst);
1371
1384void im_rotate_d_v_SP16x16(uint8_t sft, const SP16x16 * src);
1385
1395void im_rotate_l_SP16x16(uint8_t sft, const SP16x16 * src, SP16x16 * dst);
1396
1409void im_rotate_l_v_SP16x16(uint8_t sft, const SP16x16 * src);
1410
1420void im_rotate_r_SP16x16(uint8_t sft, const SP16x16 * src, SP16x16 * dst);
1421
1434void im_rotate_r_v_SP16x16(uint8_t sft, const SP16x16 * src);
1435
1450void im_trim_SP16x16(uint8_t tblr[4], const SP16x16 * src, SP16x16 * dst);
1451
1452#endif // IMG_H_
void im_xor_v_BM8x8(const BM8x8 *src1, const BM8x8 *src2)
MSX Bitwise XOR of two 8x8 pixel 1bpp images.
void im_diff_v_BM8x8(const BM8x8 *src1, const BM8x8 *src2)
MSX Bitwise SET-DIFFERENCE of two 8x8 pixel 1bpp images.
void im_cmpl_v_BM8x8(const BM8x8 *src)
MSX Bitwise NOT (complement) of an 8x8 pixel 1bpp image.
void im_or_BM8x8(const BM8x8 *src1, const BM8x8 *src2, BM8x8 *dst)
MSX Bitwise OR of two 8x8 pixel 1bpp images.
void im_xor_BM8x8(const BM8x8 *src1, const BM8x8 *src2, BM8x8 *dst)
MSX Bitwise XOR of two 8x8 pixel 1bpp images.
void im_or_v_BM8x8(const BM8x8 *src1, const BM8x8 *src2)
MSX Bitwise OR of two 8x8 pixel 1bpp images.
void im_and_BM8x8(const BM8x8 *src1, const BM8x8 *src2, BM8x8 *dst)
MSX Bitwise AND of two 8x8 pixel 1bpp images.
void im_cmpl_BM8x8(const BM8x8 *src, BM8x8 *dst)
MSX Bitwise NOT (complement) of an 8x8 pixel 1bpp image.
void im_and_v_BM8x8(const BM8x8 *src1, const BM8x8 *src2)
MSX Bitwise AND of two 8x8 pixel 1bpp images.
void im_diff_BM8x8(const BM8x8 *src1, const BM8x8 *src2, BM8x8 *dst)
MSX Bitwise SET-DIFFERENCE of two 8x8 pixel 1bpp images.
void im_cmpl_v_SP16x16(const SP16x16 *src)
MSX Bitwise NOT (complement) of an 16x16 pixels 1bpp sprite pattern.
void im_and_SP16x16(const SP16x16 *src1, const SP16x16 *src2, SP16x16 *dst)
MSX Bitwise AND of two 16x16 pixel 1bpp sprite patterns.
void im_xor_v_SP16x16(const SP16x16 *src1, const SP16x16 *src2)
MSX Bitwise XOR of two 16x16 pixel 1bpp sprite patterns.
void im_or_SP16x16(const SP16x16 *src1, const SP16x16 *src2, SP16x16 *dst)
MSX Bitwise OR of two 16x16 pixel 1bpp sprite patterns.
void im_diff_v_SP16x16(const SP16x16 *src1, const SP16x16 *src2)
MSX Bitwise SET-DIFFERENCE of two 16x16 pixels 1bpp sprite patterns.
void im_diff_SP16x16(const SP16x16 *src1, const SP16x16 *src2, SP16x16 *dst)
MSX Bitwise SET-DIFFERENCE of two 16x16 pixels 1bpp sprite patterns.
void im_and_v_SP16x16(const SP16x16 *src1, const SP16x16 *src2)
MSX Bitwise AND of two 16x16 pixel 1bpp sprite patterns.
void im_cmpl_SP16x16(const SP16x16 *src, SP16x16 *dst)
MSX Bitwise NOT (complement) of an 16x16 pixels 1bpp sprite pattern.
void im_or_v_SP16x16(const SP16x16 *src1, const SP16x16 *src2)
MSX Bitwise OR of two 16x16 pixel 1bpp sprite patterns.
void im_xor_SP16x16(const SP16x16 *src1, const SP16x16 *src2, SP16x16 *dst)
MSX Bitwise XOR of two 16x16 pixel 1bpp sprite patterns.
void im_rotate_l_vec_BM8x8(uint8_t sft, size_t n, const BM8x8 *src, BM8x8 *dst)
MSX Rotate (scroll) n-columns row vector of 8x8 pixel 1bpp image to the left.
void im_rotate_l_BM8x8(uint8_t sft, const BM8x8 *src, BM8x8 *dst)
MSX Rotate (scroll) an 8x8 pixel 1bpp image to the left.
void im_rotate_d_v_BM8x8(uint8_t sft, const BM8x8 *src)
MSX Rotate (scroll) an 8x8 pixel 1bpp image downward.
void im_rotate_d_BM8x8(uint8_t sft, const BM8x8 *src, BM8x8 *dst)
MSX Rotate (scroll) an 8x8 pixel 1bpp image downward.
void im_shift_r_v_BM8x8(uint8_t sft, const BM8x8 *src)
MSX Shift an 8x8 pixel 1bpp image to the right.
void im_rotate_r_BM8x8(uint8_t sft, const BM8x8 *src, BM8x8 *dst)
MSX Rotate (scroll) an 8x8 pixel 1bpp image to the right.
void im_shift_u_BM8x8(uint8_t sft, const BM8x8 *src, BM8x8 *dst)
MSX Shift an 8x8 pixel 1bpp image upward.
void im_shift_l_v_BM8x8(uint8_t sft, const BM8x8 *src)
MSX Shift an 8x8 pixel 1bpp image to the left.
void im_rotate_u_v_BM8x8(uint8_t sft, const BM8x8 *src)
MSX Rotate (scroll) an 8x8 pixel 1bpp image upward.
void im_shift_d_v_BM8x8(uint8_t sft, const BM8x8 *src)
MSX Shift an 8x8 pixel 1bpp image downward.
void im_shift_r_BM8x8(uint8_t sft, const BM8x8 *src, BM8x8 *dst)
MSX Shift an 8x8 pixel 1bpp image to the right.
void im_shift_u_v_BM8x8(uint8_t sft, const BM8x8 *src)
MSX Shift an 8x8 pixel 1bpp image upward.
void im_shift_r_vec_BM8x8(uint8_t sft, size_t n, const BM8x8 *src, BM8x8 *dst)
MSX Shift n-columns row vector of 8x8 pixel 1bpp image to the right.
void im_shift_l_BM8x8(uint8_t sft, const BM8x8 *src, BM8x8 *dst)
MSX Shift an 8x8 pixel 1bpp image to the left.
void im_rotate_r_v_BM8x8(uint8_t sft, const BM8x8 *src)
MSX Rotate (scroll) an 8x8 pixel 1bpp image to the right.
void im_rotate_u_BM8x8(uint8_t sft, const BM8x8 *src, BM8x8 *dst)
MSX Rotate (scroll) an 8x8 pixel 1bpp image upward.
void im_shift_l_vec_BM8x8(uint8_t sft, size_t n, const BM8x8 *src, BM8x8 *dst)
MSX Shift n-columns row vector of 8x8 pixel 1bpp image to the left.
void im_rotate_l_v_BM8x8(uint8_t sft, const BM8x8 *src)
MSX Rotate (scroll) an 8x8 pixel 1bpp image to the left.
void im_rotate_r_vec_BM8x8(uint8_t sft, size_t n, const BM8x8 *src, BM8x8 *dst)
MSX Rotate (scroll) n-columns row vector of 8x8 pixel 1bpp image to the right.
void im_shift_d_BM8x8(uint8_t sft, const BM8x8 *src, BM8x8 *dst)
MSX Shift an 8x8 pixel 1bpp image downward.
void im_rotate_l_SP16x16(uint8_t sft, const SP16x16 *src, SP16x16 *dst)
MSX Rotate (scroll) an 16x16 pixel 1bpp sprite pattern to the left.
void im_rotate_l_v_SP16x16(uint8_t sft, const SP16x16 *src)
MSX Rotate (scroll) an 16x16 pixel 1bpp sprite pattern to the left.
void im_shift_u_v_SP16x16(uint8_t sft, const SP16x16 *src)
MSX Shift an 16x16 pixel 1bpp sprite pattern upward.
void im_rotate_u_SP16x16(uint8_t sft, const SP16x16 *src, SP16x16 *dst)
MSX Rotate (scroll) an 16x16 pixel 1bpp sprite pattern upward.
void im_rotate_d_v_SP16x16(uint8_t sft, const SP16x16 *src)
MSX Rotate (scroll) an 16x16 pixel 1bpp sprite pattern downward.
void im_rotate_r_SP16x16(uint8_t sft, const SP16x16 *src, SP16x16 *dst)
MSX Rotate (scroll) an 16x16 pixel 1bpp sprite pattern to the right.
void im_shift_l_v_SP16x16(uint8_t sft, const SP16x16 *src)
MSX Shift an 16x16 pixel 1bpp sprite pattern to the left.
void im_shift_r_v_SP16x16(uint8_t sft, const SP16x16 *src)
MSX Shift an 16x16 pixel 1bpp sprite pattern to the right.
void im_shift_r_SP16x16(uint8_t sft, const SP16x16 *src, SP16x16 *dst)
MSX Shift an 16x16 pixel 1bpp sprite pattern to the right.
void im_rotate_d_SP16x16(uint8_t sft, const SP16x16 *src, SP16x16 *dst)
MSX Rotate (scroll) an 16x16 pixel 1bpp sprite pattern downward.
void im_shift_u_SP16x16(uint8_t sft, const SP16x16 *src, SP16x16 *dst)
MSX Shift an 16x16 pixel 1bpp sprite pattern upward.
void im_rotate_u_v_SP16x16(uint8_t sft, const SP16x16 *src)
MSX Rotate (scroll) an 16x16 pixel 1bpp sprite pattern upward.
void im_shift_d_v_SP16x16(uint8_t sft, const SP16x16 *src)
MSX Shift an 16x16 pixel 1bpp sprite pattern downward.
void im_shift_d_SP16x16(uint8_t sft, const SP16x16 *src, SP16x16 *dst)
MSX Shift an 16x16 pixel 1bpp sprite pattern downward.
void im_rotate_r_v_SP16x16(uint8_t sft, const SP16x16 *src)
MSX Rotate (scroll) an 16x16 pixel 1bpp sprite pattern to the right.
void im_shift_l_SP16x16(uint8_t sft, const SP16x16 *src, SP16x16 *dst)
MSX Shift an 16x16 pixel 1bpp sprite pattern to the left.
void im_tilemap_BM8x8(const BM8x8 tileset[256], size_t n, const uint8_t tilemap[][2], BM8x8 *dst)
MSX Construct a set of 8x8 pixels 1bpp tile images from tileset and tilemap.
void im_tilemap_v_BM8x8(const BM8x8 tileset[256], size_t n, const uint8_t tilemap[][2])
MSX Construct a set of 8x8 pixels 1bpp tile images from tileset and tilemap.
ImOp
Enumeration of unary operators for images.
Definition im.h:752
@ IM_COPY
Synonym for IM_IDENTITY.
Definition im.h:762
@ IM_ANTITRANSPOSE
Transposition around the antidiagonal.
Definition im.h:802
@ IM_FLIP_VERT
Flip vertically.
Definition im.h:777
@ IM_FLIP_HORZ
Flip horizontally.
Definition im.h:782
@ IM_TRANSPOSE
Transposition around the main diagonal.
Definition im.h:772
@ IM_IDENTITY
Identity transformation.
Definition im.h:758
@ IM_ROTATE_90
Rotate 90 degrees clockwise.
Definition im.h:787
@ IM_ROTATE_180
Rotate 180 degrees.
Definition im.h:792
@ IM_COMPLEMENT
Bitwise NOT (complement).
Definition im.h:767
@ IM_ROTATE_270
Rotate 270 degrees clockwise.
Definition im.h:797
void im_adtr_BM8x8(const BM8x8 *src, BM8x8 *dst)
MSX Transpose an 8x8 pixels 1bpp image around the antidiagonal.
void im_hflip_BM8x8(const BM8x8 *src, BM8x8 *dst)
MSX Flip an 8x8 pixels 1bpp image horizontally.
void im_tr_v_BM8x8(const BM8x8 *src)
MSX Transpose an 8x8 pixels 1bpp image around the main diagonal.
void im_tr_BM8x8(const BM8x8 *src, BM8x8 *dst)
MSX Transpose an 8x8 pixels 1bpp image around the main diagonal.
void im_rot180_BM8x8(const BM8x8 *src, BM8x8 *dst)
MSX Rotate an 8x8 pixels 1bpp image 180 degrees.
void im_adtr_v_BM8x8(const BM8x8 *src)
MSX Transpose an 8x8 pixels 1bpp image around the antidiagonal.
void im_copy_BM8x8(const BM8x8 *src, BM8x8 *dst)
MSX Copy an 8x8 pixels 1bpp image.
void im_rot270_BM8x8(const BM8x8 *src, BM8x8 *dst)
MSX Rotate an 8x8 pixels 1bpp image 270 degrees clockwise.
void im_rot180_v_BM8x8(const BM8x8 *src)
MSX Rotate an 8x8 pixels 1bpp image 180 degrees.
void im_vflip_BM8x8(const BM8x8 *src, BM8x8 *dst)
MSX Flip an 8x8 pixels 1bpp image vertically.
void im_copy_v_BM8x8(const BM8x8 *src)
MSX Copy an 8x8 pixels 1bpp image.
void im_hflip_v_BM8x8(const BM8x8 *src)
MSX Flip an 8x8 pixels 1bpp image horizontally.
void im_vflip_v_BM8x8(const BM8x8 *src)
MSX Flip an 8x8 pixels 1bpp image vertically.
void im_rot270_v_BM8x8(const BM8x8 *src)
MSX Rotate an 8x8 pixels 1bpp image 270 degrees clockwise.
void im_rot90_v_BM8x8(const BM8x8 *src)
MSX Rotate an 8x8 pixels 1bpp image 90 degrees clockwise.
void im_rot90_BM8x8(const BM8x8 *src, BM8x8 *dst)
MSX Rotate an 8x8 pixels 1bpp image 90 degrees clockwise.
void im_rot270_v_SP16x16(const SP16x16 *src)
MSX Rotate an 16x16 pixels 1bpp sprite pattern 270 degrees clockwise.
void im_rot270_SP16x16(const SP16x16 *src, SP16x16 *dst)
MSX Rotate an 16x16 pixels 1bpp sprite pattern 270 degrees clockwise.
void im_rot90_v_SP16x16(const SP16x16 *src)
MSX Rotate an 16x16 pixels 1bpp sprite pattern 90 degrees clockwise.
void im_vflip_v_SP16x16(const SP16x16 *src)
MSX Flip an 16x16 pixels 1bpp sprite pattern vertically.
void im_rot180_SP16x16(const SP16x16 *src, SP16x16 *dst)
MSX Rotate an 16x16 pixels 1bpp sprite pattern 180 degrees.
void im_tr_SP16x16(const SP16x16 *src, SP16x16 *dst)
MSX Transpose an 16x16 pixels 1bpp sprite pattern around the main diagonal.
void im_adtr_v_SP16x16(const SP16x16 *src)
MSX Transpose an 16x16 pixels 1bpp sprite pattern around the antidiagonal.
void im_vflip_SP16x16(const SP16x16 *src, SP16x16 *dst)
MSX Flip an 16x16 pixels 1bpp sprite pattern vertically.
void im_copy_v_SP16x16(const SP16x16 *src)
MSX Copy an 16x16 pixels 1bpp sprite pattern.
void im_rot90_SP16x16(const SP16x16 *src, SP16x16 *dst)
MSX Rotate an 16x16 pixels 1bpp sprite pattern 90 degrees clockwise.
void im_hflip_SP16x16(const SP16x16 *src, SP16x16 *dst)
MSX Flip an 16x16 pixels 1bpp sprite pattern horizontally.
void im_tr_v_SP16x16(const SP16x16 *src)
MSX Transpose an 16x16 pixels 1bpp sprite pattern around the main diagonal.
void im_copy_SP16x16(const SP16x16 *src, SP16x16 *dst)
MSX Copy an 16x16 pixels 1bpp sprite pattern.
void im_rot180_v_SP16x16(const SP16x16 *src)
MSX Rotate an 16x16 pixels 1bpp sprite pattern 180 degrees.
void im_adtr_SP16x16(const SP16x16 *src, SP16x16 *dst)
MSX Transpose an 16x16 pixels 1bpp sprite pattern around the antidiagonal.
void im_hflip_v_SP16x16(const SP16x16 *src)
MSX Flip an 16x16 pixels 1bpp sprite pattern horizontally.
void im_trim_SP16x16(uint8_t tblr[4], const SP16x16 *src, SP16x16 *dst)
MSX Trim 16x16 pixels 1bpp sprite pattern.
BM8x8 SP8x8
8x8 pixels 1bpp sprite pattern (Type alias for BM8x8).
Definition im.h:178
uint8_t BM8x8[8]
8x8 pixels 1bpp bitmap image (8 rows x 1 byte/row).
Definition im.h:171
BM8x8 SP16x16[4]
16x16 pixels 1bpp sprite pattern (Four 8x8px 1bpp images, top left, bottom left, top right,...
Definition im.h:186