diff options
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..212822e --- /dev/null +++ b/src/main.c @@ -0,0 +1,108 @@ +#include "global.h" + +extern char ewram_start[]; + +extern u16 gUnknown_202D7FC; +extern u8 gUnknown_202D7FE; + +extern char alt_203B038[]; + +extern char gUnknown_203B038[]; +extern char gUnknown_203BC04[]; + +extern char iwram_start[]; + +extern char alt_3001B58[]; + +extern char unk_code_ram[]; +extern char unk_code_ram_end[]; + +extern u8 gUnknown_80B9BF1[]; + +extern char gUnknown_8270000[]; + +extern char unk_code[]; + +extern void sub_800CDA8(int); +extern void sub_800B540(void); +extern void sub_800CF0C(void); +extern void SeedRng(u8 *); +extern void sub_8004D78(void); +extern void nullsub_9(void); +extern void nullsub_6(void); +extern void sub_80047E8(void); +extern void InitBGPaletteBuffer(void); +extern void sub_80057E8(void); +extern void sub_800A8C4(void); +extern void sub_8006218(void); +extern void sub_80098A0(void); +extern void sub_80096E0(void); +extern void sub_800B6F4(int, void *); +extern void GameLoop(void); +extern void Hang(void); +extern void sub_800CE54(void); + +void AgbMain(void) +{ + u8 value[4]; + u8 seed[6]; + + REG_WAITCNT = WAITCNT_PREFETCH_ENABLE | WAITCNT_WS0_S_1 | WAITCNT_WS0_N_3; + + DmaStop(0); + DmaStop(1); + DmaStop(2); + DmaStop(3); + + if (gUnknown_203BC04 - gUnknown_203B038 > 0) + CpuCopy32(gUnknown_8270000, gUnknown_203B038, gUnknown_203BC04 - gUnknown_203B038); + + if (alt_203B038 - ewram_start > 0) + { + memset(value, 0, 4); + CpuSet(&value, ewram_start, CPU_SET_SRC_FIXED | CPU_SET_32BIT | (((alt_203B038 - ewram_start) / 4) & 0x1FFFFF)); + } + + if (unk_code_ram_end - unk_code_ram > 0) + CpuCopy32(unk_code, unk_code_ram, unk_code_ram_end - unk_code_ram); + + if (alt_3001B58 - iwram_start > 0) + { + memset(value, 0, 4); + CpuSet(&value, iwram_start, CPU_SET_SRC_FIXED | CPU_SET_32BIT | (((alt_3001B58 - iwram_start) / 4) & 0x1FFFFF)); + } + + REG_WIN0H = 0; + REG_WIN1H = 0; + REG_WIN0V = 0; + REG_WIN1V = 0; + REG_WININ = 16191; + REG_WINOUT = 61; + gUnknown_202D7FC = REG_BLDCNT = 15426; + REG_BLDALPHA = 1546; + gUnknown_202D7FE = 0; + REG_BG0CNT = 11264; + REG_BG1CNT = 11521; + REG_BG2CNT = 11786; + REG_BG3CNT = 12043; + REG_DISPCNT = 32704; + sub_800CDA8(1); + sub_800B540(); + sub_800CF0C(); + memcpy(seed, gUnknown_80B9BF1, 6); + SeedRng(seed); + sub_8004D78(); + nullsub_9(); + nullsub_6(); + sub_80047E8(); + InitBGPaletteBuffer(); + sub_80057E8(); + sub_800A8C4(); + sub_8006218(); + sub_80098A0(); + sub_80096E0(); + sub_800B6F4(1, sub_800CE54); + REG_DISPCNT = 32576; + GameLoop(); + Hang(); +} |