This page is a mirror of Tepples' nesdev forum mirror (URL TBD).
Last updated on Oct-18-2019 Download

Arcade Game Designer

Arcade Game Designer
by on (#226511)
Hello everyone

My name is Allan. I'm actually a z80 game coder, and I helped work on updating an engine for a game designer which uses a simple syntax to then assemble games into machine language. Originally it was exclusive to the ZX Spectrum (classic British computer), developed over many years by Jonathan Cauldwell, and dozens of excellent games have been written. The engine currently supports software sprites, room layouts, maps and so on and is fast and easy to use even for beginners. I myself have completed three games which have been published. It's a great way for less experienced coders to create games, and is one of the reasons the Spectrum homebrew scene is so healthy.

Recently the engine has been converted to the 6502, and as a result dozens of games which were designed on the ZX Spectrum are now playable on the Acorn Atom and the BBC Micro (yes, this is a British thing at the moment). A 6809 and MSX engine are also in progress, with other machines under consideration.

I've owned and loved the NES for many years but hadn't considered writing games for it until recently. Obviously the hardware is different, particularly with regard to hardware sprites and so on, but I think it would be a great machine to add to the 'roster' so we're looking for someone interested in maybe joining our team to help with that. We're a very relaxed group of old school coders, there is no pressure or deadlines, everything is open source and not for profit, we just enjoy working together on the challenge and the excitement of seeing games written on one machine being converted to another without any change to the core code, because each system has its own compiler and engine. The system outputs source code in assembly which can then be built, or edited if you have the experience.

A full windows dev environment is also in the works, lots of nice editing tools for maps and sprites and the ability to test before compilation via a javascript engine.

To be clear - the 6502 engine is already working well, so any developer would mostly be looking at rewriting the graphics and sound routines to work with the NES. An experienced 6502 coder shouldn't find this too tricky I don't imagine - we have three experienced 6502 guys already and we are all willing to help - we just don't the inner workings of the NES too well is all.

I know NES maker is already out there, but this system already has a library of dozens of great games that could all be ported once the engine was complete, it will be free for anyone to use, and no claims will be made on games written on it. Here are a few example games built on the Spectrum. Many of these games were written by people with no knowledge of assembly language at all, and the quality of them may surprise you.

Temple of Lost Souls
Dead Flesh Boy

Let me know if you have any questions, I look forward to hearing from you.
Re: Arcade Game Designer
by on (#226530)
An the outset, it's hard for me to imagine any game being ported flawlessly to an NES, considering how strongly you have to consider the hardware limitations when designing anything for this console.

That said, the ZX Spectrum is definitely simple enough that on a surface level anything that works on it should probably run as is on a NES, aside from the obligatory palette conversion, and from skimming through the games in your videos, I'm not seeing anything that shouldn't work.

I think the games in your example look great, and I'm really impressed by what your tool is able to do. Do you have any examples of the tool itself, and how people work with it?
Also, what is used to create the tool itself? I'm guessing probably C++? (which would be a major obstacle for me, I hate working with C++ :P)
Re: Arcade Game Designer
by on (#226533)
Those games look simple enough that I think it may work... that being said I'll leave a possible nnes version to more experienced coders. I'd love to play with it and try to port it to the TurboGrafx though
Re: Arcade Game Designer
by on (#226534)
the system uses its own, very simple syntax which similar to basic. This is then compiled into assembly language and then assemble.

as an example, to move a sprite to the right when the player hits the correct button:


of if the play hits a tile which is deadly:


the code is very, very easy for beginners to understand.

As for the games, the future NES engine would of course support these older games, but I would imagine the person helping us would ultimate make use of the more advanced features of the NES.
Re: Arcade Game Designer
by on (#226536)
Also to answer a few more questions:

Yes, the tools are written in C++ but we're not looking for someone to build the tools, we need someone with 6502 experience to build an NES engine.

Here is how the whole process currently works, with full games on several systems:

Games are converted into a special format which defines sprites, screen layouts, tiles, objects, sounds, and script. Obviously the graphical side is customised to the target machine, but we have converters which can also help with that. The scripting language is similar to BASIC, but dedicated to games. This is what makes it possible to have it run on different machines.

The assets and the code / game logic are then put through a machine specific compiler, which takes all this data and converts it into assembly readable data and code which can be integrated into a machine-specific engine. This ensures that the game logic works correctly for the machine in question. Although each engine is specific to each machine, there is significant crossover dependent on the core CPU (z80, 6502, 6809). As I mentioned, we have a 6502 engine running well, so it's a question of using that as the basic for a NES specific engine.

The final result of this is full source code for the game in the appropriate assembly language for the appropriate machine, which can then be assembled into a working game. It's really quite remarkable when you have a game fully designed on a z80 machine being ported to a 6502 and running happily with little or no additional work needed.

If you're curious here is a video of Terrapins running on an Acorn Atom. Obviously this is a lower level machine with monochrome graphics, totally different core processor and graphics chip - the actual game scripts were not edited at all, and nor were most of the assets. Some minor changes to sprites were made but other than that, the game ported over with minimum fuss. The engine has since been optimised and the game runs a little quicker now.
Re: Arcade Game Designer
by on (#226702)
if anyone is interested, please drop me a pm, thanks.
Re: Arcade Game Designer
by on (#226706)
I love this kind of stuff, and I would really love to give a go at it, but I'm pretty sure I can't guarantee any of my time at the moment. I haven't even been able to complete any of my own projects.
Re: Arcade Game Designer
by on (#226815)
no problem. If you feel like having a look at the 6502 engine let me know, maybe you can give us a few pointers.
Re: Arcade Game Designer
by on (#226921)
I'd definitely be interested in being the first dead end user to test it. I don't think there's enough assembly coders with free time or interest (though I'm hoping I'm wrong).

Have you considered going forward in C via NESLIB? Might not need an additional coder that way.