summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorhuderlem <huderlem@gmail.com>2019-08-13 17:23:23 -0500
committerGitHub <noreply@github.com>2019-08-13 17:23:23 -0500
commit5cbb66a6e5dd18d133e692a04e116aa3909d22ed (patch)
treec1ca88b5138d19eb5106f171c8ae77d4516e8b22 /include
parent4c8669a3aad601f1381ca9c67c78040ce80157df (diff)
parent0648ededb9161e9f5fc4e0a38ae91c7bf14e6c0b (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.h4
-rw-r--r--include/functions.h52
-rwxr-xr-xinclude/global.h16
-rwxr-xr-xinclude/main.h34
-rw-r--r--include/variables.h40
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