diff options
author | huderlem <huderlem@gmail.com> | 2019-08-13 17:23:23 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-13 17:23:23 -0500 |
commit | 5cbb66a6e5dd18d133e692a04e116aa3909d22ed (patch) | |
tree | c1ca88b5138d19eb5106f171c8ae77d4516e8b22 /include | |
parent | 4c8669a3aad601f1381ca9c67c78040ce80157df (diff) | |
parent | 0648ededb9161e9f5fc4e0a38ae91c7bf14e6c0b (diff) |
Merge pull request #8 from camthesaxman/decompile-options
decompile field_select.s and start decompiling options.s
Diffstat (limited to 'include')
-rw-r--r-- | include/agb_sram.h | 4 | ||||
-rw-r--r-- | include/functions.h | 52 | ||||
-rwxr-xr-x | include/global.h | 16 | ||||
-rwxr-xr-x | include/main.h | 34 | ||||
-rw-r--r-- | include/variables.h | 40 |
5 files changed, 92 insertions, 54 deletions
diff --git a/include/agb_sram.h b/include/agb_sram.h index c609417..fe1ea85 100644 --- a/include/agb_sram.h +++ b/include/agb_sram.h @@ -1,10 +1,12 @@ #ifndef GUARD_AGB_SRAM_H #define GUARD_AGB_SRAM_H +#define SRAM 0x0E000000 + void SetSramFastFunc(void); void WriteSramFast(const u8 *src, u8 *dest, u32 size); extern void (*ReadSramFast)(const u8 *src, u8 *dest, u32 size); extern u32 (*VerifySramFast)(const u8 *src, u8 *dest, u32 size); u32 WriteAndVerifySramFast(const u8 *src, u8 *dest, u32 size); -#endif // GUARD_AGB_SRAM_H
\ No newline at end of file +#endif // GUARD_AGB_SRAM_H diff --git a/include/functions.h b/include/functions.h index 0606057..9179ff2 100644 --- a/include/functions.h +++ b/include/functions.h @@ -20,7 +20,7 @@ void sub_1340(void); void AgbMain(void); void sub_9BC_Main(void); -void HBlankIntr(void); +void VBlankIntr(void); void VCountIntr(void); void SerialIntr(void); void Timer3Intr(void); @@ -31,8 +31,8 @@ s16 sub_C24(u16 arg0); s16 sub_C74(u16 arg0); void sub_CBC(void); void sub_D10(void); -void sub_D74(void); -void sub_DC4(void); +void MainLoopIter(void); +void DefaultMainCallback(void); // src/rom_3219C.c @@ -41,13 +41,13 @@ void sub_3219C(void); // src/rom_850.c -u16 sub_850(void); -void sub_898(void (*func)(void)); -void sub_8BC(void); -void sub_8D4(void (*func)(void)); -void sub_8FC(void); -void sub_918(void (*func)(void)); -void sub_940(void); +u16 IsInVblank(void); +void SetMainCallback(void (*func)(void)); +void ResetMainCallback(void); +void SetVBlankIntrFunc(void (*func)(void)); +void ResetVBlankIntrFunc(void); +void SetVCountIntrFunc(void (*func)(void)); +void ResetVCountIntrFunc(void); // src/titlescreen.c @@ -72,10 +72,10 @@ void SetMainGameState(u16 mainState); void sub_24C(void); void sub_2B4(void); s16 LoadSpriteSets(const struct SpriteSet *const *spriteSets, u16 numSpriteSets, struct SpriteGroup *spriteGroups); -void sub_438(void); -void sub_490(void); +void ResetSomeGraphicsRelatedStuff(void); +void ClearGraphicsMemory(void); void sub_518(void); -void sub_578(void); +void ClearSprites(void); void sub_678(u8 *arg0, s16 arg1, s16 arg2); void SetMatrixScale(s16 xScale, s16 yScale, s16 matrixNum); @@ -330,14 +330,14 @@ extern void sub_1050C(void); //extern ? OptionsMain(); //extern ? sub_51240(); -//extern ? sub_513B8(); +extern void sub_513B8(void); //extern ? sub_514B8(); //extern ? sub_51C3C(); //extern ? sub_51C60(); -//extern ? sub_51C9C(); -//extern ? sub_524BC(); -//extern ? sub_52528(); -//extern ? sub_525CC(); +extern void sub_51C9C(void); +extern void sub_524BC(void); +extern void sub_52528(void); +extern void sub_525CC(s8); // asm/pokedex.s @@ -388,12 +388,12 @@ extern void sub_8ABC(void); // asm/rom_1068C.s -//extern ? sub_1068C(); +void sub_1068C(int, int, int, int, u16); extern void sub_10708(void *volatile, void *volatile, s16, s16); //extern ? sub_10750(); //extern ? sub_10798(); //extern ? sub_10860(); -extern void sub_1090C(void); +extern void ClearSomeArray(void); // asm/rom_11B9C.s @@ -775,11 +775,11 @@ extern void sub_1090C(void); //extern ? sub_528DC(); //extern ? sub_5291C(); //extern ? sub_52940(); -extern void sub_52A18(void); -//extern ? sub_52A68(); -extern void sub_52B30(void); -//extern ? sub_52BB0(); -extern void sub_52C44(void); +extern void SaveFile_LoadGameData(void); +//extern ? LoadSaveDataFromSram(); +extern void SaveFile_WriteToSram(void); +//extern ? SaveFile_SetPokedexFlags(); +extern void SaveFile_ReadSavedGamePresent(void); extern void sub_52C64(void); // asm/rom_9BC.s @@ -830,4 +830,4 @@ extern void sub_1175C(void); extern void sub_11968(void); extern void sub_11B74(void); -#endif // GUARD_FUNCTIONS_H
\ No newline at end of file +#endif // GUARD_FUNCTIONS_H diff --git a/include/global.h b/include/global.h index 2a9b072..a42f1aa 100755 --- a/include/global.h +++ b/include/global.h @@ -63,6 +63,22 @@ #define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) >= (b) ? (a) : (b)) +enum +{ + STATE_INTRO, + STATE_TITLE, + STATE_GAME_MAIN, + STATE_GAME_IDLE, + STATE_OPTIONS, + STATE_POKEDEX, + STATE_UNKNOWN6, + STATE_EREADER, + STATE_SCORES_MAIN, + STATE_SCORES_IDLE, + STATE_FIELD_SELECT, + STATE_BONUS_FIELD_SELECT, +}; + struct PinballGame { /*0x000*/ u8 filler0[0x35]; diff --git a/include/main.h b/include/main.h index 3e0c744..f37dd24 100755 --- a/include/main.h +++ b/include/main.h @@ -9,11 +9,11 @@ struct SaveData /*0x74*/ u8 pokedexFlags[204]; /*0x140*/ u8 filler140[1]; /*0x141*/ u8 unk141; - /*0x142*/ u8 unk142; + /*0x142*/ u8 ballSpeed; /*0x143*/ u8 unk143; - /*0x144*/ u8 filler144[0x2D8-0x144]; - s8 signature[10]; - u16 unk2E2; + /*0x144*/ u16 unk144[0x65][2]; + /*0x2D8*/ s8 signature[10]; + u16 checksum; u32 unk2E4; }; @@ -23,7 +23,8 @@ struct Main /*0x02*/ u8 mainState; /*0x03*/ u8 subState; /*0x04*/ u8 unk4; - /*0x05*/ u8 filler5[0x2]; + /*0x05*/ u8 unk5; + /*0x06*/ u8 unk6; /*0x07*/ s8 unk7; /*0x08*/ s8 unk8; /*0x09*/ u8 filler9[0x3]; @@ -57,22 +58,25 @@ struct Main /*0x40*/ int hasSavedGame; /*0x44*/ u8 filler44[0x4]; /*0x48*/ int rngValue; - /*0x4C*/ int unk4C; + /*0x4C*/ int frameCount; /*0x50*/ int unk50; /*0x54*/ u8 filler54[0x20]; + + // This field must be accessed using the following macro to produce matching code. +#define gMain_saveData (*(struct SaveData *)(&gMain.saveData)) /*0x74*/ struct SaveData saveData; + /*0x2E8*/ struct MainUnk2E8 unk2E8[4]; /*0x2F8*/ struct SpriteGroup spriteGroups[NUM_SPRITE_GROUPS]; }; extern struct Main gMain; -extern u8 gUnknown_0200B134[]; extern struct SpriteGroup gUnknown_0200B3B8[]; extern u32 IntrMain_Buffer[0x200]; extern u32 IntrMain[]; -extern IntrFunc *gUnknown_0200FB98; -extern IntrFunc *gUnknown_02019BE0; +extern IntrFunc *gVBlankIntrFuncPtr; +extern IntrFunc *gVCountIntrFuncPtr; extern int gUnknown_02019BE4; extern int gUnknown_02019BE8; extern int gUnknown_02019BEC; @@ -88,7 +92,7 @@ extern u8 gUnknown_02019C10; extern u8 gUnknown_02002008[]; #define INTR_COUNT 14 extern IntrFunc gIntrTable[14]; -extern void (*gUnknown_0200FB9C)(void); +extern void (*gMainCallback)(void); extern void (*gUnknown_0200FBA0)(void); extern void (*gUnknown_02017BD0)(void); extern void (*gUnknown_02017BD4)(void); @@ -97,18 +101,18 @@ extern struct OamData gOamBuffer[128]; void sub_24C(void); void sub_2B4(void); -void sub_490(void); +void ClearGraphicsMemory(void); void sub_518(void); -void sub_578(void); +void ClearSprites(void); u32 Random(void); -void HBlankIntr(void); +void VBlankIntr(void); void VCountIntr(void); void SerialIntr(void); void Timer3Intr(void); void sub_CBC(void); void sub_D10(void); -void sub_D74(void); -void sub_DC4(void); +void MainLoopIter(void); +void DefaultMainCallback(void); #endif // GUARD_MAIN_H diff --git a/include/variables.h b/include/variables.h index 590ae00..3cc1efd 100644 --- a/include/variables.h +++ b/include/variables.h @@ -3,6 +3,19 @@ // Place all external variable declarations in this file +extern struct {u16 unk0[5]; u16 unkA[5];} gUnknown_086A6B14; +extern s8 gUnknown_02002850; +extern struct ToneData gUnknown_08532D6C[]; +extern struct ToneData gUnknown_08533360[]; +extern struct ToneData gUnknown_08533960[]; +extern struct ToneData gUnknown_08533F60[]; +extern u16 gUnknown_08527D22[]; +extern u16 gUnknown_086BB910[][4]; +extern struct {u8 unk0; s16 unk2;} gUnknown_086BB9B4[]; +extern u16 gUnknown_08527D66[]; +extern u8 gUnknown_02031AF0[][10]; +extern u8 gUnknown_08527ED6[][10]; +extern void (*const gUnknown_08527F08[])(void); extern u16 gUnknown_0201A520[]; extern u16 gUnknown_0201AD20[]; extern u32 gUnknown_0201A500[]; @@ -26,15 +39,14 @@ extern u8 gUnknown_02002808[]; //extern ? gUnknown_02002958; //extern ? gIntrTable; //extern ? gMain; -//extern ? gMain+0x74; //extern ? gUnknown_0200B3B8; -//extern ? gUnknown_0200FB98; -//extern ? gUnknown_0200FB9C; +//extern ? gVBlankIntrFuncPtr; +//extern ? gMainCallback; //extern ? gUnknown_0200FBA0; //extern ? gUnknown_02017BD0; //extern ? gUnknown_02017BD4; //extern ? gUnknown_02017BE0; -//extern ? gUnknown_02019BE0; +//extern ? gVCountIntrFuncPtr; //extern ? gUnknown_02019BE4; //extern ? gUnknown_02019BE8; //extern ? gUnknown_02019BEC; @@ -116,15 +128,19 @@ extern const s16 gEReaderAccessButtonSequence[]; //extern ? gMonHatchSpriteGroup3_Gfx; //extern ? gMonHatchSpriteGroup4_Gfx; //extern ? gMonHatchSpriteGroup5_Gfx; -//extern ? gFieldSelectWindow_Gfx; +extern struct Coord16 gUnknown_086A6B28[]; +extern const struct SpriteSet *const gUnknown_086A6AD4[]; +extern void (*gFieldSelectStateFuncs[])(void); +extern u8 gUnknown_080A2400[]; +extern u8 gFieldSelectWindow_Gfx[]; //extern ? gUnknown_080A4000; -//extern ? gFieldSelectFrameShadowTilemap; -//extern ? gFieldSelectMiniFields_Gfx; +extern u8 gFieldSelectFrameShadowTilemap[]; +extern u8 gFieldSelectMiniFields_Gfx[]; //extern ? gUnknown_080A8020; -//extern ? gFieldSelectWindowTilemap; -//extern ? gFieldSelectBGPals; -//extern ? gFieldSelectSpritePals; -//extern ? gFieldSelectSpriteGfx; +extern u8 gFieldSelectWindowTilemap[]; +extern u16 gFieldSelectBGPals[]; +extern u16 gFieldSelectSpritePals[]; +extern u8 gFieldSelectSpriteGfx[]; extern const u8 gTitlescreenBgTilemap[]; extern const u16 gTitlescreenBg_Pals[]; extern const u8 gTitlescreenBg_Gfx[]; @@ -172,4 +188,4 @@ extern struct Coord16 gUnknown_086A9694[]; extern struct Coord16 gUnknown_086A96AC[]; extern struct Coord16 gUnknown_086A96C0[]; -#endif // GUARD_VARIABLES_H
\ No newline at end of file +#endif // GUARD_VARIABLES_H |