3 Quick 6809 Optimizations
8:02
Precision "Tune"-ing | Asm Sound 3
38:59
Пікірлер
@anjinmiura6708
@anjinmiura6708 2 күн бұрын
The meters are inverted. When a meter of this type is at the top, it means maximum capacity has been consumed (nothing remaining) and when at the bottom, no capacity has been consumed.
@CocoTownRetro
@CocoTownRetro Күн бұрын
Yeah, I can see how that would be unintuitive, and probably breaks some kind of UI usability rule. I just think of it as a performance meter where taller is better (a measure of how much free time we have each field)..
@anjinmiura6708
@anjinmiura6708 Күн бұрын
@@CocoTownRetro I wonder what would happen if other resource consumption meters would be like... RPMs and Fuel would certainly be a problem. A temperature gauge isn't exactly a resource meter but when it's high it's not good. Just things to think about I guess. It's certainly a clever implementation. To test your meter against having too many cycles consumed exceeding the current frame, you can add a loop of NOPs to intentionally consume cycle resources to exceed the current frame and then people can see where "laginess" == "exceeding cycles/frame limits" and this gauge will help a casual viewer/programmer see where such performance problems occur.
@lostwizard
@lostwizard 2 күн бұрын
At 5:50 "read to or written from" :)
@CocoTownRetro
@CocoTownRetro Күн бұрын
Talking is hard
@lostwizard
@lostwizard Күн бұрын
@@CocoTownRetro Indeed it is.
@Torbjorn.Lindgren
@Torbjorn.Lindgren 2 күн бұрын
Two very useful improvement that comes to mind is a "frame overrun" counter (how many times it missed the frame time target) and "lowest frame time remaining" (that didn't overrun). Both looks like they should be relatively easy to add with the infrastructure you've already made.
@CocoTownRetro
@CocoTownRetro Күн бұрын
Indeed. Another idea from Matt Greer's blog is using different colors in the meter to illustrate how much time is spent in each task performed in the frame. You can imagine different memory taps that are triggered after each subroutine from the main loop, and they get translated into their own colored fraction of the overall meter.
@BoscoRetro
@BoscoRetro 3 күн бұрын
Interesting video. I've only ever done this the old school method by poking address $FF22 to toggle VDG colour sets immediately before and after a call to the render code, to visualise how many scan-lines were taken to render a frame. Also handy for spotting performance spikes without diverting your attention away from the game.
@CocoTownRetro
@CocoTownRetro Күн бұрын
Interesting. It's like that turns the entire frame into a big performance counter.
@JasonKingKong
@JasonKingKong 3 күн бұрын
It's fun to ponder what games and other programs would have been written back in the CoCo days if they had access to modern development tools back then.
@ericomont
@ericomont 9 күн бұрын
Very interesting! I wonder about what weird stuff could be done by pairing Lua and Coco that way.
@David_Ladd
@David_Ladd 9 күн бұрын
@CocoTownRetro You know what would be a nifty add on would be kinda like a disk activity box that could possibly show the drive #, track, sector, and maybe read/write/trackread/trackwrite functions. There several nifty ideas running through my head :D Maybe even a HDD activity box for the EMUdisk :D
@CocoTownRetro
@CocoTownRetro 8 күн бұрын
I love it! Some very cool ideas!
@David_Ladd
@David_Ladd 9 күн бұрын
Great video! Thank you for sharing with us your adventures :D Got to love MAME and some of the features that it has that other emulators don't have.
@CocoTownRetro
@CocoTownRetro 9 күн бұрын
Thank you, David!
@R.Daneel
@R.Daneel 10 күн бұрын
Really enjoyed that. I knew it could be done, but I've never looked at MAME/LUA scripting. This was a really well paced introduction. It's got me thinking about what's possible on the C64 side....
@CocoTownRetro
@CocoTownRetro 9 күн бұрын
Great, I'm glad it piqued your interest!
@tomtravis858
@tomtravis858 10 күн бұрын
glad to see another MAME video!
@CocoTownRetro
@CocoTownRetro 9 күн бұрын
Thanks, it's been a while! There are a couple things in MAME I have been wanting to explore more deeply, so I'm getting around to that now.
@anjinmiura6708
@anjinmiura6708 12 күн бұрын
Also, if your game has music in the background and it's NOT the CoCo Town theme? I will be very disappointed.
@CocoTownRetro
@CocoTownRetro 9 күн бұрын
I'm not thinking specifics for music yet, but I'm guessing it will probably be something original. MAYBE with a touch of Funky Town, but no promises! 😜
@anjinmiura6708
@anjinmiura6708 9 күн бұрын
@@CocoTownRetro Your fans have been watching this whole adventure unfold for all of this time. Each episode begins with the music! The rhythm part of the song on loop as well as the chorus in some form would actually be excellent game music. And it's kind of your signature sound now. It completely belongs in there. It would just be the "Cherry on top" to see the game completed (one day) and to play that music which will take us all back to all of your development episodes. Do what you can, but the musical callback will definitely be a salute to the fans. It might also be a "mystery" for those who never watched... perhaps an intermission screen or some sort of easter egg that points people back to your youtube. :) Anyway, loving what you're doing except for maybe your latest #Septandy episode :) (just kidding, it's also very interesting and makes me want to give some of your analytical review a try)
@anjinmiura6708
@anjinmiura6708 12 күн бұрын
Have you been able to detect if your videos are a hit?
@780tech
@780tech 15 күн бұрын
still think you should consider making the wheels/suspension bounce up and down while it goes over the terrain.
@780tech
@780tech 15 күн бұрын
Awesome as always, now I find myself constantly jonesing for the next episode every week.
@CocoTownRetro
@CocoTownRetro 14 күн бұрын
Excellent. That means now is the right time to move future episodes of this series to my brand new paid streaming services, CoCoTown+ and CoCoTown+ Premium. 🤣
@anjinmiura6708
@anjinmiura6708 9 күн бұрын
@@CocoTownRetro Sign me up!
@R.Daneel
@R.Daneel 17 күн бұрын
Great explosion animation!
@CocoTownRetro
@CocoTownRetro 16 күн бұрын
Thanks!
@JasonKingKong
@JasonKingKong 17 күн бұрын
It's looking more and more like something that would have gotten a large ad in The Rainbow by Tom Mix.
@CocoTownRetro
@CocoTownRetro 16 күн бұрын
No finer compliment!
@David_Ladd
@David_Ladd 18 күн бұрын
@CocoTownRetro Great video as always and enjoy how you present your videos! Keep up the good work! Also have you thought about using the binary %00000000 type stuff in your FCB's to make your bit patterns in your sources that way?
@CocoTownRetro
@CocoTownRetro 18 күн бұрын
Thanks, David! I did use that base 2 notation when defining the bytes that comprised the bullets. But since the other sprites are authored in basic and then run through a series of tools to generate the FCB's, I didn't think that generating those byte values in base 2 format would really offer me much more. You might be able to roughly make out a pattern when viewing the %-notation values in the source, but not nearly as clear as the basic program that draws the sprites to begin with.
@David_Ladd
@David_Ladd 17 күн бұрын
@@CocoTownRetro I just thought I would let you know it was an option :) Though I am glad you already knew :) I just wasn't sure and want to make sure you knew that was an option. :) Thank you gain for sharing your adventures. :)
@CocoTownRetro
@CocoTownRetro 17 күн бұрын
I see, much appreciated! I continued to discover and learn new things about assembly and LWASM on a regular basis. So if you see anything that it looks like I'm unaware of, always feel free to let me know!
@RaveYoda
@RaveYoda 20 күн бұрын
Not a bug!! A feature! 😤😤
@MrWaalkman
@MrWaalkman 22 күн бұрын
What about two rocks in a row, any bugs there?
@CocoTownRetro
@CocoTownRetro 22 күн бұрын
They won't draw properly if I make them overlap. But yeah, I've been able to get rocks next to each other and it's looking ok so far.
@melkiorwiseman5234
@melkiorwiseman5234 23 күн бұрын
And that's the hole thing. Adding a rock was a rocky journey, but you didn't hole back. And in the end, you rocked it! Rock on!
@CocoTownRetro
@CocoTownRetro 23 күн бұрын
oh my
@melkiorwiseman5234
@melkiorwiseman5234 22 күн бұрын
@@CocoTownRetro What? Are you going to add lions and tigers and bears? (Oh my!) 🤣
@780tech
@780tech 24 күн бұрын
in the last run there is a blinky horizontal line right on top of the counter (Upper left)
@CocoTownRetro
@CocoTownRetro 23 күн бұрын
That's a temporary indicator to let me know that the joystick is pointed up. I added that before I added jumping, so I would know that joystick detection was working. I should have removed that when I got jumping working, but I guess I was too lazy or something. 😜 I do need to get rid of that soon.
@780tech
@780tech 23 күн бұрын
@@CocoTownRetro I REALLY love your channel, you make it it fun !
@CocoTownRetro
@CocoTownRetro 23 күн бұрын
😃😃😃
@RichardSmithers
@RichardSmithers 24 күн бұрын
What do you want to do with your life....
@8bitsinthebasement
@8bitsinthebasement 24 күн бұрын
I love this!!!
@ericomont
@ericomont 27 күн бұрын
Great moon atmosphere refraction! Realism always first! :)
@CocoTownRetro
@CocoTownRetro 26 күн бұрын
^^^^^^^^ This guy gets it.
@paulcordingley3434
@paulcordingley3434 28 күн бұрын
Just endless entertainment from all of this. May your journey be long. Thank you!
@CocoTownRetro
@CocoTownRetro 26 күн бұрын
Glad you enjoyed it! Based on my progress so far, it does look like this will take a long time. 🙂
@R.Daneel
@R.Daneel Ай бұрын
For that triple-bullet thing near the end - are you accidentally drawing or erasing "inactive" bullets from your array as you pass over the mountains?
@CocoTownRetro
@CocoTownRetro 26 күн бұрын
I haven't looked into it, so I can't really know for sure yet. My guess is that if I were using stale bullet structures, the bug would show itself more as random garbage bullets rather than an orderly triple of bullets each time. Instead, if I had to guess, I'd say it would have something to do with the interaction with the rotating background and the bullets.
@melkiorwiseman5234
@melkiorwiseman5234 Ай бұрын
"Next time, we've gotta add something to shoot" he says, completely avoiding mentioning the elephant on the screen of .... Ta-ta-ta-ta, ta-ta-taaaaaah! Collision Detection!
@CocoTownRetro
@CocoTownRetro 26 күн бұрын
All in due time. 🙂
@Wormetti
@Wormetti Ай бұрын
Finally you can shoot those bugs!
@CocoTownRetro
@CocoTownRetro 26 күн бұрын
Oh man, if only it worked that way!
@Raketenclub
@Raketenclub Ай бұрын
object coding on 8-bit... omg. blew my mind in the 80s
@David_Ladd
@David_Ladd Ай бұрын
Thank you for more fun adventures you take us on with coding!!!
@CocoTownRetro
@CocoTownRetro Ай бұрын
And thank YOU for your frequent words of encouragement!
@David_Ladd
@David_Ladd Ай бұрын
@@CocoTownRetro It is no problem. I do enjoy your entertaining way of showing your progress and learning with your project. There are times I wish I had the will to do what so many of you do on KZbin showing your projects and sharing. :)
@melkiorwiseman5234
@melkiorwiseman5234 Ай бұрын
Here's a thought which I had earlier: Your buggy is actually jumping a lot further than it needs to. It should only be jumping far enough to clear the hole with just a little spare space to account for human error. This will also help if there are two holes in a row since you need to land on solid ground before you can jump again, but with such a long jumping distance, you could easily land right in the second hole. I'd begin by knocking one byte off of the jump height and seeing what that does to the jump distance. I'm sure that you will be able to strike some combination of jump height and top-of-jump hang time which gets a reasonable jump distance.
@CocoTownRetro
@CocoTownRetro Ай бұрын
Yeah, the jump distance was definitely a gut thing. I wanted it to be enough to clear 1 hole with enough leeway that the player didn't have to be ultra precise. That said, when I start laying out the obstacles for real, I'll need to ensure that the jump distance allows for multiple obstacles in a row, as you point out. Either that or space them out a bit more.
@gp2k00
@gp2k00 Ай бұрын
I think there's a few more cycles to be gained in the unwound indexed addressing. Adding 2 to X will mean two STD's go from STD 2,X to STD ,X which I think is faster. The ones that go to -4*32 will still be OK as -128 fits in a byte. There could be something done with the 5 bit offsets and putting X in the middle of a line. But it doesn't quite reach; -16,X gets the start but 15,X doesn't quite get to the next line. And you lose the 0 offset. One last thought. 4*32 is too big for the signed byte offset. But if the first store does ,X++ then the 4*32-2 would fit. I'd don't recall, offhand, if that would be a savings since now there's auto-increment on the 0 offset store.
@lostwizard
@lostwizard Ай бұрын
5 bits is still the same cycle count as 8 bits anyway. It saves a byte, but not a cycle.
@CocoTownRetro
@CocoTownRetro Ай бұрын
@gp2k00: Adjusting X to eliminate 2 bytes from the offset looks to be a good idea. A store with no offset will be one cycle shorter than a store with a 5 bit or 8 bit offset. Good eye! Trying to get 4*32 to fit doesn't seem to offer much benefit since I need to adjust X anyway for the other 5 lines.
@David_Ladd
@David_Ladd Ай бұрын
@CocoTownRetro Yet another great video! Thank you for sharing and keep up the good work!
@R.Daneel
@R.Daneel Ай бұрын
As for "does it look like it's repeating" - could you scramble the order of the registers used in each of the lines 1260-1263 PSHU so each of the four blocks is pasted in a different order? Shuffling the deck a bit, so to speak. Regardless it looks fine. Any repeating is insignificant. Great work!
@BoscoRetro
@BoscoRetro Ай бұрын
The 6809 push/pulls registers in strict order. Also, if the pattern doesn't repeat, you'd lose continuity.
@BoscoRetro
@BoscoRetro Ай бұрын
The key principal of the last solution is that it's faster to move a pointer through data than move the data itself. I think the final routine I sent CoCo Town was just over 100 cycles. Providing the gravel conveys movement to the player, it's fulfilling it's purpose and hopefully the player is having too much fun to get hung up on the planet's surface. 😁
@CocoTownRetro
@CocoTownRetro Ай бұрын
Yes, indeed! Unfortunately, double buffering prevents me from using some of your cool ideas. For example I'm using extended mode addressing to point U into the off-screen buffer rather than using immediate mode addressing. Also, the current pointer into the gravel that I need to start from is different per buffer, so I can't use self modifying code to store that. (Instead I retrieve and update it from within a per buffer structure in memory.) Even so, the speed is really nice.
@David_Ladd
@David_Ladd Ай бұрын
Great video as always :) Thank you for sharing!!!! Also glad people are sharing and helping to improve the learning of tricks of the trade!!!
@erroneus00
@erroneus00 Ай бұрын
YES indeed... you added nauseam!! It's very interesting to tweak and adjust stack blasting strategies. I think all of the cycles you saved will be needed for the other things to come next... like the rocket jump I requested long before ;) (I know... it's out of scope probably and wouldn't make the game better but it's all I have to contribute!)
@CocoTownRetro
@CocoTownRetro Ай бұрын
Those cycles will surely go somewhere. I can't promise they'll go into a rocket though. 😉
@CurtisBoyle
@CurtisBoyle Ай бұрын
One thing I should ask - are you planning on having interrupt driven music/sound effects, etc. in the background? If so, you will need to turn off interrupts (and re-enable them on exit) otherwise you may get some garbage on the gravel row as interrupts come in and push their values onto S (which you have moved). The routine I suggested was specifically with that in mind - it doesn't use S at all so interrupts should cause no problems. (If you are not planning on doing any interrupt driven stuff in the game, of course you can mess with CC and S all you want... :) )
@erroneus00
@erroneus00 Ай бұрын
Garbage gravel might be a desirable effect! What a cool idea! Let's add more nauseam!!! That could be the best source of gravel ever!
@CocoTownRetro
@CocoTownRetro Ай бұрын
@CurtisBoyle: I'm using stack blasting elsewhere, so I turn off interrupts at the beginning of the main loop, and turn them back on just before I sync to FS. I would eventually like to have simultaneous sound effects during gameplay, but I’m thinking of attempting that using cycle counting within the game loop rather than relying on HS. I will probably change my mind on how to do that about a dozen times by the time it's finished, though. 😏
@RKelleyCook
@RKelleyCook Ай бұрын
IMO, the new gravel is as good as the old gravel.
@michaelmarks8443
@michaelmarks8443 Ай бұрын
Very generous of you to imply that I might be "like" L Curtis Boyle
@CocoTownRetro
@CocoTownRetro Ай бұрын
O that we all could be. 🙂
@JasonKingKong
@JasonKingKong Ай бұрын
It's a pity that SG-12 and SG-24 weren't better documented by Tandy. I assume this was due to them being quirks made possible by a special combination of modes on different chips that weren't officially supported by Tandy but still made it into software they sold anyway. They weren't viable modes for all uses but for those where the constraints could be worked around, they produced images that truly lived up to the name Color Computer. Too bad the programmers who were good at them mostly moved to other platforms or PMODE 4 artifact screens but I guess the limited horizontal resolution was too constraining.
@RussellFlowers
@RussellFlowers Ай бұрын
Reminds me a lot of the Atari VCS graphics.
@CurtisBoyle
@CurtisBoyle Ай бұрын
Thanks for presenting this in a much clearer way than I did... lol! And for pushing some of the "boundaries" (you should try CIRCLE and PAINT commands!) that I mentioned would probably produce somewhat unexpected (but cool1) results.
@CocoTownRetro
@CocoTownRetro Ай бұрын
Thank YOU! And yes, I'm curious to see what some of the other “forbidden” commands can produce. 🙂 Haven't tried them yet!
@CoCoNutBob
@CoCoNutBob Ай бұрын
Always thought SG-24 had great potential. Actually played with it when I got disk EDTASM, but never did much... I can barely remember. Storm is probably my favorite SG-24 game.
@CocoTownRetro
@CocoTownRetro Ай бұрын
I was pretty much unaware of semi graphics 24 back in the day. I actually had Barden’s graphics book, which did list it among all of the graphics modes. But I didn't really understand what I was reading or the potential of that mode. It's surprising to think that a computer with the word “color” in its name would de-emphasize such a powerful mode. It would be cool if folks start to leverage Curtis and Nick’s work here to make some new programs that take advantage of this mode.
@foobar2027
@foobar2027 Ай бұрын
Great stuff! Both wheels should squish simultaneously when you land.
@CocoTownRetro
@CocoTownRetro Ай бұрын
Thanks! Though before I get any fancier I really should concentrate on more of the game basics.
@R.Daneel
@R.Daneel Ай бұрын
It's not too little bounce. I prefer the subtle version. It may be even a "HEY! Even the tires are squishing!" moment for some. Great work.
@CocoTownRetro
@CocoTownRetro Ай бұрын
Thanks! And yeah, there can be something rewarding when one discovers something subtle versus having it too obvious to miss.
@KeithJewell
@KeithJewell Ай бұрын
If you want to make this fancier you are probably going to need four versions: no squash, front squash, rear squash, and both squash. Then switch between them based on a simple state machine you can feed with a circular buffer and the jumping and terrain details.
@CocoTownRetro
@CocoTownRetro Ай бұрын
What I've got now may already be about as fancy as I'm willing to go, though!
@JasonKingKong
@JasonKingKong Ай бұрын
Everything would have been so much easier if Moon Patrol had used a hovercraft.
@R.Daneel
@R.Daneel Ай бұрын
I'd be willing to bet the programmer came up with the wheel animation first, then built a whole game around it just to flex.
@CocoTownRetro
@CocoTownRetro Ай бұрын
Indeed. Heck, one of my bugs from last week actually had the car hovering in the air already!
@kenreighard5071
@kenreighard5071 Ай бұрын
I don't think, if you'll pardon the pun, that the juice was worth the squeeze.
@CocoTownRetro
@CocoTownRetro Ай бұрын
But now that it's done, I think it's worth leaving it in versus taking it out. 😁
@tzkelley
@tzkelley Ай бұрын
When jumping, both tires should squish down and when it lands, both tires should squish up.
@CocoTownRetro
@CocoTownRetro Ай бұрын
Yep, that would be nice. But there are more pressing game issues that must be attended to! 🙂