News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

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.


Topics - Magil

Pages: [1]
1
Programming / [math]Trying to convert 3d models to certain format, possible?
« on: September 05, 2016, 09:47:05 pm »
Recently I have been fiddling with Chrono Cross models and trying to find if it is possible to convert a normal 3d model into the game's native model format.

I will not go into details, let's say the game uses similar structures to current 3d softwares, that is vertices, faces, vertex groups and bones(or joints, whatever you name them). Each vertex can be connect to up to two joints, and the final position of the transformed vertex is decided by interpolating using the weights of the two. The only big difference is, the game uses two position values for those vertices that are connected to two joints.

The logic is like this (V = finaly vertex position, Vo = original vertex position):

Code: [Select]
V = Transform1(Vo1)*Weight1 + Transform2(Vo2)*(1-Weight1)
But in other 3d softwares, it is like this:

Code: [Select]
V = Transform1(Vo)*Weight1 + Transform2(Vo)*(1-Weight1)
So if I understand correctly, if there's only one Vo, it is not possible to calculate Vo1 and Vo2, or do I need extra informations to do that?

2
A while ago, I ported Radical Dreamers as a web game using Demiforce's script dump and translations on sourceforge.

The scripts are almost unchanged, except some opcode corrections because the sourceforge files are not quite up to date.
The graphics were ripped using vSNES and emulator screenshots.
The background music and sound effects were convertd using spc files or recorded using emulators (not perfect but most of them work).
The animations were recreated using javascript, but you need at least a webkit based browser(I only tested on google chrome, both desktop and android version) to see all the features, mostly because some color blending effects need it.

Direct link to the game:  JapaneseEnglish


Known issues:

1. The opening scene bgm and text not synchronized. Currently it is hard to correct it. Maybe the internet speed is a factor too. Another reason is the English text and Japanese text are not of the same length. And Javascript's timer isn't that accurate either.
2. English text wrapping problem. Because the javascript version doesn't add line breaks so the last word of a line may "jump" to the next line when more characters are being appended to the end of that line.
3. Sound effect missing/glitching. To be expected.
4. Slow down in the ending staff roll. Well, it depends on how good your cpu is. My years old PC is not too happy when too many pink birds appear on the screen.

3
ROM Hacking Discussion / PSX sound problem
« on: April 10, 2011, 11:06:37 pm »
The game is Culdcept, psx version.
After I moved the card packages to other places, something odd happened to the sound effects. That is, before a card battle, the names of the two cards will be read. But after the edit, the voice is gone, instead, a random beep or trumpet is played. :o

Thing is, I don't know how to debug sound related stuff. Any ideas on how to find the problem?

4
I took a  look at Culdcept's decompressing function and found it was too troublesome for me to write a recompressing tool (even if I can, perhaps I need to try hard to keep the recompressed data  smaller than original data). So I had an idea in mind that maybe I could let the game read the uncompressed data from CD instead (so I can append the data behind the CD, for example).

But I don't know how to do that.


The decompressing function is like this:

Code: [Select]
decompress(input_address, output_address, output_length)
Input address is stored in a1, refers to a memory address where the unheadered compressed data begins.
Output address is stored in a2, refers to a memory address where the decompressed data will be stored.
Output length is stored in a3, should be the length of the uncompressed data.

And here's my idea:

Store the sector/LBA info at the beginning of the hacked compressed data and flag it with a special byte. Let the hacked function read one byte, if it is zero (for example), read ahead to fetch the sector info and read from CD.

I've read some document but haven't figured out how to do actual CD reading. All I know is the memory address is stored at 1f8010b0, hmm...

5
ROM Hacking Discussion / Chrono Cross Enemy Editor plus a Sample ppf
« on: December 28, 2009, 08:01:16 am »

Click for a full-sized image.
http://cc.ffsky.cn/files/ccenemyedit.zip
There's a readme.txt so I'm not explaining it too much here.

Some small tricks:
* Those who played Chrono Cross will know Sprigg can doppelgang to some enemies. Those enemies use same stats as their original forms, except HP. The doppelgang data will be stored in data\enemydata.lzs, a lzss compressed file. If you want to make them different, you can use another copy of this tool set and copy the generated lzs file manually.
* Dario uses 2 textures as well as some bosses. If you want to doppelgang him, you must edit the model and texture or else it will override some other stuff in VRAM. Check the smaple info below.
* Some enemies can't be doppelganged correctly or will crash the game. That is because a) they are in disc 2 but you try to doppelgang in disc 1 b) Their model or animation data are too big. I can't test all of them, Dark Serge, Dragons for example.

Sample
* If you don't want the sample, just delete data\enemydata.bin and replace it with data\enemydata.bin.bak.
* Includes Dario and Shaker Brothers. I filled their element grids harshly. Dario uses a self-edited model and texture, so you may notice it is in lower quality. But at least I made it doppelgangable.
* Here're the ppf files if you only want a try. http://cc.ffsky.cn/files/ccenemyedit.rar
* If you don't use the save file provided, keep in mind Shaker brothers can only be learnt when you fight them for the last time -- Isle of the Damned.



Pages: [1]