don't click here

Sonic Mania: Hacking Discussion

Discussion in 'Engineering & Reverse Engineering' started by Chimera, Aug 29, 2017.

  1. ICEknight

    ICEknight

    Researcher Researcher
    Is nobody going to comment on how there's a starting point for a "Sonic + Tails + Knuckles" game?


    That's probably what the "& Knuckles" mode was planned to do when starting a "Sonic & Tails" game, at one point.
     
  2. jubbalub

    jubbalub

    #1 Sonic Superstars defender Member
    1,003
    1,237
    93
    That's probably just a universal spawn point that every character uses.
     
  3. EyeKey

    EyeKey

    Member
    29
    0
    0
    I created a tool to render the views of scenes. Probably like what jman2050 did.

    [​IMG]

    The rendering script:
    https://github.com/koolkdev/rsdkv5_extract/blob/master/render_scene_view.py
    It requires python and the libraries PIL and construct.

    It is still not perfect, I need to rotate and flip some tiles, and I don't do it yet. I think that it is encoded in the upper 6 bits of the tile, so I will update the script to do it soon. (edit: fixed it now, the first and second bits are for flipping it, I am still not sure what are the other 4 bits)

    I started to parse the format of the scene binary file. Here is the parser:
    https://github.com/koolkdev/rsdkv5_extract/blob/master/parse_scene.py
    As you can see, most of the things are still unknown.

    The download of a packaged binary for this tool is here:
    https://github.com/koolkdev/rsdkv5_extract/releases/tag/render-scene-view-0.1
     
  4. Pokepunch

    Pokepunch

    Member
    84
    0
    6
    UK
    A Sonic 2 Hack
    One the topic of speeding up music, do we know how it's handled for Blue Sphere? Is it just a single track that speeds up or is it handled by the game in some way?
     
  5. sparkpinretro

    sparkpinretro

    Twice the tails, double the fun Member
    13
    0
    1
    It's a track that's already sped up at the correct times, BlueSphereSPD.ogg
     
  6. Has anyone found how to change Zone title card text yet?
     
  7. null1024

    null1024

    Member
    161
    0
    16
    Implementing speed shoes faster music should just be as easy as re-rendering the original song at a higher BPM (ostensibly really damn easy, but would require tweaks for any samples that actually play alongside the song, like drum loops, vocals, actual live play synced to the sequenced tracks, etc) and just scaling the current position by the speed-up percentage when you change to the speed-up version of the song.
    Still, said non-sequenced bits will totally make things a bit of a pain -- you could re-record (which is extra effort, and in some cases impossible), do a sample speed change without pitch change (can sound kind of rough -- it's best if you can sync the chops it makes to be related to the BPM of the sample to reduce the "cut up" effect this has, and some tools are better at this than others and can smooth over the cuts, this also works better with some sounds compared to others), or just ignore it completely (lol don't actually do this).
    Games that use wholly live-played music would have to do the sample speed change, and that'll sound noticeable.

    As someone who does sample timestretching the quick and dirty way all the time with Renoise's Sxx command (play sample at position, in this case I'd have it just constantly jump ahead in the sample to match the tempo; works like 9xx in XM but it takes a hex percentage instead of a sample count offset) on drum and vocal loops to let me adjust the pitch no matter what speed I set, it doesn't sound too rough for a lot of things (assuming you don't run the sample the sample slower than it'd play at a given pitch, which sounds awful as a timestretching method but sounds cool as a special effect).
    It's not good enough for a whole song, but more than good enough for a handful of recorded samples that are synced to the tempo.

    naturally, all of this only applies if you have the source files for the song, if you don't, you're stuck using sample timestretching, and again, that sounds rough at best
     
  8. flarn2006

    flarn2006

    Member
    280
    3
    18
    I'd still love to have official word on why exactly they aren't releasing the editor for use in creating mods. There's got to be some good reason; the creator of SonED is literally one of the game's main developers, so I'd be very surprised if the devs wouldn't like having editing tools available to modders. (Ideally they'd have self-contained level files that can be loaded into the game as extras, shareable via Steam Workshop.)
     
  9. sparkpinretro

    sparkpinretro

    Twice the tails, double the fun Member
    13
    0
    1
    I'm pretty sure the editor they used was part of the RSDK, so they'd have to make a Mania-specific editor or strip down the RSDK scene editor for public consumption. They'd also have to worry about level scripts etc. and it would overall require a massive amount of QA testing.
     
  10. Jason

    Jason

    *Results not lab tested. Member
    I have to ask: what is Denuvo hindering at the moment? It doesn't seem to be preventing tampering with game code.
     
  11. Chimera

    Chimera

    I'm not a furry. Tech Member
    1,272
    17
    18
    Castlevania prettyness
    your play experience :specialed:/>


    I'm guessing the implementation of Denuvo was, even if unintentionally, specifically just a verification check i.e. exactly what Steam does but embedded in the EXE. My guess is the usual stuff Denuvo's supposed to do didn't exactly work with Tax/Stealth's program because unlike "AAA" games nowadays, the Retro Engine is *very* optimized, and incredibly small, so Denuvo probably just didnt work as intended, the game was already delayed to the 29th, so they just got it to work as far as having always-online... which eventually got patched into a check-for-online-once thing or check-if-steam-is-active routine. Speculation of course, but honestly that's the only thing that makes sense; they tried their usual stuff but none of it worked because they're not used to an executable so small and efficient.

    Of course, its inclusion explicitly makes the game very much not as efficient.


    Considering the executable could be decompiled, I wonder if we'll be able to see, at some point, a full removal of Denuvo. That would be DRM removal which is the illegals, sure, but it'd be interesting to see it floating around and maybe undergo a "proof" in how Mania WITH Denuvo chugs on a lowend machine, meanwhile with Denuvo removed, Mania runs at a buttery smooth 60FPS. Would be funny if that went public and news sites / pundits started making a fuss about it; maybe SEGA Europe would be inclined to finally remove the garbage :v:/>
     
  12. ICEknight

    ICEknight

    Researcher Researcher
    Sales. :v:
     
  13. SF94

    SF94

    Tech Member
    The end user.
     
  14. Fred

    Fred

    Taking a break Oldbie
    1,563
    117
    43
    Portugal
    Sonic 3 Unlocked
    You know, if you have no idea what you're talking about, you can just refrain from posting rather than trick the casual observer into thinking you know what you're talking about.
     
  15. McAleeCh

    McAleeCh

    Oldbie
    1,472
    532
    93
    Quick question for people who've already been digging through the game - I've not been able to unpack my copy of Mania to poke around yet. I'm currently in the midst up updating the Mania Omni template on the wiki to include all the enemies found in-game, and I'm wondering if anyone's come across any files or somesuch within the game which would give clues to the names for the following enemies/bosses that are missing names on the wiki:

    • Lava Reef Zone Mini-Boss
    • Metallic Madness Mini-Boss
    • Hydrocity Main Boss
    • Studiopolis Snail badnik
    • Studiopolis Orbinaut-type badnik
    • Studiopolis Bagworm/microphone badnik
    • Press Garden Woodpecker badnik
    • Press Garden Crab badniks (the sprite for these has already been uploaded by someone else under the name "Jugglesaw", but I've seen no source for this so far. Can anyone confirm if this is the actual name?)
    • Titanic Monarch Wasp(?) badnik (the one which generates the giant red targeting overlay when near the player - wiki says it's a woodpecker but I'm really not seeing it!)
    • Chemical Plant unused pond-skater badnik
    As far as I can see no names are currently known for any of these - if any have been mentioned in other sources (i.e. Stealth's stream) they certainly haven't been added to the wiki yet! Any help here from folks who've been digging through the game already would be greatly appreciated, though I'll also have a dig around myself as soon as I'm able to.

    I was going to ask about the Press Garden Mid-Boss too, but I see that's already been found so will get that added pronto:
    ...Also, have just noticed that the Armadilloid enemies appear to be misassembled in-game, as I'm currently trying to replicate its in-game assembly for their wiki image (can't seem to match the exact assembly though, so will have to wait until I'm able to take a screenshot for reference!). The pilot is positioned too far forward, resulting in it overlapping the bigger Armadillo's ear. The pilot's handles cut off early on their left-hand side, too - presumably they're supposed to be further back on the shell so that this would butt up against the right-hand edge of the ear, which would solve both issues!
     
  16. Chimpo

    Chimpo

    Why is Tekken 6 afraid of Tekken 7? Member
    8,637
    1,499
    93
    Los Angeles, 2029
    Aiming for Genbu!
    Italian release group known as Conspiracy has cracked the game
    [​IMG]

    2 week delay
    1 week to break
     
  17. Chimera

    Chimera

    I'm not a furry. Tech Member
    1,272
    17
    18
    Castlevania prettyness

    Guess I didn't make it too clear that I was just spitballing i.e. "Speculation of course, but honestly that's the only thing that makes sense." Guess that looked buried in words :v:

    Was trying to more offer my own thoughts on whats going on since denuvo literally doesn't look like its working based on its product description as an anti-tamper technology, on an executable that's been continuously tampered with; unless they just didn't do their job and it's true the way this thing works is they inject the DRM into an EXE you provide them, it seems the only thing they could do is act as DRM, as we've been seeing... and just slow the damn game down. But no i don't have access to debugger tools like IDA to see exactly what denuvo's doing or have worked with it in the past to form a clear answer.

    If my nonsense post looked like attempted manipulation or something, that wasnt my intent and i apologize. I'm not tryign to "trick people into thinking I'm smart" or something stupid like that. If that annoys you / you feel giving an answer without 100% certainty is intellectually dishoent, I guess I'll refrain from that. Usually my hope is to offer something so if someone DOES know the real answer they'll correct me (in my experience people like to correct people more than they like to give answers, eh), but i guess I didnt make it clear enough I was saying what I *think* based only on what I can see rather than being accurate. That or that's not exactly constructive and I should stop that anyway, in which case, my bad.



    Anyway, something I do know about...

    Earlier I said removing .bin files from the Objects folder did a lot of weird stuff and caused things like removing motion graphics, setting Puyo mode to turbo, crashing special and bonus stages, and most importantly: changing player physics. Or, more accurately, REMOVING player physics. Characters couldn't move outside of spindashing, a jump would last literally 1 frame because they'd just land again, and they were slaves to the slopes of the terrain, sliding over all of it as if they were on ice. However, like spindashing, characters still had their abilities; sonic could dropdash, tails could fly (however he could only go up, not left or right), and Knuckles could glide and climb perfectly fine--his superform even had faster climbing like you'd expect.

    The file in question controlling this behavior is:

    36D61A3DE508B500AE0ECF8D33F32943.bin


    File contents:

    [​IMG]

    What seems to be happening is this file controls the differences in character traits for each character, since they all seem to have different jump heights, starting speed, friction, air speed, etc., however exclusive properties / ones that straight up don't change between characters seem to be hard coded into the game. Spindashing works the same between the 3 of the characters, Knuckles' glide and climb is entirely unaffected, and Tails' flight still functions vertically; it's his horizontal movement that no longer works, presumably because it's tied to his air friction/mobility/etc... I think. Then again I'm not gonna make assumptions :specialed:

    These object files are interesting for sure, but from what I can tell this is the only one that seems to control things relevant to gameplay. Might be a while before this gets understood, then again progress on modding's been insane this week so... Maybe not.




    Worth noting that when the game's idling, all files can be removed from the "Objects" folder except these 7, as Windows will tell you they're "currently being used."

    0A95413EF896999B1B5DCAFD19F07F90
    09F50C61464BCFA45F26511A29FB1145
    33B8E672A1DEA5654AF81AEF98BDAA6F
    7236F48F00B2217ED5890EC7DC00D581
    575130A718E77F70E8BDE0B5822855C5
    BAC6691DAF43463B358FAD24315D5396
    CA2737FBD52AA1BEF679748AC30DBFAE


    This leads me to believe that these are actively checked by the game for *something* while everything else is loaded into memory once and then discarded until they're needed again; this happens for a lot of files actually because when you exit "Mania Mode" and go to, say, the title screen or any of the main menus, then re-enter a level, any and all changes you made to a character's data gets applied. Again though, just speculation :p
     
  18. EyeKey

    EyeKey

    Member
    29
    0
    0
    The names of the static object files are hashes generated from the name of the object.
    Here is a mapping of all the objects to files:
    AIZTornado -> Data/Objects/Static/837851AB76D9F726E97291E6F761921C.bin
    AmoebaDroid -> Data/Objects/Static/3B3672B8B3DE043AA60690ECA5BED7A6.bin
    Animals -> Data/Objects/Static/33B8E672A1DEA5654AF81AEF98BDAA6F.bin
    BSS_Collectable -> Data/Objects/Static/1C0DAC922F5324EA54C3ECB4C0FACFFF.bin
    BSS_Setup -> Data/Objects/Static/715D1A3BC7242C39198E6A8D8E5FC1D0.bin
    BallCannon -> Data/Objects/Static/EF87A07DA7300A6BDCE944BC9CCC2B64.bin
    BigSqueeze -> Data/Objects/Static/71A77478202AF43D2D6F56A284F528D7.bin
    BreakableWall -> Data/Objects/Static/09F50C61464BCFA45F26511A29FB1145.bin
    CPZSetup -> Data/Objects/Static/4AFC943F1EF442684FB95BE660166A14.bin
    ChaosEmerald -> Data/Objects/Static/CC5419FC91471F269C427BD306CED284.bin
    ChemicalBall -> Data/Objects/Static/0344C9A8B5489E85401B4B309C608926.bin
    ChemicalPool -> Data/Objects/Static/E7B6ABB18F0BC48156143BAFBA018B4E.bin
    ConveyorPlatform -> Data/Objects/Static/5337F3B0C92FF6ADF207C77B18D0ACAF.bin
    CorkscrewPath -> Data/Objects/Static/575130A718E77F70E8BDE0B5822855C5.bin
    CrimsonEye -> Data/Objects/Static/D4DACA8531FB3A7EDBC71B9007838E43.bin
    Cylinder -> Data/Objects/Static/E22C2C69C1C75E1A419D961C5F265A36.bin
    DDWrecker -> Data/Objects/Static/CA2737FBD52AA1BEF679748AC30DBFAE.bin
    ERZGunner -> Data/Objects/Static/943231E16FCAA5DC4ACE31D92CF324E1.bin
    FBZMissile -> Data/Objects/Static/351EA95CFD36A485418DA41642BA6118.bin
    FBZStorm -> Data/Objects/Static/146FD7B05708988A7FADA048F874FEBB.bin
    GHZSetup -> Data/Objects/Static/0A95413EF896999B1B5DCAFD19F07F90.bin
    Gachapandora -> Data/Objects/Static/0F3F7376DC1EE25093DB289D4839C0DC.bin
    HCZSetup -> Data/Objects/Static/00D255DA3281F005F2465E60931C26E5.bin
    HeavyKing -> Data/Objects/Static/52491E8E7B7FBF7493EC3EE04517EA51.bin
    HotaruHiWatt -> Data/Objects/Static/88C6BE290459808C97145B6A2B5EF6BB.bin
    KingAttack -> Data/Objects/Static/136110A366076846C968BECD9F4B66E3.bin
    KleptoMobile -> Data/Objects/Static/B0657CE43050BD30AB8704FF5DA14B34.bin
    LRZSpiral -> Data/Objects/Static/E868B41AE507F5D3E0BE03437EAB8CEC.bin
    LaundroMobile -> Data/Objects/Static/2DB772CB09C12AFB37E86CD46FB7D9BB.bin
    LevelSelect -> Data/Objects/Static/BAC6691DAF43463B358FAD24315D5396.bin
    MMZSetup -> Data/Objects/Static/1DB444A10060783F9B1B16E3B42CA06F.bin
    MSZCutsceneST -> Data/Objects/Static/310FD3E59E8C58BA09FB8DE6290F2031.bin
    MSZSetup -> Data/Objects/Static/70BA0C565D600C945E2E0FFEF6A9256F.bin
    MagnetSphere -> Data/Objects/Static/621330217AC74CC89913DEA666BC9FF3.bin
    MechaBu -> Data/Objects/Static/84E00179988757CB56408205E78A1FB1.bin
    MegaOctus -> Data/Objects/Static/133AFFEDB305BB473FAEF8E9C1F12CEB.bin
    MeterDroid -> Data/Objects/Static/AEAC38DA20219D86FAFBB6160AA9807A.bin
    OOZSetup -> Data/Objects/Static/802E9898B64AC948F5D5AD68A3EA7EA0.bin
    PKingAttack -> Data/Objects/Static/BDAE7DAB3C274B2303267EAA0537B68E.bin
    PSZ1Setup -> Data/Objects/Static/5B0D0FAB588338D885220934A018173D.bin
    PSZ2Setup -> Data/Objects/Static/391E5E934C51410C0240DA5E2450B07E.bin
    PSZLauncher -> Data/Objects/Static/77C94437D5AA2882479D44EDDE535A69.bin
    PetalPile -> Data/Objects/Static/F616C91F1678EDCF31391321516CFAC8.bin
    PhantomEgg -> Data/Objects/Static/8384F8660903B07FC41E700C43D03993.bin
    PhantomGunner -> Data/Objects/Static/98C225B734D79CBB525795C65DEFE95B.bin
    PhantomHand -> Data/Objects/Static/40409B350D17BD7B989EEED055D03DE7.bin
    Player -> Data/Objects/Static/36D61A3DE508B500AE0ECF8D33F32943.bin
    PullChain -> Data/Objects/Static/17710E51F9B6C877A8F4640441E48FC6.bin
    PuyoAI -> Data/Objects/Static/7E443122AD19335046B4A94E529198EA.bin
    PuyoBean -> Data/Objects/Static/CBDE41F38DF0EBA5B517E51B1A149582.bin
    PuyoMatch -> Data/Objects/Static/40BF7B890248C84F61716E8C04627928.bin
    RollSwitch -> Data/Objects/Static/BD7B0128A038883FE438A56FF8225BA8.bin
    SDashWheel -> Data/Objects/Static/64C2BB97D5B8AAFAA0045B4693FCBC63.bin
    SPZ2Setup -> Data/Objects/Static/FD48DFCA939A95DA828D88E0F3005887.bin
    SPZSetup -> Data/Objects/Static/DE88C44102F952196553C77A58F4C880.bin
    SSZSpotlight -> Data/Objects/Static/A7EF031B715DB5AFE192FD684FF86FCC.bin
    SeeSaw -> Data/Objects/Static/10B90142394439F6FFC74E0F3EA69C6E.bin
    SentryBug -> Data/Objects/Static/4F2957AEC1917FB3D930B9CFF99A591E.bin
    Springboard -> Data/Objects/Static/8967DF5368482670BD769EB9B01F4EF6.bin
    Tornado -> Data/Objects/Static/63BC4CC1C121F1C2865F77A611E80A72.bin
    UFO_Sphere -> Data/Objects/Static/57E0DE3BE0D5327AC86D1EF644C82518.bin
    UIBackground -> Data/Objects/Static/BD3DF348C7BC63FF3F5529F2E33F9CFE.bin
    UncurlPlant -> Data/Objects/Static/BDE6EDF00C055F5B5223AD5A0CD1EA26.bin
    Water -> Data/Objects/Static/7236F48F00B2217ED5890EC7DC00D581.bin
    WeatherMobile -> Data/Objects/Static/269AAD4034FE425BF886015F74F83FB0.bin

    The code for each object in the binary uses things from the file for that object.
    The file that you talked about is for "Player".

    The game init all the structs with pointers to the functions for those objects in 0x57DDE0.
     
  19. McAleeCh

    McAleeCh

    Oldbie
    1,472
    532
    93
    Thanks - that seems to have confirmed two more names I hadn't seen previously; Laundro Mobile for Hydrocity's main boss, and Sentry Bug for the previously-unnamed Titanic Monarch badnik. = )

    Current list of things stil unnamed AFAIK:

    • Lava Reef Zone Mini-Boss
    • Metallic Madness Mini-Boss
    • Studiopolis Snail badnik
    • Studiopolis Orbinaut-type badnik
    • Studiopolis Bagworm/microphone badnik
    • Press Garden Woodpecker badnik
    • Press Garden Crab badniks (sprite already uploaded by someone else under the name "Jugglesaw" - can anyone confirm?)
    • Chemical Plant unused pond-skater badnik
     
  20. EyeKey

    EyeKey

    Member
    29
    0
    0
    Here is a list of all the objects, maybe it will help you: (most of the objects don't have static object file)
    Acetone
    ActClear
    AIZEggRobo
    AIZKingClaw
    AIZSetup
    AIZTornado
    AIZTornadoPath
    AmoebaDroid
    AnimalHBH
    Animals
    Announcer
    APICallback
    Aquis
    Armadiloid
    BadnikHelpers
    Ball
    BallCannon
    BallHog
    BarStool
    Batbot
    Batbrain
    Beanstalk
    BGSwitch
    BigSqueeze
    BladePole
    Blaster
    Blastoid
    Bomb
    BouncePlant
    BoundsMarker
    BreakableWall
    BreakBar
    Bridge
    BSS_Collectable
    BSS_Collected
    BSS_Horizon
    BSS_HUD
    BSS_Message
    BSS_Palette
    BSS_Player
    BSS_Setup
    Bubbler
    BuckwildBall
    Buggernaut
    Bumpalo
    Bungee
    BurningLog
    Button
    ButtonDoor
    BuzzBomber
    BuzzSaw
    CableWarp
    Cactula
    Camera
    Canista
    Caterkiller
    CaterkillerJr
    ChaosEmerald
    CheckerBall
    ChemBubble
    ChemicalBall
    ChemicalPool
    Chopper
    CircleBumper
    Clapperboard
    Clucker
    CollapsingPlatform
    CollapsingSand
    ColorHelpers
    Competition
    CompetitionSession
    Constellation
    ContinuePlayer
    ContinueSetup
    ConveyorBelt
    ConveyorPlatform
    ConveyorWheel
    CorkscrewPath
    COverlay
    CPZ1Intro
    CPZ2Outro
    CPZBoss
    CPZSetup
    CPZShutter
    Crabmeat
    Crane
    CrashTest
    Crate
    CreditsSetup
    CrimsonEye
    Current
    CutsceneHBH
    CutsceneRules
    CutsceneSeq
    Cylinder
    DAControl
    Dango
    DASetup
    DashLift
    DBTower
    DCEvent
    DDWrecker
    Debris
    DebugMode
    Decoration
    DemoMenu
    DERobot
    DirectorChair
    DiveEggman
    DNARiser
    DoorTrigger
    Dragonfly
    DrawHelpers
    Drillerdroid
    DrillerdroidO
    Dust
    E3MenuSetup
    EggJanken
    EggJankenPart
    EggLoco
    Eggman
    EggPistonsMKII
    EggPrison
    EggTower
    EggTV
    ElectroMagnet
    ERZGunner
    ERZKing
    ERZMystic
    ERZOutro
    ERZRider
    ERZSetup
    ERZShinobi
    ERZStart
    EscapeCar
    Explosion
    Fan
    FarPlane
    FBZ1Outro
    FBZFan
    FBZMissile
    FBZSetup
    FBZSinkTrash
    FBZStorm
    FBZTrash
    FilmProjector
    FilmReel
    Fireball
    Fireflies
    Firework
    Fireworm
    FlameSpring
    Flamethrower
    FlasherMKII
    FlingRamp
    Flipper
    FlowerPod
    FoldingPlatform
    ForceSpin
    ForceUnstick
    FrostThrower
    Funnel
    FXExpandRing
    FXFade
    FXRuby
    FXSpinRay
    FXTrail
    Gachapandora
    GameOver
    GameProgress
    GasPlatform
    GenericTrigger
    GHZ2Outro
    GHZCutsceneK
    GHZCutsceneST
    GHZSetup
    GiantPistol
    Gondola
    Grabber
    GreenScreen
    GymBar
    HandLauncher
    HangConveyor
    HangPoint
    Hatch
    Hatterkiller
    HCZ1Intro
    HCZOneWayDoor
    HCZSetup
    HCZSpikeBall
    HeavyGunner
    HeavyKing
    HeavyMystic
    HeavyRider
    HeavyShinobi
    HiLoSign
    Honkytonk
    Hotaru
    HotaruHiWatt
    HotaruMKII
    HPZEmerald
    HUD
    Ice
    IceBomba
    IceSpring
    ImageTrail
    Ink
    InkWipe
    InvincibleStars
    InvisibleBlock
    ItemBox
    Iwamodoki
    JacobsLadder
    Jawz
    Jellygnite
    JuggleSaw
    JunctionWheel
    Kabasira
    Kanabun
    KingAttack
    KingClaw
    KleptoMobile
    LargeGear
    Launcher
    LaunchSpring
    LaundroMobile
    LavaFall
    LavaGeyser
    LEDPanel
    Letterboard
    LevelSelect
    LightBarrier
    LightBulb
    Localization
    LocoSmoke
    LogHelpers
    LogoSetup
    LottoBall
    LottoMachine
    LoveTester
    LRZ1Outro
    LRZ1Setup
    LRZ2Setup
    LRZ3Cutscene
    LRZ3OutroK
    LRZ3Setup
    LRZConvControl
    LRZConvDropper
    LRZConveyor
    LRZConvItem
    LRZConvSwitch
    LRZFireball
    LRZRockPile
    LRZSpikeBall
    LRZSpiral
    MagnetSphere
    MagPlatform
    MagSpikeBall
    MathHelpers
    MatryoshkaBom
    MechaBu
    MegaChopper
    MegaOctus
    MenuParam
    MenuSetup
    MetalArm
    MetalSonic
    MeterDroid
    MicDrop
    Mine
    MMZSetup
    MMZWheel
    MonarchBG
    MonkeyDude
    Motobug
    MSFactory
    MSHologram
    MSOrb
    MSPanel
    MSZ1KIntro
    MSZ2Cutscene
    MSZCutsceneK
    MSZCutsceneST
    MSZSetup
    MSZSpotlight
    Music
    Newspaper
    Newtron
    Octus
    OneWayDoor
    OOZ1Outro
    OOZFlames
    OOZSetup
    Options
    Orbinaut
    OrbitSpike
    PaintingEyes
    PaperRoller
    ParallaxSprite
    ParticleHelpers
    PathInverter
    PauseMenu
    Pendulum
    PetalPile
    PhantomEgg
    PhantomGunner
    PhantomHand
    PhantomKing
    PhantomMissile
    PhantomMystic
    PhantomRider
    PhantomRuby
    PhantomShield
    PhantomShinobi
    PimPom
    Pinata
    Piston
    PKingAttack
    PlaneSeeSaw
    PlaneSwitch
    Platform
    PlatformControl
    PlatformNode
    Player
    PlayerHelpers
    PlayerProbe
    PohBee
    Pointdexter
    PopcornKernel
    PopcornMachine
    PopOut
    Press
    PrintBlock
    Projectile
    Propeller
    PropellerShaft
    PSZ1Setup
    PSZ2Intro
    PSZ2Outro
    PSZ2Setup
    PSZDoor
    PSZEggman
    PSZLauncher
    PullChain
    PullSwitch
    PushSpring
    PuyoAI
    PuyoAttack
    PuyoBean
    PuyoGame
    PuyoIndicator
    PuyoLabel
    PuyoLevelSelect
    PuyoMatch
    PuyoScore
    Rattlekiller
    Reagent
    Redz
    Rexon
    Ring
    RingField
    RisingLava
    RockDrill
    RockemSockem
    RollerMKII
    RotatingSpikes
    RotatingStair
    RPlaneShifter
    RTeleporter
    RubyPortal
    SaveGame
    Scarab
    ScoreBonus
    ScrewMobile
    SDashWheel
    SeeSaw
    SeltzerBottle
    SeltzerWater
    SentryBug
    Shield
    Shiversaw
    ShopWindow
    Shuriken
    Shutterbug
    SideBarrel
    SignPost
    SilverSonic
    SizeLaser
    SkyTeleporter
    Smog
    Snowflakes
    Sol
    Soundboard
    SP500
    SP500MkII
    SparkRail
    Spear
    SpearBlock
    SpecialClear
    SpecialRing
    SpeedBooster
    SpeedGate
    SpiderMobile
    SpikeCorridor
    SpikeCrusher
    SpikeFlail
    SpikeLog
    Spikes
    SpinBooster
    SpinSign
    Spiny
    SpiralPlatform
    Splats
    Spring
    Springboard
    SPZ1Intro
    SPZ1Setup
    SPZ2Outro
    SPZ2Setup
    SSZ1Intro
    SSZ1Outro
    SSZ1Setup
    SSZ2Setup
    SSZ3Cutscene
    SSZSpikeBall
    SSZSpotlight
    Staircase
    Stalactite
    StarPost
    Stegway
    StickyPlatform
    SuperSparkle
    Sweep
    SwingRope
    SwitchDoor
    Syringe
    TAEmerald
    TargetBumper
    Technosqueek
    TeeterTotter
    TetherBall
    ThanksSetup
    ThoughtBubble
    TilePlatform
    TimeAttackData
    TimeAttackGate
    TimePost
    TimeTravelSetup
    TippingPlatform
    Title3DSprite
    TitleBG
    TitleCard
    TitleLogo
    TitleSetup
    TitleSonic
    TMZ1Outro
    TMZ1Setup
    TMZ2Outro
    TMZ2Setup
    TMZ3Setup
    TMZAlert
    TMZBarrier
    TMZCable
    TMZFlames
    Tornado
    TornadoPath
    Toxomister
    TransportTube
    TryAgain
    TTCutscene
    TubeSpring
    Tubinaut
    Tuesday
    Turbine
    TurboSpiker
    TurboTurtle
    Turntable
    TurretSwitch
    TVFlyingBattery
    TVPole
    TVVan
    TwistedTubes
    TwistingDoor
    TwistingSlide
    UberCaterkiller
    UFO_Camera
    UFO_Circuit
    UFO_Decoration
    UFO_Dust
    UFO_HUD
    UFO_ItemBox
    UFO_Message
    UFO_Plasma
    UFO_Player
    UFO_Ring
    UFO_Setup
    UFO_Shadow
    UFO_SpeedLines
    UFO_Sphere
    UFO_Springboard
    UFO_Water
    UIBackground
    UIButton
    UIButtonLabel
    UIButtonPrompt
    UICharButton
    UIChoice
    UIControl
    UICreditsText
    UIDialog
    UIHeading
    UIInfoLabel
    UIKeyBinder
    UILeaderboard
    UIMedallionPanel
    UIModeButton
    UIOptionPanel
    UIPicture
    UIResPicker
    UISaveSlot
    UISlider
    UISubHeading
    UITAZoneModule
    UIText
    UITransition
    UIUsernamePopup
    UIVideo
    UIVsCharSelector
    UIVsResults
    UIVsRoundPicker
    UIVsScoreboard
    UIVsZoneButton
    UIWaitSpinner
    UIWidgets
    UIWinSize
    UncurlPlant
    Valve
    VanishPlatform
    Vultron
    WalkerLegs
    WallBumper
    WallCrawl
    WarpDoor
    Water
    WaterGush
    WeatherMobile
    WeatherTV
    Whirlpool
    Wisp
    WoodChipper
    Woodrow
    YoyoPulley
    ZipLine