Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Schala Zeal

Pages: [1] 2 3 ... 114
Just relistening. Seems these were updated, but... the tracks got... butchered. Can't find the original remastered tracks. Darn

CT OST is no more, or bad link

Fan Art / Re: 3d Epoch
« on: January 19, 2018, 11:08:27 pm »
Links no longer work and my backup drive is dead

Chrono Cross Modification / LZSS decompression... am I doing it right?
« on: September 21, 2017, 07:18:56 pm »
So I recently got into a programming language called Rust which is a systems language that's supposed to strongly prevent any possibility of memory leaks, data races, etc. Out of just randomness, I followed the wiki explanation of Chrono Cross's LZSS algorithm, and used the '2540.out' file from the CD to test this on.

I compared it to decompression via Purple Cat Tools and the decompressed files don't match. The decompressed file mine outputs is 4765 bytes  as opposed to PCT's 2160 bytes, where the decompressed size info in the file header says 2048. The contents of my file are mostly null (0 value) bytes with some data here and there while PCT outputs a file filled with data.

I noticed PCT also bitswaps in 512-byte chunks (512 * 8 = 4096, so I'm guessing the data following header is the initial buffer content?), which wasn't mentioned on the wiki, so I did the same, with... not much luck. Below is the entire code for the decode function + the test. It should be similar to C/C++.

Code: [Select]
extern crate bitstream_io;
extern crate bit_reverse;

use bitstream_io::{BitReader,LE};
use bit_reverse::ParallelReverse;
use std::io::Cursor;

pub const BUFFER_SIZE: usize = 4096;
pub const LIT_SIZE: u32 = 8;
pub const PTR_SIZE: u32 = 12;
pub const VAL_SIZE: usize = 4;
pub const VAL_ADD: isize = 2;

pub fn decode(data: &[u8]) -> Vec<u8> {
let mut ic = Cursor::new(&data);
let mut br = BitReader::<LE>::new(&mut ic);

let mut header: [u8; 4] = [0; 4];
let _ = br.read_bytes(&mut header);
assert_eq!(&header, b"sszl");

let dsize =<u32>(32).unwrap_or(0) as usize;
assert!(dsize != 0);

let unknown =<u32>(32).unwrap_or(0);

        // bitswap every byte past the header
let mut rdata = vec![0u8; data.len()-12];
for i in rdata.iter_mut() {
*i = i.swap_bits();
let mut ic = Cursor::new(&rdata);
let mut br = BitReader::<LE>::new(&mut ic);

let mut outbuf = vec![0u8; dsize];
let mut buf: [u8; BUFFER_SIZE] = [0; BUFFER_SIZE];
let mut idx: usize = 0;
while let Ok(is_val) = br.read_bit() { // TL;DR: while not end of the data
if is_val == true {
buf[idx % BUFFER_SIZE] =<u8>(LIT_SIZE).unwrap();
idx += 1;
} else {
if let Ok(offs) =<u16>(PTR_SIZE) { // compiler tends to choke without the if-let guard on this part
if let Ok(size) =<u8>(VAL_SIZE as u32) {
let sz = (size as isize) + VAL_ADD;
for i in {
outbuf.push(buf[(offs as usize)+(i as usize)]);


fn dec_test() {
use std::fs::File;
use std::io::prelude::*;

let test_data = include_bytes!("2540.out");
let mut f = File::create("test.dat").unwrap();
let ucmp = decode(&test_data[..]);

Kajar Laboratories / Re: Chrono Cross.... for the SNES!!?
« on: July 13, 2017, 08:22:17 pm »
I did come across a C compiler called snesc some years ago

Here's snesc with the SNES/SFC SDK

It would be neat to do something ambitious similar to Tales of Phantasia

VLC 2.2 introduces support for BIK files

or maybe Dalton managed to knock some girl up while on a diet of oranges and carrots

This is a long shot, but you could try Tesseract with Japanese lexiconographical data loaded.

Chrono News / Re: Chrono Сross Modification
« on: March 01, 2017, 04:31:26 am »
How's the Kid blue hair patch progressing? CD2 availability yet?

Kajar Laboratories / Re: February 3rd, 2011: 15 years of Radical Dreamers
« on: February 25, 2017, 02:37:03 am »
you mean like RD already does? :P

Kajar Laboratories / Re: February 3rd, 2011: 15 years of Radical Dreamers
« on: February 24, 2017, 03:37:58 am »
I think Radical Dreamers would benefit from a remake from Telltale Games if SEnix were ever up for it.

Chrono Trigger Modification / Re: Memory MAP
« on: February 22, 2017, 07:35:45 am »
Yeah. I doubt the debugger has source code available. Tried it out and it would seem interesting as a corruption engine.

Chrono Trigger Modification / Re: Memory MAP
« on: February 20, 2017, 08:48:26 pm »
Darn. I was hoping to make one that can like... swap character graphics in real time.

Chrono Trigger Modification / Re: Memory MAP
« on: February 20, 2017, 01:36:20 am »
I was hoping to do a CT-specific rom corruptor using this info.

Pages: [1] 2 3 ... 114