Prototyping NES games with PC pseudo-arcade games

You can talk about almost anything that you want to on this board.

Moderator: Moderators

User avatar
Bregalad
Posts: 8055
Joined: Fri Nov 12, 2004 2:49 pm
Location: Divonne-les-bains, France

Prototyping NES games with PC pseudo-arcade games

Post by Bregalad »

It is an idea that came to me recently. It is a merge of the two following facts :

1) Many NES games are more or less ports of arcade games (the most well known are Contra series, Gradius series, Donkey Kong, Double Dragon series). Some of them are among the most influential and popular NES games ever, despite the fact they were originally mere "ports".

2) It is possible to write pseudo-NES games for the PC that actually respect the graphics, sound and input limitations of the real console, but that do not require programing for the 6502. This solution has been evoquated quite a few times already on NESDev for people who do not plan to run their games on real hardware, or even for the sake of prototyping a game before porting it on the 6502.

By merging the two concept together, it means it is just as sensible (or nonsensible) to make a pseudo-Arcade game for the PC. Instead of runing a game that uses a virtual NES hardware and no 6502, it would run a game on a virtual arcade hardware. It makes even more sense in my opinion to have a pseudo-Arcade game than a pseudo-NES game, because the limitations of Arcade games really depend on the chosen graphics/audio chips for every particular game. The CPU is different in each arcade game, then breaking the CPU limitation is less an technical rape than breaking the CPU limitations of the NES console.

So do you guys think what I say makes sense, or am I completely insane ?

In addition, it would always be possible to make a real arcade cabinet from a rasberry pi or something similar out of the PC program, and as such "make it run on real hardware" is a trivial step on the software side (however it could be possibly more difficult on the hardware side).

This only makes sense for "arcade games", respecting the philosophy mentioned in another topic, meaning: Few levels, either no or very simplistic story scenes, no saves or passwords, high difficulty, beatable in less than one hour.

The problem is that I know squat about what is the common denominator in 80's arade games hardware. I guess by the time of the peak of the NES populatiry (1986-1990) the aracde games were already closer to the Mega Drive in terms of technical possibilities which means 4BP graphics and FM sound. But what kind of graphic and sound chips were usually used ? Are there implementation of existing graphics and sound chips on the PC usable in a PC program ?
tepples
Posts: 22705
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: Prototyping NES games with PC pseudo-arcade games

Post by tepples »

If it weren't for the historic inability to find a business model for a copylefted offline video game, you could probably rip the VDP implementation out of any Genesis emulator or the VDC/VCE out of Mednafen's TG16 emulator. Otherwise, perhaps it's an interesting engineering project to create a generic tiled VDP on top of SDL.

Blargg's Game_Music_Emu contains C++ implementations of classic sound chips.
mic_
Posts: 922
Joined: Thu Oct 05, 2006 6:29 am

Re: Prototyping NES games with PC pseudo-arcade games

Post by mic_ »

what kind of ... sound chips were usually used ?
OP-M/OP-N FM chips were common. See http://www.system16.com/
User avatar
Bregalad
Posts: 8055
Joined: Fri Nov 12, 2004 2:49 pm
Location: Divonne-les-bains, France

Re: Prototyping NES games with PC pseudo-arcade games

Post by Bregalad »

Cool, what about commonly used video chips ?
tepples
Posts: 22705
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: Prototyping NES games with PC pseudo-arcade games

Post by tepples »

Most arcade video chips were custom, as I understand it.
User avatar
mikejmoffitt
Posts: 1353
Joined: Sun May 27, 2012 8:43 pm

Re: Prototyping NES games with PC pseudo-arcade games

Post by mikejmoffitt »

Bregalad wrote:Cool, what about commonly used video chips ?
Arcade games, unlike console games, were almost always running on hardware designed explicitly for the game, or on a powerful general purpose platform. The game's design shaped the hardware for the most part, and hardware-specific limitations did not have a large roll in giving games character. There are broad exceptions ('70s games being black and white from available tech, '80s games being largely 2D from available tech, etc), and I will not count PlayChoice / VS System games in this because those are largely based on NES software.

From this you can determine what your arcade hardware would be like based on the design of your game. For most games it was expected that the game run full speed and not run into sprite limits. If you want NES-era arcade hardware, take a look at mid-'80s hardware - A graphics layer or two, lots of sprites, 4bpp 12-bit color, many palettes, a few PCM channels backed by a PCM chip, an YM2151 or similar FM synth chip, etc.

Decent example: Namco ND-1 uses this IC: http://html.alldatasheet.net/html-pdf/9 ... V606B.html
User avatar
Bregalad
Posts: 8055
Joined: Fri Nov 12, 2004 2:49 pm
Location: Divonne-les-bains, France

Re: Prototyping NES games with PC pseudo-arcade games

Post by Bregalad »

