Jump to content
IGNORED

I'm looking to make my first intellivision game and trying to gauge design limits (repost from wrong forum area)


Recommended Posts

55 minutes ago, carlsson said:

Conceptually, most CPUs of the same era are comparable but the practical details tend to differ, like how big numbers you can handle at a time, how many registers you have for temporary storage, which instructions and combinations of those exist, how much RAM you have to access, how you communicate with and wait for other custom hardware. The Odyssey^2 has 64 bytes RAM internal to the CPU + 256 bytes external. The Intellivision has 240 bytes of 8-bit RAM, 352 words of 16-bit RAM (including the 20x12 BACKTAB) and 512 bytes of 8-bit GRAM for your custom graphics, so in theory 4.5 times as much RAM as the Odyssey^2. Of course some of the memory is used by system functions and internals of the compiler runtime.

Also, the architecture of the CP-1610 CPU is based on that of the PDP-11, which imparts it with a special idiosyncratic flavour, distinct from other contemporary microprocessors -- and that's not to mention the utterly alien (to those of us who come from other platforms) way in which it supports 10-bit instructions and memory in multiple word lengths.  I don't believe there is a counterpart to this in other popular consoles or microcomputers of the time.

 

   dZ

Edited by DZ-Jay
Link to comment
Share on other sites

31 minutes ago, Caleb Garner said:

wow that's awesome.  as i get more confident and time working with this stuff it would be interested to see what could be made with either / both.  

Is intellivoice easy to work with in intybasic?  

To play monotonic robot voices like the O^2?  Yes, it is fairly easy.  You just define your phrases using the available allophones (included with IntyBASIC), and use the appropriate IntyBASIC statements.

 

To play digitally sampled voices like the old Mattel Intellivoice games do? Nope.  @intvnut did some work on creating a program to convert samples into the appropriate format, but he's said that it is quirky and error-prone, and includes some third-party code which may not be freely distributable.  Therefore, he's been very cautious about how it gets used and distributed.

 

Some people have contacted him directly for help in getting voice into their games, and managed to do so.  Unfortunately, he seems to be an extremely busy man, especially as of late.

 

Bottom-line is, it is not trivial to play sampled voices using the Intellivoice.

 

All that said, @artrag has created a special tool to generate voices and sound effects from digital samples using only the built-in sound chip.  The outcome is quite cool and somewhat effective, but definitely not as realistic and intelligible as what can be produced by the Intellivoice.  If in need of voice for your game, you may want to contact him directly for help.

 

  dZ.

Edited by DZ-Jay
Link to comment
Share on other sites

20 minutes ago, DZ-Jay said:

To play monotonic robot voices like the O^2?

that's good that some kind of voice is possible, but that is a shame that doing voices like "B-17 Balmer" is not easy to achieve..  

 

but yea i'll see how far i could get with the basic O2-ish voices..  but yea i thought it would be fun like b-17 where you had a few different characters you could identify by voice.  but of course it's just a fun option.. as I'd not want to make a game that requires it to be playable.. just an enhancement.  

 

 

Link to comment
Share on other sites

10 hours ago, Caleb Garner said:

ah ok yes that's awesome thanks for that breakdown and comparison..  I find the simplicity of the O2 appealing when it comes to assembly learning..  way more inclined to tackle that before i'd try Colecovision..  but regardless of all that talk..  I'm going to focus on Intellivision first.. 

Programming in Assembly Language on the Intellivision is not for the faint of heart, but it is very possible if you are motivated enough.  :)

 

You may want to start with IntyBASIC and see where that goes.  You can always peek at the generated Assembly code to see how it works.  As always, ask any questions.

 

   dZ.

Link to comment
Share on other sites

Learning your first assembly language is the trickiest one to learn, regardless of what CPU you learn first.  Once you get past your first one, other assembly languages become easy.  Other CPUs will have their quirks and some difference in syntax details, but when you squint a bit, they all look similar.  Also, you'll start to appreciate and understand how computers work at a deeper level than before.

Link to comment
Share on other sites

awesome thanks @DZ-Jay yea I know i've never been in love with deep programming so i think "going lower" isn't going to be my wisest move, but it is great to be able to see how the intybasic translates to assembly.   I got things setup nicely for pc / mac with dropbox so i can compile on either using their own respective paths.  

 

Pro tip for anyone wanting to use jzintv on mac..  you need a framework (SDL) in the library/frameworks folder..  this was not in the book, but other than that I can confirm this stuff works under OSX 10.14.6   Some things that say "works with OSX 10.6 and higher" doesn't mean it works with everything above.. i think 10.15+ has dropped all 32bit legacy stuff so I've not upgraded.  

 

