Jump to content
IGNORED

Deep Zone


artrag

Recommended Posts

  • 3 months later...

DZ, I would add voice samples using this:

 

http://atariage.com/forums/topic/253650-voice-without-intellivoice/

 

Which samples do you suggest and when ?

 

Are you thinking of a voice "enhanced" game (with samples here and there like some classic arcade games); or are you thinking more of Intellivoice-style games, where the voice is integral part of the game mechanics?

Link to comment
Share on other sites

Enhanced game, not sure if all players understand the speech.

 

I downloaded the Jun/26 version from the future :grin: and played it without finding it, I searched even for the voice in the source code :?

 

Anyway the sound effects are great :)

  • Like 1
Link to comment
Share on other sites

Enhanced game, not sure if all players understand the speech.

 

Of course! Well, in my head, I imagine hearing the navigation computer telling you the next sector you are entering, while in between waves/level. Sort of like in Gyruss, where it says "3 warps to Neptune," you can have a voice saying something similar like "Entering sector 78."

 

Also, when the boss arrives, have a deep voice talking in some gibberish alien language to announce his arrival.

 

My idea is that it would be cool to have the voice do "background" stuff, saying pseudo-technical stuff here and there, just to add atmosphere. Think THX-1138 or the Star Wars rebel assault just as examples of this sort of thing.

 

-dZ.

 

 

 

 

I downloaded the Jun/26 version from the future :grin: and played it without finding it, I searched even for the voice in the source code :?

 

Anyway the sound effects are great :)

 

:thumbsup:

Link to comment
Share on other sites

I would add these sentences

 

- "new enemy wave approaching" each time a new enemy type enters the game

- "large enemy ship approaching" each time a boss arrives

- "level up" each time the game increases its speed after all enemy types have passed

 

I could also add some "ah!" or "ouch!" each time some enemies get killed

 

Going to experiment a bit. Any nice wav to suggest for these interjections?

 

PS

no more release from the future ;-)

 

PPS

I'm also trying to improve the voice coder

I think there are margins of improvement

I'm refining pitch estimation algorithm and finding a way for adding more wisely the noise only in unvoiced frames

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

I would add these sentences

 

- "new enemy wave approaching" each time a new enemy type enters the game

- "large enemy ship approaching" each time a boss arrives

- "level up" each time the game increases its speed after all enemy types have passed

 

I could also add some "ah!" or "ouch!" each time some enemies get killed

 

Going to experiment a bit. Any nice wav to suggest for these interjections?

 

Sounds good. I like the "computer assisted" situation-awareness.

 

PS

no more release from the future ;-)

 

PPS

I'm also trying to improve the voice coder

I think there are margins of improvement

I'm refining pitch estimation algorithm and finding a way for adding more wisely the noise only in unvoiced frames

 

Brilliant. It already sounds pretty good, so any improvement is just icing on the cake. :)

Link to comment
Share on other sites

  • 1 month later...

Feature request:

I was fighting with intybasic to fit in rom data and code including voice samples.

 

Wouldn't be possible to make the compiler sort it out by itself?

 

Once you choose the rom layout according to the extensions plugged (ECS, intellivoice, whatever), the available room in rom is known and fixed.

From what I see nothing prevents the compiler to allocate procedures and data in order to fit them in the available room.

The sole limit is to not separate adjacent data lines.

Is it possible?

Edited by artrag
Link to comment
Share on other sites

Feature request:

I was fighting with intybasic to fit in rom data and code including voice samples.

 

Wouldn't be possible to make the compiler sort it out by itself?

 

Once you choose the rom layout according to the extensions plugged (ECS, intellivoice, whatever), the available room in rom is known and fixed.

From what I see nothing prevents the compiler to allocate procedures and data in order to fit them in the available room.

The sole limit is to not separate adjacent data lines.

Is it possible?

 

Well, there is at least one thing preventing the compiler from allocating procedures and data in order to fit them in the available room: the fact that it doesn't do any allocation or linking itself. Remember that the assembler (run as a second step outside the compiler) generate the object code without a linker.

 

It is indeed possible to have IntyBASIC do this, but I'm sure it'll be a lot more work to put on the compiler. Still, it's a good thing to have; I just think it's not as trivial as some think.

 

That said, Joe Z. and Óscar have been talking about how to get information from the assembler so that the compiler could do this.

 

-dZ.

Link to comment
Share on other sites

Not trivial but you do not need to integrate the assembler.

You need to know the size of the instructions you now generate and put orgs in the asm code in order to fit the current memory layout.

Sure, but that's the trick: knowing the size of each instruction and keeping track of the memory layout is what the assembler handles today. IntyBASIC by its original design deferred all that to the assembler, which is part of why you needed a two step build.

 

