- Remount is allowed without reset, when the CD wasn't read yet during power cycle
- Allows changing a disc with multi disc titles after application induced eject
- Added debug option to allow replacing the image during operation
- Also fixed tray close on image mount
- Decoupled SEQ event from GOP event.
Now behaves like real VMPEG hardware
- Fixes Lost Ride gameplay after vehicle charge intro
- Fixes timing accuracy of temp ref and time code
Measurable with mv_status()
- Fixes MPEG buffer underflow with certain titles
like "Mad Dog McCree"
- Measured on real hardware with 30 and 25 FPS MPEG stream.
Display rate seems irrelevant
- Replaced stub with actual data from stream
- Fixes value of MAS_Head as returned by ma_status()
- Stereo and Mono are correctly detected by VCD bridge
- Was slightly slower than real hardware. Now slightly faster than real hardware.
- Fixes black flicker during the intro of "The Ultimate Noah’s Ark", when
running in 60 Hz mode
This title is on the edge when it comes to using DC_PWrLCT just a few lines
before it is too late. This resulted into wrong mixing weights for single frames
Since no commercial software seems to use this effect,
a custom test application was written for CLUT7 and CLUT4
video modes to compare against real hardware.
- Added slow motion mode
- Added support for single step
- Fixes playback control problems with "Imagination in Motion - A New Era in 3D Chill Out Video"
This commit introduces technical debt
- The stepping mechanism is not fully understood
- Slow motion seems to desync audio and video when resuming normal playback
With the current state, the playback speed is still dictated
by the MPEG decoder. It might be possible, that this is wrong.
- Fixes overflow of MPEG stream data, when
pausing the playback via mv_pause()
and causing a flood of data with mv_continue()
- Fixes pausing with
"Imagination in Motion - A New Era in 3D Chill Out Video"
This doesn't fix scanning through this title.
Previously, there was an assumption that
MPEG data will never be shoveled in, faster than
the CD speed allows. This assumption is wrong
when the functions mv_pause() and mv_continue()
are involved. The FMV driver will not stop
uploading PCL data into the FMV buffer, because
the FIFO full flag was not yet implemented.
The FIFO level had to be moved around, because
it needs to be able to store at least 2324 byte
when not full.
- Optional, must be enabled in Hardware Config
The typical use case of a CD-i, based on
the Mono-I architecture, is the connection
of a pointing device to the front port or
the usage of an Ir Controller.
Both are handled by the SLAVE and usually
combined as the first pointing device.
The back port is available as a serial port.
For 2 players, the first pointing device
is connected to the back port.
During bootup, the operating system decides to
disable the serial port in favor of having
the first pointing device on the back.
The SLAVE doesn't know about this and
all input devices handled by it,
will be perceived as the second pointing device.
- Fixes long videos with even smaller frame size
- Fixes even more videos in "Les Guignols de l’Info"
This is the change of b8e3bac amplified.
The failing video this time is at seek position 0xB278800.
The previous one failing was 208x128, this one is
even smaller with 160x112.
It reaches a FIFO level of 21 until playback is started
even on real hardware.
- Instead of going for full 352 pixels, we adapt the behavior
according to real hardware, as it turns out that the software
adapts to the misbehavior of it.
- Based on analysis of the Robocop VCD, this is required
to go full screen
Since the visual quality is subpar due to the clock stretching approach,
the core shall have an option to restore the previous behavior until
that problem is solved.
It was squeezed but pixel perfect and therefore might look better
for some users
- Added DSP registers for storing the derived volume
from the attenuation value
- Since the official LUT of the VMPEG is not known, a custom
one is derived, based on measurements from the real machine
- Should make "Lost Eden" more pleasant, since this game attenuates
the music during spoken dialog.
Compared to a real CD-i, I've decided to recycle the dual AD7528
of the base case to control the volume.
So, it is no longer a dual but a quadro configuration.
- Fixes soft lock of "Brain Dead 13" after company logo
Also decoupled frame display from FIFO consumption as the real hardware
will probably also do. I don't recall why I even made that change.
Partially reverts ca4216f95
I've noticed that the README is constantly updated by the MiSTer downloader, even so
no new rbf file is provided.
I would like to avoid this, considering how often I update the Quartus statistics and TODOs.
- Fixes wrong offset with "Les Guignols de l’Info"
- Fixes graphical corruption with "Christmas Crisis"
- Fixes "skewed image corruption" with MPEG video
- Adds support for NIS video event due to update of sequence parameters
- Fixes "Philips Logo Intro" with "Brain Dead 13"
Dynamic behavior is probably not yet correct.
- "Christmas Crisis" is stuttering in the bonus rides.
It should be noted that "Brain Dead 13" is still not working
after the company logo.
- Fixes ASY_Stat info of MPEG Audio handle
- Fixes perpetual start-stop of music in "Lost Eden"
- Fixes early stop of playback in "Les Guignols de l’Info"
- Fixes audio stop of "Mutant Rampage: Bodyslam" after music has played
- Fixes current stream id as returned by ma_status()
This might not have an effect at all but it is more accurate
- Added EOI - ISO 11172 End Code detection in demuxer
- Added EOS - Sequence End Code detection in decoder firmware
- SEQ, GOP and PIC no longer generated by bitstream decoder
- PIC now aligned to vblank before a new picture is shown
- SEQ and GOP now aligned to PIC when its the first I frame of a GOP
- LPD now aligned to PIC when it was the last picture
- BUF - Buffer underflow now detected by firmware
- Added pictures in FIFO register (00E040A4)
- Added DTS register (00E040A0)
- Added VDI register for DTS updates (0E0408C)
- FMV Playback start no longer decided by demuxer but by VMPEG ROM
- Added pixel width calculation for later use
- Fixes hang at the end of the Space Ace Intro
Names of events to according
https://github.com/TwBurn/cdi-docs/blob/main/mv_cbnd.md#mv_trigger-define-mpeg-video-events-to-signal
Replaced memory arrays of video decoder with dual port RAM for FPGA usage
Added planar YCbCr frame player to display decoded frames
Added DDR3 interface for frame player and pixel worker
Added DDR3 interface mux for multiple masters
MCD212: Added EV bit usage to replace backdrop with external video
Shows Dragon's Lair intro with artefacts on MiSTer
because the worker currently cannot read from DDR3
For some reason, the EV bit is not working correctly
- Added clock divider to get 0.5 MHz from 30 MHz system clock
The system timer tick now occurs every 8.1ms like it does on a 210/05
- Added reset delay mechanism to fix the resulting time out when polling
for the PAL/NTSC status.
This occurs when the m68k is overclocked
- Added captured RC5 test data to confirm compatibility with the
Thumbstick remote controller in a simulated environment
- Approximates the clipping behavior of a CDI 210/05
- Required to fit the theoretical 17 bit output
into the 16 bit PCM signal of the MiSTer
- Fixes sound distortion in Hotel Mario
- Removal of Tick wait counter
It was an artifact only required by software emulators
- Added abort of playback
Fixes some audio map related sound glitches in Zelda's Adventure
- Added mysterious bit reset
Forces Unmute during Audio Channel playback
Full function not yet understood
AD7528: Added instances for stereo mixing
- Fixes audio panning in Zelda's Adventure
- Fixes stereo to mono mixing (SFX + BGM)
- Hotel Mario
- Zelda - Wand of Gamelon