It is currently Sun Dec 17, 2017 6:36 pm

All times are UTC - 7 hours





Post new topic Reply to topic  [ 81 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6  Next
Author Message
PostPosted: Sun Mar 26, 2017 7:56 am 
Offline
User avatar

Joined: Fri Nov 12, 2004 2:49 pm
Posts: 7320
Location: Chexbres, VD, Switzerland
What specific part of the NES architecture do you think is ugly ? Without specifying that, this thread is a non-discussion.


Top
 Profile  
 
PostPosted: Sun Mar 26, 2017 8:27 am 
Offline
Formerly WheelInventor

Joined: Thu Apr 14, 2016 2:55 am
Posts: 1135
Location: Gothenburg, Sweden
Quote:
Python API -> NES assembler translator.

That is, a specific nes assembler (nesasm based according to what little documentation there is). Eventually, you might want to switch to a more versatile assembler, like asm6 or ca65 / cc65 or perhaps some other assembler.

_________________
http://www.frankengraphics.com - personal NES blog


Top
 Profile  
 
PostPosted: Sun Mar 26, 2017 8:36 am 
Offline

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 19354
Location: NE Indiana, USA (NTSC)
Bregalad wrote:
What specific part of the NES architecture do you think is ugly ?

These quirks of the NES architecture cause problems:
  • No write FIFO for modifying VRAM while the display is on. The TMS9918 in the ColecoVision and MSX and its descendants in the Master System and Genesis have one, as does the TG16 VDC. And there's plenty of downtime in the scanline to execute queued writes, such as repeat fetches of the same attribute byte.
  • NTSC picture height extends into overscan and is not adjustable. Competing consoles could instead blank the top and bottom 8 or 24 lines to free up more VRAM transfer time.
  • PAL NES CPU divides the master clock by 16 instead of 15. This breaks raster effects.
  • 8x8 or 8x16 pixel sprite size choice is global, not per sprite.
  • Audio path doesn't pass through the 72-pin cartridge, and there is no FIFO for PCM writes.
  • Limited selection of noise and DMC periods.

The NES has other quirks.


Top
 Profile  
 
PostPosted: Sun Mar 26, 2017 9:20 am 
Offline
Formerly WheelInventor

Joined: Thu Apr 14, 2016 2:55 am
Posts: 1135
Location: Gothenburg, Sweden
If it can be called a quirk, to the best of my knowledge, the reversed duty cycle on the sq. channels serves no practical purpose. We'd gain more timbral variation if there was a fourth duty setting of an audible quality.

_________________
http://www.frankengraphics.com - personal NES blog


Top
 Profile  
 
PostPosted: Sun Mar 26, 2017 9:37 am 
Offline
User avatar

Joined: Sat Feb 12, 2005 9:43 pm
Posts: 10171
Location: Rio de Janeiro - Brazil
I don't think the NES' architecture is ugly or weird. It's a fairly simple console and if you use the basic features as intended, everything is pretty straightforward. IMO, the quirks only start showing when you try to deviate from the norm, doing timed writes to registers when they shouldn't normally be written to or exploiting other undocumented behaviors.

The way the controllers are read may seem awkward, but if you research a bit about how the hardware works, it makes sense. Being an old design, there's a lot of focus on simplifying the hardware itself, which might cause the way it's interfaced with to be less intuitive than ideal, but IMO the NES has a fairly good balance between the simplicity of the hardware and the simplicity of the interface. The Atari 2600 for example is much weirder, look at how sprites are positioned and you'll go "WTF?" like never before. Again, when you study how the hardware works, the interface makes sense, but it's much more awkward than most things you'll see on the NES.


Top
 Profile  
 
PostPosted: Sun Mar 26, 2017 10:34 am 
Offline
User avatar

Joined: Wed Oct 16, 2013 7:55 am
Posts: 130
tepples wrote:
  • 8x8 or 8x16 pixel sprite size choice is global, not per sprite.


Curious how you would propose changing this. Use one of the spare attribute bits? It seems to me like this would really complicate the PPU code to detect when more than 8 sprites are on a scanline.


Top
 Profile  
 
PostPosted: Sun Mar 26, 2017 10:43 am 
Offline
User avatar

Joined: Sun Jan 22, 2012 12:03 pm
Posts: 5899
Location: Canada
I think it's quite ugly, personally. The errata list kind of covers it; they tried to add several features that were ultimately broken and not terribly useful. A lot of the NES' design was clearly experimental. Here's a few of its "dead ends" that bug me:

  • Pretty much everything about DPCM is broken. It's got terrible sound quality, interferes with the controller, was tuned to an A-440 scale except an off-by-one error on the length control completely breaks all of that tuning, has an IRQ but is very unwieldy. (Despite this, still pretty usable just for playing samples, and at least has 6:1 compression.)
  • APU envelopes offer only one shape and it has to go from full volume to silent. Pretty much useless compared to the per-frame volume control, so it goes unused too.
  • APU length counter is another annoying feature. It has a very bizarre arbitrary table of note lengths, again completely useless because of the per-frame volume control. It constantly gets in the way too, because if you don't remember to re-initialize this useless feature it will silence the channel, and there are a lot of conditions where it will need to be re-initialized.
  • One of the sweep units for the two square channels has an off-by-one error and sweeps at a different rate than the other.
  • Sprite overflow also doesn't work as intended, unusable unless you know the exact conditions of how it's broken.
  • The "ZIF" connector on the front loading NES was a complete disaster. The worst cartridge connector I've ever seen. (Not fixed until a very late revision.)
  • The original Famicom had square buttons which were prone to mechanical failure. (Fixed in an early revision.)

It's all forgivable, because you don't need to depend on any of these features, and the system as-is is quite usable and versatile, but each one of these features is clearly a failure in my eyes. Dead weight that probably cost them a lot to develop.

Every system has things that turn out to be broken in production, but NES has some really strange ones to me. It's understandable that they didn't have the kind of years of trial and experience in console design that they do now, and they still make mistakes now too. What's incredible to me is that despite all these bad decisions, none of them were critical to its success, and it survived and thrived! Amazing!


Last edited by rainwarrior on Sun Mar 26, 2017 11:17 am, edited 1 time in total.

Top
 Profile  
 
PostPosted: Sun Mar 26, 2017 10:46 am 
Offline

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 19354
Location: NE Indiana, USA (NTSC)
dustmop wrote:
tepples wrote:
  • 8x8 or 8x16 pixel sprite size choice is global, not per sprite.

Curious how you would propose changing this. Use one of the spare attribute bits?

Yes. It would have been attribute 2 bit 4: vhps--cc

Quote:
It seems to me like this would really complicate the PPU code to detect when more than 8 sprites are on a scanline.

You're correct that the OAM would have needed slightly different physical organization to allow fetching the size bit and Y at once. But because it already fetches an entire 8-byte word line at once, it could probably have been done.


Top
 Profile  
 
PostPosted: Sun Mar 26, 2017 12:26 pm 
Offline
User avatar

Joined: Fri Nov 12, 2004 2:49 pm
Posts: 7320
Location: Chexbres, VD, Switzerland
tepples wrote:
These quirks of the NES architecture cause problems:


rainwarrior wrote:
I think it's quite ugly, personally. The errata list kind of covers it; they tried to add several features that were ultimately broken and not terribly useful.

I was aiming the question towards the OP. He's the one who said the architecture was ugly and wanted to discuss it explicitely in this thread, but didn't even care to mention what part exactly he had in mind.

And if I had to answer that question myself, I agree with you guys. APU is broken, especially the part where one duty cycle is wasted, and where one extra period bit for Square channels is missing (since you only need 8 steps to produce the duty cycle that are used, but they use 16 steps instead). Also the length counter and enveloppe decay are almost completely useless - their only purpose would be to slightly simplify music playback software and avoid some simple NROM games to have to handle volume changes by themselves, which costs some ROM.

The most ridiculous part of APU is the fact Triangle channel has two separate timers, while other features leaves to be desired on that channel. For instance, sweep on triangle channel would be useful - but no, they used a second timer instead ! And, like Rainwarrior said, DPCM is broken. Raw PCM is rendered very difficult to use by the lack of a simple CPU cycle IRQ timer, and this also causes problem for scanline effects, where we have to use the weird Sprite Zero hit polling because there's no IRQ timer. Even a sprite zero hit IRQ would already be much better !

I also agree the PAL PPU is basically broken and that the top/bottom 8 scanlines should have been hidable by hardware.

However, some other points of the architecture are beautiful. I especially like how the graphics are made, and I don't mind global 8x8/8x16 sprite switch, in most cases a single game will only use one mode and stick to it.


Top
 Profile  
 
PostPosted: Sun Mar 26, 2017 12:41 pm 
Offline

Joined: Tue May 28, 2013 5:49 am
Posts: 934
Location: Sweden
tepples wrote:
dustmop wrote:
tepples wrote:
  • 8x8 or 8x16 pixel sprite size choice is global, not per sprite.

Curious how you would propose changing this. Use one of the spare attribute bits?

Yes. It would have been attribute 2 bit 4: vhps--cc

Quote:
It seems to me like this would really complicate the PPU code to detect when more than 8 sprites are on a scanline.

You're correct that the OAM would have needed slightly different physical organization to allow fetching the size bit and Y at once. But because it already fetches an entire 8-byte word line at once, it could probably have been done.

The PC Engine allows any combination of sprite size from 16x16 to 32x64 for any sprite by setting certain bits in the Sprite Attribute Table (PC Engine's OAM buffer) for each sprite entry. But on the other hand it can't use 8x8 sprites at all, and when counting if more than 16 sprites are sharing a scanline, every 16 dot part counts as a sprite.

I think Sega systems also can mix sprite sizes, only Nintendo systems have a global sprite size, and it doesn't change with SNES either.


Top
 Profile  
 
PostPosted: Sun Mar 26, 2017 1:06 pm 
Offline
User avatar

Joined: Sat Sep 07, 2013 2:59 pm
Posts: 1517
monobogdan wrote:
But how to paint my graphics and save in chr?
Any tutorial?

monobogdan wrote:
Pokun wrote:
Easiest way might be to use NES Screen Tool. [...]

Photoshop is bad for NES?

I really think before you go on with anything you have in mind right now, you should work through one of the NES development tutorials to get a general understanding of how this works.

Your questions like the above one where you ask whether you can save NES graphics with Photoshop or the question "How to draw sprites?" show that you're still lacking the very basics of NES development.

So, before bothering how to convert graphics or discussing philosophical questions about the architecture, you should really make sure that you finish one of those tutorials.

http://nintendoage.com/pub/faq/NA/nerdy_nights_out.html
https://nesdoug.com/

If you have any questions regarding specific things from those tutorials, the people here will surely be able to help you.

tepples wrote:
8x8 or 8x16 pixel sprite size choice is global, not per sprite.

I don't mind the globalness of this, but you know what I would have liked better? 16 x 8 sprites instead of 8 x 16, to double the size of objects that can be put on the screen without flickering.

_________________
Available now: My game "City Trouble".
Website: https://megacatstudios.com/products/city-trouble
Trailer: https://youtu.be/IYXpP59qSxA
Gameplay: https://youtu.be/Eee0yurkIW4
German Retro Gamer article: http://i67.tinypic.com/345o108.jpg


Last edited by DRW on Sun Mar 26, 2017 1:10 pm, edited 2 times in total.

Top
 Profile  
 
PostPosted: Sun Mar 26, 2017 1:07 pm 
Offline
User avatar

Joined: Fri Nov 12, 2004 2:49 pm
Posts: 7320
Location: Chexbres, VD, Switzerland
SNES has 2 global sprite sizes, and sprites can individually select between those 2 sizes.

GBA has a per-sprite size setting, however it's much more recent so comparison isn't fair.


Top
 Profile  
 
PostPosted: Sun Mar 26, 2017 3:45 pm 
Offline
User avatar

Joined: Sat Feb 12, 2005 9:43 pm
Posts: 10171
Location: Rio de Janeiro - Brazil
There's nothing wrong with using Photoshop for pixel art if you know the program well enough to disable interpolation, opacity, and anything else that has no place in retro consoles. As long as you know how to export an image with the appropriate dimensions and color count for conversion, any tool you're comfortable with will do.

What I really don't recommend is drawing your graphics directly into restrictive tile editors where you have to draw everything inside little boxes (which often causes graphics to look blockier than they would if you had more room) and there are no layer or onion skinning features to help with animation (often resulting in stiffer animations).


Top
 Profile  
 
PostPosted: Sun Mar 26, 2017 4:44 pm 
Offline
User avatar

Joined: Sun Jan 22, 2012 12:03 pm
Posts: 5899
Location: Canada
As long as you know the limitations of the system you're making sprites for, I find any good editor will do. When making backgrounds for the NES, for example, it's easy just to use a 16x16 grid while drawing and just remember the 4-colour limitations. You need to learn the rules for the system before you begin, though.


I strongly recommend aseprite for animated pixel art. Its free version is quite good, and its paid version is very good as well as inexpensive.

I tend to use Gimp for non-animated pixel art. It might not seem pixel oriented at first glance but I find it works very well for it once you get yourself accustomed to it. (tutorial).


Top
 Profile  
 
PostPosted: Sun Mar 26, 2017 7:35 pm 
Offline

Joined: Sun Mar 19, 2006 9:44 pm
Posts: 924
Location: Japan
Personally, I would just say monobogdan is trolling, and ignorant of how the passage of time works.

"Why didn't you invest in Apple stock in 1994? They're worth billions now!"

"Why did you marry Mom and have kids? Your next girlfriend could have been much nicer."

"Why did you design the space shuttle, NASA, when it would explode in 1986?"

"Why did you invent the TV, Mr. Farnsworth, when you knew it wouldn't be in colour for a couple more decades?"

etc.


Learn about the computers and game systems that preceded and were contemporary to the Famicom / NES and thank Ricoh that you're not designing 2-colour bitmaps and single-colour sprites, of which only 2 to 4 can appear on one scanline (if you're lucky).

_________________
http://www.chrismcovell.com


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 81 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6  Next

All times are UTC - 7 hours


Who is online

Users browsing this forum: No registered users and 7 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group