From 43eb982a80c45fe26f1cbbc23285c4d8a2cc64b4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 20 Apr 2020 20:57:00 -0400 Subject: Create include/ directory and move main.h structs there --- include/global.h | 6 ++++++ include/main.h | 40 ++++++++++++++++++++++++++++++++++++++++ include/nitro/nitro.h | 16 ++++++++++++++++ include/nitro/os.c | 9 +++++++++ include/nitro/os.h | 10 ++++++++++ include/nitro/os_asm.h | 12 ++++++++++++ include/nitro/os_asm.s | 7 +++++++ include/nitro/types.h | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 150 insertions(+) create mode 100644 include/global.h create mode 100644 include/main.h create mode 100644 include/nitro/nitro.h create mode 100644 include/nitro/os.c create mode 100644 include/nitro/os.h create mode 100644 include/nitro/os_asm.h create mode 100644 include/nitro/os_asm.s create mode 100644 include/nitro/types.h (limited to 'include') diff --git a/include/global.h b/include/global.h new file mode 100644 index 00000000..33880ca1 --- /dev/null +++ b/include/global.h @@ -0,0 +1,6 @@ +#ifndef GUARD_GLOBAL_H +#define GUARD_GLOBAL_H + +#include "nitro/nitro.h" + +#endif //GUARD_GLOBAL_H diff --git a/include/main.h b/include/main.h new file mode 100644 index 00000000..0df94795 --- /dev/null +++ b/include/main.h @@ -0,0 +1,40 @@ +#ifndef GUARD_MAIN_H +#define GUARD_MAIN_H + +struct Unk2106FA0 +{ + s32 unk0; + s32 unk4; + s32 unk8; + s32 unkC; + s32 unk10; + s32 unk14; + s32 unk18; + s32 unk1C; + s32 unk20; +}; + +struct Unk21C48B8 +{ + void (*unk0)(s32); + s32 unk4; + s32 unk8; + s32 unkC; + s32 unk10; + s32 unk14; + s32 unk18; + s32 unk1C; + s32 unk20; + s32 unk24; + s32 unk28; + s32 unk2C; + s32 unk30; + s32 unk34; + s32 unk38; + u8 filler3C[0xC]; + s32 unk48; + u8 filler4C[0x20]; + s32 unk6C; +}; + +#endif //GUARD_MAIN_H diff --git a/include/nitro/nitro.h b/include/nitro/nitro.h new file mode 100644 index 00000000..017f3708 --- /dev/null +++ b/include/nitro/nitro.h @@ -0,0 +1,16 @@ +#ifndef POKEDIAMOND_NITRO_H +#define POKEDIAMOND_NITRO_H + +#ifdef __cplusplus +extern "C" { +#endif + +// Include all nitro files +#include "nitro/types.h" +#include "nitro/os.h" + +#ifdef __cplusplus +}; +#endif + +#endif //POKEDIAMOND_NITRO_H diff --git a/include/nitro/os.c b/include/nitro/os.c new file mode 100644 index 00000000..a531740d --- /dev/null +++ b/include/nitro/os.c @@ -0,0 +1,9 @@ +// +// Created by mart on 4/12/20. +// + +#include "os.h" + +asm void OS_GetProcMode() { + +} \ No newline at end of file diff --git a/include/nitro/os.h b/include/nitro/os.h new file mode 100644 index 00000000..c14b2891 --- /dev/null +++ b/include/nitro/os.h @@ -0,0 +1,10 @@ +// +// Created by mart on 4/12/20. +// + +#ifndef POKEDIAMOND_OS_H +#define POKEDIAMOND_OS_H + +#include "nitro/os_asm.h" + +#endif //POKEDIAMOND_OS_H diff --git a/include/nitro/os_asm.h b/include/nitro/os_asm.h new file mode 100644 index 00000000..775955f1 --- /dev/null +++ b/include/nitro/os_asm.h @@ -0,0 +1,12 @@ +// +// Created by mart on 4/12/20. +// + +#ifndef POKEDIAMOND_OS_ASM_H +#define POKEDIAMOND_OS_ASM_H + +#include "nitro/types.h" + +OSProcMode OS_GetProcMode(); + +#endif //POKEDIAMOND_OS_ASM_H diff --git a/include/nitro/os_asm.s b/include/nitro/os_asm.s new file mode 100644 index 00000000..86d7603c --- /dev/null +++ b/include/nitro/os_asm.s @@ -0,0 +1,7 @@ + +# TODO: make this syntax look correct in CLion +# Potentially switch to AT&T syntax? +OS_GetProcMode: + mrs r0, cpsr + and r0, r0, #0x80 + bx lr diff --git a/include/nitro/types.h b/include/nitro/types.h new file mode 100644 index 00000000..d702de23 --- /dev/null +++ b/include/nitro/types.h @@ -0,0 +1,50 @@ +#ifndef POKEDIAMOND_NITRO_TYPES_H +#define POKEDIAMOND_NITRO_TYPES_H + +typedef unsigned char u8; +typedef unsigned short int u16; +typedef unsigned long u32; + +typedef signed char s8; +typedef signed short int s16; +typedef signed long s32; + +typedef unsigned long long int u64; +typedef signed long long int s64; + +typedef volatile u8 vu8; +typedef volatile u16 vu16; +typedef volatile u32 vu32; +typedef volatile u64 vu64; + +typedef volatile s8 vs8; +typedef volatile s16 vs16; +typedef volatile s32 vs32; +typedef volatile s64 vs64; + +typedef float f32; +typedef volatile f32 vf32; + +typedef int BOOL; +#define TRUE 1 +#define FALSE 0 + +#ifndef NULL +#ifdef __cplusplus +#define NULL 0 +#else // __cplusplus +#define NULL ((void *)0) +#endif // __cplusplus +#endif + +typedef enum { + OS_PROCMODE_USER=16, + OS_PROCMODE_FIQ=17, + OS_PROCMODE_IRQ=18, + OS_PROCMODE_SVC=19, + OS_PROCMODE_ABORT=23, + OS_PROCMODE_UNDEF=27, + OS_PROCMODE_SYS=31 +} OSProcMode; + +#endif //POKEDIAMOND_NITRO_TYPES_H -- cgit v1.2.3 From b2059ca1ad5c95fb60b5502d84656aee0b1ce01e Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Tue, 21 Apr 2020 11:46:50 -0400 Subject: decompile script.c --- include/script.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 include/script.h (limited to 'include') diff --git a/include/script.h b/include/script.h new file mode 100644 index 00000000..13035fc9 --- /dev/null +++ b/include/script.h @@ -0,0 +1,27 @@ +#ifndef _SCRIPT_H_ +#define _SCRIPT_H_ + +struct ScriptContext; + +typedef u8 (*ScrCmdFunc)(struct ScriptContext *); +typedef u8 Script[]; + +struct ScriptContext +{ + u8 stackDepth; + u8 mode; + u8 comparisonResult; + u8 (*nativePtr)(void); + const u8 *scriptPtr; + const u8 *stack[20]; + ScrCmdFunc *cmdTable; + ScrCmdFunc *cmdTableEnd; + u32 data[4]; + u32 unk74; +}; + +#define ScriptReadByte(ctx) (*(ctx->scriptPtr++)) + +u16 ScriptReadHalfword(struct ScriptContext *ctx); + +#endif // _SCRIPT_H_ -- cgit v1.2.3 From fb6be2fb9463b1542e4cc839627b2d2d1bb0afbe Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Tue, 21 Apr 2020 12:03:53 -0400 Subject: fix various issues and NONMATCHING. Thanks Demki! --- include/script.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/script.h b/include/script.h index 13035fc9..2ecc8e28 100644 --- a/include/script.h +++ b/include/script.h @@ -11,7 +11,7 @@ struct ScriptContext u8 stackDepth; u8 mode; u8 comparisonResult; - u8 (*nativePtr)(void); + u8 (*nativePtr)(struct ScriptContext *); const u8 *scriptPtr; const u8 *stack[20]; ScrCmdFunc *cmdTable; -- cgit v1.2.3 From 44a55d6948781ca07dfff49cedce280173d553c8 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 21 Apr 2020 17:15:53 -0400 Subject: Tidy tree --- include/map.h | 22 ++++++ include/pokemon.h | 204 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ include/structs.h | 7 ++ 3 files changed, 233 insertions(+) create mode 100644 include/map.h create mode 100644 include/pokemon.h create mode 100644 include/structs.h (limited to 'include') diff --git a/include/map.h b/include/map.h new file mode 100644 index 00000000..18b8c1d1 --- /dev/null +++ b/include/map.h @@ -0,0 +1,22 @@ +#ifndef POKEDIAMOND_MAP_H +#define POKEDIAMOND_MAP_H + +typedef struct { + u8 MapAreaData; + u8 field_0x1; + u16 Matrix; + u16 MapScripts; + u16 MapLevelScripts; + u16 MapTexts; + u16 DayMusic; + u16 NightMusic; + u16 WildPokemonData; + u16 MapEvents; + u16 MapName; + u8 WeatherType; + u8 field_0x15; + u8 field_0x16; + u8 field_0x17; +} MapHeader; + +#endif //POKEDIAMOND_MAP_H diff --git a/include/pokemon.h b/include/pokemon.h new file mode 100644 index 00000000..b466a11c --- /dev/null +++ b/include/pokemon.h @@ -0,0 +1,204 @@ +#ifndef POKEDIAMOND_POKEMON_H +#define POKEDIAMOND_POKEMON_H + +#include "nitro/types.h" + +// Enums + +typedef enum { + EGG = 0, + EVENT = 0, + HATCHED = 0, + PAL_PARK = 0, + TALL_GRASS = 2, + DIALGA_GAME_EVENT = 4, + PALKIA_GAME_EVENT = 4, + CAVE = 5, + HALL_OF_ORIGIN = 5, + SURFING = 7, + FISHING = 7, + BUILDING = 9, + SAFARI_ZONE = 10, + STARTER = 12, + FOSSIL = 12, + GIFT_EEVEE = 12 +} EncounterType; + +typedef enum { + JAPANESE = 1, + ENGLISH = 2, + FRENCH = 3, + ITALIAN = 4, + GERMAN = 5, + SPANISH = 7, + KOREAN = 8 +} OriginLanguage; + +typedef enum { + ARCEUS_NORMAL = 0, + ARCEUS_FIST = 8, + ARCEUS_SKY = 16, + ARCEUS_TOXIC = 24, + ARCEUS_EARTH = 32, + ARCEUS_STONE = 40, + ARCEUS_INSECT = 48, + ARCEUS_SPOOKY = 56, + ARCEUS_IRON = 64, + ARCEUS_FLAME = 72, + ARCEUS_SPLASH = 80, + ARCEUS_MEADOW = 88, + ARCEUS_ZAP = 96, + ARCEUS_MIND = 104, + ARCEUS_ICICLE = 112, + ARCEUS_DRACO = 120, + ARCEUS_DREAD = 128, + BURMY_PLANT = 0, + BURMY_SANDY = 8, + BURMY_TRASH = 16, + DEOXYS_NORMAL = 0, + DEOXYS_ATTACK = 8, + DEOXYS_DEFENSE = 16, + DEOXYS_SPEED = 24, + GIRATINA_ALTERED = 0, + GIRATINA_ORIGIN = 8, + ROTOM_NORMAL = 0, + ROTOM_HEAT = 8, + ROTOM_WASH = 16, + ROTOM_FROST = 24, + ROTOM_FAN = 32, + ROTOM_MOW = 40, + SHAYMIN_LAND = 0, + SHAYMIN_SKY = 8, + SHELLOS_WEST = 0, + SHELLOS_EAST = 8, + UNOWN_A = 0, + UNOWN_B = 8, + UNOWN_C = 16, + UNOWN_D = 24, + UNOWN_E = 32, + UNOWN_F = 40, + UNOWN_G = 48, + UNOWN_H = 56, + UNOWN_I = 64, + UNOWN_J = 72, + UNOWN_K = 80, + UNOWN_L = 88, + UNOWN_M = 96, + UNOWN_N = 104, + UNOWN_O = 112, + UNOWN_P = 120, + UNOWN_Q = 128, + UNOWN_R = 136, + UNOWN_S = 144, + UNOWN_T = 152, + UNOWN_U = 160, + UNOWN_V = 168, + UNOWN_W = 176, + UNOWN_X = 184, + UNOWN_Y = 192, + UNOWN_Z = 200, + UNOWN_EXCLAMATION_MARK = 208, + UNOWN_QUESTION_MARK = 216 +} AlternateForms; + +// Structs + +typedef struct { + u16 species; + u16 heldItem; + u16 otID; + u16 otSecretID; + u32 exp; + u8 friendship; + u8 ability; + u8 circleMarking:1, triangleMarking:1, squareMarking:1, heartMarking:1, starMarking:1, diamondMarking:1; + OriginLanguage originLanguage; + u8 hpEV; + u8 atkEV; + u8 defEV; + u8 spdEV; + u8 spatkEV; + u8 spdefEV; + u8 coolStat; + u8 beautyStat; + u8 cuteStat; + u8 smartStat; + u8 toughStat; + u8 sheen; + // TODO: Finish SinnohRibbonSet1 + u8 sinnohChampRibbon:1, abilityRibbon:1; + u8 field_0x1d; + u8 gorgeousRoyalRibbon:1, footprintRibbon:1; + u8 field_0x1f; +} PokemonDataBlockA; + +typedef struct { + u16 move1; + u16 move2; + u16 move3; + u16 move4; + u8 move1pp; + u8 move2pp; + u8 move3pp; + u8 move4pp; + u8 move1ppUps; + u8 move2ppUps; + u8 move3ppUps; + u8 move4ppUps; + u32 hpIV:5, atkIV:5, defIV:5, spdIV:5, spatkIV:5, spdefIV:5, isEgg:1, isNicknamed:1; + // TODO: Finish HoennRibbonSet + u8 coolRibbon:1; + u8 field_0x15; + u8 field_0x16; + u8 field_0x17; + u8 fatefulEncounter:1, female:1, genderless:1, alternateForm:5; + u8 HGSS_shinyLeaves; // TODO: Turn into bitfield + u16 Unused; + u16 Platinum_EggLocation; + u16 Platinum_MetLocation; +} PokemonDataBlockB; + +typedef struct { + u16 nickname[11]; + u8 Unused; + u8 originGame; + // TODO: Finish SinnohRibbonSet2 + u8 coolRibbon:1; + u8 field_0x19; + u8 field_0x1a; + u8 field_0x1b; + u32 Unused2; +} PokemonDataBlockC; + +typedef struct { + u16 otTrainerName[8]; + u8 dateEggReceived[3]; + u8 dateMet[3]; + u16 DP_EggLocation; + u16 DP_MetLocation; + u8 pokerus; + u8 pokeball; + u8 flags; + EncounterType encounterType; + u8 HGSS_Pokeball; + u8 HGSS_Performance; +} PokemonDataBlockD; + +typedef union { + PokemonDataBlockA blockA; + PokemonDataBlockB blockB; + PokemonDataBlockC blockC; + PokemonDataBlockD blockD; +} PokemonDataBlock; + +struct PokemonData { + u32 personalityValue; + u16 Unused; // Might be used for validity checks + u16 checksum; // Stored checksum of pokemon + PokemonDataBlock block1; // Blocks A-D; Order based on personalityValue + PokemonDataBlock block2; + PokemonDataBlock block3; + PokemonDataBlock block4; +}; + +#endif //POKEDIAMOND_POKEMON_H diff --git a/include/structs.h b/include/structs.h new file mode 100644 index 00000000..8a34d299 --- /dev/null +++ b/include/structs.h @@ -0,0 +1,7 @@ +#ifndef POKEDIAMOND_STRUCTS_H +#define POKEDIAMOND_STRUCTS_H + +#include "pokemon.h" +#include "map.h" + +#endif //POKEDIAMOND_STRUCTS_H -- cgit v1.2.3