Java-Gaming.org    
Featured games (81)
games approved by the League of Dukes
Games in Showcase (495)
Games in Android Showcase (114)
games submitted by our members
Games in WIP (563)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  How to simulate the limits of atari games development limits  (Read 1947 times)
0 Members and 1 Guest are viewing this topic.
Offline wessles

JGO Wizard


Medals: 66
Projects: 4
Exp: 3 years


Profile picture isn't relevant.


« Posted 2013-07-19 16:12:18 »

So, I got an idea. Anyone can make a pac-man clone. They are easy. But then I saw a video here. They explain that at the time they had a limited amount of memory to work with. They had to fit an arcade game on a home console cartridge. So I thought. Some people find the 4k hard. What if someone tried to make a game on the limits that atari cartridges had at the time? I think it would be a cool challenge, assuming it is possible... Granted, it's probably harder to do since you have to limit the graphics as well as processing. I want to try this though. If it is possible, how do I do it?

EDIT:
Also, what were they limited to specifically? Like, how much ram? How many megabytes?
ANOTHER EDIT:
After some googling, I found this document: http://nocash.emubase.de/2k6specs.htm
It explains that atari was:
CPU: 8 bit 1.19MHz
Ram: 128 Bytes
Resolution: 160x192
Pallette: 128 colors (NTSC), 104 colors (PAL), 8 colors (SECAM)

I have no idea what halve of these things mean, but I get the ram. So I could do some benchmarking to see if java alone takes up >=128. If so, this project is impossible. 160x192 will be an easy thing to do. Just scale down the graphics. As for the cpu, I never got what MHz means. So I googled it and found it is the number of cycles a proccesser does in a second. so it does 1,190,000 cycles in a second. Wow, for the 80's. I expected more 780,000-ish. The pallette, I have no idea what NTSC, PAL, or SECAM means. I googled, and saw that NTSC is just a television used a lot. So I can assume that the rest are too. So just to list off, to meet the challenge, the game must:
- Be a game
- Have 8-128 Colors
- Be 160x192
- Take up 128 bytes of ram

(I would have the megahertz thing, but that would mean I need a system with that many megahertz...)
Well, benchmark time!

Offline Troncoso

JGO Coder


Medals: 20



« Reply #1 - Posted 2013-07-19 16:15:50 »

Well....you use less memory?
Offline wessles

JGO Wizard


Medals: 66
Projects: 4
Exp: 3 years


Profile picture isn't relevant.


« Reply #2 - Posted 2013-07-19 16:17:56 »

Well, obviously. But also, you have to limit the processing power and your graphical use. I want to know how much I will have to if at all.

Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Online Jimmt
« League of Dukes »

JGO Kernel


Medals: 131
Projects: 4
Exp: 3 years



« Reply #3 - Posted 2013-07-19 16:28:39 »

All of the 4k games are so simple that limiting the graphics/processing wouldn't do anything.
Offline wessles

JGO Wizard


Medals: 66
Projects: 4
Exp: 3 years


Profile picture isn't relevant.


« Reply #4 - Posted 2013-07-19 16:32:19 »

Okay. So I should just look up the storage on those cartridges? And also, I am limiting graphics + proccessing not to use less storage, but to simulate how it would feel to have so little processing and graphics power to work with at the time!

Offline wessles

JGO Wizard


Medals: 66
Projects: 4
Exp: 3 years


Profile picture isn't relevant.


« Reply #5 - Posted 2013-07-19 17:07:55 »

I put up some qualifications at the post. Seems do-able...  persecutioncomplex

Online Jimmt
« League of Dukes »

JGO Kernel


Medals: 131
Projects: 4
Exp: 3 years



« Reply #6 - Posted 2013-07-19 17:20:06 »

How are you planning to pull this off, have everyone download an atari emulator? Then how would you get the JVM on there?
Offline wessles

JGO Wizard


Medals: 66
Projects: 4
Exp: 3 years


Profile picture isn't relevant.


« Reply #7 - Posted 2013-07-19 17:27:18 »

No. I want to see just how little power I could use in the simplest of games.
Although they should make an atari emulator! I bet I am the first to think of that!
Just think. A game that will take up so little space, and memory. It is a fun thing to think of, and even try! If java alone takes up too much, however, I will just subtract that amount from the ram I take in the end product!

Offline Cero
« Reply #8 - Posted 2013-07-19 19:48:36 »

