• Features Wishlist 5 1
Currently:

### Author Topic: Features Wishlist  (Read 253502 times)

0 Members and 1 Guest are viewing this topic.

#### Builderboy

• Physics Guru
• CoT Emeritus
• LV13 Extreme Addict (Next: 9001)
• Posts: 5673
• Rating: +613/-9
• Would you kindly?
##### Re: Features Wishlist
« Reply #1290 on: October 05, 2010, 02:44:40 pm »
Basic programs dont have to be copied, thats the trick.  Since they are not assembled, they are interpreted, the TiOS can just read each line right out of the regular RAM where the program is located and parse it.

#### LordConiupiter

• LV6 Super Member (Next: 500)
• Posts: 339
• Rating: +3/-0
• Just one of the thousands of Axe-fans...
##### Re: Features Wishlist
« Reply #1291 on: October 05, 2010, 02:48:14 pm »
right! well, then it will become really very tricky I see...
everytime that I was down, you would always come around, and get my feedback on the ground. (modified part from 'Seasons in the sun')
 No matter how many errors are bothering you, always try to stay rel-Axe!The HoMM project will be resumed as soon Axe 1.0.0 will be released!Projects:Code: [Select]HoMM:   [==--------]    Project 'resumed': I'm suffering overwhelming new ideas being popped up in my dreams :PtiDE:   [----------]    Explored and understood the main part of the code: just started writing a Tokenizer.

password of the week: uvanapererubupa (Any pronunciation is the right one )   click me, and you'll be raided

#### Runer112

• Project Author
• LV11 Super Veteran (Next: 3000)
• Posts: 2289
• Rating: +639/-31
##### Re: Features Wishlist
« Reply #1292 on: October 05, 2010, 05:14:35 pm »
Dang, I just realized that Quigibo disabled Axioms with the last update... I'm guessing he's reworking them. But anyways, when they've been reworked and are enabled again, could someone (maybe even Quigibo as an example Axiom) make a fast sprite display routine? When I say "fast" I mean as fast as a sprite routine can possibly get: no aligning, no clipping, and with whichever display method/logic works fastest (it would be nice to be able to specify an arbitrary target buffer, though). The main reason I'm asking is because I've been working on something that uses an aligned tilemap system, but the tiles are animated, and updating the tiles constantly brings the program to a crawl.
« Last Edit: October 05, 2010, 05:43:59 pm by Runer112 »

#### Builderboy

• Physics Guru
• CoT Emeritus
• LV13 Extreme Addict (Next: 9001)
• Posts: 5673
• Rating: +613/-9
• Would you kindly?
##### Re: Features Wishlist
« Reply #1293 on: October 05, 2010, 06:10:37 pm »
Why would animated tiles be any slower than regular tiles?  Don't you have to display them every frame anyway?

#### Runer112

• Project Author
• LV11 Super Veteran (Next: 3000)
• Posts: 2289
• Rating: +639/-31
##### Re: Features Wishlist
« Reply #1294 on: October 05, 2010, 06:45:53 pm »
Why would animated tiles be any slower than regular tiles?  Don't you have to display them every frame anyway?

Why would you need to display static tiles every frame? You can just draw them once and repeatedly display that rendered image. Whereas you'll need to render animated tiles over and over.
« Last Edit: October 05, 2010, 06:47:02 pm by Runer112 »

#### calc84maniac

• eZ80 Guru
• Coder Of Tomorrow
• LV11 Super Veteran (Next: 3000)
• Posts: 2896
• Rating: +467/-17
##### Re: Features Wishlist
« Reply #1295 on: October 05, 2010, 07:16:20 pm »
I think this is very difficult to accomplish.  In order to run a program, it must be copied into 959C.  Unfortunately that is where the current program already is, so you would need a 3rd piece of code that would copy the original program back into its original RAM space, copy the second program into 959C, PUSH a piece of its own code onto the stack so that when the program exits, it is able to copy the original program back onto 959C

I think this is handled completely by the BCALL. A copy of the program is inserted at 9D95, and then it is run. When the program returns, the copy is deleted and the program running beforehand should be exactly where it used to be, so the BCALL will return properly.
"Most people ask, 'What does a thing do?' Hackers ask, 'What can I make it do?'" - Pablos Holman

#### Deep Toaster

• So much to do, so much time, so little motivation
• LV13 Extreme Addict (Next: 9001)
• Posts: 8206
• Rating: +758/-15
##### Re: Features Wishlist
« Reply #1296 on: October 05, 2010, 07:19:03 pm »
Where is the original program stored while the sub runs?

#### calc84maniac

• eZ80 Guru
• Coder Of Tomorrow
• LV11 Super Veteran (Next: 3000)
• Posts: 2896
• Rating: +467/-17
##### Re: Features Wishlist
« Reply #1297 on: October 05, 2010, 07:20:26 pm »
It should be located directly after the newly executing program in memory (since the memory insertion shifts it over)
"Most people ask, 'What does a thing do?' Hackers ask, 'What can I make it do?'" - Pablos Holman

#### Deep Toaster

• So much to do, so much time, so little motivation
• LV13 Extreme Addict (Next: 9001)
• Posts: 8206
• Rating: +758/-15
##### Re: Features Wishlist
« Reply #1298 on: October 05, 2010, 07:22:11 pm »
Oh, I get it.

#### Quigibo

