Hot answers tagged

53

The 8 bit 6502 family doesn't have any stack-relative addressing modes that would make it easy to use the stack for variable storage. One can access values on the stack with a sequence such as TSX; LDA &102, X, but that's slower, clobbers X, and uses more memory (both in code size and stack usage) than a global variable. The 65C816 adds stack-relative ...


48

Off the top of my head I can think of two reasons, there are probably more. The first reason is that these variables may be set by a routine each frame, and then a lot of code uses them during the time of the whole frame. Every interrupt routine that fires during that frame may want to read out the current direction. The second reason is that, in a real-...


32

Mode 7 is just an image warp — the programmer sets a 2d offset that is applied between each pixel and the next when proceeding in raster order. That allows 2d rotation and scaling to be applied; if you change the start position and scale per line then that’s how you get a flat perspective plane. Doom can’t make use of this for at least two reasons: it would ...


30

The SNES hardware doesn’t implement perspective, it implements affine transforms of the background layer. Affine transforms aren’t sufficient for perspective. Perspective is implemented by changing the affine transform at every scanline, to change the scale. This is what allows parallel lines to be transformed so that they aren’t parallel on-screen, thus ...


25

For an emulator to be "cycle accurate" means the interactions between the components are timed accurately enough so that the emulation behaves the same way as the original machine for any given input. I mean "input" in the general sense -- both external inputs such as keyboards, joysticks, buttons, etc. and the program (or programs) being run, the data ...


24

There's something of a conflation here of antialiasing and filtering, I think. Antialiasing is literally preventing things from adopting aliases — e.g. if a diagonal line looks like a staircase rather than a diagonal line, it has adopted an alias. So you can imagine the same thing happening to textures as they rotate or take awkward angles. But it's always ...


23

As mentioned previously the timing issue is the cause not to waste time in pushing up parameters, access them with cost-intensive addressing modes and pull them finally from stack. Too much action if this occurs in a tight, time-critical frame building routine. In a games of a certain size usually all could be handled with global variables. Some state of the ...


23

This is a “write-twice” register, a 16-bit register mapped into a single byte, which takes two 8-bit stores to populate. There are a number of these on the SNES, with varying write orders (high or low byte first). The Super Famicom Development Wiki describes the behaviour of this particular family of registers thus: Note that these are "write twice&...


21

Yes, they can deplete. More modern games (starting with the Nintendo 64, for instance) used EEPROM (similar to flash memory) so don't have this issue, but in the days of the SNES this was too expensive so battery-backed SRAM was used. How long the batteries last depends on the game. Pokemon Silver for example has a real-time clock, which takes a lot more ...


20

Among other reasons: floors and ceilings of different heights would be very difficult due to the way Mode 7 is used to imitate a projective transformed plane. The effect works by setting the rotation, scale and offset of the tilemap on each scanline and these remain constant for the entire horizontal line. This can be used to render a single perfectly flat ...


19

SNES cartridges equipped with the Super FX processor use significantly more power than normal game cartridges. If a Super FX game is used with special controllers or accessories, which can use more power than normal controllers, it is possible to overload the stock AC adapter. As such, with limited exceptions, Super FX games must check the accessories ...


15

There are two main limitations with SuperFX that limited its performance and the level of 3D gaming that could thus be accomplished (e.g how many polygons/second). The chip itself only provided limited computational abilities. Mostly, it allowed up to 16x16 bit signed and unsigned multiplies with adequate working register set. This made it far faster than ...


14

