summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCameron Hall <cameronghall@cox.net>2019-08-01 20:02:32 -0500
committerCameron Hall <cameronghall@cox.net>2019-08-01 20:02:32 -0500
commit3878495887f2693c810228694b417f4e4d954476 (patch)
tree3520f05e949c598b7466c24c4e7b1339bef65120
parentc427a4af00fa46f33f7167977ea834218c37cfa8 (diff)
move all externs to header files
-rw-r--r--graphics/intro/copyright.pal518
-rw-r--r--include/functions.h922
-rwxr-xr-xinclude/global.h7
-rwxr-xr-xinclude/m4a.h2
-rwxr-xr-xinclude/main.h44
-rw-r--r--include/types.h37
-rw-r--r--include/variables.h167
-rwxr-xr-xsrc/gbplayer.c12
-rwxr-xr-xsrc/main.c12
-rwxr-xr-xsrc/rom_850.c10
-rwxr-xr-xsrc/titlescreen.c41
-rwxr-xr-xsrc/util.c3
12 files changed, 1401 insertions, 374 deletions
diff --git a/graphics/intro/copyright.pal b/graphics/intro/copyright.pal
index e9172c2..e1d2963 100644
--- a/graphics/intro/copyright.pal
+++ b/graphics/intro/copyright.pal
@@ -1,259 +1,259 @@
-JASC-PAL
-0100
-256
-224 248 224
-248 248 248
-192 192 192
-128 128 128
-64 64 64
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
+JASC-PAL
+0100
+256
+224 248 224
+248 248 248
+192 192 192
+128 128 128
+64 64 64
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/include/functions.h b/include/functions.h
new file mode 100644
index 0000000..ae6c8c8
--- /dev/null
+++ b/include/functions.h
@@ -0,0 +1,922 @@
+#ifndef GUARD_FUNCTIONS_H
+#define GUARD_FUNCTIONS_H
+
+// Place all external function declarations in this file
+
+// src/gbplayer.c
+
+void InitGameBoyPlayer(void);
+void sub_10C0(void);
+void sub_111C(void);
+int sub_1170(void);
+void sub_1198(void);
+void sub_11B0(int arg0);
+void sub_11E4(int arg0);
+void sub_11F0(int arg0);
+void sub_11FC(void);
+void sub_1340(void);
+
+// src/m4a_2.c
+
+/*
+u32 MidiKeyToFreq(struct WaveData *wav, u8 key, u8 fineAdjust);
+void UnusedDummyFunc();
+void MPlayContinue(struct MusicPlayerInfo *mplayInfo);
+void MPlayFadeOut(struct MusicPlayerInfo *mplayInfo, u16 speed);
+void m4aSoundInit(void);
+void m4aSoundMain(void);
+void m4aSongNumStart(u16 n);
+void m4aSongNumStartOrChange(u16 n);
+void m4aSongNumStartOrContinue(u16 n);
+void m4aSongNumStop(u16 n);
+void m4aSongNumContinue(u16 n);
+void m4aMPlayAllStop(void);
+void m4aMPlayContinue(struct MusicPlayerInfo *mplayInfo);
+void m4aMPlayAllContinue(void);
+void m4aMPlayFadeOut(struct MusicPlayerInfo *mplayInfo, u16 speed);
+void m4aMPlayFadeOutTemporarily(struct MusicPlayerInfo *mplayInfo, u16 speed);
+void m4aMPlayFadeIn(struct MusicPlayerInfo *mplayInfo, u16 speed);
+void m4aMPlayImmInit(struct MusicPlayerInfo *mplayInfo);
+void MPlayExtender(struct CgbChannel *cgbChans);
+void MusicPlayerJumpTableCopy(void);
+void ClearChain(void *x);
+void Clear64byte(void *x);
+void SoundInit(struct SoundInfo *soundInfo);
+void SampleFreqSet(u32 freq);
+void m4aSoundMode(u32 mode);
+void SoundClear(void);
+void m4aSoundVSyncOff(void);
+void m4aSoundVSyncOn(void);
+void MPlayOpen(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *tracks, u8 trackCount);
+void MPlayStart(struct MusicPlayerInfo *mplayInfo, struct SongHeader *songHeader);
+void m4aMPlayStop(struct MusicPlayerInfo *mplayInfo);
+void FadeOutBody(struct MusicPlayerInfo *mplayInfo);
+void TrkVolPitSet(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track);
+u32 MidiKeyToCgbFreq(u8 chanNum, u8 key, u8 fineAdjust);
+void CgbOscOff(u8 chanNum);
+void CgbModVol(struct CgbChannel *chan);
+
+// src/m4a_4.c
+
+void m4aMPlayTempoControl(struct MusicPlayerInfo *mplayInfo, u16 tempo);
+void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 volume);
+void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s16 pitch);
+void m4aMPlayPanpotControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s8 pan);
+void ClearModM(struct MusicPlayerTrack *track);
+void m4aMPlayModDepthSet(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u8 modDepth);
+void m4aMPlayLFOSpeedSet(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u8 lfoSpeed);
+void ply_memacc(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track);
+void ply_xcmd(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track);
+void ply_xxx(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track);
+void ply_xwave(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track);
+void ply_xtype(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track);
+void ply_xatta(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track);
+void ply_xdeca(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track);
+void ply_xsust(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track);
+void ply_xrele(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track);
+void ply_xiecv(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track);
+void ply_xiecl(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track);
+void ply_xleng(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track);
+void ply_xswee(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track);
+void ply_xcmd_0C(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track);
+void ply_xcmd_0D(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track);
+void DummyFunc(void);
+void SetPokemonCryVolume(u8 val);
+void SetPokemonCryPanpot(s8 val);
+void SetPokemonCryPitch(s16 val);
+void SetPokemonCryLength(u16 val);
+void SetPokemonCryRelease(u8 val);
+void SetPokemonCryProgress(u32 val);
+int IsPokemonCryPlaying(struct MusicPlayerInfo *mplayInfo);
+void SetPokemonCryChorus(s8 val);
+void SetPokemonCryStereo(u32 val);
+void SetPokemonCryPriority(u8 val);
+*/
+
+// src/main.c
+
+void AgbMain(void);
+void sub_9BC_Main(void);
+void HBlankIntr(void);
+void VCountIntr(void);
+void SerialIntr(void);
+void Timer3Intr(void);
+void IntrDummy(void);
+u32 Random(void);
+s16 sub_C24(u16 arg0);
+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);
+
+// src/rom_3219C.c
+
+void sub_3219C(void);
+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);
+
+// src/titlescreen.c
+
+void TitlescreenMain(void);
+void LoadTitlescreenGraphics(void);
+void sub_10AC0(void);
+void sub_10BB8(void);
+void sub_10CF0(void);
+void sub_10D84(void);
+void sub_10E00(void);
+void sub_10EF4(void);
+void sub_11020(void);
+void sub_110FC(void);
+void sub_11228(void);
+void sub_11320(void);
+void sub_11428(void);
+void sub_114B4(void);
+
+// src/util.c
+
+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 sub_518(void);
+void sub_578(void);
+void sub_678(u8 *arg0, s16 arg1, s16 arg2);
+void SetMatrixScale(s16 xScale, s16 yScale, s16 matrixNum);
+
+// asm/bonus_field_select.s
+
+//extern ? BonusFieldSelectMain();
+//extern ? sub_25C4();
+//extern ? sub_2710();
+//extern ? sub_2768();
+//extern ? sub_2990();
+//extern ? sub_29C8();
+
+// asm/ereader.s
+
+//extern ? EReaderMain();
+//extern ? sub_2C78();
+//extern ? sub_2DF0();
+//extern ? sub_2E40();
+//extern ? sub_2FC0();
+//extern ? sub_304C();
+//extern ? sub_3208();
+//extern ? sub_33A0();
+//extern ? sub_343C();
+//extern ? sub_35C8();
+//extern ? sub_374C();
+//extern ? sub_377C();
+//extern ? sub_37B4();
+//extern ? sub_3828();
+//extern ? sub_38A0();
+//extern ? sub_38F0();
+//extern ? sub_394C();
+//extern ? sub_3AB4();
+//extern ? sub_3C1C();
+//extern ? sub_3C78();
+//extern ? sub_3CD8();
+
+// asm/field_select.s
+
+//extern ? FieldSelectMain();
+//extern ? LoadFieldSelectGraphics();
+//extern ? sub_8C38();
+//extern ? sub_8C7C();
+//extern ? sub_8F64();
+//extern ? sub_8F94();
+
+// asm/high_scores.s
+
+//extern ? HighScoresMain();
+//extern ? IdleHighScoresMain();
+//extern ? sub_CE88();
+//extern ? sub_CFD4();
+//extern ? sub_D20C();
+//extern ? sub_D308();
+//extern ? sub_D4B8();
+//extern ? sub_D664();
+//extern ? sub_D9F8();
+//extern ? sub_DA20();
+//extern ? sub_DB4C();
+//extern ? sub_DB70();
+//extern ? sub_DBF4();
+//extern ? sub_DCF0();
+//extern ? sub_DD4C();
+//extern ? sub_DD70();
+//extern ? sub_DEB4();
+//extern ? sub_DF68();
+//extern ? sub_E0C4();
+//extern ? sub_E0EC();
+//extern ? sub_E230();
+//extern ? sub_E390();
+//extern ? sub_E3A8();
+//extern ? sub_E464();
+//extern ? sub_E860();
+//extern ? sub_E908();
+//extern ? sub_E94C();
+//extern ? sub_E970();
+//extern ? sub_E994();
+//extern ? sub_EAC0();
+//extern ? sub_EBEC();
+//extern ? sub_ED28();
+//extern ? sub_EE64();
+//extern ? sub_F21C();
+//extern ? sub_F3BC();
+//extern ? sub_F3DC();
+//extern ? sub_F434();
+//extern ? sub_F4FC();
+//extern ? sub_F670();
+//extern ? sub_F6E0();
+//extern ? sub_F74C();
+//extern ? sub_F8B0();
+//extern ? sub_FAE8();
+//extern ? sub_FD20();
+extern void sub_FD5C(void (*func)(void));
+extern void sub_FE04(void (*func)(void));
+//extern ? sub_FEB8();
+//extern ? sub_FF74();
+//extern ? sub_1001C();
+//extern ? sub_10170();
+//extern ? sub_102A8();
+//extern ? sub_10424();
+//extern ? sub_10480();
+//extern ? sub_1050C();
+//extern ? sub_10528();
+//extern ? sub_10544();
+//extern ? sub_105A0();
+//extern ? sub_10618();
+
+// asm/intro.s
+
+//extern ? IntroMain();
+//extern ? sub_929C();
+//extern ? sub_9348();
+//extern ? sub_9370();
+//extern ? sub_938C();
+//extern ? sub_93D0();
+//extern ? sub_93F8();
+//extern ? sub_9498();
+//extern ? sub_96A8();
+//extern ? sub_978C();
+//extern ? sub_9830();
+//extern ? sub_9878();
+//extern ? sub_98B4();
+//extern ? sub_9920();
+//extern ? sub_999C();
+//extern ? sub_9AB8();
+//extern ? nullsub_4();
+//extern ? sub_9C10();
+//extern ? nullsub_5();
+//extern ? nullsub_17();
+//extern ? sub_9C9C();
+//extern ? sub_9CB8();
+//extern ? sub_9D70();
+//extern ? sub_9E90();
+//extern ? sub_A154();
+//extern ? sub_A16C();
+//extern ? sub_A2A8();
+//extern ? nullsub_6();
+//extern ? sub_A2F0();
+//extern ? nullsub_7();
+//extern ? sub_A39C();
+//extern ? sub_A43C();
+//extern ? sub_A454();
+//extern ? sub_A628();
+//extern ? sub_A674();
+//extern ? sub_A710();
+//extern ? nullsub_8();
+//extern ? sub_A860();
+//extern ? sub_A87C();
+//extern ? sub_A950();
+//extern ? sub_A968();
+//extern ? sub_AAA8();
+//extern ? nullsub_9();
+//extern ? sub_AAF4();
+//extern ? nullsub_10();
+//extern ? sub_AB90();
+//extern ? sub_AC20();
+//extern ? sub_AC38();
+//extern ? sub_ADFC();
+//extern ? sub_AE74();
+//extern ? sub_AF80();
+//extern ? nullsub_11();
+//extern ? sub_B090();
+//extern ? sub_B0E8();
+//extern ? sub_B2E0();
+//extern ? sub_B2F8();
+//extern ? sub_B4A0();
+//extern ? sub_B560();
+//extern ? sub_B6C4();
+//extern ? sub_B7A0();
+//extern ? sub_B7F8();
+//extern ? sub_BA2C();
+//extern ? sub_BA3C();
+//extern ? sub_BBE0();
+//extern ? sub_BC54();
+//extern ? sub_BCE8();
+//extern ? sub_BDC0();
+//extern ? sub_BED0();
+//extern ? sub_C018();
+//extern ? sub_C0BC();
+//extern ? sub_C0D8();
+//extern ? sub_C210();
+//extern ? sub_C228();
+//extern ? sub_C2F0();
+//extern ? sub_C38C();
+//extern ? sub_C3D0();
+//extern ? sub_C450();
+//extern ? nullsub_12();
+//extern ? nullsub_13();
+//extern ? sub_C498();
+//extern ? sub_C4F0();
+//extern ? sub_C814();
+//extern ? sub_C948();
+//extern ? sub_CA28();
+//extern ? sub_CAA0();
+//extern ? sub_CB6C();
+//extern ? sub_CBA4();
+//extern ? nullsub_14();
+//extern ? sub_CC94();
+//extern ? sub_CCF8();
+//extern ? sub_CD18();
+
+// asm/libagbsyscall.s
+
+//extern ? ArcTan2();
+//extern ? CpuSet();
+//extern ? LZ77UnCompWram();
+//extern ? RegisterRamReset();
+//extern ? Sqrt();
+//extern ? VBlankIntrWait();
+
+// asm/m4a_1.s
+
+//extern ? umul3232H32();
+//extern ? SoundMain();
+//extern ? SoundMainRAM();
+//extern ? SoundMainBTM();
+//extern ? RealClearChain();
+//extern ? ply_fine();
+//extern ? MPlayJumpTableCopy();
+//extern ? ld_r3_tp_adr_i();
+//extern ? ply_goto();
+//extern ? ply_patt();
+//extern ? ply_pend();
+//extern ? ply_rept();
+//extern ? ply_prio();
+//extern ? ply_tempo();
+//extern ? ply_keysh();
+//extern ? ply_voice();
+//extern ? ply_vol();
+//extern ? ply_pan();
+//extern ? ply_bend();
+//extern ? ply_bendr();
+//extern ? ply_lfodl();
+//extern ? ply_modt();
+//extern ? ply_tune();
+//extern ? ply_port();
+//extern ? m4aSoundVSync();
+//extern ? MPlayMain();
+//extern ? TrackStop();
+//extern ? ChnVolSetAsm();
+//extern ? ply_note();
+//extern ? ply_endtie();
+//extern ? clear_modM();
+//extern ? ld_r3_tp_adr_i();
+//extern ? ply_lfos();
+//extern ? ply_mod();
+
+// asm/m4a_3.s
+
+//extern ? CgbSound();
+
+// asm/options.s
+
+//extern ? OptionsMain();
+//extern ? sub_51240();
+//extern ? sub_513B8();
+//extern ? sub_514B8();
+//extern ? sub_51C3C();
+//extern ? sub_51C60();
+//extern ? sub_51C9C();
+//extern ? sub_524BC();
+//extern ? sub_52528();
+//extern ? sub_525CC();
+
+// asm/pokedex.s
+
+//extern ? PokedexMain();
+//extern ? sub_3DCC();
+//extern ? sub_3FAC();
+//extern ? sub_4150();
+//extern ? sub_43D4();
+//extern ? sub_4428();
+//extern ? sub_45A4();
+//extern ? sub_4860();
+//extern ? sub_49A8();
+//extern ? sub_49D0();
+//extern ? sub_4B10();
+//extern ? sub_4B34();
+//extern ? sub_4BB4();
+//extern ? sub_4C80();
+//extern ? sub_4D50();
+//extern ? sub_4D74();
+//extern ? sub_4E34();
+//extern ? sub_4EF0();
+//extern ? sub_4F50();
+//extern ? sub_4FC8();
+//extern ? sub_5064();
+//extern ? sub_5134();
+//extern ? sub_5174();
+//extern ? sub_51CC();
+//extern ? sub_51FC();
+//extern ? sub_599C();
+//extern ? sub_5E60();
+//extern ? sub_5EA4();
+//extern ? sub_5EC8();
+//extern ? sub_5EEC();
+//extern ? sub_6144();
+//extern ? sub_639C();
+//extern ? sub_65DC();
+//extern ? sub_681C();
+//extern ? sub_6BEC();
+//extern ? sub_6CA0();
+//extern ? sub_6F30();
+//extern ? sub_6F78();
+//extern ? sub_70E0();
+//extern ? sub_71DC();
+//extern ? sub_88E4();
+//extern ? sub_8974();
+//extern ? sub_8A78();
+//extern ? sub_8ABC();
+
+// asm/rom_1068C.s
+
+//extern ? sub_1068C();
+extern void sub_10708(void*, void*, u16, s16);
+//extern ? sub_10750();
+//extern ? sub_10798();
+//extern ? sub_10860();
+extern void sub_1090C(void);
+
+// asm/rom_11B9C.s
+
+//extern ? sub_11B9C();
+//extern ? sub_11C14();
+//extern ? sub_11C98();
+//extern ? sub_11F88();
+//extern ? sub_12524();
+//extern ? sub_12BF8();
+//extern ? sub_1332C();
+//extern ? sub_1333C();
+//extern ? sub_13824();
+//extern ? sub_13934();
+//extern ? sub_13B28();
+//extern ? sub_13D24();
+//extern ? sub_14074();
+//extern ? sub_14488();
+//extern ? sub_1467C();
+//extern ? sub_14740();
+//extern ? sub_1493C();
+//extern ? sub_14AF4();
+//extern ? sub_14B84();
+//extern ? sub_14E08();
+//extern ? sub_15054();
+//extern ? sub_153CC();
+//extern ? sub_16090();
+//extern ? sub_162B8();
+//extern ? sub_1642C();
+//extern ? sub_171C8();
+//extern ? sub_173FC();
+//extern ? sub_17634();
+//extern ? sub_176B0();
+//extern ? sub_17898();
+//extern ? sub_179D0();
+//extern ? sub_17C1C();
+//extern ? sub_17F28();
+//extern ? sub_18180();
+//extern ? sub_182B4();
+//extern ? sub_18324();
+//extern ? sub_1857C();
+//extern ? sub_18784();
+//extern ? sub_187F4();
+//extern ? sub_18A4C();
+//extern ? sub_18AE0();
+//extern ? sub_18B50();
+//extern ? sub_18DAC();
+//extern ? sub_18F38();
+//extern ? IdlePinballGameMain();
+//extern ? sub_19048();
+//extern ? sub_19190();
+//extern ? sub_19288();
+//extern ? sub_19304();
+//extern ? sub_1931C();
+//extern ? sub_19490();
+//extern ? sub_195C4();
+//extern ? sub_19734();
+//extern ? sub_19894();
+//extern ? sub_19A20();
+//extern ? sub_19B10();
+//extern ? sub_19B64();
+//extern ? sub_19B90();
+//extern ? sub_19C04();
+//extern ? sub_19CC8();
+//extern ? sub_19D04();
+//extern ? sub_19E10();
+//extern ? sub_19F70();
+//extern ? sub_19FA0();
+//extern ? sub_1A0F4();
+//extern ? sub_1A2C0();
+//extern ? sub_1A98C();
+//extern ? sub_1A9E8();
+//extern ? sub_1AA38();
+//extern ? sub_1AAA0();
+//extern ? sub_1AD84();
+//extern ? sub_1ADF4();
+//extern ? sub_1AF84();
+//extern ? sub_1AFD4();
+//extern ? sub_1B140();
+//extern ? sub_1BB68();
+//extern ? sub_1C544();
+//extern ? sub_1C560();
+//extern ? sub_1C5AC();
+//extern ? sub_1C73C();
+//extern ? sub_1C7F4();
+//extern ? sub_1D128();
+//extern ? sub_1D4D0();
+//extern ? sub_1D5D8();
+//extern ? sub_1DA74();
+//extern ? sub_1DAD8();
+//extern ? sub_1DC7C();
+//extern ? sub_1DDDC();
+//extern ? sub_1EC48();
+//extern ? sub_1F158();
+//extern ? sub_1F2A4();
+//extern ? sub_1F59C();
+//extern ? sub_1F698();
+//extern ? sub_1FA48();
+//extern ? sub_1FBC4();
+//extern ? sub_1FF0C();
+//extern ? sub_201B8();
+//extern ? sub_203CC();
+//extern ? sub_20EC0();
+//extern ? sub_21238();
+//extern ? sub_21300();
+//extern ? sub_21320();
+//extern ? sub_21514();
+//extern ? sub_21578();
+//extern ? sub_216FC();
+//extern ? sub_219A8();
+//extern ? sub_219EC();
+//extern ? sub_21B0C();
+//extern ? sub_21D78();
+//extern ? sub_21FBC();
+//extern ? sub_225F0();
+//extern ? sub_22978();
+//extern ? sub_22A30();
+//extern ? sub_22C6C();
+//extern ? sub_22D54();
+//extern ? sub_22FA4();
+//extern ? sub_23070();
+//extern ? sub_2310C();
+//extern ? sub_2312C();
+//extern ? sub_23300();
+//extern ? sub_23954();
+//extern ? sub_239A4();
+//extern ? sub_23E18();
+//extern ? sub_242B4();
+//extern ? sub_24350();
+//extern ? sub_24408();
+//extern ? sub_2530C();
+//extern ? sub_253E0();
+//extern ? sub_25808();
+//extern ? sub_25F64();
+//extern ? sub_260B8();
+//extern ? sub_26778();
+//extern ? sub_26820();
+//extern ? sub_268CC();
+//extern ? sub_269A4();
+//extern ? sub_26A10();
+//extern ? sub_26EA4();
+//extern ? sub_26F38();
+//extern ? sub_27080();
+//extern ? sub_278F4();
+//extern ? sub_27D44();
+//extern ? sub_27E08();
+//extern ? sub_27F94();
+//extern ? sub_28404();
+//extern ? sub_28544();
+//extern ? sub_28AE0();
+//extern ? sub_28BFC();
+//extern ? sub_28C90();
+//extern ? sub_28E2C();
+//extern ? sub_28EA0();
+//extern ? sub_292A0();
+//extern ? sub_29334();
+//extern ? sub_293D8();
+//extern ? sub_29624();
+//extern ? sub_29664();
+//extern ? sub_2971C();
+//extern ? sub_29924();
+//extern ? sub_29A6C();
+//extern ? sub_29D9C();
+//extern ? sub_2A054();
+//extern ? sub_2A354();
+//extern ? sub_2AADC();
+//extern ? sub_2C518();
+//extern ? sub_2C538();
+//extern ? sub_2C9A4();
+//extern ? sub_2CA9C();
+//extern ? sub_2CD98();
+//extern ? sub_2CE80();
+//extern ? sub_2D104();
+//extern ? sub_2D204();
+//extern ? sub_2DE54();
+//extern ? sub_2E094();
+//extern ? sub_2E67C();
+//extern ? sub_2E6AC();
+//extern ? sub_2F140();
+//extern ? sub_2F26C();
+//extern ? sub_2F504();
+//extern ? sub_2F79C();
+//extern ? sub_2FCD0();
+//extern ? sub_300D8();
+//extern ? sub_30178();
+//extern ? sub_30480();
+//extern ? sub_304C8();
+//extern ? sub_308DC();
+//extern ? sub_30EB4();
+//extern ? sub_31144();
+//extern ? sub_313A0();
+//extern ? sub_31498();
+//extern ? sub_31B30();
+//extern ? sub_31BE8();
+//extern ? sub_31CF8();
+//extern ? sub_31F6C();
+
+// asm/rom_3219C.s
+
+//extern ? sub_32484();
+//extern ? sub_325E0();
+//extern ? sub_326F4();
+//extern ? sub_3276C();
+//extern ? sub_327C0();
+//extern ? sub_328C8();
+//extern ? sub_32914();
+//extern ? sub_32968();
+//extern ? sub_329B0();
+//extern ? sub_329F4();
+//extern ? sub_32B74();
+//extern ? sub_32BE4();
+//extern ? sub_32DF8();
+//extern ? sub_32F3C();
+//extern ? sub_33130();
+//extern ? sub_3342C();
+//extern ? sub_336E0();
+//extern ? sub_340EC();
+//extern ? sub_34450();
+//extern ? sub_350F0();
+//extern ? sub_351A8();
+//extern ? sub_356A0();
+//extern ? sub_357B8();
+//extern ? sub_35860();
+//extern ? sub_35AA4();
+//extern ? sub_35D54();
+//extern ? sub_36CB4();
+//extern ? sub_372B4();
+//extern ? sub_3751C();
+//extern ? sub_37850();
+//extern ? sub_38218();
+//extern ? sub_383E4();
+//extern ? sub_3869C();
+//extern ? sub_38A20();
+//extern ? sub_395D8();
+//extern ? sub_39A40();
+//extern ? sub_3A150();
+//extern ? sub_3ADA0();
+//extern ? sub_3AE14();
+//extern ? sub_3B120();
+//extern ? sub_3B49C();
+//extern ? sub_3B7C4();
+//extern ? sub_3C6E0();
+//extern ? sub_3CBC4();
+//extern ? sub_3E5D0();
+//extern ? sub_3E644();
+//extern ? sub_3E79C();
+//extern ? sub_3EB2C();
+//extern ? sub_3EDF0();
+//extern ? sub_3FAE0();
+//extern ? sub_40288();
+//extern ? sub_41580();
+//extern ? sub_417F8();
+//extern ? sub_423D8();
+//extern ? sub_42E48();
+//extern ? sub_43228();
+//extern ? sub_43500();
+//extern ? sub_4387C();
+//extern ? sub_44D58();
+//extern ? sub_44F3C();
+//extern ? sub_45164();
+//extern ? sub_455D0();
+//extern ? sub_45E08();
+//extern ? sub_45E90();
+//extern ? sub_467F4();
+//extern ? sub_46FD4();
+//extern ? sub_47030();
+//extern ? sub_47100();
+//extern ? sub_47110();
+//extern ? sub_47160();
+//extern ? sub_472E4();
+//extern ? sub_47344();
+//extern ? sub_474F4();
+//extern ? sub_47670();
+//extern ? sub_478D8();
+//extern ? sub_47FBC();
+//extern ? sub_47FF8();
+//extern ? sub_48124();
+//extern ? sub_48190();
+//extern ? sub_495A0();
+//extern ? sub_497BC();
+//extern ? sub_49850();
+//extern ? sub_49A34();
+//extern ? PinballGameMain();
+//extern ? sub_49ED4();
+//extern ? sub_4A270();
+//extern ? sub_4A518();
+//extern ? sub_4A6A0();
+//extern ? sub_4A90C();
+//extern ? sub_4AAD8();
+//extern ? sub_4ABC8();
+//extern ? sub_4ABEC();
+//extern ? sub_4ACF0();
+//extern ? sub_4AE8C();
+//extern ? sub_4B000();
+//extern ? sub_4B20C();
+//extern ? nullsub_19();
+//extern ? sub_4B280();
+//extern ? sub_4B334();
+//extern ? sub_4B408();
+//extern ? sub_4B654();
+//extern ? sub_4B678();
+//extern ? sub_4BC34();
+//extern ? sub_4C290();
+//extern ? sub_4C808();
+//extern ? sub_4CA18();
+//extern ? sub_4CAE8();
+//extern ? sub_4CB0C();
+//extern ? sub_4CB30();
+//extern ? sub_4CBB4();
+//extern ? sub_4CC58();
+//extern ? sub_4CD60();
+//extern ? nullsub_18();
+//extern ? sub_4CEA8();
+//extern ? sub_4CEB4();
+//extern ? sub_4D3D0();
+//extern ? sub_4D648();
+//extern ? sub_4D6C4();
+//extern ? sub_4D960();
+//extern ? sub_4DBFC();
+//extern ? sub_4DFA0();
+//extern ? sub_4E2F8();
+//extern ? sub_4E468();
+//extern ? sub_4E598();
+//extern ? sub_4E814();
+//extern ? sub_4E920();
+//extern ? sub_4E9F0();
+//extern ? sub_4EA44();
+//extern ? sub_4EAB0();
+//extern ? sub_4EAF8();
+//extern ? sub_4EBD0();
+//extern ? sub_4ECDC();
+//extern ? sub_4EDC0();
+//extern ? sub_4EE74();
+//extern ? sub_4EF38();
+//extern ? sub_4F028();
+//extern ? sub_4F0F0();
+//extern ? sub_4F258();
+//extern ? sub_4F2B8();
+//extern ? sub_4F30C();
+//extern ? sub_4F4B4();
+//extern ? sub_4F660();
+//extern ? sub_4F814();
+//extern ? sub_4F95C();
+//extern ? sub_4F9F0();
+//extern ? sub_4FAC0();
+//extern ? sub_4FB08();
+//extern ? sub_4FBA4();
+//extern ? sub_4FC7C();
+//extern ? sub_4FD88();
+//extern ? sub_4FE6C();
+//extern ? sub_50000();
+//extern ? sub_500B4();
+//extern ? sub_50154();
+//extern ? sub_5030C();
+//extern ? sub_504C0();
+//extern ? sub_505A4();
+//extern ? sub_506B0();
+//extern ? sub_50710();
+//extern ? sub_507D4();
+//extern ? sub_50848();
+//extern ? sub_50918();
+//extern ? sub_50AD4();
+//extern ? sub_50B80();
+//extern ? sub_50D48();
+//extern ? sub_50DB8();
+//extern ? sub_50DE0();
+//extern ? nullsub_20();
+//extern ? sub_50F04();
+//extern ? sub_50FAC();
+//extern ? sub_50FD4();
+//extern ? sub_51068();
+//extern ? sub_51090();
+//extern ? sub_51128();
+//extern ? sub_51150();
+//extern ? sub_511F8();
+
+// asm/rom_528AC.s
+
+//extern ? sub_528AC();
+//extern ? sub_528DC();
+//extern ? sub_5291C();
+//extern ? sub_52940();
+extern void sub_52A18(void);
+//extern ? sub_52A68();
+//extern ? sub_52B30();
+//extern ? sub_52BB0();
+extern void sub_52C44(void);
+//extern ? sub_52C64();
+
+// asm/rom_9BC.s
+
+extern void sub_13FC(void);
+//extern ? sub_1668();
+//extern ? sub_16A0();
+//extern ? sub_170C();
+//extern ? sub_1748();
+//extern ? sub_17D8();
+extern void sub_1828(void);
+//extern ? sub_1884();
+//extern ? sub_19B4();
+//extern ? sub_19CC();
+//extern ? sub_1A78();
+//extern ? nullsub_15();
+//extern ? sub_1AA4();
+//extern ? sub_1B04();
+//extern ? sub_1C5C();
+//extern ? sub_1C84();
+//extern ? sub_1CD4();
+//extern ? sub_1DB8();
+//extern ? sub_1EC0();
+extern void sub_1F4C(void);
+extern void sub_1F5C(void);
+//extern ? sub_1FEC();
+//extern ? sub_1FFC();
+//extern ? sub_20FC();
+//extern ? sub_223C();
+//extern ? sub_2308();
+//extern ? sub_2338();
+//extern ? sub_2364();
+//extern ? sub_23B4();
+//extern ? sub_2414();
+//extern ? nullsub_16();
+//extern ? sub_24DC();
+//extern ? sub_250C();
+//extern ? sub_2538();
+//extern ? sub_2568();
+
+// asm/start.s
+
+
+// asm/titlescreen.s
+
+//extern ? sub_11640();
+extern void sub_1175C(void);
+extern void sub_11968(void);
+extern void sub_11B74(void);
+
+// asm/unknown_lib_2.s
+
+extern int sub_55A24(u8*); // Rumble Pak?
+
+// asm/unknown_lib.s
+
+//extern ? sub_554F0();
+//extern ? sub_55530();
+//extern ? sub_55570();
+//extern ? sub_555BC();
+//extern ? sub_55654();
+
+#endif // GUARD_FUNCTIONS_H \ No newline at end of file
diff --git a/include/global.h b/include/global.h
index 16b8e51..2a9b072 100755
--- a/include/global.h
+++ b/include/global.h
@@ -4,6 +4,13 @@
#include <string.h>
#include "gba/gba.h"
+#define NUM_SPRITE_GROUPS 100
+#define MAX_SPRITES_IN_GROUP 22
+
+#include "types.h"
+#include "functions.h"
+#include "variables.h"
+
// Prevent cross-jump optimization.
#define BLOCK_CROSS_JUMP asm("");
diff --git a/include/m4a.h b/include/m4a.h
index 1a68f8c..9ab70a6 100755
--- a/include/m4a.h
+++ b/include/m4a.h
@@ -3,6 +3,8 @@
#include "gba/m4a_internal.h"
+// TODO: import m4a library from pokeemerald
+
void m4aSoundVSync(void);
void m4aSoundVSyncOn(void);
diff --git a/include/main.h b/include/main.h
index df03d5d..4b97e5e 100755
--- a/include/main.h
+++ b/include/main.h
@@ -3,40 +3,6 @@
#include "global.h"
-#define NUM_SPRITE_GROUPS 100
-#define MAX_SPRITES_IN_GROUP 22
-
-typedef void (*StateFunc)(void);
-typedef void (*IntrFunc)(void);
-
-struct MainUnk2E8
-{
- u16 unk0;
- u16 unk2;
-};
-
-struct SpriteSet
-{
- u16 count;
- u8 oamData[0];
-};
-
-struct OamDataSimple
-{
- u16 oamId;
- s16 xOffset;
- s16 yOffset;
-};
-
-struct SpriteGroup
-{
- u16 available;
- s16 baseX;
- s16 baseY;
- struct OamDataSimple oam[MAX_SPRITES_IN_GROUP];
-};
-// size: 0xB8
-
struct Main
{
/*0x00*/ u8 filler0[0x2];
@@ -115,18 +81,20 @@ extern StateFunc gMainFuncs[];
extern struct OamData gOamBuffer[128];
extern u16 gUnknown_03005C00[0x600];
-void SetMainGameState(u16);
void sub_24C(void);
void sub_2B4(void);
void sub_490(void);
void sub_518(void);
void sub_578(void);
u32 Random(void);
+void HBlankIntr(void);
+void VCountIntr(void);
+void SerialIntr(void);
+void Timer3Intr(void);
void sub_CBC(void);
void sub_D10(void);
void sub_D74(void);
-void SerialIntr(void);
-void Timer3Intr(void);
-s16 LoadSpriteSets(const struct SpriteSet* const*, u16, struct SpriteGroup*);
+void sub_DC4(void);
+
#endif // GUARD_MAIN_H
diff --git a/include/types.h b/include/types.h
new file mode 100644
index 0000000..af7a749
--- /dev/null
+++ b/include/types.h
@@ -0,0 +1,37 @@
+#ifndef GUARD_TYPES_H
+#define GUARD_TYPES_H
+
+// Place all discovered types (structs, unions, etc.) in this file.
+
+typedef void (*StateFunc)(void);
+typedef void (*IntrFunc)(void);
+
+struct MainUnk2E8
+{
+ u16 unk0;
+ u16 unk2;
+};
+
+struct SpriteSet
+{
+ u16 count;
+ u8 oamData[0];
+};
+
+struct OamDataSimple
+{
+ u16 oamId;
+ s16 xOffset;
+ s16 yOffset;
+};
+
+struct SpriteGroup
+{
+ u16 available;
+ s16 baseX;
+ s16 baseY;
+ struct OamDataSimple oam[MAX_SPRITES_IN_GROUP];
+};
+// size: 0xB8
+
+#endif // GUARD_TYPES_H
diff --git a/include/variables.h b/include/variables.h
new file mode 100644
index 0000000..9990083
--- /dev/null
+++ b/include/variables.h
@@ -0,0 +1,167 @@
+#ifndef GUARD_VARIABLES_H
+#define GUARD_VARIABLES_H
+
+// Place all external variable declarations in this file
+
+extern u8 gUnknown_03000000[];
+//extern ? gOamBuffer;
+//extern ? IntrMain_Buffer;
+//extern ? gUnknown_03005C00;
+//extern ? SoundMainRAM_Buffer;
+extern u16 sGbPlayerCurKeys;
+extern u16 sGbPlayerPrevKeys;
+//extern ? gUnknown_02002008;
+extern u8 gUnknown_02002808[];
+//extern ? gTitlescreen;
+//extern ? gEraseSaveDataAccessStep;
+//extern ? gEraseSaveDataAccessCounter;
+//extern ? gEReaderAccessStep;
+//extern ? gEReaderAccessCounter;
+//extern ? gUnknown_020028A4;
+//extern ? gUnknown_020028A5;
+//extern ? gUnknown_02002958;
+//extern ? gIntrTable;
+//extern ? gMain;
+//extern ? gUnknown_0200B134;
+//extern ? gUnknown_0200B3B8;
+//extern ? gUnknown_0200FB98;
+//extern ? gUnknown_0200FB9C;
+//extern ? gUnknown_0200FBA0;
+//extern ? gUnknown_02017BD0;
+//extern ? gUnknown_02017BD4;
+//extern ? gUnknown_02017BE0;
+//extern ? gUnknown_02019BE0;
+//extern ? gUnknown_02019BE4;
+//extern ? gUnknown_02019BE8;
+//extern ? gUnknown_02019BEC;
+//extern ? gUnknown_02019BF0;
+//extern ? gUnknown_02019BF4;
+//extern ? gUnknown_02019BF8;
+//extern ? gUnknown_02019BFC;
+//extern ? gUnknown_02019C00;
+//extern ? gUnknown_02019C04;
+//extern ? gUnknown_02019C08;
+//extern ? gGameBoyPlayerEnabled;
+//extern ? gUnknown_02019C10;
+//extern ? gAutoDisplayTitlescreenMenu;
+//extern ? gUnknown_0201C190;
+//extern ? gUnknown_0202BE00;
+//extern ? gUnknown_202BE24;
+//extern ? gUnknown_0202C588;
+//extern ? gUnknown_020314E0;
+//extern ? gUnknown_02031520;
+//extern ? gSoundInfo;
+//extern ? gPokemonCryMusicPlayers;
+//extern ? gMPlayJumpTable;
+//extern ? gCgbChans;
+//extern ? gPokemonCryTracks;
+//extern ? gPokemonCrySong;
+//extern ? gMPlayInfo_02032EE0;
+//extern ? gMPlayMemAccArea;
+extern const u16 gWildMonLocations[][2][8];
+extern const s16 gUnknown_08055C44[];
+extern const struct OamData gEmptyOamData[128];
+extern const u8 gUnknown_08058048[];
+extern const u8 gUnknown_08058248[];
+extern const u8 gUnknown_0805C248[];
+extern StateFunc gTitlescreenStateFuncs[];
+//extern ? gIntroCopyright_Gfx;
+//extern ? gIntroCopyright_Pal;
+//extern ? gIntroScene1Sprites_Pals;
+//extern ? gIntroScene1Sprites_Gfx;
+extern const u8 gGBAButtonIcons_Pals[];
+extern const u8 gOptionsSprites_Gfx[];
+extern const IntrFunc gIntrTableTemplate[14];
+//extern ? gMainFuncs;
+//extern ? gUnknown_086A4B08;
+//extern ? gUnknown_086A4B14;
+//extern ? gUnknown_086A4B20;
+//extern ? gUnknown_086A4B30;
+//extern ? gUnknown_086A4B40;
+//extern ? gUnknown_086A4B54;
+//extern ? gUnknown_086A4B70;
+//extern ? gUnknown_086A4B80;
+//extern ? gUnknown_086A4B94;
+//extern ? gUnknown_086A4BAC;
+//extern ? gUnknown_086A4BC8;
+//extern ? gUnknown_086A4BE8;
+//extern ? gUnknown_086A4BFC;
+//extern ? gUnknown_086A4C18;
+//extern ? gUnknown_086A4C2C;
+extern const int *gUnknown_086A4C44[];
+extern const s16 gUnknown_086A964C[];
+extern const s8 gUnknown_086A9662[];
+extern const s8 gUnknown_086A9666[6][2];
+extern const s8 gUnknown_086A9672[9][2];
+extern const u16 gUnknown_086A96A4[];
+extern const u16 gUnknown_086A96D4[];
+extern const struct SpriteSet *const gUnknown_086A96E4[];
+extern const u8 *const gUnknown_086A96F8[7];
+extern const u8 *const gUnknown_086A9714[];
+extern const s8 gUnknown_086A9748[];
+extern const u8 *const gUnknown_086A975C[7];
+extern const u8 *const gUnknown_086A9778[];
+extern const s16 gEReaderAccessButtonSequence[];
+//extern ? gMonHatchSpriteGroupPals;
+//extern ? gMonPortraitGroupPals;
+//extern ? gMonHatchSpriteGroupGfx;
+//extern ? gMonPortraitGroupGfx;
+//extern ? gMonHatchSpriteGroup0_Gfx;
+//extern ? gMonHatchSpriteGroup1_Gfx;
+//extern ? gMonHatchSpriteGroup2_Gfx;
+//extern ? gMonHatchSpriteGroup3_Gfx;
+//extern ? gMonHatchSpriteGroup4_Gfx;
+//extern ? gMonHatchSpriteGroup5_Gfx;
+//extern ? gFieldSelectWindow_Gfx;
+//extern ? gUnknown_080A4000;
+//extern ? gFieldSelectFrameShadowTilemap;
+//extern ? gFieldSelectMiniFields_Gfx;
+//extern ? gUnknown_080A8020;
+//extern ? gFieldSelectWindowTilemap;
+//extern ? gFieldSelectBGPals;
+//extern ? gFieldSelectSpritePals;
+//extern ? gFieldSelectSpriteGfx;
+extern const u8 gTitlescreenBgTilemap[];
+extern const u16 gTitlescreenBg_Pals[];
+extern const u8 gTitlescreenBg_Gfx[];
+extern const u8 gTitlescreenSpritesNoSavedGame_Gfx[];
+//extern ? gUnknown_081306C0;
+extern const u8 gTitlescreenSpritesSavedGame_Gfx[];
+//extern ? gUnknown_081376E0;
+extern const u16 gTitlescreenSprites_Pals[];
+//extern ? gMonHatchSpriteGroup0_Pals;
+//extern ? gMonHatchSpriteGroup1_Pals;
+//extern ? gMonHatchSpriteGroup2_Pals;
+//extern ? gMonHatchSpriteGroup3_Pals;
+//extern ? gMonHatchSpriteGroup4_Pals;
+//extern ? gMonHatchSpriteGroup5_Pals;
+//extern ? gMonPortraitsGroup0_Gfx;
+//extern ? gMonPortraitsGroup1_Gfx;
+//extern ? gMonPortraitsGroup2_Gfx;
+//extern ? gMonPortraitsGroup3_Gfx;
+//extern ? gMonPortraitsGroup4_Gfx;
+//extern ? gMonPortraitsGroup5_Gfx;
+//extern ? gMonPortraitsGroup6_Gfx;
+//extern ? gMonPortraitsGroup7_Gfx;
+//extern ? gMonPortraitsGroup8_Gfx;
+//extern ? gMonPortraitsGroup9_Gfx;
+//extern ? gMonPortraitsGroup10_Gfx;
+//extern ? gMonPortraitsGroup11_Gfx;
+//extern ? gMonPortraitsGroup12_Gfx;
+//extern ? gMonPortraitsGroup13_Gfx;
+//extern ? gMonPortraitsGroup0_Pals;
+//extern ? gMonPortraitsGroup1_Pals;
+//extern ? gMonPortraitsGroup2_Pals;
+//extern ? gMonPortraitsGroup3_Pals;
+//extern ? gMonPortraitsGroup4_Pals;
+//extern ? gMonPortraitsGroup5_Pals;
+//extern ? gMonPortraitsGroup6_Pals;
+//extern ? gMonPortraitsGroup7_Pals;
+//extern ? gMonPortraitsGroup8_Pals;
+//extern ? gMonPortraitsGroup9_Pals;
+//extern ? gMonPortraitsGroup10_Pals;
+//extern ? gMonPortraitsGroup11_Pals;
+//extern ? gMonPortraitsGroup12_Pals;
+//extern ? gMonPortraitsGroup13_Pals;
+
+#endif // GUARD_VARIABLES_H \ No newline at end of file
diff --git a/src/gbplayer.c b/src/gbplayer.c
index 5e4ad19..00d30d5 100755
--- a/src/gbplayer.c
+++ b/src/gbplayer.c
@@ -2,18 +2,6 @@
#include "gbplayer.h"
#include "main.h"
-extern void sub_1340(void);
-extern void sub_13FC(void);
-extern void sub_1828(void);
-extern u8 gUnknown_02002808[];
-extern u16 sGbPlayerCurKeys;
-extern u16 sGbPlayerPrevKeys;
-extern const u8 gUnknown_08058048[];
-extern const u8 gUnknown_08058248[];
-extern const u8 gUnknown_0805C248[];
-
-extern const int *gUnknown_086A4C44[];
-
/*static*/ void ReadGbPlayerKeys(void)
{
u16 keyInput = REG_KEYINPUT ^ KEYS_MASK;
diff --git a/src/main.c b/src/main.c
index 62b6b14..de8d269 100755
--- a/src/main.c
+++ b/src/main.c
@@ -3,23 +3,11 @@
#include "gbplayer.h"
#include "m4a.h"
-extern void sub_438(void);
-extern void sub_8BC(void);
-extern void sub_8FC(void);
-extern void sub_940(void);
-extern void sub_1F4C(void);
-extern void sub_1F5C(void);
-extern void sub_1090C(void);
-extern void sub_52A18(void);
-
static void sub_B54(void);
static void sub_B8C(void);
static void InitIntrHandlers(void);
static void ReadKeys(void);
-extern const IntrFunc gIntrTableTemplate[14];
-extern const s16 gUnknown_08055C44[];
-
void AgbMain(void)
{
RegisterRamReset(0xFF);
diff --git a/src/rom_850.c b/src/rom_850.c
index 97fed1f..56a4914 100755
--- a/src/rom_850.c
+++ b/src/rom_850.c
@@ -1,16 +1,6 @@
#include "global.h"
#include "main.h"
-extern IntrFunc *gUnknown_0200FB98;
-extern IntrFunc *gUnknown_02019BE0;
-extern void (*gUnknown_0200FB9C)(void);
-extern void (*gUnknown_0200FBA0)(void);
-extern void (*gUnknown_02017BD0)(void);
-extern void (*gUnknown_02017BD4)(void);
-extern void HBlankIntr(void);
-extern void VCountIntr(void);
-extern void sub_DC4(void);
-
u16 sub_850(void)
{
if (REG_IME & INTR_FLAG_VBLANK
diff --git a/src/titlescreen.c b/src/titlescreen.c
index 315c3e6..d7dd98b 100755
--- a/src/titlescreen.c
+++ b/src/titlescreen.c
@@ -3,48 +3,9 @@
#include "m4a.h"
#include "main.h"
-extern u8 gUnknown_03000000[];
-
-
-extern StateFunc gTitlescreenStateFuncs[];
-extern const u8 gTitlescreenBg_Gfx[];
-extern const u16 gTitlescreenBg_Pals[];
-extern const u8 gTitlescreenBgTilemap[];
-extern const u16 gTitlescreenSprites_Pals[];
-extern const u8 gTitlescreenSpritesSavedGame_Gfx[];
-extern const u8 gTitlescreenSpritesNoSavedGame_Gfx[];
-extern const u8 gGBAButtonIcons_Pals[];
-extern const u8 gOptionsSprites_Gfx[];
-extern const u8 *const gUnknown_086A975C[7];
-extern const u8 *const gUnknown_086A96F8[7];
-extern const s16 gUnknown_086A964C[];
-extern const s8 gUnknown_086A9662[];
-extern const s8 gUnknown_086A9666[6][2];
-extern const s8 gUnknown_086A9748[];
-extern const u8 *const gUnknown_086A9714[];
-extern const u8 *const gUnknown_086A9778[];
-extern const s8 gUnknown_086A9672[9][2];
-extern const u16 gUnknown_086A96A4[];
-extern const u16 gUnknown_086A96D4[];
-extern const s16 gEReaderAccessButtonSequence[];
-extern const struct SpriteSet *const gUnknown_086A96E4[];
-
-extern void sub_438(void);
-extern void sub_CBC(void);
-extern void sub_D10(void);
-extern void sub_FE04(void (*func)(void));
-extern void sub_FD5C(void (*func)(void));
-extern void sub_10708(void*, void*, u16, s16);
-extern void sub_52C44(void);
-
-extern void sub_10AC0(void);
-extern void sub_1175C(void);
-extern void sub_11968(void);
-extern void sub_11B74(void);
-
static void sub_114FC(void);
static void sub_1157C(void);
-extern void sub_11640(void);
+/*static*/ extern void sub_11640(void);
// If the user doesn't press any buttons at the title screen,
// it will transition to a demo gameplay experience.
diff --git a/src/util.c b/src/util.c
index b1af27b..f0d0b05 100755
--- a/src/util.c
+++ b/src/util.c
@@ -1,9 +1,6 @@
#include "global.h"
#include "main.h"
-extern const struct OamData gEmptyOamData[128];
-extern int sub_55A24(u8*); // Rumble Pak?
-
static u8 *sub_734(u32, u8*, u32);
static int sub_780(int, int);