So basically companies had to make ASICs for rendering graphics in their aracde games ? Anything can be believable as a 80's arcade game as long as it is purely 2D ? Where there no limitation for e.g. resolution, # of colours, etc... ? Was there not at least one or two "well known" chips used by various companies, like there is for sound ?
Namco ND-1 uses this IC: http://html.alldatasheet.net/html-pdf/9 ... V606B.html
Interesting, is that chip emulable on a PC ?
tepples
Posts: 22705
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: Prototyping NES games with PC pseudo-arcade games

Post by tepples »

Bregalad wrote:Interesting, is that chip emulable on a PC ?
Are games on that board in MAME?
tomaitheous
Posts: 592
Joined: Thu Aug 28, 2008 1:17 am
Contact:

Re: Prototyping NES games with PC pseudo-arcade games

Post by tomaitheous »

mikejmoffitt wrote:
Bregalad wrote:Cool, what about commonly used video chips ?
Decent example: Namco ND-1 uses this IC: http://html.alldatasheet.net/html-pdf/9 ... V606B.html
That's from 1995, not mid to late 80's.


The average 1985/6 arcade systems are kind of close to the PC-Engine capabilities. The master palette is usually 12bit though, instead of PCE's 9bit. The Gradius arcade board uses a sound chip that's near identical to the PC-Engines as well (which Konami used in the MSX sound addon cart - SSC), if you didn't want to go the FM route. I personally find the characteristic sounds of the NES to be more intriguing and charming, than FM. That and FM sound is usually associated with the 16bit era (even though it's not specifically tied to it).

There are high end arcade systems and there are mid and low range hardware as well. Setups like Space Harrier arcade hardware (1985), a glorified blitter, weren't exactly the norm for that era. And on top of that games from the mid to late 80's, didn't always take advantage of the hardware features (games that didn't feature much parallax layering when the system was capable of it). I personally would design it around what the average game showed, than just hardware specs - if you're trying to capture that feel and set limitation.
__________________________
http://pcedev.wordpress.com
User avatar
Bregalad
Posts: 8055
Joined: Fri Nov 12, 2004 2:49 pm
Location: Divonne-les-bains, France

Re: Prototyping NES games with PC pseudo-arcade games

Post by Bregalad »

tomaitheous wrote: The average 1985/6 arcade systems are kind of close to the PC-Engine capabilities. The master palette is usually 12bit though, instead of PCE's 9bit.
Cool, but I am completely unfamiliar with the PC Engine, let alone it's capabilities :) The only think I know about that system is that it has a 6502 derivate CPU.
The Gradius arcade board uses a sound chip that's near identical to the PC-Engines as well (which Konami used in the MSX sound addon cart - SSC), if you didn't want to go the FM route.
Yeah, so basically the're PSG but with custom waveform instead of being bound to square/saw/triangle waves, right ? That's good and much simpler to understand than FM.
There are high end arcade systems and there are mid and low range hardware as well.
Yeah so what I'd be interested in simulating is low to mid range hardware from the 1986-1990 time period. Let's say I run a small and poor game development company in that time (and cannot afford an ASIC), and want to make an arcade game, which hardware will I use ?
User avatar
rainwarrior
Posts: 8731
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: Prototyping NES games with PC pseudo-arcade games

Post by rainwarrior »

Bregalad wrote:Let's say I run a small and poor game development company in that time (and cannot afford an ASIC), and want to make an arcade game, which hardware will I use ?
In a lot of cases, the course of action there was to target a ROM replacement for an existing old game that a lot of people already have in their arcade, but you know its popularity is fading.

e.g. the work of General Computer Corporation
AWJ
Posts: 433
Joined: Mon Nov 10, 2008 3:09 pm

Re: Prototyping NES games with PC pseudo-arcade games

Post by AWJ »

Bregalad wrote:
tomaitheous wrote: The average 1985/6 arcade systems are kind of close to the PC-Engine capabilities. The master palette is usually 12bit though, instead of PCE's 9bit.
Cool, but I am completely unfamiliar with the PC Engine, let alone it's capabilities :) The only think I know about that system is that it has a 6502 derivate CPU.
The Gradius arcade board uses a sound chip that's near identical to the PC-Engines as well (which Konami used in the MSX sound addon cart - SSC), if you didn't want to go the FM route.
Yeah, so basically the're PSG but with custom waveform instead of being bound to square/saw/triangle waves, right ? That's good and much simpler to understand than FM.
There are high end arcade systems and there are mid and low range hardware as well.
Yeah so what I'd be interested in simulating is low to mid range hardware from the 1986-1990 time period. Let's say I run a small and poor game development company in that time (and cannot afford an ASIC), and want to make an arcade game, which hardware will I use ?
Low end hardware from that period will probably have two to four tilemap layers (one of which may be a non-scrollable text layer), a sprite generator with 128 or so 16x16 sprites (with larger characters created by assembling metasprites in software) and an OPL2 or OPN chip for sound. There might be one PCM voice for speech, either a NEC or Oki ADPCM chip or just a Z80 bit-banging to a DAC. Graphics will be mainly 4BPP, maybe only 3BPP for some of the tilemaps. Look at Double Dragon or Twin Cobra or 1943--that's what low-end late-1980s hardware looks like.
User avatar
Bregalad
Posts: 8055
Joined: Fri Nov 12, 2004 2:49 pm
Location: Divonne-les-bains, France

