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 - L. Spiro

Pages: 1 [2]
26
Completely Unrelated / I am under martial law.
« on: 2006-09-19 18:58:07 »
http://news.bbc.co.uk/2/hi/asia-pacific/5361512.stm

http://bangkok.usembassy.gov/


This is particularly bad for me as I work/stay in the Thai Ministry of Justice which has already been bombed while I was in it.
There are tanks and military units all over Bangkok.


L. Spiro

27
Completely Unrelated / Art
« on: 2006-09-13 08:04:11 »
Well the fact is, I really don’t like drawing.
Just boring for me.

But a girl I know asked me to draw her.

This is the first portrait I have done in years, and since there probably won’t be another for years, I thought I would share it.
http://www.memoryhacking.com/Pictures/Panda1.jpg


She hasn’t seen it yet, but I hope she will like it.
What do you think?



I had these other ones laying aound here.
Maybe some might be interested.
http://www.memoryhacking.com/Pictures/Eye%203Square.JPG
http://www.memoryhacking.com/Pictures/Eyes.JPG

Some Neon Genesis Evangelion to go with the other thread:
http://www.memoryhacking.com/Pictures/Above%20Rei%20and%20Asuka.jpg
http://www.memoryhacking.com/Pictures/Above%20Rei.jpg
(Yes, I drew these from looking at posters, not from my mind.)

Some computer ones:
http://www.memoryhacking.com/Pictures/Cape%20Woman.png
http://www.memoryhacking.com/Pictures/GreenGirl.png (I guess you’ve seen this huh?)




If you have any art to share with the world, post it here.   :-D


L. Spiro

28
What a shitty week, and it’s just dropping more and more.


Over a long period of time I have been going deeper and deeper into a slum.
This dates back to before the Sony offensive-ad crap, which in itself didn’t help (and has kept me from coming here at all over the last few weeks).

During my time in Thailand I’ve managed to accumulate one actual friend, who actually played games and all that with me.
Somehow we managed to have a fight, and he decided never to speak to me again.  Then he quit his job here, so I never get to see him again to set things straight.
So I’ve lost my only friend, basically, but try to ignore it and move on (especially given how much of an asshole he was at the end), so as not to fall into the dark.

Over a long period of time I had gotten by without companionship aside from him, and even though I had needed female companionship for a while, losing my only friend just made it worse.
A discussion with my boss led me on a search to find a girlfriend, literally for my own health.
To have a nice caring woman waiting for me at home would really help make all the other troubles go away.

So I start meeting women.

Finally it’s 3 that I like, though I had only met two of them in person.
While getting to know these three, I thought there was hope.  My attitude was finally improving.

As for the other two, I met them in person, and we had MSN.  I could talk to them often online and things were going great.
I had confidence.  I could smile.

This is just the calm before the storm.


So this week, first thing, the best way to start off my week is to get an e-mail from my mother explaining that my nephew has hanged himself because he had a fight with his mother.
He was 15.
How fucking stupid.
Jesus Christ how fucking stupid.  I can’t believe this kid would do that.  How could he think his world is the only world??  How selfish can you be??
Take your own fucking life to prove a point that doesn’t even matter in the first place?
How do you not realize that at the age of 15, your world is insignificant?
How do you not realize that when you grow up, you look back and think about how stupid you were?
You can do a lot of stupid shit and then grow up and look back and think about how stupid it was.  The only difference is with suicide, you don’t get the chance to look back.
Don’t get me wrong.
He was my favorite nephew.  But that’s just bullshit.  I can sound harsh because I already know how it was.
I have the scars from my own suicide attempts, and I know what the hell he was thinking.  He wasn’t depressed.  He was pissed and wanted to make a point.
And that’s the third funeral I’ve missed in 2 years since I have been here.
And now all I see are images of him hanging there.  Wonderful.


So I guess somewhere along the line I got a bit stressed out and somehow became inflicted with acid reflux disease.
Now I have to swallow constantly and take tons of pills, etc.
Lovely.  I love it when life gets harder for no reason.


So now I’m trying to talk less to these girls because with my mood I know I wouldn’t be able to have a “happy” conversation, and I don’t want to bum them out.
So I try to reduce the conversations a bit but not so much they think I don’t like them.


Some shit at work happens, followed by some more shit before the weekend.

Finally I wanted to meet that last girl I hadn’t met yet, thinking this might be a good way to cheer up.


