Mind Control Trilogy (Preview) (NES Demo)

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
Mind Control Trilogy (Preview) (NES Demo)
by on (#82637)
This isn't mine, but probably still interesting for the one or other :)

Mind Control Trilogy (Preview) by Bilotrip is a Nintendo Entertainment System / Famicom demo released at Assembly 2011 and ranked 4th in the oldskool demo competition.

Image

Youtube Video: http://www.youtube.com/watch?v=4TROWubW83s
Download: http://www.pouet.net/prod.php?which=57497[/img]

by on (#82638)
Why is there all the junk on the screen? And I don't really get it myself.... still....uhhh..interesting? Hmmm...

by on (#82644)
Wow, this is absolute crap. It can't maintain a stable picture on any emulator.
Music isn't very good either. I've heard much better songs posted on the Famitracker message boards.
It's possible to refresh an entire NES screen in 4 frames with no flickering and no jumping by using a decent unrolled PPU copy loop, but this demo is just made of fail.
Too bad the author intentionally made it this way, he can do much better than this.

If you're looking for a good demo, try the Bad Apple demo.

by on (#82645)
The youtube video has the same problem, so maybe it's supposed to be like that? And yeah, bad apple is awesome. I watched it 3 days ago, actually. Blows my mind. :P


And wait....this finished 4th? Man, I don't have a game done but I think I could make a demo that's good for 3rd place in a few days...or hours. :roll:


Maybe the guys that made it don't know about outside vblank writes to $2007. :P

by on (#82646)
I was just wondering if all the glitches are intentional... I mean, they have to be.

by on (#82648)
Reminds about the genre when a demo is intentionally made to look like a result of a bug.

by on (#82649)
I guess this is only the intro scene to the game, but then there's no game either and the readme.txt file isn't really explaining a lot. If it's intended as the intro to a horror type game, then it makes sense but otherwise...

by on (#82651)
I think it is pretty clear that it is a demo on its own, not related to a game or anything.

by on (#82653)
Ah, I've never heard about such a thing before.

by on (#82655)
The glitching is most likely by design.

by on (#82656)
Anders_A wrote:
The glitching is most likely by design.

That's what I thought at first, but after seeing how the program behaves differently across emulators and an actual console, I'm pretty sure this was just badly coded.

I mean, even if you want a program to LOOK glitchy, you should simulate all the effects intentionally rather than actually run garbage code, because you never know what kind of unpleasant and inconsistent side effects glitchy code can produce.

by on (#82657)
tokumaru wrote:
Anders_A wrote:
The glitching is most likely by design.

That's what I thought at first, but after seeing how the program behaves differently across emulators and an actual console, I'm pretty sure this was just badly coded.

I mean, even if you want a program to LOOK glitchy, you should simulate all the effects intentionally rather than actually run garbage code, because you never know what kind of unpleasant and inconsistent side effects glitchy code can produce.


I don't agree. Write code for the real machine, not emulators. As long as you're using predictable behavior of the real hardware you're in the right.

by on (#82658)
Anders_A wrote:
tokumaru wrote:
Anders_A wrote:
The glitching is most likely by design.

That's what I thought at first, but after seeing how the program behaves differently across emulators and an actual console, I'm pretty sure this was just badly coded.

I mean, even if you want a program to LOOK glitchy, you should simulate all the effects intentionally rather than actually run garbage code, because you never know what kind of unpleasant and inconsistent side effects glitchy code can produce.


I don't agree. Write code for the real machine, not emulators. As long as you're using predictable behavior of the real hardware you're in the right.


I think it may be because of 2007 writes and the console is probably being forgiving, just look at it in PAL and then to NTSC mode, it has to be using too much VBlank for stuff as it is just wonky in both, but less in PAL.

64KB...lol. No compression maybe? :P

by on (#82659)
Anders_A wrote:
Write code for the real machine, not emulators.

And I really don't agree with that. Although I don't think we should accommodate known emulator inaccuracies, we should code "safely". Unless it's doing something really "edgy" (which this program in particular doesn't appear to be), I see no reason for a program not to work the same across different emulators and consoles. The fact that it doesn't work well on emulators should serve as a warning.

As long as you respect the basic timing, set the scroll correctly, initialize all variables and registers, the program should work everywhere. If a program works on hardware but not on emulators and is not doing anything "edgy" (forced blanking, mid-screen PPU changes, etc), I'd say there's something wrong with it. You might have made a mistake somewhere but the program runs on hardware by pure luck, something you shouldn't rely on.

Coding safely is pretty much the same as driving safely to me. If you drive safely you'll probably be OK on most roads. If you are reckless you might even get away with it if you are lucky, but it's very likely you'll eventually cause an accident.

However, if the program is using "unconventional" tricks, then the hardware obviously has the final word.

by on (#82660)
I just made a disassembly with 6502D and from what I ca tell the beginning of the ROM is pretty much at the beginning of the disassembly. It's about 4KB big program wise from what I can tell. And this was the first thing I saw:

Code:
00000010:   78   SEI
00000011:   D8   CLD
00000012:   A200   LDX #$00
00000014:   8E0020   STX $2000
00000017:   8E0120   STX $2001
0000001A:   8668   STX $68
0000001C:   8669   STX $69
0000001E:   866A   STX $6A
00000020:   866B   STX $6B
00000022:   CA   DEX
00000023:   9A   TXS
00000024:   2C0220   BIT $2002
00000027:   2C0220   BIT $2002
0000002A:   10FB   BPL $FB
0000002C:   2C0220   BIT $2002
0000002F:   10FB   BPL $FB
00000031:   A980   LDA #$80
00000033:   8D1740   STA $4017
00000036:   AD1540   LDA $4015
00000039:   A200   LDX #$00
0000003B:   A9FF   LDA #$FF
0000003D:   9D0002   STA $0200,X


Two bit's and the LDA $4015 LDA #$FF 2 lines later is just....I dunno.

And if you watch the nametable viewer in FCEUX, it seems to me like it just write the whole screen to it at once, which cause the junk at the top, and then just gets more corrupted. And it's scrolling jumps everywhere, too. And it puts blocks on the other nametables too. Why would it do that if they're never seen. It's 100% bad programming...that's about it.

by on (#82661)
tokumaru wrote:
I see no reason for a program not to work the same across different emulators and consoles

The reason to not fix problems that only occurs in certain emulators is to force these emulators to improve. If none of existing programs show a problem in an emulator, it is not going to be fixed.

by on (#82662)
Quote:
Two bit's and the LDA $4015 LDA #$FF 2 lines later is just....I dunno.

I guess the lda $4015 is to acknownledge APU IRQs.

by on (#82666)
3gengames wrote:
00000024: 2C0220 BIT $2002
00000027: 2C0220 BIT $2002
0000002A: 10FB BPL $FB
0000002C: 2C0220 BIT $2002
0000002F: 10FB BPL $FB

This code is exactly the "best practice" code in PPU power up state on the wiki. The PPU isn't fully warmed up until one full frame has happened (picture, post-render, vblank, pre-render). Power-cycling at just the right time might cause the vblank flag to be true even during picture. From the article:
Quote:
If the NES is powered on after having been off for less than 20 seconds, register writes are ignored as if it were a reset, and register starting values differ: $2002 = $80 (VBL flag set)

So the first BIT is to turn off the vblank flag. Then the next loop is to wait for the first frame's vblank, and the next loop is to wait for the second frame's vblank, at which point the PPU is actually stable.

Shiru wrote:
If none of existing programs show a problem in an emulator, it is not going to be fixed.

And with Nestopia on what appears to be an extended hiatus, even newly developed test programs might not lead to emulator fixes.

by on (#82667)
Well still, that's some strange code to me for startup, but the program still shoves data to the PPU constantly from looking at FCEUX. That's not good practice. :roll:

by on (#82668)
Shiru wrote:
The reason to not fix problems that only occurs in certain emulators is to force these emulators to improve. If none of existing programs show a problem in an emulator, it is not going to be fixed.

I agree, but unless your program ABSOLUTELY NEEDS to exploit hardware quirks, it's better to play safe and obey the basic rules than risk making it unstable even on hardware just for the heck of it.

by on (#82669)
Gotta have it work on clones too! :roll: :wink: :twisted:

by on (#82670)
3gengames wrote:
Well still, that's some strange code to me for startup, but the program still shoves data to the PPU constantly from looking at FCEUX. That's not good practice. :roll:

I wouldn't be surprised if it was just dumping the whole name table at once without caring about the end of the vertical blank, because that's exactly what appears to be happening.

by on (#82671)
Quote:
I wouldn't be surprised if it was just dumping the whole name table at once without caring about the end of the vertical blank, because that's exactly what appears to be happening.

and they call it "intentional glitching". Let me laugh :
MWAHAHAHAHAHA

by on (#82672)
Bregalad wrote:
Quote:
I wouldn't be surprised if it was just dumping the whole name table at once without caring about the end of the vertical blank, because that's exactly what appears to be happening.

and they call it "intentional glitching". Let me laugh :
MWAHAHAHAHAHA


This....don't wanna be mean, but there's a point where I just can't help but say you're Doing It Very Wrong. :x

Lol :P

by on (#82673)
Dwedit wrote:
Wow, this is absolute crap. It can't maintain a stable picture on any emulator.
Music isn't very good either. I've heard much better songs posted on the Famitracker message boards.
It's possible to refresh an entire NES screen in 4 frames with no flickering and no jumping by using a decent unrolled PPU copy loop, but this demo is just made of fail.
Too bad the author intentionally made it this way, he can do much better than this.

If you're looking for a good demo, try the Bad Apple demo.


Wow I just absolutely love that Bad Apple...fantastic! It tells a story, is entertaining, is crisp, and very well done. None of that can be said for the other demo. However, I couldn't produce either, so I can't really complain.

by on (#82675)
Bad Apple is just a conversion of a famous Touhou-related video. So story, entertaining, etc is not merit of the demo, it is just a image sequence player. So the demo we discussing here is actually better as a demo than the Bad Apple demo.

by on (#82677)
Just to shed some light on this:

ASM2011 was brought to my attention by a Swedish friend of mine, who told me "Hey! Check out this live feed, they're playing NES demos". When I got around to checking, they were playing the demo mentioned here.

I was absolutely appalled. *That* was what someone came up with? Hol-y-shit. The instability of the graphics, and just the whole nature of absolute gobbledegook all over the screen... I said "Are they doing this on an emu which isn't playing it right? Is it NTSC and they're playing it on PAL, since this is in Finland? WTF!". Said Swedish friend wasn't sure, but he too agreed it looked like shit.

Fast forward a few days. He gets back to me: apparently the demo is *supposed* to look that way, citing "artistic representation". (EDIT: Literal quote: "it's an art statement").

For what it's worth, the 3-4 demos after that all had the same general style (there was a 386/DOS + VGA one which was a complete joke. I hoped it was a 64KByte compo or something, but it wasn't).

Here's my take on it: drugs. I'm not bullshitting either. Drugs are the only explanation. I cannot tell you how many times I've run into either stoned or people tripping on {insert psychadelic of your choice here} trying to tell me how cool something looks (or sounds) when in fact it's complete shit. I pretty much throw this demo into that category. Drugs are the only explanation. And this statement comes from a guy who's done LSD twice and tried marijuana a couple times (bad drug for me to take; makes me the most paranoid bastard on the planet, it mixes *very* badly with my social and generalised anxiety).

I'll go as far as to probably piss off one of the coolest guys on the nesdev forum here -- Memblers. I remember many years ago (10+) and Memblers was doing some occasional NES music "stuff", combined with some occasional code/demo-esque stuff. It was all crap (sorry pal, it was). None of it had any rhythm or organisation; it was like you were on serious hard-core drugs when you were creating all of this and thought it was interesting/awesome. It wasn't. Fast forward to today, and all I see are super cool works and songs which have good rhythm and organisation to them. Plus (I think) you cut your hair. So I'm left thinking "maybe he stopped doing as many drugs"... ;-)

But then again, I love Pink Floyd but think most of Dark Side of the Moon sucks. *shrug*

by on (#82678)
You know koitsu, you don't need to use drugs to do shitty stuff.

However to think this demo is cool, effectively you'd have to be somehow stoned.

Quote:
This....don't wanna be mean, but there's a point where I just can't help but say you're Doing It Very Wrong.

My comment was much less harsh than Koitsu's towards the demo.

by on (#82679)
Yeah. Hell, you can be paid and do shitty stuff, Action 52 anyone? :P

And heh, it was. :3 And were there any good demos from that thing?

by on (#82680)
Like I said, there is a genre of demo that this demo is seems belong to. Demos in this genre looks like they are result of a computer glitch, some noise or garbage that sometimes makes certain shapes. There is a kind of such music too. So no drugs or shitty coding necesarrily involved, it easily could be intentional.

For example, a demogroup skrju made many demos in this genre for ZX Spectrum. Check some of them out to see similarity (youtube): why, idiot, fuckyouscene. This genre is highly controversial, with two general opinions: complete crap or complete genious.

by on (#82681)
Shiru wrote:
Demos in this genre looks like they are result of a computer glitch

The problem with this particular demo is that it doesn't only LOOK like a computer glitch, it IS a computer glitch. No matter how cool some people might think it looks, it is an unstable program.

by on (#82683)
koitsu wrote:
Just to shed some light on this:


Drugs? WTF are you on about? Is everything seriously that black and white to you? I take it abstract art gives you a hard time as well ;) (hehehe)

I can't believe most of you guys don't know about these kind of glitch/abstract style demos. Some look cool, some (most, IMO) look like shit. Middle ground is pretty rare. Either way, I thought people on these forums would be familiar with these kinds of demo 'art'. Lol @ the people that thought the glitches were unintentional.

About the demo... meh. Didn't care for it.

Quote:
The problem with this particular demo is that it doesn't only LOOK like a computer glitch, it IS a computer glitch. No matter how cool some people might think it looks, it is an unstable program.


Many things in art can be created in randomness. It's up to the artist to choose it, use it, massage it, tweak it, etc. I guess it's viewed a little differently since the code has to reproduce the 'effect' everytime (and emulators don't get it right, per se. Given the benefit of doubt, I'd say the demo maker specifically relied on the real hardware since that's what I would assume would be used in the compo). The fact that it's 'unstable' is irrelevant.

by on (#82684)
I guess if this demo was designed to only LOOK like it was writing past the end of vblank, it would be something else.
It could throw some fake stray writes on the screen, then suddenly they would persist instead of going away, and form patterns or designs. That could have been cool, this just looks like bad noob code.

Edit: The worst thing about this demo is that it can't keep a steady music tempo, and just sounds terrible.

by on (#82691)
Quote:
I can't believe most of you guys don't know about these kind of glitch/abstract style demos. Some look cool, some (most, IMO) look like shit. Middle ground is pretty rare. Either way, I thought people on these forums would be familiar with these kinds of demo 'art'. Lol @ the people that thought the glitches were unintentional.

Sorry but I can't let you get away with this.
This is a glitchy and crappy program and you call it art. Are you serious ? And you mean this is intentional ? You are the retarded one.
There is nothing cool or impressive about this. Action 52 is impressive because they dared to sell it, but here it's not even this.

by on (#82692)
Don't you see quotes around the word?

by on (#82693)
The output of this to me isn't art, and the code is probably crap [I mean 4K for this? Hmmm....] but somewhere deep inside there maybe one piece of good coding I could say is art, but I'm not digging through the turd to find it. :P

by on (#82694)
Not 4k, but 40k (It's listed in the 64k category for some reason). There's 8k of empty CHR ROM to go with the other 8k.

by on (#82695)
Yeah, but the 6502d file ended at about 4KB in size [$1000] long from what I could tell was program. The rest was just long chains of data that would take way less space if compressed on top of that.

by on (#82698)
First off, let's try to keep it respectful.

Second, I'll say this is impressive to me. Not from an NES / 6502 coding standpoint, but from a creative standpoint. It is sort of like authoring a Milkdrop visualization. You just keep adding random stuff until you get something interesting out of the randomization. That said I think you can accomplish the same thing by using a random ROM corrupter on the SMB1 ROM. There's no real coding skill displayed here other than the first few lessons of the Nerdy Nights tutorials.

Now, with all of that said, I agree with Koitsu. You'd have to be stoned to think this was cool. Believe me, I know.

by on (#82699)
I wish I could get three pages of responses about how shitty my IDE is--and it's *way* bigger than 40K. :lol:

Unfortunately I've never been stoned, either psychedelically or physically. :shock:

by on (#82700)
Bregalad wrote:
Quote:
I can't believe most of you guys don't know about these kind of glitch/abstract style demos. Some look cool, some (most, IMO) look like shit. Middle ground is pretty rare. Either way, I thought people on these forums would be familiar with these kinds of demo 'art'. Lol @ the people that thought the glitches were unintentional.

Sorry but I can't let you get away with this.
This is a glitchy and crappy program and you call it art. Are you serious ? And you mean this is intentional ? You are the retarded one.
There is nothing cool or impressive about this. Action 52 is impressive because they dared to sell it, but here it's not even this.


Hello. Your reading compression level is apparently not currently at an adequate enough level to generate a proper reply :P As Shiru pointed out, see the quotes around the word art. I'm not using it as my word, but in general/broad context. And I knew exactly what the demo was about and I'm the retarded one? Go figure. Also, I never said it was impressive or cool. If that part didn't apply to me, you should've put that in a separate paragraph or added some lines of space to differentiate it to the reply of my post. Thanks for trying, though ;)


As for demos, I think most demos (not in the context of a "game" demo) do fall under what most consider 'art'. They're more than just a boring representation of some effects (not that some aren't). The music/sounds, the theme, colors, style, etc. The whole presentation. Whether it appeals to someone's tastes or not, is irrelevant. You can draw a personal line as to what you think is art, but that is just personal preference of skill in presentation (being it painting or drawing or whatever). Or rather, the artists skills. Poor or lacking skills doesn't mean a work of expression isn't art. It just means that it's probably below your standards of enjoyment/reception/Ican'tthinkoftherightfuckingword,meh.


What's the whole point in finding out what the code does? Or whether it's up to snuff or not? I mean, unless you're still hooked on the whole "I'm not so sure the glitches are really intentional". The probability that the code did glitch due to bad coding *and* the programmer played it off on the spot like it was support to be that way, is pretty damn low IMO. Especially since this is a known genre/area of demo making (I wouldn't be surprised if it wasn't originally inspired by the "bending" scene. The style, I mean. Then again, I remember making such demos as a kid in BASIC, in the 80's. I wasn't the only one either). There's a much higher probability that he/she/they either accidentally glitched it at some point and decided to stick with that, or they purposely glitched it in specific ways until they were happy with the end result. Both come to the same result; the persons or group entered it into the compo knowing full well what the output and presentation should look like.

by on (#82701)
Well, I just had to watch the youtube of it after reading this thread. I am not under the influence of any chemicals, but I thought this was kind of cool.

I guess the mind control really works. You just need to believe...

Also, lol at "reading compression".

by on (#82702)
Comprehension is compression: taking data and finding the rules that underlie it.

by on (#82704)
koitsu: Heheh, a while back I had already passed the point where I could look back on the stuff I did a long time ago and realize how crappy most of it was, my friend Andrew and I were talking about that too, we worked on a lot of tracked music and game designs together, including such NES masterpieces as Retard Adventure, Urban Acid Zombies, and Hot Seat Harry. A lot of the music if it had an interesting part, was usually surrounded by all sorts of weird stuff - and lots of parts left in because it sounded funny. But I made a genre called "industrial trash music", so things were mostly coming out as expected. :)

I've seen other demos visy has worked on (some great ones), so I realized (well, after trying to select NTSC/PAL) that it had to be glitchy intentionally. I thought it was cool, I didn't like the jumping screen feature much, it'd be a challenge to get more annoying than that.

For making a glitchy demo I think the NES can do some interesting stuff. I'm still waiting to see someone do all their graphics entirely by enabling/disabling the monochrome bit, heheh. AFAIK Final Fantasy (when getting an orb) is the only program that did something like that (essentially making an extra transparent layer of graphics). But it would be nearly impossible to do that in a clean-looking way.

by on (#82705)
tepples wrote:
Comprehension is compression: taking data and finding the rules that underlie it.

That's an interesting way of putting it. I had to stop and ponder that for awhile. I guess it is.

I suppose it's a little like how a compiler can parse high level code and make it into machine code.

Maybe many people look at some sort of artistic expression and see it as a waste. It's not perfectly compliant code.

What do people aim for when they express? Do they express something that can easily be comprehended by a wide audience? Do they express something more perfectly synthesized, but difficult for almost anybody to ever comprehend? Do they make something that is easily comprehended by a fringe audience, but challenging for most?

Mind control...

by on (#82709)
I don't see why this would be such a shock for people, since this sort of thing already has been done on the NES before (e.g. glitchNES).
It's also been done on the Megadrive. And there are mods for the DMG/GBC that allow you to achieve various glitch effects.

Some people like this sort of stuff. It's intentional. It's not always as simple as it might look to the viewer.
Move on.

by on (#93577)
Hi. I'm the creator of this demo. Thanks for the interesting polarized conversation and analysis. The demo is exactly as intended: when my video player just wasn't ready for the Assembly party competitions, I decided to use it as is and found really interesting emergent glitches on the real hardware, so I explored different ways of fucking up the decompression routine. Emulators are unusable in this nature as they cannot reliably reproduce the incorrect PPU behaviour. Oh, and it's coded in C.