Jump to content

Allas

Members
  • Content Count

    1,102
  • Joined

  • Last visited

Posts posted by Allas


  1. Well I finished to scan the Quickcode manual. If anyone put the ATR image of Quickcode will be a great help.

    944657[/snapback]

     

    Thanks for the manual Allas. Has anyone come up with an ATR for this yet?

    979720[/snapback]

     

     

    I cant believe any atarian in the earth have the Quikcode manual, specially the assembler coders. Quickcode its the best library for Assembler. But, I know someone who should have it. Just, the owner manual :D

     

    That was 20 years ago...


  2. Just a quick question.  I'm trying to test an Atari 800 without a monitor to see if it works.  Will I get a power-up light or sound or anything when it is working?  I plugged it in and flipped the switch and I'm not getting any type of response.  Seems like bad news to me, but that's why I'm asking...

    979543[/snapback]

     

    Atari 800 have an internal speaker:

     

    With BASIC Cartridge installed you should capable of hear keyboard typing.

     

    If you havent BASIC Cartridge, the aplication memopad load, but this application dont make noise.


  3. Hi,

     

    Here's a reworked version - it spreads the sources over a few files to make things a little easier to focus on, there were 2 issues I picked up on:

     

    1) The screen memory was failing to allocate, but because of the 'extra' calculation, the resulting address returned was '0x0010'. This was because the program end (e.g. the BSS space) was around $8700 and the memory requested was around $2E0F ($1E00+$FFF+$10) from which the aligned screen block is 'cut'. By lowering the program's start address it becomes possible to allocate the memory.

     

    2) the corruption you were seeing was down to the delay in making the second screen using the dlist. The trick was to not destroy the 1st display list until the second one has been built, or at a minimum switch off the display.

     

    Other than that - looks promising - good luck

     

    Regards,

    Mark

     

    Command used to build the executable:

    cl65 --start-addr 0x1000 -Osir -t atari -o accion_c.xex accion_c.c support.c gamedata.c

     

    Optionally add the options "-m accion_c.map -Ln accion_c.lbl" for details useful for debugging.

    978613[/snapback]

     

     

    Thank you very much for the great help and effort. Really, now I have a better workspace memory and I had implemented more new code without conflict. After I finish the program I'll post in the forum.


  4. I had advanced far as I can in the programming without DL and screen conflict. I post my C program, I comment these lines:

     

    line 302 -> Data title screen (2K)

     

    lines 1119-1142 -> function mover()

     

    lines 1234 -> Second DL for game screen with GR.0 window

     

    Any group or lines that re-activate in the program, the DL fails; more lines added... crash is worst.

     

    This is a conversion of my Turbobasic program and I using this example game to get first experience in program CC65 (medium level graphic requirement). I have in the desk a better designed game project, but I need first learn to resolve the conlict memory problems in programming.

     

    I include in the ZIP the last XEX version. The program still have errors but is at 90%. Basically, when I get more order in memory usage and can finish fast.

     

    I appreciatte very much your critics about my faults in programming style. Dont worry about you say... please say all you can.

     

    I compiled with command:

     

    cl65 -t atari -Osir accion_c.c -o accion_c.xex

     

    [Attachment submit removed]

     

    P.D. Press START key about a 2 second for init game


  5. After TIA 2600 design, Jay splits the chip into 2 chips more advanced : GTIA (George TIA) and ANTIC. Maybe its not 100% from Jay Miner, but sure is from the CYAN team with Jay Miner as a leader.

     

    People think GTIA is after CTIA, but CTIA was created after GTIA in 1979 because GTIA wasnt ready for the 400 and 800 machines. Of course CTIA is a incomplete version of GTIA project, thats explain the empty spaces that just GTIA complete.

     

    Its a pity this history, because that means Atari never expands the power graphics from original plan in 1978. Well as we know Atari its a precious architecture, but costs a lot of money in compare with other machines.


  6. Too hard!! ... Its a disaventage to be a newbie, still in CC65. Well, I think I found the problem, its a memory problem, I reached the limits because the program uses some medium graphics blocks.

     

    It seems when compiler CC65 found an overflow of memory then use screen memory and then Display List zone to store aditional code.

     

    Now, im finding know how much free memory there is. Im thinking there is not a method because the memory are segmented in many work spaces.

     

    At my point of view there are 3 kinds of memory usage:

     

    - Reserved zones for memory screen, DLI, OS, etc.

    - Variables created for the main program.

    - Zone reserved for executable program CC65

     

    I believe someone with much practice in programming knows how much is the maximum amount of bytes that executable could countain for a 64Kb Machine.


  7. Ok, here is that picture I was looking for...  wow...

     

    More of this fun at..

     

    http://www.3drealms.com/caught/e301_3.html

    976906[/snapback]

     

    crazy!!! Beside that nice looking women. What the hell is in those hundreds of atari bottles in the back???

     

    :-)

     

    \twh

    976985[/snapback]

     

     

    Check this out as well:

     

    http://e3girls.com/display.cfm?type=company&query=47

     

    I think the Atari Water was when Infogrammes took over and relaunched the Atari logo...

    977012[/snapback]

     

     

    Yes, and launchs many sourvenirs like shirts, bags, etc

     

    http://e3girls.com/display.cfm?startrow=64...ompany&query=47


  8. The leader MULE project, wow!

     

    Playing around with Super Bomberman 2 got me thinking about the truly great multiplayer games. The best ones always allow for that extra edge. It's fun to outmaneuver your friends, but when you can really put the screws to them, you're on to something. A brilliant example, one of my personal favorites, is the computer game classic, M.U.L.E.

     

    MULE was the product of an Arkansas-based development team called Ozark Softscape. The team was comprised of Dan Bunten (project leader), Bill Bunten, Alan Watson, and Jim Rushing. These were the heady days of the early 1980s, with the fall of dedicated consoles (Atari 2600), and the rise of home computers. There was a great desire to experiment and create games that stretched out in new directions. An upstart company named Electronic Arts was entering its own "golden age," with a solid string of excellent, original games like Pinball Construction Set, Archon, and One on One.

     

    Electronic Arts followed the trail blazed by Activision. Game designers weren't stereotypical computer nerds, but young, creative, and above all, craving attention. They imagined themselves as the new artists, and their games as a creative work. These were not merely children's games, they were…something more. Different. New. Electronic Arts promoted this idea, and Bunten and his team were willing to accommodate.

     

    Just what kind of game is MULE? It really is difficult to describe, since it seems so different from the conventional shoot-em-up, sports, and adventure genres crowding today's market. Perhaps it is most similar to Monopoly, with a dash of arcade action and commodities trading added to the mix. Taking place on the world of Irata, four alien settlers set out to develop the land over the course of 12 monthly turns. Each player selects a plot of land, and then equips that plot for production of food, energy, or mining ore and crystite. At the end of each turn, the plots bear fruit, and the players buy and sell their goods at the market.

     

    I'm afraid that I am making MULE sound boring, but it is anything but. The casual pace belies a fiendishly competitive atmosphere where friendships are made and lost in a matter of minutes. If you do not grow enough food, you will lose precious time for your turns and risk falling behind. If you do not produce enough energy, your plots will suffer. And if enough ore is not made, there will be a shortage of mules.

     

    The mule (for Multiple Use Labor Element) is one of the game's more clever touches. Each plot of land needs to be equipped for the proper function, and for that, you need mules. A mule is bought at the colony store, equipped, and then added to your plot.

     

    This development phase is only one part of the game. The other part is the trading phase. After the monthly harvest, players meet at the market, watch the progress of their crops, and buy or sell with each other or the store. This is where MULE can become so fierce. True, it would be nice to share your extra food with everyone for the good of the colony, but what fun is that? Sharing is for losers. The real fun comes from cornering the market. When there is plenty of food in the store, for instance, the price is very low. But when there are shortages, the price soars.

     

    This is where you screw your friends into the ground. How desperate are they for that extra unit of food or energy? Make them run up the screen and raise the price. Skilled players can learn how to control the market and make a killing in the process. And, yes, this is where shoulders start getting punched between curses.

     

    The bidding in MULE is simple, with buyers on the bottom and sellers on the top. A price is found by both parties meeting somewhere in the middle. There is a certain, almost masochistic joy in watching other players desperately running up prices while you sit safely at the top of the screen. Another great "fuck you" moment comes during plot auctions; the leader runs up the price, then quickly darts back down at the last second, sticking someone else with the bill.

     

    In the end, we are all competing for bragging rights and the rank of "First Founder" at the end of the game. However, in another inspired stroke, the colony as a whole must survive together. If the colony fails to make enough money at year's end, nobody is the winner. Think about that while you're cutting everyone off at the knees.

     

    There are still more surprises to be found in MULE that I haven't mentioned. Mules go crazy and run off; pests eat your food; pirates steal all your crystite (diamonds); there are earthquakes, acid rainstorms, and meteorite strikes; the store catches fire, taking with it all surplus goods. And the game itself subtly teaches market economics: supply and demand, economies of scale, the Learning Curve theory of production, the Law of Diminishing Returns, the Maslow Hierarchy of Needs.

     

    There really has never been a game like MULE, and that is a tragedy. It deserves to be seen by anyone who considers themselves a lover of videogames.

     


  9. There are good tips. Sure I wont forget in my works.

     

    My functions embebed in my C list, have no return parameters. But I added PHA-TXA-PHA at begin and PLA-TAX-PLA at finish asm routine. The same garbage happens.

     

    I did another test, I comment my 3 asm functions (they are empty). And when I compile the program the garbage still appears in the screen.

     

    The garbage is a result of add 40 lines of C routine in the program. At first time I think AMS routine could cause a conflict in the compiler. But, it isnt. Now my code are 100% C , but the execute program generate garbage in the screen. If I add more code lines, then the screen crash with loud sounds.

     

    The routine lines added arent in the first place of C program, then it's strange code hangs. Now , im thinking its a problem of memory conflict, I use Shawn library ATARIGFX that I link with cl65 command, maybe the library spend memory, but I use only few routines of the library.


  10. After a few days of CC65 programming with asm, I found another curious thing. Somewhere in my code I had added call functions in ASM. Works nice.

     

    In other way, i added a call funtion ASM in some place in the program. When I compile and execute, the game starts, but some garbage appears in the screen. If I comment the funtion call, then the garbage disappears.

     

    It's very strange, beacuse the call function is in a place that the program still enter. I dont be sure, but I remember this thing happens when memory is low.

     

    Well, I cant controle in some way this garbage, but for me is unpredictable.


  11. It should be OK. I deleted it accidentally.  :(

     

    F.

    975386[/snapback]

     

     

    The current download is a 2.2MB file. The right version should be 3.8MB :ponder:

    975391[/snapback]

     

    I found a free webhoster for the "progdrem.mp3"

     

    http://rapidshare.de/files/8494949/progdrem.mp3.html

     

     

    If someone wants to download it, just click on "free" and wait until the counter is down to "0".

    Then click on "progdrem.mp3"

    975411[/snapback]

     

     

    Your music examples always have interesting effects, maybe if you post some source code for study purposes. I remember a time ago a example with violin waves.


  12. Im in the middle of a simple game that use bitmappings, direct draw in screen and sprites. I read most of the ATARIGFX library. As Shawn said, sprites still dont work.

     

    Another simple problem I found : inverse video text cant be printed in screen, only I get garbage in his place.

     

    Do you get any progress in ATARIGFX? I feel I use every command , and im very happy with more functions added. :)


  13. After some programming time I had noticed that programming a game port is more difficult than programming a new concept game. If Analmux (who knows very well the NES game) don't finish this porting, nobody can do it. (but we can use the incomplete SM3 and scroll techniques for a new version of Pedro Montezuma :lol: )


  14. I have exactly this routine in this format:

    (copy blocks of memory to another position, just for copy screen blocks)

     

    x=usr(adr(a$), nword, nword, nbyte, nbyte, nbyte)
    
      PLA
      PLA          
      STA $CC  
      PLA      
      STA $CB
      PLA
      STA $CE
      PLA
      STA $CD
      PLA 
      PLA
      STA $CF
      PLA 
      PLA
      TAX
      PLA 
      PLA 
      STA $D0 
    _label4:
      LDY $CF  
      DEY       
    _label1: 
      LDA ($CD),Y 
      STA ($CB),Y 
      DEY  
      CPY #$FF 
      BNE _label1   ; $F7
      CLC    
      LDA $CB 
      ADC $D0 
      STA $CB  
      BCC _label2   ; $02
      INC $CC   
    _label2:
      CLC      
      LDA $CD 
      ADC $CF
      STA $CD 
      BCC _label3   ;  $02
      INC $CE
    _label3: 
      DEX     
      BNE _label4    ; $DB
      RTS 
    
    

     

     

    Yes, there are relative branch commands. I translate in CC65 like:

     

    void mover(int n1, int n2, int n3, int n4, int n5)
    {
      
      pokew(0xCB,n1);
      pokew(0xCD,n2);
      poke(0xCF,n3);
      poke(0xD1,n4); // pass to register X
      poke(0xD0,n5);
      
      asm("  LDX $D1      ");  // Load register X
      asm("  _label4:     ");
      asm("  LDY $CF      ");
      asm("  DEY          ");
      asm("  _label1:     ");
      asm("  LDA ($CD),Y  ");
      asm("  STA ($CB),Y  ");
      asm("  DEY          ");
      asm("  CPY #$FF     ");
    *  asm("  BNE _label1  ");  // $F7
      asm("  CLC          ");
      asm("  LDA $CB      ");
      asm("  ADC $D0      ");
      asm("  STA $CB      ");
    *  asm("  BCC _label2  ");  //  $02
      asm("  INC $CC      ");
      asm("  _label2:     ");
      asm("  CLC          ");
      asm("  LDA $CD      ");
      asm("  ADC $CF      ");
      asm("  STA $CD      ");
    *  asm("  BCC _label3  ");  //  $02
      asm("  INC $CE      ");
      asm("  _label3:     ");
      asm("  DEX          ");
    *  asm("  BNE _label4  ");  // $DB
      asm("  RTS          ");
    }                                
    
    

     

    At compiling in CC65 lines with (*) generate a error:

     

    Unresolved external _label1 at ?????.s

     

    It seems that labels are not recognized. Im trying to create an external .s file with asm routine as Fox said. But, Im very worried why I cant put in work in the same .c file


  15. I have a classic routine in ASM like:

     

    USR(adr(a$), value1, value2, value3, value4)

     

    In CC65 I use the next routine:

     

     

    routineasm(int value1, int value2)

    {

    (unsigned char *) 0xBF; // hi value1

    (unsigned char *) 0xBE; // low value1

    (unsigned char *) 0xBD; // hi value2

    (unsigned char *) 0xBC; // hi value2

     

    asm(" LDY $D0 "); // ASM routine start here

    .

    .

    .

    .

    .

    .

    asm(" RTS"); // ASM routine finish here

     

    }

     

     

    I not sure if its right. When I run the program, just in the routine the emulator crash. Maybe this concept not work.

     

    In other way, there are JMP commands in my ASM program. In CC65 we cant use labels, then im not sure how to translate the JMP commands. For example:

     

    .

    .

    LAB1 LDX $C0

    LDY $DF

    JMP LAB1

    .

    .

     

    I translate in CC65 like:

     

    .

    .

    asm(" LDX $C0 ");

    asm(" LDY $DF ");

    asm(" JMP $FB ");

    .

    .

     

    Is correct the negative JMP?

×
×
  • Create New...