summaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2018-10-22 18:51:13 -0500
committerMarcus Huderle <huderlem@gmail.com>2018-10-22 18:51:13 -0500
commit0d8c76cf7a6d3e44d128e17c800c4e97d8b73ee0 (patch)
tree1f70dbd05708a8ce2506b8a784dd1a00b6c0f5c3 /src/main.c
parentd943da35b4907748b89e281571dda91fd8dedb8f (diff)
Decompile sub_A20
Diffstat (limited to 'src/main.c')
-rwxr-xr-xsrc/main.c87
1 files changed, 87 insertions, 0 deletions
diff --git a/src/main.c b/src/main.c
index 230f9ff..e178233 100755
--- a/src/main.c
+++ b/src/main.c
@@ -1,8 +1,11 @@
#include "global.h"
+#include "m4a.h"
#include "main.h"
extern void sub_B54(void);
extern void sub_BBC(void);
+extern void sub_CBC(void);
+extern void sub_D10(void);
extern void sub_D74(void);
extern void sub_FE8(void);
extern void ReadKeys(void);
@@ -24,3 +27,87 @@ void AgbMain(void)
sub_D74();
}
}
+
+void sub_9BC_Main(void)
+{
+ switch (gMain.subState)
+ {
+ case 0:
+ sub_CBC();
+ sub_24C();
+ gMain.subState++;
+ break;
+ case 1:
+ if (gMain.newKeys & KEYS_MASK)
+ gMain.subState = 2;
+ break;
+ default:
+ sub_2B4();
+ sub_D10();
+ SetMainGameState(1);
+ break;
+ }
+}
+
+void sub_A08(void)
+{
+ m4aSoundVSync();
+ INTR_CHECK |= INTR_FLAG_VBLANK;
+}
+
+void sub_A20(void)
+{
+ INTR_CHECK |= INTR_FLAG_VCOUNT;
+ while (!(REG_DISPSTAT & DISPSTAT_HBLANK));
+ if (gMain.mainState == 2)
+ {
+ REG_BG0HOFS = 0;
+ if (gMain.unk28)
+ {
+ if (gMain.vCount == 72)
+ {
+ REG_BG0VOFS = gMain.unk2A * 4 + 88;
+ gMain.vCount = 144;
+ REG_DISPSTAT &= 0xFF;
+ REG_DISPSTAT |= (gMain.vCount << 8) + DISPSTAT_VCOUNT_INTR;
+ }
+ else
+ {
+ REG_BG0VOFS = 352;
+ gMain.vCount = 72;
+ REG_DISPSTAT &= 0xFF;
+ REG_DISPSTAT |= (gMain.vCount << 8) + DISPSTAT_VCOUNT_INTR;
+ }
+ }
+ else if (gMain.unk2C)
+ {
+ if (gMain.vCount == 40)
+ {
+ gMain.blendControl = BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3
+ | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG0;
+ gMain.blendAlpha = 0xA06;
+ REG_BLDCNT = gMain.blendControl;
+ REG_BLDALPHA = gMain.blendAlpha;
+ gMain.vCount = 144;
+ REG_DISPSTAT &= 0xFF;
+ REG_DISPSTAT |= (gMain.vCount << 8) + DISPSTAT_VCOUNT_INTR;
+ }
+ else
+ {
+ gMain.blendControl = BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3
+ | BLDCNT_EFFECT_NONE | BLDCNT_TGT1_BG0;
+ gMain.blendAlpha = 0;
+ REG_BLDCNT = gMain.blendControl;
+ REG_BLDALPHA = gMain.blendAlpha;
+ REG_BG0VOFS = 352;
+ gMain.vCount = 40;
+ REG_DISPSTAT &= 0xFF;
+ REG_DISPSTAT |= (gMain.vCount << 8) + DISPSTAT_VCOUNT_INTR;
+ }
+ }
+ else
+ {
+ REG_BG0VOFS = 352;
+ }
+ }
+}