Do watch this:
<a href="http://www.youtube.com/v/aNyebnxV9R8?version=3&amp;hl=en_US&amp;start=" target="_blank">http://www.youtube.com/v/aNyebnxV9R8?version=3&amp;hl=en_US&amp;start=</a>

Its kinda hard with java to do, because of the overhead. You may as well use some lower level language

obviously you have the 4k games mindset right now, so if you have never done one, do that !

Offline wessles

JGO Wizard


Medals: 66
Projects: 4
Exp: 3 years


Profile picture isn't relevant.


« Reply #9 - Posted 2013-07-19 19:50:59 »

What is "Lower level?"

Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline Roquen
« Reply #10 - Posted 2013-07-19 19:51:43 »

1  
2  
3  
4  
final public class Nothing
{
   Nothing[] foo = new Nothing[15]
}


Opps.  I have to start optimizing for space...I consumed all of the memory.  Oh wait!  It doesn't get any smaller than that.
Offline matheus23

JGO Kernel


Medals: 107
Projects: 3


You think about my Avatar right now!


« Reply #11 - Posted 2013-07-19 21:02:37 »

What is "Lower level?"

If you're aiming at 128 bytes of RAM (which I'm unsure whether that really was the case in the atari... that would mean you almost couldn't write any code, since code will take up 128 bytes quickly...)

Anyways. It's pretty much impossible to do in java, but why not make it a little challenge with a little bit of learning and understanding of how the pc works?

Maybe overkill, maybe not your level, but you could try to write a little atari CPU simulator and write a little bit of code in assembler. That's what they did back then.

See my:
    My development Blog:     | Or look at my RPG | Or simply my coding
http://matheusdev.tumblr.comRuins of Revenge  |      On Github
Offline wessles

JGO Wizard


Medals: 66
Projects: 4
Exp: 3 years


Profile picture isn't relevant.


« Reply #12 - Posted 2013-07-19 23:03:05 »

You misses that I said I would subtract what jvm took up from my final ram usage. So, I could write code. Just can't find software to measure ram. WAIT! Ctrl Alt Delete solves everything! (Task manager). Granted, my measurements are likely completely off, but it will still be a fun challenge!

Offline HeroesGraveDev

JGO Kernel


Medals: 251
Projects: 11
Exp: 2 years


┬─┬ノ(ಠ_ಠノ)(╯°□°)╯︵ ┻━┻


« Reply #13 - Posted 2013-07-20 00:14:22 »

Better to use JVisualVM than task manager.

(Note that I'm on holiday and thought I'd just drop in. Any responses will not be heard until I get back)

Offline Agro
« Reply #14 - Posted 2013-07-20 00:16:01 »

Why don't you just write an emulator 8D

Offline wessles

JGO Wizard


Medals: 66
Projects: 4
Exp: 3 years


Profile picture isn't relevant.


« Reply #15 - Posted 2013-07-20 00:20:09 »

@Agro : Arent those really, really, really, really, really hard to make?
@HeroGraveDev : Thanks! I'll try that.

Offline wessles

JGO Wizard


Medals: 66
Projects: 4
Exp: 3 years


Profile picture isn't relevant.


« Reply #16 - Posted 2013-07-20 00:36:52 »

Oh man. This is great! :
A simple code like this:
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
package wesls.limited.wml;

public class Main implements Runnable {
   public static void main(String[] args) {
      new Main();
   }
   
   public Main() {
      new Thread(this).start();
   }

   public void run() {

Horrible, horrible game loop. Kids, read this.
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
      while (1 != 0) {
         System.out.println("I am limited!");
         try {
            Thread.sleep(10);
         } catch (InterruptedException e) {
            e.printStackTrace();
         }
      }
   }
}


Only took up 8,000 -11,000 K Memory!
Assuming K means Kilobytes, java alone at its simplest loop uses
8,000,000 - 11,000,000 Bytes of ram. This will take no time at all! I only am at a 7,999,872 - 10,999,872 byte margin of error!
If you didn't catch the sarcasm, I think that I need to switch to c++ or something for this... Oh the dreaded c++ (for me anyways...).

I'm worried I'll fall in love with c++, and never go back to java.

EDIT:
So far, c++ is very mean! Come on! I just got it to work, and there is a huge learning curve! I know the syntax and all, just not how to make something appear on a screen. GER!

