Does anybody know a smart way to code this effect: Video
I'm talking about a sprite moving and leaving a shadow behind that slowly follows him, or something around these lines. It would also be something like this. There's the main purple sphere that chases mario and the others follow the main one with some delay attached to their movement.
I'm not quite sure what idea I should keep in mind to code it.
You're right, I was blind trying to think on a hard way to code such a simple thing.
And the second effect would be exactly like the fire chomp. I downloaded the one that edit1754 code but I couldn't understand a single thing on his code. I was looking for some explanation of how I could code it, the logic behind making the shadows chase the main sprite.
Não sei nem mexer mais no lunar magic haha, a única coisa que eu ando fazendo é programando um boss aqui mas ele é meio grande pra caramba então o projetinho tá meio lento. Essa fase de 24h como funciona? Tem que ser vanilla ou pode colocar o que quiser?
Due to my lack of knowledge about how to use SuperFX (or even SA-1's Character Conversion), I had to make it simpler using a circle windowing effect to play the balloon role. I tried to make it as close as possible to the one in Yoshi's Island, but I didn't feel like using layers to build the screen (that's what they used in the original) as I feel more comfortable with sprites. As a consequence, I'm not sure if there's enough OAM space to make the 6-input version, but it might actually be just below the max tile number (A/B/X/Y are 2 tiles, the crosses are 5 and the question marks are 2).
I'm not sure how I feel about that "AI". The one in Yoshi's Island is a bit unfair imo, and the current one seems a bit too dumb/slow. I think I should make it react faster. It works generating 2 random numbers, the first one being how much times it takes to press the key and the second is such that, if it's less than a specified number, the sprite enters the wrong key. It can never miss more than two times though, including the being too slow mistake.
I plan to release it soon, just gotta make sure it has no bugs. If anyone wants to play with it already, you can download it here. PM me with any bugs you find.
Not much to say. The video shows me only changing the height (or the width, depending on the rotation angle), but both are independently editable, up to $7F. The rectangle can be off screen (still has to be inside another bigger screen), as the video somewhat shows. That includes the center of the rectangle.
The code is a complete mess. I kinda want to release it but I'm not sure if it would be accepted on the current state. Also, I'm not sure if it would run as smooth as in the video inside a normal level with sprites and other stuff. The possibility to have the rectangle bounds surpass the screen is actually pretty expensive with the way I coded.
You mean like to have a 3D-ish ground below the player enlightened? Sure, it's a possibility, you just have to set the center and the size, the code does the job. The video I posted doesn't really show a way to use it, it's just for showing the capabilities of it, with the most important part being how the triangle clips even when it's outside the screen, which people would possibly take for granted, but coding it actually sucks.
I was coding all this stuff because I planned to make a RPG battle system for SMW but let's say I discovered my classes start tomorrow and I don't think I'll have any time to work on that anymore, so I'm releasing this here.
Just store values to $00-$0F, use invoke_sa1 to some label with PHB PHK PLB and JSL to any of the labels in this file. Remember to write windowing_ before, so if you want to call CircleWindow, you write JSL windowing_CircleWindow. Read the stuff before each effect so you know what to store to $00-$0F
Those who know ASM will probably see how everything is a complete mess and probably super inefficient. Well, that's why I'm not releasing this on the UberASM section, but if anyone want to give it a try, feel free, I don't mind. Do note that, of all of them, the rectangle window is the only which can do weird stuff to your game. Just make sure all the rectangle fits in a 768x512 screen, only the centered 256x224 portion of it will appear on screen.
EDIT: Forgot to explain how the scaling works.
The windowing table with the data you want to scale must be stored at !tempTable before you call this code, so make sure you set it at the initialization for example. The information here remains untouched and can be changed anytime if you want to scale a different window. The scaled version is updated by the code to smw's windowing table ($04A0) whenever the scaling factor changes.
If the triangle is isosceles, ABC and ACB can only be both 50°.
I don't think there's enough information to assume that yet. It's possible that angles ABC or ACB could be congruent with BAC, leaving the other angle at 20°. No indication of side lengths has been provided either.
I see what you mean, that's my fault for not being clear enough. The triangle is isosceles with AB=AC, sorry about that. Gonna fix it.
Ninjid: Yeah, you're right Noivern, but still, my fault for not being clearer.
This is an absolutely horrible solution, but it's out of desperation.
Choose an arbitrary value for one of the red side lengths (say, 10). Angle AIC is 150° as explained by everybody else. Use Law of Sines to get the length for AI. Then use Law of Cosines to get BI, and finally Law of Sines to get angle AIB.
The answer comes out to be exactly 80 degrees. This suggests that there is some elegant solution, but I don't see it.
The above solution failed because the Law of Sines can't tell you if the angle is 80 degrees or 100 degrees, as sin 80° is the same as sin 100°. I could have used the Law of Cosines again and gotten the correct answer, but let us see something way better.
EDIT: worldpeace showed me a very elegant solution that beats my calculator.
Drop an altitude down from A to BC. This must bisect <BAC because the big triangle is isosceles. Pick a point P on this line such that <PCI = 10°. <PAC is 40° because AP bisects <BAC. This makes <PAI 20°.
Now there is a triangle PAC. Since AI bisects <PAC, and CI bisects <PCA, point I must be the incenter of triangle PAC. This means that PI bisects <AIC, which is 120° because of triangle PAC. <CPI is then 60° because <AIC was bisected.
P is on the altitude from earlier, but this altitude is also the median because triangle ABC is isosceles. This means that BP = CP. <BCP = 50 - (10*2), so <BCP = 30°. <BPC = 120°.
Note that <BPC + <CPI = 180°, creating a straight line. This means that point P is on line BI! With that information, use triangle API to see that <AIP is 100°, which is the answer.
It's amazing how such a simple-looking triangle problem is actually ridiculously difficult and requires adding in a bunch of angle bisectors.
Holy... That's the exact type of solution I was looking for! I had one using trigonometric ceva theorem, but it was like... No, just no, too much hard work, and my objective was to keep training these kinds of solution where you find a magical line which can solve your problem, but this one really got me stuck.
Thank you, ft029 and worldpeace!
I would've posted this on the other thread but it got closed so I'm creating another one. I hope there's nothing wrong with doing this. And by the way, this isn't my homework or anything, I'm just practicing some geometry, but I end up getting stuck at some problems which I only have the answer but not the solution.
This time I'll be more clear so no one wastes their time trying with wrong information.
In a isosceles triangle, AB=AC, and the angle Â=80. In BC, we choose a point D such that <DAB=30, and in AB, we choose E such that <BCE=20. Find the value of <DEC.
As people pointed out, you didn't really find ADE, Pat, so that's not a correct solution Thanks anyway!
lolyoshi: it isn't 50, unfortunately. I don't want to tell the result (or at least just yet) so people don't focus their effort on making that specific value appear there.
Koopster: thanks for helping again mate. I actually tried to do the same exact thing you did, but couldn't reach anywhere as well. Now, seeing that, I think I'll probably post one of my tries.
ft029: hey man, thanks for the help again! And also for asking the JUMP1/2 team to help as well I guess you guys like these challenges as much as me. If worldpeace nails this one again, he's a true god, dayum. By the way, if it's possible, could you ask him if he learned his techniques in a book or something I could study as well? I mean, since most here are from different countries, we might learn stuff in very different ways. For instance, apparently russians have some nice geometry problems which I also struggle to solve, and that also reflects in their mathematics olympiads problems.
S.N.N.: Yep, that's a classic. Here we know this problem as the "Russian Triangle Problem", but seeing this article, I don't know why we really call it like that lol.
If you take the image in the first post and rotate it to the right, you'll get something really close to that triangle. In one of my attempts I tried to find a solution taking the same steps as you would take to solve this Langley Triangle, but I couldn't reach anywhere because of the bigger angles that doesn't let you insert a bunch of isosceles/equilateral triangles where I needed and the fact that, when you rotate the triangle, you don't have the sides with same length where you need. There's a (20,80,80) triangle, the CDP (P being the intersection of AD with CE), which is the exact Langley Triangle, but I don't see how it could help since the angle we want is in the opposite side :/
EDIT: ft020, what if I tell you I've been thinking about this problem for 4 days straight xD
Noivern: I really appreciate your solution, which is right indeed. It's just that we can't really calculate the sine of these angles without a calculator, so I wouldn't say it's a totally fine solution if this was a question in a test (which indeed it is). Maybe you can use some sum/product formulas to find the sine of these angles in terms of known angles, but I can see it would be super tedious to do.
LHB: He solved it again only with constructions? How does he even do that ._. I wonder how hard these problems are for him.
Anyway, thanks everyone, I really appreciate your help
One of my teachers showed me how to solve it. I'll post it as well, because it's different from both worldpeace's and Noivern's solution.
- Prolong CE until you can draw DT=DC (Sorry, forgot to include T in the image, but I think you'll understand). The construction implies that <DTC=20 as well. Note that <CDT=140, because the other two angles are 20, but we know that <CDA=80, so <ADT=60
- Note that the triangle ADC is isosceles (two angles of 50), so AD=DC=DT.
- Trace TA and close the triangle. Note that it's an isosceles triangle with an angle of 60, so it's actually equilateral. This means that <BAT=30 as well.
- <BAT=30 implies that AB is a bisector, but since the triangle is equilateral, it's also a perpendicular bisector, so DE=DT, and also TDE=20.
- Finally, the angle we want is 20+20 (external angle theorem)
Anyway........... I really don't know how much you guys are enjoying this (probably aren't at all xD), but this is another one I couldn't solve too. I guess I suck at geometry, oh well. If you guys want to give it a try:
The triangle is rectangle in A, and AB=CD. <BAD=x, <DBC=2x and <DCB=x. Find the value of x.
Would it be possible (and if so, how?) to execute a 32-bit/16-bit unsigned division using a premade 16-bit/16-bit signed division routine? I'm asking that because I would like to use SA-1's division (which is 16-bit/16-bit signed) to execute an unsigned 32-bit/16-bit routine. The main reason is because my current ellipse windowing code is currently too heavy to process, because it has to calculate a square root + a 32-bit/16-bit division for each scanline. Another option would be if someone could give me an idea of how I could draw an ellipse without needing to 32-bit divide. It seems games such as romancing saga and final fantasy have such effects running without any slowdown, but I have no idea what's the logic behind their code.
At the moment, what my code does is calculate solve for x in x²/a²+y²/b²=1, which leads to b²x²+a²y²=a²b² -> b²x²=a²b²-a²y² -> x² = (a²b²-a²-y²)/b² (that's where the 32-bit division kicks in followed by the sqrt)
If possible, but optional, I'd also like an idea for a code which could draw also rotated ellipses. Using the general conic formula (Ax²+Bxy+Cy²+Dx+Ey+F=0) would be impracticable.
EDIT: Nevermind, doing x = (a*sqrt(b²-y²)) / b doesn't need 32-bit division and it keeps as much information as doing the other way, except this one has no slowdown. Still, if someone has an idea of how I could rotate the ellipse, I would appreciate if you tell me.
Reflect the triangle to the left. Consider the point D', reflection of D. The segment DD' is also AB since AD'DB is parallelogram, and that closes an equilateral triangle. AC is the altitude of that triangle, so it's also a bisector, resulting in <ACD=30.
Now, take triangle ADB and "add" on top of CD. This construction adds the green line (the one which connects to a point which I forgot to name. let's call it P), which has the same size as DB, so BDP is isosceles, and <DPB=2x. This makes CPB isosceles and, as a consequence, <PDC=x as well, but since that triangle is congruent to ADB, <DBA=x.
Now we have a triangle with angles 90, 30+x, 3x.
90+30+x+3x=180 -> 4x=60 -> x=15
I'm not sure how many of you are still interested in that geometry stuff, but here's another one just to always keep one challenge here,
Find x in terms of theta, given that AB+BC=CD Image
O scroll do HDMA não é muito trivial. Se o HDMA responder a scrolling, é porque ele foi programado para isso. Os que não foram não podem ser simplesmente "adaptados", porque pense, a tela tem originalmente 224 scanlines, então as tabelas com as informações para as cores correspondem a essas 224 scanlines. A partir do momento que você pode dar scroll, teria que ter scalines sobrando pra cima e pra baixo para que essas possam ser carregadas no lugar de outras. Eu não tenho certeza, mas talvez o Effect Tool tenha suporte pra scrolling HDMA, mas minha intuição tá mais pra não ter. É um efeito raro de se ver, apesar de ser bem "taken for granted" eu diria.
I'm pretty happy with the result so far. The first thing I did was the menu, initially without VWF, so I decided to give it a try and it seems to be working pretty well. Except the font, which doesn't fit imo, but that's the best I could get.
Then I started messing with some registers to make things easier later and I ended up making the layer 1 tilemap 16x16 so I could have a 512x512 layer 1 without needing so much tilemap space, and also set sprite size to 16x16/32x32, otherwise it would be pretty tough to load huge sprites as Destroyer using OAM.
The layer 1 tilemap thing was pretty fun because now destroyer looks like this in lunar magic.
And finally I wanted to reproduce that cool effect, which partially transform graphics pixel by pixel. I never really understood how RS3 did that, so I had to play all the game and debug it a bit, and the result was quite surprising when I discovered the game actually uploads to VRAM each frame, although that would be the only way to create such effect.
So yeah... I hope I can finish this project.
It's just a bunch of ASM codes (mostly level ASM + sprites) that you can put in a specific level to execute that RPG battle thing. I was coding it in a user-friendly way that would let anyone customize the enemy and the party. This includes creating your own attacks/effects and choosing which one will be available. As you can tell, I was going to release it, but I couldn't touch the project since the day I released this video due to my classes, and at the current state, there's no actual battle system, just some random effects coded. Using destroyer was just as an example. Personally, I really like this boss, but as I said, it would be totally customizable when finished, as long it's just one enemy (which could cast multiple spells in a single turn).
If I ever have time to finish it and conclude it's actually releasable, I'll be sure to do it.