Jump to content

Photo

Bouncy's obstacle course


42 replies to this topic

#1 Asmusr OFFLINE  

Asmusr

    River Patroller

  • 3,093 posts
  • Location:Denmark

Posted Fri Feb 8, 2019 5:30 PM

Almost everything I have made for the TI-99/4A requires a RAM expansion. It's boring to always do the same, so I wanted to try something else.  :)

 

Here is a preview of a smooth scrolling game that runs on an unexpanded TI-99/4A from an 8K ROM cartridge - no 32K RAM or disk drive required.

 

 

The game is currently 6.2K and has 4 levels of 256x20 characters, 2 of which are shown in the video. The reason that is possible is due to lz4 data compressiom, thanks to Tursi and others. The cool thing is that it's running at 60Hz despite storing the map in VDP RAM, and for now it's actually only using 2/5 of the CPU.

 

I might decide to add another ROM bank of 8K for the full game, but the essential thing is that this could have been produced and sold in 1982, which is not true for a game like Flying Shark that requires a 512K ROM + 32K RAM. 


Edited by Asmusr, Fri Feb 8, 2019 6:25 PM.


#2 Nick99 OFFLINE  

Nick99

    Star Raider

  • 89 posts

Posted Fri Feb 8, 2019 6:20 PM

Great, it looks good!  :)  :thumbsup:

If that game had been available in the 80´s, I would have played it for hours!



#3 mindlord OFFLINE  

mindlord

    Star Raider

  • 88 posts

Posted Fri Feb 8, 2019 6:23 PM

Fantastic. It's a challenge writing a game with such limits.

Sent from my SM-J727V using Tapatalk

#4 Vorticon OFFLINE  

Vorticon

    River Patroller

  • 3,619 posts
  • Location:Eagan, MN, USA

Posted Fri Feb 8, 2019 6:44 PM

Very cool! I love the minimalistic target setup.

#5 Opry99er ONLINE  

Opry99er

    Quadrunner

  • 10,679 posts
  • Location:Hustisford, WI

Posted Fri Feb 8, 2019 7:42 PM

So much win.....

#6 LASooner ONLINE  

LASooner

    Moonsweeper

  • 389 posts

Posted Fri Feb 8, 2019 8:00 PM

Amazing! I both like you and hate you for the same reason. You're too good at this. 



#7 Iwantgames:) OFFLINE  

Iwantgames:)

    River Patroller

  • 2,457 posts

Posted Fri Feb 8, 2019 11:35 PM

Beautiful :)

#8 fabrice montupet OFFLINE  

fabrice montupet

    Moonsweeper

  • 494 posts
  • Location:Burgundy - France

Posted Sat Feb 9, 2019 8:43 AM

Exciting! I like it :)



#9 Ksarul OFFLINE  

Ksarul

    Quadrunner

  • 5,212 posts

Posted Sat Feb 9, 2019 1:39 PM

I like this!  I suspect Turtles will be trapped on his console for days once this one is done. . .  :)  :)  :)



#10 Tursi OFFLINE  

Tursi

    Quadrunner

  • 5,572 posts
  • HarmlessLion
  • Location:BUR

Posted Sun Feb 10, 2019 3:22 PM

This is awesome!

Challenge notwithstanding, I think you should do the second bank. This needs a soundtrack! :)

#11 jrhodes OFFLINE  

jrhodes

    Moonsweeper

  • 286 posts

Posted Sun Feb 10, 2019 3:24 PM

This looks really good!

Keeping my eye on this, & hoping for a E.A. Option #5 release.



#12 Asmusr OFFLINE  

Asmusr

    River Patroller

  • Topic Starter
  • 3,093 posts
  • Location:Denmark

Posted Sun Feb 10, 2019 3:49 PM

This is awesome!

Challenge notwithstanding, I think you should do the second bank. This needs a soundtrack! :)

 

Thanks, and yes it needs a soundtrack, but it's challenging since I can't use your vgm/spf player because it uses too much RAM. For the sound fx I'm currently using a simple player where each effect only takes 4-6 bytes of data (basically just start and step for frequency and volume). I might extend that to be able to combine sound effects into tunes.


Edited by Asmusr, Sat Mar 2, 2019 2:37 PM.


