Browse Source

Substituted hello-world example

pull/22/head
Andrea Ciliberti 3 years ago
parent
commit
46a615cae5
  1. 3
      ctru-rs/Cargo.toml
  2. 64
      ctru-rs/examples/hello-world.rs

3
ctru-rs/Cargo.toml

@ -18,3 +18,6 @@ pthread-3ds = { git = "https://github.com/Meziu/pthread-3ds.git" } @@ -18,3 +18,6 @@ pthread-3ds = { git = "https://github.com/Meziu/pthread-3ds.git" }
libc = { git = "https://github.com/Meziu/libc.git" }
bitflags = "1.0.0"
widestring = "0.2.2"
[dev-dependencies]
ferris-says = "0.2.1"

64
ctru-rs/examples/hello-world.rs

@ -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…
Cancel
Save