So we go to a big mall here.  She is 10 minutes late.  Okay, fine.  I am happy she is here.
We walk for 5 minutes and discuss our eating plans.
Dairy Queen and Chester’s Grill are next to each other, so I would get a snack at Dairy queen and she would get a seat at Chester’s Grill, then I would catch up and eat with her.
So I get my food and go.
She wasn’t there.
I walked around the area, then went back to Dairy Queen knowing she would go there to look for me.
I waited 1.5 hours and called her 23 times.
She didn’t come and didn’t answer her fucking phone.
Yes, that’s right.
She just fucking left.
Waste my time and money.  I had to throw away my ice cream because it melted and got too cold for my hands.
Thanks a lot, fucking asshole.


Nice.
So let’s see how we can make this day worse.


That night, girl #1 of the remaining 2 came online.
She asked how my day was.  Without explaining the details, I summed it up as “Pure shit.  And you?”
To which she replied, “I had a great day!”.
She then proceeds to tell me all about some guy who came up to her on the street and asked her the time, then told her he didn’t really want to know the time but just wanted to talk to her.
Then told me all about how “special” he is and some more bullshit.
Fucking lovely.
Trying not to be a bummer for her, I just told her that was great and I was glad she had a good day.  But I was really about to explode.


Next day, girl #2 sends her friend to chat with me.
Her friend speaks more English and wanted to practice.
This girl is really the girl I like most, as she likes a lot of the things I like, including Japan.
Quite frankly, if this girl would like me, I could easily forget about all the other bullshit.

Later that day her friend comes online and asks me if I want to go out for the night.
I am quite happy at this point.
We arrange our meeting at McDonald’s.
Then, I got the stupidest piece-of-shit taxi driver on the planet.
He drove like a grandma on Xanax.  Everyone was passing us at 20 miles per hour.
Then we finally get there and he doesn’t have a single coin for change.
I had to waste more time going inside the mall to get change, twice.
How can you be a taxi driver without any money on you at all?


How fucking lovely.
By the time I walked to the meeting place, my date had left.
The one girl who mattered the most among them.


That’s just great.
Oh, and don’t think it ends there.
But I’m too busy exploding to continue.


L. Spiro

29
Completely Unrelated / Funniest Thing In A Long Time
« on: 2006-06-22 05:11:06 »
This is the funniest thing I have seen in a long time.

http://www.breakdancingelite.com/worlds-funniest-japan-pranks.htm

I laughed so hard my chest really started hurting.


L. Spiro

30
Completely Unrelated / Crysis Video
« on: 2006-06-19 14:38:29 »
14-minute Crysis video.

http://video.google.com/videoplay?docid=-3502375929069803475&q=crysis

As you can see, finding this video was a result of mad ninja skills.  It’s hardcore to type “crysis” into Google.
Unfortunately, I didn’t even manage to do that.  I got it from another forum.   :cry:


L. Spiro

31
Completely Unrelated / E3 Pictures
« on: 2006-05-15 11:29:45 »
http://www.memoryhacking.com/Pictures/E3/01_SanukBooth.jpg
My boss standing at our booth.

http://www.memoryhacking.com/Pictures/E3/02_LookKidBooth.jpg
A booth two down from ours.  I had never heard of this company.

http://www.memoryhacking.com/Pictures/E3/03_CyberPlanetBooth.jpg
The next booth down from ours.

http://www.memoryhacking.com/Pictures/E3/04_VivendiBlizzard.jpg

http://www.memoryhacking.com/Pictures/E3/05_VivendiSierra.jpg
Makers of my favorite game: Starsiege: Tribes.

http://www.memoryhacking.com/Pictures/E3/06_VivendiMobileGames1.jpg
Notice the second game from the left?

http://www.memoryhacking.com/Pictures/E3/07_VivendiMobileGames2.jpg
Look a bit closer.

http://www.memoryhacking.com/Pictures/E3/08_VivendiFlyingToaster.jpg
That’s right!  Your flying-toaster screensaver is coming back!  I was the project manager for this game.

http://www.memoryhacking.com/Pictures/E3/09_Xbox.jpg

http://www.memoryhacking.com/Pictures/E3/10_NcSoft.jpg

http://www.memoryhacking.com/Pictures/E3/11_KoreaGames.jpg

http://www.memoryhacking.com/Pictures/E3/12_SquareEnix.jpg
He’s feeling like a stud.

http://www.memoryhacking.com/Pictures/E3/13_Atari.jpg
Hmmm, didn’t we do some games for Atari too?  Let’s take a look.

http://www.memoryhacking.com/Pictures/E3/14_AtariHotPxl1.jpg
Well not a good look, but HOTPXL was made entirely here in my company for PlayStation Portable (in Python).  Not my project though I did have some involvement.

http://www.memoryhacking.com/Pictures/E3/15_AtariHotPxl2.jpg
It’s a compilation of mini-games using a custom pixel engine they have created.

http://www.memoryhacking.com/Pictures/E3/16_Sony1.jpg
Some folks are advertising Xbox 360 in the Sony booth!  Oh, and there is a PlayStation Portable that is larger than me.

http://www.memoryhacking.com/Pictures/E3/17_Sony2.jpg

http://www.memoryhacking.com/Pictures/E3/18_Sony3.jpg

http://www.memoryhacking.com/Pictures/E3/19_Nintendo.jpg
Take one step into the Pokémon zone of death and you will forever be a red-eyed zombie.

http://www.memoryhacking.com/Pictures/E3/20_THQ.jpg

http://www.memoryhacking.com/Pictures/E3/21_Ubisoft.jpg

http://www.memoryhacking.com/Pictures/E3/22_BandaiNamco.jpg

http://www.memoryhacking.com/Pictures/E3/23_NamcoMobile.jpg

http://www.memoryhacking.com/Pictures/E3/24_XBoxDetail.jpg



L. Spiro

32
Completely Unrelated / Small C++ Test.
« on: 2006-04-25 15:52:50 »
Not too hard, but a good tester of just how intimate you are with the language.

Obviously the solutions to all of these problems can be found by simply compiling the code and viewing the results, but that defeats the purpose entirely.

Try to see how many of these you know right off the top of your head.

These are all my own original questions, by the way.


DISCLAIMER: THESE QUESTIONS ARE NOT INTENDED TO BE EXAMPLES OF QUALITY CODE.  IN FACT, THE ANSWERS TO MOST THESE QUESTIONS DEMONSTRATE EXACTLY WHY YOU SHOULD NOT CODE THIS WAY.



1:
Code: [Select]
int I = 30;
int J = ((I++) + I++);

What is the value of J?

2:
Code: [Select]
int I = 0;
int J = 0;
if ( I++ == 1 && I++ == 2 ) { J = 1; }

What is the value of I after this entire code segment is processed?  Why is this significant?

3:
Code: [Select]
int I = 0;
int J = ( I++ == 1 || ++I == 1 ) ? ++I : I++;

What is the value of J?

4:
Code: [Select]
(int *)6 - (int *)2
What is the result of this expression and why?





L. Spiro

33
Completely Unrelated / Help-File Editor
« on: 2006-04-18 19:39:26 »
I am getting pretty close to finishing my custom programming language, which will be integrated into my Memory Hacking Software software.

However, I need to really document this language in its fullest, and while I am at it I need to actually document my software too.


I’m doing my own searching as we speak, but I am also asking around if anyone knows any specific free-but-good CHM editor.

Does anyone know any specific free-but-good CHM editors?


L. Spiro

34
Completely Unrelated / Corrupt-A-Wish
« on: 2006-02-15 07:52:54 »
Somehow this is actually fun depending on who joins in.

The first person makes a wish and the next poster grants the wish, but ruins it somehow.
Then he or she makes his or her own wish and the cycle continues.

For example:
Person A:
Quote
I wish I had a computer.


Person B:
Quote
Granted, but it’s a Mac.

I wish I didn’t have to go to school for a month.


Person C:
Quote
Granted.  You got caught smoking pot and you are grounded for a month.

I wish…



I guess I’ll start since no one else has said anything yet.


I wish for world-wide peace.

35
Releases / Yet More Music for FF7Music.
« on: 2005-10-31 10:57:57 »
There suddenly seems to be a vested interest in Final Fantasy® VII music, so what the hell.
I’ll post mine too.


http://www.memoryhacking.com/My%20Music/The%20Nightmare%92s%20Beginning.mp3
The Nightmare’s Beginning
I originally intended this to be a simple piece that could loop as an MP3 the way the original would loop, so you could play during your game and it would sound normal.
But actually I never got to hear it in a good loop so I don’t know if it works that way (probably not).
It is just a simple piano piece.
I did not want to add the strings in the back and I did not want to deviate from the original.


http://www.memoryhacking.com/My%20Music/Aeris%92s%A0Theme.mp3
Aeris’s Theme
I really hate Aeris’s Theme (all versions of it, including the original).
I did this by request from some girl years ago but I really hate drab boring slow boring drab boring songs.