Re: Prototyping NES games with PC pseudo-arcade games

Post by Bregalad »

Low end hardware from that period will probably have two to four tilemap layers (one of which may be a non-scrollable text layer), a sprite generator with 128 or so 16x16 sprites (with larger characters created by assembling metasprites in software) and an OPL2 or OPN chip for sound. There might be one PCM voice for speech, either a NEC or Oki ADPCM chip or just a Z80 bit-banging to a DAC. Graphics will be mainly 4BPP, maybe only 3BPP for some of the tilemaps. Look at Double Dragon or Twin Cobra or 1943--that's what low-end late-1980s hardware looks like.
Cool, what is your sources about the graphics ? The website linked above ( http://www.system16.com/ ) does only mention CPUs and sound chips, and does hardly ever mention anything graphics related.

Were tile-maps also used ? With 8x8 tiles or a different size ? Were there also palette lock-up or were the colours refered to directly ? In case of 4BP graphics, is it the same 16-colour palette for the whole screen, or is there multiple blocks with different palettes ?

Same question for sprites : All sprites using the same 16-colour palette or different sprites using different palettes ?

Did they use CHR-ROM or CHR-RAM to store graphics ?

EDIT : Also, I've learn all and everything about the amazing family of Yamaha chips, but were there well known chips from other manufacturers ?
psycopathicteen
Posts: 3140
Joined: Wed May 19, 2010 6:12 pm

Re: Prototyping NES games with PC pseudo-arcade games

Post by psycopathicteen »

Probably multiple palettes. Neo Geo had 16-colors per sprite, but 256 sets of 16 colors to chose from.
AWJ
Posts: 433
Joined: Mon Nov 10, 2008 3:09 pm

Re: Prototyping NES games with PC pseudo-arcade games

Post by AWJ »

Bregalad wrote:Cool, what is your sources about the graphics ? The website linked above ( http://www.system16.com/ ) does only mention CPUs and sound chips, and does hardly ever mention anything graphics related.
Mainly MAME source code.
Were there also palette lock-up or were the colours refered to directly ? In case of 4BP graphics, is it the same 16-colour palette for the whole screen, or is there multiple blocks with different palettes ?
Palette lookup, with each sprite and tile having its own attribute, just like 4th generation consoles. Most hardware from the 1986-1990 period was using palette RAM, but really low end hardware (e.g. 1943) still used PROMs, meaning the palette for the entire game was a fixed set of 256 or so colors (but still with attributes to select which 16 out of those 256 each sprite and tile use)
Did they use CHR-ROM or CHR-RAM to store graphics ?
The majority of arcade hardware from this period used CHR-ROM, though CHR-RAM was not unheard of (e.g. the Gradius series--which was decidedly not low-end). In low-end hardware each layer would have its own ROMs. A scrolling tilemap with its own dedicated ROMs is dead simple to build out of 7400-series logic chips. Drawing two or three tilemaps from the same ROMs (so you can display the same object in either the background or the foreground without needing two copies of the pattern data) is quite a bit trickier and generally done with an ASIC, meaning it was limited to the larger manufacturers like Namco, Konami, Sega, Taito.

Regarding tilemap size, 8x8, 16x16 and even 32x32 tiles were all common. Capcom liked to use big tiles whereas Konami pretty much stuck to 8x8 (but 16x16 sprites).

Something you'll see particularly in low-end hardware from this period is ROM-based tilemaps (meaning the "nametables" are in ROM, like NES After Burner) 1943 and other Capcom Z80-based hardware from the period used these, as did a few other manufacturers. The foreground tilemap that displays the score digits etc. is RAM-based for obvious reasons, but the background and midground (the clouds and ships in 1943) have all the scenery for the entire game in giant ROM-based tilemaps so all the CPU has to do to display anything is write the appropriate values to the scroll registers. This limits what you can do with animation (everything that can move independently has to be a sprite) but saves the CPU from having to spend a bunch of its time just copying data from ROM to VRAM.

These are more of an early-1980s thing, but dedicated starfield generators are still something you occasionally see in the late 1980s (CPS1 even had one, though only one or two of the games used it). A starfield generator consists of a LFSR with a bunch of the outputs ANDed together (the more of the outputs are ANDed together, the more sparse the stars are). You "scroll" the starfield in the direction of scan (left/right on a monitor in TV orientation, up/down on a vertical monitor) by changing what state the LFSR starts in at the beginning of the frame. As memory got cheaper starfield generators were gradually replaced by tilemaps, which allow your space background to have constellations, nebulae, etc. and not just pseudorandomly-placed stars.
Post Reply