How did the Game Boy Advance stretch Game Boy games to widescreen?How can I rejuvenate Game Boy contacts?GameBoy Color games do not save any moreGame Boy Sound System Unused Memory LocationsWhat is this unused memory range in the Game Boy's memory map?Game Boy DMG to VGAWhy did Pokémon Red have so many overflow bugs?How do you remove an LCD bubble on an unmodified Game Boy?Game Boy save problemRole of the Z80 co-processor in GBA gamesDid GBA “load” from the cartridge, or was it read in real-time?
Redirect https to fqdn
Are randomly-generated passwords starting with "a" less secure?
Grammy Winners Grading
What package provides system call man pages on Ubuntu?
Is it rude to tell recruiters I would only change jobs for a better salary?
Was the Ford Model T black because of the speed black paint dries?
Can I call 112 to check a police officer's identity in the Czech Republic?
Is `curl something | sudo bash -` a reasonably safe installation method?
Why can't supermassive black holes merge? (or can they?)
Can I play a first turn Simic Growth Chamber to have 3 mana available in the second turn?
Is purchasing foreign currency before going abroad a losing proposition?
Are neural networks prone to catastrophic forgetting?
Repeating redundant information after dialogues, to avoid or not?
What's the minimum number of sensors for a hobby GPS waypoint-following UAV?
Professor falsely accusing me of cheating in a class he does not teach, two months after end of the class. What precautions should I take?
What's the point of this scene involving Flash Thompson at the airport?
Can an abelian group be a real vector space in more than one way?
I have a ruthless DM and I'm considering leaving the party. What are my options to minimize the negative impact to the rest of the group?
Is this floating-point optimization allowed?
Why do players in the past play much longer tournaments than today's top players?
Bishop game - python
How do Windows version numbers work?
How can one write good dialogue in a story without sounding wooden?
Dropping outliers based on "2.5 times the RMSE"
How did the Game Boy Advance stretch Game Boy games to widescreen?
How can I rejuvenate Game Boy contacts?GameBoy Color games do not save any moreGame Boy Sound System Unused Memory LocationsWhat is this unused memory range in the Game Boy's memory map?Game Boy DMG to VGAWhy did Pokémon Red have so many overflow bugs?How do you remove an LCD bubble on an unmodified Game Boy?Game Boy save problemRole of the Z80 co-processor in GBA gamesDid GBA “load” from the cartridge, or was it read in real-time?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
The original gameboy, GBP and GBC all had screen resolutions of 160x144[1] while the Game Boy Advanced had a resolution of 240x160[2]
So how does the actual stretching occur? It seems pretty uniform, but I can't wrap my head around how it's technically achievable without a second screen.
game-boy game-boy-advance
New contributor
add a comment |
The original gameboy, GBP and GBC all had screen resolutions of 160x144[1] while the Game Boy Advanced had a resolution of 240x160[2]
So how does the actual stretching occur? It seems pretty uniform, but I can't wrap my head around how it's technically achievable without a second screen.
game-boy game-boy-advance
New contributor
add a comment |
The original gameboy, GBP and GBC all had screen resolutions of 160x144[1] while the Game Boy Advanced had a resolution of 240x160[2]
So how does the actual stretching occur? It seems pretty uniform, but I can't wrap my head around how it's technically achievable without a second screen.
game-boy game-boy-advance
New contributor
The original gameboy, GBP and GBC all had screen resolutions of 160x144[1] while the Game Boy Advanced had a resolution of 240x160[2]
So how does the actual stretching occur? It seems pretty uniform, but I can't wrap my head around how it's technically achievable without a second screen.
game-boy game-boy-advance
game-boy game-boy-advance
New contributor
New contributor
New contributor
asked 10 hours ago
Christopher WirtChristopher Wirt
1263 bronze badges
1263 bronze badges
New contributor
New contributor
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Firstly, the stretching isn't done in the vertical direction: Game Boy (and Color) games only used 144 rows of the 160 available on Advance screen, so there'd be black "letterbox" bars at the top and bottom, whether you stretched the image widescreen (with the shoulder buttons) or not.
Horizontally, the image is definitely stretched. If the Advance had twice the horizontal resolution of the Game Boy, it would be easy to stretch: each column of pixels could be repeated twice. It would effectively mean that each of the Game Boy's pixels were twice as wide as before. It's not always feasible to double the resolution of your screen; it's likely that such a resolution wasn't available (or affordable) in a handheld size at the time of the Advance.
Instead, Nintendo selected a screen for the Advance that had a resolution that is one and a half times that of the original Game Boy (160 x 1.5 = 240). The two resolutions have a lowest common factor of 3, which means that a "new" column of pixels can be inserted in every third column to scale the game to widescreen. In other words, every two columns of original screen needs to be "stretched" over three columns.
But what values should be assigned to the pixels in these extra third columns? You could double up some of the original columns' pixels, doubling the "width" of all the odd columns, or perhaps the even ones. It's a simple method, but doesn't look that good, because some columns won't be doubled at all, but others will.
An alternative approach is to use a technique called interpolation.[*1] In this instance, rather than choosing to duplicate one column to fill the empty pixels, you take an average of the values in the columns to the left and the right of each empty pixel, and use this calculated value instead.
If you look closely at the Advance's display with an un-stretched Game Boy game, then a stretched one, it's possible to identify which columns have had their values calculated by this "averaging" interpolation.
If Nintendo hadn't chosen a resolution for the Advance that had such a low common factor with the Game Boy, the interpolated columns would be at less regular intervals. Some of the Game Boy's original columns would be next to the new interpolated columns, but others wouldn't. This would have the effect that sprites (e.g. Mario) and details on them would become slightly narrower and wider as the traveled across the screen. This would be distracting, and look unattractive.
- This technique is used when you resize a picture in image manipulation software such as Photoshop or GIMP. It's also used on computer LCD displays, if you select a resolution (e.g. 640x480) that doesn't match the display's native resolution (e.g 1024x768).
I'll add some images of the stretched and unstretched pixels on an actual Advance when I get a chance.
– Kaz
9 hours ago
That would definitively prove my memory as faulty, as if more proof were needed. I actually have a Gameboy Advance right now, but can't for the life of me find an original Gameboy title so that's no help. If I succeed at that, I'll grab some screenshots for you.
– Tommy
9 hours ago
@Tommy A Gameboy Color game would work just as well if you have one.
– snips-n-snails
9 hours ago
1
@Tommy You're both right. Stretching isn't done in the vertical direction, so Kaz is correct on that. In the horizontal direction, stretching is nearest neighbor as you said, not interpolated (bilinear filtered) as Kaz said.
– snips-n-snails
3 hours ago
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "648"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
noCode: true, onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Christopher Wirt is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fretrocomputing.stackexchange.com%2fquestions%2f11653%2fhow-did-the-game-boy-advance-stretch-game-boy-games-to-widescreen%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Firstly, the stretching isn't done in the vertical direction: Game Boy (and Color) games only used 144 rows of the 160 available on Advance screen, so there'd be black "letterbox" bars at the top and bottom, whether you stretched the image widescreen (with the shoulder buttons) or not.
Horizontally, the image is definitely stretched. If the Advance had twice the horizontal resolution of the Game Boy, it would be easy to stretch: each column of pixels could be repeated twice. It would effectively mean that each of the Game Boy's pixels were twice as wide as before. It's not always feasible to double the resolution of your screen; it's likely that such a resolution wasn't available (or affordable) in a handheld size at the time of the Advance.
Instead, Nintendo selected a screen for the Advance that had a resolution that is one and a half times that of the original Game Boy (160 x 1.5 = 240). The two resolutions have a lowest common factor of 3, which means that a "new" column of pixels can be inserted in every third column to scale the game to widescreen. In other words, every two columns of original screen needs to be "stretched" over three columns.
But what values should be assigned to the pixels in these extra third columns? You could double up some of the original columns' pixels, doubling the "width" of all the odd columns, or perhaps the even ones. It's a simple method, but doesn't look that good, because some columns won't be doubled at all, but others will.
An alternative approach is to use a technique called interpolation.[*1] In this instance, rather than choosing to duplicate one column to fill the empty pixels, you take an average of the values in the columns to the left and the right of each empty pixel, and use this calculated value instead.
If you look closely at the Advance's display with an un-stretched Game Boy game, then a stretched one, it's possible to identify which columns have had their values calculated by this "averaging" interpolation.
If Nintendo hadn't chosen a resolution for the Advance that had such a low common factor with the Game Boy, the interpolated columns would be at less regular intervals. Some of the Game Boy's original columns would be next to the new interpolated columns, but others wouldn't. This would have the effect that sprites (e.g. Mario) and details on them would become slightly narrower and wider as the traveled across the screen. This would be distracting, and look unattractive.
- This technique is used when you resize a picture in image manipulation software such as Photoshop or GIMP. It's also used on computer LCD displays, if you select a resolution (e.g. 640x480) that doesn't match the display's native resolution (e.g 1024x768).
I'll add some images of the stretched and unstretched pixels on an actual Advance when I get a chance.
– Kaz
9 hours ago
That would definitively prove my memory as faulty, as if more proof were needed. I actually have a Gameboy Advance right now, but can't for the life of me find an original Gameboy title so that's no help. If I succeed at that, I'll grab some screenshots for you.
– Tommy
9 hours ago
@Tommy A Gameboy Color game would work just as well if you have one.
– snips-n-snails
9 hours ago
1
@Tommy You're both right. Stretching isn't done in the vertical direction, so Kaz is correct on that. In the horizontal direction, stretching is nearest neighbor as you said, not interpolated (bilinear filtered) as Kaz said.
– snips-n-snails
3 hours ago
add a comment |
Firstly, the stretching isn't done in the vertical direction: Game Boy (and Color) games only used 144 rows of the 160 available on Advance screen, so there'd be black "letterbox" bars at the top and bottom, whether you stretched the image widescreen (with the shoulder buttons) or not.
Horizontally, the image is definitely stretched. If the Advance had twice the horizontal resolution of the Game Boy, it would be easy to stretch: each column of pixels could be repeated twice. It would effectively mean that each of the Game Boy's pixels were twice as wide as before. It's not always feasible to double the resolution of your screen; it's likely that such a resolution wasn't available (or affordable) in a handheld size at the time of the Advance.
Instead, Nintendo selected a screen for the Advance that had a resolution that is one and a half times that of the original Game Boy (160 x 1.5 = 240). The two resolutions have a lowest common factor of 3, which means that a "new" column of pixels can be inserted in every third column to scale the game to widescreen. In other words, every two columns of original screen needs to be "stretched" over three columns.
But what values should be assigned to the pixels in these extra third columns? You could double up some of the original columns' pixels, doubling the "width" of all the odd columns, or perhaps the even ones. It's a simple method, but doesn't look that good, because some columns won't be doubled at all, but others will.
An alternative approach is to use a technique called interpolation.[*1] In this instance, rather than choosing to duplicate one column to fill the empty pixels, you take an average of the values in the columns to the left and the right of each empty pixel, and use this calculated value instead.
If you look closely at the Advance's display with an un-stretched Game Boy game, then a stretched one, it's possible to identify which columns have had their values calculated by this "averaging" interpolation.
If Nintendo hadn't chosen a resolution for the Advance that had such a low common factor with the Game Boy, the interpolated columns would be at less regular intervals. Some of the Game Boy's original columns would be next to the new interpolated columns, but others wouldn't. This would have the effect that sprites (e.g. Mario) and details on them would become slightly narrower and wider as the traveled across the screen. This would be distracting, and look unattractive.
- This technique is used when you resize a picture in image manipulation software such as Photoshop or GIMP. It's also used on computer LCD displays, if you select a resolution (e.g. 640x480) that doesn't match the display's native resolution (e.g 1024x768).
I'll add some images of the stretched and unstretched pixels on an actual Advance when I get a chance.
– Kaz
9 hours ago
That would definitively prove my memory as faulty, as if more proof were needed. I actually have a Gameboy Advance right now, but can't for the life of me find an original Gameboy title so that's no help. If I succeed at that, I'll grab some screenshots for you.
– Tommy
9 hours ago
@Tommy A Gameboy Color game would work just as well if you have one.
– snips-n-snails
9 hours ago
1
@Tommy You're both right. Stretching isn't done in the vertical direction, so Kaz is correct on that. In the horizontal direction, stretching is nearest neighbor as you said, not interpolated (bilinear filtered) as Kaz said.
– snips-n-snails
3 hours ago
add a comment |
Firstly, the stretching isn't done in the vertical direction: Game Boy (and Color) games only used 144 rows of the 160 available on Advance screen, so there'd be black "letterbox" bars at the top and bottom, whether you stretched the image widescreen (with the shoulder buttons) or not.
Horizontally, the image is definitely stretched. If the Advance had twice the horizontal resolution of the Game Boy, it would be easy to stretch: each column of pixels could be repeated twice. It would effectively mean that each of the Game Boy's pixels were twice as wide as before. It's not always feasible to double the resolution of your screen; it's likely that such a resolution wasn't available (or affordable) in a handheld size at the time of the Advance.
Instead, Nintendo selected a screen for the Advance that had a resolution that is one and a half times that of the original Game Boy (160 x 1.5 = 240). The two resolutions have a lowest common factor of 3, which means that a "new" column of pixels can be inserted in every third column to scale the game to widescreen. In other words, every two columns of original screen needs to be "stretched" over three columns.
But what values should be assigned to the pixels in these extra third columns? You could double up some of the original columns' pixels, doubling the "width" of all the odd columns, or perhaps the even ones. It's a simple method, but doesn't look that good, because some columns won't be doubled at all, but others will.
An alternative approach is to use a technique called interpolation.[*1] In this instance, rather than choosing to duplicate one column to fill the empty pixels, you take an average of the values in the columns to the left and the right of each empty pixel, and use this calculated value instead.
If you look closely at the Advance's display with an un-stretched Game Boy game, then a stretched one, it's possible to identify which columns have had their values calculated by this "averaging" interpolation.
If Nintendo hadn't chosen a resolution for the Advance that had such a low common factor with the Game Boy, the interpolated columns would be at less regular intervals. Some of the Game Boy's original columns would be next to the new interpolated columns, but others wouldn't. This would have the effect that sprites (e.g. Mario) and details on them would become slightly narrower and wider as the traveled across the screen. This would be distracting, and look unattractive.
- This technique is used when you resize a picture in image manipulation software such as Photoshop or GIMP. It's also used on computer LCD displays, if you select a resolution (e.g. 640x480) that doesn't match the display's native resolution (e.g 1024x768).
Firstly, the stretching isn't done in the vertical direction: Game Boy (and Color) games only used 144 rows of the 160 available on Advance screen, so there'd be black "letterbox" bars at the top and bottom, whether you stretched the image widescreen (with the shoulder buttons) or not.
Horizontally, the image is definitely stretched. If the Advance had twice the horizontal resolution of the Game Boy, it would be easy to stretch: each column of pixels could be repeated twice. It would effectively mean that each of the Game Boy's pixels were twice as wide as before. It's not always feasible to double the resolution of your screen; it's likely that such a resolution wasn't available (or affordable) in a handheld size at the time of the Advance.
Instead, Nintendo selected a screen for the Advance that had a resolution that is one and a half times that of the original Game Boy (160 x 1.5 = 240). The two resolutions have a lowest common factor of 3, which means that a "new" column of pixels can be inserted in every third column to scale the game to widescreen. In other words, every two columns of original screen needs to be "stretched" over three columns.
But what values should be assigned to the pixels in these extra third columns? You could double up some of the original columns' pixels, doubling the "width" of all the odd columns, or perhaps the even ones. It's a simple method, but doesn't look that good, because some columns won't be doubled at all, but others will.
An alternative approach is to use a technique called interpolation.[*1] In this instance, rather than choosing to duplicate one column to fill the empty pixels, you take an average of the values in the columns to the left and the right of each empty pixel, and use this calculated value instead.
If you look closely at the Advance's display with an un-stretched Game Boy game, then a stretched one, it's possible to identify which columns have had their values calculated by this "averaging" interpolation.
If Nintendo hadn't chosen a resolution for the Advance that had such a low common factor with the Game Boy, the interpolated columns would be at less regular intervals. Some of the Game Boy's original columns would be next to the new interpolated columns, but others wouldn't. This would have the effect that sprites (e.g. Mario) and details on them would become slightly narrower and wider as the traveled across the screen. This would be distracting, and look unattractive.
- This technique is used when you resize a picture in image manipulation software such as Photoshop or GIMP. It's also used on computer LCD displays, if you select a resolution (e.g. 640x480) that doesn't match the display's native resolution (e.g 1024x768).
edited 8 hours ago
answered 9 hours ago
KazKaz
3,25210 silver badges49 bronze badges
3,25210 silver badges49 bronze badges
I'll add some images of the stretched and unstretched pixels on an actual Advance when I get a chance.
– Kaz
9 hours ago
That would definitively prove my memory as faulty, as if more proof were needed. I actually have a Gameboy Advance right now, but can't for the life of me find an original Gameboy title so that's no help. If I succeed at that, I'll grab some screenshots for you.
– Tommy
9 hours ago
@Tommy A Gameboy Color game would work just as well if you have one.
– snips-n-snails
9 hours ago
1
@Tommy You're both right. Stretching isn't done in the vertical direction, so Kaz is correct on that. In the horizontal direction, stretching is nearest neighbor as you said, not interpolated (bilinear filtered) as Kaz said.
– snips-n-snails
3 hours ago
add a comment |
I'll add some images of the stretched and unstretched pixels on an actual Advance when I get a chance.
– Kaz
9 hours ago
That would definitively prove my memory as faulty, as if more proof were needed. I actually have a Gameboy Advance right now, but can't for the life of me find an original Gameboy title so that's no help. If I succeed at that, I'll grab some screenshots for you.
– Tommy
9 hours ago
@Tommy A Gameboy Color game would work just as well if you have one.
– snips-n-snails
9 hours ago
1
@Tommy You're both right. Stretching isn't done in the vertical direction, so Kaz is correct on that. In the horizontal direction, stretching is nearest neighbor as you said, not interpolated (bilinear filtered) as Kaz said.
– snips-n-snails
3 hours ago
I'll add some images of the stretched and unstretched pixels on an actual Advance when I get a chance.
– Kaz
9 hours ago
I'll add some images of the stretched and unstretched pixels on an actual Advance when I get a chance.
– Kaz
9 hours ago
That would definitively prove my memory as faulty, as if more proof were needed. I actually have a Gameboy Advance right now, but can't for the life of me find an original Gameboy title so that's no help. If I succeed at that, I'll grab some screenshots for you.
– Tommy
9 hours ago
That would definitively prove my memory as faulty, as if more proof were needed. I actually have a Gameboy Advance right now, but can't for the life of me find an original Gameboy title so that's no help. If I succeed at that, I'll grab some screenshots for you.
– Tommy
9 hours ago
@Tommy A Gameboy Color game would work just as well if you have one.
– snips-n-snails
9 hours ago
@Tommy A Gameboy Color game would work just as well if you have one.
– snips-n-snails
9 hours ago
1
1
@Tommy You're both right. Stretching isn't done in the vertical direction, so Kaz is correct on that. In the horizontal direction, stretching is nearest neighbor as you said, not interpolated (bilinear filtered) as Kaz said.
– snips-n-snails
3 hours ago
@Tommy You're both right. Stretching isn't done in the vertical direction, so Kaz is correct on that. In the horizontal direction, stretching is nearest neighbor as you said, not interpolated (bilinear filtered) as Kaz said.
– snips-n-snails
3 hours ago
add a comment |
Christopher Wirt is a new contributor. Be nice, and check out our Code of Conduct.
Christopher Wirt is a new contributor. Be nice, and check out our Code of Conduct.
Christopher Wirt is a new contributor. Be nice, and check out our Code of Conduct.
Christopher Wirt is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Retrocomputing Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fretrocomputing.stackexchange.com%2fquestions%2f11653%2fhow-did-the-game-boy-advance-stretch-game-boy-games-to-widescreen%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown