1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. The following games have been added to the forums in the "OTHER GAMES" section. (Zyon, Begami, Dynamix, Groove Coaster, Miracle Girls Festival and Voez). Check it out!
  3. Hello Guest! Did you know that we're also on Discord? You can join us here: https://discord.gg/aa578Mm.
    Dismiss Notice
  4. We adjusted the trophy points for posting in the International Forums to encourage non-english users to talk in their local language! Don't be shy! More information in this thread!
    Dismiss Notice
  5. We have made an announcement regarding piracy in Edit Data threads, please read more in here.
    Dismiss Notice

Suyo's Custom Stage Creation Adventure

Discussion in 'Custom DLC' started by Suyo, Apr 1, 2012.

  1. Here is where I will document my tries on how to create custom stages for use in Edits. I have no idea whether this will work or not, but I guess I will find out.

    ~ CHAPTER 1: The Beginning ~
    Obviously, the first step was finding out how stages are saved, then doing a simple texture edit.

    But before doing that, I needed to find the files.
    Not a problem with about 3000 files. Not at all.
    My solution was to just take a single file from every suspicious looking group of files. I ended up with a way smaller collection of 9 files:
    After loading each one in Alchemy, I quickly noticed a problem - either the viewer would crash, or show nothing at all. That means I had to see which is a stage by looking at the textures. Luckily, you can extract these with just one click. There were two files which exploded into a lot of textures:
    [wimg=800]http://i.imgur.com/Y6KUk.png[/wimg] field_pv_71.igb
    [wimg=800]http://i.imgur.com/08GOR.png[/wimg] pve_80.igb

    Next up would be finding out what the difference beetween these two was. When looking through the files again, I noticed that both of these groups had the same numbers. So I took the 39th of each and compared them.
    My educated guess was that field_pv_XX.igb contains the real stage, while pve_XX.igb contains overlays and effects. That means that field_pv was the one I had to look into. After a bit of picking random files, I found one which allowed an easy texture edit which is also instantly noticeable:
    The tutorial. Simple enough.
    PNGs extracted from an IGB have a limited palette, which is why I first had to convert them to RGB to make a little edit to it.
    The next step was to reinsert the texture and the IGB in order to test it.
    What not many people know is that Alchemys "Externalize images" optimizations can also be applied in reverse, which makes the entire process incredibly easy. Combined with the "Convert images" optimizations to convert them back from RGB, the IGB was quickly done.
    Now, the only thing standing beetween me and a test was to get the IGB back into the game. Not wanting to try to find the right Custom DLC format, I settled with editing the ISO for now. This is possible using AFS2EXT. Sadly, it didn't work right.
    I don't speak very much Japanese. In fact, only a few words. But I knew a few Katakana, and could translate the title to "Era-", or "Error". Damn it.
    Usually, this would go pretty easy. Ctrl+C in the error message, and it would be in your clipboard. Paste into Google Translate. Done.
    But obviously, it's Windows, and it needs to fuck with me in some way. Especially on April 1st. So it decided to give me a BSOD everytime I tried to copy the error message. After 5 restarts, I had a different idea to get the message. It took me one hour to find the right Kana and Kanji to piece together the message in Google Translate. But at least it worked, and I found out the error said the file sizes were different.
    So I went to check them.

    My IGB: 277,506 bytes
    Original: 277,521 bytes


    Not knowing how to simply increase the size in Alchemy, I just went into HxD and added 15 00s to the end. AFS2EXT then accepted the file and changed the ISO.
    Changing the filesize in a hex editor is usually a really bad thing. You shouldn't do stuff like that. This is why I was expecting a crash in the game, or an error. But what happened was the thing I expected the least.
    It worked. First try.
    That usually doesn't happen when I touch things. But hey, it's running. Without any problems.

    Next time I will try to replace the entire IGB with a custom made one by figuring out which optimizations need to be done to successfully display it ingame. Expect errors, crashes and explosions in the next chapter.
  2. ~ CHAPTER 2.1: The Search for the Import ~
    After a huge blow to the plan yesterday, but also a hint, I try to find how to add stages into DLC.

    This was written on ProjectDIVA.fr yesterday. So I already planned to give up, when suddenly...
    So, my guess was that there is some kind of value or checksum in the stage data, and if it's similar to one already in the game, it will be loaded from the disk instead of the DLC and/or can't be used in Edit Mode.
    The problem is that I only own extend, so all of the DLC and Custom DLC would contain stages I do already have. So what I tried first was checking the IGB, and finding out how the stage is loaded.

    After a quick extraction using cpk_unpack, the stage file is in plain view.
    Now, what would happen if we just changed the textures? I just drew a smiley face onto the main speakers (also changed everything to greyscale so the edits are more noticable), and... (Also, fun fact, SEGA misspelled "speaker" as "speker")
    So, the stage is loaded from the EDAT. Well, that makes thing easier. I'm still not able to import it via the DLC menu though, so the next lead is the text files - 100_field_num.txt and 101_field_data.txt, containg the values 1, -1, -1 and 196766662597. Especially the last one looks interesting, looking like a checksum of some kind, but let's do the first one first.
    The first value is the only one in 100_field_num.txt. I ran three tests, one with the value being 0, one with it being 1 (default), and one being 2. The background disappeared into a pure black with the number being 2. Now the first and second value in 101_field_data.txt, tests running with -1 (default), 0 and 1. I tried most combinations. Checking the last value also failed, and was the same everytime, too.

    Suddenly I got an idea. Before I try any more things, how about I actually try whether MikuHatsune is right, and the DLC stages can be actually used? Only one was to find out, so I put on my eyepatch and sailed the Proxseas to the one bay where I was able to get 2nd and the DLC*.
    "Extra Data could not be loaded."
    Turns out I just successfully wasted 4 hours. Weeeee.

    What does this mean? Well, we have a big problem now.
    First, the Edit Backgrounds most likely have their own folder. We don't know which.
    Second, we have no idea how Stage DLCs are made. There is no official DLC for this category yet.
    Misformed DLC files will not throw an error, so we can't find folder OR format unless we get both right at the same time.
    This will be entertaining.

    Next time: Trying some formats, trying some folders, just slapping things hoping it works.
    * I obviously deleted it again after the test. I usually do not pirate games, about 99% of games are legally owned.
  3. Well like i said in the FR forums, just for example the Electric Angel PV: it contains the Windows-Like stage with those cursors and stuff and it's not in the gamefiles of pjd 2nd.
    But if i remember it right, you were able to use DLC PV-stages in edit mode (and edit mode only, it's no import thing!). just create a new PV and in the stage selection screen use R (or was it L?). Then you should get the DLC stages which will be loaded from the EDAT directly.
    The only thing is: If you create a PV with one of those stages, then other people need the same DLC file.
    Even in Extend you are able to load stages from DLC into EDIT MODE but it just makes no sense. (Except: Go My Way!! & relations stage) It would be like using the Miku Append DLC instead of Miku Append from Extend itself. It only makes sense as long you don't have it unlocked.
  4. That doesn't work for me, can you try it with your copy?
    Maybe it works only with real DLC, not custom or decrypted one...

    EDIT: Sonic DX just tried it too, and it didn't work. Seems like your memory is failing you.
  5. ~ CHAPTER 2.2: The CPK Editing Adventure~
    CPK is an... interesting format. Due to it's modular structure, there is no tool which can use the kind of CPK PD uses. That means lots of hex editing.

    20 minutes to midnight, and I finally persuaded cpk_unpack to unpack a CPK with my custom TOC without any errors. Success! Time to write something nobody will read anyways!
    7 hours ago, I was trying some Google-Fu to find a tool to easily pack CPKs. That's all I would have needed. When I found one, my mood quickly dropped again, as it seemed to use a different CPK format, and was not readable in PDe. In fact, when trying to import it all DLCs of the same type would also disappear. Wierd.
    5 hours ago, I was doing some research one the CPK format. It seems CPK is widely used, and has a modular structure. Grab your helmets, because now we're going into the technical stuff. If you don't know anything about Hex Editing, you might want to turn around.

    I have four parts in the CPK of interest: the header, the TOC, the files, and the footer.
    The header includes some information. The footer too. Didn't really look much more into it.
    The files are saved plainly in PD CPKs - that means you could just "cut" the CPK into parts and get the files. Easy as that. While compression IS possible, it is not used. Also, PD uses a Data Align of 0x800. That means in the worst case, there can be 511 bytes of empty, unused data. Just some fun facts.

    The TOC, or Table of Contents, is the real point of interest, as it contains offsets, lengths and filenames of the files contained in the CPK. And because you love code so much, here is the TOC of my edited file:
    [pre]00000800 54 4F 43 20 FF 00 00 00 C8 01 00 00 00 00 00 00 TOC ÿ...È.......
    00000810 40 55 54 46 00 00 01 59 00 00 00 43 00 00 00 BB @UTF...Y...C...»
    00000820 00 00 01 59 00 00 00 07 00 07 00 18 00 00 00 05 ...Y............
    00000830 3A 00 00 00 12 00 00 00 1A 5A 00 00 00 1B 54 00 :........Z....T.
    00000840 00 00 24 54 00 00 00 2D 56 00 00 00 39 54 00 00 ..$T...-V...9T..
    00000850 00 44 3A 00 00 00 47 00 00 00 00 00 00 00 52 00 .D:...G.......R.
    00000860 00 00 08 00 00 00 08 00 00 00 00 00 00 10 00 00 ................
    00000870 00 00 00 00 00 00 60 00 00 00 18 00 00 00 18 00 ......`.........
    00000880 00 00 00 00 00 18 00 00 00 00 01 00 00 00 6C 00 ..............l.
    00000890 00 00 01 00 00 00 01 00 00 00 00 00 00 20 00 00 ............. ..
    000008A0 00 00 02 00 00 00 7D 00 00 00 16 00 00 00 16 00 ......}.........
    000008B0 00 00 00 00 00 28 00 00 00 00 03 00 00 00 8F 00 .....(..........
    000008C0 01 08 00 00 01 05 00 00 00 00 00 00 00 30 00 00 .............0..
    000008D0 00 00 04 3C 4E 55 4C 4C 3E 00 43 70 6B 54 6F 63 ...<NULL>.CpkToc
    000008E0 49 6E 66 6F 00 44 69 72 4E 61 6D 65 00 00 46 69 Info.DirName..Fi
    000008F0 6C 65 4E 61 6D 65 00 46 69 6C 65 53 69 7A 65 00 leName.FileSize.
    00000900 45 78 74 72 61 63 74 53 69 7A 65 00 46 69 6C 65 ExtractSize.File
    00000910 4F 66 66 73 65 74 00 49 44 00 55 73 65 72 53 74 Offset.ID.UserSt
    00000920 72 69 6E 67 00 30 30 5F 61 74 74 65 73 74 2E 74 ring.00_attest.t
    00000930 78 74 00 30 31 5F 6E 61 6D 65 2E 74 78 74 00 30 xt.01_name.txt.0
    00000940 32 5F 66 69 65 6C 64 5F 6E 75 6D 2E 74 78 74 00 2_field_num.txt.
    00000950 30 33 5F 66 69 65 6C 64 5F 64 61 74 61 2E 74 78 03_field_data.tx
    00000960 74 00 30 34 5F 66 69 65 6C 64 2E 69 67 62 00 00 t.04_field.igb..[/pre]I bet most of you understand less than half of it. To be honest, when I started I was close to this level of knowledge, too, but after some training in the ancient art of Google, I was able to find this:
    Special thanks to MrFreeman for this!
    Based on this, I was able to find the information in the TOC, and some more.

    One obvious thing is the filenames at the bottom, obviously. They are seperated by a 00 (which appears as a dot on the right - but it isn't, pay attention!).
    Now, I will need to zoom onto a smaller part to show you the most interesting part.
    [pre]Offset(h) 00 04 08 0C 10 14
    0000085B 00000052 00000008 00000008 00000000 00001000 00000000 ...R....................
    00000873 00000060 00000018 00000018 00000000 00001800 00000001 ...`....................
    0000088B 0000006C 00000001 00000001 00000000 00002000 00000002 ...l.............. .....
    000008A3 0000007D 00000016 00000016 00000000 00002800 00000003 ...}..............(.....
    000008BB 0000008F 00010800 00010500 00000000 00003000 00000004 ..................0.....[/pre]Each of these lines represents a single file in the CPK. The rightmost value is simply a counter. The values below 10 contain the offset where the file begins - counted from where the TOC begins, which starts at 0x800. So you will have to look at 0x1800 for the first file, not 0x1000. 04 and 08 show the filesize. As you can see, the third file is only 1 byte, containing only a single number.
    The 00 values is where I found something new. Labeled as "unknown" in the table above, I found out it actually tells the game where to look for the filename. It's the offset to the name, counted from 0x8D3 (the start of "<NULL>").
    And about these 0C values... nobody knows yet.

    Anyways, after discovering this, I made my edits, and suddenly
    [pre]> cpk_unpack 001_stage.EDAT
    cpk_unpack 0.7 beta 3

    utf_tab.c:462:query_utf_nofail: key not found[/pre]
    Whoops. Forgot to adjust the offsets.

    In the entire TOC, there are values showing what is where, and with me editing the file table, obviously some stuff had to move. So I realigned those, and
    [pre]> cpk_unpack 001_stage.EDAT
    cpk_unpack 0.7 beta 3

    /00_attest.txt 0x1800 8
    /01_name.txt 0x2000 24
    /02_field_num.txt 0x2800 1
    /03_field_data.txt 0x3000 22
    /04_field.igb 0x3800 67584
    cpk_unpack.c:124:analyze_CPK: File offset too large, will be unable to seek[/pre]
    I was successfully able to extract all the files from the CPK using my custom TOC. Obviously things throwing around with errors is bad, so I changed the number of files at 0x82C
    [pre]> cpk_unpack 001_stage.EDAT
    cpk_unpack 0.7 beta 3

    cpk_unpack.c:91:analyze_CPK: CpkHeader file count and TOC entry count do not match[/pre]
    and, after a quick facepalm, also remembering to change it in the CPK header at 0x137
    [pre]> cpk_unpack 001_stage.EDAT
    cpk_unpack 0.7 beta 3

    /00_attest.txt 0x1800 8
    /01_name.txt 0x2000 24
    /02_field_num.txt 0x2800 1
    /03_field_data.txt 0x3000 22
    /04_field.igb 0x3800 67584[/pre]
    and all the errors were gone and it looked like it was just another DLC by SEGA. Except decrypted.

    TOMORROW: Suyo runs against the clock, as he does a few tries finding the correct folder! Will he succeed, or fail and thus end the world as we know it? Tune in next episode, same bat time, same bat channel!

    In other news, HOLY CRAP I HATE WORKING IN WINDOWS. I really need to test whether HxD works in Ubuntu using Wine.
  6. ~ CHAPTER 2.3: The Quest for the Folder ~
    This is going to be a short part showing how I found out which folders the missing DLC types use.

    First off, I learned today I should pay a lot more attention if I do stuff. It happened multiple time now that I just look over things because I'm going to fast - I wasted 4 hours by not testing something before, I had at least 6 failed tries during the TOC creation stage because I looked over important values, and now this.
    I tried putting a Module (C) DLC into the D folder, to check whether an error is thrown if it imports wrong DLC. Obviously I forgot to change the type in 00_attest.txt, so it was ignored - but I just tested it with changing the letter, and POW, it imports fine, but throws an error when using it in Edit Mode.
    Automatically configure lip-syncing to match the beats of the input lyrics.
    Unable to read song data.

    Return to Edit Mode selection menu.

    (thanks to Star Keziah for the translation!)

    Now, what I needed to do was simple: create ~20 DLC files for every unused letter, then try the missing categories in the "Import additional data" menu in Project DIVA extend, and read which folder is used.
    For this, the slot used is 001, and the name is "Folder X" (where X is the category letter). I would have created a quick program in Java or something to quickly do this, but I then did it by hand.
    But for moving them to the PSP, I wrote a little script.

    So there you have it. Stages go to folder K.
    Now for the fun part - this is the only one working. Edit Motions, Edit Items and Edit Effects still have no representing folder, as it still tells me there is no data... this thread is about finding stuff for stages, but screw it, I want to at least give it one quick try.

    I have multiple theories:
    a) they use lowercase folders (unlikely: there are about 20 other uppercase letters available)
    b) the PSP is screwing up (unlikely: while I already saw this happening, it's really rare)
    c) all of these Edit Extras use a single folder (K) and put in one of the categories depending on
    c1) slot
    c2) TOC
    c3) some value in the CPK header

    I decided to try c1 and c2 at once, but only imported the one in slot 001 as background, while the file in slot 051 was ignored. This was my quick try, if you'd like to give this a try to find the other categories, good luck!

    So here's the updated list for the DLC types:
    B: Songs
    C: Modules
    D: Edit Music
    E: Room Style
    F: Floor Item
    G: Shelf Item
    H: Wall Item
    K: Edit Stage
    ?: Edit Motion, Edit Item, Edit Effect

    Next step is finally going for the right format, which is the final hurdle in the process of creating new DLC types, and most likely the hardest... but I'm not giving up! (Yet!)
    Seems like there are three conditions to ignore files:
    a) wrong category letter in 00_attest.txt
    b) too high slot number in 00_attest.txt
    c) file count too low (higher ones seem to work, just lower ones don't)

    C was the one why I couldn't find out the last few folders, but now it works!

    Here is the COMPLETE LIST of the DLC types:
    B: Songs
    C: Modules
    D: Edit Music
    E: Room Style
    F: Floor Item
    G: Shelf Item
    H: Wall Item
    I: Edit Motion
    J: Edit Item
    K: Edit Stage
    L: Edit Effect

    Coming in a few hours (maybe): CHAPTER 3.1 - The Files and the Format.
  8. ~ CHAPTER 3.1: The Files and the Format ~
    This is where the hardest part of the adventure begins. Without any sample by SEGA, it is complicated to find the right format.

    But hey, I might just get lucky on the first try.

    We already extracted the song DLC back in Chapter 2.1. If you remember correctly (or just scroll up), you know that we had three files releated to the stage - 100_field_num.txt, 101_field_data.txt, and 102_field.igb. Using a bit of logic and the other DLCs as a "cheat sheet", my first try will contain these files:
    Basing the size values off the TOC of the Song DLC, this is the TOC for our Stage DLC:
    [pre]Offset(h) 00 04 08 0C 10 14
    00000000 00000052 00000008 00000008 00000000 00001000 00000000
    00000018 00000060 00000012 00000012 00000000 00001800 00000001
    00000030 0000006C 00000001 00000001 00000000 00002000 00000002
    00000048 0000007D 00000016 00000016 00000000 00002800 00000003
    00000060 0000008F 000E0622 000E0622 00000000 00003000 00000004[/pre]
    As the files themselves, I just use the files right from the Miku Miku Ni Shite Ageru DLC by SonicDX. For now, it's just about the format.

    Alright, how many of you expect this to work on the first try? ... what, two people? This many? You don't know me very well, do you?
    Because I forgot to change the category letter to the right one again. I'M SO PROFESSIONAL HURRDURR. Well, second try. This might work.
    But it doesn't - it didn't find the DLC. Well, time for some error searching... well, doesn't work if I don't rename the file from "stage_test.EDAT" to "001.EDAT". Well, third time's the charm, aaaaaaaaaaand...
    ...still doesn't work. Argh. I hoped I was at least close after taking care of these stupid mistakes... wait what? The file didn't rename, it's still called "stage_test.EDAT". Sony, are you trying to screw with me again?
    Try #4, still #1 when not counting stupid mistakes or the PSP trying to make me smash it against the walls.
    Finally. A successful import. But there is still one thing ... will PD be able to read it? Time to head into Edit Mode for the big showdown.
    Yeah, to be honest, I expected exactly this. Time for more hex editing.
    Fun Fact: if you still choose the stage and start "the load of material", it will be on the loading screen forever. forever. forever.

    One thing catching my eye is the ENORMOUS space after the IGB. 0xE0622 bytes are reserved for the IGB, and I just quickly shortened it to 0xAF360 by just deleting all the 00s afterwards. But this didn't persuade PD to read the file.
    The next idea was the filenames. First, I had to find out whether they actually matter, so I duplicated a module file and renamed "03_vocaloid.txt" to "03_vocaliod.txt" (yay for references).
    So yeah, turns out names actually don't matter. Onto the next try, file order. Now, it seems the CPK has two ways to order it - the real order in the file, and a counter in the TOC we looked at earlier. So I just changed two random counters in the table, and tried it again.
    Nope, still nothing, and I guess it is about time to get off the PC. It's past midnight...

    ...so, tomorrow, more tries at finding the correct format, and lots of stupid fails.
  9. ~ CHAPTER 3.2: That Order Thing ~
    More investigation into the file format, and another fail...

    I ran some more tests with changing things in a duplicate of a working module.
    Here's what does not effect anything:
    - changing filenames
    - changing the order value in the TOC (without swapping files)
    - swapping two files (and editing the TOC)

    The only thing which makes it crash is changing the order of rows in the TOC.
    ...isn't it kind of odd? While there are order values, they are ignored - instead it's working off the order of the rows.

    Well, that most likely means one of two things:
    - wrong order
    - wrong files
    Let's look at the latter one first - for those who don't remember, we have three files right now, based on files from a song DLC - 02_field_num.txt, 03_field_data.txt and 04_field.igb. What if one of them did not belong into a stage - for example, if 02_field_num.txt doesn't releate tothe stage, but how many stages are used in the song? Now, every Custom DLC available right now has only one stage - this means we have to go grab the official DLC from one of those sites again. Weee.

    As there is only one seeder, it took ages to just grab the songs, but here we are now.

    Now, pop quiz, name one song which has more than one stage! Beeep, time's over, the answers were Requiem for the Phantasma, Stardust Utopia and Time Limit. Disappearance also has 2 stages for some reason, I don't remember a second one from the extend PV...
    ...anyways, back to topic. Each of those songs still contains only 3 stage files! field_num contains the number of stages (in the case of Time Limit , 4). field_data contains some wierd values... most are just -1, -1 and 196766662597 repeated times the number of stages, but some have different values...
    [table][tr][th=33]Time Limit[/th][th=33]Disappearance[/th][th=33]GO MY WAY!![/th][/tr][tr][td][pre]-1
    I'll just assume these values have nothing to do with what I am trying to do. Just... ignoring them...

    That means, the field.igb is not the stage itself, but instead a combination of all of them. So I will have to extract the stage out of some kind of archive instead of directly using it in our DLC. I can also remove field_num, I guess. Let's try this first. Remember, if there are not enough files, PD will simply ignore the DLC. So this way, we can find out if there are 3 or 2 files required, or maybe even just 1.
    It still imported! So even though I just guessed that it needs a different "kind" of IGB, I still tried loading it in Edit Mode - last time it threw an error... but this time, it just crashed. Is this a good or a bad sign? I'm guessing a good one, since it seems it tries to load the IGB, but it doesn't work... so I just thought about using the stage I made in Chapter 1, since I don't have Alchemy right now... but it throws an error again, it doesn't even crash. Whaaat?
    Anyways, back to file count. I made one EDAT containing only the attest, name and stage.
    And it still is being imported! I think something is wrong with my theory of CPKs with too few files being ignored - either that or there really is just the IGB in there, which seems unlikely. So, testing this again by just removing a file from a working module... turns out I was wrong, well, back to square two. Not one, because the crash with the 2-file-CPK looks promising.

    Next time: I think I will have access to Alchemy again, so I'll try to get that IGB thing done.
  10. ...I had to remove the image from the quote because the anti-spam filter won't let me post hyperlinks in my first post, lolol

    Here's your mystery error:

    Automatically configure lip-syncing to match the beats of the input lyrics.
    Unable to read song data.

    Return to Edit Mode selection menu.

    Good luck with all this! Sadly, I have a complete lack of talent when it comes to hex editing, so I'm afraid I can't be of much help. But if you figure out how to make it work, you can bet I'll be making some custom DLC. \o/

    Randomly: I think it's rather silly for Edit Mode to have several actions for swinging a sword, and yet not have a sword available as an item. What are they supposed to swordfight with? The giant tuna?
  11. That's a good point. I guess I just automatically associate those moves with swords, especially since Kaito uses one in Tsugai Kogarashi.
  12. So Sonic DX managed to do it in just a day, while I've been trying for almost a month.

    Well, as soon it's released, a part will be dedicated to finding the mistakes I made, I'll be trying to get to the next challenge - texture edits and completly custom stages!

    Here's what would have been the start of the next psot. Not that anyone would have read it.

  13. ~ CHAPTER 5.1: The Two-Dimensional Stage
    So seems like I was missing a lot of files. Sonic DX solved that by just adding them without any content, and calling them XXX_inutile.txt (inutile: french for unused). I still wonder how he found out you needed these empty files. My guess is he works for SEGA and is just screwing with us and pretends he is an awesome coder/researcher. Nah just kidding I love you <3

    Anyways, on to the known files - one is the IGB of the stage, which I correctly guessed, but it was kinda obvious, and the other one is 03_data_param.dat. It just contains 4 hex values:
    [pre]00000000 03 01 01 01 ....[/pre]
    My guess was that this is the file containing information about how the stage is rendered - mainly whether it's 3D (regular stages) or 2D (illustrations). So I made this my first goal: how to make a stage 2D. For this, I used my texture edit from Chapter 1, which looked like this without any changes:
    Now I changed various values to others.

    00: Crash
    01: Crash
    02: No Change
    04: Error while Loading
    0x1: 00: Crash
    0x2: 00: No Change
    0x3: 00: No Change
    Well, that was useful.

    Next guess: one of the "unused" files is actually controlling this, and when there is no data, it is just interpreted as a 00, or false. What if it's 01, or true? Let's check out the Table of Contents:
    [pre]Offset(h) 00 04 08 0C 10 14
    0000085B 00000052 00000006 00000006 00000000 00001000 00000000 ...R.................... [00_attest.txt]
    00000873 00000060 00000011 00000011 00000000 00001800 00000001 ...`.................... [01_name.txt]
    0000088B 0000006C 00000002 00000002 00000000 00002000 00000002 ...l.............. .....
    000008A3 0000007B 00000004 00000004 00000000 00002800 00000003 ...{..............(..... [03_data_param.dat]
    000008BB 0000008D 0008C0FC 0008C0FC 00000000 00003000 00000004 ......Àü..Àü......0..... [04_field.igb]
    000008D3 0000009A 0000004E 0000004E 00000000 0008F1E0 00000005 ...š...N...N......ñà....
    000008EB 000000A9 0000004C 0000004C 00000000 0008F9E0 00000006 ...©...L...L......ùà....[/pre]
    The second file, which is just 2 bytes big, looks interesting to me. Let's just screw around with this, and insert some 01s at 0x2800 and 0x2801:
    01 00: No Change
    00 01: No Change
    01 01: No Change

    So here's my final guess:
    The only illustration background in the real game is the tutorial. The stage is actually a 3D stage, and the camera is just placed so it shows that plane on the entire stage. The Loading Screens are not an IGB model, they are just a texture. So here's my theory: They are directly displayed from the texture, or a special kind of effect which is shown in the background instead of the foreground. So, Sonic DXs method of replacing Loading Screens and using them this way is the best way to do 2D textures.

    In the next part: The first true Custom Stages! I'll be diving into Alchemy and Max to create one-color backgrounds in other colors, to make some really awesome effects. Maybe I'll even try to import my World's End Dancehall stage, even though it will most likely explode. Woo!
  14. ~ Chapter 5.2: The Creation Myth ~
    Time to jump into 3ds Max and make some serious MLG Pro stages.

    First thing I did was create something simple - 5 spheres floating around, 2 being textured, the other not.
    IGB Export was pretty simple - I just had to reset my windows time so the trial was not over - and then I loaded the IGB into Alchemy Finalizer. The important part was to get the IGB as similar to a real Stage IGB as possible. So I compared them and found a number of differences.
    Sadly, for most of them, there was no optimization I could find which would fix it.
    So I just converted the textures and went with that.
    Because of this, I didn't really have much faith into my EDAT. But then...
    ...first try. Would you look at that.
    After some looking around, I was only able to find three spheres, two being completly white, and one having a darker grey color, the texture I applied to it. I guessed that without a texture, they would be white, and the other two spheres were too far away.

    Next up was finding out how the size in 3ds Max translates into game size. For this, I made three cylinders, with a radius of 10 and heights of 10, 40 and 100. They were placed on the x-axis and pointed into the z direction. I did not apply any textures, which led to these very entertaining shots:
    Obviously, no texture meant it would become pitch black, and my guess before was wrong. Miku was exactly in the wall of a cylinder, which led to her being cut into half.
    5 minutes later, I slapped some textures onto it so I could see where I was going:
    Well, that's interesting. The axis... axises? axi? axes? are rotated in PD, also, it's obvious the cylinders are way too big. That means, the [plural of axis] in 3ds Max translate to these ingame:
    So one rotation and one resize of the cylinders to 2, 7 and 10 later:
    That means the models are ranging from 6.5 to 7.5, with Miku being the center and 7 high. Also, when zoomed out the farthest, the value at Depth goes up to about 43, meaning a sphere with a radius of 50 as a skybox will make a fine background. So I just made a sphere this big, put a colored texture on it and pow, color stages.
    I made 7 in total, download is at the end of this post.

    Now that we have these basics down, shall we try something more... extreme?
    Do you remember this? I posted it before I emerged on my big adventure. I was bored in 3ds Max, and did this, planning to make it into a stage. Well, time has come. With our new knowledge, I had to rate the model, and shrink it a bit.
    Just a bit, though.

    And one texture conversion and hex edit later, I got a 2.5 MB file, while the regular oens are always below 1 MB.
    Might this make the DLC unable to work? Yep!
    Might this make my PSp explode? Maybe!
    Do I care? NOPE!

    So, just a bit later...
    ...it worked. The goal I set myself is complete.
    I just added a little skybox...
    ...and it was done.

    You can download the WED and Color stages in my Stage Topic: viewtopic.php?f=32&t=197

    Next time: "halp how 2 animayshun n lightz": Animating and lighting a stage - is it possible? Trying to recreate the original Love Is War stage!
  15. So I got animation working, but it's so simple it does not deserve a chapter, because all I would've written was this:

    "I animated without bones. Didn't work.
    I animated with bones. Did work."

    So I released the Stage Making guidelines on the Wiki: [wiki]Custom DLC (Tutorials)#Custom Stage Creation [A][/wiki]
    Have fun creating wonderful stages for wonderful Edits, and thanks for reading this topic.
  16. excuse me for interrupting, and hi there new member here, but if i may ask, would Syuo happen to know if there's an alternative to this Alchemy that i can turn to for extracting and viewing these stage textures that she's been researching on? or.......
  17. No, there's nothing. You need Alchemy, and it's very hard to get because Intrinsic, the company of Alchemy, instantly send Cease and Desist letters to everyone sharing it.
    If you just need to have some textures extracted/replaced, or want a stage converted to PD, just drop me a PM
  18. I guess Suyo is currently the only one who went this far with stage creation. o_O;;
  19. Well, I posted all the guidelines on the Wiki, and offer to convert the stages, so if you want to makeyour own one you can do it.

Share This Page