/* === Not Final Fantasy® VII === */
http://www.memoryhacking.com/My%20Music/Zeal%20Island.mp3
Zeal Island
I just wanted to have the original CD version but with better sound quality.  I didn’t change anything; just stuck to the original but used higher-quality samples.



/* === Not even Squaresoft® === */
http://www.memoryhacking.com/My%20Music/Rusty%20Bucket%20Bay.mp3
Rusty Bucket Bay
From Banjo & Kazooieâ„¢.  One of the later levels that no one has ever played (it seems).  Almost totally changed from the original.

http://www.memoryhacking.com/My%20Music/Hip%20Swamp%20Hop.mp3
Hip Swamp Hop
My personal favorite but probably not yours.  From Donkey Kong Countryâ„¢ 2: Diddy’s Kong Quest.

http://www.memoryhacking.com/My%20Music/Mines.mp3
Mines
From Donkey Kong Country™ 2: Diddy’s Kong Quest.

http://www.memoryhacking.com/My%20Music/Bramble%20Scramble.mp3
Bramble Scramble
From Donkey Kong Country™ 2: Diddy’s Kong Quest.



I guess you don’t need music from Final Fantasy® VII in FF7Music.  These are just some game songs that may be fun to hear while blasting baddies.


L. Spiro

36
I decoded it last Sunday but I didn’t say anything for two reasons.
1: I wanted to add it to my own engine to test it on all models.
2: I wanted to present it in a nice clean manner that is easy to understand.


I have already begun on the format description document.
After having used it in my own engine, I have found 100% success with all models.
Everything loads perfectly, and I applied some interpolation to smoothen everything out (with my engine running at such a high frame rate and resolution, it is very easy to see how jerky the animations are).


Shiva 1
Shiva 2

You can clearly see her animation from these shots.
Both shots are fully interpolated, so in fact what you are seeing is a frame between her real frames.

It’s very smooth this way and will make a nice addition to my engine options list.


Anyway, I have been slow about writing out the decoding routine mostly because I am having fun with my own engine now that things are moving.

But I will post code on how to decode them so mirex and the others can make models move for whatever projects they may have in the future.


L. Spiro

37
Scripting and Reverse Engineering / ficedula, look here.
« on: 2005-06-26 17:30:13 »
ficedula, did you ever get the field file formats 100% decoded?

On your most recent LGPTools, there are many drawing glitches.


L. Spiro

38
Misc. Tools / [N/A] Memory Hacking Software (2004-11-30)
« on: 2004-11-30 09:01:14 »
With Terence Fergusson and his poor Windows® ‘98 machine in mind, I decided to make a compatible Memory Hacking Software.

Memory Hacking Software (Compatible)
Tutorial for using Templates

I have not been able to test it on an actual Windows® ‘98 machine yet, however.

As far as I know, the only reason it did not work before is because it loaded process icons as its own, which required psapi.dll.
Right now I just removed that feature from the build but it makes some things a little ugly.
My general assumption is that this is acceptible since people on Windows® ‘98 don’t care about appearances anyway.



For those of you who are new and have never heard of this before, it is my own memory hacking software, called Memory Hacking Software.

It works similarly to GameHack, but it has many many more features, and some that bring into a more professional level of use (new users do not NEED to use the professional features; it can be used at any skill level).

You can use it to search for and lock values in RAM, like a GameShark®.
It can search for ints, floats, shorts, longs, bytes, chars, unsigned longs, unsigned shorts, doubles, strings, and pointers.
It also has dynamic searches to sniff for data patterns (for example, if you have a series of three bytes, and all you know is that the second byte is the same as the first byte, and the third byte is greater than the second byte).

It has a very useful hex viewer with many features, including size options, template options, and data type options.

The colored display of the hex viewer tells you if an area is executable, unreadable, or if it is just data.  It also shows you chunk boundaries.



Templates are a very large feature of this program and I can not even begin to exlain them here (well, maybe I can BEGIN).
Okay, well, consider this.
All data structures in RAM have a specific order and alignment.  Each instance of the structure is ordered the same as every other instance.

Code: [Select]
struct CAT {
    int age, height, weight, speed;
    bool isalive;
};

In RAM, we would know that the first four bytes make an integer representing the age.
The next four make the height, then the weight, and then the speed.
Then the next single byte makes a bool determining whether the cat is alive or not.
Every instance of this structure in RAM will have this same order, the same number of bytes, etc.

