The Vinesauce ROM Corruptor

Please login or register.

Login with username, password and session length
Advanced search  

News:

SMF - Just Installed!

Pages: [1] 2 3 ... 13

Author Topic: The Vinesauce ROM Corruptor  (Read 134544 times)

Rikerz

  • Meister
  • ***
  • Posts: 33
    • View Profile
The Vinesauce ROM Corruptor
« on: August 01, 2012, 06:04:23 pm »

Hello everyone,

I have put the Vinesauce ROM Corruptor on Github in order to better collaborate with others who want to improve it.
The Github project can be found here.
The newest version of the program can be downloaded here.
If you have any issues with this version, all versions can be found here.
The source code can be downloaded here.

Please note that in order to utilize the new hash-based saving feature, corruption settings saved using the previous version will need to be loaded and re-saved using the new version.

A screenshot of the GUI is below.


The "?" buttons should give enough help for anyone to use it. However, if you are having trouble, I will reply to issues in this thread.

I have prepared several sample corruptions using the color replacement in particular.
I have included a link to each saved corruption settings file that can be loaded into the program through the "Load" button.
I have also put the text of each file on Pastebin.

I hope you guys enjoy it. I certainly enjoyed making it.
Happy corrupting!

Sincerely,
Rikerz

Super Mario Bros.: Dose Mario
File Pastebin


Super Mario Bros. 2: Dose Mario
File Pastebin


Super Mario Bros. 3: Dose Mario
File Pastebin


The Legend of Zelda: Dose Link
File Pastebin


TinyURL samples:
http://tinyurl.com/9awrh9h (BRBRBRBR)
http://tinyurl.com/8jkt8u7 (Le Mario Face)
http://tinyurl.com/9ph5oer (The Dark Side)
http://tinyurl.com/8nk2ufn (Wrong NPCs)
« Last Edit: May 07, 2014, 08:51:56 pm by KY »
Logged

Shikaku

  • Plumber
  • *
  • Posts: 702
  • :3c
    • View Profile
Re: The Vinesauce ROM Corruptor
« Reply #1 on: August 01, 2012, 06:20:24 pm »

Looks really great!  If I may add a few suggestions:

