mirror of
https://github.com/italicsjenga/agb.git
synced 2024-12-23 08:11:33 +11:00
large logs get split into multiple prints
This commit is contained in:
parent
9fc52000fe
commit
7044c08100
|
@ -32,15 +32,13 @@ pub(crate) fn test_runner_measure_cycles() {
|
||||||
NUMBER_OF_CYCLES.set(0);
|
NUMBER_OF_CYCLES.set(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct Mgba {
|
pub struct Mgba {}
|
||||||
bytes_written: usize,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Mgba {
|
impl Mgba {
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn new() -> Option<Self> {
|
pub fn new() -> Option<Self> {
|
||||||
if is_running_in_mgba() {
|
if is_running_in_mgba() {
|
||||||
Some(Mgba { bytes_written: 0 })
|
Some(Mgba {})
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
@ -51,30 +49,32 @@ impl Mgba {
|
||||||
output: core::fmt::Arguments,
|
output: core::fmt::Arguments,
|
||||||
level: DebugLevel,
|
level: DebugLevel,
|
||||||
) -> Result<(), core::fmt::Error> {
|
) -> Result<(), core::fmt::Error> {
|
||||||
write!(self, "{output}")?;
|
let mut writer = MgbaWriter { bytes_written: 0 };
|
||||||
|
write!(&mut writer, "{output}")?;
|
||||||
self.set_level(level);
|
self.set_level(level);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct MgbaWriter {
|
||||||
|
bytes_written: usize,
|
||||||
|
}
|
||||||
|
|
||||||
impl Mgba {
|
impl Mgba {
|
||||||
pub fn set_level(&mut self, level: DebugLevel) {
|
pub fn set_level(&mut self, level: DebugLevel) {
|
||||||
DEBUG_LEVEL.set(DEBUG_FLAG_CODE | level as u16);
|
DEBUG_LEVEL.set(DEBUG_FLAG_CODE | level as u16);
|
||||||
self.bytes_written = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl core::fmt::Write for Mgba {
|
impl core::fmt::Write for MgbaWriter {
|
||||||
fn write_str(&mut self, s: &str) -> Result<(), core::fmt::Error> {
|
fn write_str(&mut self, s: &str) -> Result<(), core::fmt::Error> {
|
||||||
let mut str_iter = s.bytes();
|
for b in s.bytes() {
|
||||||
while self.bytes_written < 255 {
|
if self.bytes_written > 255 {
|
||||||
match str_iter.next() {
|
DEBUG_LEVEL.set(DEBUG_FLAG_CODE | DebugLevel::Info as u16);
|
||||||
Some(byte) => {
|
self.bytes_written = 0;
|
||||||
OUTPUT_STRING.set(self.bytes_written, byte);
|
|
||||||
self.bytes_written += 1;
|
|
||||||
}
|
|
||||||
None => return Ok(()),
|
|
||||||
}
|
}
|
||||||
|
OUTPUT_STRING.set(self.bytes_written, b);
|
||||||
|
self.bytes_written += 1;
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue