Jump to content

nanochess

Members
  • Content Count

    6,415
  • Joined

  • Last visited

  • Days Won

    19

Posts posted by nanochess


  1. 1 hour ago, carlsson said:

    Ok, so you began with BASIC at the age of 5 and moved to assembly language when you were 9?

     

    If it was any doubt before, Oscar is our Mozart!

     

    (I might have fiddled a little with machine code around the age of 13-14 but didn't understand much about it until I was 21)

     

    Haha, Mozart composed great melodies at young age, I was still doing bad games :P

     

    • Like 2

  2. My boot sector games books have helped many people to learn x86 assembly language for the first time in many years.

     

    Unfortunately the x86 field is vastly different from IntyBASIC, so I wouldn't recommend them for enhancing your IntyBASIC comprehension.

     

    However if you show fragments of the code you don't understand I'll be happy to clarify it or give you an idea of how it works.

    • Like 1

  3. 4 hours ago, youki said:

    Excellent!!...  remind me my first program in assembly in 6502 on c64!!..  a kind of pacman in character mode... i was 10 or 11 year old , I was even not aware we could redefine the characters , so i used only the standard PETSCII.  ... good old time...:)

     

     

    It sounds pretty cool! 


  4. Hi all.

     

    Just a few days ago I saw my old notebook in the corner for the nth time, In it I have took note of my first Z80 assembly language game, about a Karateka, written in 1988 when I was 9 years old.

     

    Not the most beautiful game in the world, and embarrassingly simple, but it gave me impulse to get into assembly language.

     

    I've ported it also to MSX and Colecovision just for the sake of watching it working again.

     

    Enjoy it!

     

    https://nanochess.org/notebook.html

     

    • Like 13

  5. 4 hours ago, llaffer said:

    What does the ASM ORG command do?  I've seen it in the book a few times and you mentioned it was due to memory limitations but I didn't understand how that solved the limitation.

     

    Give a look to the page 173 of my book Programming Games for Intellivision.

     

    Also you can search for "ASM ORG" in the file manual.txt included with the IntyBASIC distribution.

     

    Another option is to give a look to the included example program 42K.BAS


  6. 39 minutes ago, llaffer said:

    I tried to use this WAV converter tool.  I created the .bas file from the .wav, typed up wave_helper.asm, then tried to build and run the program to see if it works.  No errors or warnings on the build/compile, but when it starts jzIntv, I see:

     

    Starting jzIntv...
    
    HALT!
    
    PC: $7000   Instr count: 2   Cycles: 13
    
    

     

     

    And the display shows a magenta color and nothing happens, though the emulator continues to run until I end it with F1.

     

    Thoughts on what I should look for?  Thanks.

    The wave files consume great quantities of space on ROM. As the program handles 16-bit 8khz, and two samples are converted into a word, technically the maximum size of a WAV file should be 32K.

     

    I suggest using ASM ORG $C100 just before your wave data.

     

     


  7. Corrected bug on handling sound effects with a length bigger than 8.

     

    Please re-download the tool.

     

    Also made a video (added to first post) showing it with the sound effects examples from the chapter 2 of my book Advanced Game Programming for Intellivision.

    • Like 1

  8. Hi all.

     

    I was watching in delight how Brian Pudden wrote two new games in one month after getting into Intellivision Programming, and he posted on Intellivision Homebrew Games in Facebook.

     

    Then Bill Stahl made a question in the topic "Has anyone written sound ‘tool’ that runs in inty basic? To manipulate the registers, and hear in real time. " and I thought it would be good to have such a tool.

     

    So I've wrote a sound editor that allows you to write sound effects up to 20 tones long in one channel.

     

    Each tone frequency, volume, noise and mix can be setup.

     

    The manual of usage (also included at the start of the program):

     

    1- Enter frequency (0-4095) Press Enter to complete or enter the four digits.

    2- Enter volume (silence 0-15 high)

    3- Enter noise value (high noise 0-31 low noise)

    4- Enable/disable mix of noise

    5- Increase length of sound effect by one tone.

    6- Decrease length of sound effect by one tone.

    7- Enter speed for playing tones (1 for changing tone on each video frame)

    8- Toggle repeat (when playing it will keep repeating unless you disable it)

    9- Start playing (BTW if you change data while it repeats, it will sound in real time!!)

    0- Show IntyBASIC source code for playing the sound (you should do manually the speed with WAIT or the multitask method ON FRAME GOSUB)

     

    Enjoy it!

     

     

     

    shot0006.gif

     

    shot0007.gif

     

    shot0008.gif

     

    effect.bas effect.rom

    • Like 6
    • Thanks 1

  9. Today corrected a pair of sound bugs. The AY-3-8910 counter were reset with each sound frequency change so it triggered bugs in Princess Quest music, while the noise generator LFSR was wrong.

     

    And BTW my pull request has been approved! 8) This means that soon everyone using libretro cores will have a better Intellivision emulation :)

     


  10. Today I corrected the B17 Bomber crash in FreeIntv, I was pretty surprised by the bug, it simply quit from the emulator.

     

    It took me 6 hours to figure that I should put a simple debugging function writing to a file inside the main function to see if the crash was inside FreeIntv or Retroarch. To my complete surprise it was inside FreeIntv and it was a HLT instruction, but alas it was an instruction number higher than 0x0400, so I discovered somehow B17 Bomber manages to overwrite the EXEC after half a second of running. The bug was solved by protecting the EXEC ROM space.

     

    Also I made a small optimization for speed in the STIC routines and noticed the 8x16 sprites had card number incorrectly adjusted, so it would have allowed to use an odd card number. Now it sets correctly the card number to be an even number.

     

    If you are curious enough to see what I've done, you can see my current progress here: https://github.com/nanochess/FreeIntv

     

    I've submitted a pull request to the main project here: https://github.com/libretro/FreeIntv

    • Like 2

  11. Just now, gar0u said:

    Thanks for the quick reply, nanochess!  :)

     

    I tried putting both prologue and epilogue files in the same directory as my .asm file and that didn't fix the problem.  Nor did using the include switch (-i) with the directory that contains the epilogue and prologue files.

     

    I had this working a few months ago when I was working through the PDF of your first book.  I'm certain it's a problem with my setup.   

     

    You should look in the shell code for the line running IntyBASIC, it should have a third argument with the folder path to the intybasic_prologue.asm and intybasic_epilogue.asm files.

     

    These files are automatically included by IntyBASIC in the generated assembler code along your program.

    • Thanks 1

  12. I don't have tested the SDK on Mac. I prefer to direct everyone to unzip everything in one folder.

     

    But the missing symbols indicate that IntyBASIC couldn't find intybasic_prologue.asm and intybasic_epilogue.asm to add to the output assembler file.

     

    So the assembler misses the required symbols.

     

    Unfortunately I'm not good enough in bash code to help you to find the problem.

     

    A clue is that IntyBASIC allows to define the library path as the third argument, if you can find what is being provided you can put the required files in the exact path.

     

    For example:

     

      intybasic mycode.bas mycode.asm /Users/gar0u/Documents/

     

    Would look for intybasic_prologue.asm and intybasic_epilogue.asm at your Documents folder (supposing gar0u is your username).

     

    • Thanks 1

  13. 5 hours ago, Zendocon said:

    The buggy freeintv core served me well when I was earning all the retroachievements in Astrosmash.  It seems the collision bits don't clear right away, so there were periods where objects were destroying themselves as fast as they appered.  I was thankful for small favors that day.

     

    Is there still screen flickering when scrolling, or has that been fixed as well?

    I've corrected the scrolling flicker.

     

    I need to test Astrosmash out of curiosity.

    Edit: just saw the collision is still buggy.

    Edit2: Just corrected the STIC collision for Astrosmash.

     

     

    • Like 1

  14. 23 hours ago, Mik's Arcade said:

    1)  I'm using paint.net to create 160 x 96 screens. I created the title screen in this manner, but I have a lot of replication and cutting and pasting of chunks to create a series of long scrolls and was wondering if there was a better tool to use for this task. I don't want to use anything TOO complicated, at least PAINT is easy to use.

    You can make an image the size of your scrolling area.

     

    23 hours ago, Mik's Arcade said:

    2) If I create a bunch of these scrolls....say between 10-15, do you think I will run into any intybasic limits?   Should I keep it more simple?  I was hoping to to have some unique backgrounds that will be easter eggs to other intellivision games.....some might surprise you all!  Plus, I have to change it up to keep players from being bored.....

     

    thanks!

     

    At some point your scrolling area will be so big that you must check the generated .CFG file to see if it spills out of the available memory areas, using ASM ORG $C100 just before including your scrolling area will get you the biggest segment possible.

     

    There is an example in my first book (Bouncing Cube) where it shows how to compress scrolling levels, for example if you have few cards of terrain and lots of sky.

     


  15. Hi all.

     

    I was deep into doing a STIC rewrite for FreeIntv (a libretro Intellivision emulator for using with Retroarch), and after correcting it, I keep wondering if all the instructions of the processor were emulated correctly.

     

    So I wrote an instruction tester using the state-of-art jzintv emulator from @intvnut as reference.

     

    And indeed I found one bug exactly in the Mar, 22 2021 release (I thought there were two bugs, because the comparison done for Overflow flag on SUB). The rare case of using SDBD with register R1-R3 should load the second byte from the same address, instead FreeIntv loaded the upper byte from the next address. I wonder if some classic game uses it.

     

    I've already made the pull request for the patch for FreeIntv (with the corrected STIC scrolling).

     

    I hope this is useful for someone out there that could be writing another Intellivision emulator.

     

    And BTW I would like to know if it can run over a real Intellivision. I'm being lazy to take out my Intellivision :grin:

     

    Enjoy it!

     

     

    1tester-210505-152821.png

    tester.asm tester.rom

    • Like 1
    • Thanks 1

  16. 2 hours ago, llaffer said:

    Here's another related question.  Is there a way to change the voice?  Like to a more feminine one as in "Hello Commander. Computer reporting."

     

    Or is that from custom samples that's part of the game for access and not part of default?

    The custom samples are a trick of voice chip programming that was only available to Mattel programmers because it required a dedicated minicomputer to generate them.

     

    This is one of the reasons that I've included an appendix in my 2nd book about generating digitized voice using only the sound chip on the Intellivision.

     


  17. The IntyBASIC manual is replicated in my first book "Programming Games for Intellivision" and it contains all the VOICE commands.

     

    Basically you only need to do VOICE INIT at the start of your program.

     

    "VOICE PLAY voice_label" when you want to play a voice.

     

    And voice_label should look like this:

     

    voice_label: VOICE WW, AR, NN1,NN1,IH, NG1, PA4, 0

     

×
×
  • Create New...