Screen Shot 2021-08-25 at 6.49.10 AM.png

 

I only take some comfort in Odyssey 2 assembly because i'm that much more limited in what the system can even do.  That much less than the intellivision making it easier to wrap my head around.. heh.   The idea that i'd ever be able to make a game for something more powerful like the C64 or especially the Amiga in assembly is where i feel like that would be suicidal effort because it's just that much more content and power to deal with. 

 

@Lathe26 That was a big question i had with assembly was how universal it might be.  So that's good to know, but I get how it is much more tailored to each cpu or rather how you talk in assembly to each machine varies.  

Edited by Caleb Garner
Link to comment
Share on other sites

3 hours ago, Caleb Garner said:

@Lathe26 That was a big question i had with assembly was how universal it might be.  So that's good to know, but I get how it is much more tailored to each cpu or rather how you talk in assembly to each machine varies.  

 

Like @Lathe26 said, learning Assembly Language for the very first time is the hardest part.  The critical point is figuring out how to turn higher-level logic into the lower-level steps that the machine understands.  This is the same on any platform:  the CPU mostly knows how to move numbers from its registers to memory, and vice versa; and to perform basic arithmetic and logic operations on those numbers.

 

So, acquiring the cognitive skills that allow you to break down more complex functions into such primitive instructions is the hard part.  Once you have that, then it's just a matter of learning the specific flavour of instructions of each CPU, and their particular capabilities, limitations, and idiosyncrasies -- but in principle, they are all very similar.

 

So, if you already know how to program the O^2 in Assembly -- and you enjoy it -- you may want to give a try on the Intellivision as well.  However, with IntyBASIC around, it is not really necessary anymore.  :)

 

    -dZ.

Edited by DZ-Jay
Link to comment
Share on other sites

yea i just got "hello world" deep with O2 and jeez that took a bit of understanding something even that simple..  like intellivision it's a decent number of lines of code to even show that simple message..    so yea intybasic is much preferred. BUT if i really do go into assembly, I'll start with O2...  intybasic gets me as far as I'd likely even need to be in the intellivision door..  but then O2 and Coleco are the other machines i'd love to make something for, but since the O2 is simpler, i figure it would be "easier" to program for..  and work up from there, but this is all down the road..  intybasic is my focus now.  

 

I have a videopac sd cartridge for the O2 so I was able to display the "hello world" rom on a real device.  so the full path has at least been established.  Also adds to the excitement of making something for it. 

 

a little ahead of myself here but i have to ask.   the "helloworld.rom" that is generated.  is this what i could put into an LTO cartridge?  I don't have the LTO yet, but when that day arrives just curious what i'd copy over.  

Link to comment
Share on other sites

FWIW, I have taught myself 6502 in the past 25 years and took 68000 classes at the university. In the past few years, I've had brief looks at 8048, F8, 1802, Z80 and CP-1610, and got lightheaded at how the instruction sets and registers vary despite being contemporary. To be honest, I had to visit the Usborne book Machine Code for Beginners in order to even understand Z80 from a 6502 perspective, as I could not find a single book or other resource that would create a machine code program for different CPUs side by side. I'm sure if I put more effort into it, I would get further but it didn't come naturally for me to get coding in a different machine language than the one I already know.

Link to comment
Share on other sites

3 minutes ago, carlsson said:

FWIW, I have taught myself 6502 in the past 25 years and took 68000 classes at the university. In the past few years, I've had brief looks at 8048, F8, 1802, Z80 and CP-1610, and got lightheaded at how the instruction sets and registers vary despite being contemporary. To be honest, I had to visit the Usborne book Machine Code for Beginners in order to even understand Z80 from a 6502 perspective, as I could not find a single book or other resource that would create a machine code program for different CPUs side by side. I'm sure if I put more effort into it, I would get further but it didn't come naturally for me to get coding in a different machine language than the one I already know.

That's probably because you are old and set in your ways, like the rest of us.  :grin:

 

    -dZ.

  • Like 1
Link to comment
Share on other sites

Well not being a spring chicken myself, I know I've only got so many spare cycles to comprehend any new language let alone challenging ones.  I do suspect unless Colecovision develops some "ColecoBasic" option, I don't think I'm going to get into that..  Though someone DID make a book for the Coleco so that gives me some hope down the road because the Super Game Module opens up more power..

 

What a shame intellivoice isn't easier to tap into..  hope to still try that at some point..  but i mean it IS crazy that it seems like only the launch titles (and some homebrew) games ever used the intellivoice..  it added so much depth to games like B-17 bomber.. 

