Post subject: Reconstructing visuals in Nintendo DS's interscreen gap
Senior Moderator
Joined: 8/4/2005
Posts: 5769
Location: Away
Since some people got upset at Contra 4 encoding having a logo inbetween the screens, maybe we could try reconstructing the missing image in some way using Lua scripts? For instance, it might be possible to have some of the sprites (say, bullets) move through the gap based on their coordinates and/or velocities. Any of this feasible at all?
Warp wrote:
Edit: I think I understand now: It's my avatar, isn't it? It makes me look angry.
Joined: 7/2/2007
Posts: 3960
It seems likely you'd have to recode the gapfiller for every game you wanted to encode, since each game would have sprite information in different locations in memory. Anyone know how the gap is written? I wouldn't be surprised if the DS provides the ability to treat the entire system as one big screen, in which case you might be able to capture the pixels in the gap area and cause them to actually be drawn. Er, if that made any sense.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Joined: 4/11/2006
Posts: 487
Location: North of Russia :[
No, two screens are treated separately, and sprites for objects not-on-screen might even be unloaded. Who'd waste memory on non-displayable area of uncertain height? :D
Active player (277)
Joined: 5/29/2004
Posts: 5712
If characters can pass in or out of the empty space quickly, and the screen can scroll up or down to show that area at a moment's notice, then I can't imagine that it wouldn't be drawn somewhere. I'm thinking you could at least make some kind of camera hack that moves the viewpoint up or down far enough each frame, records that now-visible space, and fills it into the middle of the regular video. Although I wonder if some horizontally-scrolling levels didn't bother putting background in the middle...
put yourself in my rocketpack if that poochie is one outrageous dude
Banned User
Joined: 3/10/2004
Posts: 7698
Location: Finland
How about instead of using a logo in the gap, you used an actual clipped photo of that part of the real device there? Probably less bothering than the logo.
Active player (277)
Joined: 5/29/2004
Posts: 5712
But hey, why pass up a chance for easy advertisement?
put yourself in my rocketpack if that poochie is one outrageous dude
Joined: 10/20/2006
Posts: 1248
Warp wrote:
How about instead of using a logo in the gap, you used an actual clipped photo of that part of the real device there? Probably less bothering than the logo.
Bag of Magic Food wrote:
But hey, why pass up a chance for easy advertisement?
How about combining those ideas and put a photoshopped photo of a DS there that has some leet TASVideos spraypaint on? XD
Joined: 10/15/2007
Posts: 685
Also, each game treats the gap differently. Some games don't even leave a gap at all.
Kirby said so, so it must be true. ( >'.')>
upthorn
He/Him
Active player, Emulator Coder (387)
Joined: 3/24/2006
Posts: 1802
Kuwaga wrote:
Warp wrote:
How about instead of using a logo in the gap, you used an actual clipped photo of that part of the real device there? Probably less bothering than the logo.
Bag of Magic Food wrote:
But hey, why pass up a chance for easy advertisement?
How about combining those ideas and put a photoshopped photo of a DS there that has some leet TASVideos spraypaint on? XD
I... actually sort of like this idea.
How fleeting are all human passions compared with the massive continuity of ducks.
Active player (277)
Joined: 5/29/2004
Posts: 5712
superjupi wrote:
Also, each game treats the gap differently. Some games don't even leave a gap at all.
Right, whatever technique you use would need some room for customization, and you'd have to make sure to only run it on the sections of the game that actually treat the entire DS as one tall playing field.
put yourself in my rocketpack if that poochie is one outrageous dude
Joined: 6/4/2009
Posts: 893
Kuwaga wrote:
How about combining those ideas and put a photoshopped photo of a DS there that has some leet TASVideos spraypaint on? XD
i like the idea too why not make a camera hack that push the camera upward for the same le ngth as the missing pixel, and simply fill the gap in a new video ( a camera hack like the sonice advance 2 one but not focused on sonic but on the missing gap... )
Tub
Joined: 6/25/2005
Posts: 1377
a simple "camera hack" probably won't do. Sonic's engine allowed free scrolling by just updating the camera's X and Y values. Contra 4 doesn't allow vertical scrolling in horizontal areas - but feel free to try, tell us what happens. IIRC the DS has two CPUs, usually one is used for each screen. That'd mean there are two seperate framebuffers. (if it was as simple as displaying an internal framebuffer, DeSmuMe would probably have an option already) so yeah, worst case is: you have to re-create the whole rendering engine in LUA, using reverse engineered ram values :/
m00
Player (67)
Joined: 3/11/2004
Posts: 1058
Location: Reykjaví­k, Ísland
Why not in the meantime use some filter that takes the color values on the pixels on the edges of the gap, and fill in the gap by using those? It's sometimes used to "remove" watermarks from pirated TV shows, etc. It would make the gap look like opaque glass instead of a black bar. It's not much of an improvement, though.
Joined: 2/12/2008
Posts: 67
Location: San Francisco Bay Area, CA
Tub wrote:
so yeah, worst case is: you have to re-create the whole rendering engine in LUA, using reverse engineered ram values :/
Yeah, this is probably what would have to happen for that to work, unfortunately. You're basically talking about changing the screen resolution of one of the screens. For some games, it might be more feasible to move the top screen farther down (i.e. eliminate the gap). If the game is actually using one playfield in memory and rendering it from two camera offsets, then it might be relatively straightforward to change the offset of the top (or bottom, or both).
Senior Moderator
Joined: 8/4/2005
Posts: 5769
Location: Away
Blublu wrote:
Why not in the meantime use some filter that takes the color values on the pixels on the edges of the gap, and fill in the gap by using those? It's sometimes used to "remove" watermarks from pirated TV shows, etc. It would make the gap look like opaque glass instead of a black bar. It's not much of an improvement, though.
That was my initial idea when I first thought about this, actually. For some reason I thought it would be more distracting than what we have now, but actually I think it wouldn't.
Warp wrote:
Edit: I think I understand now: It's my avatar, isn't it? It makes me look angry.
Banned User
Joined: 3/10/2004
Posts: 7698
Location: Finland
moozooh wrote:
Blublu wrote:
Why not in the meantime use some filter that takes the color values on the pixels on the edges of the gap, and fill in the gap by using those? It's sometimes used to "remove" watermarks from pirated TV shows, etc. It would make the gap look like opaque glass instead of a black bar. It's not much of an improvement, though.
That was my initial idea when I first thought about this, actually. For some reason I thought it would be more distracting than what we have now, but actually I think it wouldn't.
With such a big gap I doubt it would work very well. You would end up with some blurred vertical lines there which change according to what happens at the borders of the screens. IMO better something static than something that is constantly changing.
Banned User
Joined: 3/10/2004
Posts: 7698
Location: Finland
Warp wrote:
How about instead of using a logo in the gap, you used an actual clipped photo of that part of the real device there? Probably less bothering than the logo.
In fact, I think this idea could be taken even further: Add the borders of the real device to the left and right sides of the video as well. This way the center gap will feel less out-of-place. Since the video already has a very vertical resolution, making it a bit wider shouldn't be any problem (and since the added parts will be completely static, it shouldn't even make the video file any larger, at least not significantly). EDIT: As a proof-of-concept I took a pic of the DS from the net and pasted the two parts of a frame in the current TAS, to see how my idea would look: The gap seems "too" large in the real device. Does it really look like that in the real thing? Maybe if we do this, it might be a good idea to "cheat" a bit and make the gap a bit narrower by putting the two screens closer together...
Senior Moderator
Joined: 8/4/2005
Posts: 5769
Location: Away
Wow, for some reason it really does look too large. I think it shouldn't?
Warp wrote:
Edit: I think I understand now: It's my avatar, isn't it? It makes me look angry.
Player (120)
Joined: 2/11/2007
Posts: 1522
It seems that the more "open" the DS is, the further apart the screens would appear...
I make a comic with no image files and you should read it. While there is a lower class, I am in it, and while there is a criminal element I am of it, and while there is a soul in prison, I am not free. -Eugene Debs
Player (67)
Joined: 3/11/2004
Posts: 1058
Location: Reykjaví­k, Ísland
Warp wrote:
Warp wrote:
How about instead of using a logo in the gap, you used an actual clipped photo of that part of the real device there? Probably less bothering than the logo.
In fact, I think this idea could be taken even further: Add the borders of the real device to the left and right sides of the video as well. This way the center gap will feel less out-of-place. Since the video already has a very vertical resolution, making it a bit wider shouldn't be any problem (and since the added parts will be completely static, it shouldn't even make the video file any larger, at least not significantly). EDIT: As a proof-of-concept I took a pic of the DS from the net and pasted the two parts of a frame in the current TAS, to see how my idea would look: (snip) The gap seems "too" large in the real device. Does it really look like that in the real thing? Maybe if we do this, it might be a good idea to "cheat" a bit and make the gap a bit narrower by putting the two screens closer together...
Hey, that gives me an idea. If the "DS" is visible, you could show the input on it, too. So when A is being pressed in the movie, the A on the DS would be pressed as well. And so on. It would probably be a bitch to implement, though. But it would make the movie extra 1337. :)
Banned User
Joined: 3/10/2004
Posts: 7698
Location: Finland
Blublu wrote:
Hey, that gives me an idea. If the "DS" is visible, you could show the input on it, too. So when A is being pressed in the movie, the A on the DS would be pressed as well. And so on. It would probably be a bitch to implement, though. But it would make the movie extra 1337. :)
That's actually similar to the idea I wrote in the DS group some time ago. I like and fully endorse your idea. :)
Joined: 8/27/2006
Posts: 883
I would put the gap only when it matters. When the movie should have a gap, put it. But when the screen are considered on top of each other, then there should be no gap. In games like New Super Mario Bros, it doesn,t make a difference if there's a gap or not. But I does make sens in Yoshi Island DS.
Senior Moderator
Joined: 8/4/2005
Posts: 5769
Location: Away
Uh, obviously my initial suggestion was only meant for games which treat both screens as one.
Warp wrote:
Edit: I think I understand now: It's my avatar, isn't it? It makes me look angry.
Editor, Expert player (2310)
Joined: 5/15/2007
Posts: 3854
Location: Germany
But when the screen are considered on top of each other, then there should be no gap.
I suggest that a line of 1 pixel height should be added here though, to see what belongs to which screen.
Senior Moderator
Joined: 8/4/2005
Posts: 5769
Location: Away
Video codecs don't particularly like resolutions that aren't multiple of 4 (16 in some cases), so that would be minimum 4 pixel high gap.
Warp wrote:
Edit: I think I understand now: It's my avatar, isn't it? It makes me look angry.