Jump to content

vidak

Members
  • Posts

    499
  • Joined

  • Last visited

Posts posted by vidak

  1. Hello!


    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 vidak@riseup.net


    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


    SCORING SYSTEM


    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.

    • Like 2
  2. okay!

     

    If I have understood everyone's suggestions correctly, this is what I should change:

     

    - have an open contest between BASIC and Assembly games

    - create a limited run multicart with the top three games

    - have a six month timeframe

    - remove the fake label requirement

     

    If I have understood you all correctly, I'll go ahead and post this in the 2600 forum, with all the rules!

    • Like 3
  3. yo!

     

    i am not sure if you're concerned about copyright or intellectual property, but you don't have to base it on a fake label with exclusive property rights! you can find a label in the public domain if you want to.

     

    you can also /make/ your own fake label, if yiu want to.

     

    basing your game on the label of an existing game is also okay! i know there are many great VCS labels!

  4. ENTRY TO THE COMPETITION


    - A standard binary that is executable by the Stella Emulator.

    - 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 must be able to be assembled by the latest DASM

    - 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 vidak@riseup.net


    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


    SCORING SYSTEM


    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.
  5. Hello!

     

    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!

    • Like 1
  6. hey everyone.

     

    i have started a patreon.

     

    if you like this project and would like to see if completed, i invite you to donate $1 a month!

    every tiny little bit counts.

    https://www.patreon.com/dirtycommo

    i am very sheepish about doing this, because i do see it as a bit selfish, but i am choosing to ignore that aspect of this request. i am very close to having the next phase of this game finished, and any little bit of change helps!!

    sincerely, blair.

  7. 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.

    • Like 4
  8. Alrighty.

     

    I put a couple hours in today.

     

    Today I:

    • Changed the random number generation to 24 bits
    • Linked the random number generator to the environmental graphics indexes (generator creates FOUR 6-bit numbers which are stored in memory as indexes)
    • Linked the indexes to the environmental graphics pointers (i.e. a 6-bit index will randomly select one graphical shape out of 64)
    • Created the pointer indexes for the environmental graphics (created a table of 64 pointers)
    • Created all the debugging symbols (Numbers 00 to 63) to use to check to see if the random number generation is working
    • Checked the timing on the random number generation (Seems OK)
    • Created the Overworld Kernel Bank

    We are now very close to having a playable demo of the 256x256 overworld you can move around in.

     

    A couple things I have to check are:

    • Which taps should I use for the random generation? (E.g. $B4, etc)
    • Is the Overworld Vertical Blank Bank too big and/or taking too long to execute (in which case I will move code into the Overworld Overscan Bank, which is empty [!!!])
    • Will the subroutine I created which increments map coordinates when you walk off the side of the screen work? (Will it be twitchy?)

    I have not compiled and run my code, and I suspect it current DOES NOT work, but I am uploading it in any case.

    che_main.asm

    InitSystem.asm

    OverworldKernel.asm

    OverworldVB.asm

    • Like 1
  9. I'm actually thinking of doing some YouTube videos on how to learn 6502 assembly for making 2600 games.

     

    In my experience, I don't think 6502 assembly is that difficult.

     

    Most of the time you're just storing, loading, and branching. It's not that hard.

     

    Anyway some lectures/tutorials would easily help more people grasp the concepts.

    • Like 4
  10. 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
     2 [
     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
    19 
    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 :   ^
    24 
    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 same program in minimised form:

    ++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
    

    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.

    • Like 1
  11. Well what I mean is I could make a cart not unlike Warren Robinett's BASIC cartridge except you would have a much lower and more powerful control of the hardware while programming on the 2600. You would only need at least 8 buttons, as well, not counting text formatting keys.

    The premise of brainfuck is that you have a one-dimensional array of memory cells, that can each hold an 8-bit number.

     

    You may move left and right along the memory cell list, and you may decrement and increment the value in a memory cell. You may also write out the value of the memory cell to the console, and you may read in a value from the console. You may also set up loops, and nested loops, to iterate over sections of code.

     

    I believe this esoteric language is sufficiently simple enough to allow some limited programming natively on the Atari 2600 console, so you may write and execute programs in real time on your own 2600.

  12. I've done some googling, and it is possible. I also know you can do self modifying code - changing the code in RAM and /then/ executing it.

     

    I think the general idea is to point the program counter to the address locations in RAM.

     

    So you'd need to set RORG to somewhere between the beginning of RAM ($80) and the end of RAM, I think.

    • Like 1
×
×
  • Create New...