It's also worth pointing out that the intricacies of maintaining variables on the stack can result in slower code. And of course there are limits to how big the stack can be; even with the more expansive stack on the 65816, you're still limited to a fraction of bank $00 (so 64K minus the direct page(s) minus any other stacks you have around minus any I/O ...


14

Did Nintendo really change their mind about using the 68000? Hard to say, as these decisions were never public. If so, how does this square with that CPU being so cheap even two years before the launch of the new console? Maybe because the price of the CPU drops to almost zero when using the 65816 as IP. After all, they didn't use the stock CPU, but had ...


13

The main tasks were: Emulation of a bitmap framebuffer for the SNES. The SNES is tile-based, which means plotting arbitrary lines, polygons etc. and filling them with color or a pattern isn't easy. The Super FX had enough RAM on the cartridge to use it as a framebuffer, and it can then DMA transfer it to the SNES video RAM. Faster 16-bit math operations, ...


13

The Super NES (SNES) has a much different hardware architecture than the Sega Genesis, and is built around the custom Ricoh 5A22 ASIC. As opposed to the discrete, stock, Motorola 68000 CPU employed in the Sega Genesis/MegaDrive, the SNES ASIC contains multiple components that internally operate at different clock speeds. The ASIC has the 65C816 CPU core, ...


12

I used to use a clean rubber eraser to clean golden contacts in general, not only cartridges but that can also leave residues if you don't clean it properly after. There is a comprehensive article on Arstechnica website that recommends using Q-Tips, Brass polish, high-concentrated alcohol, and lint-free cloths. Based on the instructions and the companion ...


11

JSR works how you think — the program counter will head off to 80fa — but the SNES doesn't. The two most common memory mappers both mirror what's at $00xx at $80xx. So when the processor reads from $80fa it gets the same thing as if it read from $00fa. Per the linked article, in a 'HiROM' (i.e. one of the two common types): Banks $80 - $FF can also be ...


11

Does it really have every single chip that any game ever used as hardware inside the Everdrive? Or does it -- shudder -- emulate them somehow? The latter. In the Super Everdrive and SD2SNES cartridges, the majority of the logic of the cartridge is performed by an FPGA. In photos of the boards, these will be usually labeled 'Altera' or 'Xilinx'. By the term '...


11

The reason for this is that Pocket Monster is an unlicensed SNES game released in September 1998, and in being an unlicensed game, it does not need to uphold itself to Nintendo's licensing standards. It stole both graphics and audio freely from many games, including the title screen music from Disney's Bonkers. I would imagine that the same stolen music ...


10

Another example in the tightly constrained world of games - especially those with a real-time loop (e.g., for updating the display on a fixed schedule): there was no space for a "task queue" and/or no time for a "rendezvous" mechanism that would enable data to be passed from one thread to another in one of the "structured" methods that would be more common ...


10

There is a tool called the Super UFO Pro 8 which claims to bypass the region lock, among other things. Unsure if it is only for North American consoles... You can also use a Game Genie or T-Connector in passthrough mode. I was recently researching a similar tool for the Famicom called the FC Pro Action Rocky which can bypass the region lock on the ...


10

Code written in high-level languages do a lot of stack-relative operations, because compilers are good at keeping track of which stack offset refers to which variable in the current context. In hand-written assembly code it was often more common to store things as 'globals' in well-known memory locations, just because it's easier for humans to think about ...


10

I'll add a couple of nuances. SuperFX chip was limited, among other things, in power consumption - the console could not really give a lot of power to the cartridge port. The memory architecture significantly limited the performance not only by the HDMA speed of 2.7MB / s, but also by access to ROM / RAM. The code from the 512-byte cache executed, in ...


10

Most flashcarts (including the Everdrive) use an FPGA to emulate mappers, which is essentially a programmable ASIC -- a developer writes code in a hardware description language specifying the behavior of the chip. So yes, the mapper is emulated -- but at a lower level than if the entire NES was being emulated through software, since it can't "cheat"...


9

Depending on the platform we're talking about, you've got a few choices. As the best platform for editing images at the time was the Amiga with its 4096 color palette in HAM mode on OCS/ECS (Original ChipSet/Enhanced ChipSet), and even better modes if you had an AGA (Advanced Graphics Architecture) machine, I'll talk about this computer. The best choice on ...


9

[not a complete answer, but some remarks too big for a comment] [also it focuses on games, as they are the most complex, real time application. Antialiasing for desktop UI and editors are a fairly insensitive issue and a subset thereof] Need for Colours A point, often forgotten from today's view is that antialiasing does need a video system systems with fine ...


9

The original Xbox has a 733MHz Pentium 3 CPU, coupled to a GPU that is essentially an Nvidia Geforce 3. They share a 128-bit DDR memory interface that supports 6.4 GB/s bandwidth. The original Raspberry Pi Model B has a 700MHz ARM1176JZF-S CPU core, coupled to a Broadcom VideoCore 4 GPU (which occupies the majority of the die area in the central SoC). The ...


8

Electrically, the American Super NES and Super Famicom cartridge ports are the same. Their Checking Integrated Circuits (CIC) use the same random number generation key, but they use a differently shaped cartridge housing. American Super NES Game Paks are more squarish and wider than Super Famicom cassettes but include two notches for alignment tabs in the ...


Only top voted, non community-wiki answers of a minimum length are eligible