gba-link-connection/examples/_lib/libugba/include/obj.h
2022-05-20 05:30:56 -03:00

91 lines
2.5 KiB
C

// SPDX-License-Identifier: MIT
//
// Copyright (c) 2020 Antonio Niño Díaz
#ifndef OBJ_H__
#define OBJ_H__
#include "definitions.h"
typedef enum {
OBJ_16_COLORS,
OBJ_256_COLORS
} oam_color_mode;
typedef enum {
OBJ_MODE_NORMAL,
OBJ_MODE_TRANSPARENT,
OBJ_MODE_WINDOW
} oam_entry_mode;
typedef enum {
// Square
OBJ_SIZE_8x8,
OBJ_SIZE_16x16,
OBJ_SIZE_32x32,
OBJ_SIZE_64x64,
// Horizontal
OBJ_SIZE_16x8,
OBJ_SIZE_32x8,
OBJ_SIZE_32x16,
OBJ_SIZE_64x32,
// Vertical
OBJ_SIZE_8x16,
OBJ_SIZE_8x32,
OBJ_SIZE_16x32,
OBJ_SIZE_32x64,
OBJ_SIZE_NUMBER,
OBJ_SIZE_INVALID
} oam_entry_size;
// Regular objects functions
// -------------------------
EXPORT_API void OBJ_RegularInit(int index, int x, int y, oam_entry_size size,
oam_color_mode colors, int pal, int tile);
EXPORT_API void OBJ_RegularEnableSet(int index, int enable);
EXPORT_API void OBJ_RegularHFlipSet(int index, int enable);
EXPORT_API void OBJ_RegularVFlipSet(int index, int enable);
// Affine objects functions
// ------------------------
EXPORT_API void OBJ_AffineInit(int index, int x, int y, oam_entry_size size,
int matrix, oam_color_mode colors, int pal,
int tile, int doublesize);
EXPORT_API void OBJ_AffineMatrixSet(int index, int matrix_index);
EXPORT_API void OBJ_AffineDoubleSizeSet(int index, int enable);
// Common objects functions
// ------------------------
EXPORT_API void OBJ_PositionSet(int index, int x, int y);
EXPORT_API void OBJ_PositionGet(int index, int *x, int *y);
EXPORT_API void OBJ_ModeSet(int index, oam_entry_mode mode);
EXPORT_API void OBJ_GetShapeSize(oam_entry_size size,
uint16_t *attr0_shape, uint16_t *attr1_size);
EXPORT_API oam_entry_size OBJ_GetSizeFromDimensions(int width, int height);
EXPORT_API void OBJ_GetDimensionsFromSize(oam_entry_size size,
int *width, int *height);
EXPORT_API void OBJ_SizeSet(int index, oam_entry_size size);
// Enable or disable mosaic effect.
EXPORT_API void OBJ_MosaicSet(int index, int enable);
// Set palette of the object. Only for 16 color objects.
EXPORT_API void OBJ_Palette16Set(int index, int palette);
EXPORT_API void OBJ_PrioritySet(int index, int priority);
// This function automatically detects if the object is in 16 or 256 color mode
EXPORT_API void OBJ_TileSet(int index, int tile);
#endif // OBJ_H__