From c7d6cadfe8cd45e552f80bba2c1294e4024d23d6 Mon Sep 17 00:00:00 2001 From: kjbranch Date: Thu, 15 Jan 2026 13:07:02 -0700 Subject: [PATCH 1/2] add Speed Lite gfx --- rust/maprando/src/patch.rs | 57 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/rust/maprando/src/patch.rs b/rust/maprando/src/patch.rs index 91e1d0c08..c7488f99d 100644 --- a/rust/maprando/src/patch.rs +++ b/rust/maprando/src/patch.rs @@ -2685,6 +2685,63 @@ impl Patcher<'_> { Ok(()) } + fn write_speedlite_item_graphics(&mut self) -> Result<()> { + let w = 0xc; + let frame_1: [[u8; 16]; 16] = [ + [0, 0, 0, 7, 6, 5, 4, w, w, 4, 5, 6, 7, 0, 0, 0], + [0, 0, 0, 7, 7, 7, 7, 6, 6, 7, 7, 7, 7, 0, 0, 0], + [0, 0, 0, 0, 7, 6, 5, 4, 4, 5, 6, 7, 0, 0, 0, 0], + [0, 0, 0, 7, 6, 5, 4, w, w, 4, 5, 6, 7, 0, 0, 0], + [0, 0, 0, 7, 6, 5, 4, w, w, 9, 9, 9, 7, 0, 0, 0], + [0, 0, 0, 7, 6, 5, 4, 9, 9, 9, 8, 9, 7, 0, 0, 0], + [0, 0, 0, 7, 6, 9, 9, 9, 8, 8, 9, 9, 7, 0, 0, 0], + [0, 0, 0, 7, 9, 9, 8, w, 8, 9, 9, 6, 7, 0, 0, 0], + [0, 0, 0, 9, 8, 8, w, 8, 8, 9, 5, 6, 7, 0, 0, 0], + [0, 0, 0, 7, 9, 9, 8, 8, 8, 9, 9, 6, 7, 0, 0, 0], + [0, 0, 0, 7, 6, 5, 9, 9, 8, 8, 9, 9, 7, 0, 0, 0], + [0, 0, 0, 7, 6, 5, 4, w, 9, 9, 8, 9, 7, 0, 0, 0], + [0, 0, 0, 7, 6, 5, 4, w, w, 4, 9, 9, 7, 0, 0, 0], + [0, 0, 0, 0, 7, 7, 7, 6, 6, 7, 7, 7, 0, 0, 0, 0], + [0, 0, 0, 7, 5, 6, 5, 4, 4, 5, 6, 5, 7, 0, 0, 0], + [0, 0, 0, 7, 6, 7, 7, 5, 5, 7, 7, 6, 7, 0, 0, 0], + ]; + let frame_2: [[u8; 16]; 16] = [ + [0, 0, 0, 7, 6, 5, 4, w, w, 4, 5, 6, 7, 0, 0, 0], + [0, 0, 0, 7, 7, 7, 7, 6, 6, 7, 7, 7, 7, 0, 0, 0], + [0, 0, 0, 0, 7, 6, 5, 4, 4, 5, 6, 7, 0, 0, 0, 0], + [0, 0, 0, 7, 6, 5, 4, w, w, 4, 5, 6, 7, 0, 0, 0], + [0, 0, 0, 7, 6, 5, 4, w, w, 9, 9, 9, 7, 0, 0, 0], + [0, 0, 0, 7, 6, 5, 4, 9, 9, 9, w, 9, 7, 0, 0, 0], + [0, 0, 0, 7, 6, 9, 9, 9, w, w, 9, 9, 7, 0, 0, 0], + [0, 0, 0, 7, 9, 9, w, w, 8, 9, 9, 6, 7, 0, 0, 0], + [0, 0, 0, 9, w, 8, w, 8, w, 9, 5, 6, 7, 0, 0, 0], + [0, 0, 0, 7, 9, 9, 8, w, 8, 9, 9, 6, 7, 0, 0, 0], + [0, 0, 0, 7, 6, 5, 9, 9, w, w, 9, 9, 7, 0, 0, 0], + [0, 0, 0, 7, 6, 5, 4, w, 9, 9, w, 9, 7, 0, 0, 0], + [0, 0, 0, 7, 6, 5, 4, w, w, 4, 9, 9, 7, 0, 0, 0], + [0, 0, 0, 0, 7, 7, 7, 6, 6, 7, 7, 7, 0, 0, 0, 0], + [0, 0, 0, 7, 5, 6, 5, 4, 4, 5, 6, 5, 7, 0, 0, 0], + [0, 0, 0, 7, 6, 7, 7, 5, 5, 7, 7, 6, 7, 0, 0, 0], + ]; + let frames: [[[u8; 16]; 16]; 2] = [frame_1, frame_2]; + let mut addr = snes2pc(0x899100); + for f in &frames { + for tile_y in 0..2 { + for tile_x in 0..2 { + let mut tile: [[u8; 8]; 8] = [[0; 8]; 8]; + for y in 0..8 { + for x in 0..8 { + tile[y][x] = f[tile_y * 8 + y][tile_x * 8 + x]; + } + } + write_tile_4bpp(self.rom, addr, tile)?; + addr += 32; + } + } + } + Ok(()) + } + fn apply_room_outline(&mut self, room_idx: usize, room_ptr: usize) -> Result<()> { let room = &self.game_data.room_geometry[room_idx]; let room_x = self.rom.read_u8(room.rom_address + 2)?; From a2ccac6c62902e435994231a1df5b770e89d0d53 Mon Sep 17 00:00:00 2001 From: kjbranch Date: Sun, 18 Jan 2026 12:09:15 -0700 Subject: [PATCH 2/2] redraw icon, rename, add blue booster --- rust/maprando/src/patch.rs | 123 +++++++++++++++++++++++++++---------- 1 file changed, 90 insertions(+), 33 deletions(-) diff --git a/rust/maprando/src/patch.rs b/rust/maprando/src/patch.rs index c7488f99d..bc7a76d66 100644 --- a/rust/maprando/src/patch.rs +++ b/rust/maprando/src/patch.rs @@ -2685,43 +2685,100 @@ impl Patcher<'_> { Ok(()) } - fn write_speedlite_item_graphics(&mut self) -> Result<()> { + fn write_longbooster_item_graphics(&mut self) -> Result<()> { let w = 0xc; let frame_1: [[u8; 16]; 16] = [ - [0, 0, 0, 7, 6, 5, 4, w, w, 4, 5, 6, 7, 0, 0, 0], - [0, 0, 0, 7, 7, 7, 7, 6, 6, 7, 7, 7, 7, 0, 0, 0], - [0, 0, 0, 0, 7, 6, 5, 4, 4, 5, 6, 7, 0, 0, 0, 0], - [0, 0, 0, 7, 6, 5, 4, w, w, 4, 5, 6, 7, 0, 0, 0], - [0, 0, 0, 7, 6, 5, 4, w, w, 9, 9, 9, 7, 0, 0, 0], - [0, 0, 0, 7, 6, 5, 4, 9, 9, 9, 8, 9, 7, 0, 0, 0], - [0, 0, 0, 7, 6, 9, 9, 9, 8, 8, 9, 9, 7, 0, 0, 0], - [0, 0, 0, 7, 9, 9, 8, w, 8, 9, 9, 6, 7, 0, 0, 0], - [0, 0, 0, 9, 8, 8, w, 8, 8, 9, 5, 6, 7, 0, 0, 0], - [0, 0, 0, 7, 9, 9, 8, 8, 8, 9, 9, 6, 7, 0, 0, 0], - [0, 0, 0, 7, 6, 5, 9, 9, 8, 8, 9, 9, 7, 0, 0, 0], - [0, 0, 0, 7, 6, 5, 4, w, 9, 9, 8, 9, 7, 0, 0, 0], - [0, 0, 0, 7, 6, 5, 4, w, w, 4, 9, 9, 7, 0, 0, 0], - [0, 0, 0, 0, 7, 7, 7, 6, 6, 7, 7, 7, 0, 0, 0, 0], - [0, 0, 0, 7, 5, 6, 5, 4, 4, 5, 6, 5, 7, 0, 0, 0], - [0, 0, 0, 7, 6, 7, 7, 5, 5, 7, 7, 6, 7, 0, 0, 0], + [0, 0, 7, 6, 5, 4, 4, w, 4, 4, 5, 6, 7, 0, 0, 0], + [0, 0, 7, 7, 7, 6, 6, 5, 6, 6, 7, 7, 7, 0, 0, 0], + [0, 0, 0, 7, 6, 5, 5, 4, 5, 5, 6, 7, 0, 0, 0, 0], + [0, 0, 7, 6, 5, 4, 4, 9, 4, 4, 5, 6, 7, 0, 0, 0], + [0, 0, 7, 6, 5, 4, 9, 1, 9, 4, 5, 6, 7, 0, 0, 0], + [0, 0, 7, 6, 5, 4, 9, 1, 9, 9, 5, 6, 7, 0, 0, 0], + [0, 0, 7, 6, 5, 9, 1, w, 1, 9, 5, 6, 7, 0, 0, 0], + [0, 0, 7, 6, 5, 9, 1, 1, w, 9, 9, 6, 7, 0, 0, 0], + [0, 0, 7, 6, 9, 1, 1, 1, 1, 1, 9, 6, 7, 0, 0, 0], + [0, 0, 7, 6, 9, 1, 9, 9, 9, 1, 9, 9, 7, 0, 0, 0], + [0, 0, 7, 9, 1, 9, 9, w, 9, 9, 1, 9, 7, 0, 0, 0], + [0, 0, 7, 9, 9, 9, 4, w, 4, 9, 9, 9, 7, 0, 0, 0], + [0, 0, 7, 6, 5, 4, 4, w, 4, 4, 5, 6, 7, 0, 0, 0], + [0, 0, 0, 7, 7, 6, 6, 5, 6, 6, 7, 7, 0, 0, 0, 0], + [0, 0, 7, 5, 6, 5, 4, w, 4, 5, 6, 5, 7, 0, 0, 0], + [0, 0, 7, 6, 7, 7, 5, 4, 5, 7, 7, 6, 7, 0, 0, 0], ]; let frame_2: [[u8; 16]; 16] = [ - [0, 0, 0, 7, 6, 5, 4, w, w, 4, 5, 6, 7, 0, 0, 0], - [0, 0, 0, 7, 7, 7, 7, 6, 6, 7, 7, 7, 7, 0, 0, 0], - [0, 0, 0, 0, 7, 6, 5, 4, 4, 5, 6, 7, 0, 0, 0, 0], - [0, 0, 0, 7, 6, 5, 4, w, w, 4, 5, 6, 7, 0, 0, 0], - [0, 0, 0, 7, 6, 5, 4, w, w, 9, 9, 9, 7, 0, 0, 0], - [0, 0, 0, 7, 6, 5, 4, 9, 9, 9, w, 9, 7, 0, 0, 0], - [0, 0, 0, 7, 6, 9, 9, 9, w, w, 9, 9, 7, 0, 0, 0], - [0, 0, 0, 7, 9, 9, w, w, 8, 9, 9, 6, 7, 0, 0, 0], - [0, 0, 0, 9, w, 8, w, 8, w, 9, 5, 6, 7, 0, 0, 0], - [0, 0, 0, 7, 9, 9, 8, w, 8, 9, 9, 6, 7, 0, 0, 0], - [0, 0, 0, 7, 6, 5, 9, 9, w, w, 9, 9, 7, 0, 0, 0], - [0, 0, 0, 7, 6, 5, 4, w, 9, 9, w, 9, 7, 0, 0, 0], - [0, 0, 0, 7, 6, 5, 4, w, w, 4, 9, 9, 7, 0, 0, 0], - [0, 0, 0, 0, 7, 7, 7, 6, 6, 7, 7, 7, 0, 0, 0, 0], - [0, 0, 0, 7, 5, 6, 5, 4, 4, 5, 6, 5, 7, 0, 0, 0], - [0, 0, 0, 7, 6, 7, 7, 5, 5, 7, 7, 6, 7, 0, 0, 0], + [0, 0, 7, 6, 5, 4, 4, w, 4, 4, 5, 6, 7, 0, 0, 0], + [0, 0, 7, 7, 7, 6, 6, 5, 6, 6, 7, 7, 7, 0, 0, 0], + [0, 0, 0, 7, 6, 5, 5, 4, 5, 5, 6, 7, 0, 0, 0, 0], + [0, 0, 7, 6, 5, 4, 4, 9, 4, 4, 5, 6, 7, 0, 0, 0], + [0, 0, 7, 6, 5, 4, 9, w, 9, 4, 5, 6, 7, 0, 0, 0], + [0, 0, 7, 6, 5, 4, 9, 1, 9, 9, 5, 6, 7, 0, 0, 0], + [0, 0, 7, 6, 5, 9, 1, w, w, 9, 5, 6, 7, 0, 0, 0], + [0, 0, 7, 6, 5, 9, w, 1, w, 9, 9, 6, 7, 0, 0, 0], + [0, 0, 7, 6, 9, w, 1, w, 1, w, 9, 6, 7, 0, 0, 0], + [0, 0, 7, 6, 9, w, 9, 9, 9, w, 9, 9, 7, 0, 0, 0], + [0, 0, 7, 9, w, 9, 9, w, 9, 9, w, 9, 7, 0, 0, 0], + [0, 0, 7, 9, 9, 9, 4, w, 4, 9, 9, 9, 7, 0, 0, 0], + [0, 0, 7, 6, 5, 4, 4, w, 4, 4, 5, 6, 7, 0, 0, 0], + [0, 0, 0, 7, 7, 6, 6, 5, 6, 6, 7, 7, 0, 0, 0, 0], + [0, 0, 7, 5, 6, 5, 4, w, 4, 5, 6, 5, 7, 0, 0, 0], + [0, 0, 7, 6, 7, 7, 5, 4, 5, 7, 7, 6, 7, 0, 0, 0], + ]; + let frames: [[[u8; 16]; 16]; 2] = [frame_1, frame_2]; + let mut addr = snes2pc(0x899100); + for f in &frames { + for tile_y in 0..2 { + for tile_x in 0..2 { + let mut tile: [[u8; 8]; 8] = [[0; 8]; 8]; + for y in 0..8 { + for x in 0..8 { + tile[y][x] = f[tile_y * 8 + y][tile_x * 8 + x]; + } + } + write_tile_4bpp(self.rom, addr, tile)?; + addr += 32; + } + } + } + Ok(()) + } + + fn write_bluebooster_item_graphics(&mut self) -> Result<()> { + let w = 0xc; + let frame_1: [[u8; 16]; 16] = [ + [0, 0, 0, 0, 0, 0, 3, 3, 3, 2, 2, 2, 1, 1, 1, 0], + [0, 0, 0, 0, 3, 3, 3, 2, 3, 2, 1, 2, 1, w, 1, 0], + [0, 0, 3, 3, 3, 2, 2, 3, 3, 1, 2, 2, w, 1, 1, 0], + [0, 3, 3, 2, 1, 2, 3, 3, 1, 2, 2, w, 1, 1, 0, 0], + [3, 2, 2, 1, 2, 2, 3, 1, 1, 2, w, w, 1, 0, 0, 0], + [0, 3, 3, 2, 2, 2, 3, 3, 1, 2, 2, w, 1, 1, 0, 0], + [0, 0, 0, 3, 3, 2, 2, 3, 3, 1, 2, 2, w, 1, 1, 0], + [0, 0, 0, 0, 0, 3, 3, 2, 3, 2, 1, 2, 1, w, 1, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 7, 7, 6, 6, 6, 6, 6, 6, 7, 7, 0, 0, 0], + [0, 0, 0, 0, 6, 5, 4, w, w, 4, 5, 6, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 7, 7, 6, 6, 7, 7, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 6, 5, 4, w, w, 4, 5, 6, 0, 0, 0, 0], + [0, 0, 0, 7, 7, 6, 6, 6, 6, 6, 6, 7, 7, 0, 0, 0], + [0, 7, 4, 5, 6, 5, 4, w, w, 4, 5, 6, 5, 4, 7, 0], + [0, 7, 5, 7, 7, 7, 7, 4, 4, 7, 7, 7, 7, 5, 7, 0], + ]; + let frame_2: [[u8; 16]; 16] = [ + [0, 0, 0, 0, 0, 0, 3, 3, 3, 2, 2, 2, 1, 1, 1, 0], + [0, 0, 0, 0, 3, 3, 3, 1, 3, 2, 1, 2, 1, w, 1, 0], + [0, 0, 3, 3, 3, 1, 1, 3, 3, w, 2, 2, w, 1, 1, 0], + [0, 3, 3, 1, 1, 2, 3, 3, 1, 2, 2, 1, 1, 1, 0, 0], + [3, 1, 2, 1, 2, 1, 3, 1, w, 2, 1, w, 1, 0, 0, 0], + [0, 3, 3, 2, 1, 2, 3, 3, 1, 2, 2, w, 1, 1, 0, 0], + [0, 0, 0, 3, 3, 1, 1, 3, 3, 1, 2, 2, 1, 1, 1, 0], + [0, 0, 0, 0, 0, 3, 3, 1, 3, 2, w, 2, 1, w, 1, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 7, 7, 6, 6, 6, 6, 6, 6, 7, 7, 0, 0, 0], + [0, 0, 0, 0, 6, 5, 4, w, w, 4, 5, 6, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 7, 7, 6, 6, 7, 7, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 6, 5, 4, w, w, 4, 5, 6, 0, 0, 0, 0], + [0, 0, 0, 7, 7, 6, 6, 6, 6, 6, 6, 7, 7, 0, 0, 0], + [0, 7, 4, 5, 6, 5, 4, w, w, 4, 5, 6, 5, 4, 7, 0], + [0, 7, 5, 7, 7, 7, 7, 4, 4, 7, 7, 7, 7, 5, 7, 0], ]; let frames: [[[u8; 16]; 16]; 2] = [frame_1, frame_2]; let mut addr = snes2pc(0x899100);