Quick links: Wiki page (Sonic Classic Heroes) Wiki page (Sonic 2 Heroes) Latest revision (v0.10.008a) Latest preview video Edit: New revision is out. Changelog: Revision 0.10.008a: Download it here Enhancements over previous revision: Espio can attach more easily to ceilings now. New continue icons for Chaotix by E-122-Psi. Espio will now path swap while walking on walls (e.g., loops). Credits screen scrolls text into and out of view instead of fading palette. Charmy can no longer carry Espio and Vector, that is just too ridiculous and overpowered. Sorted credits by alphabetical order. Espio now uses rolling sprites instead of twisting sprites when appropriate. Enhancements over original games: Advancing lava wall in MZ2 now waits for the players to all be below a closing hatch. GHZ collision improvements for climbing and flying. A few layout and collision improvements for SLZ. Espio has an 8-way twisting sprites now. Bugs fixed from previous revision: Super dash now works for Chaotix too. Fixed super dash ending with Chaotix (and future teams). Better handling of large and small sizes when "landing" on walls and ceilings. Added a "jumping area" for Vector in SYZ3 button. Fixed bug preventing any team with Vector in it from progressing to Death Egg. Graphical errors in Chaotix signposts. Fixed glass blocks in MZ. Made Vector normal size for the time being due to numerous size-related bugs. Fixed a few issues with Knuckles' and Vector's climbing when grabbing a wall near the floor, as well as with Vector's ledge climb. ARZ boss pillars were clearing 'on-air' flag too late. Several objects that set rolling state could crash the game. Charmy can now roll when played by humans to allow breaking (say) breakable HTZ floor. Swapping to a CPU-controlled Charmy that was chargins a spindash will reset mode correctly. Aligned uncompressed art so that DMA does not cross a 128kB boundary, and fixed DMA function to break this case up. Made sure no code exists on the upper 2MB area to prevent conflicts when SRAM is being used. S1->S2 transition fixed for all cases with all teams. Charmy is forced down more powerfully at the end of act (no more infinite dashing). Fixed non-working switch in MTZ1; ironically, the fixes for slope glitch caused this issue by allowing off-screen switches to call SolidObject when offscreen as they should. S monitor was causing characters to get stuck when it ended. Certain characters can enter in CPZ tubes in a different manner and would get stuck; they can break the breakable blocks from underneath now. Credits was still displaying Sonic 2 Heroes. Still need to fix the end-of-credits logo. Upward speed cap was not being enforced for Charmy. Charmy can now break breakable walls. Characters in forced spin mode will no longer display their running frames when landing on ground. Bugs fixed from the original games: Silver Sonic being defeated on a specific frame can prevent further progress. Fixed remaining case in ARZ boss where he could take off quickly when defeated (thanks goes to RedHotSonic). Spoiler Revision 0.10: Download it here. Changelog: Enhancements over previous revision: Added Chaotix-style coop mode (based on idea given in unrelated context by Iceman404) where players are tied to one another by energy bands. In this mode, players 2 and 3 can activate signposts and starposts. Team Chaotix is now up, with graphics by E-122-Psi, some by Iceman404 and a lot of palette editing by me. Several performance improvements. Submerged lightning and fire shield monitors turn into bubble shield monitors. Hyper monitors in super dash mode now change music to Super Sonic. Started porting over S3&K's raw animation system; for now, only performance critical objects have been changed. If either P2 or P3 presses 'C' during pause, he commits suicide. Enhancements over original games: Performance improvements in LZ. Bugs fixed from previous revision: Fixed some collision issues in ARZ. Underwater palette cycles for LZ conveyors was wrong. Super das mode correctly reverts to level music instead of super music when reverting from drowning. A mistimed fire shield dash no longer breaks WFZ cutscene. Eliminated several ways of triggering slope glitch for offscreen characters. Anyone can trigger SBZ3 transition to FZ now. Fixed death bug in a specific region of LZ3 caused by a workaround inherited from S1&2 which seems to not be needed anymore. Fixed address error that could come as a result of LZ gargoyle's fireballs hitting walls. Not changing game type in options does not reset level select choice. Drowning countdown loads correct graphics when drowning in shallow water (e.g., LZ1 start). Wrong branch in Knuckles' balancing code means he didn't balance correctly on all edges. Bugs fixed from the original games: Deaths can wrap around to the top of the screen in vertically wrapping levels. Wrong collision with walls and ceilings while walking on them. Older revisions and their changelogs are folded below: Revision 0.07f6: Download it here Changelog: Bugs fixed from previous revision: Knuckles could gain anti-gravity glitch on Scrap Brain Zone by standing on a vanishing platform as it vanishes if Tails was not standing on that same platform. Fixed some wrapping bugs. Bugs fixed from the original games: Jumping from rolling into the MTZ yellow spring walls left you without control, forcing you to use a double-jump action. Revision 0.07f5: Download it here Changelog: Enhancements over previous revision: Lag reduction in GHZ by reducing object count. Moved HUD half a tile to the right to account for TV overscan in real hardware. Enhancements over original games: LZ spikeballs on chains and spikeball chains are no longer as laggy. Bugs fixed from previous revision: Night mode should be enabled without having to hold C until you reset the console. Depending on order, enabling cheats would cause garbled text in options screen. After getting all emeralds, level select would show the 8th emerald as the next special stage target. Speeds were not correctly reset when changing characters. Added missing S2&K extra life in CPZ2. Some platforms in SLZ had weird behavior in some cases. Save games now get really deleted (was missing a write to SRAM). A few minor physics fixes in normal game. S1 special stages physics improvements (prevents getting stuck and allows hands-free path to emerald in first stage). Inhaling bubbles will set the correct animation and correctly disable gliding/climbing/flying. Fixed instant death by jumping over a certain set of spikes in GHZ3 Lives, continues and emeralds collected are now saved at the end of special stages, instead of after the end of the (next) act. Incorrect flipping on S2 special stage animations. Ensure a valid next level after selecting special stages on level select. Orbinaut's orbs will bounce away when touched by shield even if they were still circling the Orbinaut. Fix to SYZ3 start had unacceptable side-effects, and has been reverted. New attempt using different method should have no side-effects. Shadow positioning error in S2 Special Stages of the last character when he was at the left edge and falling. Extra delays in joypad reading functions so it works better in real hardware. Super Sonic's underwater palette did not revert correctly. Fixed abrupt (and incorrect) water level change in end of LZ3. Fixed jumping through wall bug if you gathered enough speed in first slide at LZ3 start. Bugs fixed from the original games: SpirituInsanum's fix for top-right reloading glitch. Revision 0.07f4: Download it here (mirror). This is probably the last bugfix revision I will do for now; the next revision will have more than simple bugfixes (unless a critical show-stopping bug is unearthed). Enhancements over previous revision: Small layout change in SYZ2, most visible at the end of the level with Tails. Layout changes in MZ (all acts) so people will stop complaining about Knuckles not being able to climb sprites. Also added something in these levels for explorers. If AI on S2 special stages is disabled, the single player HUD is shown instead. Removed last traces of old options screen and level select menu. Enhancements over original games: Small optimizations in S2 special stage physics. Bugs fixed from previous revision: Entering special stages from options screen correctly fades everything to white. Special stage entry sound plays if you gain an extra life at the end-of-act score tally. Knuckles incorrectly did not check collision with terrain when gliding, falling from glide or sliding if the bit for being standing on an object was set. GHZ edge wall object did not correctly set its standing height and horizontal position. Having Tails drag a character onto the big ring will now correctly remove the character from the world. Bugs fixed from the original games: S2 special stages now have symmetric animations with regards to the vertical and horizontal center lines. S2 special stage bomb collisions keep the sign of angular speed. Time over when drowning and time over when dying bugs; getting hurt then drowning bug; all based on code by RedHotSonic. No more monitors hidden in walls in SBZ2. Added some path swappers in CPZ2 to fix priority issues. Climbing animation issue if touching the side of a sprite before jumping to climb. Revision 0.07f3: Download it here. Enhancements over previous revision: Minor speed improvements on several routines. Bugs fixed from previous revision: Both fireballs from CNZ boss spikeball went on the same direction. Vanishing flaming grass platforms in MZ, along with several potentially bad bugs related to it. Bugs fixed from the original games: Duck then jump bug on vertically looping levels. Fixed SYZ3 glitch through floor, hopefully without side-effects. Revision 0.07f2: Download it here. Enhancements over previous revision: The character that entered the big ring is the one that goes to special stage. If the leader presses 'A' in the S2 special stages, he will move to the front if he is not already there. Can't gather more than 99 continues. Bugs fixed from previous revision: Blue shade in CNZ big ring. Incorrect starting level in Sonic 2 only mode. Graphical glitches in S1->S2 transition, S1 ending, including Tails' tails. All pushing block issues have been fixed. Fixed color-changing Newtron in GHZ2. Fixed some special stage results bugs. Correctly initializing previous DPLC on objects where this could be an issue (big ring, end of level signpost). S2 Special stage Knuckles had a frame with wrong priority in a couple of tiles. Bug involving scattering/attracted rings and being hurt. Revision 0.07 final: Download it here Download it here. Enhancements over previous revision: Start+A goes back to title screen. You no longer turn into team Hyper with the all-emeralds cheat if you wait for the 100 rings to run out, then collect 50 rings and transform. Sol and chaos emeralds flash at half the frequency on the results screen, with a 1-frame offset between them so they can appear simultaneously. Save games. New options/level select replacement. Enhancements over original games: EHZ spiral pathway and MTZ cylinder played havoc with spawning CPU animations. Bugs fixed from previous revision: LZ doors could prevent you from being sucked on unrelated water tunnels. Improved Sonic spawning on water levels. Hopefully, that lightning shield on water bug I can never reproduce. Fixed starpole animation issues due to premature clearing of respawn flag then being reloaded, coupled with the S3&K object manager. End-of-game Heroes emblem palette. Continue screen. Bugs fixed from the original games: Fixed a couple of pixels on Sonic's ducking sprites. Fixed alignment for Knuckles looking up. Cannot gain more than 99 lives and glitch the lives counter. Revision 0.07 beta 5a: Download it here. Bugs fixed from previous revision: Rings attracted by lightning shield were misbehaving when any of the players got hit. Bugs fixed from the original games: Attracted rings did not count for perfect bonus if collected after the shield was lost. Revision 0.07 beta 5: Download it here. Changelog: Enhancements over previous revision: Improved positioning of Knuckles when climbing over a ledge. Slightly changed collision in S1 special stages in an attempt to prevent people from getting stuck. Probably buggy! Enhancements over original games: Attracted rings should follow the players the right way on looping levels. Bugs fixed from previous revision: Push blocks worked wrong when being pushed to the left. Two tiles in one single frame of bubble shield bounce somehow got blanked. End of super transformation correctly reverses Knuckles' and Tails' colors once again. Animated tiles at the background of SBZ2 and FZ. Fixed explosions on FZ boss and on Silver Sonic, which showed incorrectly under some conditions. Vines in HTZ zip lines looked wrong. Rexxon's fireball looked wrong. Sol animated wrong after throwing all fireballs. One frame os Sonic's jumping animation in S2 Special Stages had missing foreground flag. Incorrect water ripples, introduced by two off-by-one errors in previous revision. Burrobots wrap their Y position, allowing a certain pair of them to be killed. Fixed ring priorities. Bugs fixed from the original games: Fixed superfast water slides while holding down. Water surface continues to animate when leader dies. Revision 0.07 beta 4: Download it here. Changelog: Enhancements over previous revision: Less lag from water ripples, based on some ideas by djohe. Less lag from invincibility stars. Enhancements over original games: Faster ring processing (based on code by redhotsonic, SpirituInsanum and djohe). Bugs fixed from previous revision: Fixed crash when playing with 2 players, swapping them, then moving near a monitor. Getting emeralds caused the S1->S2 transition to fail. Fixed fix for loops in wrapping levels. Incorrect use of Super Sonic ending pose on some cases when ending the level as Hyper Sonic. Wrong background scrolling in ARZ (both acts). Fixed garbled invincibility stars graphics. Fixed lightning flash from getting the lightning shield while underwater (can happen in LZ boss as the water rises). Fixed animation glitch from S2 special stages. S2 special stage ring count shows up wrong with a single player. Push blocks are slower. Bugs fixed from the original games: Bugged interactions of 1-up and speed shoes. Revision 0.07 beta: Download it here. Changelog: Enhancements over previous revision: Hack is now Sonic Classic Heroes, with new title screen emblem by Cinossu and layout by JojHeywood. Level select icons for Sonic 1 levels, including special stage(s). New act icons for Aquatic Ruin, Sky Chase and Wing Fortress, Neo. New background water ripple data for ARZ and CPZ. Removed more unused art from Sonic/Super Sonic/Tails/Knuckles. Removed triply redundant code in player objects. Made TeamPlayer code slightly more efficient. Spruced up end-of-game credits; better font colors for pre-title screen screen. Halved look up/down delay down to 1 second. More tweaks to super underwater palettes. Team selection persists after end-of-act. Can swap characters at end-of-act under relaxed conditions (has to be on-screen only). Implemented Xodras' suggestion to allow swap of player-controlled characters if the players are pressing a switch button. Switched to faster ObjectMove and ObjectMoveAndFall from S3&K. Team Super now gains extra lives at 200 and 300 rings, instead of 100 and 200. S3&K-style V-Int and H-Int handlers. S3&K-style terrain collision and slope resistance. A few palette tweaks. Knuckles now has his proper 3 shades without the need for ugly hacks for super Knuckles. In the interest of better support for future teams, the HUD icons have been moved around in VRAM so all characters can have $20 tiles again. Improvements on Sonic's and Tails' small sprites in ending so as to be better compatible with other teams. Improved Super Sonic ending image, Super Sonic end-of-act signpost, both by Mikel Crawford. Ported proper Super Flickies from S3&K (Team Super, Team Hyper, their endings). Ported all Hyper abilities and palettes (but not the after-images). Taken rings, broken monitors and destroyed badniks are saved when entering (and restored exiting) Special Stage. Perfect count is also kept. Reported graphics of lightning shield, bubble shield, super and invincibility stars, insta-shield, hyper stars from S3&K with more detail (using palette line 2 now). The same was done for the black-and-white sprites of Sonic, Tails and Knuckles. Freed turtles parachute to safety in Sky Chase zone. New HUD layout. Timer now only shows centiseconds (milliseconds was fake precision anyway), back to 7-digit scores, ring counter centered. Centiseconds are now shown based on auto-generated lookup table. Changed starpost positioning behavior to have all characters together at the starpole because of a certain starpole in SBZ1. New, better life icon/HUD icon for Sonic, Tails, Super Sonic and Knuckles. Inproved collapsing platform and breakable wall code, based on S3&K. Ported S3&K sprite manager and priority system to reduce lag and free some RAM. Removed code for unused scrolling effect in CPZ2. Using slight variation of Neo's font for HUD. Sonic 2 chaos emeralds are now called sol emeralds. Added new Sonic 1 special stage and emerald. Sol emeralds and chaos emeralds have the same colors and are collected in the same order. Show "Team Sonic" got through/got emerald/got all emeralds on 3-player games. Changed Deebs' Modern Genesis Amy to E-122-Psi's Classic Amy (Tornado, end of game). Large grayscale pixel art on ending done by Neo. All players move at the same speed when running after destroying EggRobo. Eggman now uses a consistent look throughout the whole game. His glasses are also no longer black. Converted all mappings to S3&K-style, eliminating the unused 2P mode entry. This reduces size slightly, and slightly increases speed. Shields now animate globally except when doing double-jump action. Hybrid S3&K and Chaotix object manager and memory allocator to reduce lag. Applied djohe's improved fix for OOZ launcher balls. Several code optimizations. Blue nomal shield no longer exists, having been replaced with golden shield. Team Hyper transformation from having all 14 emeralds, Team Super with either set. Invincibility monitors become S monitors when super/hyper. When picking up the monitor, it may act as speed shoes (if you are hyper or are playing with a team that can't become hyper), invincibility (if transformation ends before bonus is given) or gives you 20 rings and transform you into hyper for about 20 seconds. Fully functional S1 ending and S1->S2 transition. Zone ordered tables for Oil Slides, Wind Tunnels. Reordered zone IDs and zone tables to eliminate special cases almost everywhere. Enhancements over original games: Smarter art loading in Final Zone causes boss fight to begin faster. Big Ring does a better job of removing the player that went through it. Variable jump height in S1 special stage by Mercury (yes, I love this fix). Characters face the right way in Scrap Brain Zone 3. Signpost takes slightly longer to stop spinning if a big ring is on-screen. Perfect bonus for collecting all rings in S1 special stages. Bugs fixed from previous revision: Incorrect animation was being shown when Knuckles hit a boss while gliding. Fixed subtle bug in 3- versus 6-button controller input reading that was harmless only due to sheer luck. Fixed subtle bug in TeamPlayer code that caused a controller to be skipped and was harmless only as long as you had at least 3 controllers by the time a port with a multitap was finished reading. Corrected tone shift in PSG sounds, and modulation differences in all sounds, from S3&K. Deef's credits entry was being accidentaly overwritten by Aquaslash's. Lava bubble from HTZ boss (and the fire it set) cut through the fire shield because flag was being set on wrong object. Performing level select code in options screen incorrectly triggered Team Super mode. Fixed several cases of the walk on air glitch when player 2 or 3 was offscreen in a platform or other solid object. A few fixes to breakable plating in Wing Fortress zone, which now breaks faster if multiple characters are hanging onto it. Fixed bugs in seesaws. Pinball mode objects now restore characters to their proper state when it unloads. End-of-act signposts are loaded regardless of screen's vertical position. Act pics for ARZ2, SCZ and WFZ were wrong (all showed that of ARZ1). Knuckles is too low when celebrating from AI spawn. Missing Nebula in Sky Chase. It is now impossible to fall off the Tornado before it gets shot down at the start of WFZ. Ring manager checked for mapping frame instead of animation ID to see if the character was ducking. Aquis' and Octus' projectiles now reflected by shields. Fixed graphical shield curruption when entering special stages. Control bug fix on wind tunnels. Fixed permanent whiteout of water if 2 characters with lightning shields lose it by getting submerged within 4 frames of each other. Seesaws could not be used to build up speed. Sonic will now correctly respawn when there is water. ARZ boss' arrows fall when stood on for long enough by anyone (part fixed from original by Esrael, part broken by internal changes). Sonic no longer continuously despawns then respawns if the leader is above the top of the screen. Fixed crash on Sega Screen on emulated Japanese systems. Fixed concurrent drowning countdowns. Fixed rare death crash when swapping to a player which will die while HUD animates. Bugs fixed from the original games: ARZ leaves generator (a normally invisible sprite) suddenly appears when main player dies. Clearing the position array/status array vectors ignored the current status byte (facing, etc.). Can't enter a big ring if you haven't passed through the signpost. Removed 2 unreachable rings from ARZ2. It should now be possible to get perfects on Oil Ocean 2 and Metropolis 2. Harmless bug where the invisible grabber that allows the player to grab onto Robotnik's getaway ship in WFZ was coded to hurt the player, but didn't because he happened to be in ball form. Eggrobo will also remove collision from head when being hit on the body. Background blue mountains in HTZ scroll continuously now. MCZ balls on chains did not properly delete themselves when offscreen. Vladikcomper's PLC buffer fix. Death/hurt bug with CPZ tubes. The collision hit box of CPZ boss' Mega Mack did not match its graphics. The Mega Mack could not hit ducking characters. Droplets will no longer loop around the level. CPZ boss gets gunked by Mega Mack when hit (by Esrael). Tails' tails animation error when pushing (by RedHotSonic). Accidental deletion of scattered rings when crossing the bottom boundary of looping levels (by RedHotSonic). Collision width of ARZ boss' pillars (by MoDuLe). Animation of ARZ boss when players are hurt (by RedHotSonic). Fixed multiple CNZ boss bugs (by RedHotSonic). Boss Deconstruction Behavior (by Esrael and RedHotSonic). Tails' tails also flashes when Tails is hurt. Damaged Eggman would vanish after going offscreen in Final Zone. Fixed Knuckles' continuous fast climb animation when near the bottom of a ledge (including small ledges). CPU will no longer keep madly jumping again and again when the leader is standing beside something. Revision v0.06h: download it here. Changelog: Enhancements over previous revision: Super Sonic can now do a super dash similar to that of Hyper Sonic in S3&K -- but without blanking the screen or killing badniks. Added small move lock (1/6 of a second) on peelout release to prevent speed loss until player starts to hold forward. Normal shield's jump dash and homing attack display "sparks" (optional build flag causes it to display after-images of the shield instead). Removed useless code in Knuckles' check for double jump action in fall-from-glide animation; improved double-jump code for all characters. Lag reduction, particularly on MTZ2. Solid objects and platforms, if entirely offscreen, will now only clear standing and pushing flags, as needed. Improved super underwater palettes, as well as the way they are hadled/chosen. Chickens fly away in Sky Chase zone. Turtles still die. S3&K-styled act icons for title cards and score tally, by Neo. S3&K-like font for title card. Improved level select icons by Neo. Removed useless code from camera handling code. CPUs no longer lose shield/invincibility status/speed shoes when dying. CPUs are now better stewards for shields too, and won't lose them when hit. Character traits bit field to de-hard-coding character abilities and effects (currently, for super strength, super speed, power glide, protective flight, shield abilities/insta-shield, peelout). Ported S3&K-style code pointer in object SST instead of object ID, so that I can now have as many objects as I want/need. Slightly increased dynamic object limit. Removed lots of unused code/objects/data. Vastly improved address error debugger (just in case). Edited acts: some goodies were added to CPZ (some ported from S2&K), some to HTZ1, some to MCZ. Edited the start of MTZ2 to eliminate ultra-high number of platform objects, which caused severe lag. Added a red spring into *that* spike pit in MCZ2. Added path swappers to prevent being stuck on CNZ plungers. Also added/moved some path swappers on CPZ. Added ceilings to some parts of MCZ that lacked them, fixed some collision woes at the top of HTZ1. Fixed areas in WFZ where you could get traped by flying/double-jumping from below. New water ripple data for CPZ2. Bugs fixed from previous revision: Various character selection bugs for 1- and 2-players. Missing collision for MTZ boss' laser and for two MCZ objects. Fixed endings for 1- and 2-players, and most egregiously for Tails solo. AI no longer try to jump if looking up, thus unwittingly charging a spindash/peelout. Fixed priority bugs with SFX, particularly peelout/peelout release. Sign post at end of acts only loads its art when it is really needed. Music would not resume if swapping from drowning character. Drowning countdown for Knuckles was bugged. Fixed spawning bug on some MTZ moving platforms. Spindash/peelout no longer reset the animation on every button press, giving a smoother animation. Flickies are no longer color mismatched during super transformation. Mostly harmless (by luck) initialization bug of rings display in Special Stage. Fixed respawn bug with Sonic on levels with water. Fixed bug with 1-Up song loops. Bugs fixed from the original games: Moved up end-of-act signposts that were buried too far in the ground. Revision v0.06f: download it here. Changelog: Enhancements over previous revision: New Super Sonic slot icon by ICEknight. Slot machine is a lot more random now. SCD peelout release sound, and SCD-based spindash-like charging peelout sound (both courtesy of Aquaslash, the latter heavily modified by myself). Bugs fixed from previous revision: The old layering order code for Tails' tails caused too many bugs and has been reverted; a new side-effect-free version has been put in place instead. Only game leader was shown in 1-up monitors. Slot machine was treating Knuckles as jackpots and rings as bars. Also, it is possible to get bars again. Fixed game/time over text colors. Fixed glitched counter on time over. Continue icons did not appear on the foreground. ARZ boss screen would not lock if you came flying from above. Could be screen-locked on CPZ if trying to get to the boss arena by flying from on high. Delayed collision effects made Crawl much less formidable. Fixed OOZ speed-up bug if Tails carried Sonic or Knuckles into the launcher balls or block launcher. Fixed continue screen for real now, including code to wrap continues into multiple lines if needed. Fire shield was exceeding its allotted VRAM in a couple of frames of normal animation for Sonic. Sonic's CPU forcibly despawns Sonic when he is not on-screen, moving down and below the top edge of the screen. This fixes screen wrapping problems in Sky Chase zone, and possibly others. Fixed invincibility song not playing with less than 3 characters. Bugs fixed from the original games: Standing in ARZ boss' pillars while some other character kills the boss no longer makes character walk on air. Some MTZ spintubes would let you fall through the destination floor if you were on super state, had enough speed when entering the tube and kept holding forward as you reappear on the other end. Revision v0.06e: download it here. Changelog: Enhancements over previous revision: Each character now has his own independent chain bonus counter. New mappings/art for MTZ boss to make it look closer to original. Making smarter use of HUD code to reduce DMA transfers related to portraits when swapping characters to a bare minimum. Knuckles has been added to CNZ slot machine, giving 25 rings (same as Tails). Added also Super Sonic slot image by Gsuki, used when super transformation is on. Slightly modified the workings of the super cheat (code still the same). Bugs fixed from previous revision: ARZ boss did not load unless you were playing with all 3 characters. Continue screen fixed. Fixed damn Sonic respawning bug when leader is dead. Tails' tails could appear behind other characters. Tails could save Sonic or Knuckles from drowning by carrying them while drowning countdown ends. CPU respawning while leader jumped down to WFZ end-of-act cutscene prevented cutscene from working. Sonic could turn super with regular shield instead of doing homing attack. This has been changed for consistency with other shields. Shields could overwrite VRAM for super stars if you turned super after breaking a shield monitor but before the shield appeared. Fixed Oil Ocean launcher speed-up bug (by MoDule). Buggy interactions and controls with wind tunnels. Bugs fixed from the original games: Incorrect register usage during slot machine randomization. Revision v0.06d: download it here. Changelog: Enhancements over previous revision: Special Stage AIs more responsive. Added Cyletn Nite to credits. Use continue icons from S3&K for Sonic/Tails/Knuckles. Bugs fixed from previous revision: Wrong stats were used when super transformation ends. Fixed flickys on ending sequence when Tails was present and not all emeralds had been collected. Could gain lives from rings again and again after coming back from special stages. Bug queue: Continue screen Tails' tails may appear behind other characters. Revision v0.06c: download it here. Changelog: Enhancements over previous revision: Display 9:59:999 on time over. Sonic now has the peel-out. Works exactly like spindash, but holding 'up' instead of 'down'. Tails and Knuckles can charge a spindash by holding either 'up' or 'down' and pressing jump buttons. This is mostly to help the AI. Bugs fixed from previous revision: Exiting a special stage resets the minutes count on the clock to zero, but seconds remain intact. 1-Up monitor was not being correctly refreshed when swapping leaders/reverting back from super status. Having ever used a bubble shield bounce caused crashes when getting back for special stages or when switching levels. Options screen graphics were corrupted if you entered the options screen again after pressing start on the Sega screen. Super Sonic had wrong mappings for looking up frame. Revision v0.06b: download it here. Changelog: Enhancements over previous revision: Credits screen duration is adjusted for the additional screens. New Super Sonic sprite for looking up, by Gsuki. Only human-controlled characters can break monitors. New carried character art for vertical alignment. CPU players will target unadjustment position of leader when leader is on the air or standing on an object. Bugs fixed from previous revision: Incorrect score tally after special stages 2p HUD problems Characters can keep stars after invincibility is over Second or third players could not swap characters. Edit: New revision is out. Revision 0.06a: download it here. Changelog for revision 0.06: Enhancements over previous revision: New extra data/extra objects/function vtable object code for Sonic/Tails/Knuckles reduces code triplication with benefits. Fully functional multitap support; the first 3 joypads found will be used for P1, P2 and P3 in the order in which they are found. Fully functional support for 6-button controllers (although only X is used at the moment) (works on Gens, Regen and Kega Fusion). Ported S3&K object manager to reduce lag (particularly MTZ2) (thanks to MoDule for tutorial). Ported water ripple effects (thanks to MoDule for tutorial and Alriightyman for S3&K AIZ ripple data). Ported S3&K collision manager to free RAM (thanks to MoDule for tutorial; I fixed a few invalid assumptions on collision data size). Got rid of Silver Sonic's unnecessary decoding at Sega screen. Knuckles drops from a higher position when respawning, making him slightly more efficient. Sonic does not go as high up in the air when respawning. Swapped Tails and Knuckles at the ending cutscene. Tails CPU is controllable during flight/swim by a human-controlled carried character, and interprets up as being jump (similar to S3&K MG2 boss). You can now swap to/from a character in more circumstances (e.g., while either or both characters are hanging from a vine in MCZ). New Sonic 2 Heroes title screen, featuring FeliciaVal's Knuckles and Dark Sonic's logo layout idea. New Special Stage palette and graphics allowing Sonic, Tails and Knuckles to use the same palette lines. Special Stages load faster because Sonic/Tails/Knuckles art is now BINCLUDE'd uncompressed and read directly from ROM. Optimized all DPLC (and respective mappings) to minimize the amount of DMA transfers. Rings and shields are retained when returning from a Special Stage. New rounded icons for HUD, with some art tweaking by Drex. Super Sonic has his own separate portrait, green eyes and all. Super Sonic has his own unique portrait, including his green eyes, for 1-up monitors. S3&K-style horizontal springs, which catapult them if you touch their side whether or not you are on the ground. LOst's faster angle->direction calculation. Removed last traces of 2P mode and debug mode. Smarter (faster) handling of art swapping and portrait swapping for super palette swaps, as well as smarter mappings/DPLC handling for Super Sonic and (Super) Knuckles. Hack branded end of game logo. New end-sequence sprites for Super Tails. Super Tails and Super Knuckles also fly alongside Super Sonic when falling from the Death Egg, instead of falling helplessly. Flickies are back in ending sequence, and display correctly when super (done by remapping their graphics to use a different color than the light blue). Flickies always show when Tails is present; otherwise, eagles show if Sonic is present. Knuckles is saddled with chickens. CPU respawns better in Sky Chase during the Wing Fortress encounter. Complete Super Sonic sprite set, with more detail. Removed redundant/unused art from Sonic, Super Sonic, Knuckles and Tails. S3&K-style commemorations at end of non-boss acts. Sonic can do a Homing attack/jump dash when using the standard S2 shield (based on code by Selbi). Improved priority for drawing order and collision order for player characters. Tails can now carry Sonic and Knuckles at the same time. Sonic now has a higher top speed (2 pixels/frame higher) than vanilla Sonic 2's top speed. Top speed when super or with speed shoes is unchanged, as is acceleration, deceleration and jump strength. Moreover, when Sonic is in the lead, Tails and Knuckles will share Sonic's top speed, acceleration, deceleration and jump strength. This is to help the other players/AI to stay on screen. If Sonic is not in the lead, he is faster than the other characters. Knuckles jumping ability is no longer nerfed. The rationale is that the original S3&K nerf was most likely done to force the use of different paths for Knuckles in certain scenarios (while Knuckles' ability to break down some walls prevented Sonic/Tails from taking these paths). Improved sound driver. Bugs fixed from previous revision: You could break some breakable objects by standing on them while an AI was jumping. Plungers in CNZ should work correctly in all circumstances. Invincibility and super stars were not setting their parent objects. Controllers were unreliable when under control of several objects (vines, hooks, breakable platings, Tornado). The cutscene at the end of WFZ now works on all circumstances. Moreover, characters will always face right after falling (a.k.a., "the ship is over THERE"). CPUs had issues when respawning after defeating final boss. Drowning checks were accidentally removed and you couldn't drown. Grabber (spider badnik from CPZ) now works correctly. There was a VRAM conflict between HTZ boss art and the animated BG. Animation tiles are now loaded even when title card is active to prevent a few frames' worth of garbled animated graphics (most noticeable in HTZ 1 clouds and flowers). You can no longer swap to a hurt or dying character. Special Stages could not be accessed. Optimized super PLC/portrait loading by reducing DMA transfers to VDP memory in order to prevent garbled graphics in some situations. Lives counter was not working correctly. Collision data got broken in one of the previous revisions for some levels (e.g., MTZ). Crash on MCZ switch vines. Underwater palettes for Super transformation are now in. Rings were restored when you died after going through a checkpoint. Leader no longer appears in front of title card if you die after hitting a checkpoint. Knuckles has his proper lower jump when being controlled by a human player. Special Stage messages no longer broken. Removed final traces of (unused) debug mode. Super palettes now correctly forces the (re)loading of the correct sprites when needed. Fixed a few oversights in imported collision routines. Fixed transformation bug with Sonic's mappings and DPLC when standing still. Fixed all transformation bugs when players other than Sonic triggered the transformation. Eliminated redundant cleaning of pattern name table A in endgame, which caused Knuckles to disappear for a few frames. MoDule's fix for bug in ARZ Boss arrow's platform behavior. MoDule's fix for collision with water after being hurt. Fixed bugged interation of super transformation while being carried. Fixed issues with in-water/out-of-water transition when Tails was carrying someone. Fixed Sonic respawn in levels with water. When leader is dead, CPU despawns when offscreen and does not respawn afterwards (a.k.a. screenwrapping Sonic/Knuckles glitch). Invincibility stars and shields glitched with game over/time over text. Wind tunnel bugs. Fixed bug that caused HTZ rising lava to be lacking solidity. Fixed SFX for insta-shield and Knuckles' slide. Special stage results screen now work. Bugs fixed from the original games: Several gliding/climbing/flying interaction issues with objects (similar issues plague S3&K, so I am chalking this up to 'original bugs'). Knuckles' gliding/sliding code did not work correctly when landing on sprite-based floor-type objects. Fixed Special Stage animation bugs when Sonic/Tails(/Knuckles) are fully horizontal. Tails' y-position was incorrectly adjusted in pinball mode or when grabbing an air bubble. Fixed the infamous screen boundary spindash bug. Special Stage CPU control was inactive while the CPU was jumping. The arms of Special Stage Tails and Knuckles were incorrectly colored. Moved WFZ palette switcher closer to the pre-boss rivet, so it cannot be skipped. Special stage HUD no longer covers the start banner. Got rid of double decoding of Tornado and cloud art in WFZ. Jump height bug when exiting water (by MoDule). Tornado no longer continually respawns at the start of Wing Fortress zone. --------- Revision 0.05: download it here. Changelog for revision 0.05: - Now works on Regen. - Completely fixed ending, including new pictures of Amy. - Pre-title screen credits are now correct. - Endgame credits added. If anyone feels they should be included, speak up and say why. - Fixed bug where going super when not controlling Sonic messed up the art. - Fixed ARZ water surface. - Fixed HTZ end of level text getting mixed up with clouds. - Fixed cycling palettes in Emerald Hill's waterfalls. - The WFZ boss laser now hurts you when it is moving, as it should. - The laser walls in WFZ boss prevent you from going past it by pushing it offscreen. - Fixed Knuckles gliding crash. - Sonic AI now respawns from the bottom of the screen, moving up at high speed. - Fixed all remaining underwater/speed shoe/super speed issues, whether be it from CPU respawning or else. Speed shoes also work correctly in water. - Speed shoes and invincibility now always end correctly. - Fixed priority of Tails's tails. - Music should correctly speed-up with speed shoes and slow down without them. - AI gets the leader's layers when respawning. - Fixed climbing on air bug which happens with Knuckles if you grab on a wall and let an object push you down. - Fixed Sega screen. - ROM title fixed. (yeah, I know I said these last two would be the last ones... sue me) Changelog for revision 0.04: - Tails and Knuckles respawn better. - AI follows slightly greater delay. - New primary palette using Xenowhirl's method. - The current leader always stays in front of the other two characters. - All characters are playable in Sky Chase. - Tornado doesn't jerk as much around when jumping, and should be exceedingly hard to fall from as player 1. - Wing Fortress cutscene bugs fixed. - Super palette rotation is independent for the 3 characters, and identical to S3&K's. Like in S3&K, there are some side effects of Super Tails. - Fixed end of level results in Aquatic Ruin and Casino Night zones. - Fixed breakaway panels in Wing Fortress. - Knuckles climbing has been fixed when facing left. --------- Changelog for revision 0.03: The following bugs from revision 0.02 have been fixed: - Sonic's AI still does not set an animation when respawning, so he uses whatever he was using when he disappeared. - Mystic Cave vines, Wing Fortress hooks, plates and hangers don't work correctly with Tails or Knuckles (or with AIs). These were bugs for 2p Tails in the original too, but the Wing Fortress ones were harmless. - Wind tunnels did not work correctly for Tails or Knuckles. - Speed shoes speed up the music, instead of slowing it down. - [CNZ] [t]he Pinball flippers and launchers don't seem to work unless everyone is present (as well as some other bugs with the same root cause). - Layers get reset to the same layers of the character that hit the last starpole. This hopefully minimizes the layering issues. - Forgot to mention: CPU characters will now respawn underwater and in a few other conditions which were filtered out before. New feature: Tails and Knuckles are playable in Wing Fortress and Death Egg. Cutscene at the end is working well, and the improved AI does a good job of not falling to their deaths in the platformer sections. Still have to do the code for Sky Chase. Of note: the level select is enabled by default as it makes it easier for debugging. You can enable it by holding A and pressing start at the title as usual (earlier revisions also had it enabled). Edit: The values given below are inaccurate, and may lead to crashes, starting at version v0.06. Use them at your own peril. While I haven't implement the character switching option, you can fiddle with variable $FFFF72. It is a word value, and the following values have work in the game: $0001 - Sonic solo $0022 - Tails solo $0014 - Knuckles solo $001C - Blue Knuckles solo $0003 - Sonic and Tails, Sonic leads $0053 - Sonic and Tails, Tails leads $0045 - Sonic and Knuckles, Sonic leads $004D - Sonic and Blue Knuckles, Sonic leads $0015 - Sonic and Knuckles, Knuckles leads $001D - Sonic and Blue Knuckles, Blue Knuckles leads $0026 - Tails and Knuckles, Tails leads $002E - Tails and Knuckles, Knuckles leads $0066 - Tails and Blue Knuckles, Tails leads $006E - Tails and Blue Knuckles, Blue Knuckles leads $0007 - Default: Sonic, Tails and Knuckles, Sonic leads, Tails is 2P $0017 - Sonic, Tails and Knuckles, Knuckles leads, Sonic is 2P $0027 - Sonic, Tails and Knuckles, Tails leads, Sonic is 2P $0047 - Sonic, Tails and Knuckles, Sonic leads, Knuckles is 2P $0057 - Sonic, Tails and Knuckles, Tails leads, Sonic is 2P $0067 - Sonic, Tails and Knuckles, Knuckles leads, Tails is 2P $000F - Sonic, Tails and Blue Knuckles, Sonic leads, Tails is 2P $001F - Sonic, Tails and Blue Knuckles, Blue Knuckles leads, Sonic is 2P $002F - Sonic, Tails and Blue Knuckles, Tails leads, Sonic is 2P $004F - Sonic, Tails and Blue Knuckles, Sonic leads, Blue Knuckles is 2P $005F - Sonic, Tails and Blue Knuckles, Tails leads, Sonic is 2P $006F - Sonic, Tails and Blue Knuckles, Blue Knuckles leads, Tails is 2P -------------------- The rest of the original post follows: Argh. Dammit, that is the first hack I am working with and you do this! I was waiting for the hack to be closer to ready (such as character selection, Sonic's AI still does not have a proper animation for getting back on screen, special stages are probably broken), but here is what I have so far. I also have been digging through multitap code to implement 3-players, but so far you can swap the characters with 'A' (the 2nd player can also do this, but only with the AI-controlled players).