fabrice montupet Posted January 23, 2019 Share Posted January 23, 2019 By developing a specific TI-99 version of Zelda, you tackled to a myth in the videogames. And you succeed with brio! Thank you for your amazing work. 1 Quote Link to comment Share on other sites More sharing options...
Airshack Posted January 23, 2019 Share Posted January 23, 2019 Super slick and impressive! I want to play just so I can look at it all. I’ve never played the NES, or Zelda anywhere, so Tilda with be entirely new for me. Can’t wait! Sent from my iPhone using Tapatalk Pro Quote Link to comment Share on other sites More sharing options...
+acadiel Posted January 23, 2019 Share Posted January 23, 2019 This is totally awesome! Great attention to detail, and well done with the palette limitations. Quote Link to comment Share on other sites More sharing options...
PeteE Posted January 23, 2019 Author Share Posted January 23, 2019 Thanks for the kind words. I've got a feeling 2019 is gonna be a great year for game releases. 7 Quote Link to comment Share on other sites More sharing options...
Iwantgames:) Posted January 25, 2019 Share Posted January 25, 2019 Looking forward to this one great work! Quote Link to comment Share on other sites More sharing options...
cbmeeks Posted January 25, 2019 Share Posted January 25, 2019 I may have found a bug. I was playing (I believe) the newest version. It has the title screen and moving enemies. When I played it in Classic99, everything seemed normal. But playing on my real hardware I noticed that going into a cave (or underworld) didn't work. In fact, the screen was mostly empty and black and the enemies from the previous screen were inside. I can post screenshots if you like. Quote Link to comment Share on other sites More sharing options...
PeteE Posted January 25, 2019 Author Share Posted January 25, 2019 I may have found a bug. I was playing (I believe) the newest version. It has the title screen and moving enemies. When I played it in Classic99, everything seemed normal. But playing on my real hardware I noticed that going into a cave (or underworld) didn't work. In fact, the screen was mostly empty and black and the enemies from the previous screen were inside. I can post screenshots if you like. No need for screenshots. It sounds like you might have two different work-in-progress versions between classic99 and your real hardware. Please expect to find bugs or unfinished parts, until I release an alpha test for community bug hunting. To answer your earlier question in the thread, I've decided not to personally produce a cartridge or manual. I won't place any restrictions on the binary, so others could produce cartridges. 6 Quote Link to comment Share on other sites More sharing options...
digdugnate Posted January 27, 2019 Share Posted January 27, 2019 waiting for the folks that can make gold-colored TI carts 4 Quote Link to comment Share on other sites More sharing options...
cbmeeks Posted January 28, 2019 Share Posted January 28, 2019 Gold TI cart with this game would be the greatest thing since sliced bread. Oh, don't forget the secret name in Zelda. In Zelda, if you type your name as "LINK", you play the game in a much harder setting. You should do something similar like "TI" or "994A". 1 Quote Link to comment Share on other sites More sharing options...
PeteE Posted January 28, 2019 Author Share Posted January 28, 2019 (edited) Gold TI cart with this game would be the greatest thing since sliced bread. Oh, don't forget the secret name in Zelda. In Zelda, if you type your name as "LINK", you play the game in a much harder setting. You should do something similar like "TI" or "994A". I don't have any provisions for the second quest, just want to finish the first quest for now. But I've seen "randomizer" romhacks that put the items in random locations based on a seed - it might be interesting to try something like that, perhaps randomized dungeon layouts too. Edited January 28, 2019 by PeteE 5 Quote Link to comment Share on other sites More sharing options...
Iwantgames:) Posted February 16, 2019 Share Posted February 16, 2019 Just got the FinalGROM99 today and tried this out. OMG! It's even more awesome than I imagined it would be! Great job! Quote Link to comment Share on other sites More sharing options...
PeteE Posted February 21, 2019 Author Share Posted February 21, 2019 (edited) So I'm working on a minimal-memory-usage sound and music player for this game. The player will use 16 bytes of scratchpad RAM: a 3-bit duration and 13-bit data pointer for music and sound effects, on each of the 4 sound channels. The 13-bit data pointer requires that all sound pattern data reside in the same 8K bank as the player code. Looping and subpatterns will be supported, which requires 8 bytes for a return address for each channel (but can be stored in VDP memory.) (Looping is a subpattern jump without a return.) I'm designing my own compressed format for this, here's the current bitstream layout: * pattern format * 0ddd vvvv duration and volume * 1ddd vvvv nnnnnnnn duration, volume and note table index * note table * 0000 zzzz 00xx yyyy frequency divider xyz 0-1023 or noise 0-7 * aaaa aaaa aaaa aaaa subpattern address (return address stored in VDP) * 1111 1111 1111 1111 subpattern return (address loaded from VDP) * subpattern return could also be fixed table entry 255 * sound effects must terminate with subpattern return * number of note table entries cannot exceed 256 Is it correct to say that "sound lists" are the lowest common denominator, if I wanted to make a converter to my format? (I have downloaded Rasmus' SoundListRipper and some sound lists from OLD CS1 to use for testing.) Edit: How is looping represented in a sound list? Edited February 21, 2019 by PeteE 2 Quote Link to comment Share on other sites More sharing options...
+FarmerPotato Posted February 21, 2019 Share Posted February 21, 2019 Edit: How is looping represented in a sound list? in a TI sound list, termination is indicated by a 0 duration, but looping is indicated by a 0 length byte, followed by 2 bytes of address. Parsec sound list sample: SNDVDP EQU >3800 START ADDRESS OF VDP SOUND LIST LOOPHB EQU >38 SOUND LOOP HIGH BYTE ADDRESS LOOPLB EQU >00 SOUND LOOP LOW BYTE ADDRESS ******************************************** * SOUND LISTS - PARSEC * ******************************************** SHPSND BYTE 4,>DF,>FF,>93,>B3,1 FREQ TRICK SOUND BYTE 4,>80,>3F,>AE,>3E,60 BYTE 0,LOOPHB,LOOPLB OFFSND BYTE 4,>9F,>BF,>DF,>FF,0 ALL GENERATORS OFF SLWSND BYTE 5,>9F,>BF,>DF,>FC,>E7,1 SLOW SHIP FIRE BYTE 2,>C2,>05,30 BYTE 0,LOOPHB,LOOPLB FSTSND BYTE 5,>9F,>BF,>DF,>F6,>E7,1 FAST SHIP FIRE BYTE 2,>C2,>05,30 BYTE 0,LOOPHB,LOOPLB EXPSND BYTE 7,>9F,>BF,>DF,>E7,>F0,>C0,>07,5 EXPLOSION BYTE 1,>F1,6 BYTE 1,>F2,7 BYTE 1,>F3,8 BYTE 1,>F4,9 BYTE 1,>F5,10 BYTE 1,>F6,11 BYTE 1,>F7,12 BYTE 1,>F8,13 BYTE 1,>F9,14 BYTE 1,>FA,15 BYTE 1,>FB,16 BYTE 1,>FC,17 BYTE 1,>FD,18 BYTE 1,>FE,30 BYTE 1,>FF,0 FIRSND BYTE 4,>9A,>BF,>DF,>FF,1 LASER SHOT BYTE 3,>80,>0A,>98,1 BYTE 3,>80,>0C,>96,1 BYTE 3,>80,>10,>94,1 BYTE 3,>80,>14,>92,1 BYTE 3,>80,>18,>90,1 BYTE 3,>80,>1C,>92,1 HB20 EQU $+2 BYTE 3,>80,>20,>94,1 BYTE 3,>80,>28,>96,1 BYTE 3,>80,>30,>98,1 BYTE 3,>80,>38,>9A,1 BYTE 3,>80,>3E,>9C,1 BYTE 1,>9F,0 1 Quote Link to comment Share on other sites More sharing options...
Asmusr Posted February 22, 2019 Share Posted February 22, 2019 (edited) So I'm working on a minimal-memory-usage sound and music player for this game. The player will use 16 bytes of scratchpad RAM: a 3-bit duration and 13-bit data pointer for music and sound effects, on each of the 4 sound channels. The 13-bit data pointer requires that all sound pattern data reside in the same 8K bank as the player code. Looping and subpatterns will be supported, which requires 8 bytes for a return address for each channel (but can be stored in VDP memory.) (Looping is a subpattern jump without a return.) I'm designing my own compressed format for this, here's the current bitstream layout: * pattern format * 0ddd vvvv duration and volume * 1ddd vvvv nnnnnnnn duration, volume and note table index * note table * 0000 zzzz 00xx yyyy frequency divider xyz 0-1023 or noise 0-7 * aaaa aaaa aaaa aaaa subpattern address (return address stored in VDP) * 1111 1111 1111 1111 subpattern return (address loaded from VDP) * subpattern return could also be fixed table entry 255 * sound effects must terminate with subpattern return * number of note table entries cannot exceed 256 Is it correct to say that "sound lists" are the lowest common denominator, if I wanted to make a converter to my format? (I have downloaded Rasmus' SoundListRipper and some sound lists from OLD CS1 to use for testing.) Edit: How is looping represented in a sound list? I'm also working on a minimal-memory-usage sound and music player. My approach is to start with a sound player that has a number of channels where it can play notes. A note is here defined as an instrument played at a given frequency, and an instrument describes how the volume and frequency changes over time (the instrument definition takes 4-6 bytes). So the sound player in itself can play pings, boings and crashes, and can be used for sound effects with very little input data. On top of that I have my music player that can play a module consisting of a number of simultaneous tracks. Each track consists of a list of sequences, and may also contain loops. A sequence consists of a list of notes that the sound player can play. Everything is stored as references, so sequences and notes can be reused. The scratch pad footprint is somewhat higher than with your approach: 6 bytes for each channel of the sound player and 8 bytes for each track of the music player, and I probably need 4 channels and 2-3 music tracks. What I will try to do next is to (automatically) convert a tune edited in the MOD2PSG2 tracker into my module format, it should be possible with some limitations. Edited February 22, 2019 by Asmusr 4 Quote Link to comment Share on other sites More sharing options...
PeteE Posted March 12, 2019 Author Share Posted March 12, 2019 I got my ultra-low memory sound effects and music player working finally. I didn't have to make any major changes in my design, and I wrote a converter in C that will take a file containing a group of sound lists, and output my compressed format and note table in assembly. Some of the original sounds are PCM on the NES, so I had to synthesize those myself - for example: the laser sword beam, the player getting hurt, and dungeon key door opening. Here's a clip, I hope the volume is loud enough. It was recorded at 60fps, but youtube seems reduce it... Also, there is a small hitch when traveling between screens, drawing the next screen takes more than one frame. 14 Quote Link to comment Share on other sites More sharing options...
+adamantyr Posted March 12, 2019 Share Posted March 12, 2019 Wow, that sounds fantastic! You recreated the sounds nearly perfectly! The only one that was off was the dungeon doors, they're a little lower base than the native TI sound chip can do due to the 3mhz clock. Quote Link to comment Share on other sites More sharing options...
PeteE Posted March 12, 2019 Author Share Posted March 12, 2019 Yeah, there's not a lot you can do just by modulating the white noise channel... I consider myself lucky it sounds good at all. 1 Quote Link to comment Share on other sites More sharing options...
ti99iuc Posted March 12, 2019 Share Posted March 12, 2019 Wow fantastic progress on this game! Congratulations for the result! Sounds are incredibile. Quote Link to comment Share on other sites More sharing options...
Tursi Posted March 12, 2019 Share Posted March 12, 2019 It looks and sounds great! It's easy to forget that we're watching a TI here. 2 Quote Link to comment Share on other sites More sharing options...
jrhodes Posted March 12, 2019 Share Posted March 12, 2019 I love it. Quote Link to comment Share on other sites More sharing options...
digdugnate Posted March 12, 2019 Share Posted March 12, 2019 there are just no words to how good this is- holy smokes. totally a labor of love it looks like, and we appreciate the work! 1 Quote Link to comment Share on other sites More sharing options...
Asmusr Posted March 12, 2019 Share Posted March 12, 2019 The only one that was off was the dungeon doors, they're a little lower base than the native TI sound chip can do due to the 3mhz clock. Couldn't you use periodic noise controlled by tone generator 3? Quote Link to comment Share on other sites More sharing options...
+adamantyr Posted March 12, 2019 Share Posted March 12, 2019 Couldn't you use periodic noise controlled by tone generator 3? Periodic noise is just a buzz noise, more regular than a white noise. It doesn't actually go lower in tone. The TI sound chip is pretty good but it's hamstrung on base notes because of the 3mhz clock. Because the frequency divider is faster, it pushes the tones up to higher octaves. The same sound chip in a 1mhz architecture would be able to go about 2 octaves lower easily. 1 Quote Link to comment Share on other sites More sharing options...
PeteE Posted March 12, 2019 Author Share Posted March 12, 2019 (edited) Periodic noise doesn't have the right "sound texture". I think the NES APU and the 9919 are clocked the same internally, so I don't think that's an issue either. And there's no way to play PCM directly at 60Hz. Here is the original PCM sound: OriginalDoorSound.wav and here is what I came up with using white noise: TildaDoorSound.wav EDIT: Oh, if you're talking about bass notes, then yes, the periodic noise can be used to play at 1/15th of the frequency of GEN3 and it does have a more buzzy feel. I am doing that in the music, you can usually hear where it flips between using GEN3 directly and Periodic. Maybe it would be more consistent to use Periodic for the whole APU Triangle channel? Edited March 12, 2019 by PeteE 1 Quote Link to comment Share on other sites More sharing options...
+adamantyr Posted March 12, 2019 Share Posted March 12, 2019 Periodic noise doesn't have the right "sound texture". I think the NES APU and the 9919 are clocked the same internally, so I don't think that's an issue either. And there's no way to play PCM directly at 60Hz. Here is the original PCM sound: OriginalDoorSound.wav and here is what I came up with using white noise: TildaDoorSound.wav EDIT: Oh, if you're talking about bass notes, then yes, the periodic noise can be used to play at 1/15th of the frequency of GEN3 and it does have a more buzzy feel. I am doing that in the music, you can usually hear where it flips between using GEN3 directly and Periodic. Maybe it would be more consistent to use Periodic for the whole APU Triangle channel? Yeah, the TI one is fine, don't sweat it. It's the only one I heard that wasn't an errie perfect reproduction of the original! Do you have an idea yet of when the game will be complete? How far away is the finish line? Any major tasks left to do? 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.