You can help CodeWalrus stay online by donating here. | New CodeWalrus | Old (dark mode) | Old (light) | Discord server

First Fantasy II ideas vault

b/[Completed] First Fantasy Series (TI-84+CSE/84+CE/83PCE) Started by Dream of Omnimaga, April 27, 2015, 04:13:16 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

u/alexgt May 11, 2016, 11:43:22 AM
Those sprites look really nice DJ, how fast is that compared to the original method.
u/Dream of Omnimaga May 11, 2016, 03:31:06 PM
Thanks :3= . I didn't program the new engine yet, but the old engine drew 541 rectangles when entering a new dungeon and 245 when switching rooms. The new one would draw 61 when entering dungeons and 42 when switching rooms.

Given that the original engine drew each wall tile one by one and resulted into an Asm() command each time, the speed increase might actually be close to 8 times faster, if not more. But of course it depends of other factors (eg if the new engine requires more boolean logic, but I doubt it. It would probably take more space due to all the hard-coding needed, though)

If the speed increase is significant enough, then I could probably even merge both dungeon drawing sequences together and redraw the entire screen everytime, which would make it easier to implement stuff such as day/night cycles.
u/alexgt May 11, 2016, 03:50:53 PM
Nice! Speed increases are always welcome!
u/Dream of Omnimaga May 13, 2016, 03:27:02 AM
Thanks. I'm definitively hoping it's worth it. Granted, I would need to use a separate rendering routine for the map, one for the exits/events and one for individual sprite drawing, but I doubt it would take too much space.


I could also even add a special mode flag where if you enable that flag, then instead of rendering the dungeon with actual tiles it would draw the entire room with plain-colored walls or gradients that are just a few rectangles. Such instant drawing would allow cutscenes with special effects such as fade-in, fade-outs and other instant color changes.

Of course, if my estimates are right, then color changes could still be used for the standard mode, but it would take a few seconds to change everything. Such color change could be used, for example, for day/night cycles.

EDIT: Here is what I mean for the special mode:

Last Edit: May 13, 2016, 04:21:30 AM by DJ Omnimaga
u/Dudeman313 May 13, 2016, 05:18:00 AM
I love those walls. They look awesome. Maybe in a time of boredom, you could use Textlib to port Desolate. :D
u/Dream of Omnimaga May 13, 2016, 05:32:36 AM
Lol, for some reasons I knew that idea would be brought up <_<

The funny thing is that Desolate could probably be possible with CE Textlib without much speed loss (since the original game already ran at around 5 FPS). But I doubt I would do it because I only know about 1% of the game secrets.

Perhaps the engine could be re-used for a port of Illusiat, though (after all, that game is already available on the TI-81, 82, 83, 85, 86 and there are 3 versions for the 83+/84+/SE)
u/alexgt May 13, 2016, 12:15:17 PM
That looks really nice DJ!
u/Dream of Omnimaga May 13, 2016, 02:15:52 PM
Thanks alexgt :)
u/Adriweb June 07, 2016, 02:35:01 PM
That's looking pretty, yup :D
u/Dream of Omnimaga June 07, 2016, 03:54:09 PM
Thanks. I am curious about how fast it would run in just 1 list and 1 Asm(prgmNAME command. I am sure the list would still be slow, but having just 1 Asm() call would probably show a noticeable difference.

Otherwise I can always use 10x8 maps and an HUD on the side, anyway, like in The Reign of Legends 3 for the TI-84+ or the PC-8801 JRPGs. That would reduce the list by 48 elements. :P
u/Dream of Omnimaga July 05, 2016, 03:12:49 AM
It looks like Sprites v3.3 by @grosged might be fast enough to allow me to have animated damage display like in Final Fantasy. That's unless it slows down a lot when my VAT or RAM gets cluttered, though:



0:Asm(prgmSETTINGS
0:Asm(prgmCLSCREEN
⁻8→E:150→A
For(Z,1,10
{120,A-8,32,8,0,120,A+8,32,8,0
Asm(prgmCLSCREEN
{120,A,255,0,1,1
Asm(prgmPRINT
9999:Asm(prgmPRINT
A+E→A:E+4→E
If A≥150:⁻int(.5E→E
End
For(Z,0,1000:End
Asm(prgmBACKHOME
I still wish there was a way in Sprites to preserve what we want to display as text when changing the color or position, though, to avoid having to run Asm(prgmPRINT twice every frame, but that does the job, even with larger text:



0:Asm(prgmSETTINGS
0:Asm(prgmCLSCREEN
⁻16→E:150→A
For(Z,1,10
{120,A-16,64,16,0,120,A+16,64,16,0
Asm(prgmCLSCREEN
{120,A,255,0,2,2
Asm(prgmPRINT
9999:Asm(prgmPRINT
A+E→A:E+8→E
If A≥150:⁻int(.5E→E
End
For(Z,0,1000:End
Asm(prgmBACKHOME



Of course the For loop at the end would be removed entirely, though, because in my RPGs I generally just use no delay during damage display anymore and instead use the load times as the delay to speed the game pace. :P
u/Dream of Omnimaga December 07, 2023, 10:56:43 PM
Website statistics


MyCalcs | Ticalc.org | Cemetech | Omnimaga | TI-Basic Developer | MaxCoderz | TI-Story | Casiocalc.org | Casiopeia | The Museum of HP Calculators | HPCalc.org | CnCalc.org | Music 2000 Community | TI Education | Casio Education | HP Calcs | NumWorks | SwissMicros | Sharp Calculators
Powered by EzPortal