1. Open source it please, just use GPLv2 or BSD if you want.
2. To make it feature complete with the old corrupter, we need a shift right function (if you need to know how it works, it replaces the value of the byte X to the right (or left if negative) with the one matched (i.e shift right 1 every 5, abcdefabcdef becomes abcdeeabcdee, shift right -1 every 5, abcdefabcdef becomes abceefabceef)
3. Replace bytes feature: if a value is matched at the location of every X, replace with this byte

Rikerz

  • Meister
  • ***
  • Posts: 33
    • View Profile
Re: The Vinesauce ROM Corruptor
« Reply #2 on: August 01, 2012, 06:44:23 pm »

Added a link to download the source code in the main post.

I'll add the requested byte corruption actions at some point.
My major concern is that the GUI is already really big.
I suppose I could re-arrange things and put the "Byte Corruption" group box where the mushroom is filling unused space.
Yeah, that should work.
Logged

Rikerz

  • Meister
  • ***
  • Posts: 33
    • View Profile
Re: The Vinesauce ROM Corruptor
« Reply #3 on: August 01, 2012, 09:57:30 pm »

Added the byte corruption actions and rearranged the GUI.
Logged

Rikerz

  • Meister
  • ***
  • Posts: 33
    • View Profile
Re: The Vinesauce ROM Corruptor
« Reply #4 on: August 01, 2012, 10:41:46 pm »

Fixed a few small bugs with input sanity checking.
Logged

Freddy

  • Darkholme
  • **
  • Posts: 93
  • I'm burnin' through the sky
    • View Profile
Re: The Vinesauce ROM Corruptor
« Reply #5 on: August 02, 2012, 08:42:30 pm »

Have you considered adding presets for ROMs? You could also move some of the stuff to different tabs in order to free up space.
« Last Edit: August 02, 2012, 08:45:01 pm by Freddy »
Logged

Rikerz

  • Meister
  • ***
  • Posts: 33
    • View Profile
Re: The Vinesauce ROM Corruptor
« Reply #6 on: August 03, 2012, 05:00:52 pm »

I could tab it out, but I don't think I am going to add any more features for now. If I do end up adding another feature requiring another set of controls, I will probably tab it out.

I am not sure what you mean by presets. My gut feeling is that you mean something like a "library" of known colors or text translations for certain ROMs. It is possible, but determining which ROM is selected is tricky as they may have different names. I suppose you could check the first X bytes of the ROM to determine which it is, but then the program would need to store quite a bit of information: the first X bytes of every ROM it knows about.

I am planning to flesh out the palette replacement a bit to make it easier to work with. I have found a lot of times that I can get one color to replace properly, but the second causes the ROM to CPU jam. This results in me having to use the byte corruption range to narrow down the scope to prevent CPU jams. What often happens is that I miss some palettes, resulting in the colors I want in certain areas of the game, but not in others.

I will leave the existing functionality intact, but add additional functionality to replace entire palettes and use matching groups like regular expressions. These matching groups will be defined by WW,XX,YY,ZZ. The colors within a palette will be separated by colons (:), while palettes will be separated by pipes (|).

For example:
WW:XX:YY:ZZ replaced by WW:XX:YY:ZZ would do nothing.
WW:XX:YY:ZZ replaced by ZZ:YY:XX:WW would scramble every palette in the ROM, and probably cause some collateral corruption as well.
00:01:WW:XX replaced by 02:03:WW:XX would change 00 to 02 and 01 to 03 in any palette than contains both and the remaining two colors would be left unchanged.
00:01:WW:XX replaced by 02:03:XX:WW would change 00 to 02 and 01 to 03 in any palette than contains both and the remaining two colors would be swapped.

Hopefully this added functionality would make changing or corrupting palettes a bit easier.
Logged

Freddy

  • Darkholme
  • **
  • Posts: 93
  • I'm burnin' through the sky
    • View Profile
Re: The Vinesauce ROM Corruptor
« Reply #7 on: August 04, 2012, 04:25:11 pm »

By adding the ability to load presets, I meant like adding the ability to save/load the corruptor settings to a text file, so that instead of posting screenshots of their settings, people could just post the text files.
Logged

Holyhunter94

  • Vinesausage Supreme
  • *
  • Posts: 2181
  • HORSIE RIDE ONII-CHAN
    • View Profile
Re: The Vinesauce ROM Corruptor
« Reply #8 on: August 04, 2012, 04:45:41 pm »

By adding the ability to load presets, I meant like adding the ability to save/load the corruptor settings to a text file, so that instead of posting screenshots of their settings, people could just post the text files.
a screenshot is a lot easier to load and see than a text file
Logged

Rikerz

  • Meister
  • ***
  • Posts: 33
    • View Profile
Re: The Vinesauce ROM Corruptor
« Reply #9 on: August 14, 2012, 03:50:25 am »

By adding the ability to load presets, I meant like adding the ability to save/load the corruptor settings to a text file, so that instead of posting screenshots of their settings, people could just post the text files.

This functionality is in the program.

Enjoy.
Logged

YotaXP

  • Vinebro
  • **
  • Posts: 27
  • Snake of All Trades, Master of None
    • View Profile
    • The Omnistream
Re: The Vinesauce ROM Corruptor
« Reply #10 on: September 05, 2012, 04:02:30 pm »

I have two suggestions for this.

First... 0xDB is the op code to stop the SNES processor.  I think it stands to reason that replacing these bytes with 0xEA (No Op) after all other corruption could improve stability of the resulting code.  I'm not sure how well this will work, but it's worth a shot.

Second, how about an option to make a little registry change, adding a protocol to allow URLs from a browser to open the program with specific corruption settings. (Example: vscorrupt://blahblahblah)  This would make it FAR easier to share corruptions over Chatango.

Of course, Chatango only makes 'http:' links clickable, however using a URL shortener remedies this.  For instance, this will open the list of people you've recently played with on Steam: http://tinyurl.com/92hqws7  The program itself could get shortened URL opon request.  Sn.im has an API: http://support.snipurl.com/faq/is-there-a-sniprsnipurl-api
Logged

Rikerz

  • Meister
  • ***
  • Posts: 33
    • View Profile
Re: The Vinesauce ROM Corruptor
« Reply #11 on: September 06, 2012, 04:20:10 pm »

I have two suggestions for this.

First... 0xDB is the op code to stop the SNES processor.  I think it stands to reason that replacing these bytes with 0xEA (No Op) after all other corruption could improve stability of the resulting code.  I'm not sure how well this will work, but it's worth a shot.

Yeah I was thinking of adding a toggle setting that would protect certain OP codes from being changed, like branches and jumps to subroutines. When this setting is on, I could avoid changing any bytes to 0xDB. I would just check what the value of each byte will become before committing it, and if it is 0xDB, leave the original byte value.

Second, how about an option to make a little registry change, adding a protocol to allow URLs from a browser to open the program with specific corruption settings. (Example: vscorrupt://blahblahblah)  This would make it FAR easier to share corruptions over Chatango.

Of course, Chatango only makes 'http:' links clickable, however using a URL shortener remedies this.  For instance, this will open the list of people you've recently played with on Steam: http://tinyurl.com/92hqws7  The program itself could get shortened URL opon request.  Sn.im has an API: http://support.snipurl.com/faq/is-there-a-sniprsnipurl-api

This is an interesting idea. I don't really want to start messing with the registry, but I could make it understand URLs. So you could have Save to URL and Load from URL buttons. The Save to URL button would create a long URL with all of the settings in it, shorten it, and return a shortened URL, and the Load from URL button would take a shortened URL, get the original long URL with the settings in it, and load them into the program.
Logged

YotaXP

  • Vinebro
  • **
  • Posts: 27
  • Snake of All Trades, Master of None
    • View Profile
    • The Omnistream
Re: The Vinesauce ROM Corruptor
« Reply #12 on: September 12, 2012, 12:19:30 am »

This is an interesting idea. I don't really want to start messing with the registry, but I could make it understand URLs. So you could have Save to URL and Load from URL buttons. The Save to URL button would create a long URL with all of the settings in it, shorten it, and return a shortened URL, and the Load from URL button would take a shortened URL, get the original long URL with the settings in it, and load them into the program.
If you change your mind, there isn't a lot that needs to be changed in the registry.  It's all in one place even.  Just a few values on a few keys. (http://msdn.microsoft.com/en-us/library/aa767914%28v=vs.85%29.aspx)

Something derped in my copy of Dustforce, and it neglected to register its 'dustforce:' protocol. (Used to play custom levels from the browser.)  This is all I had to add to my registry to get it going: http://pastebin.com/pHGJiadm

The hardest part would probably be getting the url shortener API to work.
Logged

Rikerz

  • Meister
  • ***
  • Posts: 33
    • View Profile
Re: The Vinesauce ROM Corruptor
« Reply #13 on: September 13, 2012, 06:56:52 pm »

I have updated the links in the main post to the new version.

This version has support for saving to and loading from TinyURLs to make sharing corruptions easier. To use TinyURL for saving and loading, simply check the "Use TinyURL" check box. Please note that the TinyURLs produced by the program won't actually be useful in a web browser. The TinyURLs simply store the corruption settings within them. When loading a corruption from TinyURL, it is recommended to use "Copy Link Location", and paste that into the program.

Here are a few samples I made:
http://tinyurl.com/9awrh9h (BRBRBRBR)
http://tinyurl.com/8jkt8u7 (Le Mario Face)
http://tinyurl.com/9ph5oer (The Dark Side)
http://tinyurl.com/8nk2ufn (Wrong NPCs)

Also, this version has a new option which will attempt to reduce the number of NES CPU jams that occur. It is enabled by checking the "Enable NES CPU Jam Protection" check box. It works by protecting important operations in the NES assembly language, as well as avoiding changing byte values to values that are known to cause NES CPU jams. In general, it should yield more stable results, at the expense of some corruption.
« Last Edit: September 13, 2012, 06:59:04 pm by Rikerz »
Logged

Darkarthan

  • Butt
  • *
  • Posts: 4
    • View Profile
Re: The Vinesauce ROM Corruptor
« Reply #14 on: September 14, 2012, 09:08:36 pm »

im sorry but i am extremely new to this. when i try to corrupt a snes rom with the corruptor i just get to the menu http://puu.sh/15Bwv . i don't really understand why this happens, can anyone tell help?
edit: just got it to work, now how do i fix this spc 700 stall detected ?
« Last Edit: September 16, 2012, 04:05:11 am by Darkarthan »
Logged
Pages: [1] 2 3 ... 13