Homebrew [Release] ScummVM 3DS

MrHuu

Well-Known Member
Member
Joined
Sep 19, 2015
Messages
562
Trophies
0
Age
37
XP
1,588
Country
Netherlands
While tinygl already runs, none of the games mentioned are actually functional on 3ds.

Due to memory limitations and slow speeds, tinygl could be adapted to have some functions taken over by hardware. This is more in line of what i meant.

Please, do correct me if i'm wrong.
The available gl implementation, picagl, is based on gl 1.1 core. A few functions are missing but are available as ARB extensions.
But i havn't been succesfull in utilizing them.
It' been a while, but if i remember correct missing functions were: glIslist and VBO's.
Nothing to complicated.

These functions are available in the already available citro3d library. Which is used by the current renderer. A wrapper to make to gl functions work with citro3d with tinygl backing the unsupported hardware features could be a solution.

To my understanding, TinyGL as-is wouln't be sufficient to get these games running at acceptable speeds without modification.

Our best bet would be, citro3d with tinygl modified.
Or a gl renderer using picagl with added functionality.

But i love to be proven wrong and always open to suggestions on how to do it properly.

Maybe @MasterFeizz is able to give his opinion on how viable a picagl solution would be?
 

ccawley2011

Member
Newcomer
Joined
May 12, 2021
Messages
16
Trophies
0
Age
24
XP
210
Country
United Kingdom
As I understand it, TinyGL isn't really designed for that kind of thing, so I suspect that using picaGL would be the best approach. Currently, all of the engines using OpenGL have separate renderers for OpenGL 1.x and OpenGL (ES) 2.x, so the former should be relatively easy to adapt for the 3DS, although I'm not so familiar with the changes that would be needed on the backend side of things.
 
  • Like
Reactions: AHB

MrHuu

Well-Known Member
Member
Joined
Sep 19, 2015
Messages
562
Trophies
0
Age
37
XP
1,588
Country
Netherlands
Most platforms have have gl implemented using a SDL backend. I believe the AMIGA platform uses a gl 1.3 compatibility profile to provide a context.
But without looking further into it, I'm not sure if that equals the actual minimum used.
 

AHB

Active Member
Newcomer
Joined
Mar 9, 2016
Messages
40
Trophies
0
Age
34
XP
436
Country
United States
I just found a couple of potentially useful things on github: A project working to overhaul tinyGL and a 3DS implementation by one of said project's maintainers.
___________________________________________________________________________________

May 25, 2021:
@MrHuu @ccawley2011 @MasterFeizz Correct me if I'm wrong, but if some rendering-related functionality was to be relegated to the 3DS hardware, it seems like the underlying math should be part of that. If that is the case (don't bother reading the rest of this if it isn't), it might present a snag.

From looking at the code, it looks like both citro3D and picaGL use fixed 4x4 matrices (made up of 4 4x1 vector matrices) - which, according to the citro3d source code, matches the PICA200 GPU layout - while ScummVM uses variably-sized matrices. Off the top of my head, it seems like the simplest solution would be to convert the ScummVM vectors/matrices to and from PICA vectors/matrices as needed. Would this cause a noticeable hit to performance?
___________________________________________________________________________________

May 26, 2021:
Don't hesitate to call me out and/or correct me if it's clear I have no idea what I'm talking about. Frankly, it feels like the more I look into this, the less sure I am about things I thought I had at least a tenuous grasp on. :unsure:
 
Last edited by AHB,

AHB

Active Member
Newcomer
Joined
Mar 9, 2016
Messages
40
Trophies
0
Age
34
XP
436
Country
United States
Blade Runner runs pretty much perfectly on 3DS. This could possibly be related to the fact that does not rely on OpenGL nor on TinyGL. If so, perhaps whatever's allowing the BLADERUNNER engine's graphics library to function on the 3DS could be adapted to TinyGL?

Also yeah, pretty much rambling to myself at this point.

EDIT: Huh, so post-merging only happens within a specific window after the post, and I guess adding @'s in an edit doesn't ping the user. No wonder I've been talking to myself. Good to know nearly two weeks after the fact! :creep:
 
Last edited by AHB,
  • Like
Reactions: MarioKartFan

MrHuu

Well-Known Member
Member
Joined
Sep 19, 2015
Messages
562
Trophies
0
Age
37
XP
1,588
Country
Netherlands
I have to start looking into the project again before i can be of any use.
I do like to checkout that TinyGL implementation for 3ds, that should be relatively easy to implement. Not sure about it's capabilities though.

Doesn't bladerunner use regular sprites? I was under the impression it doesn't have 3d rendered scenes.
Unfortunately i don't think we have much options next to using some sort of GL implementation.
 

AHB

Active Member
Newcomer
Joined
Mar 9, 2016
Messages
40
Trophies
0
Age
34
XP
436
Country
United States
Doesn't bladerunner use regular sprites? I was under the impression it doesn't have 3d rendered scenes.
The background is 2D, but the characters are 3D, which is similar to The Longest Journey, Syberia, Grim Fandango, etc. Looking into it, Blade Runner apparently used "slice animations" for optimization.
LouisCastle on May 28, 2018 [–]

Fun! Yeah, we stored our data as slices for space and restricted rotation to the Y axis. Both were optimization since each frame of an animation was a full model there was no need to rotate them. The renderer could render them from any angle though so I still consider them voxels. More like voxels lite then voxel plus. We also used a lot of sprite cards with zdepth and a quick normal hack for lighting. You had to cut corners where you could back then!!
 
  • Like
Reactions: MrHuu

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Cranesbill @ Cranesbill: Hi Hi