logs archiveBotHelp.net / Freenode / #3dsdev / 2015 / September / 14 / 1
yuriks
ah
mGBA always froze when unpausing for some reason
we tracked it down to a debounce loop in the UI code that did a tight loop waiting for a key to be unpressed
but since it neve yielded it never let HID run to update the shared memory
profi200
Never had that problem.
It always worked as expected.
yuriks
not sure why it only manifested on my builds either, but it's fixed on master now
endrift
I got a game to run overnight
but
Mother 3 is still freezing ~3.5 hours into the musical score
yuriks
hm, wow, I just finished catching up with all the happenings. Damn this takes time :P
I'm feeling somewhat quasey today, so I don't think I'll work on anything
Kitlith
Hello!
yuriks
hi
endrift
yuriks: I might poke at your code a bit to try and merge some things to see if it fixes anything
and also to make it faster
yuriks
mhmm
making it faster is probably a matter of doing the waitForXYZ lazily
instead of... right after requesting the operation
endrift
right
yuriks
there's a GSP feature that makes that really easy, it makes GSP wait for the previous operation to complete before executing the next one
so you can just enqueue transfers and command lists and etc. without having to really worry about waiting in most cases
aliaspider
was that added to libctru ?
yuriks
no, I don't think anyone tried it yet
(even me, I only know it exists from GSP RE)
aliaspider
Im using it, no idea how to add it to libctru though xD
I made replacement functions
you only have to or the gx command with 0x01000000
and it will be queued
yuriks
yeah
I'm not sure how to add it to ctrulib either
aliaspider
It saes considerably a lot of cpu cycles, since you only need to sync when you have the next frame ready
yuriks
probably something to bring up with fincs
aliaspider
even the buffer swap is automatically queued I think
yuriks
but I had no idea anyone wase using that, nice :)
aliaspider
I discovered it some months ago xD
GX_SetMemoryFill was using it without realizing why
yuriks
also, "SetCommandListFirst" is actually just a cache-flushing command
so you can use that too to avoid stalling your thread with cache flushing
aliaspider
ah you mean the flush will be done by a different hardware , and that it can be queued too ?
yuriks
no, it's just done in the GSP process
aliaspider
ah I see
yuriks
whereas calling the cache flush service function directly will block your thread waiting for it to complete
smea
well to be fair it would still be done in the gsp process
it just wouldnt be asynchronous
yuriks
(in addition to the overhead of doing an IPC call versus just enquing)
hm, I suppose so
aliaspider
svcSendSyncRequest ends up being called in both cases, but the async part is useful
yuriks
I wonder why they used a service call to kick queue execution
instead of a simple signal or the likes
aliaspider
the whole security thing made them overcomplicate things
not that it helped much in the end
vaguerant
aliaspider, are per-core configs not currently hooked up? Seems like all cores share the path and resolution settings.
aliaspider
could be yeah, per core config might work with standalone cores, since they aren't loaded and thus don't have an identifier
the resolution shouldn't be a problem unless you use a custom viewport
vaguerant
It seems necessary to use a custom viewport in many cases since the 1:1 PAR setting seems to be hardcoded per-platform.
Even though e.g. SNES and Genesis resolution varies per-title (and within single titles sometimes).
SNES 1:1 seems to really be code for "256*224" to the detriment of anything that doesn't run at that res.
aliaspider
nah that can't be
make sure you also use iteger scaling
with 1:1 PAR
let me test it
vaguerant
World Class Service Super Nintendo Tester (USA) is what I usually use, title runs 256*239.
Even setting integer scale to "ON" sets the res to multiples of 224 vertically.
aliaspider
well I tried genplusGX and gpsp, both displayed unscaled with aspect ratio set to 1:1 PAR and interger scale set to ON
hmm
crop overscan is ON by default, try disabling it
if the pixels arent blurred, then that just means that the picture is cropped, not scaled
vaguerant
No change on World Class Service. It's still being scaled to 224 lines when set to "8:7 (1:1 PAR)".
The pixels are indeed blurred.
Maybe it's only the vertical that's not adjusted correctly, I need to fire up a 240-line Mega Drive title.
aliaspider
it displays 8:7 in the setting?
ah , force aspect ratio, maybe that has something to do with it
tbh I have no idea about most settings :P
vaguerant
Yeah, there's the regular 8:7 AR setting, then the 1:1 PAR setting which varies based on the current resolution.
i.e. While running a 256-wide Genesis game the setting is "8:7 (1:1 PAR)" but it becomes "10:7 (1:1 PAR)" when running a 320-wide game.
I'm gonna quickly fire up a 240-tall Mega Drive title to see whether or not that correctly adjusts the viewport.
aliaspider
yeah that is what I expected, and I expected it to also display something else when you run a 256*239 game
vaguerant
Yeah, it does indeed report 8:7 even though that's not accurate.
OK, it seems to work correctly on Genesis Plus GX.
Firing up The Story of Thor (Europe), the PAL release of Beyond Oasis, sets the 1:1 PAR setting to "4:3" (correct, as the game runs 320*240).
aliaspider
might be a problem with catsfc then, did you try snes9x too ?
vaguerant
Will try that now.
"256:239 (1:1 PAR)"
CatSFC issue.
aliaspider
kk cool :)
vaguerant
Works on SNES9x-Next.
aliaspider
yeah I think I hardcoded the viewport there lol, was a quick port
vaguerant
Ahhh, gotcha.
« prev next »