diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/main.c | 87 | ||||
-rwxr-xr-x | src/util.c | 6 |
2 files changed, 90 insertions, 3 deletions
@@ -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; + } + } +} @@ -108,12 +108,12 @@ void sub_438(void) gMain.unk11 = 0; gMain.unk12 = 0; gMain.unk14 = 0; - gMain.unk26 = 0x90; + gMain.vCount = 144; gMain.unk28 = 0; gMain.unk2A = 0; gMain.unk36 = 0; - gMain.unk38 = 0; - gMain.unk3A = 0; + gMain.blendControl = 0; + gMain.blendAlpha = 0; gMain.unk3C = 0; gMain.unk2C = 0; } |