In my program, templates are exactly the same as structures.
You can basically declare a template where the first item is an int named “age”, the second item is an int named “height”, the third “weight”, the fourth “speed”, and the fifth item to be a byte named “isalive”.
The template can be “pasted” over RAM in real time and show you clearly where each type of data is and what its name is.

This basically makes it a breeze to map all types of data in RAM, including all the data types used in Final Fantasy® VII.



I am only mentioning the basics of templates.  Templates can go as far as you can take them, into arrays, dynamic arrays, pointers, pads, conditional breaks, etc.
As well, they can be exported and shared between us all, so anyone who creates a template should be urged to share it.

This is why I am quite eager to see what Terence Fergusson (and maybe Qhimm too?  mirex?) can do.



I am also open to suggestions on making the software better.
I have stopped working on it for a while but I may start again soon.


L. Spiro

39
This isn’t in Gears and is in fact listed as “Unknown”.

I don’t know how recent this is or how accurate, so I am just going to throw this on the table and if it’s new, it’s new, and if it is old, it’s old.



The text files inside Kernel.bin are already known to be just text so I won’t touch them.

The first 9 files are listed as unknown, so here is what they are.

1: Command data.
2: Attack data.
3: Unknown.
4: Character starting stats.
5: Item data.
6: Weapon data.
7: Armor data.
8: Accessory data.
9: Materia data.


I am not positive that number 1 is command data, but I believe it is.

Of course, we have already decoded the attacks, characters, items, weapons, armors, accessories, and Materia, but not yet the command data to my knowledge.


It seems pretty straight-forward but I can not be arsed with it.
I’m already too busy on the battle animations and the field files (the rendered images).


Anyway, I kept it short in case this is already known information, but in either case, you can update Gears with this information, halkun.


L. Spiro

40
Hopefully that is what this thread will accomplish.

I did some poking around in the file formats today and did make some ground, but for every step forward there were 23 (approximately) steps back.

I don’t think I am going to get this format decoded on my own, so I am hoping to get others intrested in it.

Here is what we know:
Battle animation formats are the **da files stored in battle.lgp.  They are fully binary and they are also the same format as the ones used in magic.lgp (for summons).

A battle enemy has an ID which can be converted into two letters, starting with “aa”.  So enemy ID 5 is “af” and enemy ID 242 is “ji”.
All the files for an enemy in battle.lgp start with those first two letters.  The postfix is what determines the type of file it is in relation to the enemy.

**da files are animations.  **aa files are heirarchy files.
The details on these are covered in other posts and in other documents so I will move along directly to the **da files of intrest here.

The first 4 bytes of the **da file represent the numebr of animations in the file, even though some animations are blank and only 16 bytes long.  They are unknown at this time.

The animations follow.  Each animation has this header (this header is revised from documents you may have):

Code: [Select]
struct s_FF7AAanimHdr {
unsigned long rec_a; //0
unsigned long frames1; //4
unsigned long block_len; //8

unsigned short frames2; //12
unsigned short real_data_len; //14
unsigned char key; //15
} FF7AAanimHdr; //size = 17 bytes



frames1 and frames2 seem to always be the same number except in the dummy animations with only 16 bytes.  Most likely frames2 is the actual number of frames.

block_len is the length of the block from there until the next animation set.
This length includes frames2, real_data_len, and key.

real_data_len is the actual number of bytes that are contained within this animation starting after key.

key is a compression indicator which determines if first frame is packed by 12 bits, 10 bits, or 8 bits.
key:   Bits:
0   12
2   10
4   8


After this header comes the actual animation data for this animation.
A single frame has XYZ translations, XYZ rotations for the root bone, and then XYZ rotations for each of the bones in the model.

The data starts with 3 shorts, which are the translations for the first frame.
They are actually stored in reverse format of everything else in Final Fantasy® VII, for completely unknown reasons.
For all references, we use Cloud’s animation file, rtda.
The header of his first animation ends at 0x15, at which point his first frame begins (ON 0x15).  You see this: 00 00 FE 2E 00 00.
These are 3 shorts in reverse (little endian) format.
Reverse the bytes in each number individually:
00 00 -> 00 00
FE 2E -> 2E FE
00 00 -> 00 00

Now they are signed shorts indicating the X Y and Z translations for Cloud’s first frame (0, -466, 0).

What comes next is a series of rotations.
Rotations are stored in the number of bits determined by “key” and each bone has 3 rotations (XYZ).

So, if key is 0, each bone requires (12 * 3 / 8) bytes, or 4.5.
If key is 2, each bone requires (10 * 3 / 8) bytes, or 3.75.
If key is 4, each bone requires (8 * 3 / 8) bytes, or 3.

