Kuribo64
Views: 30,526,598 Home | Forums | Uploader | Wiki | Object databases | IRC
Rules/FAQ | Memberlist | Calendar | Stats | Online users | Last posts | Search
11-09-25 10:53 AM
Guest:

Main - Posts by Bluma


Bluma
Posted on 07-06-13 03:25 PM, in Collision, Gravity and Camera controllers (rev. 5 of 07-06-13 03:53 PM) Link | #27303
I've always been interested in this type of stuff, modifying games to be different and such.

Lately I've been experimenting with Wii Games, namely Super Mario Galaxy 2.

I've tried importing models from games such as The Wind Waker, Twilight Princess, Super Mario Sunshine, Double Dash, Mario Kart Wii and Super Mario 64, as well as custom models I've created. Whether the model is imported directly from another game or is ripped from another and converted to the proper format is not really an issue, it's just about everything else.

First thing I noticed, would be the cameras. They get stuck just about everywhere, around corners, on objects, inside of walls, the only way to free them would be to press the D-Pad rapidly until they come free. Their movement is also very choppy. I've only managed to activate other camera systems via area trigger, but nothing useful.

The second issue would be gravity. Pretty much the only thing I've gotten to work would be the standard, gravity only goes one way, gravity box. The rest are a total blank, I've found no way to get spheres, twists, or other similar instances working when working with gravity. While I can guess what each gravity object does judging by it's name, there's no visual aid or clear way to know just where it will effect and how it will work.

I'd like to know first, does anybody know how cameras work? Is there just a free-form camera that follows your movements smoothly and adjusts as you do? Then I'd like to know: What is known about gravity? How big is each one? Is there any way to determine it's size?

I see hacks like Super Mario Galaxy 2.5, for example. Their concept art and models appear as if in certain areas they'll need non-standard gravity and cameras working in certain ways. I assume that this means that subjects are fully understood, correct? So where's the information? What is known, and how is it done?

EDIT


Also, what is known about collision values, such as bouncy/grassy/harmful surfaces? Could someone possibly give me a reference list of known values?

Bluma
Posted on 07-06-13 04:25 PM, in Collision, Gravity and Camera controllers (rev. 2 of 07-06-13 04:29 PM) Link | #27306
Posted by Marionumber1
For your first issue, there's a collision flag called camera_through that allows the camera to go through models. This flag can be set in the collision tools by checking the box for it.

These are the collision flags for surfaces (known as Floor_code in the collision tools):


