Fix a few bugs

This commit is contained in:
Miloslav Číž 2020-10-23 19:11:50 +02:00
parent 6437ebfe85
commit cbfacc49e8
5 changed files with 21 additions and 13 deletions

View File

@ -131,9 +131,6 @@ level ideas:
bugs: bugs:
- At the beginning "FPS cant be reached" is always displayed.
- Even if music is off, after turning on a few samples are played (also on
Pokitto).
- On Pokitto/GB Meta sometimes after turn on the game starts midway loading the - On Pokitto/GB Meta sometimes after turn on the game starts midway loading the
first level. first level.
@ -216,6 +213,9 @@ done:
near door. If this can't be prevented completely, automatically unstuck the near door. If this can't be prevented completely, automatically unstuck the
player into a playable area. player into a playable area.
- Try to recolor textures and give them a bit more of variety. - Try to recolor textures and give them a bit more of variety.
- Even if music is off, after turning on a few samples are played (also on
Pokitto).
- At the beginning "FPS cant be reached" is always displayed.
scratched: scratched:
- option for disabling wall transparency, for performance? - option for disabling wall transparency, for performance?

4
game.h
View File

@ -4796,6 +4796,8 @@ uint8_t SFG_mainLoopBody()
{ {
uint8_t steps = 0; uint8_t steps = 0;
uint8_t wasFirstFrame = SFG_game.frame == 0;
while (timeSinceLastFrame >= SFG_MS_PER_FRAME) while (timeSinceLastFrame >= SFG_MS_PER_FRAME)
{ {
uint8_t previousWeapon = SFG_player.weapon; uint8_t previousWeapon = SFG_player.weapon;
@ -4813,7 +4815,7 @@ uint8_t SFG_mainLoopBody()
steps++; steps++;
} }
if ((steps > 1) && (SFG_game.antiSpam == 0)) if ((steps > 1) && (SFG_game.antiSpam == 0) && (!wasFirstFrame))
{ {
SFG_LOG("failed to reach target FPS! consider setting a lower value") SFG_LOG("failed to reach target FPS! consider setting a lower value")
SFG_game.antiSpam = 30; SFG_game.antiSpam = 30;

View File

@ -24,6 +24,7 @@
#define SFG_FPS 22 #define SFG_FPS 22
#define SFG_CAN_EXIT 0 #define SFG_CAN_EXIT 0
#define SFG_PLAYER_TURN_SPEED 135
//#define SFG_TEXTURE_DISTANCE 6000 //#define SFG_TEXTURE_DISTANCE 6000
#ifndef JOYHAT #ifndef JOYHAT
@ -104,11 +105,17 @@ void SFG_getMouseOffset(int16_t *x, int16_t *y)
uint8_t audioBuff[SFG_SFX_SAMPLE_COUNT]; uint8_t audioBuff[SFG_SFX_SAMPLE_COUNT];
uint16_t audioPos = 0; uint16_t audioPos = 0;
uint8_t musicOn = 1; uint8_t musicOn = 0;
void SFG_enableMusic(uint8_t enable) void SFG_setMusic(uint8_t value)
{ {
musicOn = enable; switch (value)
{
case SFG_MUSIC_TURN_ON: musicOn = 1; break;
case SFG_MUSIC_TURN_OFF: musicOn = 0; break;
case SFG_MUSIC_NEXT: SFG_nextMusicTrack(); break;
defaule: break;
}
} }
static inline uint8_t mixSamples(uint8_t sample1, uint8_t sample2) static inline uint8_t mixSamples(uint8_t sample1, uint8_t sample2)
@ -217,12 +224,8 @@ int main()
SFG_init(); SFG_init();
while (pokitto.isRunning()) while (pokitto.isRunning())
{
if (pokitto.update()) if (pokitto.update())
{
SFG_mainLoopBody(); SFG_mainLoopBody();
}
}
return 0; return 0;
} }

View File

@ -305,7 +305,8 @@ static inline int16_t mixSamples(int16_t sample1, int16_t sample2)
return sample1 + sample2; return sample1 + sample2;
} }
uint8_t musicOn = 1; uint8_t musicOn = 0;
// ^ this has to be init to 0 (not 1), else a few samples get played at start
void audioFillCallback(void *userdata, uint8_t *s, int l) void audioFillCallback(void *userdata, uint8_t *s, int l)
{ {

View File

@ -82,7 +82,9 @@
/** /**
How quickly player turns left/right, in degrees per second. How quickly player turns left/right, in degrees per second.
*/ */
#define SFG_PLAYER_TURN_SPEED 180 #ifndef SFG_PLAYER_TURN_SPEED
#define SFG_PLAYER_TURN_SPEED 180
#endif
/** /**
Distance, in RCL_Units, to which textures will be drawn. Textures behind this Distance, in RCL_Units, to which textures will be drawn. Textures behind this