jotego / jtcores

FPGA cores compatible with multiple arcade game machines and KiCAD schematics of arcade games. Working on MiSTer FPGA/Analogue Pocket
https://patreon.com/jotego
GNU General Public License v3.0
241 stars 41 forks source link

Update all cores to support new MiSTer DirectVideo DV1 SPD Infoframe #500

Closed c0d3h4x0r closed 9 months ago

c0d3h4x0r commented 10 months ago

To get correct auto-cropping behavior with RetroTink 4K.

jotego commented 10 months ago

Could you give a bit more of information about this?

c0d3h4x0r commented 10 months ago

Here is my understanding of it all. I'm not a MiSTer developer, so you should verify my understanding with the experts. I am just a RetroTink 4K owner who is eager to see all cores updated to add this feature.

The RetroTink 4K is a recently-released 4K scaler. The best way to connect MiSTer to it is via MiSTer's HDMI output running in "DirectVideo" mode.

DirectVideo mode disables MiSTer's built-in scaler and sends unscaled HDMI output (which must be 640x240 or higher, for reasons). Most cores recreate hardware that originally produced a lower content resolution than 640x240, so the core framework apparently adds black borders around the content to make a 640x240 HDMI signal.

For RetroTink 4K to automatically crop away the black bars and get the true content resolution (so it can draw scanlines at the correct scale, etc.), MiSTer must tell it the size of the black borders that got added. To do that, the core must tell MiSTer that info.

MiSTer (unstable builds, and soon, the stable build) asks the core for the info and puts it into the HDMI SPD Infoframe. RetroTink 4K latest official firmware already contains full support for reading that info out of the HDMI SPD Infoframe and using it.

An unstable branch of the MiSTer core template has been created to implement providing the needed info to MiSTer, and a few unstable cores have already been built against it for testing.

Soon, the stable branches of MiSTer and the core template (containing the needed sys framework changes) will be updated to officially add this feature. When that happens, all cores will need to rebuild against the latest template to pick up support for it.

jotego commented 10 months ago

Thank you for the detailed background. I will wait until the template gets stable and update the cores.

c0d3h4x0r commented 10 months ago

MiSTer main stable and the core template repo were both updated on January 10, so this work can proceed now.

jotego commented 9 months ago

I have updated the MiSTer template files.

@c0d3h4x0r, can you check the attached cores, please?

jtcps1.rbf.zip jt1942.rbf.zip

c0d3h4x0r commented 9 months ago

RetroTink4K auto-cropping does not work with either of those test cores.

Auto-cropping does work with the MegaDrive and TurboGrafx-16 test cores that were made available via Discord. I don't know who built them, but you might want to find out and ask them what they did to make it work.

jotego commented 9 months ago

How about other features? Can you tell the difference at all with the previous versions of these cores?

It looks like the Genesis core is not part of the MiSTer organization anymore. The version there is an archive. The TurboGrafx core in MiSTer does not seem to include those features either. I do not know where the files in Discord came from. I am not eager to look for them, either. I prefer to wait until these changes get fed back to the official files maintained by Sorgelig.

c0d3h4x0r commented 9 months ago

The newer MegaDrive core is not the same as the older Genesis core. I was referring to the MegaDrive core.

c0d3h4x0r commented 9 months ago

You can also talk to birdybro in the MiSTer Discord. They recently updated the Tropical Angel arcade core to enable the auto-cropping feature.

jotego commented 9 months ago

Good. But can you reply to the first question? Can you tell that this change has an effect at all?

c0d3h4x0r commented 9 months ago

It's 1:17am here, so I need to get to bed. I'll have more time to test and compare this weekend.

cobhc2019 commented 9 months ago

Auto cropping and auto decimation works fine for me with the CPS1 core on the RT4K and looks great.

1942 doesn't even finish loading for me now. I get the below bunch of characters on the screen.

PXL_20240201_230101060 MP

cobhc2019 commented 9 months ago

Ran an update all and then copied the cores over again and 1942 loads now, but doesn't auto crop or decimate like the CPS1 core does.

jotego commented 9 months ago

Thank you for the feedback. I will release all cores updated to this today. Let's see what the feedback is. From talking to other developers, it looks like what I did is what needs be done so I will close this for now.

cobhc2019 commented 9 months ago

Did some testing with the updated cores and it seems to be a bit of a mixed bag. Kind of burnt out on doing any more testing, as I have to power cycle the MiSTer for every core that the automatic scaling doesn't work on (for some reason), but this is what I have so far. I don't know if there's any link between those that do and don't work with automatic scaling on the RT4K.

1942 works 1943 works Aliens doesn't work Bionic Commando doesn't work Black Tiger works Bubble Bobble doesn't work Contra doesn't work CPS1 no Ionger works CPS1.5 doesn't work CPS2 doesn't work DD doesn't work DD2 doesn't work Exed Exes doesn't work Fast Lane works Final Round doesn't work GNG doesn't work Gun Smoke doesn't work Karnov doesn't work Karate Champ doesn't work

I'll see if I can test more next week if you need me to.

roninniagara commented 9 months ago

same here. the screen on cps1/2 is split in half. even hitting the crop option on the rt4k doesn't fix it. completely unusable now.

simpsons/tmnt do nothing also.

black tiger works.

Same results.

(also getting a patreon error when trying to start golden axe?!).

Jotego, if you want to reach out to me on discord or twitter (the handlebar gamer) I can test stuff pretty quickly for you also.

Thanks for all you do! Long time patreon subscriber! (CPS1 days!)

Did some testing with the updated cores and it seems to be a bit of a mixed bag. Kind of burnt out on doing any more testing, as I have to power cycle the MiSTer for every core that the automatic scaling doesn't work on (for some reason), but this is what I have so far. I don't know if there's any link between those that do and don't work with automatic scaling on the RT4K.

1942 works 1943 works Aliens doesn't work Bionic Commando doesn't work Black Tiger works Bubble Bobble doesn't work Contra doesn't work CPS1 no Ionger works CPS1.5 doesn't work CPS2 doesn't work DD doesn't work DD2 doesn't work Exed Exes doesn't work Fast Lane works Final Round doesn't work GNG doesn't work Gun Smoke doesn't work Karnov doesn't work Karate Champ doesn't work

I'll see if I can test more next week if you need me to.

jotego commented 9 months ago

Thank you for testing and reporting. This is a bit of a side quest, to be honest. It looks like there is some core-specific thing missing. I need to get more information about it. I hope this can be automated as I do not want to have to enter specific stuff for each core (or even game) for this feature.

Some games in the same core even draw a black frame around the image that is independent on hardware signals. That means that cropping derived from hardware blanking signals won't work for all cores. So I think there will always be a need for some configuring on the Tinker side.

cobhc2019 commented 9 months ago

No problem, I don't think anyone expects you to look at this on a core by core basis. Hopefully this can be automated...as when it works, it's really nice with the Tink 4K.

Let me know if you want/need me to test anything else.

paulb-nl commented 9 months ago

Some of these cores like cps1 have trouble with HDMI and i2c. This error is in the log: *** ADV7513 not found on i2c bus! HDMI won't be available!

This prevents it from sending any HDMI initialization or other data to the ADV7513 chip.