• The Executioner
• CoT Emeritus
• LV11 Super Veteran (Next: 3000)
• Posts: 2031
• Rating: +1075/-24
##### Re: Features Wishlist
« Reply #1299 on: October 05, 2010, 09:30:56 pm »
I'll definitely check out that bcall.

@Runer
If the sprite is 16x16 (and aligned to an 8x8 grid no clipping), you can actually write your own sprite routine in Axe itself that would be more efficient than drawing 4 8x8 sprites by copying the sprite data to the L6 buffer directly.  I'm pretty sure I've seen someone do that before but I can't recall the thread...  For 8x8 sprite drawing routines though, the speed would not be that significantly increased since the sprites are automatically not shifted when aligned to the grid anyway and clipping is a relitively small portion of the actual time it takes to draw a sprite.  Aligned sprites draw fastest with Pt-Off() whereas unaligned sprites draw fastest with Pt-On() and Pt-Change().
___Axe_Parser___
Today the calculator, tomorrow the world!

#### Runer112

• Project Author
• LV11 Super Veteran (Next: 3000)
• Posts: 2289
• Rating: +639/-31
##### Re: Features Wishlist
« Reply #1300 on: October 05, 2010, 10:49:04 pm »
I'll definitely check out that bcall.

@Runer
If the sprite is 16x16 (and aligned to an 8x8 grid no clipping), you can actually write your own sprite routine in Axe itself that would be more efficient than drawing 4 8x8 sprites by copying the sprite data to the L6 buffer directly.  I'm pretty sure I've seen someone do that before but I can't recall the thread...  For 8x8 sprite drawing routines though, the speed would not be that significantly increased since the sprites are automatically not shifted when aligned to the grid anyway and clipping is a relitively small portion of the actual time it takes to draw a sprite.  Aligned sprites draw fastest with Pt-Off() whereas unaligned sprites draw fastest with Pt-On() and Pt-Change().

Yeah, I realize the speed increase wouldn't be terribly much, but I could use all the speed I can get. For what I'm trying to achieve, I need to draw about 2,000 sprites per second. I might try my own hand at the routine, but I get the feeling I'd end up writing it in such an unoptimized way that it would even be slower then a full-featured routine.

Is there just a basic, unaligned 8x8 sprite routine without clipping floating around somewhere that I could steal?

By the way, what happened to Axioms?
« Last Edit: October 05, 2010, 10:50:47 pm by Runer112 »

#### ztrumpet

• The Rarely Active One
• CoT Emeritus
• LV13 Extreme Addict (Next: 9001)
• Posts: 5712
• Rating: +364/-4
• If you see this, send me a PM. Just for fun.
##### Re: Features Wishlist
« Reply #1301 on: October 05, 2010, 11:34:49 pm »
How about an 8*n sprite display routine that would be just like the regular ones but with an extra argument (default is at ?

Ex:
Pt-Off(0,0,Pic1,12) would display the 8*12 sprite pointed to at Pic1 at (0,0).

Quote
<From IRC Logs, calc84 talking about the Gameboy's sprite routines...>
<@calc84> all sprites are 8x8
<@calc84> well
<@calc84> unless you select 8x16 mode
<@calc84> in which case two tiles are used per sprite
<@ztrumpet> Why isn't there an 8*16 mode in Axe?
<@calc84> lol
<@ztrumpet> I'm serious
<@ztrumpet> I've wanted that for a while and keep forgetting
<@calc84> I don't know why there isn't an 8xN sprite display in axe
<@ztrumpet> yeah
<@calc84> it's pretty much the standard for asm
<@calc84> and quigibo can make a default height=8
<@calc84> so existing code doesn't have to change
<@calc84> just add an extra height argument to the end
<@calc84> he would only really need to slightly change the clipping code
« Last Edit: October 05, 2010, 11:39:08 pm by ztrumpet »
If I'm wrong, please correct me!
Unfinished Projects:
 Elmgon 14% Basic Movement Demo Homescreen Game Pack 80% Basic Latest Release Cube Droid Saves the Galaxy 65% Axe Demo Detonate 70% Axe
Completed Projects:
Exodus | Midnight |Drifter | Axe Snake | Jump! | Factory Theta | Spider | Plot Drop | Papi Jump | Numb3rs | Nibbler | Boost | Duel Tile Map Editor | Homescreen Map Editor | Key Group Check | Oasis

#### DJ Omnimaga

• Now active at https://codewalr.us
• CoT Emeritus
• LV15 Omnimagician (Next: --)
• Posts: 55816
• Rating: +3151/-232
• CodeWalrus founder & retired Omnimaga founder
##### Re: Features Wishlist
« Reply #1302 on: October 05, 2010, 11:37:37 pm »
I assume this would be for example for characters and some enemies, right? I think that might be a good idea, IMHO. That way we don't need to use two sprites instead of one for stuff that moves around. For smaller sprites it might also save some space.
In case you are wondering where I went, I left Omni back in 2015 to form CodeWalrus due to various reasons explained back then, but I stopped calc dev in 2016 and am now mostly active on the CW Discord server at https://discord.gg/cuZcfcF

#### aeTIos

• Nonbinary computing specialist
• LV12 Extreme Poster (Next: 5000)
• Posts: 3913
• Rating: +184/-32
##### Re: Features Wishlist
« Reply #1303 on: October 06, 2010, 06:55:04 am »
a feature that I would like is to use the "goto" command as this:
224->X
goto{X}
end

this is much faster as
if X=224
goto 224
end