#13 digdugnate OFFLINE  

digdugnate

    River Patroller

  • 2,249 posts

Posted Sun Feb 10, 2019 4:25 PM

yet another fantastic game from you.  :) this looks great!



#14 Tursi OFFLINE  

Tursi

    Quadrunner

  • 5,572 posts
  • HarmlessLion
  • Location:BUR

Posted Sun Feb 10, 2019 4:40 PM

Thanks, and yes it need a soundtrack, but it's challenging since I can't use your vgm/spf player because it uses too much RAM. For the sound fx I'm currently using a simple player where each effect only takes 4-6 bytes of data (basically just start and step for frequency and volume). I might extend that to be able to combine sound effects into tunes.


Ah, yeah, scratchpad and all. You could trade CPU time for memory and store its data in VDP, but it wouldn't be terribly speedy.

I do have a pending update that reduces the requirements, but it probably still won't be terribly scratchpad-friendly.

#15 OLD CS1 OFFLINE  

OLD CS1

    >OLD CS1█

  • 6,027 posts
  • Technology Samurai
  • Location:Tallahassee, FL

Posted Sun Feb 10, 2019 7:23 PM

If you are sticking to the old 80s model, is there too much data transfer through the VDP to use sound lists in VDP RAM? You could use the native ISR player, or figure the longest frame will be 13 bytes (byte counter, 3 bytes each tone including attenuation, 2 bytes for the noise including attenuation, duration.)  You would need a source location pointer of one or two bytes, so if you have 14 or 15 bytes to spare in CPU RAM (a lot to spare, sadly) you could set up a buffer there, use your own ISR routine, and transfer what you need from VDP RAM when you need it.  For that matter, you might could do with the list source in the same bank of ROM and forget the idea of a CPU RAM buffer.

 

ISR lists can be severely clunky, obnoxiously long with duplication, just have to plan around that issue, maybe using some modifications of the sound list (extra command for looping, etc.)  I have a script which converts from VGM to sound list, though it slips up on some tricks like frequency sweeps where only the second byte of the command gets sent.



#16 Asmusr OFFLINE  

Asmusr

    River Patroller

  • Topic Starter
  • 3,093 posts
  • Location:Denmark

Posted Fri Feb 15, 2019 3:45 PM

ISR lists can be severely clunky, obnoxiously long with duplication, just have to plan around that issue, maybe using some modifications of the sound list (extra command for looping, etc.)  I have a script which converts from VGM to sound list, though it slips up on some tricks like frequency sweeps where only the second byte of the command gets sent.

 

I guess the reason so few TI games have music playing during the game is that the ISR player is single channel, i.e. it doesn't allow a music sound list to play at the same time as one or more sound fx play lists?


Edited by Asmusr, Fri Feb 15, 2019 3:45 PM.


#17 OLD CS1 OFFLINE  

OLD CS1

    >OLD CS1█

  • 6,027 posts
  • Technology Samurai
  • Location:Tallahassee, FL

Posted Fri Feb 15, 2019 6:57 PM

 

I guess the reason so few TI games have music playing during the game is that the ISR player is single channel, i.e. it doesn't allow a music sound list to play at the same time as one or more sound fx play lists?

 

Likely the case for the built-in ISR.  The only way around this would be to stay ahead of the frame and do manual mixing.



#18 Tursi OFFLINE  

Tursi

    Quadrunner

  • 5,572 posts
  • HarmlessLion
  • Location:BUR

Posted Sat Feb 16, 2019 3:29 AM

But that said, the built-in ISR doesn't really do all that much. Surely you can fit your own player that meets the needs you want? Even if it was just the same as the ISR with a sound effect feature. :)

#19 Asmusr OFFLINE  

Asmusr

    River Patroller

  • Topic Starter
  • 3,093 posts
  • Location:Denmark

Posted Sat Feb 16, 2019 4:33 AM

But that said, the built-in ISR doesn't really do all that much. Surely you can fit your own player that meets the needs you want? Even if it was just the same as the ISR with a sound effect feature. :)

 

Yes I already have written various multi-channel sound list players. The one I used in Road Hunter, for instance, allows 'calls' and repeats: 

 

 

 

