Andrea Ciliberti
3 years ago
2 changed files with 29 additions and 38 deletions
@ -1,56 +1,44 @@
@@ -1,56 +1,44 @@
|
||||
extern crate ctru; |
||||
use ctru::console::Console; |
||||
use ctru::gfx::{Gfx, Screen}; |
||||
use ctru::gfx::Gfx; |
||||
use ctru::services::apt::Apt; |
||||
use ctru::services::hid::{Hid, KeyPad}; |
||||
|
||||
fn main() { |
||||
// Initialize ctrulib service handles.
|
||||
// Service handles are internally reference-counted. When all instances of a
|
||||
// service handle go out of scope, the service will be closed.
|
||||
ctru::init(); |
||||
extern crate ferris_says; |
||||
|
||||
// The APT service handles application management functions, such as enabling sleep
|
||||
// mode and jumping to the home menu or to other applications
|
||||
let apt = Apt::init().unwrap(); |
||||
use std::io::BufWriter; |
||||
|
||||
// The HID service handles button and touch screen inputs.
|
||||
let hid = Hid::init().unwrap(); |
||||
|
||||
// The GFX service manages the framebuffers for the top and bottom screens.
|
||||
fn main() { |
||||
ctru::init(); |
||||
let gfx = Gfx::default(); |
||||
let hid = Hid::init().expect("Couldn't obtain HID controller"); |
||||
let apt = Apt::init().expect("Couldn't obtain APT controller"); |
||||
let _console = Console::init(gfx.top_screen.borrow_mut()); |
||||
|
||||
// Initialize a ctrulib console and direct standard output to it.
|
||||
// Consoles can be initialized on both the top and bottom screens.
|
||||
let _console = Console::init(&gfx, Screen::Top); |
||||
let out = b"Hello fellow Rustaceans, I'm on the Nintendo 3DS!"; |
||||
let width = 24; |
||||
|
||||
// Now we can print to stdout!
|
||||
println!("Hello, world!"); |
||||
let mut writer = BufWriter::new(Vec::new()); |
||||
ferris_says::say(out, width, &mut writer).unwrap(); |
||||
|
||||
// We can use escape sequences to move the cursor around the terminal.
|
||||
// The following text will be moved down 29 rows and right 16 characters
|
||||
// before printing begins.
|
||||
println!("\x1b[29;16HPress Start to exit"); |
||||
println!( |
||||
"\x1b[0;0H{}", |
||||
String::from_utf8_lossy(&writer.into_inner().unwrap()) |
||||
); |
||||
|
||||
// Main application loop.
|
||||
// Main loop
|
||||
while apt.main_loop() { |
||||
// Flushes and swaps the framebuffers when double-buffering
|
||||
// is enabled
|
||||
gfx.flush_buffers(); |
||||
gfx.swap_buffers(); |
||||
|
||||
// Wait for the next frame to begin
|
||||
gfx.wait_for_vblank(); |
||||
|
||||
// Scan for user input.
|
||||
//Scan all the inputs. This should be done once for each frame
|
||||
hid.scan_input(); |
||||
|
||||
// Check if the user has pressed the given button on this frame.
|
||||
// If so, break out of the loop.
|
||||
if hid.keys_down().contains(KeyPad::KEY_START) { |
||||
break; |
||||
} |
||||
} |
||||
// Flush and swap framebuffers
|
||||
gfx.flush_buffers(); |
||||
gfx.swap_buffers(); |
||||
|
||||
// All of our service handles will drop out of scope at this point,
|
||||
// triggering the end of our application.
|
||||
//Wait for VBlank
|
||||
gfx.wait_for_vblank(); |
||||
} |
||||
} |
Loading…
Reference in new issue