Jump to content
IGNORED

Intellivision Programmer's Questionnaire


DZ-Jay

Intellivision Programmer's Questionnaire  

17 members have voted

  1. 1. What's your language of choice?

    • IntyBASIC
      12
    • Assembly Language
      5
  2. 2. If you chose IntyBASIC, is it because...

    • I love BASIC
      0
    • Assembly Language is too hard
      6
    • I am not a programmer, so BASIC seems easier to learn
      0
    • I hate Assembly Language
      1
    • IntyBASIC offers the features I need
      8
    • The IntyBASIC SDK makes programming games simpler
      3
    • There isn't a comparable Assembly SDK to make programming more accessible
      2
    • I already knew BASIC, so I'm comfortable with it
      3
    • Not applicable, I chose the other one
      5
  3. 3. If you chose Assembly Language, is it because...

    • I love Assembly, it gives me full power of the machine
      5
    • I hate BASIC
      2
    • That's what I know, and I can't be bothered to learn anything new
      1
    • IntyBASIC doesn't do everything I want
      2
    • The IntyBASIC programming model is different from mine
      2
    • I have my own Assembly Language library already that works for me
      2
    • I don't like "SDK" and frameworks that try to do stuff for me
      0
    • Not applicable, I chose the other one
      9
  4. 4. What "platform" do you ultimately target with your games?

    • Emulation (ROM) - Any emulator
      2
    • Emulation (ROM) - jzIntv
      5
    • Hardware (PCB) - 16K classic "Mattel" cartridge
      2
    • Hardware (PCB) - JLP
      2
    • Hardware (PCB) - Any
      4
    • Hardware (PCB) - Other
      1
    • Hardware (Flash) - LTO Flash!
      1
  5. 5. If your target platform supports "special features," which ones do you actually use?

    • On-board non-volatile memory (Flash RAM) for save-states, etc.
      5
    • On-board extended memory (Cartridge RAM)
      5
    • ROM Bank-switching
      3
    • None, I try to keep it "old-school"
      11
  6. 6. If you use jzIntv as part of your development environment, which features do you actually use?

    • Just the emulator to test my game
      9
    • Regular debugger (breakpoints, watches, register view, memory peek/poke, etc.)
      3
    • Source-level debugging (all debugging features, plus source file and symbol mapping)
      5
    • I don't use jzIntv
      0
  7. 7. Which of the following do you consider "standard" in modern Intellivision home-brew development?

    • 42K memory map
      12
    • Cartridge RAM (for game variables)
      11
    • Flash RAM (for save-states)
      8
    • Bank-switching for extra-large games
      9
    • 60hz game loops
      5
    • Voice synthesis (i.e. Intellivoice on-board)
      6
    • Two PSGs (i.e. ECS on-board)
      2
    • Cartridge acceleration features
      4
  8. 8. Which of the following programming libraries/features do you use or would use if they were available in your language of choice?

    • Pseudo-random number generator
      9
    • Event-driven hand-controller decoder (without having to poll periodically yourself)
      5
    • Music Player/Tracker
      10
    • Timers for triggering periodic or timed events
      5
    • Autonomous MOB displacement (i.e., set velocities and their positions are updated automatically)
      3
    • Smooth scrolling
      6
    • Text-to-speech
      3
    • Sprite animation (i.e., give an array of picture cards and a frame-rate and MOB is updated automatically)
      5
    • Optimized physics functions (projectile trajectory, convergence, acceleration, friction, gravity, etc.)
      4
    • Optimized trigonometry functions (sine, cosine, tangent, etc.)
      2
    • Event-driven collisions (based on regions or bounding-boxes)
      6
    • An Integrated Development Environment (IDE)
      6
    • Nothing, I just need access to the hardware and I can do everything myself
      5
  9. 9. The primary reason you program Intellivision games is...

    • for fun! fun! fun!
      8
    • for the chicks and the parties
      1
    • to get rich and famous
      3
    • to help others with their own projects
      1
    • for the challenge
      2
    • to keep busy during summer vacation or train commute
      0
    • Other
      2
    • as a side job for spare cash (beer money, pay rent, medical bills, vices, etc.)
      0
  10. 10. Are you actively programming for the Intellivision?

    • Yes
      8
    • No
      1
    • On and off, when I get the chance
      8

  • Please sign in to vote in this poll.

Recommended Posts

