Skip to content

Commit fd04e81

Browse files
committed
Don't load more frames, if reached the video's last frame number
1 parent fa860f3 commit fd04e81

1 file changed

Lines changed: 27 additions & 23 deletions

File tree

arm9/source/main.cpp

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ void renderFrames(void) {
178178

179179
if (videoPlaying && currentFrame <= loadedFrames) {
180180
if (loadFrame) {
181-
if (currentFrame < (int)rvidFrames) {
181+
if (currentFrame < rvidFrames) {
182182
if (rvidInRam) {
183183
if (rvidInterlaced) {
184184
if (bottomField) {
@@ -412,19 +412,21 @@ int playRvid(const char* filename) {
412412
if (useBufferHalf) {
413413
for (int i = 14; i < 28; i++) {
414414
snd().updateStream();
415-
if (rvidCompressed) {
416-
if ((loadedFrames % 128) == 0) {
417-
fread(compressedFrameSizes, sizeof(u32), 128, rvidFrameSizeTable);
418-
}
419-
if (compressedFrameSizes[loadedFrames % 128] > 0
420-
|| compressedFrameSizes[loadedFrames % 128] <= sizeof(compressedFrameBuffer)) {
421-
fread(compressedFrameBuffer, 1, compressedFrameSizes[loadedFrames % 128], rvid);
422-
lzssDecompress(compressedFrameBuffer, frameBuffer+(i*(0x200*rvidVRes)));
415+
if (loadedFrames < rvidFrames) {
416+
if (rvidCompressed) {
417+
if ((loadedFrames % 128) == 0) {
418+
fread(compressedFrameSizes, sizeof(u32), 128, rvidFrameSizeTable);
419+
}
420+
if (compressedFrameSizes[loadedFrames % 128] > 0
421+
|| compressedFrameSizes[loadedFrames % 128] <= sizeof(compressedFrameBuffer)) {
422+
fread(compressedFrameBuffer, 1, compressedFrameSizes[loadedFrames % 128], rvid);
423+
lzssDecompress(compressedFrameBuffer, frameBuffer+(i*(0x200*rvidVRes)));
424+
}
425+
} else {
426+
fread(frameBuffer+(i*(0x200*rvidVRes)), 1, 0x200*rvidVRes, rvid);
423427
}
424-
} else {
425-
fread(frameBuffer+(i*(0x200*rvidVRes)), 1, 0x200*rvidVRes, rvid);
428+
loadedFrames++;
426429
}
427-
loadedFrames++;
428430

429431
scanKeys();
430432
touchRead(&touch);
@@ -456,19 +458,21 @@ int playRvid(const char* filename) {
456458
if (!useBufferHalf) {
457459
for (int i = 0; i < 14; i++) {
458460
snd().updateStream();
459-
if (rvidCompressed) {
460-
if ((loadedFrames % 128) == 0) {
461-
fread(compressedFrameSizes, sizeof(u32), 128, rvidFrameSizeTable);
462-
}
463-
if (compressedFrameSizes[loadedFrames % 128] > 0
464-
|| compressedFrameSizes[loadedFrames % 128] <= sizeof(compressedFrameBuffer)) {
465-
fread(compressedFrameBuffer, 1, compressedFrameSizes[loadedFrames % 128], rvid);
466-
lzssDecompress(compressedFrameBuffer, frameBuffer+(i*(0x200*rvidVRes)));
461+
if (loadedFrames < rvidFrames) {
462+
if (rvidCompressed) {
463+
if ((loadedFrames % 128) == 0) {
464+
fread(compressedFrameSizes, sizeof(u32), 128, rvidFrameSizeTable);
465+
}
466+
if (compressedFrameSizes[loadedFrames % 128] > 0
467+
|| compressedFrameSizes[loadedFrames % 128] <= sizeof(compressedFrameBuffer)) {
468+
fread(compressedFrameBuffer, 1, compressedFrameSizes[loadedFrames % 128], rvid);
469+
lzssDecompress(compressedFrameBuffer, frameBuffer+(i*(0x200*rvidVRes)));
470+
}
471+
} else {
472+
fread(frameBuffer+(i*(0x200*rvidVRes)), 1, 0x200*rvidVRes, rvid);
467473
}
468-
} else {
469-
fread(frameBuffer+(i*(0x200*rvidVRes)), 1, 0x200*rvidVRes, rvid);
474+
loadedFrames++;
470475
}
471-
loadedFrames++;
472476

473477
scanKeys();
474478
touchRead(&touch);

0 commit comments

Comments
 (0)