{"doc_urls":["introduction.html#introduction","introduction.html#other-works","ch0/index.html#chapter-0-development-setup","ch0/index.html#per-system-setup","ch0/index.html#per-project-setup","ch0/index.html#compiling","ch1/index.html#ch-1-hello-gba","ch1/hello1.html#hello1","ch1/hello1.html#explaining-hello1","ch1/hello1.html#all-those-magic-numbers","ch1/hello1.html#sidebar-volatile","ch1/io_registers.html#io-registers","ch1/the_display_control_register.html#the-display-control-register","ch1/the_display_control_register.html#video-modes","ch1/the_display_control_register.html#cgb-mode","ch1/the_display_control_register.html#page-flipping","ch1/the_display_control_register.html#oam-vram-and-blanking","ch1/the_display_control_register.html#screen-layers","ch1/the_display_control_register.html#in-conclusion","ch1/video_memory_intro.html#video-memory-intro","ch1/video_memory_intro.html#rgb15","ch1/video_memory_intro.html#mode-3","ch1/video_memory_intro.html#mode-4","ch1/video_memory_intro.html#mode-5","ch1/video_memory_intro.html#in-conclusion","ch1/hello2.html#hello2","ch2/index.html#ch-2-user-input","ch2/the_key_input_register.html#the-key-input-register","ch2/the_key_input_register.html#key-input-code","ch2/the_vcount_register.html#the-vcount-register","ch2/gba_snake.html#gba_snake"],"index":{"documentStore":{"docInfo":{"0":{"body":16,"breadcrumbs":1,"title":1},"1":{"body":30,"breadcrumbs":1,"title":1},"10":{"body":155,"breadcrumbs":6,"title":2},"11":{"body":143,"breadcrumbs":6,"title":2},"12":{"body":83,"breadcrumbs":7,"title":3},"13":{"body":174,"breadcrumbs":6,"title":2},"14":{"body":25,"breadcrumbs":6,"title":2},"15":{"body":32,"breadcrumbs":6,"title":2},"16":{"body":70,"breadcrumbs":7,"title":3},"17":{"body":54,"breadcrumbs":6,"title":2},"18":{"body":30,"breadcrumbs":5,"title":1},"19":{"body":88,"breadcrumbs":7,"title":3},"2":{"body":20,"breadcrumbs":4,"title":4},"20":{"body":47,"breadcrumbs":5,"title":1},"21":{"body":41,"breadcrumbs":6,"title":2},"22":{"body":211,"breadcrumbs":6,"title":2},"23":{"body":25,"breadcrumbs":6,"title":2},"24":{"body":47,"breadcrumbs":5,"title":1},"25":{"body":300,"breadcrumbs":5,"title":1},"26":{"body":88,"breadcrumbs":4,"title":4},"27":{"body":198,"breadcrumbs":7,"title":3},"28":{"body":532,"breadcrumbs":7,"title":3},"29":{"body":18,"breadcrumbs":6,"title":2},"3":{"body":106,"breadcrumbs":3,"title":3},"30":{"body":9,"breadcrumbs":5,"title":1},"4":{"body":93,"breadcrumbs":3,"title":3},"5":{"body":385,"breadcrumbs":1,"title":1},"6":{"body":39,"breadcrumbs":4,"title":4},"7":{"body":83,"breadcrumbs":5,"title":1},"8":{"body":312,"breadcrumbs":6,"title":2},"9":{"body":55,"breadcrumbs":7,"title":3}},"docs":{"0":{"body":"Here's a book that'll help you program in Rust on the GBA. It's very \"work in progress\". At the moment there's only one demo program.","breadcrumbs":"Introduction","id":"0","title":"Introduction"},"1":{"body":"If you want to read more about developing on the GBA there are some other good resources as well: Tonc , a tutorial series written for C, but it's what I based the ordering of this book's sections on. GBATEK , a homebrew tech manual for GBA/NDS/DSi. We will regularly link to parts of it when talking about various bits of the GBA.","breadcrumbs":"Other Works","id":"1","title":"Other Works"},"10":{"body":"We'llgetintowhatallthatisinamoment,butfirstlet'saskourselves:Whyarewedoingvolatilewrites?You'veprobablyneveruseditbeforeatall.Whatisvolatileanyway?Well,theoptimizerisprettyaggressivesomeofthetime,andsoit'llskipreadsandwriteswhenitthinkscan.Likeifyouwritetoapointeronce,andthenagainamomentlater,anditdidn'tseeanyotherreadsinbetween,it'llthinkthatitcanjustskipdoingthatfirstwritesinceit'llgetoverwrittenanyway.Sometimesthat'sright,butsometimesit'swrong.Markingareadorwriteasvolatiletellsthecompilerthatitreallymustdothataction,andintheexactorderthatwewroteitout.Itsaysthattheremightevenbespecialhardwaresideeffectsgoingonthatthecompileri