You do not have permission to edit this page, for the following reason:
Free text:
PocketCompiler is an experimental Nintendo 3DS HTML/JS/CSS compiler and code editor It's designed to let you write HTML/JS/CSS on the 3DS, allowing for easy development. You can: * Edit code on the bottom screen. * Preview output/status on the top screen. * Save/load projects from the SD card. The default project path is <code>sdmc:/3ds/PocketCompiler/projects</code>/ == Features == * Basic HTML parsing. * Simple CSS. * Basic JavaScript runtime capabilities. * DOM-like elements. * Keyboard/Mouse/Touch events. * Nearly complete iframe support. * document.write() * Limited API and link fetching. * IndexedDB-adjacent SD-card storage. * Custom Canvas rendering. * Custom WebGL rendering. * Image loading. * Web audio support. == Canvas / WebGL == PocketCompiler has rendering systems for: * canvas command buffers * rectangles, lines, text, placeholders * <code>getContext("webgl")</code> detection * buffers * shaders/programs * uniforms/attributes * textures * draw calls * viewport/depth/blend/scissor state * Citro3D backend scaffolding This is not yet full WebGL. == Storage == PocketCompiler includes SD-card-backed storage systems: <pre>sdmc:/3ds/PocketCompiler/idb/ sdmc:/3ds/PocketCompiler/cache_api/ sdmc:/3ds/PocketCompiler/resource_cache/</pre> Supported or scaffolded: * IndexedDB-style databases/object stores * <code>put</code>, <code>get</code>, <code>delete</code>, <code>clear</code>, <code>count</code> * localStorage-style storage * sessionStorage-style storage * Cache API-style storage * binary-safe values * 1 MB per-value/resource cap == Audio == PocketCompiler includes a small Web Audio-style system: * AudioContext-like runtime * OscillatorNode-like node * GainNode-like node * sine/square/triangle/sawtooth tones * NDSP-backed output when available * safe fallback if audio fails == Limitations == PocketCompiler is still in early development. It does not yet fully support: * Complete HTML parsing * Full CSS layout/cascade * Full modern JavaScript/browser behavior * Complete Promise/event-loop behavior * Full WebGL 1.0 * Real GLSL shader translation * Full Canvas 2D API * Full Web Audio API * Full IndexedDB compatibility * Complete iframe isolation * Pointer lock The 3DS also has very limited RAM, CPU, GPU power, and screen space, so PocketCompiler uses strict safety limits (1 MB per resource/value/cache entry, bounded event queues, bounded command buffers, bounded editor/runtime structures) == Controls == D-Pad - Arrow key movement Circle Pad - Move mouse cursor (it's just a dot) A - Click, Edit code line B - Undo X - Save project Y - Load project Start - Run/Compile Select - Show controls menu == Screenshots == https://dlhb.gamebrew.org/3dshomebrews/images/PocketCompiler3DS2.png https://dlhb.gamebrew.org/3dshomebrews/images/PocketCompiler3DS3.png == Changelog == '''v0.36''' * '''Crash / correctness fixes:''' ** <code>editor_find</code> and <code>editor_find_prev</code>: <code>start_line</code> was not clamped before use — with a corrupted or uninitialized value it could make <code>editor_get_line</code> walk off the end of the buffer. Now clamped to <code>[0, total-1]</code>. ** <code>editor_replace_at</code>: added <code>col > llen</code> guard so an exact-end-of-line replacement can't produce a negative memcpy count. ** <code>we_eval_js</code>: added <code>!g_web_engine.loaded</code> check — without it, a stale non-NULL <code>js_ctx</code> pointer left from a previous <code>we_unload()</code> call could be dereferenced. ** <code>draw_console</code>: <code>i < WJS_LOG_MAX_LINES</code> guard added — a corrupted <code>g_wjs_log_n</code> could have caused a read past the log array bounds. * '''Compiler warning fixes:''' ** <code>(down & KEY_X) && ...</code> — explicit parentheses added (GCC -Wall warning eliminated). ** Two <code>strcat()</code> calls replaced with <code>strncat()</code>. ** <code>LAYOUT_ED_H</code> corrected to <code>178.0f</code> (was <code>180.0f</code>) — the 2px mismatch caused the cursor-to-line mapping to select the wrong line near the bottom of the editor panel. '''v0.34''' * Slight UI changes * Bordered rendering for text & iframe * Memory usage fixes * More accurate CSS parsing {| class="wikitable" |- ! File ! Fixes/Changes |- | <code>web_layout.c</code> | Body <code>avail_w</code> bug fixed: was <code>2×margin_left</code>, now <code>margin_left + margin_right</code>. |- | <code>web_layout.c</code> | Text node <code>lay_w</code> uses full available container width for alignment. |- | <code>web_render.c</code> | Scale formula <code>size/11.0f</code> → <code>size/30.0f</code> (correct for system font at scale 1.0 ≈ 30px). |- | <code>web_render.c</code> | TEXT nodes use parent container width for proper text alignment. |- | <code>web_render.c</code> | Bottom border drawn on document viewport to frame the output area. |- | <code>web_engine.c</code> | <code>css_apply_ua_defaults()</code> called after <code>css_reset()</code>, before parse — so user styles always win. |- | <code>web_engine.c</code> | RUNNING bar cleaned up; conflicting title bar overlay removed. |} '''v0.33.5''' * Hopefully fixed crashing issues '''v0.33.4''' * MAYBE fixed crashing issues (untested, will update when tested) '''v0.33.3''' * Fixed surface-level crashing issues '''v0.33.2''' * Maybe fixed crashing issues * Stability fixes * Fixed errors while compiling '''v0.33''' * Fixed scrolling * Fixed line truncation * Added more complete rendering capabilities * Added pointer lock integration * Added page interaction '''v0.32''' * Fixed the HTML rendering engine * Slight UI changes '''v0.31.1''' * Completely overhauled the UI (AI was used to help with this) * New frame buffer that minimizes the visual bug to almost unnoticeable proportions. '''Pre-Release v0.30''' * Fixed app crashing on file explorer open (MAYBE FR THIS TIME) * Fixed the visual bug (kinda) == Credits == PocketCompiler project and idea by PlanetDogeCodes (me). Some browser runtime features, custom Canvas/WebGL Integration, and 3DS Optimizations were all made with help from GPT-5.5 xhigh. Some UI elements and DOM-style event handling were made with help from Claude Sonnet 4.6 Built with: * Visual Studio Code * devkitPro * devkitARM * libctru * Citro2D * Citro3D == External links == * GitHub - https://github.com/PlanetDogeCodes/Pocket-Compiler * Universal-DB - https://db.universal-team.net/3ds/pocket-compiler
Advertising: