You do not have permission to edit this page, for the following reason:
Free text:
Interactive map viewer for the Nintendo 3DS. Pulls OpenStreetMap and Esri satellite tiles over HTTPS, does GPS tracking through your phone, has place search, route planning, favorites, and a settings UI. Everything runs directly on the handheld, no proxy needed. Tile downloads use libcurl with mbedTLS for TLS 1.2 (the 3DS's built-in HTTP service only does TLS 1.0, which most tile servers reject now). Satellite tiles are JPEGs that take 1-2 seconds to decode on the old 3DS CPU, so that work happens on background threads to keep the map from freezing. v2.0 added offline tile caching. You can download a whole region on your PC, pack it into a single file, and copy it to the SD card. The map then works without WiFi. == Features == * '''Map display.''' Top screen is the map, bottom screen is controls. Touch drag to pan, D-pad or Circle Pad also work. X/Y to zoom (levels 1-18). There's a crosshair at center, optional night mode, and a debug overlay if you want to see zoom level and cache stats. * '''Tile sources.''' Three options: OpenStreetMap streets (decoded with libpng), Esri satellite imagery (decoded with stb_image on worker threads), and Esri World Street Map. Switch between them in settings. Every tile you view gets cached to the SD card, and the 64 most recent stay in RAM. * '''Offline tilepacks.''' Run <code>tools/download_region.py</code> on your PC to bulk-download tiles, then copy one <code>.tilepack</code> file to the SD card. Way faster than transferring thousands of individual PNGs over FAT32. The app also has a "Download Region" button in settings if you want to grab tiles for your current view directly on the 3DS, though the PC tool is better for large areas. * '''GPS via phone.''' The 3DS runs a TLS server on port 8443. Open the URL on your phone's browser, grant location permission, and your GPS coordinates stream to the 3DS every second. A QR code shows on the top screen so you don't have to type anything. There's also an NMEA TCP client mode if you use an app like GPS2IP. * '''Search and routing.''' Place search via Nominatim, route planning via OSRM, reverse geocoding ("Identify" button tells you what's at map center). You can save favorite locations. There's basic panorama support too, but it needs the debug proxy running. == Installation == Copy 3ds_google_maps.3dsx to sdmc:/3ds/3ds_google_maps/ on the SD card. (Optional) Copy .tilepack files to sdmc:/3ds_google_maps/tiles/. Launch from the Homebrew Launcher. WiFi is needed for live tile downloads and GPS, but tilepacks work offline. == User guide == === Offline map caching === If you want to use the map without WiFi, or just want tiles to load instantly, you can pre-download a region on your PC. To do so you need Python 3. Then: <pre class="language-shell"># Satellite tiles, 10 km around NYC, zoom 10-14 python tools/download_region.py --lat 40.7128 --lon -74.006 --radius-km 10 --zoom 10-14 # Bigger region, more workers, skip the confirmation prompt python tools/download_region.py --lat 50.0 --lon -80.0 --radius-km 200 --zoom 6-12 -w 16 -y</pre> Output goes to <code>./3ds_google_maps/tiles/</code> by default, matching the SD card layout. Copy it over: SD card: * sdmc:/3ds_google_maps/tiles/sat.tilepack (satellite tiles) * sdmc:/3ds_google_maps/tiles/street.tilepack (street map tiles) The app finds these on startup. Re-run the script for more areas and it merges new tiles into the existing pack. === GPS phone bridge === The 3DS has no GPS, but your phone does. * Open Settings, go to the GPS tab, tap "Server" * A QR code appears on the top screen * Scan it with your phone, it opens a webpage * Allow location permission when the browser asks * Your phone starts sending coordinates to the 3DS every second * The map follows your position in real time The certificate is self-signed (compiled into the binary), so your browser will show a security warning. Tap through it ("Advanced", then "Proceed"). Both devices need to be on the same WiFi network or either connect the 3ds to your phones hotspot. '''iPhone users:''' Safari has been unreliable with the self-signed cert and geolocation on this setup. Use Google Chrome on your iPhone instead, it works much better. == Controls == D-Pad - Pan the map Circle Pad - Smooth analog pan X/Y - Zoom in/out Touch drag - Pan the map Bottom panel buttons - Search, Favorites, Recents, Route, GPS, Track, Menu A - Toggle GPS tracking B - Close settings, Go back Start - Exit the app == Screenshots == https://dlhb.gamebrew.org/3dshomebrews/images/3dsGoogleMaps.png https://dlhb.gamebrew.org/3dshomebrews/images/3dsGoogleMaps2.png == Changelog == '''v2.0''' * '''Offline Tile Caching''' ** '''Tilepack format''' — download thousands of tiles on your PC and pack them into a single <code>.tilepack</code> file for your SD card ** '''PC download tool''' (<code>tools/download_region.py</code>) — bulk tile downloader with 8 parallel workers and SHA-256 deduplication ** '''In-app Download Region''' — download tiles for your current map view directly on the 3DS (Settings > Data tab) ** '''Auto-loading''' — the app checks for <code>sat.tilepack</code> and <code>street.tilepack</code> on startup * '''New Tile Source''' ** '''Esri World Street Map''' — switchable alongside OSM and Esri satellite in the Tiles settings tab * '''Other''' ** Comprehensive README rewrite with offline caching docs ** Updated .gitignore '''v1.0.0 (Initial Release)''' * A fully-featured interactive maps application for Nintendo 3DS homebrew. ** No proxy required — map tiles are downloaded directly over HTTPS on-device using libcurl + mbedTLS ** Dual-screen display — top screen shows the map, bottom screen shows the interactive UI panel ** GPS tracking via your phone — the 3DS runs a TLS HTTPS server; scan a QR code with your phone to stream live GPS coordinates back to the console * '''Map & Navigation''' ** OpenStreetMap street tiles over HTTPS (tile.openstreetmap.org) ** Switchable satellite imagery via Esri World Imagery ** Place search — search for addresses and places via Nominatim geocoding ** Route planning — enter start & destination, route drawn on the map ** Reverse geocoding — tap “Identify” to find out what’s at the map center ** Favorites — save and recall locations (persisted to SD card) ** Recents — last 10 viewed locations remembered in-session ** Night mode for low-light use * '''Controls''' ** Touch panning — drag on the bottom screen to pan ** D-pad & Circle Pad — directional and smooth continuous panning ** L/R buttons — zoom in/out ** Red crosshair always marks the center of the map ** Debug overlay shows zoom level, tile stats, and FPS * '''GPS Phone Bridge''' ** 3DS runs a TLS 1.2 HTTPS server on port 8443 (mbedTLS) ** QR code displayed on the top screen — scan with your phone to connect instantly ** Phone streams GPS coordinates to the 3DS every second via POST /location ** Also supports NMEA TCP client mode (GPS2IP / similar apps) ** Map auto-centers on your live position when tracking is enabled * '''Tile Caching''' ** SD card cache — tiles saved to sdmc:/3ds_google_maps/tiles/ for instant offline reload ** RAM cache — up to 64 tiles held in memory ** Prefetch ring — configurable ring of tiles prefetched around the current view * '''Settings & UI''' ** Full settings panel with tabs: View, Tiles, Data, GPS ** Status bar showing current action ** Basic Street View panorama viewer (requires proxy) * '''Build Info''' ** Language: C ** Toolchain: devkitARM (devkitPro) ** Libraries: libcurl 8.4.0, mbedTLS 2.28.8, libpng, citro2d/citro3d, libctru ** Output: 3ds_google_maps.3dsx * '''Known Issues''' ** GPS server uses a self-signed cert — browsers will show a security warning (tap “Advanced → Proceed”) ** TLS handshake on Original 3DS takes ~300-500ms (normal) ** Tile downloads can be slow on O3DS (~2-4s per tile at high zoom) — hardware limitation ** libcurl on 3DS uses HTTP/1.1 only (no HTTP/2) == External links == * GitHub - https://github.com/Oldhimaster1/3ds-Google-Maps
Advertising: