diff options
| author | Louis Burda <quent.burda@gmail.com> | 2022-06-02 15:28:40 +0200 |
|---|---|---|
| committer | Louis Burda <quent.burda@gmail.com> | 2022-06-02 15:28:40 +0200 |
| commit | 5bc16063c29aa4d3d287ebd163ccdbcbf54c4f9f (patch) | |
| tree | c131f947a37b3af2d14d41e9eda098bdec2d061c /gearboy/src/definitions.h | |
| parent | 78a5f810b22f0d8cafa05f638b0cb2e889824859 (diff) | |
| download | cscg2022-gearboy-master.tar.gz cscg2022-gearboy-master.zip | |
Diffstat (limited to 'gearboy/src/definitions.h')
| -rw-r--r-- | gearboy/src/definitions.h | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/gearboy/src/definitions.h b/gearboy/src/definitions.h new file mode 100644 index 00000000..ba5b4e29 --- /dev/null +++ b/gearboy/src/definitions.h @@ -0,0 +1,167 @@ +/* + * Gearboy - Nintendo Game Boy Emulator + * Copyright (C) 2012 Ignacio Sanchez + + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/ + * + */ + +#ifndef DEFINITIONS_H +#define DEFINITIONS_H + +#include <stdarg.h> +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <stdint.h> +#include <iostream> +#include <fstream> +#include <sstream> + +#ifdef DEBUG +#define DEBUG_GEARBOY 1 +#endif + +#if defined(PS2) || defined(PSP) +#define PERFORMANCE +#endif + +#define GEARBOY_TITLE "Gearboy" +#define GEARBOY_VERSION "3.4.1" + +#ifndef EMULATOR_BUILD +#define EMULATOR_BUILD "undefined" +#endif + +#ifndef NULL +#define NULL 0 +#endif + +#ifdef _WIN32 +#define BLARGG_USE_NAMESPACE 1 +#endif + +//#define GEARBOY_DISABLE_DISASSEMBLER + +#define MAX_ROM_SIZE 0x800000 + +#define SafeDelete(pointer) if(pointer != NULL) {delete pointer; pointer = NULL;} +#define SafeDeleteArray(pointer) if(pointer != NULL) {delete [] pointer; pointer = NULL;} + +#define InitPointer(pointer) ((pointer) = NULL) +#define IsValidPointer(pointer) ((pointer) != NULL) + +#if defined(MSB_FIRST) || defined(__BIG_ENDIAN__) || (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) +#define IS_BIG_ENDIAN +#else +#define IS_LITTLE_ENDIAN +#endif + +typedef uint8_t u8; +typedef int8_t s8; +typedef uint16_t u16; +typedef int16_t s16; +typedef uint32_t u32; +typedef int32_t s32; +typedef uint64_t u64; +typedef int64_t s64; + +typedef void (*RamChangedCallback) (void); + +#define FLAG_ZERO 0x80 +#define FLAG_SUB 0x40 +#define FLAG_HALF 0x20 +#define FLAG_CARRY 0x10 +#define FLAG_NONE 0 + +#define GAMEBOY_WIDTH 160 +#define GAMEBOY_HEIGHT 144 + +#define AUDIO_BUFFER_SIZE 4096 + +#define SAVESTATE_MAGIC 0x28011983 + +struct GB_Color +{ + u8 red; + u8 green; + u8 blue; +}; + +enum GB_Color_Format +{ + GB_PIXEL_RGB565, + GB_PIXEL_RGB555, + GB_PIXEL_BGR565, + GB_PIXEL_BGR555 +}; + +enum Gameboy_Keys +{ + A_Key = 4, + B_Key = 5, + Start_Key = 7, + Select_Key = 6, + Right_Key = 0, + Left_Key = 1, + Up_Key = 2, + Down_Key = 3 +}; + +#ifdef DEBUG_GEARBOY + #ifdef __ANDROID__ + #include <android/log.h> + #define printf(...) __android_log_print(ANDROID_LOG_DEBUG, "GEARBOY", __VA_ARGS__); + #endif +#define Log(msg, ...) (Log_func(msg, ##__VA_ARGS__)) +#else +#define Log(msg, ...) +#endif + +inline void Log_func(const char* const msg, ...) +{ + static int count = 1; + char szBuf[512]; + + va_list args; + va_start(args, msg); + vsprintf(szBuf, msg, args); + va_end(args); + + printf("%d: %s\n", count, szBuf); + + count++; +} + +inline u8 SetBit(const u8 value, const u8 bit) +{ + return value | static_cast<u8>(0x01 << bit); +} + +inline u8 UnsetBit(const u8 value, const u8 bit) +{ + return value & (~(0x01 << bit)); +} + +inline bool IsSetBit(const u8 value, const u8 bit) +{ + return (value & (0x01 << bit)) != 0; +} + +inline int AsHex(const char c) +{ + return c >= 'A' ? c - 'A' + 0xA : c - '0'; +} + +#endif /* DEFINITIONS_H */ |
