I am going to sponsor an Atari 2600 game development competition!
I will make a limited run of cartridges. The best three entries will be included in the limited run of cartridges as a multi-cart.
The development time will be six months. The competition will begin on 1 November 2018 at midnight in your timezone, and end on 30 April 2019 at midnight in your timezone.
The theme and genre of the game is completely open! It can be anything!
You may submit a game you have previously started. Use this opportunity to finish your game!
Entries must be 4KB (4096 bytes) in size when compiled!
ENTRY TO THE COMPETITION
- A standard binary that is executable by the Stella Emulator.
- Entries can be either in Assembly or batari BASIC
- The source code must be made freely available.
- Some brief instructions about how to play the game.
- Instructions made freely available about how to compile the source code.
- The source code
- Borrowed from the IntyBASIC contest: As part of the validation process, each entry's source code will be built using its instructions and the final binary produced must match the submitted binary image 100%. Any entry that fails this criteria will not be judged.
- I encourage you to start a thread discussing your competition entry, where you post photos of your WIP, WIP ROMs and source code, and provide other information about your entry.
- You may co-author entries with people. That means more than one person can be an author to a game entry.
Your entry must be submitted to firstname.lastname@example.org
THE JUDGING PANEL
The panel of judges is as follows:
- vidak (myself)
Anyone who wants to be a judge can become one!
I /will/ permit judges to enter the contest, but they cannot score their own game entries. Anyone is allowed to give technical assistance
The criteria upon which 4K VCS ASM entries will be assessed are:
Originality (1 to 10) - Is the game based on a new idea or a twist on an established design?
Concept (1 to 10) -The ''audacity'' of the game, how impressive the general idea of the game is.
Presentation (1 to 10)
Gameplay (1 to 10) - A measure of how enjoyable the game is to play.
Replay Value (1 to 10)
When the panel has scored each game accordingly, the totals for each criteria will be added together for each game to give it a final score.
I am back! I have a job now! So with my first few pays, I am going to sponsor a 4K VCS/2600 Assembly programming competition.
I can muster up US$100, so that will be the prize for the best entry. This is just a post flagging my intention to run this competition, I will provide more details about the rules soon!
The competition will start on the 1st October, and finish on midnight 31 October in your timezone.
There is a webpage somewhere that has imaginative fake video game covers for 8 bit games, that is the theme! I will find the link to the page, I think it is on itch.io. So take inspiration from the cartridge label or box from a game, and make a game that reflects that.
The point of this competition is to popularise assembly language! Use this competition as an opportunity to learn it!
I enjoy the Atari 2600 because it is very well engineered. The 6502 processor has a wonderful instruction set, and the TIA is an ingenious solution to drawing video graphics with such a small number of transistors.
I have been developing video games in the Unity game engine, which uses a high level language called C#, and it is fun to do incredible things with so few lines of code, but it honestly doesn't feel special.
I spend a lot of time on the Atari because it has such a big community. I know Unity also has a community, but it's much more corporate.
For me, the Atari 2600 /is/ a challenge, but I don't develop almost exclusively on it because it is such a challenge. For instance I am very annoyed that the system only has 128 bytes of RAM, and there are only 76 CPU clock cycles per scanline. I am also very frustrated that the maximum size your cartridge banks can be are 4 kilobytes. If the 2600 had a faster processor, more RAM, and a bigger address space, I honestly don't think I'd ever leave it. The fact it only has 2 hardware sprites is not an issue for me.
I find modern consoles and platforms to be very unparsimonious and inefficient with their resources and architectures. Like Hennessey and Patterson (?) of the RISC-V processor foundation say, right now, because Moore's Law doesn't apply anymore, we have to return to a lot of the design priorities that were manifested in computer systems like the Atari 2600 which are Domain Specific - they have a very specialised architecture which does a small number of things /very well/.
I suppose that's the reason why the 2600 is so special to me. It only tries to do one thing very well, and it really succeeds at that. The more I work on the 2600, the more beautiful I think it is. It's so easy to use and its architecture helps you achieve what you want to do.
I feel like the dawn of the era of the minicomputer, say, the mid-1960s, up until say... the early 1980s is my favourite era of engineering, both at the mainframe/minicomputer and microcomputer level. There are so many beautiful processors and computer architectures that were realised during that time. The DEC minicomputers like the PDP-8 and PDP-11, the Commodore VIC-20 and Commodore 64, the Atari 2600, and the Z80 processor, as well as the Motorola 680X series of microprocessors were all such beautiful beautiful inventions. I look at processors today and they're just churned out for making money instead of being carefully and beautifully engineered.
I also like the education and 'hope' for computers that characterise the culture of the mid-60s to early-80s. You had to prosecute an /argument/ for the introduction of computers into everyday life, and it wasn't always taken for granted (why get the newest phone? Honestly: why?). Entire documentaries and TV series were invented for explaining the purpose and need for computers, and a lot of this culture was reflected in the applications towards which computers were put, like the Atari 2600. We have none of that now.
I feel very passionately about the Atari 2600, but I still haven't really discovered the /essence/ of that passion, so I'm still working away at my stupid game, and maybe the next game, until I really try and grasp the core of what is driving me.
I think it's possible - the idea just dawned on me, though.
People have already written compilers for brainfuck, and have done it in around 1KB.
I suppose I would just have to reimplement their sourcecode.
I think I would perhaps implement the 7-bit ASCII character set, but that would take up room. Perhaps I could go with a 5-bit character set, and forego lower case characters.
The code for "Hello World" looks like this:
1 +++++ +++ Set Cell #0 to 8
3 >++++ Add 4 to Cell #1; this will always set Cell #1 to 4
4 [ as the cell will be cleared by the loop
5 >++ Add 4*2 to Cell #2
6 >+++ Add 4*3 to Cell #3
7 >+++ Add 4*3 to Cell #4
8 >+ Add 4 to Cell #5
9 <<<<- Decrement the loop counter in Cell #1
10 ] Loop till Cell #1 is zero
11 >+ Add 1 to Cell #2
12 >+ Add 1 to Cell #3
13 >- Subtract 1 from Cell #4
14 >>+ Add 1 to Cell #6
15 [<] Move back to the first zero cell you find; this will
16 be Cell #1 which was cleared by the previous loop
17 <- Decrement the loop Counter in Cell #0
18 ] Loop till Cell #0 is zero
20 The result of this is:
21 Cell No : 0 1 2 3 4 5 6
22 Contents: 0 0 72 104 88 32 8
23 Pointer : ^
25 >>. Cell #2 has value 72 which is 'H'
26 >---. Subtract 3 from Cell #3 to get 101 which is 'e'
27 +++++ ++..+++. Likewise for 'llo' from Cell #3
28 >>. Cell #5 is 32 for the space
29 <-. Subtract 1 from Cell #4 for 87 to give a 'W'
30 <. Cell #3 was set to 'o' from the end of 'Hello'
31 +++.----- -.----- ---. Cell #3 for 'rl' and 'd'
32 >>+. Add 1 to Cell #5 gives us an exclamation point
33 >++. And finally a newline from Cell #6
The main problem is having enough RAM. Writing brainfuck as an interpreter would take up RAM, and writing a compiler would require the 2600 to /write/ the program somewhere on the cart, and that may be possible with some extra bankswitched SRAM or some sort of non-volatile RAM?
Anyway I just wanted to bring this idea I had up to see if anyone found it interesting.
i have designed the overworld. it is 171 screens. i think a 32KB cartridge will have enough space to store all the information for this.
there are bosses and mini bosses. you will have to defeat a boss in order to unlock another area - i imagine to get to the mountain summit, you will have 2 boss areas accessible, and you will have to defeat both in any order in order to get to the final area.
i think i will draw up the code and the lookup table for each screen on another day.