Jump to content

eugenetswong

New Members
  • Posts

    46
  • Joined

  • Last visited

Posts posted by eugenetswong

  1. I can't seem to stop thinking about this. If you all could look over the following thoughts and notes to confirm my learning, then I would appreciate it.

     

    • He uses Delta Delta Z, Delta Z, & Z, to represent acceleration, speed, and position. He is using layman's terms to briefly talk about Calculus.
    • To calculate Y on the screen, we can let our eyeballs be a distance of 1 from the bottom of the screen, and Z_Dist from the object. We can divide the Y in world by the Z in the world, and then add half of our screen resolution to get the Y pixel.

    I'm still having a difficult time understanding how he calculates 640 or 639, when he puts an object at the right side of his field of view on his 640×480 screen. He said this.

    Quote

    x_screen=640

    fov_angle=60

    y_world=sin(60/2)

    z_world=(60/2)

    x_resolution/2=320

    scaling=?

    x_screen = (y_world*scaling)/z_world + (x_resolution/2)

    640 = (sin(30)*scaling/cos(30)) + 320

    320 = tan(30)*scaling 320/tan(30) = scaling

     

    In generic terms: scaling = (x_resolution/2) / tan(fov_angle/2) We've replaced a/2 by 30 (half of 60 degrees), recognized that sin/cos = tan, and voila! We should be able to test this by placing an object at the right edge of the field-of-view, plugging these values into the original projection equation, and ensuring that the X value winds up as 640. For example, an (x, z) point at (20, 34.64) will wind up at X=640 because 20 is 40*sin(30) and 34.64 is 40*cos(30).

    I should be able to do this, because his formula is hardware independent, and doesn't require movement to use the math.

     

    I did this.

    20/34.64=0.5773672055

    Tan(30)=0.5773502692

     

    Is he rounding off to the 4th decimal place?

  2. 7 hours ago, Yaron Nir said:

    You can construct a player from 2 HW sprites with 3rd color

    use the same method to create one more competitor 

    OR use software sprites where you blit those on screen (maybe with different color to differentiate competitors)

     

    if your game is racing one more opponent then use HW sprites

    if your game has more opponents then use software sprites 

    I realize that we can use sprites for other players, but I don't see how a sprite or PM graphic can be used in constructing part of a road. Maybe assembly must be used to draw during the horizontal refreshing.

  3. 12 hours ago, popmilo said:

    Here  is a link to a holy Bible of how to make pseudo 3d racer :

    http://www.extentofthejam.com/pseudo/

     

    And one of nice follow-ups with code:

    https://codeincomplete.com/posts/javascript-racer/

     

     

    Okay, so I've read through it, and had such difficulty understanding the terminology, that I started skimming at about 3/4 of the way down. There is so much terminology, that I don't think that programmers, who are new to game programming can understand it.

     

    ###

     

    Atari sprites are narrow. How would they be used in road rendering/construction?

  4. Do you have any suggestions on what needs to be done for driving games like "Enduro"?

     

    1) The curves in the road seem reasonably accurate to real life, and I expected that I would need trigonometry. I don't know, though. I read somewhere that it is good to use tables, instead of math. Since I plan on doing that, should I just go all the way, and eyeball the shape of each bend in the road? That doesn't seem right, according to my intuition.

     

    2) I see that there is a great book on how develop an adventure game, but what about a driving game? Perhaps there is a magazine article? Even if you don't remember the name of the article, perhaps the article was in "Compute"?

     

    3) I think that Enduro on the Atari 400 would be wise to use mixed graphics modes and horizontal scrolling; graphics 9 for the background mountains.

    • Like 1
  5. 8 hours ago, dmsc said:

    Hi!

    First, make sure you are on NTSC and not PAL:

    image.thumb.png.a64d6d055e018e54b328e050daf10fa3.png

     

    Then, on Display Settings, select "Video artifacts":

    image.thumb.png.11e118e96a6b4f75a08b233c3bcd8ee5.png

     

    And then yuo have it:

    image.thumb.png.89e2a8bca6a6442310524a2f3a6c79da.png

     

    Have Fun!

     

    You did it! Thank you so much. :)

     

    Unfortunately, :( I can't load a saved state in NTSC mode. The error is "double free or corruption".

     

    eugene@eugene-Aspire-5100:~$ atari800 -state .atari/Sessions/Blank
    Using Atari800 config file: /home/eugene/.atari800.cfg
    Created by Atari 800 Emulator, Version 4.2.0
    
    Video Mode: 588x448x32 windowed without vsync
    Video Mode: 336x240x32 windowed without vsync
    *** Error in `atari800': double free or corruption (!prev): 0x09b31bd0 ***
    ======= Backtrace: =========
    /lib/i386-linux-gnu/libc.so.6(+0x67377)[0xb7ca0377]
    /lib/i386-linux-gnu/libc.so.6(+0x6d2f7)[0xb7ca62f7]
    /lib/i386-linux-gnu/libc.so.6(+0x6dc31)[0xb7ca6c31]
    /usr/lib/i386-linux-gnu/libX11.so.6(XkbFreeClientMap+0xd1)[0xb7a0a411]
    /usr/lib/i386-linux-gnu/libX11.so.6(XkbFreeKeyboard+0xf9)[0xb7a0cd29]
    /usr/lib/i386-linux-gnu/libX11.so.6(+0x8cef2)[0xb79feef2]
    /usr/lib/i386-linux-gnu/libX11.so.6(_XFreeDisplayStructure+0x1e3)[0xb7998193]
    /usr/lib/i386-linux-gnu/libX11.so.6(XCloseDisplay+0xd8)[0xb79852e8]
    /usr/lib/i386-linux-gnu/libSDL-1.2.so.0(+0x3eab7)[0xb7e2dab7]
    /usr/lib/i386-linux-gnu/libSDL-1.2.so.0(SDL_VideoQuit+0x59)[0xb7e1f579]
    /usr/lib/i386-linux-gnu/libSDL-1.2.so.0(SDL_QuitSubSystem+0x6d)[0xb7df639d]
    /usr/lib/i386-linux-gnu/libSDL-1.2.so.0(SDL_Quit+0x19)[0xb7df6459]
    /usr/lib/i386-linux-gnu/libSDL-1.2.so.0(+0x7931)[0xb7df6931]
    [0xb7f50d00]
    atari800[0x807906a]
    atari800[0x8078587]
    atari800[0x80755d0]
    atari800[0x80552f5]
    atari800[0x8055341]
    atari800[0x80871ea]
    atari800[0x805453c]                                                             
    atari800(main+0x1a)[0x804b49a]                                                  
    /lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xf7)[0xb7c51637]               
    atari800[0x804b512]                                                             
    ======= Memory map: ========                                                    
    08048000-080f4000 r-xp 00000000 08:01 265265     /usr/local/bin/atari800        
    080f4000-080f5000 r--p 000ab000 08:01 265265     /usr/local/bin/atari800        
    080f5000-080ff000 rw-p 000ac000 08:01 265265     /usr/local/bin/atari800
    080ff000-082b1000 rw-p 00000000 00:00 0 
    09aee000-09b87000 rw-p 00000000 00:00 0          [heap]
    b6b00000-b6b21000 rw-p 00000000 00:00 0 
    b6b21000-b6c00000 ---p 00000000 00:00 0 
    b6ce7000-b6cf9000 r-xp 00000000 08:01 2752707    /usr/lib/i386-linux-gnu/libdrm.so.2.4.0
    b6cf9000-b6cfa000 ---p 00012000 08:01 2752707    /usr/lib/i386-linux-gnu/libdrm.so.2.4.0
    b6cfa000-b6cfb000 r--p 00012000 08:01 2752707    /usr/lib/i386-linux-gnu/libdrm.so.2.4.0
    b6cfb000-b6cfc000 rw-p 00013000 08:01 2752707    /usr/lib/i386-linux-gnu/libdrm.so.2.4.0
    b6cfc000-b6d01000 r-xp 00000000 08:01 2757816    /usr/lib/i386-linux-gnu/libXxf86vm.so.1.0.0
    b6d01000-b6d02000 r--p 00004000 08:01 2757816    /usr/lib/i386-linux-gnu/libXxf86vm.so.1.0.0
    b6d02000-b6d03000 rw-p 00005000 08:01 2757816    /usr/lib/i386-linux-gnu/libXxf86vm.so.1.0.0
    b6d03000-b6d1b000 r-xp 00000000 08:01 2759149    /usr/lib/i386-linux-gnu/libxcb-glx.so.0.0.0
    b6d1b000-b6d1c000 ---p 00018000 08:01 2759149    /usr/lib/i386-linux-gnu/libxcb-glx.so.0.0.0
    b6d1c000-b6d1d000 r--p 00018000 08:01 2759149    /usr/lib/i386-linux-gnu/libxcb-glx.so.0.0.0
    b6d1d000-b6d1e000 rw-p 00019000 08:01 2759149    /usr/lib/i386-linux-gnu/libxcb-glx.so.0.0.0
    b6d1e000-b6d88000 r-xp 00000000 08:01 2753070    /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0
    b6d88000-b6d8a000 r--p 00069000 08:01 2753070    /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0
    b6d8a000-b6d8f000 rwxp 0006b000 08:01 2753070    /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0
    b6dea000-b6dee000 r-xp 00000000 08:01 2759145    /usr/lib/i386-linux-gnu/libxcb-dri2.so.0.0.0
    b6dee000-b6def000 r--p 00003000 08:01 2759145    /usr/lib/i386-linux-gnu/libxcb-dri2.so.0.0.0
    b6def000-b6df0000 rw-p 00004000 08:01 2759145    /usr/lib/i386-linux-gnu/libxcb-dri2.so.0.0.0
    b6df0000-b6df1000 r-xp 00000000 08:01 2753953    /usr/lib/i386-linux-gnu/libX11-xcb.so.1.0.0
    b6df1000-b6df2000 r--p 00000000 08:01 2753953    /usr/lib/i386-linux-gnu/libX11-xcb.so.1.0.0
    b6df2000-b6df3000 rw-p 00001000 08:01 2753953    /usr/lib/i386-linux-gnu/libX11-xcb.so.1.0.0
    b6df3000-b6e07000 r-xp 00000000 08:01 2755587    /usr/lib/i386-linux-gnu/libglapi.so.0.0.0
    b6e07000-b6e08000 ---p 00014000 08:01 2755587    /usr/lib/i386-linux-gnu/libglapi.so.0.0.0
    b6e08000-b6e0a000 r--p 00014000 08:01 2755587    /usr/lib/i386-linux-gnu/libglapi.so.0.0.0
    b6e0a000-b6e10000 rwxp 00016000 08:01 2755587    /usr/lib/i386-linux-gnu/libglapi.so.0.0.0
    b6e10000-b6e11000 rwxp 00000000 00:00 0 
    b6e11000-b6e37000 r-xp 00000000 08:01 2229703    /lib/i386-linux-gnu/libexpat.so.1.6.0
    b6e37000-b6e38000 ---p 00026000 08:01 2229703    /lib/i386-linux-gnu/libexpat.so.1.6.0
    b6e38000-b6e3a000 r--p 00026000 08:01 2229703    /lib/i386-linux-gnu/libexpat.so.1.6.0
    b6e3a000-b6e3b000 rw-p 00028000 08:01 2229703    /lib/i386-linux-gnu/libexpat.so.1.6.0
    b6e5b000-b6e60000 r-xp 00000000 08:01 2757782    /usr/lib/i386-linux-gnu/libXfixes.so.3.1.0
    b6e60000-b6e61000 r--p 00004000 08:01 2757782    /usr/lib/i386-linux-gnu/libXfixes.so.3.1.0
    b6e61000-b6e62000 rw-p 00005000 08:01 2757782    /usr/lib/i386-linux-gnu/libXfixes.so.3.1.0
    b6e62000-b6e6c000 r-xp 00000000 08:01 2757800    /usr/lib/i386-linux-gnu/libXrender.so.1.3.0
    b6e6c000-b6e6d000 r--p 00009000 08:01 2757800    /usr/lib/i386-linux-gnu/libXrender.so.1.3.0
    b6e6d000-b6e6e000 rw-p 0000a000 08:01 2757800    /usr/lib/i386-linux-gnu/libXrender.so.1.3.0
    b6e6e000-b6e78000 r-xp 00000000 08:01 2756324    /usr/lib/i386-linux-gnu/libXcursor.so.1.0.2
    b6e78000-b6e79000 r--p 00009000 08:01 2756324    /usr/lib/i386-linux-gnu/libXcursor.so.1.0.2
    b6e79000-b6e7a000 rw-p 0000a000 08:01 2756324    /usr/lib/i386-linux-gnu/libXcursor.so.1.0.2
    b6e7a000-b6fac000 r--p 00199000 08:01 2752616    /usr/lib/locale/locale-archive
    b6fac000-b71ac000 r--p 00000000 08:01 2752616    /usr/lib/locale/locale-archive
    b71ac000-b71b0000 rw-p 00000000 00:00 0 
    b71b0000-b71da000 r-xp 00000000 08:01 2759049    /usr/lib/i386-linux-gnu/libvorbis.so.0.4.8
    b71da000-b71db000 r--p 00029000 08:01 2759049    /usr/lib/i386-linux-gnu/libvorbis.so.0.4.8
    b71db000-b71dc000 rw-p 0002a000 08:01 2759049    /usr/lib/i386-linux-gnu/libvorbis.so.0.4.8
    b71dc000-b71e3000 r-xp 00000000 08:01 2758653    /usr/lib/i386-linux-gnu/libogg.so.0.8.2
    b71e3000-b71e4000 r--p 00006000 08:01 2758653    /usr/lib/i386-linux-gnu/libogg.so.0.8.2
    b71e4000-b71e5000 rw-p 00007000 08:01 2758653    /usr/lib/i386-linux-gnu/libogg.so.0.8.2
    b71e5000-b71f9000 r-xp 00000000 08:01 2229746    /lib/i386-linux-gnu/libgpg-error.so.0.17.0
    b71f9000-b71fa000 r--p 00013000 08:01 2229746    /lib/i386-linux-gnu/libgpg-error.so.0.17.0
    b71fa000-b71fb000 rw-p 00014000 08:01 2229746    /lib/i386-linux-gnu/libgpg-error.so.0.17.0
    b71fb000-b726e000 r-xp 00000000 08:01 2229827    /lib/i386-linux-gnu/libpcre.so.3.13.2
    b726e000-b726f000 r--p 00072000 08:01 2229827    /lib/i386-linux-gnu/libpcre.so.3.13.2
    b726f000-b7270000 rw-p 00073000 08:01 2229827    /lib/i386-linux-gnu/libpcre.so.3.13.2
    b7270000-b7271000 rw-p 00000000 00:00 0 
    b7271000-b7285000 r-xp 00000000 08:01 2240091    /lib/i386-linux-gnu/libresolv-2.23.so
    b7285000-b7286000 ---p 00014000 08:01 2240091    /lib/i386-linux-gnu/libresolv-2.23.so
    b7286000-b7287000 r--p 00014000 08:01 2240091    /lib/i386-linux-gnu/libresolv-2.23.so
    b7287000-b7288000 rw-p 00015000 08:01 2240091    /lib/i386-linux-gnu/libresolv-2.23.so
    b7288000-b728a000 rw-p 00000000 00:00 0 
    b728a000-b7304000 r-xp 00000000 08:01 2759051    /usr/lib/i386-linux-gnu/libvorbisenc.so.2.0.11
    b7304000-b7315000 r--p 00079000 08:01 2759051    /usr/lib/i386-linux-gnu/libvorbisenc.so.2.0.11
    b7315000-b7316000 rw-p 0008a000 08:01 2759051    /usr/lib/i386-linux-gnu/libvorbisenc.so.2.0.11
    b7316000-b7374000 r-xp 00000000 08:01 2757282    /usr/lib/i386-linux-gnu/libFLAC.so.8.3.0
    b7374000-b7375000 r--p 0005d000 08:01 2757282    /usr/lib/i386-linux-gnu/libFLAC.so.8.3.0
    b7375000-b7376000 rw-p 0005e000 08:01 2757282    /usr/lib/i386-linux-gnu/libFLAC.so.8.3.0
    b7376000-b738d000 r-xp 00000000 08:01 2240093    /lib/i386-linux-gnu/libnsl-2.23.so
    b738d000-b738e000 r--p 00016000 08:01 2240093    /lib/i386-linux-gnu/libnsl-2.23.so
    b738e000-b738f000 rw-p 00017000 08:01 2240093    /lib/i386-linux-gnu/libnsl-2.23.so
    b738f000-b7391000 rw-p 00000000 00:00 0 
    b7391000-b73ad000 r-xp 00000000 08:01 2229740    /lib/i386-linux-gnu/libgcc_s.so.1
    b73ad000-b73ae000 rw-p 0001b000 08:01 2229740    /lib/i386-linux-gnu/libgcc_s.so.1
    b73ae000-b73af000 rw-p 00000000 00:00 0 
    b73af000-b745a000 r-xp 00000000 08:01 2228395    /lib/i386-linux-gnu/libgcrypt.so.20.0.5
    b745a000-b745b000 r--p 000aa000 08:01 2228395    /lib/i386-linux-gnu/libgcrypt.so.20.0.5
    b745b000-b745e000 rw-p 000ab000 08:01 2228395    /lib/i386-linux-gnu/libgcrypt.so.20.0.5
    b745e000-b7482000 r-xp 00000000 08:01 2229769    /lib/i386-linux-gnu/liblzma.so.5.0.0
    b7482000-b7483000 r--p 00023000 08:01 2229769    /lib/i386-linux-gnu/liblzma.so.5.0.0
    b7483000-b7484000 rw-p 00024000 08:01 2229769    /lib/i386-linux-gnu/liblzma.so.5.0.0
    b7484000-b74a6000 r-xp 00000000 08:01 2229856    /lib/i386-linux-gnu/libselinux.so.1
    b74a6000-b74a7000 ---p 00022000 08:01 2229856    /lib/i386-linux-gnu/libselinux.so.1
    b74a7000-b74a8000 r--p 00022000 08:01 2229856    /lib/i386-linux-gnu/libselinux.so.1
    b74a8000-b74a9000 rw-p 00023000 08:01 2229856    /lib/i386-linux-gnu/libselinux.so.1
    b74a9000-b74aa000 rw-p 00000000 00:00 0 
    b74aa000-b74af000 r-xp 00000000 08:01 2757778    /usr/lib/i386-linux-gnu/libXdmcp.so.6.0.0
    b74af000-b74b0000 r--p 00004000 08:01 2757778    /usr/lib/i386-linux-gnu/libXdmcp.so.6.0.0
    b74b0000-b74b1000 rw-p 00005000 08:01 2757778    /usr/lib/i386-linux-gnu/libXdmcp.so.6.0.0
    b74b1000-b74b3000 r-xp 00000000 08:01 2757767    /usr/lib/i386-linux-gnu/libXau.so.6.0.0
    b74b3000-b74b4000 r--p 00001000 08:01 2757767    /usr/lib/i386-linux-gnu/libXau.so.6.0.0
    b74b4000-b74b5000 rw-p 00002000 08:01 2757767    /usr/lib/i386-linux-gnu/libXau.so.6.0.0
    b74b5000-b74b6000 rw-p 00000000 00:00 0 
    b74b6000-b74bb000 r-xp 00000000 08:01 2757871    /usr/lib/i386-linux-gnu/libasyncns.so.0.3.1
    b74bb000-b74bc000 r--p 00004000 08:01 2757871    /usr/lib/i386-linux-gnu/libasyncns.so.0.3.1
    b74bc000-b74bd000 rw-p 00005000 08:01 2757871    /usr/lib/i386-linux-gnu/libasyncns.so.0.3.1
    b74bd000-b752f000 r-xp 00000000 08:01 2757013    /usr/lib/i386-linux-gnu/libsndfile.so.1.0.25
    b752f000-b7531000 r--p 00071000 08:01 2757013    /usr/lib/i386-linux-gnu/libsndfile.so.1.0.25
    b7531000-b7532000 rw-p 00073000 08:01 2757013    /usr/lib/i386-linux-gnu/libsndfile.so.1.0.25
    b7532000-b7536000 rw-p 00000000 00:00 0 
    b7536000-b753e000 r-xp 00000000 08:01 2229884    /lib/i386-linux-gnu/libwrap.so.0.7.6
    b753e000-b753f000 r--p 00007000 08:01 2229884    /lib/i386-linux-gnu/libwrap.so.0.7.6
    b753f000-b7540000 rw-p 00008000 08:01 2229884    /lib/i386-linux-gnu/libwrap.so.0.7.6
    b7540000-b75cc000 r-xp 00000000 08:01 2230026    /lib/i386-linux-gnu/libsystemd.so.0.14.0
    b75cc000-b75ce000 r--p 0008b000 08:01 2230026    /lib/i386-linux-gnu/libsystemd.so.0.14.0
    b75ce000-b75cf000 rw-p 0008d000 08:01 2230026    /lib/i386-linux-gnu/libsystemd.so.0.14.0
    b75cf000-b75ef000 r-xp 00000000 08:01 2229870    /lib/i386-linux-gnu/libtinfo.so.5.9
    b75ef000-b75f1000 r--p 0001f000 08:01 2229870    /lib/i386-linux-gnu/libtinfo.so.5.9
    b75f1000-b75f2000 rw-p 00021000 08:01 2229870    /lib/i386-linux-gnu/libtinfo.so.5.9
    b75f2000-b75f3000 rw-p 00000000 00:00 0 
    b75f3000-b7625000 r-xp 00000000 08:01 2229782    /lib/i386-linux-gnu/libncursesw.so.5.9
    b7625000-b7626000 ---p 00032000 08:01 2229782    /lib/i386-linux-gnu/libncursesw.so.5.9
    b7626000-b7627000 r--p 00032000 08:01 2229782    /lib/i386-linux-gnu/libncursesw.so.5.9
    b7627000-b7628000 rw-p 00033000 08:01 2229782    /lib/i386-linux-gnu/libncursesw.so.5.9
    b7628000-b7716000 r-xp 00000000 08:01 2233400    /lib/i386-linux-gnu/libslang.so.2.3.0
    b7716000-b7717000 ---p 000ee000 08:01 2233400    /lib/i386-linux-gnu/libslang.so.2.3.0
    b7717000-b7719000 r--p 000ee000 08:01 2233400    /lib/i386-linux-gnu/libslang.so.2.3.0
    b7719000-b7728000 rw-p 000f0000 08:01 2233400    /lib/i386-linux-gnu/libslang.so.2.3.0
    b7728000-b7756000 rw-p 00000000 00:00 0 
    b7756000-b777a000 r-xp 00000000 08:01 2759179    /usr/lib/i386-linux-gnu/libxcb.so.1.1.0
    b777a000-b777b000 r--p 00023000 08:01 2759179    /usr/lib/i386-linux-gnu/libxcb.so.1.1.0
    b777b000-b777c000 rw-p 00024000 08:01 2759179    /usr/lib/i386-linux-gnu/libxcb.so.1.1.0
    b777c000-b77d4000 r-xp 00000000 08:01 2229899    /lib/i386-linux-gnu/libdbus-1.so.3.14.6
    b77d4000-b77d5000 r--p 00057000 08:01 2229899    /lib/i386-linux-gnu/libdbus-1.so.3.14.6
    b77d5000-b77d6000 rw-p 00058000 08:01 2229899    /lib/i386-linux-gnu/libdbus-1.so.3.14.6
    b77d6000-b77e0000 r-xp 00000000 08:01 2229761    /lib/i386-linux-gnu/libjson-c.so.2.0.0
    b77e0000-b77e1000 r--p 00009000 08:01 2229761    /lib/i386-linux-gnu/libjson-c.so.2.0.0
    b77e1000-b77e2000 rw-p 0000a000 08:01 2229761    /lib/i386-linux-gnu/libjson-c.so.2.0.0
    b77e2000-b77e3000 rw-p 00000000 00:00 0 
    b77e3000-b7869000 r-xp 00000000 08:01 2759069    /usr/lib/i386-linux-gnu/pulseaudio/libpulsecommon-8.0.so
    b7869000-b786a000 r--p 00085000 08:01 2759069    /usr/lib/i386-linux-gnu/pulseaudio/libpulsecommon-8.0.so
    b786a000-b786b000 rw-p 00086000 08:01 2759069    /usr/lib/i386-linux-gnu/pulseaudio/libpulsecommon-8.0.so
    b786b000-b7872000 r-xp 00000000 08:01 2228266    /lib/i386-linux-gnu/librt-2.23.so
    b7872000-b7873000 r--p 00006000 08:01 2228266    /lib/i386-linux-gnu/librt-2.23.so
    b7873000-b7874000 rw-p 00007000 08:01 2228266    /lib/i386-linux-gnu/librt-2.23.so
    b7874000-b788d000 r-xp 00000000 08:01 2229854    /lib/i386-linux-gnu/libpthread-2.23.so
    b788d000-b788e000 r--p 00018000 08:01 2229854    /lib/i386-linux-gnu/libpthread-2.23.so
    b788e000-b788f000 rw-p 00019000 08:01 2229854    /lib/i386-linux-gnu/libpthread-2.23.so
    b788f000-b7891000 rw-p 00000000 00:00 0 
    b7891000-b7959000 r-xp 00000000 08:01 2755417    /usr/lib/i386-linux-gnu/libcaca.so.0.99.19
    b7959000-b795a000 ---p 000c8000 08:01 2755417    /usr/lib/i386-linux-gnu/libcaca.so.0.99.19
    b795a000-b795b000 r--p 000c8000 08:01 2755417    /usr/lib/i386-linux-gnu/libcaca.so.0.99.19
    b795b000-b795c000 rw-p 000c9000 08:01 2755417    /usr/lib/i386-linux-gnu/libcaca.so.0.99.19
    b795c000-b796f000 r-xp 00000000 08:01 2757780    /usr/lib/i386-linux-gnu/libXext.so.6.4.0
    b796f000-b7970000 r--p 00012000 08:01 2757780    /usr/lib/i386-linux-gnu/libXext.so.6.4.0
    b7970000-b7971000 rw-p 00013000 08:01 2757780    /usr/lib/i386-linux-gnu/libXext.so.6.4.0
    b7971000-b7972000 rw-p 00000000 00:00 0 
    b7972000-b7ab8000 r-xp 00000000 08:01 2755195    /usr/lib/i386-linux-gnu/libX11.so.6.3.0
    b7ab8000-b7ab9000 ---p 00146000 08:01 2755195    /usr/lib/i386-linux-gnu/libX11.so.6.3.0
    b7ab9000-b7aba000 r--p 00146000 08:01 2755195    /usr/lib/i386-linux-gnu/libX11.so.6.3.0
    b7aba000-b7abc000 rw-p 00147000 08:01 2755195    /usr/lib/i386-linux-gnu/libX11.so.6.3.0
    b7abc000-b7abd000 rw-p 00000000 00:00 0 
    b7abd000-b7b14000 r-xp 00000000 08:01 2759068    /usr/lib/i386-linux-gnu/libpulse.so.0.19.0
    b7b14000-b7b15000 ---p 00057000 08:01 2759068    /usr/lib/i386-linux-gnu/libpulse.so.0.19.0
    b7b15000-b7b16000 r--p 00057000 08:01 2759068    /usr/lib/i386-linux-gnu/libpulse.so.0.19.0
    b7b16000-b7b17000 rw-p 00058000 08:01 2759068    /usr/lib/i386-linux-gnu/libpulse.so.0.19.0
    b7b17000-b7b1b000 r-xp 00000000 08:01 2753488    /usr/lib/i386-linux-gnu/libpulse-simple.so.0.1.0
    b7b1b000-b7b1c000 r--p 00003000 08:01 2753488    /usr/lib/i386-linux-gnu/libpulse-simple.so.0.1.0
    b7b1c000-b7b1d000 rw-p 00004000 08:01 2753488    /usr/lib/i386-linux-gnu/libpulse-simple.so.0.1.0
    b7b1d000-b7b20000 r-xp 00000000 08:01 2229736    /lib/i386-linux-gnu/libdl-2.23.so
    b7b20000-b7b21000 r--p 00002000 08:01 2229736    /lib/i386-linux-gnu/libdl-2.23.so
    b7b21000-b7b22000 rw-p 00003000 08:01 2229736    /lib/i386-linux-gnu/libdl-2.23.so
    b7b22000-b7c32000 r-xp 00000000 08:01 2757861    /usr/lib/i386-linux-gnu/libasound.so.2.0.0
    b7c32000-b7c33000 ---p 00110000 08:01 2757861    /usr/lib/i386-linux-gnu/libasound.so.2.0.0
    b7c33000-b7c37000 r--p 00110000 08:01 2757861    /usr/lib/i386-linux-gnu/libasound.so.2.0.0
    b7c37000-b7c38000 rw-p 00114000 08:01 2757861    /usr/lib/i386-linux-gnu/libasound.so.2.0.0
    b7c38000-b7c39000 rw-p 00000000 00:00 0 
    b7c39000-b7de9000 r-xp 00000000 08:01 2240098    /lib/i386-linux-gnu/libc-2.23.so
    b7de9000-b7deb000 r--p 001af000 08:01 2240098    /lib/i386-linux-gnu/libc-2.23.so
    b7deb000-b7dec000 rw-p 001b1000 08:01 2240098    /lib/i386-linux-gnu/libc-2.23.so
    b7dec000-b7def000 rw-p 00000000 00:00 0 
    b7def000-b7e64000 r-xp 00000000 08:01 2753813    /usr/lib/i386-linux-gnu/libSDL-1.2.so.0.11.4
    b7e64000-b7e65000 ---p 00075000 08:01 2753813    /usr/lib/i386-linux-gnu/libSDL-1.2.so.0.11.4
    b7e65000-b7e66000 r--p 00075000 08:01 2753813    /usr/lib/i386-linux-gnu/libSDL-1.2.so.0.11.4
    b7e66000-b7e67000 rw-p 00076000 08:01 2753813    /usr/lib/i386-linux-gnu/libSDL-1.2.so.0.11.4
    b7e67000-b7e91000 rw-p 00000000 00:00 0 
    b7e91000-b7eaa000 r-xp 00000000 08:01 2228402    /lib/i386-linux-gnu/libz.so.1.2.8
    b7eaa000-b7eab000 r--p 00018000 08:01 2228402    /lib/i386-linux-gnu/libz.so.1.2.8
    b7eab000-b7eac000 rw-p 00019000 08:01 2228402    /lib/i386-linux-gnu/libz.so.1.2.8
    b7eac000-b7ed5000 r-xp 00000000 08:01 2229678    /lib/i386-linux-gnu/libpng12.so.0.54.0
    b7ed5000-b7ed6000 r--p 00028000 08:01 2229678    /lib/i386-linux-gnu/libpng12.so.0.54.0
    b7ed6000-b7ed7000 rw-p 00029000 08:01 2229678    /lib/i386-linux-gnu/libpng12.so.0.54.0
    b7ed7000-b7f2a000 r-xp 00000000 08:01 2240101    /lib/i386-linux-gnu/libm-2.23.so
    b7f2a000-b7f2b000 r--p 00052000 08:01 2240101    /lib/i386-linux-gnu/libm-2.23.so
    b7f2b000-b7f2c000 rw-p 00053000 08:01 2240101    /lib/i386-linux-gnu/libm-2.23.so
    b7f2d000-b7f2e000 rw-p 00000000 00:00 0 
    b7f2e000-b7f30000 r-xp 00000000 08:01 2757776    /usr/lib/i386-linux-gnu/libXdamage.so.1.1.0
    b7f30000-b7f31000 r--p 00001000 08:01 2757776    /usr/lib/i386-linux-gnu/libXdamage.so.1.1.0
    b7f31000-b7f32000 rw-p 00002000 08:01 2757776    /usr/lib/i386-linux-gnu/libXdamage.so.1.1.0
    b7f32000-b7f33000 r-xp 00000000 08:01 2759192    /usr/lib/i386-linux-gnu/libxshmfence.so.1.0.0
    b7f33000-b7f34000 r--p 00000000 08:01 2759192    /usr/lib/i386-linux-gnu/libxshmfence.so.1.0.0
    b7f34000-b7f35000 rw-p 00001000 08:01 2759192    /usr/lib/i386-linux-gnu/libxshmfence.so.1.0.0
    b7f35000-b7f3a000 r-xp 00000000 08:01 2759171    /usr/lib/i386-linux-gnu/libxcb-sync.so.1.0.0
    b7f3a000-b7f3b000 ---p 00005000 08:01 2759171    /usr/lib/i386-linux-gnu/libxcb-sync.so.1.0.0
    b7f3b000-b7f3c000 r--p 00005000 08:01 2759171    /usr/lib/i386-linux-gnu/libxcb-sync.so.1.0.0
    b7f3c000-b7f3d000 rw-p 00006000 08:01 2759171    /usr/lib/i386-linux-gnu/libxcb-sync.so.1.0.0
    b7f3d000-b7f3f000 r-xp 00000000 08:01 2759157    /usr/lib/i386-linux-gnu/libxcb-present.so.0.0.0
    b7f3f000-b7f40000 r--p 00001000 08:01 2759157    /usr/lib/i386-linux-gnu/libxcb-present.so.0.0.0
    b7f40000-b7f41000 rw-p 00002000 08:01 2759157    /usr/lib/i386-linux-gnu/libxcb-present.so.0.0.0
    b7f41000-b7f43000 r-xp 00000000 08:01 2759147    /usr/lib/i386-linux-gnu/libxcb-dri3.so.0.0.0
    b7f43000-b7f44000 r--p 00001000 08:01 2759147    /usr/lib/i386-linux-gnu/libxcb-dri3.so.0.0.0
    b7f44000-b7f45000 rw-p 00002000 08:01 2759147    /usr/lib/i386-linux-gnu/libxcb-dri3.so.0.0.0Aborted (core dumped)

     

  6. 9 hours ago, zzip said:

    I don't have the UI in front of me,  but there are these command line options that will do the same thing:

    -ntsc-artif ntsc-full

     

    and the following will allow you to choose different artifacting colors, in case the default ones look wrong

     

    -artif <mode> Set artifacting mode 0-4 (0 = disable)

    -ntsc-artif ntsc-full didn't work. I double checked  for typos, but I still don't trust me. :D Thanks for your help. I appreciate all the effort. :)

     

    -artif worked okay, I think. I noticed the different colors, so I'm happy with them.

  7. 4 hours ago, zzip said:

    I don't have open in front of me,   but I think you have to select the "New NTSC Filter" (or whatever it's called) before it will allow you to set the NTSC artifacting mode.

    I don't see the word "new" under display settings. The only other mention of NTSC is "NTSC filter settings", which needs the NTSC filter to be on.

     

    Does this have anything to do with palette or default colours?

  8. On 2/10/2020 at 8:26 AM, zzip said:

    Atari800 definitely supports Artifacting.  But you have to enable it.   Turn on the NTSC filter, and select the type of artifacting you'd like (affects the colors produced by it)   IIRC,  in real life GTIA and CTIA chips produced different colors when artifacting, and atari800 tries to support both.

    I checked F1>Display Settings. For NTSC artifacting mode, it said, "N/A". I can't seem to adjust that.

     

    Do you have other suggestions?

  9. Thanks for all the help, everybody.

     

    Is there a way for me to confirm why the break key doesn't seem to work? When I start Atari800 without any state files, it still doesn't work.I checked .atari800.cfg and it seemed to not contain any significant settings.

  10. On 2/14/2020 at 8:00 AM, Preppie said:

    There's been some decent Atari tutorials posted on this channel lately:

     

    https://www.youtube.com/channel/UCmyydM9_kZHk49GXC4r-FKw

    I love that channel!!

     

    Unfortunately, he doesn't respond much. I think that he doesn't know how the notifications work. A couple of times, he seemed surprised that I asked a question.

     

    I think that on average, he has the best Atari YouTube channel.

     

    Just so that everybody knows, he has plans to make a video to teach us how to make our own Atari power supplies, which should be a lot of fun...even though I don't have any Atari hardware. I'll probably make a power supply in case I do get an Atari.

     

    ###

     

    Pixelmischief, I think that you won't need a tutor, but if you like what I freely offer, then send me money. :)

     

    I am intermediate on this system, so I'll give you an overview of what I picked up.

     

    Q&A

     

    1) Regarding numbers of colors and graphics modes: use as many as possible of each! The more colours you use, the more user friendly the game will be. The documentation, which I will show you, tells you how many colours each mode has access to, but they forget to remind you that you could combine graphics modes to get a variety of shapes and colours beyond 16. You can also have access to player missile graphics, which will give you an additional 4 [or is it more than 4?] colours.

     

    For example, I'd love to make a game, where I use shades of grey to portray a story scene between the action packed gaming. I might be able to do this in graphics 9 to convey the movement of somebody approaching me in a dim alley, because there are many shades of grey, but maybe use graphics 8 to animate him chatting up close. I could use player missile graphics to illustrate a glowing cigarette, moving eyes, and maybe a mouth.

     

    2) For a development environment, I suggest using a modern operating system and an emulator, but I don't have the experience to say either way. For the Atari800 emulator, I am able to save to and load from the H6 hard drive, which is the same as H1, but it allows the text file to be readable outside of the emulator, which comes in handy, when debugging, since modern text file readers can search and replace. This is especially helpful, when untangling goto-spaghetti.

     

     

     

    HINTS & TIPS

     

    1) If you are using Atari BASIC, then use line 0 to set up a few variables, including a fully contained for-loop, but at the end go to a high line number, like 32000, where you initialize and dimension all of your other variables. After that, go back to a line, like 1000 to begin the main loop; in here, include checks for flags, important changes, the joysticks, and keyboard [including function keys]. Some loops will be used the most, so put them closest to the beginning of the program, since Atari BASIC always checks the first line first, when finding the destination of a GOSUB or GOTO statement, and then goes to the next line, and so on.

     

     2) When you read magazines, copy any code of software that interests you. Debugging is a great way to learn about common errors, and great ideas. For example, when debugging the options screen of a program, I realized that the screen might appear to have no text there, but the truth is that there was something there. It was just invisible. The program needed invisible text there to be able to run a certain sub routine.

     

    3) When displaying text, you can join them with commas and semicolons. The semicolons help to align text into columns. This will save you from having to position the cursor.

     

    4) It is hard for me to remember all that Atari can do, and how to do it, so I created separate folders to store code samples for each graphics mode, plus folders just for games from magazines, and a MISC folder. I even have a folder just for utilities; most were obtained from free code listings from "Compute".

     

    5) To make your programs small, make use of DATA statements, and where possible, use ATASCII instead of machine language numbers. 

     

    6) When you need to create a loop to slow down the action and animation, consider giving Atari something to do, instead of getting Atari to just sit there.

     

    ###

     

    SUGGESTED READING

     

    There is a thread that lists stuff to read, but from my experience, I have found these extremely helpful.

     

    https://archive.org/stream/1986-04-compute-magazine/Compute_Issue_071_1986_Apr#page/n126/mode/2up

    Read that article, and let that be your first program. I think that most people here might find it too boring, but I think that it prepares you for articles and code snippets that you might like, and is useful for the development that you want to create.

     

    https://archive.org/stream/1986-04-compute-magazine/Compute_Issue_071_1986_Apr#page/n121/mode/2up

    I think that most will disagree with this recommendation, and I agree a little, but I found it satisfying, and it opens up opportunities to try machine language programs without understanding the tiny details. For me, I just wanted to see what Atari is capable of.

     

     

    https://www.atariarchives.org/agagd/

    This lists all the information that you need, with code snippets. I think that the forum should be able to answer any questions.

     

    https://www.atariarchives.org/mapping/

    This tells you what is where, and gives some fascinating examples. Did you know that you can make some text lines in graphics 0 appear upside down? This is great for card games.

     

    https://www.atariarchives.org/adventure/

    This gives you strategies to plan out how your text adventure game is going to work, if that is what you want.

     

     

     

    https://www.atarimagazines.com/rom/index/

    Start from the beginning, and enter any game/program that interests you. There are 2 4p games, and an educational game, that is worth trying.

     

    https://www.atarimagazines.com/compute/index/issuelist.php

    Take your pick of programs that interest you.

  11. I am using atari800 emulator for Linux. There are settings to adjust for NTSC. I looked around, and even if I could find it, I'm not convinced that I would know if it is free to download.

     

    Are you saying that NTSC comes free with Altirra?

     

    Edit: yeah, I noticed GR.1 & GR.2 colors; it's understandable that the resources were limited.

  12. Unfortunately, the artifacting doesn't seem to show up on my laptop. Maybe the laptop's screen doesn't artifact?

     

    It's too bad that the 1 luma does the back ground, while the other does the foreground. It would have been nice to get a bit more out of Atari, before resorting to PM graphics, DLs, and DL IRQs.

     

    I appreciate knowing all of this, though. I feel like I can finally move forward.

  13. On 2/2/2020 at 2:33 AM, Rybags said:

    Gr. 8 has 2 lumas of the 1 colour same as all the hires 320 modes.

     

    But alternatively there's artifacting as well as the fact that a single lone pixel or vertical line will be less bright than a double wide one.

    Artifacting works as the TV mistakes the luma waveform for the colour subcarrier on NTSC.  With PAL it's a different less useful effect since the pixel clock and colour clocks are different.

    The resultant colours will be different depending on what machine it's done on.  Generally the older machines give better results.

    1) Yeah, I was aware of NTSC vs. PAL. I spent a lot of time finding ways to make use of it the atari800 emulator. It seems that I need an NTSC ROM. Is this true?

     

    2) So, with 2 lumas, we can for example have white and grey foreground pixels and a black background? I have tried toying around with Atari BASIC's SETCOLOR and COLOR, but haven't been able to get any results. I haven't found any documentation on registers to POKE to either. Mind you, I might have seen it, but just misunderstood it.

     

    3) Everybody, thanks for your time!

     

    4) Is there a similar technique for GR.0?

  14. zzip thanks for clarifying.

     

    ######

    Guys, I think that I have encountered another problem.

     

    I can't seem to use the BREAK key consistently. If I type "L.<Enter>", then I can't stop the listing part way, as I used to be able to.

     

    Any thoughts?

    No matter what, thanks in advance.

  15. Thanks for answering!

     

    I'm disappointed, but not surprised that it is impossible to use BASIC to make more than 2 colours. The articles were written in a way where it was hard to get feedback from the audience on whether or not an idea was clearly expressed.

     

    Yeah, I'm aware of PM graphics and DLs, but I wanted to see what I could do with what little I had, so that I could confirm to myself, whether or not I understood.

     

    I thought that display interrupts were something that we could work on using POKE. Am I right?

     

    I'll have to look into screen kernels.

×
×
  • Create New...