Hello everyone, this is my first post here.:icon_bigg Also, thank you ASSEMbler for finding my project and directing me here. I'm doing my first serious work on PS2 software and learning through reverse-engineering and decompiling. (Pretty much the same way most people who enjoy this stuff get started). I'm working on a game named Armored Core: Nexus, (A series of games I am a very big fan of.), and am basically trying to crack it open completely so I game do some heavy modifications. It isn't a very popular series, (Especially in the west. It's a bit more well known in Japan.), and the online community for it is small. There is a very small group of hardcore fans though. (Some have traveled nationwide for small tournaments and a few others along with myself have managed to get it playable online trough tunneling software). Anyway, what I need to do is to figure out the binary structures so I can edit what aspects I want out of the game. (Right now it's simple things like the stats of ingame objects, like the number value for how much a leg set carries, the amount of energy a generator makes etc). Eventually, (probably a very long eventually), I want to learn assembly so that I can completely rework the executables. (I don't know how to program, but I've worked with various kinds of object oriented code, scripts mostly, before and have modified quite a bit of PC gaming software over the years. However, I know that low-level language is much different. ). http://www.armoredcore.org/forums/index.php?showtopic=8995 The above link is my thread at the Armored Core site I've been a member of since forever. Eventually, (probably a very long eventually), I want to learn assembly so that I can rewrite the executables. I've done quite a bit of PC game modifying, mostly assests, but never any executable code of any kind. To get an idea of the extent of my current knowledge regarding software in general, you can see it in my above link. For know though, I'm just interested in figuring out the file structure and formats. I know this is cracking, so I'm not sure if you guys want this on your forum. The game series isn't very popular and I don't plan on releasing much of my work except to certain friends. Anyway, I would tremendously appreciate any knowledge or help.
Interesting project! I haven't played too much AC but I quite liked what I saw. This project sounds VERY time consuming, by the way. Do you intend to burn discs every time you want to test your modifications? You might be better off messing with a Gameshark to start with. I know for one that back in the PS days there was software around to hack your own codes, it wasn't that difficult even; not sure if this is still possible with the PS2 GS. If so, simple modifications can be developed and tested with much less overhead. Regarding extensive modifications of the game itself, this will definitely NOT be easy. Fortunately MIPS assembly is very easy to learn, there's even a good amount of books around as it's usually used to teach computer architecture/assembly programming to Computer Science students. Get yourself a book and get started with coding simple stuff in a simulator (SPIM or JimSwing) or for PS1/PS2 if you want something less 'dry'. However, from there it's still a LONG way to successfully RE'ing and modifying huge programs written by other people in high-level languages.
Speaking of making new copies, I'm toying with a virtual disc mounter to try and spoof a DVD drive. I haven't had any time recently to do much work, but hopefully I can just run modified disc images right off my hard drive. The Pcsx2 emulator can load basic ELFs off of any medium, but of course PS2 software isn't intended to work off partitioned space that is shared with other data, let alone hardrives and what not. Like you said, it is going to be alot of work. With that being the case, I'm just going start doing little things like you said with a GS: Changing minor numeric values etc. I have a large number of memory addresses and cheats codes laying around to get started with at least. Yeah, that sounds like a good way to start. I'll try that. BTW, something funny I learned about the ascii art on the discs: those are actual tim2 and other image files type split into RGBA channels. I think the developers made it so that they could quickly browse through and edit data. It seems that way given how there are so many data chunks seperated by a large number of null characters.
Gee, here I was not knowing any PS2 emulator was already good enough to run retail games (or any PC hardware was, for that matter). I'm not much of an emulator person as you can see =) On a related note, would somebody know if there's a way to change files INSIDE dumps made by the HD Loader software? Are they mountable somehow?
which one are you actually working on Last Raven or Nexus ? soon I should get Last Raven for first look then may be some details might come ... BTW Nexus - there are some hobby translations already made for fonts and texts one more point - what actually do you want to change inside ?
I just went researching PS2 emulation about a couple of months ago. I'm simply amazed at how far they've gone. Most games don't run well or barely. Nexus and Last Raven for example run fine until you try something outside of the garage menus. Anything else is just big-time crash. However, any title that's been popular has warranted enough patching to get it to work almost 100%. There's a list of compatability on the Pcsx2 site somewhere. I started on AC:Nexus because the developer did a major re-write of the entire game, (For what reason I'm not sure. For example, they coded in support for online play but didn't implement it in game. There's also alot of leftovers files from the first builds; various sounds, parts, opponents). There's no apparent compression, encryption and hardly any file space optimization so I think I have a good chance at accomplishing some goals. I think I'll switch to Last Raven though simply because it's the most recent release and the code structure is basically the same after some looking. The game engine hasn't changed much since AC3, which came out in 2002ish. The first actual changes I want to make are to statistics for AC parts, like AP and defense counts, cooling stats, mobility stats etc. When I get to that point, where I can make a version of the game with custom stats, I then want to try making some of the hidden parts available. (Leftovers from previous titles and demos that are still included in the newer discs). It sounds simple, but there are literally hundreds of parts and all the statistics tie together when you assemble your AC. The executable code is actually the least I *think* I need to tinker with. With what I know about how the engine works simply from enough playtime, I *should* be able to alter data files within the main binaries without much concern for anything like checksums and such. The biggest challenge for me currently is to crack the binaries and figure out the file formats. Fortunately, alot of files seem to be standard formats that Sony would give out with their SDK's.
?? When Sony would do so ?? If you would make these AC stats "in-the-game" - that would be big changes that would require hooking into the asm code and this would double/triple the dev. time... Never the less - I am still on the way to see the game , then I can say more tech. details ...
ok, basically to start getting fun with resources you dont need to know MIPS asm straight forward and now For example: Armored Core Last Raven AC.BIN - first file to start from , for the first view it is a container with defined filestructure inside. fsliblzs - keyword , here we would need to find as much as possible about lzs archieves etc olmenu.bin, olsortie.bin - Codewarrior overlays , so some part of the code is inside ( let|s leave it for now) Inside this AC.BIN you can see many usefull filenames and here I would suggest to start (search for data\menu\ ) - so writing decompress/compress for files. For this task you wouldnt need to use ps2 really much, PC will be ok as well. I didnt checked yet that file integrity only is enought for the game and we dont read anything from the sectors directly. if you would be able to split the archieve apart we can talk about the second step. Even at the first step you should get a lot of the data like fonts and more to think about IF this past will be hard for you but you want to make it on yourself but with a little help - search for forums where people are making translations from JAP into ENG, you will get a lot of the info. But in any case think-and-try would be the best advice. I would recommend to document things as http://wiki.qhimm.com/FF7 for example BTW is all of this ok as for the rules for the forum ? really not sured ;-) therefore I am not pointing on some external resources.