29#include <EASTL/functional.h>
30#include <EASTL/string_view.h>
149 bool play(uint32_t lba, uint32_t sectors,
const Options &options);
150 bool play(uint32_t lba, uint32_t sectors);
159 static uint32_t
heapNeeded(
const Options &options);
183 uint32_t frameNumber;
192 uint8_t *sectorDest(
const uint8_t *header, uint32_t lba);
194 void cdDone(
bool success);
206 void waitVBlankEdge();
213 uint32_t slotBytes, rlBytes, sliceBytes;
214 uint32_t slotData, rl, slices, total;
216 static Layout of(
const Options &options);
218 uint8_t *m_heap =
nullptr;
219 Slot *m_slots =
nullptr;
226 uint16_t *m_rlBufs[2] = {
nullptr,
nullptr};
228 unsigned m_rlIdx = 0;
229 unsigned m_vlcIdx = 0;
230 unsigned m_dmaSlot = ~0u;
231 uint32_t m_colWords = 0;
232 uint32_t m_decodeStart = 0;
233 uint32_t m_decodeStartLine = 0;
234 uint16_t m_colHeight = 0;
238 uint8_t m_colCount = 0;
239 uint8_t m_colArmed = 0;
240 uint8_t m_colDone = 0;
241 uint8_t m_upStarted = 0;
242 uint8_t m_upDone = 0;
243 bool m_uploading =
false;
244 bool m_dma1Busy =
false;
245 bool m_decodeDone =
false;
246 bool m_decoding =
false;
247 bool m_decodeOk =
false;
248 uint16_t *m_slices[2] = {
nullptr,
nullptr};
251 uint32_t m_lastLba = 0;
252 unsigned m_writeSlot = 0;
253 unsigned m_readSlot = 0;
255 uint32_t m_skipFrame = 0xffffffff;
256 bool m_haveRl =
false;
257 bool m_haveDecoded =
false;
258 bool m_needReset =
false;
259 bool m_failed =
false;
260 bool m_cdRunning =
false;
261 uint32_t m_lastSectorFrame = 0;
262 uint32_t m_lastPresentVsync = 0;
263 uint32_t m_hsyncHigh = 0;
264 uint16_t m_hsyncLast = 0;
265 uint32_t m_vblankRef = 0;
266 uint32_t m_landing = 0;
267 uint16_t m_savedSpuCtrl = 0;
268 uint16_t m_savedCdLeft = 0;
269 uint16_t m_savedCdRight = 0;
270 uint8_t m_retries = 0;
271 bool m_stopping =
false;
282 eastl::function<
void(
bool success, uint32_t lba, uint32_t sectors)> &&callback);
A specialization of the CDRom interface.
Definition cdrom-device.hh:80
The singleton GPU class.
Definition gpu.hh:83
An ISO9660 parser.
Definition iso9660-parser.hh:48
This class manages the reading and decompression of files from an archive.
Definition archive-manager.hh:63
Streams an STR movie off the CD-ROM: MDEC video and interleaved XA audio.
Definition str-player.hh:72
StrPlayer(CDRomDevice &cdrom, GPU &gpu)
Definition str-player.hh:140
Status frame()
Drives the playback, to be called from the scene's frame().
Definition str-player.cpp:638
static uint32_t heapNeeded(const Options &options)
The heap play() takes with these options, in bytes.
Definition str-player.cpp:279
bool play(uint32_t lba, uint32_t sectors, const Options &options)
Starts playing the movie in sectors [lba, lba + sectors).
Definition str-player.cpp:288
~StrPlayer()
Definition str-player.cpp:255
const Stats & stats() const
Definition str-player.hh:178
Status
Definition str-player.hh:117
Present
Definition str-player.hh:74
void stop()
Stops the playback early. The drive is paused and the buffers freed.
Definition str-player.cpp:723
Definition str-player.cpp:109
static int size
Definition string.h:149
Definition archive-manager.hh:43
void resolveMovie(ISO9660Parser &parser, eastl::string_view path, eastl::function< void(bool success, uint32_t lba, uint32_t sectors)> &&callback)
Resolves an ISO9660 path into the sector run of a movie.
Definition gte-timing.c:164
Definition str-player.hh:88
bool xaFilter
Definition str-player.hh:95
uint8_t xaFile
Definition str-player.hh:96
uint8_t frameSlots
Definition str-player.hh:101
uint8_t maxSectorsPerFrame
Definition str-player.hh:102
uint16_t displayHeight
Definition str-player.hh:109
uint8_t xaChannel
Definition str-player.hh:97
bool audio
Definition str-player.hh:90
int16_t vramX
Definition str-player.hh:113
uint32_t rlHalfwords
Definition str-player.hh:106
bool rgb24
Definition str-player.hh:89
int16_t vramY
Definition str-player.hh:114
uint16_t displayWidth
Definition str-player.hh:108
bool doubleSpeed
Definition str-player.hh:92
Present present
Definition str-player.hh:98
Definition str-player.hh:119
uint32_t videoSectors
Definition str-player.hh:125
uint32_t vsyncHistogram[4]
Definition str-player.hh:131
uint32_t dropIncomplete
Definition str-player.hh:122
uint32_t decodeLineHistogram[12]
Definition str-player.hh:137
uint32_t dropRingFull
Definition str-player.hh:123
uint32_t badAddresses
Definition str-player.hh:128
uint32_t lastFrameNumber
Definition str-player.hh:129
uint32_t otherSectors
Definition str-player.hh:126
uint32_t framesDropped
Definition str-player.hh:121
uint32_t framesRejected
Definition str-player.hh:124
uint32_t switchLineHistogram[10]
Definition str-player.hh:134
uint32_t readErrors
Definition str-player.hh:127
uint32_t framesShown
Definition str-player.hh:120
static size_t size_t width
Definition syscalls.h:209