To decode these, first we need to declare a ceiling.  The ceiling is the total numbers that can be held by the number of bits in each bone.
Cloud’s key is 0, so each of the rotations in his bones is 12 bits.
The numbers 12 bits can hold ranges from 0 to 4095, which is 4096 total numbers.  So “Ceiling” is 4096 here.
For 10 bits it is 1024 and for 8 bits it is 256.

The start of Cloud’s rotations is 0x1B.
Every 12 bits from here is an X, Y, or Z (in that order).  Each XYZ triplet is a bone.
So, every 4.5 bytes is a bone.  His data is as follows:
00 00 00 00 0C 00 EC E0 00 F8 2F E5…
Break this into 12-bit groups:
000 000 000 C00 ECE 000 F82 FE5…

The equation to transform the groups into angles is:
(group) * 360 / Ceiling.
So let’s do this on each rotation.
000 = (0x000) * 360 / 4096 = 0
000 = (0x000) * 360 / 4096 = 0
000 = (0x000) * 360 / 4096 = 0
C00 = (0xC00) * 360 / 4096 = 270
ECE = (0xECE) * 360 / 4096 = 333.10546875
000 = (0x000) * 360 / 4096 = 0
F82 = (0xF82) * 360 / 4096 = 348.92578125
FE5 = (0xFE5) * 360 / 4096 = 357.626953125
…
His first bone is (0, 0, 0).
His second bone is (270, 333.10546875, 0).
His third bone is (348.92578125, 357.626953125, …).


NOTE: His FIRST bone is NOT part of his skeleton.  It is his root bone and it determines the facing direction of his entire body.  His actual bones start on the second bone I listed here.

The number of bones is (Character’s Bones + 1), because the first bone is not part of his skeleton; it is his root bone.

Cloud’s first frame is (6 + 4.5 * (23 + 1)), or 114 bytes.
It starts at 0x15, so the next frame begins at 0x87.



Now here are the things that I know.
The next frame starts with 00 05 00.
These bytes indicate the change in translation from his first frame.  His first frame’s translation was (0, -466, 0), so for this frame, it is (0, -461, 0) or (+0, +5, +0).
This seems fairly direct but it is only in this simple case.

Actually the offsets are stored in 7 bits, and those 7 bits are signed.
This means from one frame to the next, a character can move anywhere from -64 to 63 units.
So, 6F would move the character -17 units.
Each frame bases itself off the previous frame.

Unfortunately that is all I really know for sure.

The offsets for each frame after the first are only stored in 7 bits for the translations. The rotations are stored differently.
And, for the translations, I do not know what the 8th bit does.
I can set the 7 bits to whatever I want his position to be, but if I set the 8th bit he starts swirling around the map in large gaping circles.

When I mess with the data immediately after the offsets for the second frame it can cause drastic changes.
On one case his whole body started flattening.  The animation (including the flattening) was smooth and repeated fine.  He flattened more and more as the animation progressed and then the first frame was run again, where he was no longer flattened at all.


Other changes to only the second frame of data have resulted in a few frames where things are fine, then his arm breaks, then a few frames later his body shifts into all directions.

The data is not packed by means of compression; it is just stored in a different format.

At this point, I can not draw conclusive ideas on the formats in which they are stored.
But I know they are definitely NOT:
Compressed
Key Framed
Full Frames

I believe Cloud’s second frame is 82 bytes total, but here I have little more than poorly based calculations for that, so do not take my word for it.


Anyone want to jump in at all?


L. Spiro

41
General Discussion / So you like to hack?
« on: 2004-06-14 12:43:05 »
Memory Hacking Software

Over a year’s production put into it, it is closer to complete than when I started it.

This should satisfy all hacking needs, but there are plenty of features in store for the future, including a possibly faster searching routine.

This software was sent to Irrational Games for hacking Tribes:Vengeanceâ„¢ and to id Software for their programmers to hack Doomâ„¢ 3.
According to id Software, they were able to hack “hidden” data with it that was not supposed to be able to be located.

I used it to make my universal auto-aim and to hack all games I hack.
When I needed a new feature, I simply added it.
It helps that way.

As for the features, since they are not listed very well on my site, and the ReadThis.txt is very outdated, I will explain them here.



