diff --git a/src/scripts/entis_gls/csx/v1/disasm.rs b/src/scripts/entis_gls/csx/v1/disasm.rs index 650b1c2..e7c4d4c 100644 --- a/src/scripts/entis_gls/csx/v1/disasm.rs +++ b/src/scripts/entis_gls/csx/v1/disasm.rs @@ -396,7 +396,7 @@ impl<'a> ECSExecutionImageDisassembler<'a> { self.addr )); } - let catch_addr = self.stream.read_u32()? + self.stream.pos as u32; + let catch_addr = self.stream.read_i32()? as i64 + self.stream.pos as i64; self.line(&format!("Enter \"{}\" Try-Catch {:08x}", name, catch_addr))?; } Ok(()) @@ -408,14 +408,14 @@ impl<'a> ECSExecutionImageDisassembler<'a> { } fn command_jump(&mut self) -> Result<()> { - let target_addr = self.stream.read_u32()? as u64 + self.stream.pos as u64; + let target_addr = self.stream.read_i32()? as i64 + self.stream.pos as i64; self.line(&format!("Jump {:08x}", target_addr))?; Ok(()) } fn command_cjump(&mut self) -> Result<()> { let cond = self.stream.read_u8()?; - let target_addr = self.stream.read_u32()? as u64 + self.stream.pos as u64; + let target_addr = self.stream.read_i32()? as i64 + self.stream.pos as i64; self.line(&format!("CJump {} {:08x}", cond, target_addr))?; Ok(()) } diff --git a/src/scripts/entis_gls/csx/v1/mod.rs b/src/scripts/entis_gls/csx/v1/mod.rs index 3c90535..503b9d6 100644 --- a/src/scripts/entis_gls/csx/v1/mod.rs +++ b/src/scripts/entis_gls/csx/v1/mod.rs @@ -111,6 +111,7 @@ impl Script for CSXScript { fn custom_export(&self, filename: &std::path::Path, encoding: Encoding) -> Result<()> { if self.disasm { let file = crate::utils::files::write_file(filename)?; + let file = std::io::BufWriter::new(file); self.img.disasm(Box::new(file))?; } else { let messages = self.img.export_all()?;