Both have their own pros and cons when you think about it: S3 RAMsplosion method works with just about any cartridge but requires at least 4MiB of ROM space (2MiB if you use S3's serial, lower if you're masochistic). KtEiS2 Sound Driver jump exploit only requires 3MiB of ROM Space (or 1MiB if you use one of S2's serials, 512KiB if you're masochistic), doesn't require extra ROM space to set up (fake header + code at the jump point), but potentially only works on cartridges without SRAM (compatability still in research) If it ends up working the same way the SRAM version does, it may produce the same result, otherwise yes, it should play fine.
Aren't plain ol ROM chip sizes powers of 2? Even if a game was 3 MiB, it'd still go on a 4 MiB ROM chip. I do know that Knuckles Chaotix is only 3 MiB, but uses 2 ROM chips to accomplish that.
Look, just let me be Thomas Edison for a moment and spread misleading facts (yeah no i didn't think too hard about it)
So which one of you is gonna go the Satan's helper route and desolder a regular game's mask chip and install a socket with a custom EPROM to use with S&K
That's the point I finally wanted to discuss here. There is about no practical purpose for exploiting this, besides the challenge and bragging rights. 99.9% of hacks players only play on emulators or on a pretty new Mega Everdrive flashcart. Emulators do not care for the exploit, and Mega Everdrive seems incompatible, or hard to become compatible at best. The easiest solution so far: MDPro flashcart and S3 RAMplosion work out of the box. But who owns an MDPro flashcart nowadays? And the means to program one? I only found and included the exploit in my hack 12 years ago because I ultimately want a shiny MDPro with a shiny "Sonic 2 Long Version" label on it that is compatible with lock-on technology, just like the original S2 game. But I'm well aware that this is all for almost nothing for the public. That's why, to reach the other 99.9% of the players, I also made sure that you can access all the features of the locked-on game from the regular game (with what I call a "software-lock-on" internally). Long story short, why make "Aladdin & Knuckles" with almost 0 public audience, when you can simply make a standard ROM hack of Aladdin including Knuckles playable for everyone?
It's less about the praticallity and more just the fact it works and is a neat hidden extra. I like small details even if they take months to develop and especially if they take years to find, plus this presents a fun challenge to reverse it. If accessibility is a problem, I can just do what I have with my other projects and hide a Lock-on tool when you unzip the ROM.
Do any of these exploits work with HackingWiz Pro? I ask this because I can't get that program to run on my PC.
I agree with what you say VAdaPEGA. It was just to tone down expectations a little, to clarify what this exploit can do and practically, what to expect from it. It is good as a little extra cherry on the top. This is not a magical tool that can transform any game in game & Knuckles in a snap. You have to do the proper ROM hack before, which cancels the point of having to lock-on.
The fun part of any homebrew on older hardware is pushing it to its limits and getting it to do things we haven't seen before. S&K lock on support for not Sonic 2/3 that isn't blue sphere certainly qualifies!
If you're going to modify a ROM anyway you may as well just modify Sonic & Knuckles and have the patches applied directly. I think it'd be fun to mess with people with this though. Imagine taking your "perfectly normal" Sonic & Knuckles cartridge to a retro convention or something and saying you've unlocked the ability to make it work with any game. Someone plugs in their copy of Bonanza Bros. and have Sonic and Knuckles replace Mobo and Robo. Or they plug in SOR2 and get this (Bare Knuckles?) Of course, every game you want to work has to have its own code written, it's not a simple case of "it just works". Maybe we could start a big "& Knuckles Project" and have people work on patches for games they want to include. (or not, this is literally "make my idea for me")
For what it's worth, Genesis Plus GX allows you to define a path for Sonic & Knuckles and the Knuckles in Sonic 2 UPMEM, and with them it can emulate the lock-on tech. The version on RetroArch allows this.
I found a massive annoyance with the RAMsplosion method if your game uses SRAM Before we're able to explode ram using the title screen, the game fully initiates some things such as the sound driver, and calls a routine called SRAM_Load, which initiates SRAM if it's detected to have incorrect data here's a cut down version of the routine, just the part loading competition modes data and the subroutines it uses there's more code then this, but it should be enough to understand Code (Text): SRAM_Load: tst.w (SK_alone_flag).w bne.w .exit ; Don't bother if we're not playing S3K lea ($200011).l,a0 lea ($2000BD).l,a1 ; seemingly a backup copy lea (Competition_saved_data).w,a2 moveq #84/2-1,d0 ; all word data, 80 byte sram data, 2 byte integrity value, 2 byte checksum move.w #"LD",d1 ; $4C44 ; integrity value in question ; check main movea.l a2,a3 ; save registers for backup check move.w d0,d2 bsr.s Read_SRAM beq.s .next ; if main fails, check backup movea.l a1,a0 ; use a1 instead of a0 movea.l a3,a2 move.w d2,d0 bsr.s Read_SRAM beq.s .next ; if neither are correctly set (incorrect checksum or lacking integrity value)... ; ...load initial competition data into sram ; regardless, do a similar, but much larger check for save select files ; subroutines Read_SRAM: move.b #1,(SRAM_access_flag).l ; Access SRAM movea.l a2,a6 ; save registers for checksum calculation move.w d0,d6 ; load data, integrity value and checksum into ram .loop movep.w (a0),d3 ; Get data from SRAM move.w d3,(a2)+ ; Copy it into RAM addq.w #4,a0 dbf d0,.loop move.b #0,(SRAM_access_flag).l ; No longer access SRAM subq.w #1,d6 ; only check data and integrity value bsr.s Create_SRAMChecksum ; Get the checksum of the given data cmp.w (a6),d7 ; Compare the checksum result bne.s .rts cmp.w -2(a6),d1 ; Compare the integrity value with the data given in d1 .rts rts ; if either are incorrect, it results in a failure Create_SRAMChecksum: moveq #0,d7 .chk_loop move.w (a6)+,d5 eor.w d5,d7 lsr.w #1,d7 bcc.s .chk_carryclear eori.w #$8810,d7 .chk_carryclear dbf d6,.chk_loop rts An easy way around it would be to avoid using sram offsets $001-$3FF, since that's all the sram S3K uses, but honestly that feels a little cheap. Another way would be using even only sram, since S3K is odd only and I don't see any accidental even writes, although I haven't seen a single game use even only, and know for a fact that it'll cause compatibility issues with certain emulators and flashcarts (mainly the dragondrive) Though this does mean the KiS2 method does have a better use case, since it doesn't initiate sram at all
This shouldn't be that big of a problem as long as the SRAM checksum and integrity bytes function the same way between S&K's code and the locked on cartridge.