After a New Search you can perform a “Changed By” subsearch.  This allows you to do an “Unknown” search and then calculate how the value (in the game) has changed and then tell the program to search for values changed by that amount.
It also has a very useful feature in the subsearch: Same as Original.
I plan to add more to this later, but for now it is the only search engine with this feature and is very helpful for unknown values.
If your E-Bar is at 100% but you do not know the actual number they used to store “full energy”, you can do an Unknown, then take damage, do a “Less Than” search, refill your energy, and then search for “Same as Original”.

After you have added a value to the main address list, you can see all memory data regarding the address.
Click the address and hit “I” (this is a hidden feature so pay attention).

You can then tell which addresses are static or if they move, etc.

Pointer searches make finding pointers a breeze.  Why would you need to find pointers?  What if the data you want moves every time your character respawns?
You need the pointer to the data of the character to keep track of where the character is in memory.
In the future, a feature to lock stored addresses to pointers will be added so that when a pointer moves the location of the memory you want to study/lock, the memory hacker will automatically move to the new location with the addresses in your main list still in tact.

Group searches?
Another first-and-only.  Let’s say you have a group of mostly unknown data.  It has maybe 30 bytes total (an unlikely example) and you know that some of the bytes are FF, 00, A0, 30, 20, and 4D (maybe you have a texture file or a bitmap, etc.).  Well you can figure out the rest.

String searches.  Common but never before with these features.
Many games store text at an offset, for example, Final Fantasy® VII storing them 32 bytes from their ASCII representatives.
So, “Albert” would become “!LBERT”, and instantly all other string-searching tools are rendered useless, unless you already know the offset value of 32, thereby allowing you to search for “!LBERT”.
My program allows you to search for all (or any number of) offsets, in the likely event you do not know if the strings are stored at an offset.
In case your “string” has a 0 character, you can use the converter tool to easily type the string into a hex line, adding 00 as you wish, and adding more characters after that.  You can search for multiple strings this way, or strings that are not actually text, and therefor could contain a 0 (be sure “String as Hex” is checked).

The RAM Watcher allows you to view RAM in real time.
You can access it directly, but also after a search.
When you have opened the results list, showing all the values the search has found, you can right-click an address from that list to open the RAM Watcher to that location and view it in real-time before adding it to the main list, in case you have two values that are very similar and you do not know which one you should add.  

The exporter should help a lot with any data files you would like to export.
It explains itself.


After you have done a search and there are a some “found addresses”, you can load the list view to see those addresses (same place where you right-click to launch the RAM Watcher).
There is a Zero All button.  Generally this is risky but you can use it to see if you are on the right track in your searching.
One example was in Perfect Darkâ„¢.  By walking on land and checking Joanna’s Z position, I can tell that the floor as it 480 units.  By searching for all floats at this height, I get two main sections of data which could match the map data.
Using Zero All, Joanna falls through the floor and the map becomes graphically tangled (though the floor itself is drawn correctly because the polygons and textures are stored in graphics RAM).
Now I know for sure one, or both of those sections reveal information about the map where I was playing.
Simpley restarting the map loads it correctly and I can export those two data sets seperately and also research each section more to figure out how they relate to the map.
One section is the collision data for that area and the other is a viewfield.  Modifying the vewfield makes random parts of the map visible depending on your position and of course modifying the collision data makes you fall to the position of the new floor.

There should be enough options for all, and I am open to suggestions for future releases.
Irrational Games asked me not to release this as it is quite powerful and could aid in the making of an auto-aim for Tribes:Vengeanceâ„¢, but since they asked me how to make their game secure, then DID NOT IMPLIMENT WHAT I TOLD THEM TO DO, and probably will not even put my name in the credits, I no longer really care.
id Software has given me permission because they implimented the changes I told them to do, and thus this tool is not capable of helping in the making of an auto-aim for Doomâ„¢ 3.



For the future, I certainly plan to make a graphical display of the RAM, showing each chunk and its location.
Clicking a chunk would then show more information about the chunk, including pointers and their targets.
Also an ASM viewer.
Also for general search features, such as a “Range” subset of the “Changed By” subsearch.
Then you can search for values that have “Changed By” any number between so-and-so, rather than the exact number you specify.


Try it out and tell me what you think.
I am eager for input on this project.
If needed, I can make another post later about how to use the pointer features as they are the trickiest and most specialized features.

42
General Discussion / I still live (damn).
« on: 2004-05-06 06:45:13 »
Well, I suppose many people on the site here do not even know who I am since I almost exclusively post in the remake forums.

Well, I am just stopping in and checking up on things.  It has been a while.
I post this here because there is no real topic in the remake section for this type of post.

Basically, I am just explaining where I have been, why I have been absent, and what is happening, etc.


