mortaca / RGB-Pi

RGB-Pi Development Repository
http://RGB-Pi.com
86 stars 15 forks source link

How to calculate new timings #63

Open digitalLumberjack opened 3 years ago

digitalLumberjack commented 3 years ago

Hello i'm trying to set new timings to fit some other consoles on Recalbox.

Could you provide me some informations about how to create them ?

Are there some rules I must follow in order to have good timings ?

Thank you.

mortaca commented 3 years ago

I suppose you mean the Pi3 because there is a lot of difference between 3 and 4 due to the peculiarity that the 3 has the PixelClock locked to specific values, which makes it difficult to generate timings with a calculator.

What we have done is from the values allowed in the pi3 to approach and reach the necessary timings, forcing the calculation a little by hand, although it does not match the pixelclock that we have to set.

Is this for autoswitching res in Recalbox for Pi3 or for another device?

digitalLumberjack commented 3 years ago

Hi @mortaca,

It's for pi4 in fact. We are adding the support of dac -> scart in recalbox : https://gitlab.com/recalbox/recalbox/-/issues/1805

All your timings are running good, but I would love to test other ones to add some features to recalbox, with automatic drm mode selection from retroarch (zero config).

But i'm struggling with timing creations.

mortaca commented 3 years ago

On the pi4 you can generate any modeline using the calculators available for PC, for example the CRT SwitchRes from calamity which is highly optimized for arcade monitors, then you just have to translate the modeline format to dpi_timings and it should work.

Do you already have the changes working with the new kernel to be able to make resolution changes on the fly?

digitalLumberjack commented 3 years ago

Yeah everything is on the issue https://gitlab.com/recalbox/recalbox/-/issues/1805 and in the related Merge Request.

You are looking for the dpidac module.

rtomasa commented 3 years ago

Cpasjuste sent me the updated bridge for kernel 5.10 2 weeks ago but we had no time to test yet. The old one for 5.4 did not fully work. Also you need to add the full timing database in both the txt file and inside the .dtbo to work

digitalLumberjack commented 3 years ago

Yes @rtomasa, the last revision of the dpidac is working well.

We will have to provide the timings.txt with all possible modes (and for recalbox for all possible dac), and the configuration of the viewport have to be done on every emulator.

The limitation for now is that you can have only one mode for a given couple resolution + framerate.

I'm checking right now how I can use the native resolution returned by the core to make it automatic with retroarch at least.

And to test that, i'm trying to make a 256224p@60HZ timing or a 299224p@60HZ to see how it could run on the screen.

Do you think it is possible, can I have such resolutions ? If it is valid resolutions, would you help me finding timings ?

If not, i'm modifying retorarch to add a new RATIO mode that will stretch the width to to 1920 but keep the core provided height. That would do the work for many emulators.

rtomasa commented 3 years ago

Mmm OK so to recap and refresh my mind, I was reading the latest changes on Cpasjuste kernel modules and I see that now it is not required to include all the timings inside the overlay files. Instead, a function called dpidac_get_modes will read all from /boot/timings.txt.

Assuming that, as per your comments, a timing is the combination of resoluton + refresh rate you cannot define two different timing for, let's say, 320x240@60 In any case, this should not be an issue since the modeline should be always the same for same combinations of resolution and refresh rate.

AFAIK there is no way to get a core timing from outside the retroarch. Anyhow, I'm in contact with both the creators of Retroarch's switchres and Calamity. Basically if I'm able to make this working as it is right now, they will integrate the autoswitching in retroarch and we could use Calamity's timing calculator to generate the full timings.txt database

Regarding to 256x224p@60HZ and 299x224p@60HZ timings, both should be feasible in Pi4 due to the open clock. Let me say from my experience on this that there are many cores that provide wrong timing information so that using the same for autoswitching will fail. I recall for example the Atari2600 core providing wrong timing so I had to generate the correct ones.

digitalLumberjack commented 3 years ago

Thank you @rtomasa.

Ok I didn't know that the clock was open even for low values on rpi4 , that is great i will make some tests.

We have two leads right now on how to make it work easily:

I'm working on the first solution for recalbox, as i said, i'm aiming a zero conf (or minimal) experience.

I'll keep in touch, please do the same if you have some news :D

rtomasa commented 3 years ago

I was testing the latest changes yesterday and I found out that I don't get any audio in Pi4, neither from the GPIO nor the headphones jack. I've messed around with all config.txt parameters and nothing. Do you get any audio when the vc4-vga666 + KMS overlay is enabled?

rtomasa commented 3 years ago

OK I found the issue. Audio is now working properly. What is not working is the 480i I need to check further if it's an issue with the timing parameters or is not supported for some other reason

digitalLumberjack commented 3 years ago

I have audio yes :d

And for the record, the kernel must be patched for 480i mode.

rtomasa commented 3 years ago

Question, did you finally submit any change into Retroarch mainline for the automatic switchres/timings? If so, are all timings working fine without adding the same into the .dtbo file as required at the very beginning of the Cpasjuste development?

Thanks

El jue, 12 ago 2021 a las 0:11, digitalLumberjack @.***>) escribió:

I have audio yes :d

And for the record, the kernel must be patched for 480i mode.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/mortaca/RGB-Pi/issues/63#issuecomment-897195272, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADXDAB2MJREGFP6NPNODSDLT4LYPZANCNFSM5AGJZKOQ .

digitalLumberjack commented 3 years ago

Hi,

No timings still have to be listed for the rpidac module. I almost got it working without it, but i'm stuck with switchres.

So retroarch selects the right mode at startup depending on core needs.

digitalLumberjack commented 3 years ago

Question, did you finally submit any change into Retroarch mainline for the automatic switchres/timings?

Not yet, but the real objective here is to make the switchres lib work again on pi4, that i did not succeed yet.

rtomasa commented 3 years ago

I’ve informed Alphanu and Subtring about the current status and they are waiting for my alpha distro to test and start developing the new switchres functionality using Calamity engine.

El El lun, 16 ago 2021 a las 17:14, digitalLumberjack < @.***> escribió:

Question, did you finally submit any change into Retroarch mainline for the automatic switchres/timings?

Not yet, but the real objective here is to make the switchres lib work again on pi4, that i did not succeed yet.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/mortaca/RGB-Pi/issues/63#issuecomment-899592679, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADXDABY53DANLYYQY2E4IN3T5ETPFANCNFSM5AGJZKOQ .