Wait Jimmy is a tech member? I could have never guessed! Anywho even when adding them as a hex, the characters still won't load properly. Mechless Tails never works and for some reason I can't replace Shadow in some of his missions. Both are converted to byte and I have hex input enabled. Perhaps I am doing something wrong?
I tried switching the function that loads Sonic for the one that loads Super Sonic, but it just crashes. I was able to switch the pointer to Sonic's code with Super Sonic's, which gave me Super Sonic with Sonic's model, animations and textures.
If we figure out how the cutscenes load up the models, you could essentially replace them. But the cutscenes files are just confusing as heck to me last time I looked into them...
I bet I could pop the audio into audacity and reset the times just a little to fix 'em up. But that I don't care enough about.
I got that to happen when messing with the Gamecube version way back when. http://sappharad.com/images/4player.jpg No, there is no 4 player, just evidence that they wanted to do that. The character values provided in the previous page(s) aren't enough to get the mechless characters to load. That requires assembly hacking, because the game will only run the routines that load those versions of the characters when the chao garden is loading. Same with the alternate 2 player models (Amy, Metal Sonic, etc). The logic is there, it's just a simple one instruction change if I recall correctly.
To make Mech Eggman playable in Chao World change the byte at 43CA0C from 3 to 7. To make Mech Tails playable in Chao World change the byte at 43CA46 from 2 to 6. To make Mechless Eggman playable outside Chao World change the byte at 43CA92 from 7 to 3. To make Mechless Tails playable outside Chao World change the byte at 43CAD6 from 6 to 2. To make the test stage accessible by setting the stage to 0 change the byte at 43C983 from 0x7D to 0xEB. To make Amy playable in 1P mode change the bytes at 716E13 from 74 1C to 90 90 and set the byte at 174B015 to 1. To make Metal Sonic playable in 1P mode change the bytes at 717373 from 74 1C to 90 90 and set the byte at 174B015 to 1. To make Tikal playable in 1P mode change the bytes at 728123 from 74 1C to 90 90 and set the byte at 174B015 to 1. To make Chaos playable in 1P mode change the bytes at 728473 from 74 1C to 90 90 and set the byte at 174B015 to 1. To make the Dark Chao Walker playable in 1P mode change the bytes at 740C61 from 74 1C to 90 90 and set the byte at 174B015 to 1. To make the Chao Walker playable in 1P mode change the bytes at 740EC1 from 74 1C to 90 90 and set the byte at 174B015 to 1. Edit: bonus: Always load two characters: change the bytes at 43D6EB from 0F 84 90 00 00 00 to 90 90 90 90 90 90. Always use splitscreen mode: change the bytes at 439703 from 74 46 to 90 90. Turns 1P mode into kind of a 2P co-op mode. Use the byte at 1934BE4 to change P2's character. Double Edit: SCHG:Sonic Adventure 2 (PC)\RAM Editing If you find something, you could like, add it.
Does the checkpoint system work the same way as it does in regular 2P mode, where just one person has to touch it and it spawns either player their when they die? I'm just curious because the light dash lines in Crazy Gadget would only let one player make it to the end if it doesn't.
So not quite sure how putting these values in works for whatever reason. When I put in 717373 the value it says is 7284 or something, not 741C. Hmmmm...
You need to make it an Array of Bytes. Nope. If either of you die the level restarts, and for some reason P2 always starts at the beginning.
Does the game still use the low-res models for 2P mode by default? Is there an easy way to change that?
^ Yes someone mentioned how to change that a few pages back. Looks like a pretty simple fix as well. And I got the codes to work. Just like Amy, Metal Sonic is still broken. He can use the black shield but he can't somersault or light dash, his sound effects are also screwed up. Funny thing is though that Metal can almost get through all of Shadow's levels, as Sky Rail and Final Chase don't require either move.
How are you entering the values? Using the memory browser? If not, are you using the 'array of bytes' datatype?
Is there any kind of tutorial out there to explain it to me like I'm five? Nevermind, I've gotten it.
Doublepost, but just did a breakdown of all the values for the level address. Code (Text): World: 0 - Chao World (With mission text)*** 1 - Chao World (No mission text) 2 - Glitch Level 3 - Green Forest 4 - White Jungle 5 - Pumpkin Hill (with a goal ring) 6 - Sky Rail 7 - Aquatic Mine* 8 - Security Hall* 9 - Prison Lane 10 - Metal Harbor 11 - Iron Gate** 12 - Weapons Bed 13 - City Escape 14 - Radical Highway 15 - Multiplayer Shooting Level (Metal Harbor) 16 - Wild Canyon* 17 - Mission Street** 18 - Dry Lagoon 19 - Sonic vs Shadow Battle #1 20 - Tails vs Eggman Battle #1 21 - Sand Ocean 22 - Crazy Gadget 23 - Hidden Base 24 - Eternal Engine 25 - Death Chamber 26 - Egg Quarters 27 - Lost Colony 28 - Pyramid Cave 29 - Tails vs Eggman Battle #2 30 - Final Rush 31 - Green Hill 32 - Meteor Herd* 33 - Knuckles vs Rouge 34 - Cannon's Core (Sonic's Section) 35 - Cannon's Core (Eggman's Section) 36 - Cannon's Core (Tails' Section) 37 - Cannon's Core (Rouge's Section) 38 - Cannon's Core (Knuckles' Section) 39 - Multiplayer Shooting Level (Radical Highway) 40 - Final Chase 41 - CRASH 42 - Sonic vs Shadow Battle #2 43 - Cosmic Wall 44 - Mad Space 45 - CRASH 46 - CRASH 47 - Pyramid Race 48 - Multiplayer Shooting Level (Desert Level) 49 - Pool Quest 50 - Planet Quest 51 - Deck Race 52 - Downtown Race 53 - Multiplayer Shooting Level (Space Level) 54 - Grind Race 55 - Multiplayer Shooting Level (Gun Facility Level) 56 - Multiplayer Shooting Level (ARK Level) 57 - Metal Harbor (no items) 58 - Multiplayer Shooting Level (Prison Level) 59 - Multiplayer Hunting Level (Pyramid Level) 60 - BIG FOOT fight 61 - HOT SHOT fight 62 - FLYING DOG fight 63 - King Boom Boo 64 - Egg Golem (Sonic Fight) 65 - The Biolizard 66 - The Finalhazard 67 - Egg Golem (Eggman Fight) 68 - CRASH 69 - CRASH 70 - Route 101 71 - Race Mode 72 - Loads whatever map with no items *When playing as a character other than Rouge or Knuckles, a goal ring appears at the normal initial spawn. **When playing as a non-mech character, smoke will bellow from their head. ***See below This is the mission text that shows up for Chao world. I haven't got any levels with missions 3-5 unlocked yet.
Considering that it only shows up when someone tries to access the test level, it was probably added when they "fixed" the Chao Key bug from the 360/PS3 version. Here's my list of level IDs: Code (Text): FFFFFFFF LevelIDs_BasicTest = 0 FFFFFFFF LevelIDs_KnucklesTest = 1 ; nonexistent FFFFFFFF LevelIDs_SonicTest = 2 ; nonexistent FFFFFFFF LevelIDs_GreenForest = 3 FFFFFFFF LevelIDs_WhiteJungle = 4 FFFFFFFF LevelIDs_PumpkinHill = 5 FFFFFFFF LevelIDs_SkyRail = 6 FFFFFFFF LevelIDs_AquaticMine = 7 FFFFFFFF LevelIDs_SecurityHall = 8 FFFFFFFF LevelIDs_PrisonLane = 9 FFFFFFFF LevelIDs_MetalHarbor = 10 FFFFFFFF LevelIDs_IronGate = 11 FFFFFFFF LevelIDs_WeaponsBed = 12 FFFFFFFF LevelIDs_CityEscape = 13 FFFFFFFF LevelIDs_RadicalHighway = 14 FFFFFFFF LevelIDs_WeaponsBed2P = 15 FFFFFFFF LevelIDs_WildCanyon = 16 FFFFFFFF LevelIDs_MissionStreet = 17 FFFFFFFF LevelIDs_DryLagoon = 18 FFFFFFFF LevelIDs_SonicVsShadow1 = 19 FFFFFFFF LevelIDs_TailsVsEggman1 = 20 FFFFFFFF LevelIDs_SandOcean = 21 FFFFFFFF LevelIDs_CrazyGadget = 22 FFFFFFFF LevelIDs_HiddenBase = 23 FFFFFFFF LevelIDs_EternalEngine = 24 FFFFFFFF LevelIDs_DeathChamber = 25 FFFFFFFF LevelIDs_EggQuarters = 26 FFFFFFFF LevelIDs_LostColony = 27 FFFFFFFF LevelIDs_PyramidCave = 28 FFFFFFFF LevelIDs_TailsVsEggman2 = 29 FFFFFFFF LevelIDs_FinalRush = 30 FFFFFFFF LevelIDs_GreenHill = 31 FFFFFFFF LevelIDs_MeteorHerd = 32 FFFFFFFF LevelIDs_KnucklesVsRouge = 33 FFFFFFFF LevelIDs_CannonsCoreS = 34 FFFFFFFF LevelIDs_CannonsCoreE = 35 FFFFFFFF LevelIDs_CannonsCoreT = 36 FFFFFFFF LevelIDs_CannonsCoreR = 37 FFFFFFFF LevelIDs_CannonsCoreK = 38 FFFFFFFF LevelIDs_MissionStreet2P = 39 FFFFFFFF LevelIDs_FinalChase = 40 FFFFFFFF LevelIDs_WildCanyon2P = 41 FFFFFFFF LevelIDs_SonicVsShadow2 = 42 FFFFFFFF LevelIDs_CosmicWall = 43 FFFFFFFF LevelIDs_MadSpace = 44 FFFFFFFF LevelIDs_SandOcean2P = 45 FFFFFFFF LevelIDs_DryLagoon2P = 46 FFFFFFFF LevelIDs_PyramidRace = 47 FFFFFFFF LevelIDs_HiddenBase2P = 48 FFFFFFFF LevelIDs_PoolQuest = 49 FFFFFFFF LevelIDs_PlanetQuest = 50 FFFFFFFF LevelIDs_DeckRace = 51 FFFFFFFF LevelIDs_DowntownRace = 52 FFFFFFFF LevelIDs_CosmicWall2P = 53 FFFFFFFF LevelIDs_GrindRace = 54 FFFFFFFF LevelIDs_LostColony2P = 55 FFFFFFFF LevelIDs_EternalEngine2P = 56 FFFFFFFF LevelIDs_MetalHarbor2P = 57 FFFFFFFF LevelIDs_IronGate2P = 58 FFFFFFFF LevelIDs_DeathChamber2P = 59 FFFFFFFF LevelIDs_BigFoot = 60 FFFFFFFF LevelIDs_HotShot = 61 FFFFFFFF LevelIDs_FlyingDog = 62 FFFFFFFF LevelIDs_KingBoomBoo = 63 FFFFFFFF LevelIDs_EggGolemS = 64 FFFFFFFF LevelIDs_Biolizard = 65 FFFFFFFF LevelIDs_FinalHazard = 66 FFFFFFFF LevelIDs_EggGolemE = 67 FFFFFFFF LevelIDs_Route101280 = 70 FFFFFFFF LevelIDs_KartRace = 71 FFFFFFFF LevelIDs_ChaoWorld = 90 These are all confirmed by a table of strings and level IDs in the exe that would seem to make a debug level select, with lists for each character for 1P and 2P. Code (Text): .data:01415D58 dword_1415D58 dd LevelIDs_BasicTest, LevelIDs_SonicTest, LevelIDs_CityEscape .data:01415D58 ; DATA XREF: .data:off_1415FB8o .data:01415D58 dd LevelIDs_BigFoot, LevelIDs_MetalHarbor, LevelIDs_SonicVsShadow1 .data:01415D58 dd LevelIDs_GreenForest, LevelIDs_PyramidCave, LevelIDs_EggGolemS .data:01415D58 dd LevelIDs_CrazyGadget, LevelIDs_FinalRush, LevelIDs_SonicVsShadow2 .data:01415D58 dd LevelIDs_CannonsCoreS, LevelIDs_FinalHazard, LevelIDs_GreenHill .data:01415D58 dd LevelIDs_KartRace, LevelIDs_ChaoWorld .data:01415DC8 off_1415DC8 dd offset aBasicTest ; DATA XREF: .data:01415FBCo .data:01415DC8 ; "BASIC TEST" .data:01415DCC dd offset aSonicTest ; "SONIC TEST" .data:01415DD0 dd offset aCityEscape ; "CITY ESCAPE" .data:01415DD4 dd offset aBigFoot ; "BIG FOOT" .data:01415DD8 dd offset aMetalHarbor ; "METAL HARBOR" .data:01415DDC dd offset aSonicVsShadow ; "SONIC VS SHADOW" .data:01415DE0 dd offset aGreenForest ; "GREEN FOREST" .data:01415DE4 dd offset aPyramidCave ; "PYRAMID CAVE" .data:01415DE8 dd offset aEggGolem ; "EGG GOLEM" .data:01415DEC dd offset aCrazyGadget ; "CRAZY GADGET" .data:01415DF0 dd offset aFinalRush ; "FINAL RUSH" .data:01415DF4 dd offset aSonicVsShadow2 ; "SONIC VS SHADOW 2" .data:01415DF8 dd offset aCannonSCore ; "CANNON'S CORE" .data:01415DFC dd offset aFinalHazard ; "FINAL HAZARD" .data:01415E00 dd offset aGreenHill ; "GREEN HILL" .data:01415E04 dd offset aCartMini ; "CART MINI" .data:01415E08 dd offset aChaoWarld ; "CHAO WARLD" Edit: Code (Text): .data:00C51660 dd offset aSuperSonic ; "SUPER SONIC" .data:00C51664 dd offset aPoweredByThe ; "Powered by the " .data:00C51668 dd offset a7ChaosEmeralds ; "7 Chaos Emeralds." .data:00C5166C dd offset aAmazingSpeedAn ; "Amazing speed and moves," .data:00C51670 dd offset aButDiesIfRings ; "but dies if rings are lost." .data:00C51674 dd offset aSuperShadow ; "SUPER SHADOW" .data:00C51678 dd offset aPoweredByThe ; "Powered by the " .data:00C5167C dd offset a7ChaosEmeralds ; "7 Chaos Emeralds." .data:00C51680 dd offset aAmazingSpeedAn ; "Amazing speed and moves," .data:00C51684 dd offset aButDiesIfRings ; "but dies if rings are lost."
I managed to get the debug menu to show up... except that it's invisible. I pushed a bunch of random buttons and somehow ended up in a cutscene debug, complete with pause, fast forward and rewind features: http://www.youtube.com/watch?v=QKd5vVHuY5I Edit: however, the menu does display in the GC version. All you have to do is replace advertiseD.rel with titleD.rel. It should work similarly for advertise.prs and title.prs in the DC version.