Offline relminator
« Reply #17 - Posted 2013-07-20 01:16:39 »

I have not coded in an atari but I have made console stuff (gba and ds).  Even c++( the stdib stuff) is considered wastefull.

You cannot really compare how you code on the pc and on a console.  Consoles usually have dedicated hardware for gfx, sound, etc that you can directly manipulate through direct registry writes.  They also have vrams you could directly manipulate ( so the ram part in the console is not your limit ) where you store your runtime gfx.

The cartridges can also have extra memory for storage.

Case in point. The ds has only 4mb for data and storage with 256 kb( forgot if it's 512 ) of vram for all your tiles, 3d and bg, but you can write data on that vram at runtime from nitrofs(ds file system). You cant do that on the pc with modern os.  You'd need to use a HAL.

If you want to code in retro consoles, learn and use what most people use.  As they say, "When in Rome...".
Offline wessles

JGO Wizard


Medals: 66
Projects: 4
Exp: 3 years


Profile picture isn't relevant.


« Reply #18 - Posted 2013-07-20 01:28:05 »

Okay,  Grin. Now I can get back to java. Home sweet java. That is rewarding. Thanks for stopping me from destroying my computer out of rage. CASE CLOSED!

Offline matheus23

JGO Kernel


Medals: 107
Projects: 3


You think about my Avatar right now!


« Reply #19 - Posted 2013-07-20 10:11:55 »

Okay,  Grin. Now I can get back to java. Home sweet java. That is rewarding. Thanks for stopping me from destroying my computer out of rage. CASE CLOSED!

Me is hugely recommending trying out assembler. Will be fun, I said! Wink

You'll understand computers much better, and you'll understand what a 8 bit 1,19 MHz CPU is and means Smiley

See my:
    My development Blog:     | Or look at my RPG | Or simply my coding
http://matheusdev.tumblr.comRuins of Revenge  |      On Github
Offline Oskuro

JGO Knight


Medals: 39
Exp: 6 years


Coding in Style


« Reply #20 - Posted 2013-07-20 16:17:51 »

I work developing embedded software, and, since development is done on more powerful PCs, we have to enforce memory/data size limitations on our own, so I'd say it isn't a bad exercise to learn how much you can do with very little.

To get as close as possible without needing to resort to lower level shenanigans, you could always try and implement a sort of memory and data pool infrastructure, similar to how thread pools are handled.

Just define the size limits of said pools, and have your program request all memory from them, rather than instantiate them directly.

A simple example would be to extend an storage class, for example a List, to include a byte capacity counter, so you're limited on the amount of data stored into memory. I've used something similar myself.

Probably there are smarter (and harder) implementations out there.

Offline wessles

JGO Wizard


Medals: 66
Projects: 4
Exp: 3 years


Profile picture isn't relevant.


« Reply #21 - Posted 2013-07-20 16:48:24 »

Okay,  Grin. Now I can get back to java. Home sweet java. That is rewarding. Thanks for stopping me from destroying my computer out of rage. CASE CLOSED!

Me is hugely recommending trying out assembler. Will be fun, I said! Wink

You'll understand computers much better, and you'll understand what a 8 bit 1,19 MHz CPU is and means Smiley
I googled it, and found nothing. What is it?

Offline Troncoso

JGO Coder


Medals: 20



« Reply #22 - Posted 2013-07-20 19:01:50 »

An Assembler is what creates the object files when compiling source code. He might mean assembly, which is machine language.
Offline Sammidysam
« Reply #23 - Posted 2013-07-20 22:06:08 »

I agree that Assembly is the best way to go here.  You'll learn a ton.  You could also look into Raspberry Pi which is weaker.  Below are some links.

http://yasm.tortall.net/
http://www.nasm.us/
https://github.com/languages/Assembly
http://en.wikipedia.org/wiki/Assembly_language

Also, what's the huge problem with C++ and making something appear on the screen?  Do you mean making a GUI is tough?  Or do you mean that the console is closing because you're not running from the command line and you don't call system("pause");?  I have no trouble with C++ so I'm confused what's the huge problem that makes you want to destroy your computer.  Also, if C++ makes you want to destroy your computer, then Assembly is going to have your computer in pieces within minutes.

Also, what's so bad about if you worked with C++ and started to like it the most?  You have no obligation to any language.  I've worked with C and C++ (among many other languages) after Java, and Java is still my favorite by a lot.
Offline wessles

JGO Wizard


Medals: 66
Projects: 4
Exp: 3 years


Profile picture isn't relevant.


« Reply #24 - Posted 2013-07-20 22:12:05 »

Opengl. I recall a quote from a book I read on it:
"The only reason that every programmer doesn't find out how to use opengl easily, is because the masters of it won't teach for free, and initializing is difficult..."
Not to mention that every tutorial I see uses a different IDE. Also, it's been a bit. But I remember hearing that java is productive, and c++ is effective. IDK. Every time I try c++ I fail, since I NEED opengl. Why can't it be as easy as lwjgl?!

Also, what's so bad about if you worked with C++ and started to like it the most?  You have no obligation to any language.

That was a joke. Relax. I just find java to c++ difficult.

Offline Sammidysam
« Reply #25 - Posted 2013-07-20 22:21:30 »

Ah, yes, OpenGL with C/C++ can be kind of tricky.  Below are some more links.

http://www.libsdl.org/
http://wiki.libsdl.org/moin.fcg/Tutorials
https://github.com/LWJGL/lwjgl - so that you can read the LWJGL source code and read what it does
http://freeglut.sourceforge.net/
http://www.opengl.org/resources/libraries/glut/

Even though developing for Windows is tough, I have managed to get an OpenGL 3D First-Person camera without head turning on Windows (haven't ever grabbed the source from my Windows drive onto Linux) because I couldn't find a good tutorial for the trigonometry set up.  If need be, I could grab the source code and send it your way.  I suggest you start with GLUT, then maybe work your way to SDL.  GLUT allows for more pure OpenGL programming, similar to LWJGL.  Getting Code::Blocks would be best if you need an IDE (I do not like IDEs for the most part because they tend to keep the Makefile or build.xml used hidden), as it can install MinGW (good compiler) with it and you can click New > GLUT Project I think.  You might need to do some more tinkering, but I used Code::Blocks when I made my 3D First Person OpenGL thing with GLUT.
Offline wessles

JGO Wizard


Medals: 66
Projects: 4
Exp: 3 years


Profile picture isn't relevant.


« Reply #26 - Posted 2013-07-20 22:25:05 »

Wait. This is like me jumping straight into lwjgl... Behold! A library!
I'll read up on this.
Seems legit. Like libgdx, only less multiplatform hype.

Offline Sammidysam
« Reply #27 - Posted 2013-07-20 22:27:59 »

It says it is cross platform, though. persecutioncomplex

Good luck.  I can not offer any help with it, however, as I've never worked with it.
Offline relminator
« Reply #28 - Posted 2013-07-21 01:44:24 »

For cross platform lwjgl-like opengl context manager, I recommend GLFW.  GLUT is not updated anymore.

As for ASM, its good to learn those but compilers these days tend to generate very optimized code that would make it hard for you to beat it speedwise.

Take this as an example:

www.pouet.net/prod.php?which=24821

Granted that's a 256byte prod so I was using some esoteric coding tricks but you'd get the idea.  Winxp below only.  Or dosbox on w7 and w8.
Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

Dwinin (29 views)
2014-09-12 09:08:26

Norakomi (57 views)
2014-09-10 13:57:51

TehJavaDev (79 views)
2014-09-10 06:39:09

Tekkerue (39 views)
2014-09-09 02:24:56

mitcheeb (58 views)
2014-09-08 06:06:29

BurntPizza (45 views)
2014-09-07 01:13:42

Longarmx (30 views)
2014-09-07 01:12:14

Longarmx (35 views)
2014-09-07 01:11:22

Longarmx (36 views)
2014-09-07 01:10:19

mitcheeb (40 views)
2014-09-04 23:08:59
List of Learning Resources
by Longor1996
2014-08-16 10:40:00

List of Learning Resources
by SilverTiger
2014-08-05 19:33:27

Resources for WIP games
by CogWheelz
2014-08-01 16:20:17

Resources for WIP games
by CogWheelz
2014-08-01 16:19:50

List of Learning Resources
by SilverTiger
2014-07-31 16:29:50

List of Learning Resources
by SilverTiger
2014-07-31 16:26:06

List of Learning Resources
by SilverTiger
2014-07-31 11:54:12

HotSpot Options
by dleskov
2014-07-08 01:59:08
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!