Saturnorbit dev - homebrew. Hi Resolution question.

Hi folks!!


As you can see, i'm almost everywere.. well. let's go!


I need to ask you guys about Saturnorbit/SGL, and the way it changes the resolution of Saturn


I readed the VDP2 manual, and i know more or less how to work, but , there's a major issue, when i change this line of code:


slInitSystem(TV_320x224, NULL, 1);


When i change that line to adapt the resolution,


slInitSystem(TV_704x480, NULL, 1);


or...


slInitSystem(TV_640x480, NULL, 1);


I'm working with backgrounds, by now, and well, when i change the 320x224 resolution to another, it doesn't show nothing. Do i need to change something more about the slInitSystem??


thanks in advance.
 
Amon thanks a lot for the response. It's a great idea, but there's a problem... the sourcecode for Atlas is not available to download, as the link is broken or something..


Please RockinB if you read this, would you provide me the sourcecode of Atlas??


I'm trying to do some hi-res homebrew with backgrounds, and need to see a little more of code to put Saturn on hi-res mode.


Thanks in advance !!!!!
 
You've said you are working with backgrounds.

There is no problem when you just use double interlace. These here should work without bigger problems:

slInitSystem(TV_320x448, NULL, 1);

slInitSystem(TV_352x448, NULL, 1);

slInitSystem(TV_320x480, NULL, 1);

slInitSystem(TV_352x480, NULL, 1);

slInitSystem(TV_320x512, NULL, 1);

slInitSystem(TV_352x512, NULL, 1);

However, if you want to double the horizontal resolution, a couple of restrictions have to be followed. The number of VRAM accesses per pixel decreases by 50% when you double the number of horizontal pixels (640 or 704). The VRAM access per pixel has to be determined exactly using so called cycle patterns. Usually, function slScrAutoDisp() automatically calculates and specifies the appropriate cycle patterns. When using hires mode, it often fails. Then you can use function slScrCycleSet() to set the cycle patterns manually. Please read up on the topic in the VDP2 manual.

You don't need to use hires/double interlace mode for both VDP1 and VDP2. For VDP1, double interlace cuts the max framerate by 50% and hires mode avoids all 16bit RGB or 16bit paletted polygons and textures. For example, you can use hires double interlace for VDP2 and normal resoluton for VDP1:

slInitSystem(TV_640x480, NULL, 1);

slSetSprTVMode(TV_320x220);
 
Bad and good news...

After trying it really hard, i'm here again to ask. I'm sorry if i bother too much, but i think i can learn a lot about coding on Saturn, and i'm really confident that i'm learning a lot.

Well, here we go.

Some result happened, because what was a nightmare of red lines and corrupt display, now is a clear hi-res image of what i want. But there's a problem.

The image is not shown full , and the part of the image that is shown is shown twice, one down the other. Ok, here i post the result:

00000000a.th.png


RockinB and Amon, first of all, thanks to both of you...

Well, about what Rockinb said to me,,, i used the function slScrCycleSet() that i saw at the Atlas sourcecode, and i did that because i didn't find slScrCycleSet function on the VDP2 manual (is the one that is on the web "eatsushi"??). Well, in that case, i would love to know where i can find the exact info or more examples on how to use it, i'm not an expert coder and i need a little bit of guide at first..

The buffer size of the image is correct, i put it on the dehuff definition. And the resolution i used is:

slInitSystem(TV_704x480, NULL, 1);

slSetSprTVMode(TV_352x240);

Then, here are some aspects that i would want to discuss about this..

1. I saw on the eatsushi webpage vdp2 documentation that to put saturn on hi-res mode, both NBG0 and NBG1 should work al together, with the same preference. Then i put this on the init_VDP2:

slPriorityNbg0(7);

slPriorityNbg1(7);

The image is 704x480x6bits. And is correctly converted to a bin file.

I have choosen the next parameters:

slBitMapNbg1(COL_TYPE_32768, BM_1024x512, (void *)VDP2_VRAM_A0);

slBitMapNbg0(COL_TYPE_32768, BM_1024x512, (void *)VDP2_VRAM_A0);

plus:...

slScrCycleSet(0xe55eeeee, 0xe55eeeee, 0x055eeeee, 0x144eeeee); --> as the slScrCycleSet setup.

Well, would be great to know if i failed on that one haha! as i just took it from the Astal sourcecode.

Then, i'm a little bit lost refering to where can come the mistake., i would appreciate very much your help here guys, and i would like to apologize about my english, i'm currently at work and can't put more time on it by now.

Thanks in advance.
 
Back
Top