I would love to have variables with scope and reuse of the ram for variables that do not need to hold a state across different function calls.

But it is matter of tastes.

Probably an external pre-processor of .bas files could add this feature.

Edited by artrag
  • Like 2
Link to comment
Share on other sites

I would love to have variables with scope and reuse of the ram for variables that do not need to hold a state across different function calls.

But it is matter of tastes.

Probably an external pre-processor of .bas files could add this feature.

 

You mean lexical variables with local scope within a subroutine? That may not be a bad idea. I have considered implementing something like this in my framework using stack frames. Perhaps IntyBASIC could do something similar: create local variables in the stack, and pop them out of scope on return.

 

It could follow Microsoft's evolution of BASIC (VB) and require a "Dim" to allocate variables so that their scope is unambiguous. It could also support the same loose semantics: variables encountered without pre-definition with "Dim" are assumed to be in the global scope. (Then it's just a small step from there to implement the "Option Explicit" directive to require strict allocation and typing... :lol:)

 

-dZ.

Link to comment
Share on other sites

You can also use static linking instead of the stack. The generated asm code is faster but it needs to study the three of the calls and does not allow recursion.

Basically, two local variables in functions that do not call each other directly or indirectly can share the same ram location.

 

The riddle is to allocate different ram locations for local variables along all branches and sub-branches of execution.

Only independent branches can overlap variables in ram.

Edited by artrag
Link to comment
Share on other sites

You can also use static linking instead of the stack. The generated asm code is faster but it needs to study the three of the calls and does not allow recursion.

Basically, two local variables in functions that do not call each other directly or indirectly can share the same ram location.

 

The riddle is to allocate different ram locations for local variables along all branches and sub-branches of execution.

Only independent branches can overlap variables in ram.

 

That's what I do in my framework, but that's because in P-Machinery, there is a concept of "Game States" (or phases) baked into the programming model, so there is a very natural division of scope: each state is mutually exclusive. By (ab)using the assembler's symbol table, I allow overlapping blocks of RAM to be re-used in each game state. The only drawback is that, being just assembler symbols, the namespace cannot be scoped, so the names must always be unique across the global space. It's still an enhancement built upon a foundation of static allocation provided by the CART.MAC library.

 

I can get away with that because of the loose semantics of "variables" in the Assembly model, which does not guarantee much.

 

I thought for IntyBASIC it may not be that simple, since it doesn't just use the symbol table, but needs to track variable usage dynamically across the program. This is, I think, the reason why they are typically just all global in many implementations of BASIC. But then again, I haven't seen IntyBASIC source code, so I don't know. :)

 

Either way, lexically scoped variables would not be a bad addition to IntyBASIC.

 

-dZ.

Link to comment
Share on other sites

IntyBASIC v1.4.0 allows support for playing music in 2 PSG, also MUSIC GOSUB and MUSIC RETURN to save space creating subsongs.

 

Also allows MUSIC VOLUME and MUSIC SPEED to change volume and speed in the fly, very useful when a song includes fast parts but not all song ;)

 

It will be released once the IntyBASIC 2018 Programming Contest is finished because the v1.2.9 of the compiler is required to build, in the meanwhile people can give a look to the Github https://github.com/nanochess/IntyBASIC

Cool. Any plans of adding a way to specify instrument envelopes in code without having to go to prologue/epilogue? From what I've read the syntax is similar for both so it could be done. This way you could have different instruments at play and music in all games won't sound the same. Yeah, I know you can change them in epilogue/prologue but the process to do so isn't straight-forward not to mention that you're basically editing a default template and will have to revert back if it's just for a specific cart.

Link to comment
Share on other sites

Cool. Any plans of adding a way to specify instrument envelopes in code without having to go to prologue/epilogue? From what I've read the syntax is similar for both so it could be done. This way you could have different instruments at play and music in all games won't sound the same. Yeah, I know you can change them in epilogue/prologue but the process to do so isn't straight-forward not to mention that you're basically editing a default template and will have to revert back if it's just for a specific cart.

I've plans for it.

 

I need to optimize first the player to release some 16 bits variables in order to put the wave pointers.

  • Like 1
Link to comment
Share on other sites

I've plans for it.

 

I need to optimize first the player to release some 16 bits variables in order to put the wave pointers.

 

How about making the envelope instruments statically defined? Similar to what you have today, but exposing the mechanism to the programmer. You wouldn't need extra variables for that. :)

 

-dZ.

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...