Well, I got my start in hacking here, for this remake.
I liked to hack other games too and my interest grew.  I started making my own hacking utilities.
I made some software that allowed me to hack Starsiege: Tribesâ„¢, and I made a universal first-person shooter auto-aim.
It caused some ruckus and Irrational Games asked me to help ensure their upcoming game (Tribes:Vengeanceâ„¢) would not succumb to this type of cheat.

Then I moved to Thailand.
That is where I am now.  In Thailand, I have no computer of my own, so all my projects had to stop for a while.
I connect via Internet Cafés.

Recently I was contacted by id Software regarding the threat my universal auto-aim poses to Doom 3â„¢.  They requested I help them the same way I helped Irrational Games, and in fact, the head programmer for Doom 3â„¢ has invited me to work for id Software.

Of course that is hard without my computer, but we are talking about things currently.
That is the deal for now.
I do not have much time to hack anymore, and when I do have time, my computer is 8,741 miles away.
I may be able to start again if I can have my harddrive sent to me from America.  It has my tools.

Laws in Thailand change in July.  I had a job here but I lost it due to id Software.  I can find another, but if I do not have one by July 10th, I have to leave the country.  I will probably go to Japan and be a pro gamer, using the money from id Software to live.

I have a few friends who are already moving to Japan anyway, or want to go.  We may form a team and be pro gamers.

Japanese women are hot.  Tons of them here in Thailand.  Probably even more in Japan.



My future with this site is uncertain, but if anyone does decide to bump back on the development of the remake, I would still like to work on it also.
Later I should be able to find time.



Um, as for my music, well I have also had to stop on that.  I will buy another keyboard in Japan.  I have my eye on the Yamaha® MOTIF 7 ES.

43
General Discussion / Music.
« on: 2002-10-03 10:53:36 »
http://lspiro.lordtrickster.com/

Go to My Music/.

For those interested only in Final Fantasy® VII, get Aeris’s Theme (done by request) and The Nightmare’s Beginning (piano solo).

Miscellaneous tracks of interest may include Lava from Donkey Kong Country™ 2: Diddy’s Kong Quest and/or, for anyone interested in Final Fantasy®’s better component, Chrono Trigger™, Zeal Island (Time Circuits) and Robo’s Theme are there for download as well.

Each of the songs above were obviously written by someone other than myself, however, they are each my own renditions of their respective works.

All other music in that folder belongs to me wholey as original works of my own.


On a side note, I often get people informing me of how low quality MIDI seems to be.
To get them to shut up I send them to the link to Farolillo which is in the Misc Music/ folder (inside My Music/).
I did not write this song—I post it there because it is an example of just what MIDI can do.
If you doubt the powers of MIDI, get that song and consider yourself enlightened.

You can also find Zeal Island and The Nightmare’s Beginning on http://www.rpgamer.com/ and some of you may be hearing Zeal Island on the radio soon.

44
Scripting and Reverse Engineering / Several things.
« on: 2001-10-07 04:26:00 »
Point one: Does no one else have a problem reading the remake forum section?
I get a bunch of garbage.

Point two: Is it just me or does a topic die after I make a post in it?

Point three: I don’t know who else is working on enemy and attack data, but I do believe those are areas that have been left shamefully untouched.
I originally posted about this in the remake section but it was mostly ignored, and since I can’t read or post anything in the remake section anymore I think that I may have better luck posting about them here.
If anyone cares, do leave a line here.  I have dumps that I can share that seem to contain information for over 280 enemies and over 800 attacks.

45
Firstly, since this is my first time venturing here, allow me to say this is a very nice message board.  I was sent to this board by Ficedula.
I am making a smaller game out of Final Fantasy® VII and the post with the battle formula was extremely helpful to my cause.
But there are many more formulas I will need.
Each time I play through and get Yuffie (for example) she has different statistics.  Obviously there is a formula for her statistics depending on how strong your team is.  And the same is true for each character after Barret.

Also, magical equations.  What formula tells me how much damage I will deal to a regular MP if I cast Ice?  Lightning?

There are also many specific equations that deal with weapons or spells individually.  Because of the actual amount of help I need, instead of asking one person to help, I ask any readers of this post for any input at all (hence coming to a forum [duh]).

If anyone cares to know about the game I am making, it is a text-based chat game playable with any IRC client.  Players will be able to explore the entire world of Final Fantasy® VII, which includes the full storyline and text.  Players will also be able to battle human players, which I believe will be the most fun of it.

Thanks.


Pages: 1 [2]