Jump to content

nanochess

Members
  • Content Count

    6,415
  • Joined

  • Last visited

  • Days Won

    19

Posts posted by nanochess


  1. 6 hours ago, dalves said:

    I have been trying to figure out what I am doing wrong on my own, and it seems when I think I figured it out, I don't.

     

    I've been having random problems in games with collision detection. The problem is the collision detection seems to double the value of what I want it to do. whether If shooting a target should give you 10 points, it gives you 20. If being hit by a target should take away a life, it takes away two. Below is an example from a game I'm currently working on. This is within the main game loop. The line with "COL3 AND HIT_SPRITE1" calculates the FRTCNT and #SCORE values correctly. However the "IF COL6 AND HIT_SPRITE1" line doubles up the lost of HLTH value each time.

     

        SPRITE 0, BSKX+HIT+VISIBLE+ZOOMX2, 80+ZOOMY2, SPR00 + SPR_TAN
        SPRITE 1, BSKX+HIT+VISIBLE+ZOOMX2, 80+ZOOMY2, SPR01 + SPR_BROWN
        IF FRTY>79 THEN TOGGLESPRITEHIT(1)
            
        WAIT
        
        IF COL4 AND HIT_SPRITE3 THEN #FRTCLR=SPR_BROWN:BDFRT=1
        IF COL5 AND HIT_SPRITE3 THEN #FRTCLR=SPR_BROWN:BDFRT=1
        IF COL3 AND HIT_SPRITE6 THEN GOSUB WORMRESET
        IF COL3 AND HIT_SPRITE1 AND BDFRT=0 THEN FRTCNT=FRTCNT+1:#SCORE=#SCORE+10:GOSUB FRUITRESET:GOSUB UPDATE
        IF COL6 AND HIT_SPRITE1 THEN FRTCNT=0:HLTH=HLTH-1:GOSUB WORMRESET:GOSUB UPDATE

     

     

    The problem here is the following:

     

    * Frame 1 - Your sprites are drawn.

    * Frame 2 - The collision is detected, you order to remove the sprites.

    * Frame 3 - The collision is detected because in this frame were updated the sprites.

    * Frame 4 - The collision ceases.

     

    The solution is easy, if you have a variable to signal a sprite alive (I tend to set the Y coordinate to zero to indicate a dead sprite), then add it to the condition check.

     

    IF COL6 AND HIT_SPRITE1 THEN

        IF sprite_alive = 1 THEN

            ' Do collision process

            sprite_alive = 0

       END IF

    END IF

     

    • Like 1

  2. Hi eveyone.

     

    My wife deceased two weeks ago. It has been hard for everyone in the family. She was a great, amazing, loving person and we had so many hopes of having a great recovery since her lung cancer was detected in 2016, but unfortunately that wasn't in the plans of our Lord.

     

    Many people have supported me around this last month in so many ways, I've discovered a ton of friends, and I really appreciate it. So I wanted to give thanks, but didn't knew how to do it, and finally today I made my decision.

     

    So today I release the following games for free: Aardvark, IntyBASIC Showcase vol. 2, and Meteors. I've included a picture of my wife in each game, and it is my way of saying thanks. I'm sure my wife would approve happily.

     

    Special thanks to @Rev for permission to distribute these games, @mthompson for creating the included PDF manuals and allowing me to distribute these.

     

    Again thanks to everyone!

     

    shot0002.gif.6dabd6557193a7a6c2ba52c71c1b0dc9.gif

     

    P.S: Forgot to say, I've improved the classic background sound and player's shot sound for Meteors.

     

     

    aardvark_free.zip meteors_free.zip showcase2_free.zip

    • Like 28
    • Thanks 12
    • Sad 28

  3. 12 hours ago, artrag said:

    Question: is there an efficient way to do a function doing this 

    
    YEvent:procedure	'YEvent(ys,ya)
    	' input  ys,ya
    	if (ya and 1) then 
    		yr = #Interaction(ys*2 + ((ya/2) and 1))/256
    	else
    		yr = #Interaction(ys*2 + ((ya/2) and 1))and 255
    	end if
    end

    I did this:

     

    DEF FN XEvent(s,a)    = (#Interact(s*2 + ((a/2) and 1))/((a and 1)*255 + 1)) and 255

     

    but it is way too slow for its purpose

     

    You could implement an assembly language function and call it using USR YOURFUNC(ys,ya), R0 would get ys and R1 would get ya.

     

     


  4. I've been at loss of words. My mind is in grief and numb. It's a long and painful process, sometimes still cannot believe she departed.

     

    I want to give thanks to everyone for their help. All of your contributions went directly to pay oxygen tanks, wheelchair, refills, and later the funeral, cremation, and a niche for my wife's urn. Just discovered I'm back to square zero in funds, I only made it through this thanks to the help of everyone. I'm in great debt of gratitude, and I'm so humbled of having so many friends.

     

    Even though we are separated by enormous distances, thanks to everyone from the bottom of my heart because your words also have helped me to be centered.

     

    God bless everyone.

     

    I want to share this picture of my wife and myself, back in 2015. It contains all the happiness I want to remember always.

     

     

    DSCN3034.JPG

    • Like 24

  5. 22 minutes ago, artrag said:

    I am trying to make some math involving VARPTR and DATA but I get errors...

     

    Is there a way to define this

     

      DATA VARPTR #roomattr0(0)-8*20
      DATA VARPTR #roomattr1(0)-8*20
      DATA VARPTR #roomattr2(0)-6*20    
     

    The expression in normal expressions is valid. Only DATA does not accept it!

     

    Use this:

     

    DATA VARPTR #roomattr0(-8*20)

    DATA VARPTR #roomattr1(-8*20)

    DATA VARPTR #roomattr2(-6*20)

     

    • Like 1

  6. 11 hours ago, dalves said:

    Thanks DZ. I added the DIM statements and everything is good. I'll have to get into the habit.

     

    I was wondering if there are any minimum requirements for running the new 1.2.2 version. I have an old beater desktop running Windows XP (SP3) and 1.2.2 works perfect on it. My laptop recently died and I was trying to use an old one that is also Windows XP but (SP2). I installed Visual C++ 2008. When using INTYBUILD it says "as1600" has crashed. If I close out of the error, it finishes. If I use INTYRUN to launch the ROM, "jzintv" crashes. My guess is something on the old laptop is out of date, but not sure what in particular is causing the crashes.

    I can say for sure that SP2 has some subtle bugs, you should update it to SP3.

     


  7. 1 hour ago, sramirez2008 said:

    This is one of my favorite games, especially the Plus version (love those sprites!). Although it never saw a cart release, is there any chance of having boxes made, assuming there would be sufficient demand?

     

    Thanks for the game @nanochess

    I don't see a chance for a cartridge release, as my contact with the original author of the game in Darkbasic never was answered.

    • Sad 1

  8. Hi guys.

     

    My wife got last night a Oxygen saturation so low as 72 and had purple fingers, I was so worried that I went to sleep to 1am checking her saturation.

     

    I was in trouble because my bank took a double payment and I had no money for the Oxygen machine, but this morning the bank corrected after my complain, money appeared, and I ran fast to the store to get her a EverFlo Home Oxygen system, and I was pretty happy to see how my wife color returned.

     

    Of course I was extremely worried because I used almost all my funds for this (and when she was discharged from the hospital I had no idea the oxygen tanks were so expensive, even less the machine!), but thanks to the generosity of several people, I really feel relieved.

     

    Thanks all from the bottom of my heart and on behalf on my wife Rosa Nely!

     

    • Like 13
    • Sad 1

  9. Text of my talk. Apparently my audio was a little low.

     

    State-of-the-art Game Development for Intellivision
    By Oscar Toledo G. https://nanochess.org/
    Nov/19/2020.

    Talk for the Intellivision Virtual Expo. Nov/21/2020.

    (1)
    Hi all. I’m Oscar Toledo, and I’ll talk about state-of-the-art game development for Intellivision.

    The game development for Intellivision started when APh Consulting started the development of first Intellivision games for Mattel Electronics.

    (2)
    These games were developed using PDP-11 minicomputers. Each programmer had a dumb terminal (VT100 compatible) connected to the PDP-11 to keep the source code and data files of the games. Also each programmer had a TV display, an Intellivision console, and a dedicated card to download the game into the Intellivision so they could test the game in development.

    (3)
    Mattel Electronics used a very complicated hardware in their Intellivision console, because it used a 16-bit processor. It was pretty impressive at the time from a technical point, and in fact it was the first game console using a 16-bit processor, something that wouldn’t be repeated until the emergence of the SNES console in 1991.

    This difficult setup effectively stopped the efforts by outside companies to create cartridges for the Intellivision, and Mattel didn’t share any information with the outside world, so essentially only Mattel was able to develop and manufacture games for its console.

    (4)
    There existed information about Intellivision programming but it only was available inside Mattel, it was a document called “Your friend, the Exec”.

    Then the inevitable things happened: Some programmers exited APh Consulting and started companies on its own, or looked for work in companies developing games.

    One of these programmers was David Rolfe, who went to Cheshire Engineering to work in Intellivision games for Activision.

    Other programmers went to Imagic, formed by Atari and Mattel programmers.

    (5)
    The fact that most programmers come from the same roots of APh Consulting, mean they created development tools pretty similar: most working on PDP-11 minicomputers or compatibles. This means that no development tools were created for microcomputers of the time, for example, Atari 2600 had development tools capable of running on Apple II computers.

    The graphics and sound design were difficult, only Mattel Electronics being the initiator started coming up with graphics, music and sound design utilities, but otherwise the graphics had to be drawn on grid paper.

    The music was developed manually and most programmers didn’t had a music background. It wasn’t surprising that music was missing in the launch games for the Intellivision: Las Vegas Poker & Blackjack, Armor Battle, and Backgammon, except for some jingles in Math Fun.

    (6)
    The available internal size of ROM chips was also important. The first wave of Intellivision games used only 4 kilowords, and the biggest game was World Series Major League Baseball with 20 kilowords.

    Until 1987 was available a PC development system created by INTV Corp. but these tools also weren’t released to the public. It was a testament to the powerful secrets built around the Intellivision.

    It also mean that when INTV went bankrupt, all the programming info was essentially lost.

    It had to happen the reverse engineering at the end of millennium to recover the lost secrets of Intellivision, how it worked, what hardware used, how cartridges boot up, what memory areas were available, what was inside the EXEC, what predefined characters were available in the GROM. All this in order to create an emulator.

    And then the development tools started to be created again, like the as1600 assembler included with the jzintv emulator by Joe Zbiciak.

    (7)
    The microprocessor used in the Intellivision console is the CP1610 by General Instruments, it happens it has a pretty steep learning curve. So the creation of new games was possible but it required a great deal of time, patience, and skill.

    Also the integrated video chip proposes some challenges like only being able to define graphics in the moment when the video raster isn’t being updated, forcing to think differently for graphics screens.

    The sound chip although similar to a sound chip of the same year, it is interfaced in a 8-bit bus with different addresses for the sound registers, and has some small yet important differences.

    All this makes the development of a game to be a truly difficult task if using only the assembler language, in special for the description of the graphics and music.

    (8)
    In 2014 came the IntyBASIC programming language, it simplified greatly the development of new games as it wasn’t required to know the intrincated details of the Intellivision hardware.

    Essentially you can code one line saying PRINT HELLO WORLD and it can be compiled immediately, assembled, and run with the emulator in less than 5 seconds.

    Most simple games can be coded in a single day, this is a big difference versus assembly language coding that can take as long as one month for a game of the same size.

    (9)
    The utility IntyColor included with IntyBASIC is able to take a BMP image file and convert it to IntyBASIC source code in a few seconds. Basically you can take a painting program of your particular liking, and in a few minutes have the same screen replicated on your very own Intellivision console.

    It is a big difference because drawing on a grid paper requires artist abilities, and a lot of time to enter the data into the computer, plus the time lost in testing the image, and correcting the data entry.

    The ability to take real pictures and turn them into Intellivision artwork very easily or faster than before.

    The integrated music tracker means that basic musical knowledge is enough to compose tiny jingles, or convert music sheet to IntyBASIC source code.

    (10)
    Other important advantage is the fact that now ROM cartridges can use the full 42K words available in the Intellivision memory map, and also that ROM memory is now pretty inexpensive.

    In fact thanks to the advanced capabilities of JLP cartridges, some games reach 80 kilowords.

    This means programmers aren’t limited by space anymore, and instead can introduce all the graphics screens they like, and many tracks of music.

    Another thing that has changed in the development of new games for Intellivision, is the fact that many modern features are integrated, for example: graphic title screens, intro stories, background music, high-scores tables, victory screens, etcetera.

    Even new graphic styles in the venue of NES games have been shown in new games.

    Here are some examples of new games created for Intellivision in the last six years.

    (11) Sydney Hunter and the Sacred Tribe. Fire-like animation for torch at title screen.

    (12) Sydney Hunter and the Sacred Tribe. NES-style tiles for screens, and multicolor sprites.

    (13) Princess Quest: Intro story, and bitmap animated title screen.

    (14) Aardvark, background music in graphic title screen. Cartoon-style animated sprites.

    (15) Unlucky pony, mix of several genres.

    (16) Frankenstein’s Monster, game remake with better graphics, sound, music, and animation.

    (17) Miner 2049er, game possible because the new cartridges with more ROM memory.

    (18) Intellivania, surprising demake (not remake) of a modern game for Intellivision.

    (19) Let me finish with this quote I may not have gone where I intended to go, but I think I have ended up where I intended to be. Douglas Adams

    I want to say thanks to decle for the invaluable historical details contained in his document Intellivision Development Back in the Day, and published in the forums of Atariage.

    (20) Questions & Answers

     

    • Like 8
    • Thanks 1

  10. 18 hours ago, carlsson said:

    I believe cmadruga is this year's Sheldon Cooper (minus the obnoxiousness) and the rest of us will be the third floor janitor, the lady from the lunchroom, her son or butcher. :-D

     

    Hahaha :rolling: I was going to say I was Leonard, but given my productivity for this year, probably I'm Howard, but not Rajesh :rolling:

     

×
×
  • Create New...