Long ago, there was naught.
Then, formed from the swirling void, two great beings appeared.
Their powers split the void into two elements, Light and Dark.
Combining their powers, they formed a small planet, which they named Alteria.
They filled the planet with beings made in their image, and named them Alterians.
For many years, Alteria flourished, and there was peace.
But it was not meant to last.
Just as quickly as harmony had formed, dischord followed.
The two great beings turned against each other, and war broke out in the heavens above Alteria.
As the world was torn asunder by the chaos, a hero rose.
A warrior by the name of Sky ascended to the heavens to calm the two great beings.
He was victorious, and the resulting flow of magic created the Star element to balance light and dark.
The great beings, ashamed of what had happened, gave control of these three elements to a pure soul on Alteria.
Afterward, they departed, vanishing among the many planets created during the war.
The people of Alteria recovered from the aftermath of the war with the help of their new guardian, the Creator.
And life went on...
Still planning the environment system out, which leads to the next change in Nostalgia's game mechanics: your items are affected by the evironment!Well, that's the plan, at least. I'm aiming to implement this as much as I can. :wink:
I got the idea while I was playing Lunar Knights, because your perishables items (meat, fruit) spoils if not used in a certain amount of time.
So I came up with this plan:QuoteJerkyPork and Steak spoil after a few days (in game), turning them into Spoiled Meat, which harms you instead of healing you.
Pork
Steak
However, to prevent this, you can have your Pork and Steak cured in a town to prevent them from spoiling. Jerky won't ever spoil, since it was prepared that way.QuoteWaterIn snowy weather, if you stay out long enough, your Water and Spring Water will freeze, halving their effects. Liquid Ether is unaffected by the weather.
Spring Water
Liquid EtherQuoteHoly ArcanaThe Holy Arcana revives a fallen ally. However, if you spend too much time in the rain, the Arcana becomes soaked, and will only restore your ally to 1 HP instead of 1/4 their total HP.
Tent
Tent provides shelter for you, restoring your HP and MP in the field. But as you wander in the plains, or high in the mountains, you might run into a thunderstorm. If you are struck by lightning, you'll take damage, and there's a chance one of your Tents will be charred, causing it to randomly either heal a small bit of HP, a small bit of MP, or do nothing.
To accommodate for the items being affected by the weather, and therefore possibly changing types on the fly, your inventory will be limited to 64 item slots, each slot holding one item. It's not unlike Illusiat 13's iventory, but it only holds items. Key items and equipment are held elsewhere, as they don't need to change on the fly.
nice :DSame here! That's really cool. :D
I am getting more and more interested in playing this :D
More characters!
General Arc:
(http://i893.photobucket.com/albums/ac139/FinaleTI/GeneralArc.png)
The general leading the Black Claw under Lord Frey's militaristic rule. He and Aria were once good friends before Frey took over. Because of his superior combat knowledge he was promoted to general of the Black Claw, while Aria stayed little more than a regular knight. He believes he is fighting for justice and will hunt down and dispose of Aria, as per orders, regardless of the fact they were once friends.
Lord Frey:
(http://i893.photobucket.com/albums/ac139/FinaleTI/FreyPortrait.jpg)
The tyrannical lord who rules the Shadowed dimension with an iron fist. He was once a general of the Royal Alterian Army, before Dākumeshia corrupted him.
Dākumeshia:
(http://i893.photobucket.com/albums/ac139/FinaleTI/DkumeshiaPortrait.jpg)
The 'Dark Messiah', a being created without a soul to serve the First Dark, one of the two original great beings who shaped Alteria. His purpose is to destroy the Creator, so that his master can take over Alteria.
Note: Dākumeshia is the romanization for a Japanese phrase meaning 'Dark Messiah'.
Oh I thought you wanted us to choose between 3 of each groups, since they seemed grouped. The other seems fine to me.Does this mean the English or Japanese versions?
That can work too. I personally don't know much about japaneese stuff so I can help much on that stuff.I don't know much Japanese either. That's why I'm learning and using Google Translate for this stuff.
It's a bit slower oncalc, plus this is just the bare-bone structure of it. I'll be adding in NPCs and the like and after all that I will adjust the speed.Aaah ok ^^
Working on battle engine and the menus. I don't know if the entire game will be finished in time for the deadline, but I'll definitly be submitting a demo with the first couple of bosses.A demo should probably be fine, providing it's not like 3 rooms, the boss then the end or barely anything working at all such as battles. I'm glad this is still progressing :)
Heavenly Star - Heavenly stars above, you remind us we are never alone. Grant me your power, so that I might be there for those who need me!Are you sure you didn't steal this line from Sailor moon? :P j/k
I managed to finish the text routine for the most part! I just need to do a little debugging with 'page breaks', but line breaks and ending a string work. I also converted the main battle menu from a bitmap to be drawn and then typed out with the text routine.
Their normal lifespan is very similar to ours, but if an Alterian is blessed by the Creator, they can live for hundreds of years past their normal lifespan.
Still working....
I did manage to mock up what the menu will look like when you start the game.
Thanks guys! I just figured out what went wrong with the battle engine, so its development is no longer in a slump!
In fact, I may be able to post some more screenies tomorrow!
i love the way it looks
the screenie is a little slow, though...
"Pic3"→Str1
GetCalc(Str1,768)→P
.Draw to the buffer
Copy(L6,P,768)
To export data to a pic:Code: [Select]"Pic3"→Str1
GetCalc(Str1,768)→P
.Draw to the buffer
Copy(L6,P,768)
You can actually make pictures bigger than normally allowed. ;D I accidentally made a Pic once that was 791 bytes in the memory menu.
To export data to a pic:does that require pic3 to be already existing in ram, or does it create the var if it cant find it(and can it find it in arch now? i think there was an update about that...)Code: [Select]"Pic3"→Str1
GetCalc(Str1,768)→P
.Draw to the buffer
Copy(L6,P,768)
You can actually make pictures bigger than normally allowed. ;D I accidentally made a Pic once that was 791 bytes in the memory menu.
Another idea I got is to make the sprite move a few pixels closer to you when it's their turn.
Pulling a RPG in 8 KB code seems like an hectic task.
I still feel like that text is a bit hard to read...It does look clearer on calc in my opinion.
That may just be me getting old...
perfect! I'll load this to my bro's calc on 9/16 and say its his present. :P His bday is 9/16. and of course, I'll tell him who made it. ;)I have to reconstruct my battle engine, of course. But after all that, I'd consider that an honor to be recognized like that. Don't forget you'd be in the credits too, though. ;)
I will say I'm planning a greyscale game after this.That would rule! :O But yeah focus on Nostalgia first, lol :P. I can't wait to try it :)
whoah!!! mind blowing and graphical... nice face picture on the stats screen.Yeah, I hear that the guy who did that is a really cool guy and everyone gives him high fives whenever he finishes a sprite, but you didn't hear that from me. 8)
Whew, finally have some free time to catch up on everything I've missed. This is looking great by the way. I really love that font and those menus. Can't wait until this gets released! (actually, it's only about 5 days, so I guess I could wait) ;DLol :Pwhoah!!! mind blowing and graphical... nice face picture on the stats screen.Yeah, I hear that the guy who did that is a really cool guy and everyone gives him high fives whenever he finishes a sprite, but you didn't hear that from me. 8)
Whew, finally have some free time to catch up on everything I've missed. This is looking great by the way. I really love that font and those menus. Can't wait until this gets released! (actually, it's only about 5 days, so I guess I could wait) ;DLol. Thanks for that portrait again.whoah!!! mind blowing and graphical... nice face picture on the stats screen.Yeah, I hear that the guy who did that is a really cool guy and everyone gives him high fives whenever he finishes a sprite, but you didn't hear that from me. 8)
and next time, don't scare me like that, I though you lost the whole project. :P
:.NOSMENU
:.[Pic1]→Pic1
:.[Pic3]→Pic2
:.[Pic2]→Pic3
:.[Pic6]→Pic4
:.[Pic5]→Pic5
:[10A040A00000000060F0909000000000F09090600000000000A040A000000000→Pic1I
:"vNOSBUFF"→Str1D
:"IRON SWORD*"→Str1E
:"STEEL SWORD*"→Str2E
:"ARBITER'S BLADE*"→Str3E
:"IRON ARMOR*"→Str1A
:"STEEL ARMOR*"→Str2A
:"GUARDIAN MAIL*"→Str3A
:"IRON SHIELD*"→Str1S
:"STEEL SHIELD*"→Str2S
:"ROUND SHIELD*"→Str3S
:DiagnosticOff
:0→r1
:GetCalc(Str1D,768)→J
:DeltaList(8,20,42,60,48,99)→GDB1E
:DeltaList(12,23,33,50,60)→GDB1A
:DeltaList(6,10,15,26,39)→GDB2A
:DeltaList(5,25,125,625,0)→GDB1EX
:GetCalc("vNosStats")→K
:GetCalc("vNosPorts")→I
:GetCalc("vNosMenus",Y1)
:ClrDrawr
:DrawInv r
:Full
:For(θ,0,767
:{Y1+1536+θ} and {L3+θ}→{L3+θ}
:End
:Lbl MS
:If r1=‾1 or (getKey(48)
:0→r1
:Return
:End
:Full
:conj(Y1,L6,768
:For(θ,0,1
:If {θ+70+K}=1
:sub(TX,63,θ*15+4,"ROLAND*"
:sub(DN,{K+38}r,76,θ*15+9,2
:sub(DN,{K+40},76,θ*15+14,1
:End
:If {θ+70+K}=2
:sub(TX,63,θ*15+4,"ARIA*"
:sub(DN,{K}r,76,θ*15+9,2
:sub(DN,{K+2},76,θ*15+14,1
:End
:If {θ+70+K}
:sub(TX,63,θ*15+9,"HP*"
:sub(TX,63,θ*15+14,"MP*"
:End
:End
:conj(L6,J,768
:Lbl MM
:ClrDraw
:conj(J,L6,768
:Normal
:For(θ,0,10
:DispGraphr
:End
:sub(BMG,3,30,7,3,6)
:r1→θ
:If r1=‾1 or θ>15
:DelVar Str1D
:ClrHome
:Goto EXT
:End
:If θ≤15
:Goto CS
:End
:Lbl EXT
:DelVar Str1D
:ClrHome
:Return
:
:.Item Screen
:Lbl IT
:Full
:conj(Y1+768,L6,768
:For(θ,0,7
:!If {θ+58+K}
:ref(4,θ*5+10,81,5
:rref(4,θ*5+10,81,5
:Else
:sub(DN,{θ+58+K},82,θ*5+11,1
:End
:End
:DispGraph
:Normal
:Pause 200
:0→S
:Repeat r1=‾1 or (S≠0) or (r1=‾3
:sub(BM,10,74,8,3,6,1)
:r1/5→S
:{S+58+K}→S
:End
:If r1=‾1
:Goto MM
:End
:If r1≥0
:sub(ITM,r1/5
:End
:If r1>200
:conj(Y1+4608,L6,768
:DispGraph
:Pause 200
:0→r1
:sub(BM,10,74,2,3,6,2)
:If r1≠65534 or (r1=‾1
:0→r1
:Goto MM
:End
:Goto IT
:End
:Goto MS
:
:.Character Select
:Lbl CS
:θ→V
:For(θ,0,10
:DispGraphr
:End
:0→r1
:If V≠15 and ({K+71}≠0
:sub(BMG,3,31,2,62,16
:End
:If r1=‾1
:Goto MM
:End
:If V=5
:0→r6
:If {r1/15+70+K}=1
:38→r6
:End
:Goto ST
:End
:If V=0
:0→V
:If {r1/15+70+K}=1
:32→V
:End
:Goto EQ
:End
:If V=10
:0→V
:If {r1/15+70+K}=1
:38→V
:End
:Goto IT
:End
:If V=15 and ({K+71}≠0
:expr(K+70,K+71,1
:Goto MS
:End
:Goto MM
:
:.Status Screen
:Lbl ST
:conj(Y1+3072,L6,768
:If r6=38
:Fix 9
:Tangent(4,4,I)
:Fix 8
:ref(37,4,33,10
:rref(37,4,33,10
:sub(TX,37,4,"ROLAND*"
:sub(TX,37,9,"THIEF*"
:End
:sub(DN,{K+r6}r,49,15,2
:sub(DN,{r6+3+K}r,68,15,2
:sub(DN,{K+r6+2},49,20,1
:sub(DN,{K+r6+5},63,20,1
:sub(LN,{31*(r6=38)+23+K}r
:sub(DN,{31*(r6=38)+23+K}r,57,26,Y
:sub(LN,{31*(r6=38)+25+K}r
:sub(DN,{31*(r6=38)+25+K}r,57,31,Y
:sub(DN,{K+r6+6},21,38,1
:sub(DN,100-{K+r6+7},74,38,1
:sub(DN,{K+r6+8},21,43,1
:sub(DN,{K+r6+9},74,43,1
:sub(DN,{K+r6+10},21,48,1
:sub(DN,{K+r6+11},21,53,1
:sub(DN,{K+r6+12},74,48,1
:sub(LN,{29*(r6=38)+37+K}
:sub(DN,{29*(r6=38)+37+K},84,4,Y
:sub(LN,{{32*(r6=38)+19+K}-13+GDB1E}
:sub(DN,{{32*(r6=38)+19+K}-13+GDB1E},44,38,Y
:{{32*(r6=38)+20+K}-27+GDB1A}→V
:{{32*(r6=38)+21+K}-32+GDB2A}+V→A
:sub(LN,A
:sub(DN,A,44,48,Y
:DispGraph
:Pause 200
:Repeat getKey(48) or getKey(1)
:End
:If getKey(1)
:conj(Y1+4272,L6+432,336
:Pxl-Off(8,40
:For(θ,0,2
:sub(DN,{9*(r6=38)+74+θ+K},26,θ*8+39,0
:End
:sub(LN,{{9*(r6=38)+74+K}-1+GDB1EX}-{9*(r6=38)+77+K}r
:sub(DN,{{9*(r6=38)+74+K}-1+GDB1EX}-{9*(r6=38)+77+K}r,54,39,Y
:sub(LN,{{9*(r6=38)+75+K}-1+GDB1EX}-{9*(r6=38)+79+K}r
:sub(DN,{{9*(r6=38)+75+K}-1+GDB1EX}-{9*(r6=38)+79+K}r,54,47,Y
:sub(LN,{{9*(r6=38)+76+K}-1+GDB1EX}-{8*(r6=38)+81+K}r
:sub(DN,{{9*(r6=38)+76+K}-1+GDB1EX}-{8*(r6=38)+81+K}r,54,55,Y
:DispGraph
:Pause 200
:Repeat getKey(48) or getKey(4)
:End
:If getKey(4)
:Goto ST
:End
:End
:Goto MM
:
:.Equip Screen
:Lbl EQ
:conj(Y1+2304,L6,768
:ref(62,4,20,5
:rref(62,4,20,5
:If V=32
:GetCalc("vNosPorts")→I
:Fix 8
:Tangent(4,4,I
:Fix 9
:ref(36,4,8,32
:rref(36,4,8,32
:sub(TX,37,4,"ROLAND*"
:sub(TX,37,9,"THIEF*"
:Else
:sub(TX,37,4,"ARIA*"
:sub(TX,37,9,"KNIGHT*"
:End
:sub(TX,72,4,"LV*"
:sub(LN,{29*(V=32)+37+K}
:sub(DN,{29*(V=32)+37+K},84,4,Y
:ref(87,37,5,25
:rref(87,37,5,25
:ref(4,37,83,24
:rref(4,37,83,24
:If {K+V+19}=13
:sub(TX,37,15,Str1E
:End
:If {K+V+19}=14
:sub(TX,37,15,Str2E
:End
:If {K+V+19}=15
:sub(TX,37,15,Str3E
:End
:If {K+V+20}=27
:sub(TX,37,20,Str1A
:End
:If {K+V+20}=28
:sub(TX,37,20,Str2A
:End
:If {K+V+20}=29
:sub(TX,37,20,Str3A
:End
:If {K+V+21}=32
:sub(TX,37,25,Str1S
:End
:If {K+V+21}=33
:sub(TX,37,25,Str2S
:End
:If {K+V+21}=34
:sub(TX,37,25,Str3S
:End
:sub(TX,37,30,"BACK*"
:DispGraph
:Pause 200
:sub(BM,14,56,4,36,6,0)
:If r1=15
:Goto MM
:End
:If r1=‾1
:Goto MM
:End
:r1→θ
:If θ=0
:If {K+13}
:Pt-On(4,37,Pic1I
:sub(TX,9,37,Str1E
:Pt-On(83,37,Pic1I+24
:sub(DN,{K+13},87,37,0
:End
:If {K+14}
:Pt-On(4,42,Pic1I
:sub(TX,9,42,Str2E
:Pt-On(83,42,Pic1I+24
:sub(DN,{K+14},87,42,0
:End
:If {K+15}
:Pt-On(4,47,Pic1I
:sub(TX,9,47,Str3E
:Pt-On(83,47,Pic1I+24
:sub(DN,{K+15},87,47,0
:End
:13→U
:19→S
:End
:If θ=5
:If {K+27}
:Pt-On(4,37,Pic1I+8
:sub(TX,9,37,Str1A
:Pt-On(83,37,Pic1I+24
:sub(DN,{K+27},87,37,0
:End
:If {K+28}
:Pt-On(4,42,Pic1I+8
:sub(TX,9,42,Str2A
:Pt-On(83,42,Pic1I+24
:sub(DN,{K+28},87,42,0
:End
:If {K+29}
:Pt-On(4,47,Pic1I+8
:sub(TX,9,47,Str3A
:Pt-On(83,47,Pic1I+24
:sub(DN,{K+29},87,47,0
:End
:27→U
:20→S
:End
:If θ=10
:If {K+32}
:Pt-On(4,37,Pic1I+16
:sub(TX,9,37,Str1S
:Pt-On(83,37,Pic1I+24
:sub(DN,{K+32},87,37,0
:End
:If {K+33}
:Pt-On(4,42,Pic1I+16
:sub(TX,9,42,Str2S
:Pt-On(83,42,Pic1I+24
:sub(DN,{K+33},87,42,0
:End
:If {K+34}
:Pt-On(4,47,Pic1I+16
:sub(TX,9,47,Str3S
:Pt-On(83,47,Pic1I+24
:sub(DN,{K+34},87,47,0
:End
:32→U
:21→S
:End
:Pause 200
:Repeat r1=‾1
:0→r1
:sub(BM,36,79,5,3,6,0)
:If r1=‾1
:Goto EQ
:End
:If pxl-Test(4,r1+38) or (pxl-Test(4,r1+40
:{{V+S+K}+K}+1→{{V+S+K}+K}
:r1/5+U→{V+S+K}
:{r1/5+U+K}-1→{r1/5+U+K}
:‾1→r1
:End
:End
:Goto EQ
:Return
:Lbl BM
:r6→F
:r5→θ
:r4→r5
:r3-1*(θ-1)+r1→r3
:r1→r4
:Repeat getKey(54) or (getKey(48)) or (r1=‾3) or (r1=‾2)
:rref(r5,r1,r2,θ
:DispGraph
:rref(r5,r1,r2,θ
:Repeat getKey
:End
:If getKey(3) and (F≠0
:‾3→r1
:End
:If getKey(2) and (F=2
:‾2→r1
:End
:If getKey(4) and (r1≠r4
:For(r6,1,θ-1
:rref(r5,r1,r2,θ
:DispGraph
:Pause 20
:rref(r5,r1,r2,θ
:r1-1→r1
:End
:End
:If getKey(1) and (r1≠r3
:For(r6,1,θ-1
:rref(r5,r1,r2,θ
:DispGraph
:Pause 20
:rref(r5,r1,r2,θ
:r1+1→r1
:End
:End
:End
:If r1<<0
:Return
:End
:r1-r4→r1
:If getKey(48)
:‾1→r1
:End
:While getKey(0)
:End
:Return
:
:.Menu - Grey
:Lbl BMG
:r5→θ
:r4→r5
:r3-1*(θ-1)+r1→r3
:r1→r4
:Repeat getKey(54) or (getKey(48)
:rref(r5,r1,r2,θ
:Normal
:Repeat getKey
:DispGraphr
:End
:Full
:rref(r5,r1,r2,θ
:If getKey(4) and (r1≠r4
:For(r6,1,θ-1
:rref(r5,r1,r2,θ
:Normal
:For(Z,0,2
:DispGraphr
:End
:Full
:rref(r5,r1,r2,θ
:r1-1→r1
:End
:End
:If getKey(1) and (r1≠r3
:For(r6,1,θ-1
:rref(r5,r1,r2,θ
:Normal
:For(Z,0,2
:DispGraphr
:End
:Full
:rref(r5,r1,r2,θ
:r1+1→r1
:End
:End
:End
:r1-r4→r1
:If getKey(48)
:‾1→r1
:End
:Normal
:While getKey(0)
:DispGraphr
:End
:Return
:
:.Text
:Lbl TX
:[6050709000000000E0605070000000006080906000000000E05050B0000000006080C0E000000000F0406040000000007080B07000000000C878484800000000E04040F000000000F028A06000000000D060505800000000C040507000000000D0A8A8A8000000008060909000000000609090E000000000E0507040000000006090B06800000000E05060D000000000E0C060E00000000070A02020000000009890906000000000989050200000000088A8A85800000000502050D0000000009070202000000000F01060F00000000040C040E000000000709060F000000000609030F00000000020A0F02000000000E08060E0000000006080E0E000000000F09020200000000070F090F000000000E0E020C000000000E09090700000000000000080000000000000C04000000000604000800000000060A0004000000000C040000000000000A0A00000000000000000F8000000000020404080000000000000000000000000→Str1
:r1→X→F
:r2→Y→G
:0→C
:r3→S
:Repeat getKey(15) or ({S+C}=42
:If {S+C}=41
:Y+5→Y
:F→X
:C+1→C
:End
:If {S+C}=43
:Repeat getKey(54)
:End
:conj(L3,L6,756
:F→X:G→Y
:C+1→C
:End
:While {S+C}=32
:X+2→X
:C+1→C
:End
:If {S+C}=42
:Goto RT
:End
:If {S+C}=41
:Y+5→Y
:F→X
:C+1→C
:End
:{S+C}→D
:D-65→B
:If D<65
:(D-48)+25→B
:If D=48
:35→B
:End
:If D=46
:36→B
:End
:If D=44
:37→B
:End
:End
:5→A
:If (D=72) or (D=74) or (D=75) or (D=77) or (D=81) or (D=85) or (D=86) or (D=87
:6→A
:End
:If (D=69) or (D=83) or (D=49) or (D=53) or (D=54) or (D=57) or (D=33
:4→A
:End
:If D=33
:38→B
:End
:If D=39
:40→B
:3→A
:End
:Pt-On(X,Y,8*B+Str1
:X+A→X
:C+1→C
:End
:Lbl RT
:Return
:
:.Draw Numbers
:Lbl DN
:[E09090700000000040C040E000000000709060F000000000609030F00000000020A0F02000000000E08060E0000000006080E0E000000000F09020200000000070F090F000000000E0E020C000000000→Str1N
:DeltaList(5,4,5,5,5,4,4,5,5,4)→GDB3
:For(X,0,2
:0→{L1+X}
:5→{L5+X}
:End
:r1→Z
:r4→X
:While Z
:sub(CN,Z^10)
:Z/10→Z
:End
:sub(DRN)
:Return
:
:.Calculate Numbers
:Lbl CN
:{GDB3+r1}→{L5+X}
:r1→{L1+X}
:X-1→X
:Return
:
:.Draw Numbers
:Lbl DRN
:r2→Y
:For(X,0,r4)
:Pt-On(Y,r3,8*{L1+X}+Str1N
:Y+{L5+X}→Y
:End
:Return
:
:.Length of Numbers
:Lbl LN
:0→Y
:If r1>9
:1→Y
:End
:If r1>99
:2→Y
:End
:If r1>999
:3→Y
:End
:If r1>9999
:4→Y
:End
:Return
:
:.Item Usage
:Lbl ITM
:If r1=0 and ({K+V}r≠0) and ({K+V}r≠{V+3+K}r) and ({K+58}≠0
:{K+V}r+100→{K+V}r
:If {K+V}r≥{V+3+K}r
:{V+3+K}r→{K+V}r
:End
:{K+58}-1→{K+58}
:End
:If r1=3 and ({V+2+K}≠0) and ({V+2+K}≠{V+5+K}) and ({K+61}≠0
:{V+2+K}+10→{V+2+K}
:If {V+2+K}≥{V+5+K}
:{V+5+K}→{V+2+K}
:End
:{K+61}-1→{K+61}
:End
:If r1=6 and ({K+V}r=0) and ({K+61}≠0
:1→{K+V}r
:{V+5+K}→{V+2+K}
:{K+61}-1→{K+61}
:End
Darn Opera browser sucks so bad at rendering CODE tags on SMF boards x.x
ANyway gonna give this a try later :D
:Lbl KV
:Return K+V
:.Length of Numbers
:Lbl LN
:r1>=10+(r1>=100)+(r1>=1000)+(r1>=10000)→Y
:Return
Well, I decided to pick this up againYES! ;D
Optimization is going smoothly. I managed to cut the size from 10416 bytes to 9910! That's 506 bytes saved! And I'm pretty sure there are still several things I can optimize. :D
:.NOSMENU
:.[Pic1]→Pic1
:.[Pic3]→Pic2
:.[Pic2]→Pic3
:.[Pic6]→Pic4
:.[Pic5]→Pic5
:[10A040A00000000060F0909000000000F09090600000000000A040A000000000→Pic1I
:"vNOSBUFF"→Str1D
:"IRON SWORD*"→Str1E
:"STEEL SWORD*"→Str2E
:"ARBITER'S BLADE*"→Str3E
:"IRON ARMOR*"→Str1A
:"STEEL ARMOR*"→Str2A
:"GUARDIAN MAIL*"→Str3A
:"IRON SHIELD*"→Str1S
:"STEEL SHIELD*"→Str2S
:"ROUND SHIELD*"→Str3S
:DiagnosticOff
:0→r1
:GetCalc(Str1D,768)→J
:DeltaList(8,20,42,60,48,99)→GDB1E
:DeltaList(12,23,33,50,60)→GDB1A
:DeltaList(6,10,15,26,39)→GDB2A
:DeltaList(5,25,125,625,0)→GDB1EX
:GetCalc("vNosStats")→K
:GetCalc("vNosPorts")→I
:GetCalc("vNosMenus",Y1)
:ClrDrawr
:DrawInv r
:Full
:For(θ,0,767
:{Y1+1536+θ} and {L3+θ}→{L3+θ}
:End
:Lbl MS
:If ‾1sub(R1) or (getKey(48)
:0→r1
:Return
:End
:Full
:conj(Y1,L6,768
:For(θ,0,1
:If {θ+K+70}=1
:sub(TX,63,θ*15+4,"ROLAND*"
:sub(DN,{38sub(K)}r,76,θ*15+9,2
:sub(DN,{40sub(K)},76,θ*15+14,1
:End
:If {θ+K+70}=2
:sub(TX,63,θ*15+4,"ARIA*"
:sub(DN,{0sub(K)}r,76,θ*15+9,2
:sub(DN,{2sub(K)},76,θ*15+14,1
:End
:If {θ+70+K}
:sub(TX,63,θ*15+9,"HP*"
:sub(TX,63,θ*15+14,"MP*"
:End
:End
:conj(L6,J,768
:Lbl MM
:ClrDraw
:conj(J,L6,768
:Normal
:For(θ,0,10
:DispGraphr
:End
:sub(BMG,3,30,7,3,6)
:r1→θ
:If ‾1sub(R1) or (θ>15
:DelVar Str1D
:ClrHome
:Goto EXT
:End
:If θ≤15
:Goto CS
:End
:Lbl EXT
:DelVar Str1D
:ClrHome
:Return
:
:.Item Screen
:Lbl IT
:Full
:conj(Y1+768,L6,768
:For(θ,0,7
:!If {θ+58+K}
:ref(4,θ*5+10,81,5
:rref(4,θ*5+10,81,5
:Else
:sub(DN,{θ+58+K},82,θ*5+11,1
:End
:End
:DispGraph
:Normal
:Pause 200
:0→S
:Repeat ‾1sub(R1) or (S≠0) or (‾3sub(R1)
:sub(BM,10,74,8,3,6,1)
:r1/5→S
:{S+58+K}→S
:End
:If ‾1sub(R1)
:Goto MM
:End
:If r1≥0
:sub(ITM,r1/5
:End
:If r1>200
:conj(Y1+4608,L6,768
:DispGraph
:Pause 200
:0→r1
:sub(BM,10,74,2,3,6,2)
:If r1≠65534 or (‾1sub(R1)
:0→r1
:Goto MM
:End
:Goto IT
:End
:Goto MS
:
:.Character Select
:Lbl CS
:θ→V
:For(θ,0,10
:DispGraphr
:End
:0→r1
:If V≠15 and ({71sub(K)}≠0
:sub(BMG,3,31,2,62,16
:End
:If ‾1sub(R1)
:Goto MM
:End
:If V=5
:0→r6
:If {r1/15+70+K}=1
:38→r6
:End
:Goto ST
:End
:If V=0
:0→V
:If {r1/15+70+K}=1
:32→V
:End
:Goto EQ
:End
:If V=10
:0→V
:If {r1/15+70+K}=1
:38→V
:End
:Goto IT
:End
:If V=15 and ({71sub(K)}≠0
:expr(K+70,K+71,1
:Goto MS
:End
:Goto MM
:
:.Status Screen
:Lbl ST
:conj(Y1+3072,L6,768
:If r6=38
:Fix 9
:Tangent(4,4,I)
:Fix 8
:ref(37,4,33,10
:rref(37,4,33,10
:sub(TX,37,4,"ROLAND*"
:sub(TX,37,9,"THIEF*"
:End
:sub(DN,{r6sub(K)}r,49,15,2
:sub(DN,{r6+3+K}r,68,15,2
:sub(DN,{K+r6+2},49,20,1
:sub(DN,{K+r6+5},63,20,1
:sub(LN,{31*(r6=38)+23+K}r
:sub(DN,{31*(r6=38)+23+K}r,57,26,Y
:sub(LN,{31*(r6=38)+25+K}r
:sub(DN,{31*(r6=38)+25+K}r,57,31,Y
:sub(DN,{K+r6+6},21,38,1
:sub(DN,100-{K+r6+7},74,38,1
:sub(DN,{K+r6+8},21,43,1
:sub(DN,{K+r6+9},74,43,1
:sub(DN,{K+r6+10},21,48,1
:sub(DN,{K+r6+11},21,53,1
:sub(DN,{K+r6+12},74,48,1
:sub(LN,{29*(r6=38)+37+K}
:sub(DN,{29*(r6=38)+37+K},84,4,Y
:sub(LN,{{32*(r6=38)+19+K}-13+GDB1E}
:sub(DN,{{32*(r6=38)+19+K}-13+GDB1E},44,38,Y
:{{32*(r6=38)+20+K}-27+GDB1A}→V
:{{32*(r6=38)+21+K}-32+GDB2A}+V→A
:sub(LN,A
:sub(DN,A,44,48,Y
:DispGraph
:Pause 200
:Repeat getKey(48) or getKey(1)
:End
:If getKey(1)
:conj(Y1+4272,L6+432,336
:Pxl-Off(8,40
:For(θ,0,2
:sub(DN,{9*(r6=38)+74+θ+K},26,θ*8+39,0
:End
:sub(LN,{{9*(r6=38)+74+K}-1+GDB1EX}-{9*(r6=38)+77+K}r
:sub(DN,{{9*(r6=38)+74+K}-1+GDB1EX}-{9*(r6=38)+77+K}r,54,39,Y
:sub(LN,{{9*(r6=38)+75+K}-1+GDB1EX}-{9*(r6=38)+79+K}r
:sub(DN,{{9*(r6=38)+75+K}-1+GDB1EX}-{9*(r6=38)+79+K}r,54,47,Y
:sub(LN,{{9*(r6=38)+76+K}-1+GDB1EX}-{8*(r6=38)+81+K}r
:sub(DN,{{9*(r6=38)+76+K}-1+GDB1EX}-{8*(r6=38)+81+K}r,54,55,Y
:DispGraph
:Pause 200
:Repeat getKey(48) or getKey(4)
:End
:If getKey(4)
:Goto ST
:End
:End
:Goto MM
:
:.Equip Screen
:Lbl EQ
:conj(Y1+2304,L6,768
:ref(36,4,52,10
:rref(36,4,52,10
:If V=32
:GetCalc("vNosPorts")→I
:Fix 8
:Tangent(4,4,I
:Fix 9
:ref(36,4,8,32
:rref(36,4,8,32
:sub(TX,37,4,"ROLAND*"
:sub(TX,37,9,"THIEF*"
:Else
:sub(TX,37,4,"ARIA*"
:sub(TX,37,9,"KNIGHT*"
:End
:sub(TX,72,4,"LV*"
:sub(LN,{29*(V=32)+37+K}
:sub(DN,{29*(V=32)+37+K},84,4,Y
:ref(87,37,5,25
:rref(87,37,5,25
:ref(4,37,83,24
:rref(4,37,83,24
:If {sub(KV)+19}=13
:sub(TX,37,15,Str1E
:End
:If {sub(KV)+19}=14
:sub(TX,37,15,Str2E
:End
:If {sub(KV)+19}=15
:sub(TX,37,15,Str3E
:End
:If {sub(KV)+20}=27
:sub(TX,37,20,Str1A
:End
:If {sub(KV)+20}=28
:sub(TX,37,20,Str2A
:End
:If {sub(KV)+20}=29
:sub(TX,37,20,Str3A
:End
:If {sub(KV)+21}=32
:sub(TX,37,25,Str1S
:End
:If {sub(KV)+21}=33
:sub(TX,37,25,Str2S
:End
:If {sub(KV)+21}=34
:sub(TX,37,25,Str3S
:End
:sub(TX,37,30,"BACK*"
:DispGraph
:Pause 200
:sub(BM,14,56,4,36,6,0)
:If 15sub(R1)
:Goto MM
:End
:If ‾1sub(R1)
:Goto MM
:End
:r1→θ
:If θ=0
:If {13sub(K)}
:Pt-On(4,37,Pic1I
:sub(TX,9,37,Str1E
:Pt-On(83,37,Pic1I+24
:sub(DN,{13sub(K)},87,37,0
:End
:If {14sub(K)}
:Pt-On(4,42,Pic1I
:sub(TX,9,42,Str2E
:Pt-On(83,42,Pic1I+24
:sub(DN,{14sub(K)},87,42,0
:End
:If {15sub(K)}
:Pt-On(4,47,Pic1I
:sub(TX,9,47,Str3E
:Pt-On(83,47,Pic1I+24
:sub(DN,{15sub(K)},87,47,0
:End
:13→U
:19→S
:End
:If θ=5
:If {27sub(K)}
:Pt-On(4,37,Pic1I+8
:sub(TX,9,37,Str1A
:Pt-On(83,37,Pic1I+24
:sub(DN,{27sub(K)},87,37,0
:End
:If {28sub(K)}
:Pt-On(4,42,Pic1I+8
:sub(TX,9,42,Str2A
:Pt-On(83,42,Pic1I+24
:sub(DN,{28sub(K)},87,42,0
:End
:If {29sub(K)}
:Pt-On(4,47,Pic1I+8
:sub(TX,9,47,Str3A
:Pt-On(83,47,Pic1I+24
:sub(DN,{29sub(K)},87,47,0
:End
:27→U
:20→S
:End
:If θ=10
:If {32sub(K)}
:Pt-On(4,37,Pic1I+16
:sub(TX,9,37,Str1S
:Pt-On(83,37,Pic1I+24
:sub(DN,{32sub(K)},87,37,0
:End
:If {33sub(K)}
:Pt-On(4,42,Pic1I+16
:sub(TX,9,42,Str2S
:Pt-On(83,42,Pic1I+24
:sub(DN,{33sub(K)},87,42,0
:End
:If {34sub(K)}
:Pt-On(4,47,Pic1I+16
:sub(TX,9,47,Str3S
:Pt-On(83,47,Pic1I+24
:sub(DN,{34sub(K)},87,47,0
:End
:32→U
:21→S
:End
:Pause 200
:Repeat ‾1sub(R1)
:0→r1
:sub(BM,36,79,5,3,6,0)
:If ‾1sub(R1)
:Goto EQ
:End
:If pxl-Test(4,r1+38) or (pxl-Test(4,r1+40
:{{sub(KV)+S}sub(K)}+1→{{sub(KV)+S}sub(K)}
:r1/5+U→{sub(KV)+S}
:{r1/5+U+K}-1→{r1/5+U+K}
:‾1→r1
:End
:End
:Goto EQ
:Return
:Lbl BM
:r6→F
:r5→θ
:r4→r5
:r3-1*(θ-1)+r1→r3
:r1→r4
:Repeat getKey(54) or (getKey(48)) or (‾3sub(R1)) or (‾2sub(R1)
:rref(r5,r1,r2,θ
:DispGraph
:rref(r5,r1,r2,θ
:Repeat getKey
:End
:If getKey(3) and (F≠0
:‾3→r1
:End
:If getKey(2) and (F=2
:‾2→r1
:End
:If getKey(4) and (r1≠r4
:For(r6,1,θ-1
:rref(r5,r1,r2,θ
:DispGraph
:Pause 20
:rref(r5,r1,r2,θ
:r1-1→r1
:End
:End
:If getKey(1) and (r1≠r3
:For(r6,1,θ-1
:rref(r5,r1,r2,θ
:DispGraph
:Pause 20
:rref(r5,r1,r2,θ
:r1+1→r1
:End
:End
:End
:If r1<<0
:Return
:End
:r1-r4→r1
:If getKey(48)
:‾1→r1
:End
:While getKey(0)
:End
:Return
:
:.Menu - Grey
:Lbl BMG
:r5→θ
:r4→r5
:r3-1*(θ-1)+r1→r3
:r1→r4
:Repeat getKey(54) or (getKey(48)
:rref(r5,r1,r2,θ
:Normal
:Repeat getKey
:DispGraphr
:End
:Full
:rref(r5,r1,r2,θ
:If getKey(4) and (r1≠r4
:For(r6,1,θ-1
:rref(r5,r1,r2,θ
:Normal
:For(Z,0,2
:DispGraphr
:End
:Full
:rref(r5,r1,r2,θ
:r1-1→r1
:End
:End
:If getKey(1) and (r1≠r3
:For(r6,1,θ-1
:rref(r5,r1,r2,θ
:Normal
:For(Z,0,2
:DispGraphr
:End
:Full
:rref(r5,r1,r2,θ
:r1+1→r1
:End
:End
:End
:r1-r4→r1
:If getKey(48)
:‾1→r1
:End
:Normal
:While getKey(0)
:DispGraphr
:End
:Return
:
:.Text
:Lbl TX
:[6050709000000000E0605070000000006080906000000000E05050B0000000006080C0E000000000F0406040000000007080B07000000000C878484800000000E04040F000000000F028A06000000000D060505800000000C040507000000000D0A8A8A8000000008060909000000000609090E000000000E0507040000000006090B06800000000E05060D000000000E0C060E00000000070A02020000000009890906000000000989050200000000088A8A85800000000502050D0000000009070202000000000F01060F00000000040C040E000000000709060F000000000609030F00000000020A0F02000000000E08060E0000000006080E0E000000000F09020200000000070F090F000000000E0E020C000000000E09090700000000000000080000000000000C04000000000604000800000000060A0004000000000C040000000000000A0A00000000000000000F8000000000020404080000000000000000000000000→Str1
:r1→X→F
:r2→Y→G
:0→C
:r3→S
:Repeat getKey(15) or ({S+C}=42
:If {S+C}=41
:Y+5→Y
:F→X
:C+1→C
:End
:If {S+C}=43
:Repeat getKey(54)
:End
:conj(L3,L6,756
:F→X:G→Y
:C+1→C
:End
:While {S+C}=32
:X+2→X
:C+1→C
:End
:If {S+C}=42
:Goto RT
:End
:If {S+C}=41
:Y+5→Y
:F→X
:C+1→C
:End
:{S+C}→D
:D-65→B
:If D<65
:(D-48)+25→B
:If D=48
:35→B
:End
:If D=46
:36→B
:End
:If D=44
:37→B
:End
:End
:5→A
:.If (D=72) or (D=74) or (D=75) or (D=77) or (D=81) or (D=85) or (D=86) or (D=87
:If inString(D,DeltaList(72,74,75,77,81,85,86,87,0))
:6→A
:End
:.If (D=69) or (D=83) or (D=49) or (D=53) or (D=54) or (D=57) or (D=33
:If inString(D,DeltaList(69,83,49,53,54,57,33,0))
:4→A
:End
:If D=33
:38→B
:End
:If D=39
:40→B
:3→A
:End
:Pt-On(X,Y,8*B+Str1
:X+A→X
:C+1→C
:End
:Lbl RT
:Return
:
:.Draw Numbers
:Lbl DN
:[E09090700000000040C040E000000000709060F000000000609030F00000000020A0F02000000000E08060E0000000006080E0E000000000F09020200000000070F090F000000000E0E020C000000000→Str1N
:DeltaList(5,4,5,5,5,4,4,5,5,4)→GDB3
:For(X,0,2
:0→{L1+X}
:5→{L5+X}
:End
:r1→Z
:r4→X
:While Z
:sub(CN,Z^10)
:Z/10→Z
:End
:sub(DRN)
:Return
:
:.Calculate Numbers
:Lbl CN
:{GDB3+r1}→{L5+X}
:r1→{L1+X}
:X-1→X
:Return
:
:.Draw Numbers
:Lbl DRN
:r2→Y
:For(X,0,r4)
:Pt-On(Y,r3,8*{L1+X}+Str1N
:Y+{L5+X}→Y
:End
:Return
:
:.Length of Numbers
:Lbl LN
:0+(r1≥10)+(r1≥100)+(r1≥1000)+(r1≥10000)→Y
:Return
:
:.Item Usage
:Lbl ITM
:If 0sub(R1) and ({sub(KV)}r≠0) and ({sub(KV)}r≠{sub(KV)+3}r) and ({58sub(K)}≠0
:{sub(KV)}r+100→{sub(KV)}r
:If {sub(KV)}r≥{sub(KV)+3}r
:{sub(KV)+3}r→{sub(KV)}r
:End
:{58sub(K)}-1→{58sub(K)}
:End
:If 3sub(R1) and ({sub(KV)+2}≠0) and ({sub(KV)+2}≠{sub(KV)+5}) and ({61sub(K)}≠0
:{sub(KV)+2}+10→{sub(KV)+2}
:If {sub(KV)+2}≥{sub(KV)+5}
:{sub(KV)+5}→{sub(KV)+2}
:End
:{61sub(K)}-1→{61sub(K)}
:End
:If 6sub(R1) and ({sub(KV)}r=0) and ({61sub(K)}≠0
:1→{sub(KV)}r
:{sub(KV)+5}→{sub(KV)+2}
:{61sub(K)}-1→{61sub(K)}
:End
:Return
:
:Lbl R1
:(=r1)Return
:
:Lbl KV
:ReturnK+V
:
:Lbl K
:(+K)Return
Yeah. I'm just so used to the on-calc editor, that it doesn't phase me all to much. Plus, since I wrote the thing on-calc, I'm pretty comfortable with editing on-calc.*Magic Banana gives FinaleTI a high five.
ClrDrawr
DrawInv r
Full
For(θ,0,767
{Y1+1536+θ} and {L3+θ}→{L3+θ}
End
Is the same as:Full
conj(Y1+1536,L3,768)
You edit this behemoth on-calc?!? :o Thanks for reminding me of Merthsoft's Tokens program, that appears to work correctly. I'll try optimizing it from there now.I don't want to discourage you, but the 29 (if I didn't forget any) calculator RPG projects I worked on, some of which were in the 75-120 KB code size, were all created on-calc. Same for Metroid II: Evolution and its expansion. :P The thing is that when you do a lot of TI-BASIC you end up being used so much to the on-calc editor that you are more comfortable coding on-calc than on a computer, even more when you owned no computer when starting TI-BASIC (like me)
Well so much for optimizing it by adding subroutines... I just got ERR: MAX SYMBOLS. Which, according to the documentation, means the program has too many static pointers and labels.Actually, conj() uses Overwrite logic and I need AND logic for masking. So that wouldn't work. The only reason the back-buffer is being drawn completely black is just for a test. In the future, the current screen will be displayed there.
EDIT: Although Merthsoft's Tokens program looked so promising, I just realized that even it fails to correctly handle the source file. Without any changes to the source file, compiling it with Axe yields a 9,878-byte application, which is 5 bytes smaller than it should be. I first noticed that something was wrong because no items showed up in the equip items menu, resulting in my becoming stuck and having to reset the RAM. Unfortunately it looks like I'm not going to be able to help optimize this for you unless I can find SOME program editor that will correctly handle the source file. I can tell you one fairly large optimization that I noticed right at the beginning, though:Code: [Select]ClrDrawr
Is the same as:
DrawInv r
Full
For(θ,0,767
{Y1+1536+θ} and {L3+θ}→{L3+θ}
EndCode: [Select]Full
conj(Y1+1536,L3,768)
(http://img.removedfromgame.com/imgs/1289510672-It\'s baaack!.gif)
What do you mean? I know there is a long pause near the beginning, but that's cuz I had to run to let the dog out back while Wabbit was capturing. It should work, though, as I used {AP}'s RFG Image Uploader, plus it works fine on my computer.
its a broken link,. I fixed it though. ;)
http://img.removedfromgame.com/imgs/1289510672-It's baaack!.gif
its a broken link,. I fixed it though. ;)
http://img.removedfromgame.com/imgs/1289510672-It%5c's%20baaack%21.gif
how many sprites, though?>9000
Speaking of shops, I'm gonna go mock that up right know...nuuu do teh battle egninenegenes! firrststs ;)
Yeah, as DJ said, I had some really good progress on it, but I lost it in a back-up corruption...Speaking of shops, I'm gonna go mock that up right know...nuuu do teh battle egninenegenes! firrststs ;)
Ooh, I'll be looking forward to that ;)Well, my menus are about 9500 or so bytes, but a good chunk of that is subroutines the whole game will use. Currently, my compilation of the walking engines and title screen is about 10000 bytes, but I can shave off about 3500-4000 bytes when I move the title screen pics and test map to external appvars. Then it's just optimizing.
Btw, how are you doing with space in the app? I'm cutting it very,very close with Ash and I was wondering how you're dealing with it :P
hmmm for meThanks and good luck to you too.
battle engine ~9000 map engine ~5000 shops/inns/titlescreen must fit in ~2000 then D:
/me goes off to optimize stuff
good luck with the demo! :)
I'm hoping for a Christmas release at the latest, but I can't set a date yet.That would be cool :D
I'm working on NPCs right now.
I forgot to mention that the possible Christmas release I mentioned would be a beta release. Just wanted to clarify that.I'm hoping for a Christmas release at the latest, but I can't set a date yet.That would be cool :D
I'm working on NPCs right now.
Good luck with NPCs and fitting the entire code into the app page.
Maybe I can learn something from your walking engine...I can post mine if you want when i'm done making the planned changes to it :PSounds good. We could probably learn stuff from each others engines, even though they use completely different storage methods.
Yeah that's what I thought. Can,t wait ;DI forgot to mention that the possible Christmas release I mentioned would be a beta release. Just wanted to clarify that.I'm hoping for a Christmas release at the latest, but I can't set a date yet.That would be cool :D
I'm working on NPCs right now.
Good luck with NPCs and fitting the entire code into the app page.
I'm optimizing the walking engine right now, and will probably have to post it for help, since I want to get the most optimization it's possible to get out of it. I need all the space I can get...
Ah right, I guess it's broken in Wabbit. X.xWell, at least compiling it is. I think that transferring a working copy of the app to the computer than Wabbit worked before.
In my case it just shows garbage.
Sounds neat! So, how are you doing the maps? Are you still determining the tiles with pxl-Test()?Yep, the maps are still pxl-Test()'ed, but instead of one pixel per tile, it's a 2x2 pixel block per tile.
It's nice to see an update. ;D
that's a decent Idea. 16 tiles is enough for a contest game, I'm sure it'll be great! :DThis isn't for a contest - The one that is is Nostalgia: Sky's Story. :)
that's a decent Idea. 16 tiles is enough for a contest game, I'm sure it'll be great! :DWhat do you mean? This isn't a contest game anymore, as the Axe contest is over.
oh, sorry, I was thinking this was sky's story...No prob. But Sky's Story will support as many tiles as I want/have memory for, because of how I have the engine set up/can set the engine up.
/me does a facepalm
either way, cool! :D
Nice idea :D One thing that can be done if you decided to stick to 0 and 1s would be to have the map engine so it checks all surrounding pixels to determine which side of the wall is displayed. This would allow less blocky walls while still not taking too much space. Shmibs posted a topic showing such idea in action before. Here's the screenshot of what he did:Sounds neat! So, how are you doing the maps? Are you still determining the tiles with pxl-Test()?Yep, the maps are still pxl-Test()'ed, but instead of one pixel per tile, it's a 2x2 pixel block per tile.
It's nice to see an update. ;D
12
48
That's how each block is read.
The first pixel adds one to the index, the second adds 2, the third 4 and the fourth 8.
So tiles can have the index number 0-15.
Now, 1 would look like this:
1
3 would look like this:
12
7 would look like this:
12
4
Etc...
I have a small tilemapping demo of this on my calc right now that just lets you scroll around a map, but I have to finish making my mapmaking tools before I make a test map and upload it.
Nice job! that looks really cool! maybe in the future you can make them run so that their paths form the letters "thug aim" :DThat and collision with them.
jk :P
But really, great progress so far! once you have the walking algorithms down, now all you have to do is make them talk right?
I got the idea from the Golden Sun games.Ah ok. In Mystic Quest you could push blocks and jump from a platform to another. I liked that game, aside from being a bit too easy and not having enough equipments/magics/items. It had FREAKING EPIC music too. (Note: If you were born in Europe, the game was called Mystic Quest Legend there, and in Japan it's called "Final Fantasy USA: Mystic Quest")
I see, well I'm glad it's still alive and you're working on other projects too. :)That's true, but I don't think that will happen as The Storm is a BASIC competition, but when I pick this up again, I'll be sure to back up as often as possible.
Working on two projects at once can be very bad, too, because of those nasty mem clears+archive corruptions caused by running a buggy version of one project then running the other before resetting your RAM...
Bump!
I'm picking this back up once again!
Right now, I'm working on a dev kit thing like what squidgetx is doing for Ash: Phoenix.
888888 888888
888 888
D
888 888
8888888888888888
DAVE HP:999/999
OOOOOO OOOOOO
OOOVVV VVVOOO
VVV VVV
8
OOO OOO
OOOOOOOOOOOOOOOO
DAVE HP:999/999
XXXXXXXXXXXXXXXX
I I
I
I /---- /I
I ____/ /XI
I /XXI
I /XXXI
I- ------/XXXXI
XX /XXXXXXXXXXXX
Vertically is 2x faster because when walking vertically the tilemap grid is aligned on the LCD as multiples of 8 pixels. Aligned sprites/tiles displays much faster than unaligned ones.
(http://www.omnimaga.org/index.php?action=dlattach;topic=3412.0;attach=6922;image)I missed this screenie when it was posted, but it looks so great that I had to comment. ;D
It is but I don't know why you bring that up? ???Vertically is 2x faster because when walking vertically the tilemap grid is aligned on the LCD as multiples of 8 pixels. Aligned sprites/tiles displays much faster than unaligned ones.
Isn't Horizantally 96 a multiple of 8 too?
I believe what he's trying to say is something like, "Since they're both in multiples of 8, and the sprites are aligned,shouldn't they be the same speed?"It is but I don't know why you bring that up? ???Vertically is 2x faster because when walking vertically the tilemap grid is aligned on the LCD as multiples of 8 pixels. Aligned sprites/tiles displays much faster than unaligned ones.
Isn't Horizantally 96 a multiple of 8 too?
Well, I've got a fairly nice update, I think.lol, that is really fast. I did not know that you made a Pokemon tcg. Is it a WIP or is it done?
First, I've finished the dynamic border system. I was able to steal it from my Pokemon TCG source, and it works perfectly!
Lil bit of a speed test for ya:
(http://img.removedfromgame.com/imgs/Border Speed Test.gif)
I like how you kick the box. ;) It looks great! ;D
Cool :) however, I think it looks a bit cluttered compared to other 84+ RPGs, due to the large size of the HUDs and players. If you could trim down the size of some things that would be awesome.
Now that I look at it, the menu is pretty massive.
Trueblade - Ups critical chance and accuracy for a few turns.
Royal Defense - Halves damage to the party for a turn.
Come Holy Light! - Can't tell you yet. :P
Steal - Steals an item from the enemy.
Retinal Flash* - Roland performs an attack so speedy, he doesn't even appear to move, thus the enemy does not defend and the damage is doubled.
Celestial Blessing! - Can't tell you yet. :P
JerkyPork and Steak spoil after a few days (in game), turning them into Spoiled Meat, which harms you instead of healing you.
Pork
Steak
WaterIn snowy weather, if you stay out long enough, your Water and Spring Water will freeze, halving their effects. Liquid Ether is unaffected by the weather.
Spring Water
Liquid Ether
Holy ArcanaThe Holy Arcana revives a fallen ally. However, if you spend too much time in the rain, the Arcana becomes soaked, and will only restore your ally to 1 HP instead of 1/4 their total HP.
Tent
Pork and Steak spoil after a few days (in game), turning them into Spoiled Meat, which harms you instead of healing you.
However, to prevent this, you can have your Pork and Steak cured in a town to prevent them from spoiling. Jerky won't ever spoil, since it was prepared that way.
Actually, the water does animate, though it's kinda slow. I can try messing with the delay, see if it turns out better.Oh, I see it now! :D
Out of curiosity, how did you handle the rain effect? Like code wise? Is it implemented in a very general way or was a lot of custom code have to be written?It's actually just a loop than runs through a set of sprites that consist of the rain animation, drawing the current rain frame across the whole screen. I used to have a custom code that required less sprite data, but I settled on this method because I made it easier to do the snow as well, as well as allowing me to share virtually the same code for the two weather effects.
how'd you go about it? Or+Xoring rounded edge sprites over the water and Oring rounded water sprites over the ground?That's pretty much how I went about it, since I didn't feel like rewriting the tilemapper.
and what did you end up doing to the rain?I used a randomly generated 96-byte array, each byte a different offset for each 8x8 tile across the screen. Each byte loops through the animation individually, creating the more randomized effect.
Ok. Do you use grayscale at all in the whole game, just out of curiosity?The title screen is going too. What's in the video now is just a placeholder.
Are the sprites for the Shadowed dimension final? It's kind of hard to tell what's what, esp while moving :\The cobble floor and carpet are just some sprites I threw together for testing, they'll probably change, and the banners are definitely place holders. Silly looking banners with an 'F' on them don't really fit in an evil overlord's castle.
Lol!Are the sprites for the Shadowed dimension final? It's kind of hard to tell what's what, esp while moving :\The cobble floor and carpet are just some sprites I threw together for testing, they'll probably change, and the banners are definitely place holders. Silly looking banners with an 'F' on them don't really fit in an evil overlord's castle.
Looks pretty cool except the big diarrhea at the left :P (J/K, it's epic)Yes. The Nostalgia dimension is ASCII. Back a page is a screenie showing off the mapper.
I actually missed this a bit, but you are also adding a ASCII area, right?
I happened to come across <a href=http://en.wikipedia.org/wiki/Nostalgia_%28video_game%29>this</a> game at my local Gamestop store. I haven't played it nor have I heard of it before. I did find it rather interesting though, to say the least. :)I did know about that game. It's a very good DS game, and quite the interesting coincidence.
Very nice! I'm willing to be a beta tester, if you're looking.Thanks for the offer, but the beta may still be a ways off. I need to implement a better linked list sort for determining turn order, on top of other things.
Looks very great, but it seems like it's a bit hard to tell what is currently selected, due to the diagonal cursor. I sense that people might often select Star II instead of Star III by mistake, sometimes, for example.I updated the menu routine today so that in addition to being pointed to by the cursor, the current option also has a black rectangle XOR'd over it, not unlike the original cursor in earlier incarnations of this project, in hopes of making it clearer for those playing.
GLad this is still updated :)