So, of course, if IntyBASIC did the one thing it doesn't do today, it wouldn't need the assembler to do it for it. ;)

 

Like I said, I agree that it is worth pursuing, I just think it'll take some time and effort.

 

dZ.

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

Store the size of opcodes with their text, compute the size of procedures and data chunks, fit the chunks in the memory layout, add orgs to the generated asm.

Cool. Let me know when you have your compiler ready and I'll test it.

Link to comment
Share on other sites

Still waiting for your sdk

I know, and on my title screen, and on Oscar's updated version of IntyBASIC with all the frills in it.

 

Too bad there are so many things you are waiting for that prevent you from producing a game. At this pace, the world will never see your masterpieces. We're all a bunch of slackers. :(

 

dZ.

Link to comment
Share on other sites

I cannot find your last released project for intellivision...

Should I look into posts from 2014 or before?

 

You can look in my profile for my works in progress. You can also join the INTVPROG mailing list if you really want to keep abreast of all my contributions. Perhaps you'd like to participate yourself? :)

 

I'm also working on a fully-featured high(ish)-level programming framework for the Intellivision, but it keeps getting bumped down in priority due to work and personal life. It's like 80% done right now. If you'd like to try it out send me a PM, I'd be happy to share it and perhaps you can help test it and improve it. :)

 

-dZ.

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

ah, no release ... what a miss

Yeah, at least it's all my doing and not being held up by waiting on others.

 

in the meanwhile you can use my voice encoder and its intybasic player,

it is fully working and ready to use

Thanks. That's something at least. I'll check it out whenever I get around to using IntyBASIC. I look forward to hearing loads of voice samples in your next game.

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

DZ-Jay is probably going to beat me up for mentioning the word bankswitching. You could try to make a Mattel page-flipping type ROM if you need more space. Joe Z explained how page flipping works and thankfully you can use asm directive in Intybasic to set the ROM origin for AS1600 to pick up and execute.

 

http://atariage.com/forums/topic/254097-intybasic-support-for-rom-region-swapping/

 

Alternatively you could compress the data and add cartridge RAM support for your project to unpack the data to cartridge RAM and run the sound samples from there. I'm not sure if there's any decompressor made for CP1600 CPU, like pletter, bitbuster, and etc.

 

So those 2 options are the good choice to go through now. Your ROM size can go up to 84 Kilobyte(42K Word) of data without bankswitching, less if you really need ECS stuff. I usually use the cfg file it generate to figure out how big my segment is getting like, $0000 - $1BFF = $5000. Substracting,$1BFF with $0000 is 7167 bytes, I only have 1 kilobyte left in that segment since cart.mac said that $5000-$6FFF is a valid address. If you're over 8191, then move some data over to the other segment. My game ROM, Mad Bomber, file size is 39.5 KB now.

Link to comment
Share on other sites

DZ-Jay is probably going to beat me up for mentioning the word bankswitching. You could try to make a Mattel page-flipping type ROM if you need more space. Joe Z explained how page flipping works and thankfully you can use asm directive in Intybasic to set the ROM origin for AS1600 to pick up and execute.

 

 

LOL! Bank-switching is a real option. Especially for a game with voice samples, which take considerable space in ROM. One downside is that the banks are mutually exclusive, so you will have to flip pages regularly in order to play the samples you need. You could mitigate this if the game has various phases, by storing data for each phase in its own bank.

 

The document "/doc/utilities/as1600.txt" that comes with the SDK-1600 (included as "/Documents/Tech/as1600.txt" in the IntyBASIC SDK), has a lot more information on how bank-switching works. It also explains how to define "Overlaid Tables" of data that can be dynamically selected via the bank-switching functionality. This can be very useful for this sort of situation.

 

Alas, these are features of the assembler, not of IntyBASIC (at least not yet). However, nothing is stopping an enterprising individual from creating IntyBASIC "macros" that encapsulate this sort of feature. Sure, the underlying functionality will need to be implemented in assembly language, but it can be interfaced via I believe GroovyBee has offered at least one solution for selecting memory segments, and Joe Z. has made recommendations on how to do the bank-switching from IntyBASIC.

 

-dZ.

  • Like 1
Link to comment
Share on other sites

My voice encoder needs a word per channel per frame. Using 3 channels, it takes 6 bytes per frame, i.e. 360 bytes per second of speech.

So I think DZG should safely fit in a plain rom without bank switching.

The current problems are about partitioning the code and the data across the holes in the memory layout, but the whole rom atm is barely 30K

 

This rom has 4 voice samples on 6 channels (now interfering with music, only one sample is used) and is about 27K

NB: use with ECS

dzgorf.rom

Edited by artrag
  • Like 2
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...