mirror of
https://github.com/pret/pokeruby.git
synced 2026-03-21 17:54:19 -05:00
173 lines
9.2 KiB
C
173 lines
9.2 KiB
C
#ifndef GUARD_EWRAM_H
|
|
#define GUARD_EWRAM_H
|
|
|
|
extern u8 gSharedMem[];
|
|
|
|
// Note: we have duplicate ewram labels because its clear some memory
|
|
// regions overlap others but have different definitions. Until some
|
|
// dupes can be determined to be the same, they will be deliberate
|
|
// seperated.
|
|
#define gDecompressionBuffer (gSharedMem + 0x1E000)
|
|
|
|
// battle_interface.c
|
|
#define eBattleInterfaceGfxBuffer ((u8 *)EWRAM)
|
|
|
|
// region_map.c, field_region_map.c
|
|
#define eRegionMapState (*(struct RegionMapState *)gSharedMem)
|
|
|
|
// field_weather.c
|
|
#define eDroughtPaletteData (*(struct WeatherPaletteData *)gSharedMem)
|
|
|
|
// battle etc.
|
|
// This overlaps with so many things it's not even funny
|
|
// The actual data starts at 0x02014000
|
|
#define eMultiTxBuffer (*(union MultiBuffers *)gSharedMem)
|
|
#define gBattleStruct ((struct BattleStruct *) (gSharedMem + 0x0))
|
|
// This macro ensures that any changes to the battle struct
|
|
// definition will not horribly break things in battle.
|
|
#define BSTRUCT_OFF(member) (offsetof(struct BattleStruct, member) + ((u8 *)gBattleStruct - gSharedMem))
|
|
#define BCOMM(buff, member, blockOff, i) (gSharedMem[BSTRUCT_OFF(buff) + offsetof(struct LinkBattleCommunicationHeader, member) + blockOff + i])
|
|
|
|
// battle_transition.c
|
|
#define TRANSITION_STRUCT (*(struct TransitionData *) (gSharedMem + 0xC000))
|
|
#define eTransitionMugshotDecompBuff (&gSharedMem[0xC03C])
|
|
|
|
#define ewram16400 (gSharedMem + 0x16400)
|
|
|
|
// gBattleResources
|
|
#define AI_THINKING_STRUCT ((struct AI_ThinkingStruct *)(gSharedMem + 0x16800))
|
|
#define AI_BATTLE_HISTORY ((struct BattleHistory *) (gSharedMem + 0x16A00))
|
|
#define AI_STACK ((struct AI_Stack *) (gSharedMem + 0x16C00))
|
|
#define eSecretBaseRecord ((struct SecretBaseRecord *)(gSharedMem + 0x17000))
|
|
#define eBattleFlagsArr (*(struct ResourceFlags *)(gSharedMem + 0x17100))
|
|
#define B_BATTLESCRIPTS_STACK ((struct BattleScriptsStack *) (gSharedMem + 0x17110))
|
|
#define B_FUNCTION_STACK ((struct BattleCallbacksStack *) (gSharedMem + 0x17140))
|
|
#define gBattleResources_statsBeforeLvlUp ((struct StatsArray *)(gSharedMem + 0x17180))
|
|
#define gBattleSpriteInfo ((struct BattleSpriteInfo *) (gSharedMem + 0x17800))
|
|
#define gBattleHealthBoxInfo ((struct BattleHealthboxInfo *) (gSharedMem + 0x17810))
|
|
#define ewram17840 (*(struct Struct2017840 *) (gSharedMem + 0x17840))
|
|
#define eBattleBars ((struct BattleBar *)(gSharedMem + 0x17850))
|
|
|
|
#define eBattleAnimPalBackup_Battle ((u16 *)(gSharedMem + 0x18000)) // also: shop.c, battle_anim.c
|
|
|
|
// Contest
|
|
#define eBattleAnimPalBackup_Contest ((u16 *)(gSharedMem + 0x14800))
|
|
#define eUnzippedContestAudience_Gfx (&gSharedMem[0x15800]) // overlaps other contest vars
|
|
#define eCurContestWinnerSaveIdx (gSharedMem[0x15DDE])
|
|
#define eCurContestWinnerIsForArtist (gSharedMem[0x15DDF])
|
|
#define eCurContestWinner ((*(struct ContestWinner*)(gSharedMem + 0x15DE0)))
|
|
#define eContestPaintingBuffers ((*(struct ContestPaintingBuffers*)(gSharedMem + 0x15E00)))
|
|
#define eEnableContestDebugging (gSharedMem[0x18000])
|
|
#define eContestTempSave (*(struct ContestTempSave *)(gSharedMem + 0x18004))
|
|
#define sContest (*(struct Contest *)(gSharedMem + 0x19204))
|
|
#define sContestantStatus ((struct ContestantStatus *)(gSharedMem + 0x19260))
|
|
#define eContestAppealResults (*(struct ContestAppealMoveResults *)(gSharedMem + 0x192D0))
|
|
#define eContestAI ((struct ContestAIInfo *)(gSharedMem + 0x192E4))
|
|
#define eContestExcitement (*(struct ContestExcitement *)(gSharedMem + 0x19328))
|
|
#define eContestGfxState ((struct ContestGfxState *)(gSharedMem + 0x19338))
|
|
#define gContestResources__moveAnim (*(struct ContestMoveAnim *)(gSharedMem + 0x19348))
|
|
|
|
// Non-battle allocations
|
|
#define namingScreenData (*(struct NamingScreenData *)(gSharedMem + 0x0))
|
|
#define eSaveSection (struct SaveSector *)(gSharedMem + 0x0)
|
|
#define eSlotMachine ((struct SlotMachineEwramStruct *)(gSharedMem + 0x0))
|
|
#define ePokemonStorageSystem (*(struct PokemonStorageSystemData *)(gSharedMem + 0))
|
|
|
|
#define ewramSavedItemsPocket ((struct ItemSlot *)(gSharedMem + 0x1E000)) // saved items pocket (for Wally battle)
|
|
#define ewramSavedPokeballsPocket ((struct ItemSlot *)(gSharedMem + 0x1F000)) // saved Pokeballs pocket (for Wally battle)
|
|
|
|
// party_menu.c
|
|
#define ePartyMenu (*(struct Unk2001000 *)(gSharedMem + 0x1000))
|
|
#define eMoveTutorMenu (struct MoveTutorMenu *)(gSharedMem + 0x17000)
|
|
#define ePartyMenu2 (*(struct Unk201B000 *)(gSharedMem + 0x1B000))
|
|
#define gPartyMenu (*(struct PartyMenu *)(gSharedMem + 0x1C000))
|
|
|
|
// player_pc.c, party_menu.c
|
|
#define eMailboxInfo (*(struct MailboxStruct *)(gSharedMem + 0x1FE00))
|
|
|
|
// item_menu.c
|
|
#define ewramBerryPic (gSharedMem + 0x0)
|
|
#define ewramBerryPicTemp (gSharedMem + 0x1000)
|
|
|
|
// record_mixing.c
|
|
#define eRecordMixTvShows ((union TVShow (*)[TV_SHOWS_COUNT])(gSharedMem + 0x7000))
|
|
#define eRecordMixPokeNews ((struct PokeNews (*)[POKE_NEWS_COUNT])(gSharedMem + 0x7000)) // same addr as above
|
|
#define eLinkedDewfordTrendsBuffer ((struct EasyChatPair *)(gSharedMem + 0x7800))
|
|
#define eSavedDewfordTrendsBuffer ((struct EasyChatPair *)(gSharedMem + 0x7900))
|
|
#define eReceivedRecords (*(struct PlayerRecords *)(gSharedMem + 0x08000))
|
|
#define eSentRecord (*(struct PlayerRecords *)(gSharedMem + 0x18000))
|
|
|
|
// pokedex.c
|
|
#define ePokedexGraphicsBuffer ((void *)&gSharedMem[0x8000])
|
|
#define ePokedexView1 (struct PokedexView *)(gSharedMem + 0x18000)
|
|
#define ePokedexView2 (struct PokedexView *)(gSharedMem + 0x18800)
|
|
#define ePokedexView3 (struct PokedexView *)(gSharedMem + 0x19000)
|
|
#define ePokedexView4 (struct PokedexView *)(gSharedMem + 0x19800)
|
|
|
|
// pokedex_cry_screen.c
|
|
#define sCryWaveformWindowTiledata (&gSharedMem[0])
|
|
#define ePokedexCryScreen (*(struct PokedexCryScreen *)(gSharedMem + 0x1C000))
|
|
#define ePokedexCryScreen2 (*(struct PokedexCryMeterNeedle *)(gSharedMem + 0x1C800))
|
|
|
|
#define ewram_2010000 (*(struct TradeEwramStruct *)(gSharedMem + 0x10000))
|
|
#define eBerryBlenderGfxBuffer (&gSharedMem[0x10000])
|
|
#define eSlotMachineGfxBuffer (void *)(gSharedMem + 0x10000) // slot machine
|
|
#define eSlotMachineReelTimeGfxBuffer (&gSharedMem[0x13200])
|
|
#define sEvoInfo ((*(struct EvoInfo*)(gSharedMem + 0x14800)))
|
|
|
|
// roulette_gfx.c
|
|
#define ewram17000 (&gSharedMem[0x17000])
|
|
#define ewram17E00 ((u16 *)(gSharedMem + 0x17E00))
|
|
#define ewram18000 ((u16 *)(gSharedMem + 0x18000)) // also: shop.c, battle_anim.c
|
|
|
|
#define eCableCar1 ((struct CableCarEwramStruct1 *)(gSharedMem + 0x17000))
|
|
#define eCableCar2 ((struct CableCarEwramStruct2 *)(gSharedMem + 0x19000))
|
|
|
|
#define eBerryBlenderData (struct BerryBlenderData*)(&gSharedMem[0x18000])
|
|
#define eEggHatchData (struct EggHatchData*)(&gSharedMem[0x18000])
|
|
|
|
// pokemon_summary_screen.c
|
|
#define pssData (*(struct PokemonSummaryScreenStruct *)(gSharedMem + 0x18000))
|
|
#define ewram1A000 (&gSharedMem[0x1A000])
|
|
|
|
// roulette.c
|
|
#define ewram18800 ((u16 *)(gSharedMem + 0x18800))
|
|
#define eRoulette ((struct Roulette *)(gSharedMem + 0x19000))
|
|
|
|
#define sCreditsData (*(struct CreditsData *)(gSharedMem + 0x1C000))
|
|
|
|
// hall_of_fame.c
|
|
#define eHofGfxPtr (gSharedMem + 0x8000)
|
|
#define eHofMonPtr (struct HallofFameMons*)(&gSharedMem[0x1C000])
|
|
#define eHOFPCScreenEffect (*(struct PCScreenEffectStruct *)(gSharedMem + 0x1c000))
|
|
|
|
#define eMultiBattleSetupPartySendBuffer \
|
|
((struct Pokemon *)(gSharedMem + 0x1D000))
|
|
|
|
// pokeblock_feed.c
|
|
#define ePokeblockFeedMonAnimX ((s16 *)(gSharedMem + 0x1D000))
|
|
#define ePokeblockFeedMonAnimY ((s16 *)(gSharedMem + 0x1D400))
|
|
|
|
// decoration.c
|
|
#define sDecorationContext (*(struct DecoPCPointers *)(gSharedMem + 0x1f000))
|
|
|
|
#define eCutGrassSpriteArray (gSharedMem + 0x1FFF0) // 8 sprite IDs
|
|
|
|
// reshow_battle_screen.c
|
|
#define gHelperState (gSharedMem[0x1FFFE])
|
|
#define gReshowState (gSharedMem[0x1FFFF])
|
|
|
|
// item_menu.c
|
|
#define ewramBagSetupStep (gSharedMem[0x1FFFF])
|
|
|
|
// pokeblock_feed.c
|
|
#define ePokeblockSpriteId (gSharedMem[0x1FFFC])
|
|
#define ePokeblockFeedCaseSpriteId (gSharedMem[0x1FFFD])
|
|
#define ePokeblockMonSpriteId (gSharedMem[0x1FFFE])
|
|
|
|
// pokeblock.c
|
|
#define ePokeblockCaseSpriteId (gSharedMem[0x1FFFE])
|
|
#define ePokeblockGfxState (gSharedMem[0x1FFFF])
|
|
|
|
#endif
|