#ifndef GUARD_EWRAM_H #define GUARD_EWRAM_H extern u8 ewram[]; #define BATTLE_STRUCT ((struct BattleStruct *) (ewram + 0x0)) #define ewram0 (*(struct UnknownStruct7 *)(ewram + 0x0)) #define ewram0_2 (*(struct Struct2000000 *)(ewram + 0x0)) #define namingScreenData (*(struct NamingScreenData *)(ewram + 0x0)) #define unk_2000000 (*(struct UnkStruct *)(ewram + 0x0)) #define ewramBerryPic (ewram + 0x0) #define ewram0_3 (*(struct UnknownStruct3 *)(ewram + 0x0)) #define ewram0_4 (*(struct Unk2000000 *)(ewram + 0x0)) #define ewram4 (*(struct UnknownStruct8 *)(ewram + 0x4)) #define ewram520 ((struct UnknownStruct7 *)(ewram + 0x00520)) #define ewram888 (ewram + 0x888) #define ewramBlankMapName (ewram + 0xA48) #define ewramA6E (ewram[0xA6E]) #define ewram01000 (*(struct Unk2001000 *)(ewram + 0x1000)) #define ewramBerryPicTemp (ewram + 0x1000) #define EWRAM_1000 (*(struct Struct2001000 *)(ewram + 0x1000)) #define gUnk20011fa (u8 *)(&ewram[0x11FA]) #define gUnk2002694 (u8 *)(&ewram[0x2694]) #define gUnk20026A6 (u8 *)(&ewram[0x26A6]) #define gUnk20026e4 (u8 *)(&ewram[0x26E4]) #define gUnknown_02007000 (*(ewramStruct_02007000 *)(ewram + 0x7000)) #define ARRAY_2007800 ((struct EasyChatPair *)(ewram + 0x7800)) #define ARRAY_2007900 ((struct EasyChatPair *)(ewram + 0x7900)) #define unk_2008000 (*(struct PlayerRecords *)(ewram + 0x08000)) #define TRANSITION_STRUCT (*(struct TransitionData *) (ewram + 0xC000)) #define ewram_2010000 (*(struct TradeEwramStruct *)(ewram + 0x10000)) #define EWRAM_14000 ((u8 *)(ewram + 0x14000)) #define EWRAM_14800 ((u16 *)(ewram + 0x14800)) #define sEvoInfo ((*(struct EvoInfo*)(ewram + 0x14800))) #define EWRAM_15000 ((u8 *)(ewram + 0x15000)) #define ewram16000 (ewram[0x16000]) #define ewram16001 (ewram[0x16001]) #define ewram16002 (ewram[0x16002]) #define ewram16003 (ewram[0x16003]) #define ewram1600C (ewram[0x1600C]) #define ewram1600E (ewram[0x1600E]) #define ewram1601B (ewram[0x1601B]) #define ewram16020 ((u8 *)(ewram + 0x16020)) #define ewram16056 (ewram[0x16056]) #define ewram16058 (ewram[0x16058]) #define ewram16059 (ewram[0x16059]) #define UNK_201606C_ARRAY (ewram + 0x1606C) // lazy define but whatever. #define ewram16078 (ewram[0x16078]) #define ewram16084 (ewram[0x16084]) #define ewram16086 (ewram[0x16086]) #define ewram16087 (ewram[0x16087]) #define ewram16088 (ewram[0x16088]) #define ewram16088_2 (*(u8 *)(ewram + 0x16088)) #define ewram16089 (ewram[0x16089]) #define ewram16089_2 (*(u8 *)(ewram + 0x16089)) #define EWRAM_1609D (ewram[0x1609D]) #define ewram160A1 (ewram[0x160A1]) #define ewram160A6 (ewram[0x160A6]) #define ewram160AC ((u8 *)(ewram + 0x160AC)) #define ewram160BC ((u16 *)(ewram + 0x160BC)) // hp #define ewram160C8 (ewram[0x160C8]) #define ewram160C9 (ewram[0x160C9]) #define ewram160CB (ewram[0x160CB]) #define ewram160CC ((u8 *)(ewram + 0x160CC)) #define USED_HELD_ITEM(bank) ((((u16*)(&ewram[0x160CC + bank * 2])))) #define USED_HELD_ITEMS(bank) (*(u16 *)&ewram[0x160CC + 2 * (bank)]) #define ewram160E6 (ewram[0x160E6]) #define CHOICED_MOVE(bank) (((u16*)(&ewram[0x160E8 + bank * 2]))) #define ewram160E8 ((u8 *)(ewram + 0x160E8)) #define ewram160F0 ((u8 *)(ewram + 0x160F0)) #define ewram160F9 (ewram[0x160F9]) #define ewram160FB (ewram[0x160FB]) #define ewram16100 ((u8 *)(ewram + 0x16100)) #define ewram16108 ((u8 *)(ewram + 0x16108)) #define ewram16110 (ewram[0x16110]) #define ewram16111 (ewram[0x16111]) #define ewram16113 (ewram[0x16113]) #define AI_THINKING_STRUCT ((struct AI_ThinkingStruct *)(ewram + 0x16800)) #define UNK_2016A00_STRUCT ((struct UnkBattleStruct1 *) (ewram + 0x16A00)) #define AI_STACK ((struct AI_Stack *) (ewram + 0x16C00)) #define AI_ARRAY_160CC ((struct SmallItemStruct *) (ewram + 0x160CC)) #define ewram17100_2 (*(struct Struct2017100 *)(ewram + 0x17100)) #define B_BATTLESCRIPTS_STACK ((struct scriptsStack *) (ewram + 0x17110)) #define B_FUNCTION_STACK ((struct funcStack *) (ewram + 0x17140)) #define ewram17800 ((struct Struct2017800 *) (ewram + 0x17800)) #define ewram17810 ((struct Struct2017810 *) (ewram + 0x17810)) #define ewram17840 (*(struct Struct2017840 *) (ewram + 0x17840)) #define ewram17850 ((struct UnknownStruct5 *)(ewram + 0x17850)) #define ewram17000 ((u32 *) (ewram + 0x17100)) // this label is incorrect. #define ewram17100 ((u32 *)(ewram + 0x17100)) #define ewram17130 (ewram[0x17130]) #define ewram17160 (ewram[0x17160]) #define EWRAM_17800 ((struct UnknownStruct1 *)(ewram + 0x17800)) #define EWRAM_17810 ((struct UnknownStruct3 *)(ewram + 0x17810)) #define unk_2018000 (*(struct PlayerRecords *)(ewram + 0x18000)) #define EWRAM_18000 ((u16 *)(ewram + 0x18000)) #define ewram18000 ((u16 *)(ewram + 0x18000)) #define UNK_2018000_STRUCT (*(struct UnknownStruct2018000 *)(ewram + 0x18000)) #define ewram18300 ((u16 *)(ewram + 0x18300)) #define EWRAM_19348 (*(u16 *)(ewram + 0x19348)) #define ewram19348 (*(struct Struct2019348 *)(ewram + 0x19348)) #define ewram1B000 (*(struct Unk201B000 *)(ewram + 0x1B000)) #define ewram1B000_alt (*(struct Struct201B000 *)(ewram + 0x1B000)) #define EWRAM_1B000 ewram1B000_alt // FIXME #define EWRAM_1B000_2 (*(struct Struct201B000 *)(ewram + 0x1B000)) #define EWRAM_1C000 (*(struct Struct201C000 *)(ewram + 0x1C000)) #define ewram1C000 (*(struct Unk201C000 *)(ewram + 0x1C000)) #define ewram1c000 (*(struct Unk201C000 *)(ewram + 0x1C000)) // FIXME, names too similar #define ewram1D000 ((struct Pokemon *)(ewram + 0x1D000)) #define ewram1D000_2 ((u16 *)(ewram + 0x1D000)) #define ewram1D400 ((u16 *)(ewram + 0x1D400)) #define ewramSavedItemsPocket ((struct ItemSlot *)(ewram + 0x1E000)) // saved items pocket (for Wally battle) #define HALL_OF_FAME_SHEET_0 ((u8 *)(ewram + 0x1E000)) #define HALL_OF_FAME_SHEET_1 ((u8 *)(ewram + 0x1E800)) #define ewram_1f000 (*(struct DecoPCPointers *)(ewram + 0x1f000)) #define ewramSavedPokeballsPocket ((struct ItemSlot *)(ewram + 0x1F000)) // saved Pokeballs pocket (for Wally battle) #define HALL_OF_FAME_SHEET_2 ((u8 *)(ewram + 0x1F000)) #define EWRAM_1F800 ((u16 *)(ewram + 0x1F800)) #define ewram1FE00 (*(struct Unk201FE00 *)(ewram + 0x1FE00)) #define gHelperState (ewram[0x1FFFE]) #define gReshowState (ewram[0x1FFFF]) #define ewramBagSetupStep (ewram[0x1FFFF]) #endif