hrvoje wrote:Is there anyone kind enough who could give me a few pointers, or put together a "boilerplate" minimal, blank core project (for example which only generates a red video background) I could open in Quartus and compile?
Sorgelig wrote:Almost any arcade core can be treated as a template - they are simple and have good point to split original arcade from MiSTer specific part.
hrvoje wrote:Which arcade core would you recommend as a good example?
hrvoje wrote:If I manage to get something working, I will try to contribute with some documentation about the process.
Sorgelig wrote:Doc(Wiki) from first porting experience would be good!
hrvoje wrote:In my current Cyclone IV attempt, I generate VGA with a simple 4-bit R-2R DAC and I know how to make a VGA signal. I've never done HDMI, can you please point me in the right direction - what kind of signal is expected on the HDMI connections (HDMI_R/G/B, HS, VS etc...) from my core? Same values and timings as VGA I'm currently outputting or something else?
Sorgelig wrote:Actually, you can take even Genesis core - it has simple connection to MiSTer API and includes all latest changes to API and framework.
hrvoje wrote:Should I just plug the horizontal/vertical sync and R, G, B as input to an instance of video_mixer module?
Sorgelig wrote:hrvoje wrote:Should I just plug the horizontal/vertical sync and R, G, B as input to an instance of video_mixer module?
yes. And it's very important to provide HBlank and VBlank signals as well.
Also i suggest to use video_cleaner module right after your module which will align the signal properly.
Sorgelig wrote:bits 0..3 are directions (check any arcade core to make sure which direction of each bit).
bits 4..15 are buttons according to OSD option J - you can check arcade cores as well for example J usage. J1 means lock the keyboard in joystick emulation - useful for keyboard-less cores.
logic 1 - button is pressed.
Sorgelig wrote:Open USB console to check there - probably you will see frequent messages about new resolution.
It's because unstable video signal your core provide.
Any advice is greatly appreciated!
Sorgelig wrote:Cores cannot output text to popup.
As you may already know HDL is not so friendly with text string handling.
Usually emulated systems are self-contained, so they output text using emulated system resources.
For extensive overlay graphics probably you need to add second softCPU with its firmware and overlay display. OSD settings have 31 bits for options. So you can implement these 18 switches as options in menu. Probably some switches can be grouped to simplify the settings.
hrvoje wrote:Is there a way to implement file download asynchronously? That is, if I set ioctl_wait high, the menu will just sit there until it goes low again and download can finish. Can this be done so that the image is "attached" and the core takes as much data as it can process (control the flow with something like ioctl_wait signal) until there is no more left, but the menu isn't "frozen" until the core finishes reading the image?
Sorgelig wrote:ioctl_* is for downloading the whole file at once. You cannot pause it. You can download it whole to SDRAM or DDR3 and then use from there at any rate you want.
Another way is to mount the file (sd_* signals) and read/write it by blocks (512b) at any pace you want. You can see how these signals are used in several cores, for example ZX core.
Video of flashing pixels
Sorgelig wrote:default HDMI resolution is 720p.
Interlaced HDMI output is not implemented.