diff --git a/src/core/bus/backup.zig b/src/core/bus/backup.zig index ef57a74..fb96f73 100644 --- a/src/core/bus/backup.zig +++ b/src/core/bus/backup.zig @@ -6,7 +6,6 @@ const Eeprom = @import("backup/eeprom.zig").Eeprom; const Flash = @import("backup/Flash.zig"); const escape = @import("../../util.zig").escape; -const span = @import("../../util.zig").span; const Needle = struct { str: []const u8, kind: Backup.Kind }; const backup_kinds = [6]Needle{ @@ -195,7 +194,7 @@ pub const Backup = struct { } fn saveName(self: *const Self, allocator: Allocator) ![]const u8 { - const title_str = span(&escape(self.title)); + const title_str = std.mem.sliceTo(&escape(self.title), 0); const name = if (title_str.len != 0) title_str else "untitled"; return try std.mem.concat(allocator, u8, &[_][]const u8{ name, ".sav" }); diff --git a/src/platform.zig b/src/platform.zig index 8e3cc87..7a9ff55 100644 --- a/src/platform.zig +++ b/src/platform.zig @@ -9,8 +9,6 @@ const Arm7tdmi = @import("core/cpu.zig").Arm7tdmi; const Scheduler = @import("core/scheduler.zig").Scheduler; const FpsTracker = @import("util.zig").FpsTracker; -const span = @import("util.zig").span; - const gba_width = @import("core/ppu.zig").width; const gba_height = @import("core/ppu.zig").height; @@ -73,7 +71,7 @@ pub const Gui = struct { return Self{ .window = window, - .title = span(title), + .title = std.mem.sliceTo(title, 0), .ctx = ctx, .program_id = program_id, .audio = Audio.init(apu), diff --git a/src/util.zig b/src/util.zig index f2d0d6b..77df231 100644 --- a/src/util.zig +++ b/src/util.zig @@ -66,57 +66,6 @@ pub fn intToBytes(comptime T: type, value: anytype) [@sizeOf(T)]u8 { return result; } -/// The Title from the GBA Cartridge is an Uppercase ASCII string which is -/// null-padded to 12 bytes -/// -/// This function returns a slice of the ASCII string without the null terminator(s) -/// (essentially, a proper Zig/Rust/Any modern language String) -pub fn span(title: *const [12]u8) []const u8 { - const end = std.mem.indexOfScalar(u8, title, '\x00'); - return title[0 .. end orelse title.len]; -} - -test "span" { - var example: *const [12]u8 = "POKEMON_EMER"; - try std.testing.expectEqualSlices(u8, "POKEMON_EMER", span(example)); - - example = "POKEMON_EME\x00"; - try std.testing.expectEqualSlices(u8, "POKEMON_EME", span(example)); - - example = "POKEMON_EM\x00\x00"; - try std.testing.expectEqualSlices(u8, "POKEMON_EM", span(example)); - - example = "POKEMON_E\x00\x00\x00"; - try std.testing.expectEqualSlices(u8, "POKEMON_E", span(example)); - - example = "POKEMON_\x00\x00\x00\x00"; - try std.testing.expectEqualSlices(u8, "POKEMON_", span(example)); - - example = "POKEMON\x00\x00\x00\x00\x00"; - try std.testing.expectEqualSlices(u8, "POKEMON", span(example)); - - example = "POKEMO\x00\x00\x00\x00\x00\x00"; - try std.testing.expectEqualSlices(u8, "POKEMO", span(example)); - - example = "POKEM\x00\x00\x00\x00\x00\x00\x00"; - try std.testing.expectEqualSlices(u8, "POKEM", span(example)); - - example = "POKE\x00\x00\x00\x00\x00\x00\x00\x00"; - try std.testing.expectEqualSlices(u8, "POKE", span(example)); - - example = "POK\x00\x00\x00\x00\x00\x00\x00\x00\x00"; - try std.testing.expectEqualSlices(u8, "POK", span(example)); - - example = "PO\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"; - try std.testing.expectEqualSlices(u8, "PO", span(example)); - - example = "P\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"; - try std.testing.expectEqualSlices(u8, "P", span(example)); - - example = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"; - try std.testing.expectEqualSlices(u8, "", span(example)); -} - /// Creates a copy of a title with all Filesystem-invalid characters replaced /// /// e.g. POKEPIN R/S to POKEPIN R_S