* Sound list format:
* Byte 0: Number of sound bytes to send to sound chip, or 0 for repeat, >FF for call, >FE for return
* Byte 1-n: Sound bytes
* Byte n+2: Duration (zero marks the end of the play list)
* For repeat (where byte 0 is 0):
* Byte 1-2: Loop address
* Byte 3: Number of repeats (in addition to first time). If negative repeat forever, i.e. 'goto'.
* For call (where byte 0 is >FF):
* Byte 1-2: Call address
* For return (where byte 0 is >FE): no more bytes.

 

What I don't have is an editor for sound lists that's close to being as easy to use as MOD2PSG2. Perhaps the solution is to use OLD CS1's script for converting VGM into sound lists, but changing it to use calls and repeats is probably not an easy task. Changing my own sound list ripper to support calls and repeats is another option.

 

I'm also considering using your EPSGMOD player again, but did that use less RAM than the VGM player? And didn't it have problems with the pitch of periodic noise used as bass?



#20 OLD CS1 OFFLINE  

OLD CS1

    >OLD CS1█

  • 6,027 posts
  • Technology Samurai
  • Location:Tallahassee, FL

Posted Sat Feb 16, 2019 6:23 AM

At the point you are having to make a lot of changes, I see no reason to not use a more advanced player if you can get its memory usage down.  In any case, if you want to use my script it is in Rexx.  I can run it against any VGM you like.  Think we did that in another thread some time ago.



#21 Tursi OFFLINE  

Tursi

    Quadrunner

  • 5,572 posts
  • HarmlessLion
  • Location:BUR

Posted Sat Feb 16, 2019 3:35 PM

I'm also considering using your EPSGMOD player again, but did that use less RAM than the VGM player? And didn't it have problems with the pitch of periodic noise used as bass?


It looks like it uses about 134 bytes, so IIRC that's comparable. I believe there was some way to correct the bass notes (as the tracker assumes 16-bit shifts), but it's been quite a while since I've looked at that. It was a nice tracker though... I still recommend it for VGM export. ;)

It may be more work than you want to do, but although the "e"psgmod format was kept private, the full psgmod format that the tracker can save in was public information (again, IIRC). You could write a converter from that to your list format that calls each pattern, thus preserving your jumps. Alternately (and this is horrible but something I'd probably do) write each section as a separate VGM, run the converter to playlist, and then just write the core block that calls each section by hand. ;)

#22 Asmusr OFFLINE  

Asmusr

    River Patroller

  • Topic Starter
  • 3,093 posts
  • Location:Denmark

Posted Sun Feb 17, 2019 3:44 PM

It looks like it uses about 134 bytes, so IIRC that's comparable. I believe there was some way to correct the bass notes (as the tracker assumes 16-bit shifts), but it's been quite a while since I've looked at that. It was a nice tracker though... I still recommend it for VGM export. ;)

It may be more work than you want to do, but although the "e"psgmod format was kept private, the full psgmod format that the tracker can save in was public information (again, IIRC). You could write a converter from that to your list format that calls each pattern, thus preserving your jumps. Alternately (and this is horrible but something I'd probably do) write each section as a separate VGM, run the converter to playlist, and then just write the core block that calls each section by hand. ;)

 

I forgot that wrote a Java program to adjust the bass notes in epsgmods 5-6 years ago. :)  



#23 Asmusr OFFLINE  

Asmusr

    River Patroller

  • Topic Starter
  • 3,093 posts
  • Location:Denmark

Posted Sat Mar 2, 2019 12:36 PM

The music is working now - currently just one short tune.

 

I have added the possibility of 'enemy balls' and slowdown tiles.

 

The levels are currently more or less random. As you can see I have big difficulties on the second one. I will aim to make the release version easier than my previous games. :-)

 



#24 fabrice montupet OFFLINE  

fabrice montupet

    Moonsweeper

  • 494 posts
  • Location:Burgundy - France

Posted Sat Mar 2, 2019 1:55 PM

Great music! The enemies give a more exciting course, I like it !
The graphic design is very good, except the stars that I find not very nice.



#25 Nick99 OFFLINE  

Nick99

    Star Raider

  • 89 posts

Posted Sat Mar 2, 2019 4:18 PM

Wow! Lovely! 






0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users