00(00) normal ground
01(01) instant death
02(02) slippery (on slopes)
03(03) can't slip
04(04) get knocked over
05(05) ice (non reflective)
06(06) bouncy
07(07) more bouncy
08(08) even more bouncy
09(09) sand slide
0A(10) lava
0B(11) bouncy again?
0C(12) normal?
0D(13) sand (footprints)
0E(14) reflective
0F(15) electrical
10(16) bubble transport?
11(17) sinking sand
12(18) hurt sand water?
13(19) slippery sliding
14(20) waist deep water
15(21) knee deep water
16(22) ankle deep water
17(23) heel deep water
18(24) spikes
19(25) quick sinking sand
1A(26) snow
1B(27) moving sand
1C(28) squizzard's sand pit
1D(29) moving blocks
1E(30) sand (no footprints)
1F(31) sinking swamp
20(32) mud
21(33) ice (reflective)
22(34) bouncy again?
23(35) normal?
24(36) metal
25(37) grass
26(38) cloud
27(39) platform moving around cylindrical planetoid
28(40) boulder boosting ramp
29(41) player disintegrates
2A(42) footprints and dust trail
2B(43) snow (can't slip)

this list was made by wiiztec (http://wiird.l0nk.org/forum/index.php/topic,5791.msg51067.html#msg51067)

The collision flags for walls (the flag is known as Wall_code) are 0 for Wall-Jumpable and 1 for Non Wall-Jumpable.

As for gravity, I don't know much about this. A level creator could give you more information, like shibboleet.


Thank-you for the information!

Yes, I'm already aware of camera_through. The problem here is that I don't want the camera to clip through my model, it just doesn't look good.

Does the game not contain a standard follow-me camera system?

About the walls: I'm pretty sure I already had it set to 0, but wall jump was not working. Are you sure it's not the other way around? I can't check my PA files because the BSCV editor will not read it.

If 'MrRean' is anywhere around here, feel free to post then.

Bluma
Posted on 07-06-13 04:42 PM, in Collision, Gravity and Camera controllers (rev. 2 of 07-06-13 04:43 PM) Link | #27309
Posted by Marionumber1
The game contains many types of cameras, including the one you mentioned. MrRean is also good with them.

I'm sure that 0 makes the models Wall-Jumpable, because that's what I've used for Wall_code in all the models I imported, and you can wall jump.

I'm surprised to hear that the BCSV Editor can't read the PA files you made. I'm the author of the BCSV Editor, so could you please give me the PA file so I can see why it's not being read?


Sure, here it is:

https://kuribo64.net/get.php?id=z534uFTxwhg3tIQe

That's actually a zip file, for some reason it kept removing the file extension, so just add a .zip to the end.

Please let me know what may be wrong with it.

Bluma
Posted on 07-06-13 04:48 PM, in Collision, Gravity and Camera controllers Link | #27311
Posted by Marionumber1
The collision opens fine in the BCSV Editor for me. What specific error do you get, and which version of the BCSV Editor are you using?


Unhandled exception:


at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode)
at BCSV_Editor.Lookup.Read(String fileName)
at BCSV_Editor.Form1.openToolStripMenuItem_Click(Object sender, EventArgs e)
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

It's a version my friend gave me a download to, somewhere at DropBox.com.

Bluma
Posted on 07-06-13 04:52 PM, in Collision, Gravity and Camera controllers Link | #27313
Posted by Marionumber1
Try this version of the BCSV Editor, and see if it works: https://www.dropbox.com/s/thc3rep4kvj1q32/BCSVE-v0.7.zip


I get the same error with that version, which appears to be exactly the same version I have judging by the file size.

Bluma
Posted on 07-06-13 05:01 PM, in Collision, Gravity and Camera controllers (rev. 6 of 07-06-13 05:09 PM) Link | #27317
-NWPlayer123 - I get the same error in that version.

-Marionumber1 - The lookup.txt is still there.

It can open any file type other than PA files. Trying to trick it by renaming the .pa to .bcsv doesn't work either.

EDIT: Marionumber1, I found the issue. See this line of text in the error:

System.IO.FileNotFoundException: Could not find file 'C:\Documents and Settings\U\SMG\collision-v0.6\lookup.txt'.

---

It tries to look for the lookup.txt within the directory that the PA file is that I'm opening. Copying and pasting the lookup.txt to the same directory as the PA file works.

EDIT2: Alright, now that I can open the PA file, what should I do to change the wall code back to 0?

Bluma
Posted on 07-06-13 05:18 PM, in Collision, Gravity and Camera controllers Link | #27319
Posted by Marionumber1
It's strange that it would be opening lookup.txt from the same path that your PA file is at. Since you're using Windows XP, it may be a subtle difference in XP's implementation of file I/O. I'll try to look into this.


Well I've had this type of error with things before, I should have realized that was issue.

I'm examining my PA file, and it goes as follows:

Data: FF

Data Shifted: 0

Is that not correct? Wall Jump is still not working.

Bluma
Posted on 07-06-13 05:26 PM, in Collision, Gravity and Camera controllers Link | #27323
Posted by Marionumber1
I'm not quite sure why wall jumping wouldn't work, but just out of curiosity, are you using the Spin to Fly code? You can't wall jump as Flying Mario.


Argh. Yes I am.

Thank-you for clearing that up for me.

As far as collision goes, I think I'm all set, thank-you.

I'd still like to know about cameras and gravity, so if anybody knows, speak up.

Bluma
Posted on 07-07-13 10:35 PM, in Collision, Gravity and Camera controllers (rev. 2 of 07-07-13 10:43 PM) Link | #27457
Posted by Luigi
Gravity;
Placed in area where it's going to be activated
X Y Z scale need to be the range of the gravity.


Range; can either replace the X Y and Z scale as a whole new area for the gravity to be used.

Distance; Somewhat related to Range. Leave at 0.

Priority; Points in a direction of not given a dir rotation.

Inverse; Keep at FFFFFFFF value or in Whitehole, -1

Power and Type; Normal

And edit the X rotation, y rotation and Z rotation to rotate in the preferred spot to use it. (90 X for left, -90 X for right, etc)


Thanks a ton, I've managed to get a spiral shaped planet working without any issues.

---

Now about the cameras:

After several memory dumps and debugging with Dolphin, I've learned quite a few things about how the cameras work in this game.

I wrote a script which scans through each of the level files and copies each unique camera type, placing them in a level split into 64x64 blocks, using an area trigger to activate each. None of them are capable of performing in ways such as Super Mario 64 or Sunshine, where the transition is both automatic and smooth, not being limited to only user input or pre-existing camera systems.

If it's alright with everyone else, I'm going to make a new board in the appropriate section for this particular subject regarding the thought in my mind.

This can be locked is that's alright.

Bluma
Posted on 07-07-13 11:09 PM, in Tools recomended for doing 'this' Link | #27459
Excuse me if this thread is considered inappropriate, I saw no general threads, and the description of this section is:

Anything
about modifying the game's code to do awesome things.

---

Basic question, how is this done? And to put it into context, with what?

Before I go any further, I'll make this clear: I learned how to program when I was 11, in C+ to be precise. It was only a year before that I got bored one day and decided to 'hack Sonic The Hedgehog 2. It was a piece of cake. That started my video modification hobby.

I've mainly been active in PlayStation communities, along with various other games, notably other Genesis games and and DreamCast era and PC games.

Then there's the Wii, a new ballfield, something I haven't done yet.

Super Mario Galaxy has always interested me, I looked into in back then in 2007, but at that time, no tools or community involving it existed, other than a model viewer. Present day, I dwell back into this subject.

---

So I understand assembly, I've got that part down.

What's next? How would one de-compile the game, bring it to a state where it's crucial center, then thing that makes it run, is editable in some, non-hex form?

I've heard of a program called BrawlBox which can edit the 'Main.dol' of Wii and GaneCube games, but it ultimately fails to load the greater half of the file, making it useless.

First off, what program do I use to de-compile the game?

Secondly, what is used to re-compile the game?

And thirdly, any other important factor that I'm not aware of here?

I'd really like to help this community in any way possible, I'd like to rip this game to shreds and gather information on it's inner-workings, modify it, extend it, change it, and such.

I see lots of potential in this game, certainly lots. Millions, if not billions, of new possibilities. I first wanted to change the way the game's camera system works, less choppy and more automatic, which is why I first asked this question.

So... What's known?

Bluma
Posted on 07-07-13 11:28 PM, in Tools recomended for doing 'this' (rev. 2 of 07-07-13 11:31 PM) Link | #27461
That's fine.

Well tell me, what's needed to view the source as assembly code?

And I assume this kind of thing has been done before? I'm pretty sure you're aware of the Super Mario Galaxy 2 multi-player modification. Did that person need a C++ representation, or was it done purely with the assembly code?

And surely, either way, I see that this person could be helpful here as well. Are they a member here?

And any thing I can do to help, I surely will. I still believe that the assembly representation of the game could be modified and understood well enough to edit it without any conversions.

Has anyone written down what's been documented so far?

If I could be given access to the source code, and if there's any specific task being worked on at the moment, please let me know.

Bluma
Posted on 07-08-13 12:19 AM, in Tools recomended for doing 'this' Link | #27465
Posted by Marionumber1
In order to disassemble the game's code, I use IDA Pro. It costs $799, but you can

download it illegally, like I did.
Make sure you get the full version, which supports many CPU architectures, including PowerPC, which the Wii uses. You'll also need the Gekko CPU plugin (goes in the plugins folder) and the DOL loader (goes in the loaders folder). Here are the ones I use: https://www.dropbox.com/s/l4gjvvvaus89iwy/ida_tools.zip

All you need to do is open IDA Pro, choose New, and open SMG2's main.dol. That will generate a disassembly of the SMG2. From there, you just need reverse engineering knowledge.

The people who worked on the multiplayer mod are Chadderz and MrBean. I would assume they also used a disassembly of the game, since decompiling and then recompiling the game is impossible to do without completely understanding all of the game's code, and having the Wii SDK as well. They aren't active on this forum, though.

We have made documentations of some of the game's code. You can find it in ASM Hacking Notes on the Wiki. Currently, I'm focusing on the code for objects and power-ups.


I'd really rather not download it illegally, copyright laws from where I'm from are more strict.

Is there any place where I can download an already de-compiled source perhaps?

And let me get this straight:

There's no way to de-compile, then re-compile the game's DOL file? After doing more research, I found that this person also releases a pack called 'CTGP' for Mario Kart Wii.

The download reveals several Main.dol files, I assume for separate regions. Does this mean that it is, in fact possible to re compile the DOL after editing? Or did they manually edit the file based on what they learned from the de-compiled code?

Bluma
Posted on 07-08-13 02:05 AM, in Tools recomended for doing 'this' (rev. 2 of 07-08-13 02:10 AM) Link | #27472
Well... I suppose I'll download it that way then. Not that I could even afford it, and I see no financial gain on my behalf.

I was under the impression that it required modifying and re distributing this Main.dol file. So if that's not the case, then memory patches? In the context of the Wii and 'Riivolution', I'm not entirely sure what that means. Do these memory patches work in a way similar to Gecko codes?

And these patches, they're written in C++... If you can only read the game in assembly, then how do you know what you're writing in another language would work? By examining the assembly code and writing what seems right? I'm a bit curious as to how you completely re-programed the world map for Newer Super Mario Bros., Treeki. How exactly did debugging something like that go?

Excuse me if I'm misinterpreting what's been said.

Bluma
Posted on 07-08-13 04:32 PM, in Tools recomended for doing 'this' Link | #27511
Posted by Treeki
The other big hurdle you'll encounter is that CodeWarrior on PPC (the compiler Nintendo uses) doesn't use the Itanium C++ ABI, which is the standard that most other compilers - including GCC - use. This means that a bunch of C++ features are implemented differently behind the scenes (destructors and virtual functions are the two big ones that come to mind right now) and if you compile code with GCC that uses these, it won't be binary compatible with stuff compiled with CodeWarrior. Which includes mostly everything cool you could do for NSMBW and SMG, including custom objects, etc. Great, right?!


In the meantime then, what do you recommend I use until these tools are complete?

Posted by Treeki
For Newer, the path I took was to have a tiny bit of "bootstrap" code which detects the running game version and loads the correct version of the patches + code. This code is loaded using memory patches on Riivolution and injected into a modified .dol when loading the game through an ISO. This has a few benefits:

- No need to prepare separate copies of the patches/code for ISOs and Riivolution
- No need to worry about different game versions
- Patches can be easily updated just by popping a few files into a folder
- Patches can be loaded after the game is booted, which is necessary for NSMBW (because over half of its code is in .rel files which are all loaded during the Wrist Strap warning screen)


This is also very interesting. I guess I didn't realize that you had to write separate patches for different versions and regions.

So you wrote a program that detects the game version? Is Riivolution capable of executing code like that before booting the game?

Posted by Treeki
Tons and tons of OSReports. (The Wii SDK's version of printf.)


How did you get a hold of a development kit? I was only able to locate one for Wii Opera applications.

---

This is all very exciting, it's completely different from anything I've done. Usually it required re-distrubuting the entire 'engine' if you will, or creating a sort of ISO patch you applied yourself. How exactly do you apply these memory patches with Riivolution?

Excuse me for all the questions, this seems to have a process entirely different from what I imagined.

Bluma
Posted on 08-22-13 06:45 PM, in Tools recomended for doing 'this' (rev. 3 of 08-22-13 06:48 PM) Link | #30657
Excuse me for such a lengthy absence, the day I last posted also happened to be the day summer classes began, so I was unable to reply. Please forgive me for posting on such an old topic.

---

I've had little time lately to dedicate to looking into this. I've done some minor research, which ultimately failed to provide anything useful.

Posted by Treeki
You have two choices, and both are pretty awful... you can use the CodeWarrior compiler (a version has been leaked before, from the GC SDK) to compile your code, or you can use GCC if you avoid the features I mentioned. The latter is doable, it just makes writing code more difficult and error-prone because you have to put together your own vtables, write constructors/destructors and make sure you call all the appropriate functions, etc.


Firstly, I was unable to locate the software which you spoke of (The one leaked from the GC Development Kit). I believe I've located the GCC which you speak of:http://gcc.gnu.org/ , but one line in your quote confuses me:

Posted by Treeki
you can use GCC if you avoid the features I mentioned.


I was unable to locate any 'cracked' version of IDA Pro. I instead examined several Ocarina Codes (For New Super Mario Bros. Wii, to be exact) And I was able to pull enough information out of that to do minor things (In Ocarina code form). The earliest IDA pro crack I could find would be for V5, two versions too old.

So far, I've been un able to create memory patches, due to a lack of a proper source code to work with, or a proper compiler.

Several things said have left me confused (Mainly being told that patches are written, and compiled in C++, but as an example I was shown assembly code.). I'm not entirely sure how these memory patches work too well either, anything I've been told, shown, or I've found has been pretty sketchy, or atleast not informative enough.

Bluma
Posted on 09-10-13 07:58 PM, in Shadows on Custom Models in SMG 1/2 (rev. 2 of 09-10-13 08:12 PM) Link | #32233
Posted by blank
Well that changes things a bit. I might try and see if I can implement my idea then.

On a related note: It would be really helpful if people actually tell me stuff like this. You can't just expect me to magically know.


Excuse me for posting for a week old thread (I see you haven't been online in three days, I assume you only log on when you see that a message has been posted).

I've read through the thread. I see that you're currently not willing to do anything with DAE Importing, which is perfectly acceptable and okay.

However, on PhantomWing's subject of Brawl:

As you may already know, Brawl Hacking has advanced to a point where it can now import collada Dae, and convert it the MDL0. MDL0 is considerably easier to understand than Collada.

I'm surprised this hasn't been suggested already...

What would you think of instead MDL0 to BDL conversion, as opposed to the OBJ Idea? I see several benefits, the Brawl editor, BrawlBox, would handle the Dae for you and convert it to an easier format (MDL0). Through BrawlBox, you can edit material properties, colours, shaders, all of that nice stuff. The TEX0 format used by Brawl is more or less the same as BTI used by Galaxy. The shader format is nearly identical.

BrawlBox is also open source. It comes with a viewer, which in basic terms, breaks the model down to an even simpler format, one that model ripping programs can understand, a simple display model. Skeleton data is also presented the same way, and could possibly be converted.

I'm pretty sure the Brawl people would be willing to co-operate if you could reverse that method, BDL to MDL0. This would eliminate the need for things like a Material editor.

If it's done well, support for this format may be added to BrawlBox. By doing so, you'll also catch the interest of Brawl hackers. As mentioned before, once BrawlBox introduced support for Mario Kart Wii formats, both Mario Kart and Brawl hackers began to work in both communities. Of course, it's only an idea. Animation wise, I do believe they work similar. It would be a fairly simple solution to a rather complicated problem, and in the end it would be beneficial to other beyond this community.

http://wiki.tockdom.com/wiki/MDL0

Bluma
Posted on 09-10-13 08:30 PM, in Shadows on Custom Models in SMG 1/2 Link | #32241
Posted by NWPlayer123
My question is: How is one format any better than any other? You still have to do major edits to a program to read and convert one file into another. It's still the same amount of work, maybe even more.


MDL0 is less complicated than DAE.

Consider the amount of work it took to originally compile a BDL. BrawlBox had the ability to both compile and de-compile MDL0. Blank's program reads the vertex and UV data from the OBJ, converts the images, and gives a BDL. If you already have another program which can read vertex data, UVs, Colours, and whatever else for another format, then that data should be easier to convert. If one understands that every A in one format is equivalent to a 33 in another, then it should be capable of making the conversion, especially if both programs are capable of fully (Or nearly) understanding the format they were designed to know.

BrawlBox features the ability to export each set of vertices as an OBJ file. UV Mapping should be relatively simply, as should colours, and images are already in a nearly similar format, and that's everything you'd need for a basic model. Most material settings seem to be fully understood in both formats, so whether you'd be looking to make your own material editor or port whatever useful data one has from the other, you could do so.

Skeletons are optional. I don't know enough about the subject, so I'm not entirely sure how easy that would be.

I understand that a Dae module for python already exists, but it's not designed with the task given to BrawlBox.

Bluma
Posted on 09-15-13 05:42 PM, in Shadows on Custom Models in SMG 1/2 (rev. 3 of 09-15-13 05:45 PM) Link | #32556
Posted by blank
A MDL 0 to BDL converter is something I have considered, and it would definitely be easier to make than a DAE to BDL converter. The reason that I haven't gone in that direction is that it would still be more complicated than a OBJ to BDL converter and I don't think it's worth the effort at the moment.


It's certainly interesting that you refer to it as MDL 0, not something I've thought of before regarding the MDL format. Anything would be more difficult than OBJ importing, I agree. Your Vertex coloured OBJ idea is genius enough to hold people over for now.

I'm actually surprised that you've considered that as an option. I agree that given the current state of the community, it may not seem worth it at the moment, though it may be a good idea to help kick start the community in the right direction, dorky model hacks like 'Wario in Super Mario Galaxy' would be made available. Binding the Brawl and Galaxy communities could be beneficial as well.

If you're looking to test drive your OBJ idea, go for it, I'll definitely be pleased with just that at the moment. Keep in mind that Blender is rather un common within most modding communities, most use 3DS Max as a primary choice, and Maya as a second choice, so this will likely please an internal crowd more than an external one.

Can't wait to see what you do!

Bluma
Posted on 09-18-13 02:49 AM, in Importing/Creating Planets/Objects Tutorial v2 [New!] [Updated!] [Shiny!] (rev. 2 of 09-18-13 02:49 AM) Link | #32650
Well, I'm having a frustrating issue.

I decided to give this a quick whirl, by adding planet objects to ProductMapObjDataTable, with SimpleMapObj & such. The thing is, the object doesn't appear in game.

I'm testing over Flip Swap. The level loads, but the object does not. If I attempt to add the object to another level, it freezes.

Bluma
Posted on 09-18-13 02:57 AM, in Importing/Creating Planets/Objects Tutorial v2 [New!] [Updated!] [Shiny!] (rev. 2 of 09-18-13 02:59 AM) Link | #32653
It's at it's original scale (It's an object from Super Mario Sunshine), I can see it in the viewer just fine but it's absent from the game.

The odd thing would be that it doesn't appear if I add the BCSV entry myself. Taking the PMObjDT from the SMG2.5 demo, and renaming my object to a entry from there works fine. But if I add my own entry, even down to settings directly coped from the SMG2.5 demo, it does not appear in game.

Is there a big difference between MN1's BCSV editor and Mega-Mario's?

Edit: The object only appears in game if I replace it with a pre-existing planet.


Main - Posts by Bluma

Page rendered in 0.053 seconds. (2048KB of memory used)
MySQL - queries: 22, rows: 141/141, time: 0.012 seconds.
[powered by Acmlm] Acmlmboard 2.064 (2018-07-20)
© 2005-2008 Acmlm, Xkeeper, blackhole89 et al.