mirror of https://github.com/zeldaret/tmc.git
78 lines
2.1 KiB
C
78 lines
2.1 KiB
C
#include "global.h"
|
|
#include "save.h"
|
|
#include "common.h"
|
|
|
|
extern u16 gMetatilesBottom[];
|
|
extern u16 gMetatilesTop[];
|
|
extern u8 gMapData;
|
|
|
|
extern const u8 gUnk_020176E0[];
|
|
|
|
void sub_0807C960(void* dest, u32 offset) {
|
|
void* src;
|
|
|
|
if (offset != -1) {
|
|
src = &gMapData + (offset & 0x7fffffff);
|
|
if ((u32)dest >> 0x18 == 6) {
|
|
LZ77UnCompVram(src, (void*)dest);
|
|
} else {
|
|
LZ77UnCompWram(src, (void*)dest);
|
|
}
|
|
}
|
|
}
|
|
|
|
void sub_0807C998(u32* a1) {
|
|
sub_0807C960(gMetatilesBottom, a1[0]);
|
|
sub_0807C960(gMetatilesBottom - 0x1000, a1[1]);
|
|
sub_0807C960(gMetatilesTop, a1[2]);
|
|
sub_0807C960(gMetatilesTop - 0x1000, a1[3]);
|
|
}
|
|
|
|
void sub_0807C9D8(u32* a1) {
|
|
u32* v1; // r5@1
|
|
|
|
v1 = a1;
|
|
sub_0807C960((u8*)0x6004000, *a1);
|
|
sub_0807C960((u8*)0x6000000, v1[1]);
|
|
sub_0807C960((u8*)0x6008000, v1[2]);
|
|
sub_0807C960((u8*)gUnk_020176E0, v1[3]);
|
|
LoadPalettes(gUnk_020176E0, 2, 13);
|
|
}
|
|
|
|
u32 FinalizeSave(void) {
|
|
if (gSave.invalid || gSave.initialized != 1) {
|
|
gSave.invalid = 0;
|
|
gSave.initialized = 1;
|
|
gSave.global_progress = 1;
|
|
gSave.stats.health = 24;
|
|
gSave.stats.maxHealth = 24;
|
|
gSave.saved_status.area_next = 0x22;
|
|
gSave.saved_status.room_next = 0x15; // links room
|
|
gSave.saved_status.start_anim = 0;
|
|
gSave.saved_status.spawn_type = PL_SPAWN_DEFAULT;
|
|
gSave.saved_status.layer = 1;
|
|
gSave.saved_status.start_pos_x = 0x90;
|
|
gSave.saved_status.start_pos_y = 0x38;
|
|
}
|
|
if (gSave.name[0] == '\0') {
|
|
MemCopy(gUnk_0811E470, &gSave.name, FILENAME_LENGTH - 1);
|
|
}
|
|
#ifdef DEMO_USA
|
|
{
|
|
const u8* tmp;
|
|
MemCopy(demoPointers[gSaveHeader->saveFileId], &gSave, 0x4B4);
|
|
if (gSaveHeader->language == 0) {
|
|
gSave.name[0] = 0x97;
|
|
gSave.name[1] = 0x7F;
|
|
gSave.name[2] = 0xDD;
|
|
gSave.name[3] = 0;
|
|
}
|
|
ModHealth(0xA0);
|
|
ModRupees(-9999);
|
|
tmp = demoUnknown1 + gUnk_02000010.field_0x7 * 3;
|
|
gSave.demo_timer = tmp[gSaveHeader->saveFileId] * 3600;
|
|
}
|
|
#endif
|
|
return 1;
|
|
}
|