Link to comment
Share on other sites

4 hours ago, carlsson said:

FWIW, I have taught myself 6502 in the past 25 years and took 68000 classes at the university. In the past few years, I've had brief looks at 8048, F8, 1802, Z80 and CP-1610, and got lightheaded at how the instruction sets and registers vary despite being contemporary. To be honest, I had to visit the Usborne book Machine Code for Beginners in order to even understand Z80 from a 6502 perspective, as I could not find a single book or other resource that would create a machine code program for different CPUs side by side. I'm sure if I put more effort into it, I would get further but it didn't come naturally for me to get coding in a different machine language than the one I already know.

To be clear, I agree that there are particular architectural features that are sufficiently distinct across CPUs that are not easily transportable, but I still assert that the hardest part is learning to think at a low enough level of detail in order to break down complex functionality into discrete steps.  That is a discipline and a skill that applies to all architectures, and is -- in my estimation -- the one factor that most influences the steep learning curve.

 

(As one of my professors put it, try to describe how to brush your teeth or walk up a staircase to someone unfamiliar with such mechanical tasks.  Now, try to describe them to an alien who has no concept of what a tooth or a leg or a staircase is, or even that there are such things as mechanical -- as opposed to other -- tasks.)

 

I come from an x86 architecture background, so learning the 6502 was a bit hard (still is, for I never mastered it), because it took me a while to wrap my mind behind zero-page indexing and things like that.  However, the concepts of loading and storing values and accumulator operations seemed similar enough.

 

When I later encountered the CP-1610, I was taken aback by the complete lack of load and store operations, and the orthogonal instruction approach of move in and out of everything. (I eventually found them liberating, and perhaps a testament to the popularity of the PDP-11 from which they were taken.)

 

In my personal experience, overcoming and adapting to those differences -- as challenging as it was -- was not as hard as actually being able to break down complex operations and higher level patterns, such as linked lists, object records, list sorting and searching, arithmetic expression evaluation, conditional flow, etc., into their discrete CPU operations.


Anyway ... sorry for the digression.  Now, on with the topic.
 

   dZ.

Edited by DZ-Jay
Link to comment
Share on other sites

I've had a look at 6803 too (a variant of the 6800 and 6809, all Motorola chips slightly different). Despite coming from a 6502 background, I found it somewhat alien too, like waking up in a world that looks like ours but the colour spectrum has been shifted 60 or 90 degrees.

 

But yes, let's focus on supporting Caleb in his IntyBASIC adventures.

  • Like 2
Link to comment
Share on other sites

to everyone, i'm loving the side talk too though as i've always wondered what were the challenges that lower level stuff offers and yes absolutely I can see how breaking down broader concepts we just "get" are simply not understood as you get closer and closer to 0's and 1's!  That you have to define more and design more and debug more.. 

 

I'm not a great coder or exceptionally gifted in breaking things down, as i've always seen myself more as a game designer, but have been fortunate enough to have worked with talented programmers who can do that kind of heady heavy lifting and collaborate, but i'm hoping i can keep things more controlled in a (relatively) simple environment compared to say.. writing a game in assembly for the Amiga 1200..  way more power, way more possibilities (and colors!) so yes, looking forward to spending more time with the book this weekend!  

 

I did the second little code challenge and i'm already having some questions, but i'm going to do this face going across the screen and the subsequent "first sprite" test..  but it's all one step at a time.  Going to not let it overwhelm.. 

  • Like 2
Link to comment
Share on other sites

On 8/27/2021 at 9:16 AM, Caleb Garner said:

I do suspect unless Colecovision develops some "ColecoBasic" option, I don't think I'm going to get into that.. 

The closest I can think of is a project called MSXBAS2ROM, which is a basic compiler for the MSX. From there I suppose one could try to convert the resulting rom to the Colecovision.

Edited by cmadruga
Link to comment
Share on other sites

To some extent, it would seem that Boriel ZX BASIC also has support for Colecovision, though I don't know how much. Of course they have working C cross compilers, something that was in the planning stage for Intellivision too but I don't know what the results have been in that area. Personally I'm fine with IntyBASIC and not sure that a C compiler would be able to squeeze that much more out of it, though syntactically it might offer other ways to manipulate memory.

Link to comment
Share on other sites

Also thanks for those coleco answers as i know that was getting off topic.. i'm in no hurry to run over there as i am absolutely loving this intybasic experience..  all i need is an LTO and my development path will be complete!  or really any flash rom, but i know the others are extinct so i don't even look for them.  

Edited by Caleb Garner
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...