Compare commits

...
Author SHA1 Message Date
kichikuou 3314f00bf8 Fix cdGetMaxTrack for download edition of Daiakuji
It should return the maximum index of the BGM archive.

Fixes #43.
2023-12-09 14:57:01 +09:00
4 changed files with 7 additions and 1 deletions
+1 -1
View File
@@ -108,5 +108,5 @@ void ald_init(int type, const char **file, int cnt, boolean use_mmap) {
int ald_get_maxno(DRIFILETYPE type) {
if (type >= DRIFILETYPEMAX || !dri[type])
return 0;
return dri[type]->nr_files;
return dri[type]->maxno;
}
+3
View File
@@ -22,11 +22,14 @@
#include <stdio.h>
#include "cdrom.h"
#include "ald_manager.h"
#include "music.h"
#include "music_private.h"
static int current_track;
static int cdrom_bgm_init(char *dev) {
prv.cd_maxtrk = ald_get_maxno(DRIFILE_BGM) + 1;
return OK;
}
+2
View File
@@ -67,6 +67,8 @@ static bool read_index(int disk, drifiles *d, FILE *fp) {
for (int i = 0; i < nr_files; i++) {
if (disk != ltbl[i * 3] - 1)
continue;
if (d->maxno < i)
d->maxno = i;
d->disk[i] = ltbl[i * 3];
int ptr = LittleEndian_getW(ltbl, i * 3 + 1);
d->offset[i] = LittleEndian_get3B(ptbl, ptr * 3) << 8;
+1
View File
@@ -34,6 +34,7 @@ struct _drifiles {
mmap_t *mmap[DRIFILEMAX];
char *fnames[DRIFILEMAX];
int nr_files; // upper limit on how many files could be referenced by this archive
int maxno;
uint8_t *disk; // file numbers
uint32_t *offset; // offsets in file
};