pmd-red/src/play_time.c
Dennis 26e5708818
More pokemon related decomp (#48)
* add struct names

* decompile SaveRecruitedPokemon

* decompile ReadRecruitedPokemon

* decomp anotha one

* some renaming

* another save function

* more backup functions

* sub_808E400

* only one function left in pokemon_2.s

* decomp one more function

* merge 2 structs
2021-08-01 12:09:13 -07:00

93 lines
1.9 KiB
C

#include "global.h"
#include "play_time.h"
#include "code_8092334.h"
extern struct PlayTimeStruct *gPlayTimeRef;
EWRAM_DATA struct PlayTimeStruct gPlayTime;
void InitializePlayTime(void)
{
gPlayTimeRef = &gPlayTime;
ResetPlayTime(&gPlayTime);
}
struct PlayTimeStruct *GetPlayTime(void)
{
return &gPlayTime;
}
void ResetPlayTime(struct PlayTimeStruct *Time)
{
Time->frames = 0;
Time->seconds = 0;
Time->minutes = 0;
Time->hours = 0;
}
void IncrementPlayTime(struct PlayTimeStruct *Time)
{
u16 temp_store16;
Time->frames++;
if(Time->frames <= 59)
return;
Time->frames = 0;
Time->seconds++;
if(Time->seconds <= 59)
return;
Time->seconds = 0;
Time->minutes++;
if(Time->minutes <= 59)
return;
Time->minutes = 0;
// Casting here for unsigned comparison
temp_store16 = Time->hours;
if(Time->hours <= 9998)
{
temp_store16++;
Time->hours = temp_store16;
}
else
{
Time->seconds = 59;
Time->minutes = 59;
Time->hours= 9999;
}
}
void DeconstructPlayTime(struct PlayTimeStruct *r0, u32 *outHours, u32 *outMinutes, u32 *outSeconds)
{
if(r0->hours <= 9999)
{
*outHours = r0->hours;
*outMinutes = r0->minutes;
*outSeconds = r0->seconds;
}
else
{
*outHours = 9999;
*outMinutes = 59;
*outSeconds = 59;
}
}
void WritePlayTime(struct unkStruct_8094924 *r0)
{
SaveIntegerBits(r0, &gPlayTimeRef->frames, 6);
SaveIntegerBits(r0, &gPlayTimeRef->seconds, 6);
SaveIntegerBits(r0, &gPlayTimeRef->minutes, 6);
SaveIntegerBits(r0, &gPlayTimeRef->hours, 14);
}
void ReadPlayTime(struct unkStruct_8094924 *r0)
{
RestoreIntegerBits(r0, &gPlayTimeRef->frames, 6);
RestoreIntegerBits(r0, &gPlayTimeRef->seconds, 6);
RestoreIntegerBits(r0, &gPlayTimeRef->minutes, 6);
RestoreIntegerBits(r0, &gPlayTimeRef->hours, 14);
}