> I managed to exploit the Nintendo DSi browser 15 years after it was released
I guess that was inevitable. So much exposed code over so much time.
I remember having a bunch of lunch/dinner discussions about this browser with the two developers actually doing that port in ~2005. It was a super secret and exciting project back then.
We worked in the same small Opera Software office of 30 people or so. They were really frustrated with the code footprint limitations of the DS.
The DSi Browser was an updated version of that original DS Browser. Don't know if it was based on the old port, or if it was redone. The DSi was more capable than the original DS, and the browser had to be redone because the old GBA-slot RAM cart was no longer supported. They switched the base to a considerably newer version of Opera. As a major advantage, the browser actually shipped with the DSi, making it much more useful than the two-cartridge getup necessary for the original DS (which, in the end, very few people ended up getting for that system).
The DSi browser was also actually good. I preferred it to the 3DS browser, by a huge margin.
I actually preferred the DSi's web browser to the browser on my iPod Touch, because the DSi's dual screens were utilized in a clever way that made it easier to view websites formatted for desktops. (Mobiile-optimized websites mostly weren't a thing yet.)
By contrast, the browser on the original DS was a barely usable nightmare. I'm sure the developers did what they could with the limited hardware available, but the result ran extremely slowly.
> They were really frustrated with the code footprint limitations of the DS.
As in the memory or the final binary size? I would have thought memory management was the tricky part -- even with the mandatory 8 MB expansion in the GBA slot -- but I suppose they would have been under even more pressure to fit it onto the smallest cart possible, with the cost of the expansion pack added for every unit
Now you're making me uncertain. I was pretty certain it was the code/binary footprint. I remember suggesting they look into using any MMU for doing code overlaying/swapping [and the DS doesn't appear to have one...].
The Opera code was very memory efficient after having gone through so many memory usage optimizations triggered by lots of mobile platform ports.
> E: I forgot about the mobile Opera ports, that also tracks - I'd love to read about the engineering that went into them!
Can't really meaningfully expand on that, most of that happened before I joined in 2004, but I can tell you that the fact that Opera was extremely memory efficient made Opera Mini (250M monthly uniques, 150k web page transcodes/s) economically possible starting 2005.
We needed to keep the browser/window state around for each user until they clicked the next link. If we threw it out, any javascript state would be lost.
Reading about Mini doing layout specifically for devices with <128px wide displays, I wonder how well today's responsive design frameworks would deal with that...
Mini did some tricks so the "display" was much wider than the device display but text columns were wrapped at device display width. So you you could zoom out and see the whole page but the text was readable when you zoomed in.
Hi! Do you remember what the limit was that prompted this costly measure? Addressable code space from the CPU? How could there be a limit in the megabytes, not gigabytes? I don't get it.
Was the DSi browser based on the same code as the DS browser?
The DS browser (which seems to be what you're talking about) was 2 physical cartridges, one that slotted into the regular DS game slot and an 8GB memory expansion cart that went in the GBA slot. The DSi's browser was built in, and the system didn't even have a GBA slot.
e: On a tangent, the Nintendo DS homebrew scene did end up with a standard (DLDI) for accessing flashcart storage, including the SD/CF slots on some GBA flashcarts -- so you would not have gotten 8 GB of RAM, but if you paid through the nose, you could potentially have made your DS swap out memory pages to an 8 GB memory card :V
I guess that was inevitable. So much exposed code over so much time.
I remember having a bunch of lunch/dinner discussions about this browser with the two developers actually doing that port in ~2005. It was a super secret and exciting project back then.
We worked in the same small Opera Software office of 30 people or so. They were really frustrated with the code footprint limitations of the DS.