Brad Corrupts, a new rom corrupting series

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
Brad Corrupts, a new rom corrupting series
by on (#65150)
Sup guys. I know I haven't posted here a lot, but I felt that I should share my youtube series with you guys. Anyway, What I'm doing here is taking NES roms and running them through a Python script that randomly changes bytes in random locations (in PRG ROM). I then take footage from the now corrupted game (10 iterations) and put them on youtube. So far, I have made three which are as follows:

1942
Abadox
Al Unser Jr.'s Turbo Racing

I plan to go through my entire collection when I was a kid. Afterwards I plan on taking various requests. Anyway, I wanted to share my series with you guys for 3 reasons:

1. We all have something in common. We're are all geeks that have a love for the NES and its hardware/software and how it al works etc. I'm certain that you guys will take interest in this. :D

2. Some games I've corrupted does some pretty weird, unexplainable shit and I'm really curious as to why some corrupted games exhibit such strange behavior (outside of the already "normal" corrupted behavior you'd expect) I figure some of you guys could enlighten me. :3

3. I'm hoping someone with hardware access can perhaps run my corruptions on real hardware and look for any discrepancies between hardware and various emulators. In other words, I'm hoping that maybe my corruptions might uncover some hidden secrets tucked deep inside the NES that'll hopefully lead to better and more accurate emulation (and yeah I know it's pretty damn close to perfect anyway, but the more we find out, the more it benefits all of us, right?)

Anyway, take a look, and let me know what you think :D

by on (#65163)
I used to do the same thing with random 6-letter Game Genie codes. I would keep track of interesting codes in a notebook and try variations when something would glitch up well.

That's how I found a level select for Journey to Silius and a super-jump & invincibility code for Shadow of the Ninja way back when (1991.)

Yep, I had too much time back in the 9th grade, obviously.

by on (#65193)
ccovell wrote:
I used to do the same thing with random 6-letter Game Genie codes. I would keep track of interesting codes in a notebook and try variations when something would glitch up well.


I have very fond memories of doing that as a kid as well. The Game Genie was my favorite NES accessory and the rom corruptions are a bit of a homage to those times.

by on (#65196)
When you change a 2 or 3-byte instruction to a 1-byte instruction, that single byte change can do a lot, since it misses the next few instructions, executing junk instead, until it can eventually get back on track. If it misses a jump, call, or return, that's an even bigger effect.

by on (#65230)
Dwedit wrote:
When you change a 2 or 3-byte instruction to a 1-byte instruction, that single byte change can do a lot, since it misses the next few instructions, executing junk instead, until it can eventually get back on track. If it misses a jump, call, or return, that's an even bigger effect.


Oh I know that (at least the basics of what happens), but there are certain things that happen often and I am trying to figure out why it always shows such similar behavior. My next vid will show a great example of this.

by on (#66357)
Alright guys, new vid is up. This one is for Bandai Golf: Challenge Pebble Beach.

Now pay attention to the first 4 or so iterations. I seem to have run into a very similar.... effect.... the flashing screen with the horizontal lines and such.... what I want to know is, what exactly is going on there, and how come I kept getting that?

Next game to get corrupted: A Boy and His Blob

by on (#66360)
These flashing horizontal lines look like palette writes. Palette writes might happen when VRAM loading code crosses over PPU $3F00-$3FFF. It looks like data lengths might have been corrupted.

by on (#66363)
tepples wrote:
These flashing horizontal lines look like palette writes. Palette writes might happen when VRAM loading code crosses over PPU $3F00-$3FFF. It looks like data lengths might have been corrupted.


Interesting. I think it may also have to do with how the game draws the course topography at the top of the screen. At least that was my guess. Would you, or anyone for that matter, want the IPS files to study the phenomena?

by on (#66366)
I wonder if Rom Corruption videos would even exist if I hadn't made my particular corruption tool...

by on (#66375)
Dwedit wrote:
I wonder if Rom Corruption videos would even exist if I hadn't made my particular corruption tool...


You mean CORRUPT? Probably not, haha, but I happen to use my own tool for corrupting my roms.

by on (#67499)
Well, I made a new video! This time, I corrupt A Boy and His Blob!

Please feel free to like, rate, comment, subscribe, annotate, and discuss in this thread.

by on (#67517)
I wonder if this is how they made Cheetahmen.

by on (#67520)
artakserkso wrote:
I wonder if this is how they made Cheetahmen.


Probably. Funny thing is though my vids are more entertaining, haha.

Actually corrupting Action 52 would probably FIX most of the games.

by on (#67522)
The sudden (and short-lived) rocket blast-off with the umbrella was pretty funny.

by on (#67587)
Memblers wrote:
The sudden (and short-lived) rocket blast-off with the umbrella was pretty funny.


I personally thought the one where he isn't wearing any pants was more amusing.

by on (#67641)
In honor of Super Mario Bros. 25th anniversary, I decided to release vol 1 of Super Mario Bros. Watch it now!

by on (#67728)
Aw come on.... no one? this was a really good one too, and I would think you guys out of everyone would appreciate these more. ;/

by on (#67730)
The nesdev.com board community is TINY. You might get more response from a busier board.

(yes, I've watched these...)

by on (#67738)
I watched them too...


Someone who might be more into the effects that the mystical corruption does might be at Nintendoage....along with about 500x more users active per day. ^_^

by on (#67739)
Reaper_Man wrote:
Aw come on.... no one? this was a really good one too, and I would think you guys out of everyone would appreciate these more. ;/

I watched this SMB one, it was actually quite enjoyable. But overall I'm not a huge fan, especially because they aren't made on the real hardware. :)

by on (#67741)
So then the real hardware version is "Three six-letter game genie codes beginning with AT"?

(AT is the RTS instruction by the way, so you'll see clear effects from your codes.)

by on (#67744)
Dwedit wrote:
So then the real hardware version is "Three six-letter game genie codes beginning with AT"?

That or corrupt the ROM, load it onto a PowerPak, and put the PowerPak in an authentic NES Control Deck.

by on (#67746)
Dwedit wrote:
The nesdev.com board community is TINY. You might get more response from a busier board.

(yes, I've watched these...)


Yeah I'll think about doing that. I've been dealing with personal issues that have caused some depression, so I've been really lazy spreading word about my vids.

65024U wrote:
I watched them too...


Someone who might be more into the effects that the mystical corruption does might be at Nintendoage....along with about 500x more users active per day. ^_^


I'll give that site a look! Thanks!

thefox wrote:
I watched this SMB one, it was actually quite enjoyable. But overall I'm not a huge fan, especially because they aren't made on the real hardware. :)


One of the reasons I posted them here is because I was hoping that doing so would want someone here with the capability to run ROMs on real hardware to ask for the patches and see if there's any discrepancy between hardware and an emulator like say Nestopia (which is what I use for the most part) so that maybe we can find more quirks about the NES hardware.

Dwedit wrote:
So then the real hardware version is "Three six-letter game genie codes beginning with AT"?

(AT is the RTS instruction by the way, so you'll see clear effects from your codes.)


That's very interesting. What's the one for JMP? ;p

tepples wrote:
That or corrupt the ROM, load it onto a PowerPak, and put the PowerPak in an authentic NES Control Deck.


Say, know anyone here who could do that? :D

by on (#67747)
I found the SMB one quite interesting, but my interest with the NES is creation, not destruction, so I don't follow this series much.

by on (#67751)
Reaper_Man wrote:
One of the reasons I posted them here is because I was hoping that doing so would want someone here with the capability to run ROMs on real hardware to ask for the patches and see if there's any discrepancy between hardware and an emulator like say Nestopia (which is what I use for the most part) so that maybe we can find more quirks about the NES hardware.

As long as the glitches caused by corruption are easy to reproduce, I might try a quick test or three.

Quote:
Dwedit wrote:
So then the real hardware version is "Three six-letter game genie codes beginning with AT"?

(AT is the RTS instruction by the way, so you'll see clear effects from your codes.)

That's very interesting. What's the one for JMP? ;p

JMP would probably need three codes: one for the opcode and one for the address.

Quote:
tepples wrote:
That or corrupt the ROM, load it onto a PowerPak, and put the PowerPak in an authentic NES Control Deck.

Say, know anyone here who could do that? :D

It's in stock right now. I'll tell you one thing: getting mine completely rejuvenated my interest in NESdev.

tokumaru wrote:
I found the SMB one quite interesting, but my interest with the NES is creation, not destruction, so I don't follow this series much.

Which explains your interest in Sonic because the Sonic games I've played don't have anything as destructible as SMB's 1-2 ;-)

by on (#67754)
tepples wrote:
the Sonic games I've played don't have anything as destructible as SMB's 1-2 ;-)

Have you played the SMS/GG games? The rings in those are defined as special blocks in the level map, so technically when you collect them you are "destroying" parts of the level map.

The SMS/GG games work like that because they use a very different level format from the MD/Genesis games: it's just a 2D array of 32x32-pixel blocks uncompressed in RAM, so it's easily modifiable. This makes the levels shorter though.

by on (#67824)
tepples wrote:
As long as the glitches caused by corruption are easy to reproduce, I might try a quick test or three.


Awesome, just tell me which ones you want and I'll send you the IPS patches for them.

Quote:
JMP would probably need three codes: one for the opcode and one for the address.


Not exactly. You could just have it jump to whatever value is already there. ;p

Quote:
It's in stock right now. I'll tell you one thing: getting mine completely rejuvenated my interest in NESdev.


I'm broke, and thus unable to do it on my own. Otherwise, I would.

by on (#67826)
Reaper_Man wrote:
Quote:
JMP would probably need three codes: one for the opcode and one for the address.


Not exactly. You could just have it jump to whatever value is already there. ;p

I think that would make the program more likely to crash though... With RTS you have a good enough chance that there's a valid address at the top of the stack, but JMP would take you to more random places.

by on (#67999)
Oh hey guys, I forgot to mention that I have made volume 2 already, which you can see here: http://www.youtube.com/watch?v=FAYsQJaXNdI

by on (#68394)
Volume 3 of me corrupting Super Mario Bros. is here! Watch!

Hopefully I'll get more replies than my previous vid on here, haha.

Also, I've started using a much higher quality encode, so this should be the best looking video yet, quality wise. Doesn't get much better than uploading lossless! Hah!

Also, I'm going back to my regular game list after this. Next game to get corrupted will be Burai Fighter.

by on (#68979)
Alright, so this time we have a relatively difficult space shoot em up on our hands called Burai Fighter. I get the feeling that this too is yet another obscure game in my list, but don't worry! the next few games will be more well known, promise!
Anyway, you can watch it here. Please be sure to watch it all the way! The last one is a doozy!

Next game to get corrupted, Chip and Dale, Rescue Rangers.

by on (#69879)
New vid!

This time I corrupt Chip and Dale: Rescue Rangers!

Hopefully I'll get responses this time around....

by on (#69880)
Haha, that's some pretty crazy stuff! Glitches are fun.

I think perhaps why you don't get a lot of response around these parts is that most of this community knows the inner workings of the NES, therefore ROM corruption is less mystical.

Actually I'm kind of sad about that. It used to be that NES glitches seemed so unexplainable, like a ghost in the machine. Now that I am learning how the NES works I can see why those glitches are happening, whereas before I had no clue. Blowing on the cartridge and praying to the Nintendo gods seems a little silly now (and corrosive I might add). I've stepped to the other side.

by on (#69981)
cartlemmy wrote:
I think perhaps why you don't get a lot of response around these parts is that most of this community knows the inner workings of the NES, therefore ROM corruption is less mystical.

I think that's exactly right. I'm an emulator author myself and, yes, some of the corruptions I can see what is happening and probably why so it does take a little bit of the fun out of it - but on that same token, those SMB1 corruptions were still REALLY cool! Haha. Can't wait to see what SMB3 does! :)

by on (#70102)
For those that don't know, jwdonal was my 50th subscriber, and in honor of getting 50 subs, I let him choose a game for me. He chose Mega Man, so that's what I did.

Hope you enjoy. This one is a bit longer than my others, due to the nature of Mega Man and starting on any level you wish.

by on (#70105)
That Megaman one was so weird. :P I've been watching these some and they're getting cooler and pretty good. I like them more then I though, Kepp 'em coming! :D

by on (#70108)
I liked when Mega Man turned into his grayscale self from the Gameboy and when his shots would wrap around and never disappear. =)

by on (#70117)
heheheh, I'm glad you liked it.

by on (#70303)
Okay, new video up. Yeah it's released within a week of the last one for once, haha! This tome I corrupt Donkey Kong, which can be seen here.

by on (#70762)
And now for the sequel, whch can be seen here.

by on (#70767)
You should also do the NEW donkey kong with the pie level. :D I put it on a cart and it's very cool. :)

by on (#70769)
3gengames wrote:
You should also do the NEW donkey kong with the pie level. :D I put it on a cart and it's very cool. :)


Enh, I'll think about it... probably not though. (most iterations wouldn't get to the pie level anyway)

by on (#71294)
Alright, so when YouTube user KirbytPink became my 100th Subscriber (thanks to my exposure over at GoNintendo), I asked him what my next rom corruption video should be. He chose Kirby's Adventure, even though I told him that I was planning on doing that game soon and that he could chose something else. He insisted that I do it next, so that's what I did.

Kirby's adventure more than likely needs no introduction. Released near the end of the NES's lifecycle, it is considered by many to be one of the best NES games ever released. You control Kirby, a cute little round guy (thing?) that can copy enemy's powers by eating them. Your task is to retrieve the 7 star rod pieces from the various bosses in the game. My task is to corrupt the game beyond repair.

When I did it though I had plans to do my corruptions a bit differently from now on:

1. I no longer use my computer's random number generator anymore to corrupt the games. I now use the true random number generator from random.org using an awesome python library I found, so yes, my corruptions are going to be truly random going forward (with the exception of Dr. Mario, Duck Hunt, Duck Tales, and Excitebike as those corruptions have already been made).
2. I hated how premiere scaled video, so I'm doing all the scaling in virtualdub (I also found out that cropping applies a needless filter unless you selected nearest neighbor, so that was fixed as well)

Anyway, I recode my script and start to corrupting, when I find that I'm getting horrible results. Turns out that Kirby is a VERY large game, and I was corrupting around 256 bytes! I wasn't able to even get to the first level without crashing! Eventually I had to realize that I needed to cut my bytes in half in order to get anything good, which I didn't want to do. I did anyway, and the 128 byte corruptions worked a lot better.

Anyway, once that was completed I started to record and lo and behold, Nestopia decided to shit itself when recorded, like it has for 2 of my previous videos, due to a nasty movie recording bug. So once again, I had to rely on FCEUX (which I loathe) for recording. Of course, certain iterations worked differently, which was upsetting, but I pressed on, recording away. It isn't as entertaining as when they were running on Nestopia, but it was good enough I guess.

Then came the planned resizing in virtualdub. That's when I noticed the video had a weird filter on it already. I don't know if it was the fault of FCEUX, or ffdshow or what, but it was disturbing to see that on what was supposed to be lossless. I already had everything recorded, so I decided to just go with it. Then I noticed that the video was 60.1FPS instead of 60. The developers told me that the NES outputted at that rate, but I somewhat had my doubts about it, and I'd much rather have it recorded at 60, but whatever, I continued anyway.

Then came putting it all together in premiere. Everything was going relatively smoothly until it came time to export. Since I wsa working with bigger videos due to the resizing, it decided that it needed 7 BLOODY HOURS to encode. Needless to say I have had enough of premiere, and will probably be moving on to something that isn't as retardedly slow. I'll keep you guys posted on that.

After re-encoding back to H.264 lossless I am left with a VERY slow upload ever since my friend/neighbor has gimped his cable connection to shit speeds, so it's another 7 hours to upload the damn thing. Needless to say, this video has left me mentally drained and frustrated. Sorry about the really long rant, I just needed to vent. I'll probably take a quick week off to start learning another video editor, etc and to run some video tests.

Until then, I'd like to announce that I'll be picking a random subscriber out of every 100 subscribers for requests. The next "request" subscriber is going to be really soon, so please be sure to subscribe for a chance to pick my next game!

*cough* anyway, you can view the video here.

by on (#71298)
pedantic nerd:

The NES does indeed spit out video at a little over 60Hz. Frames are 341*262 PPU cycles, give or take one cycle every other frame. That's 89342 cycles/frame. The PPU runs at 21MHz/4, or 5.369MHz, so frames take 16.639ms a piece, or 60.098 fps.

/nerd

by on (#71416)
The Kirby one looks like it was worth it though.

It was funny seeing you fight the doorways on the stage select area.

It was a little disappointing (but still funny) when kirby was stuck jumping, and you ended up having to slide just right, only to just have the game immediately freeze after entering the doorway.

by on (#71851)
mmokay, so my new video has been up for a while, but here it is. I corrupted Batman, which was another request I decided to do.

Brad Corrupts: Batman

Sorry for not posting sooner. I've been busy with the holidays not to mention fighting off a cold.

by on (#72105)
Alrighty, so I have Dr. Mario up now, so go ahead and check it out! :D

I'll be doing Duck Hunt next, should be fun.

by on (#72338)
Alright, I have Duck Hunt up now. you can watch it here.

Next up will be Duck Tales.

by on (#72914)
I was a bit lazy last week in regards to posting, so I have two videos to show you, DuckTales and Excitebike, so enjoy. Next up will be Final Fantasy.

DuckTales: http://www.youtube.com/watch?v=RQptMfT7KgU
Excitebike: http://www.youtube.com/watch?v=57XXYBz1M-M

(apparently the URL bbcode is broken.... odd)

by on (#73545)
Alright, going to post my latest two videos, so here:

Brad Corrupts: Final Fantasy

Brad Corrupts: Ghosts 'N Goblins

Anyway, I decided to stop updating this thread. If you enjoy my vids and want to be kept up on updates, please subscribe. If you do subscribe and would like to update this thread for me, then by all means, do it. I've just gotten tired of doing it myself.

One last thing, please be sure to share my videos with other communities. I'd really like to have my videos seen by a wider audience, so if there are any forums/blog and such where people would be interested in my videos, please feel free to share them (and let me know where you posted it!) Thanks.

(also, I may make a thread soon about testing my corruptions on real hardware for anyone interested with that)