pmd-red/src/code_2.c
2023-08-26 13:56:46 -04:00

211 lines
5.7 KiB
C

#include "global.h"
#include "bg.h"
#include "constants/bg_music.h"
#include "debug.h"
#include "file_system.h"
#include "friend_area.h"
#include "input.h"
#include "memory.h"
#include "main_menu.h"
#include "moves.h"
#include "music.h"
#include "play_time.h"
#include "save.h"
#include "game_options.h"
#include "text1.h"
#include "text2.h"
#include "exclusive_pokemon.h"
#include "pokemon.h"
#include "rescue_team_info.h"
#include "cpu.h"
#include "code_8094F88.h"
#include "sprite.h"
#include "code_80118A4.h"
extern void NDS_LoadOverlay_GroundMain(void);
extern void sub_8014144(void);
extern void sub_8097670(void);
extern void LoadGameOptions(void);
extern void SetWindowBGColor(void);
extern void LoadItemParameters(void);
extern void LoadMailInfo(void);
extern void sub_800CD64(u32, u32);
extern void sub_800DAAC(void);
extern void sub_800135C(void);
extern void xxx_script_related_8001334(u32);
extern void sub_80015C0(u32, u32);
extern u32 sub_8001658(u32, u32);
extern void sub_800A8F8(u32);
extern void sub_80097B0(void);
extern void LoadTitleScreen(void);
extern void SetBGPaletteBufferColorRGB(s32, u8 *, s32, u8 *);
extern void sub_80095CC(u32, u32);
extern s32 GetFirstIndexofMailType(u8);
extern void nullsub_33(void);
extern u32 sub_80009D0(u32);
extern void xxx_draw_string_80144C4(void);
extern void sub_8005838(u32, u32);
extern void nullsub_8(u32);
extern void sub_80060EC(void);
extern void sub_800CB20(void);
extern void TransferBGPaletteBuffer(void);
extern void xxx_call_update_bg_vram(void);
extern void sub_8009908(void);
extern void xxx_call_update_bg_sound_input(void);
extern u32 gUnknown_203B03C;
extern u16 gUnknown_2026E4E;
extern s32 gUnknown_2000A80;
extern struct OpenedFile *gTitlePaletteFile;
extern struct GameOptions *gGameOptionsRef;
extern char gPMDBuildVersion[];
void xxx_update_stuff(u32);
void GameLoop(void)
{
u32 tmp;
u8 tmp3 = 1;
u32 nextMenu;
u32 flag;
InitHeap();
NDS_DebugInit();
sub_801180C();
NDS_LoadOverlay_GroundMain();
sub_8014144();
LoadMonsterParameters();
sub_8097670();
InitializePlayTime();
LoadGameOptions();
SetWindowBGColor();
LoadExclusivePokemon();
LoadFriendAreas();
LoadItemParameters();
LoadRescueTeamInfo();
LoadWazaParameters();
sub_80950BC();
LoadMailInfo();
sub_800CD64(0x8000, 0);
sub_8012284();
InitializeGameOptions(TRUE);
SetWindowTitle(gPMDBuildVersion);
sub_800DAAC();
SetSavingIconCoords(NULL);
tmp = 0;
if (ReadSaveFromPak(&tmp))
sub_800135C();
xxx_script_related_8001334(14);
xxx_script_related_8001334(15);
sub_80015C0(0, 57);
xxx_script_related_8001334(16);
if (sub_8001658(0, 57) == 0)
xxx_script_related_8001334(17);
while (1) {
gUnknown_203B03C = 0; // ???
sub_800A8F8(2);
ResetSprites(TRUE);
xxx_update_some_bg_tiles(0);
sub_80097B0();
sub_800CDA8(2);
sub_800641C(0, 1, 1);
gUnknown_2026E4E = 0x1000;
LoadTitleScreen();
SetBG2RegOffsets(0, 0);
SetBG3RegOffsets(0, 0);
gUnknown_2000A80 = 0;
while (gUnknown_2000A80 < 32) {
s32 i;
gUnknown_2000A80++;
for (i = 0; i < 240; i++)
SetBGPaletteBufferColorRGB(i, &gTitlePaletteFile->data[i * 4], gUnknown_2000A80, 0);
xxx_update_stuff(0);
}
if (tmp3) {
PrepareSavePakRead();
while ((tmp3 = ReadSavePak()))
xxx_update_stuff(0);
FinishReadSavePak();
}
tmp3 = 1;
StartNewBGM(MUS_FILE_SELECT);
flag = TRUE;
sub_80095CC(0, 20);
InitMainMenu();
while (1) {
if (sub_80363E0()) {
if (gRealInputs.pressed & L_BUTTON) {
flag = FALSE;
SetBGOBJEnableFlags(19);
} else if (!flag && (gRealInputs.held & L_BUTTON) == 0) {
flag = TRUE;
SetBGOBJEnableFlags(0);
}
if (!flag) {
xxx_update_stuff(0);
continue;
}
}
SetUpMenu();
xxx_update_stuff(0);
nextMenu = UpdateMenu();
CleanUpMenu();
if (nextMenu == 2) break;
if (nextMenu == 4) break;
if (nextMenu == MENU_NEW_GAME) break;
}
DeleteMainMenu();
while (gUnknown_2000A80 > 0) {
s32 i;
gUnknown_2000A80--;
for (i = 0; i < 240; i++)
SetBGPaletteBufferColorRGB(i, &gTitlePaletteFile->data[i * 4], gUnknown_2000A80, 0);
xxx_update_stuff(0);
}
CloseFile(gTitlePaletteFile);
switch (nextMenu) {
case 2: {
s32 mailIndex = GetFirstIndexofMailType(7);
if (mailIndex != -1) {
DeleteMailAtIndex(mailIndex);
tmp3 = sub_80009D0(2);
} else {
tmp3 = sub_80009D0(1);
}
break;
}
case 4:
tmp3 = sub_80009D0(3);
break;
case MENU_NEW_GAME:
sub_80122A8();
nullsub_33();
tmp3 = sub_80009D0(0);
break;
}
}
}
void xxx_update_stuff(u32 r0)
{
xxx_draw_string_80144C4();
sub_8005838(0, 0);
nullsub_8(gGameOptionsRef->unkA);
sub_8005180();
sub_80060EC();
sub_8011860();
sub_800CB20();
LoadBufferedInputs();
CopySpritesToOam();
sub_8005304();
TransferBGPaletteBuffer();
xxx_call_update_bg_vram();
sub_8009908();
xxx_call_update_bg_sound_input();
ResetSprites(FALSE);
}