How do I detect progress through fileplayer?

I am making a simple audio player for Playdate to play some of my favorite songs. I wanted to add a progress bar but I can't figure out how to get progress through audio. I tried getOffset but that just always returned 4.

Yeah Here's the code for now. It keeps outputting negative values until I start a song then it constantly says 4. The audio files are in the Songs folder and use the .wav.pda extension because of the way I converted them.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "pd_api.h"

static PlaydateAPI *pd = NULL;

const char *fontpath = "/System/Fonts/Asheville-Sans-14-Bold.pft";
LCDFont *font = NULL;

void setPDPtr(PlaydateAPI *p) { pd = p; }

FilePlayer *player;

const char *songs[100] = {};
int fileIndex = 0;
int selectedSong = 0;

static int update(void *userdata);
static void redraw();
static void addSong(const char *file, void *userdata);
static void onSongEnd(SoundSource *c, void *userdata);

static int handleButtons(PDButtons button, int down, uint32_t when,
                         void *userdata);

#ifdef _WINDLL
__declspec(dllexport)
#endif
int eventHandler(PlaydateAPI *pd, PDSystemEvent event, uint32_t arg) {
  (void)arg;

  setPDPtr(pd);

  if (event == kEventInit) {
    const char *err;

    font = pd->graphics->loadFont(fontpath, &err);

    if (font == NULL)
      pd->system->error("%s:%i Couldn't load font %s: %s", __FILE__, __LINE__,
                        fontpath, err);

    player = pd->sound->fileplayer->newPlayer();
    pd->sound->fileplayer->setFinishCallback(player, onSongEnd, pd);

    pd->file->listfiles("Songs", addSong, pd, 1);

    pd->system->setAutoLockDisabled(1);

    pd->system->setButtonCallback(handleButtons, pd, 5);

    pd->system->setUpdateCallback(update, pd);

    redraw();
  }

  if (event == kEventTerminate) {
    pd->sound->fileplayer->freePlayer(player);
  }

  return 0;
}

static int update(void *userdata) {
  pd->system->logToConsole("%d", pd->sound->fileplayer->getOffset(player));
  return 1;
}

static void redraw() {
  pd->graphics->clear(kColorWhite);
  pd->graphics->setFont(font);

  pd->graphics->drawText(
      songs[selectedSong], strlen(songs[selectedSong]), kASCIIEncoding,
      (pd->display->getWidth() -
       pd->graphics->getTextWidth(font, songs[selectedSong],
                                  strlen(songs[selectedSong]), kASCIIEncoding,
                                  0)) /
          2,
      10);
}

static void addSong(const char *file, void *userdata) {
  PlaydateAPI *pd = userdata;

  char *song = strdup(file);

  song[strlen(song) - 8] = '\0';

  songs[fileIndex] = song;

  if (fileIndex == 0) {
    char song[500] = "Songs/";
    strcat(song, file);
    pd->sound->fileplayer->loadIntoPlayer(player, song);
  }

  fileIndex++;
}

static int handleButtons(PDButtons button, int down, uint32_t when,
                         void *userdata) {
  PlaydateAPI *pd = userdata;

  if (down == 0)
    return 0;
  if (button == kButtonRight) {
    pd->sound->fileplayer->stop(player);
    selectedSong++;
    if (selectedSong == fileIndex)
      selectedSong = 0;
    char song[500] = "Songs/";
    strcat(song, songs[selectedSong]);
    strcat(song, ".wav.pda");
    pd->sound->fileplayer->loadIntoPlayer(player, song);
    redraw();
    return 0;
  }
  if (button == kButtonLeft) {
    pd->sound->fileplayer->stop(player);
    selectedSong--;
    if (selectedSong < 0)
      selectedSong = fileIndex - 1;
    char song[500] = "Songs/";
    strcat(song, songs[selectedSong]);
    strcat(song, ".wav.pda");
    pd->sound->fileplayer->loadIntoPlayer(player, song);
    redraw();
    return 0;
  }
  if (button == kButtonA) {
    if (pd->sound->fileplayer->isPlaying(player)) {
      pd->sound->fileplayer->pause(player);
      return 0;
    }
    pd->sound->fileplayer->play(player, 1);
    return 0;
  }
  if (button == kButtonB)
    pd->sound->fileplayer->stop(player);

  return 0;
}

static void onSongEnd(SoundSource *c, void *userdata) {
  PlaydateAPI *pd = userdata;

  selectedSong++;
  if (selectedSong == fileIndex)
    selectedSong = 0;

  pd->sound->fileplayer->stop(player);
  char song[500] = "Songs/";
  strcat(song, songs[selectedSong]);
  strcat(song, ".wav.pda");
  pd->sound->fileplayer->loadIntoPlayer(player, song);
  pd->sound->fileplayer->play(player, 1);
}

I wonder if it has something to do with the .wav.pda thing and that I should rename it to just .pda.

I tried renaming them to .pda files but it made no difference. I'm still having the same problem.

I don't know why but outputting to screen as text and console gave different outputs but when I plugged it into some code that renders a rectangle symbolizing progress it works. I think this might be some kind of sdk bug so I might create a post over there as well. Drawing as a rect was what I was eventually trying to do so that is now fixed for my use cases but this still seems to be some kind of bug.