(DC) Sonic Adventure Prototype (1998-10-16)

Discussion in 'General Sonic Discussion' started by Orengefox, May 21, 2013.

  1. Interesting, so that must be where the "instruction" images come from. Meaning Sonic should have one in Emerald Coast and Windy Valley/Red Mountain.
     
  2. Woofmute

    Woofmute

    Y and -Y and XYZ-X-Y-Z. Member
    184
    0
    16
    Hacking and researching Rez.
    There was a crash I can't replicate with Sonic in Emerald Coast. Not sure if that was tutorial related or not though.
     
  3. Lanzer

    Lanzer

    The saber calls for its master... Member
    6,842
    0
    16
    Glendale, AZ
    Doing Stuff.
    So we were supposed to have in-game tutorials as well? Thats some awesome findings.
     
  4. evilhamwizard

    evilhamwizard

    Researcher
    1,331
    146
    43
    Time to bring this thread back from the dead once again.

    I attempted to extract all the sound effects from the AutoDemo. The game keeps it's sound effects in the .MLT files, which you can extract and convert to dsfmini/dsflib files. The MLT files themselves hold multiple banks which seem to correlate to their use, although not every MLT file uses all banks:

    Bank 0x0 - General player action sound effects (ring sfx, jump sfx, etc - this is duplicated a lot)
    Bank 0x1 - Area specific sound effects (objects mostly)
    Bank 0x2 - More general player action sounds (seem to be meant for general objects the player interacts with and other things, like item boxes and brushing up against bushes)
    Bank 0x3 - Player action sound effects (the P_* files)
    Bank 0x4 - Enemy sfx
    Bank 0x5 - Ambient/Environmental sound effects
    Bank 0x6 - Cutscene specific sound effects, used by the E_#### files. Also contains player action voices.

    I extracted the MLT files using dsfmake (for extracting), dsftime for timing/fade correction, and dsfsndext for figuring out how many banks each MLT had. For some reason, the script doesn't like the AutoDemo's MANATEE.DRV, so I used the final's MANATEE.DRV instead and I was able to get most of the sound effects out. There are still some that can't be played for some reason, but a good chunk of them play at least.

    Some interesting things to note:
    1.) Even though the AutoDemo uses the ring sound effect when rescuing an animal, the sound effect for collecting one exists but isn't used (it seems different too).
    2.) The classic bubble collect sfx is present! But there are no air bubbles at all in SA1...
    3.) Likewise, the classic drowning sfx is also present! In the final they just use voice acting. (Does anyone know what happens when a character drowns in the AutoDemo? Can they drown?)
    4.) The classic sound effect for losing a shield (the generic hit sound that doesn't involve losing rings) is present but not used.
    5.) The Chao voices are all in ALIFE Bank 1. There are some Chao voices for actions the Chao can't seem to do in the AutoDemo. The bank also includes all the animal sound effects plus some other weird mysterious stuff.
    6.) Even though most of the level assets aren't present the sound effect files for Sky Deck, and Chaos 0/2/4 still exist. TARGET.MLT is Sky Chase I think?

    That's pretty much all I could see from going through everything once. You can download the dsfmini/mp3/mlt files here. Some of the sound effects might not be playing at the right rate, but some of them sound fine. Now we just need to directly compare these with the final version to see how many really are different...
     
  5. Clownacy

    Clownacy

    Tech Member
    797
    29
    28
    What about those in Big's Emerald Coast?
     
  6. evilhamwizard

    evilhamwizard

    Researcher
    1,331
    146
    43
    I meant in the AutoDemo. But come to think of it, there's no sound when Big collects one is there?

    EDIT: It turns out the classic "Sonic gets hit" sound is used in the AutoDemo but only when he dies? Sonic doesn't really drown in the AutoDemo either. The AutoDemo will quickly display a count down, but there's no drowning jingle or animation when Sonic drowns. The sound effect I found isn't used either...
    EDIT2: Ack scratch that, the air bubbles are in the AutoDemo for Big's Emerald Coast. They still don't make a sound when you collect them though. In fact a lot of the sounds present are like that. The sound effects for the menus and such are present but they aren't used here yet.
     
  7. Diablohead

    Diablohead

    Indie dev Oldbie
    1,756
    6
    18
    Near London
    games
    The old lightspeed attack looks so weird, placeholder or not it's too slow and I'm glad it's not what we got.
     
  8. OKei

    OKei

    OKeijiDragon Member
    1,468
    8
    18
    Video Basement
    Finally, some high quality SA1 sound effects I can use for my phone. Its also pretty interesting seeing that Red Mountain was originally called Dry Mountain in development, as the internal files indicate.
     
  9. evilhamwizard

    evilhamwizard

    Researcher
    1,331
    146
    43
    Bump, someone on TCRF posted a few Station Square things:

    [​IMG]
    [​IMG]
    [​IMG]

    From the article:

    I already mentioned that the pool area had the ladder and a few extra chairs about a year or two a go, but I didn't notice all the main area stuff because of the corrupt textures while playing in game. The game has SET files for each part of the city, but 4 out of the 6 are blank. SETSS00 (the City Hall area) looks pretty much identical, all that seems to be missing is the rock you use to swap with the gold Chao egg. It also seems to lack the Emblem inside the Burger Shop and the burger man that you can carry outside. SETSS05S (the Twinkle Park entrance) is just a copy of SETSS00.

    I also looked at Casinopolis again and noticed that the NiGHTS table seems to be completely missing. I might've mentioned it a while back, but the only remaining pinball table is the Sonic one. The land table occupying the NiGHTS table is this:

    https://sketchfab.com/models/21509f8049d1468a928c76a96cc7a03b

    Which looks similar to this:

    [​IMG]

    I'm not sure if there's more to the land table other than this, but it looks to be all that's there (I don't even see a tube that leads out of this).

    Like Station Square, the SET files for most of the parts of the stage are blank except for the pinball table itself (see below). It references all the level specific objects (the flippers, starting shoot point, etc).

    Besides that, you can view the models for the other parts of the stage here (note: all maps lack textures, like the test maps.):

    https://sketchfab.com/models/bd450b9984894d20a096f0580fb3b289 //Main Area (bunny girl with mini bar)
    https://sketchfab.com/models/e93d1599fe474330a19fd5ef85773ccb //Sewers (there's a huge winding path going towards the part you normally start in which has been documented before but is more clearly seen here, is it different?)
    https://sketchfab.com/models/134404bf34ee405ea77795e0036d4357 //Sonic pinball table (has objects, but not seen here)

    I recommend navigating these with first person mode (so you can use your mouse and WASD). For some reason, the stage file does reference a few textures. The file seems to reference the Lost World Part 2 background images (lost2_nbg1, 2, 3, 4), and still has references to the icons for the slot machine.
     
  10. Energy

    Energy

    Member
    That's really cool to see :)
    Thanks!
     
  11. Jen

    Jen

    #lapidot Moderator
    1,306
    0
    16
    England
    Various drawings
    Oh wow, nice! It's incredible that people are still finding new things in the AutoDemo!

    I've gotta say, I love that Twinkle Park entrance. I wonder why it got such an overhaul before the final version of the game was released?

    It actually looks an awful lot like the area which is right at the end of the level:

    [​IMG]
     
  12. evilhamwizard

    evilhamwizard

    Researcher
    1,331
    146
    43
    A quick post and a plea for help.

    I've been working on replacing the bad pointers in STG02 for the last few days and managed to find almost all of the ones that point to functions in 1st_read except for a few of them:

    https://drive.google.com/file/d/0BxBpjpxzhTjSeEpZN09kQ1J5QU0/view?usp=sharing

    I found most of these pointers by using the E103/E104 objects from both this version and Red Mountain's stage file. The cool thing about Red Mountain's stage file is that most of the functions that go into the E104 object are identical to that in the broken Windy Valley. So I used Red Mountain's version of the object as kind of a rosetta stone for finding good pointers for the same subroutines. When I exhausted all of the possible pointers from E104's object, I used the expected function/data sizes of each pointer to find possible functions within a specific range. This works best when the range from one pointer to the next is a difference of only a few bytes, any more than that and you run the risk of including a subroutine that changed from one version of 1st_read to another. If you consistently bump into functions by doing this method, chances are you are correct. When I exhausted certain possibilities with this method, I started to compare the code in other broken stages in the prototypes (which incidentally share all the same bad pointers) with the final NTSC-J versions. When I found the same place within the broken stage that has a broken pointer that coincides with an area within the disassembly of the equivalent final version's stage, I looked at what the final version was pointing to and tried to find the equivalent function in the AutoDemo's 1st_read. The last method works wonderfully, since it also provides some room for double checking to see if your previous guesses are correct by having other stages to compare to. The problem is that it can get very tedious really fast and you don't identify as many pointers in a short span of time. It also doesn't work on certain stages because of how drastically things changed from the AutoDemo to the final (either because of the compiler/libraries used, change in logic, etc).

    As I said before, not all pointers could be found with these methods and so are left unknown at the moment. However, the benefit of building a table with the bad pointers is that we can see the general distance (size) from each pointer to the next which can help in pin pointing the correct function. You could also eliminate certain functions based on what registers it's manipulating within the function (for example, something was moved to r4 before the function was called so chances are the function has to manipulate r4 in some way).

    There are some pointers to data needed by some functions that I haven't been able to find (probably path data?) and there are some functions that need to be rechecked. I also noticed that there were some pointers that pointed outside of both the stage file and 1st_read. I have no idea what these are pointing to (they aren't pointers to function afaik), so we need to change those too. There are also 4/5 pointers to specific data (not code) within 1st_read specifically for Windy Valley that I don't know whats for. My guess was path data, but it could be something else.

    I also no longer have the ability to properly test these changes because of the older versions of demul's compatibility issues with Windows 10 and the fact that I don't remember how I managed to repack the GDI and PRS files to make it all work. If anyone could test what I have so far to see if something at least loads up that'd be great. I have faith that the game won't mind the lack of textures, sounds or music for the stage as it seems to handle other levels that lack them just fine. The problem we're definitely going to have are the bad pointers, so that needs to be fixed at the very least. All that you'd need to do to change all the bad pointers is to convert every address I have in the table to little endian, and write a script or manually find/replace each address with your favorite hex editor.

    Of course, all of this might be for nothing if the functions being called from 1st_read play around with different registers than what the stage is expecting. But I don't think it'll be much of a problem, since I think we could just null out certain calls if we needed to. However, if we build a list of all the bad pointers along with the correct ones, we might be able to fix more stages than just this one.
     
  13. Sappharad

    Sappharad

    Oldbie
    1,353
    21
    18
    1. What Windows 10 compatibility issues? I use both the old 0.49 debugger build, and a recent build from a few months ago and both work fine on Windows 10.
    2. I released a tool to build GDI images last year, you can grab that here if you don't already have it:
    http://projects.sappharad.com/tools/gdibuilder.html
    You provide IP.BIN, along with a folder containing all of the extracted files from the disc, and it will build track03.bin into the destination directory you specify. If you have an existing .gdi image, it will automatically overwrite track03.bin for you and update the .gdi file as necessary. So just make a copy of your GDI into another folder, and rebuild the image each time you need to test something new. (There's a command-line version as well, if you need to automate it)

    For compressing PRS files, there are actually a few different tools that can do it. One of them can be found on this page the guy who wrote it also wrote one of the open source PSO servers so it's at least been tested against Phantasy Star Online.

    I'd love to try out your stuff here, but it's going to be a few days before I'll have some time to take a look. Hope the details above might help you test your stuff.
     
  14. evilhamwizard

    evilhamwizard

    Researcher
    1,331
    146
    43

    Sorry for the late reply, I've been busy myself the past few days.

    1.) Ah, I fixed the problem since I posted. One of the included video plugins wasn't working properly so I switched it out so it's all good.
    2.) That's a really nice tool you made, it works like a charm. I recall doing this stuff years a go by making a CDI out of the extracted files by running through a bunch of command line programs to get working.

    The only concern I have is creating the PRS. Afaik, besides prsutil that you mentioned, there's Nemesis' prs tools and the included compressor with Puyo Tools. All the tools I tested seem to give a compressed file size that's a bit bigger than what the original was, Puyo Tools the one that comes close to the original size but still quite big. I was wondering if this might be a problem when reassembling the GDI file since usually the file should be less than or equal to the original file size for it to work. I don't know if it's like that for Dreamcast games, but I need to make sure the game wont break if I include a file that's bigger than the one it expects based on what's in IP.BIN...
     
  15. Sappharad

    Sappharad

    Oldbie
    1,353
    21
    18
    GDIbuilder also updates the track information in IP.BIN, that won't be an issue. I've even used it to rebuild bad dumps and make them boot. As long as the larger PRS file doesn't cause it to run out of memory, it shouldn't be a problem for you to include something that is compressed more poorly than the original.

    If you ever run into problems I'd be glad to look into it.
     
  16. evilhamwizard

    evilhamwizard

    Researcher
    1,331
    146
    43
    Everything seems to work just fine as you said.

    Here's something interesting I was able to do:

    [​IMG]

    :)

    Before I attempted at applying all the pointer changes to the stage file, I decided to try out the "nop rts" method I talked about earlier where I basically null out EVERY instruction for every function except for the common objects and see what would happen. Sure enough, the game will load the stage! This confirms what I believed before, the game doesn't care if the texture files are missing or the sound or the music. The game doesn't seem to look for them from 1ST_READ's point of view, so the game will load the stage itself no problem. This also confirms that pretty much the only thing stopping us from loading any of the stages are the bad pointers.

    Since the stage is now technically loadable in the game, there's a couple things I noticed:

    1.) The camera is STILL fucked up even when it's running in this version. The camera in the first stage will break very quickly as soon as you begin to move throughout the stage, zooming far away from the player.
    2.) I'm unsure either this version of the game will load up all the objects, since I'm not sure if the game still has a limit to the number of objects you can load (or if the limit is higher)
    3.) I thought the level layout would be less exploitable when loaded in the AutoDemo, but Sonic and Tails can still blast through every act with careful spindashes and flight.

    What I plan to do now is slowly put back all the code for each object back into the stage file with the correct pointers to see which ones are still broken even with my fixes. This will make debugging much easier for me, imo.
     
  17. Ch1pper

    Ch1pper

    Fighting the Battle of Who Could Care Less Member
    657
    4
    18
    Life.
    Which stage is that? The lack of textures make it hard to tell where Knuckles is.
     
  18. BlazeHedgehog

    BlazeHedgehog

    A "Community Enigma"? Oldbie
    1,460
    5
    18
    Looks like the prototype Windy Valley to me, near the so-called "Chao Garden" section.
     
  19. evilhamwizard

    evilhamwizard

    Researcher
    1,331
    146
    43
    It's Windy Valley Act 3 in the AutoDemo with garbage textures because the texture file is missing.

    Also I got some objects loaded up. Besides the common objects (which were repaired easily and aren't different), here's a list of all the objects that I was able to "repair":

    Flower 0
    Flower 1
    WKi1
    Wki2
    WKusa1
    Green0
    Grass1
    Grass2
    Grass3
    Grass4
    LRock1
    Rock1
    Rock2
    Rock3
    Rock5
    IwaB
    Sirusi5
    Sirusi6
    Sirusi7
    Sirusi8
    Sirusi9
    Siru11
    Siru12
    Siru13
    Pole1
    Pole2
    Yaji01
    IDai1
    IDai2
    IDai3
    IDai4
    IDai5
    IDai6
    IDai7
    IDai8
    IDai9
    IHas14
    IHas15
    IHas16
    IHasi17
    IHasi18
    IBou01
    IBou02
    IHah01
    IHah02
    IHah03
    Ioiwa01
    Ioiwa02
    Ioiwa03
    SaraB1
    SaraB2
    SaraM1
    SaraM2
    SaraS1
    SaraS2
    Baneiwa
    WGate
    WGate2
    Trampol
    Raft
    Prop1
    Prope1
    Prope2
    Prope3
    PropeA
    PropeB
    PropeC
    Dome1
    Sirusi2
    PinkF

    This is out of 115 objects total (including all the 'common' ones). I still have a lot to put in plus whatever non-object related code is loaded at the start of the file.

    Here are some shitty gifs I made:

    Misc 'static' objects - flowers, bushes, rocks, etc:
    [​IMG]
    The interesting thing to note is the animation applied to everything. I don't think this was seen in Dude's restoration. All the plants rattle in the wind, which is bizarre to see without textures. It's definitely not an error because of the bad textures.

    "Baneiwa" or "Spring Rock":
    [​IMG]
    The early version of Windy Valley sported a unique floating blue version of the spring. This spring, unlike the normal common spring, isn't as sensitive to the player's touch. You have to literally jump on the top to be pushed outward. I recall seeing a video of this in action in a press conference or advert and the player was pushed outward much more calmly than this. It might have something to do with the parameters the stage's set file gives to the object that affects the velocity it pushes the player. The object set file for this stage was originally for a much early version than the actual stage file, so the objects coding were probably tweaked quite a bit since then.

    WGate (or WGate2, not sure which this is):
    [​IMG]
    This is present in the final somewhere (at least in the object list), but the propellers are animated here just a tad too fast...

    Trampol (Trampoline):
    [​IMG]
    One minor difference here that's hard to see is that the trampoline is actually smaller than what it ends up being in the final. I currently have this working for all the characters besides Sonic, since the game crashes after the first hop because Sonic uses a unique animation when hes flying in the air on the trampoline. The other players just hop up and down like as you see here. I must've messed up a pointer somewhere so I'll have to take a look.

    As far as problems go, everything seems okay. The game likes to crash sometimes if you destroy a badnik with Knuckles but that's pretty much it. I'll keep showing off my progress if people are interested, but probably sans bad gifs next time...
     
  20. Jen

    Jen

    #lapidot Moderator
    1,306
    0
    16
    England
    Various drawings
    Awesome stuff! It's great that you've managed to get so much of the level working. I'd be very interested to see what further progress you manage to make with this :)