Nearly finished with the upgrade that I mentioned on IRC. More info on the Omni, but attached is a screenshot of my messing around with the effects layer.

Also, please forgive the flicker and the bars. I haven't quite figured out the whole 15MHz grayscale thing myself, but it seems to work well enough.

The effects, in their respective order are (and copied right from source):
;EFFECT none
;EFFECT one lighter
;EFFECT two lighter
;EFFECT all lighter
;EFFECT one darker
;EFFECT two darker
;EFFECT all darker
;EFFECT invert all
;EFFECT invert gray
;EFFECT diverge
;EFFECT monocrhome
;EFFECT unkown

Also, just so you know, the effects layer won't work right if the tilemapper is running. The best effect I can achieve is monochrome, and it tends to show a little gray on the cycle that isn't rendering the effect. Still looks a little cool. Should make a screenshot of that one eventually.
That looks really great, Iambian! I know how much work you've been putting into this over last few days, and I'm sure you'll figure out what's going on with the marching bars.
If I'm not mistaken, won't some of these effects be used to simulate lightning, cutscene fades and other events in the game?
Zera wrote:
If I'm not mistaken, won't some of these effects be used to simulate lightning, cutscene fades and other events in the game?
I sure hope so, because it looks perfectly suited to something like that!
Well. I finished upgrading the grayscale routines and added a grayscale config menu that can be accessed from the title screen or the pause menu using the DEL key. The grayscale also appears cleaner in the emulator and the screenshot shows it.

Also, the value for the LCD delay isn't right (hacked save file), but it doesn't affect the emulator anyway. On the real calc, this will be initialized to $27 and can be toggled in increments of 8. Having a value of $00 seems to break the display on the real calc (TI-84 Plus SE) but you can still toggle it back to a good value even though you can't see what's going on.

That looks amazing! Tell me about that 12-square grayscale test in the settings screen, and how it is and is not supposed to look.
KermMartian wrote:
That looks amazing! Tell me about that 12-square grayscale test in the settings screen, and how it is and is not supposed to look.

It actually didn't matter that much in the screenshot because Wabbitemu was configured to render "game gray." I should probably post a screenshot with more realistic settings.

The tile that was chosen for the test tilemap was picked because it had a fair amount of all four colors. Some tiles have only three colors, some only two. Others that had all four colors didn't have them distributed as evenly as the one I chose. And if you really wanted to know, this tile *does* appear in the game.

On the real calculator, choosing a higher interrupt frequency number will slow the scroll of the tilemap while giving the gray a better appearance. Having a lower number makes the thing run faster, but makes the grayscale a fair bit less than perfect. Barely acceptable if you ask me. A good value that I found for my calculator is a frequency of 4. So that will be the default value. Grayscale looks decent and the speed wouldn't take that much of a hit.

With the screen delay value, it really didn't matter how I changed it. There was some slight effects but it felt more like I was tweaking the thing by just a little instead of making a huge impact on what it was showing.

So to shorten everything up, the tiles represent all the colors while the grayscale tilemapper is running. And the grayscale is not supposed to look like crap. Understanding that the tilemapper is actually part of one of the LCD writes, this test is necessary to ...uh ... test for consistency.
Slightly off-topic, but I thought I would mention that there is a sequel to the game currently in planning. It will largely recycle the same codebase, with some revisions and additions. It's also a direct continuation of events after Escheron. (which I won't divulge too many details about just yet, as there are many spoilers)

"Rephaim" centers around Edmund as a protagonist this time. The engine is much more robust, giving each character their own collection of personal skills, as well as access to summoned monsters that grant characters a selection of spells. I did away with the character progression system in Escheron, favoring traditional experience levels instead. Character growth is extremely linear, giving each character a specific function in battle. There are seven characters you can recruit, and each of them can be freely swapped in and out of your battle party.

The world is quite massive, and everything is 1:1 scale. There aren't any icons representing towns or dungeons, for instance - they're all directly integrated into a giant world map. (the maps are technically in different segments, but the transition from one to another is seamless) Suffice it to say, it's going to be a substantially longer play experience.

I can't even express in words how truly amazing those screenshots look. Shock These look so... epic.... (trails off into wonderment). I'm enjoying how you have 65535Kr money and 65535 experience. :lol I notice you seem to have designed your font as a 3x5 fixed-width font, with the l and i in the middle of their 3x5 spaces, yet I notice an "li" and "ll" compound character. Am I correct in thinking you added special "ll" and "li" characters?
KermMartian wrote:
[...]
I notice you seem to have designed your font as a 3x5 fixed-width font, with the l and i in the middle of their 3x5 spaces, yet I notice an "li" and "ll" compound character. Am I correct in thinking you added special "ll" and "li" characters?

I can answer this question, and it is a "yes". He wanted me to add in those characters for E:SoR. I initially told him no because I wasn't confident that I'd have space left on the fontmap, but seeing that I have enough to put them in, I may reconsider.

Oh. And in "Rephaim", he's not kidding about the world map. Its dimensions is 65535x65535, with "puny" 127x127 "islands" in the middle of the randomly generated sea of nothingness. Good luck navigating Smile
This seriously looks amazing. It really seems like this game is going to push some of the technical limitations of the calc, and really show what it's capable of.
KermMartian wrote:
I notice an "li" and "ll" compound character. Am I correct in thinking you added special "ll" and "li" characters?


There are il, ll and li compounded tiles. It saves space in a few areas, and allows for slightly longer names. I wanted to try to make the font look more variable-width, but that's about all I can do without actually having a variable-width font.

For reference, Kr stands for kero. It's just the game's made-up currency.
Zera wrote:
KermMartian wrote:
I notice an "li" and "ll" compound character. Am I correct in thinking you added special "ll" and "li" characters?


There are il, ll and li compounded tiles. It saves space in a few areas, and allows for slightly longer names. I wanted to try to make the font look more variable-width, but that's about all I can do without actually having a variable-width font.

For reference, Kr stands for kero. It's just the game's made-up currency.
I figured that's what it was. And thanks for confirming the compound tiles; I think that's actually an impressive way to handle that. Hopefully you didn't get caught up in too many confusing string-width routines by adding that?
It's not too difficult to be consistent with string width, just bearing in mind that anything involving L and I can have a bit of additional space. It might be confusing if I had a lot of compounded tiles, though.

I would have compounded T's and I's as well, but it would look just slightly crammed. I can't think of any other characters that might be suitable for compounding.
Zera wrote:
It's not too difficult to be consistent with string width, just bearing in mind that anything involving L and I can have a bit of additional space. It might be confusing if I had a lot of compounded tiles, though.

I would have compounded T's and I's as well, but it would look just slightly crammed. I can't think of any other characters that might be suitable for compounding.
I guess you'd have to have the horizontal ligature for the t on the pixel above and to the left of the top of the non-dotted i, right? But yeah, you don't want to make your text too complex for the sake of a few extra pixels of string width. Smile I'm very impressed with the artwork, at any rate.
I'm impressed with the artwork, too. Too bad it's not original. I just use modified sprite-rips from console games. Razz

Most of the fonts, and some of the miscellaneous graphics, are the only original bits.
Zera wrote:
I'm impressed with the artwork, too. Too bad it's not original. I just use modified sprite-rips from console games. Razz

Most of the fonts, and some of the miscellaneous graphics, are the only original bits.
Yeah, but even the sprite rips take a fair bit of effort to modify to look nice in 4-level grayscale on a 96x64-pixel LCD. Smile
Information regarding details about the battle engine in E:SoR. I put this in a code box to preserve the fixed-width spacing. Best viewed with a column width of (at least) 86. Tell me what you think.

Code:
E:SoR Battle Engine Details: Sorta Pseudocode
Fight Command

(some) variables assumed at start of routine:
%ATKFlag = Status flag indicating increased attack. Result of EMPOWERMENT
%DEFFlag = Status flag indicating increased defense. Result of EARTHEN WALL
%EVAFlag = Status flag indicating increased evade. Result of SHADOW CONJURY

%MULTIHIT = Indexs a value on the table. Increment after every thing

01. Set modifier flags, status inflict flags, all temp variables to zero.
02. If user is in QUICKENED state, Goto ---User Quickened---
03. Calculate rate for critical hit.
    If rand(1,32-((4*EMPOWEREDSTRIKE)+(8*CRITICAL-UP)))
04.      %ISCRITICAL = 1
05. Check attack multiplier of character by pooling proficiencies and
    occurances of {SWIFT ATTACK} in equipment. Must not exceed 3. Monster
    skills can change this if it is being passed through the fight portion.
06. Set %LOOPCOUNT to the multiplier found.
06. ---Loop Start---
07. Collect user hit rate from equipment. Stash to %HITRATE
08. If user is blinded...
09.      If have [BLIND FIGHTING], %HITRATE = %HITRATE / 4
10.      Else                      %HITRATE = %HITRATE / 2
11. Modify %HITRATE with multihit penalty.
    %HITRATE = %HITRATE * MHITEVATAB[%MULTIHIT]
12. Collect opponent evade from equipment. Statsh to %EVADE
13. Add modified collected AGL to evade. %EVADE = %EVADE + (AGL / 8)
14. If opponent is blinded, reduce evade. %EVADE = %EVADE * 0.33
15. Credit evade plus. %HITRATE = %HITRATE + %EVAFlag(rand(2-8))
16. Combine the values in a simple manner. %ISHIT = %HITRATE - %EVADE
17. If %ISHIT < 10, then %ISHIT = 10
18. If %ISHIT > 90, then %ISHIT = 90
19. If rand(0,100) < %ISHIT
20.      Goto ---Loop Skip---. Do not credit damage. Do not pass GO. :P
21. Collect damage values from equipment. Set to %DAMAGE
    This value is automatically readjusted if user is dual-wielding.
22. Increase %DAMAGE with racial attack bonus (flag in wpn vs enemytype?)
23. Factor in magical boost. %DAMAGE = %DAMAGE + ( rand(12,24) * %ATKFlag )
    %DAMAGE = %DAMAGE + some known value based on race
23. %DAMAGE = %DAMAGE * (100 - oppDmgRedux)
24. If %DAMAGE < 1, %DAMAGE = 1
25. If TARGET is using PARRY and it is SUCCESSFUL
26.      %DAMAGE = %DAMAGE * %PARRYTABLEDAMAGEREDUCTION[EQUIPINDEX]
27. Adjust damage for multihit penatly.
    %DAMAGE = %DAMAGE * MHITDMGTAB[%MULTIHIT]
28. If not(%ISCRITICAL)
29.      If enemy is immune to equipped weapon, %DAMAGE = 1
30.      If (prof req > your prof) and is equipped w/wpns, %DAMAGE = %DAMAGE * 0.20
31. If your attack has an elemental property
32.      If enemy is weak to it, %DAMAGE = %DAMAGE + ( %DAMAGE * 0.40 )
33.      If enemy is strong to it and user does not have skl [ELEMENTAL MIGHT]
34.           %DAMAGE = %DAMAGE * 0.20
35. Collect defense values from opponent. %DEFENSE = EnemyABSORB
36. Factor in magical boost. %DEFENSE = %DEFENSE + ( rand(8,12) * %DEFFlag )
37. If %ISCRITICAL, %DEFENSE = %DEFENSE - 24
38. If %DEFENSE < 0, %DEFENSE = 0
39. If user has the skill CLEAVING ATTACK and rand(1,12)=1
40.      %DEFENSE = 0
41. Calculate damage dealt. This is simple. %DAMAGE = %DAMAGE - %DEFENSE
42. If %DAMAGE < 1, %DAMAGE = 1
43. Add this into the big pool of... %TOTALDAMAGE = %TOTALDAMAGE + %DAMAGE
44. %STATUSTRY = (UserStatusAttack xor OppStatusDefense) and UserStatusAttack
    Operators above are bitwise operators. Didn't use symbols coz I dunno xor
45. Run tests on each flag to determine what'll stick. Affect %STATUSTRY for
    what status effects affects the final status.
46. %STATUSINFLICT = %STATUSTRY | %STATUSINFLICT
47. Increment %MULTIHIT, decrement %LOOPCOUNT
48. Goto ---Loop Start--- while %LOOPCOUNT is greater than zero.
49.---Loop Skip---
50. If %TOTALDAMAGE = 0 and %STATUSINFLICT = 0, RETURN
    Nothing happened this round. Why not exit early?
51. Adjust target HP with damage inflicted against it.
    If it would drop below zero, set to zero.
52. Bitwise OR statusinflict flags with target status flags
53. If target is equipped with armor ETERNAL SOUL, reset CURSE flag.
54. If target CURSE flag is set, set HP to zero.
55. If target HP = 0
56.      If target DIVINE FAVOUR activates, set HP to 1
57.      If target posesses ANGEL TEAR, use item and set HP to 1
58. If target HP is still zero, display "<target> was felled." string
59. End turn.
60.---User Quickened---
61. Collect damage values from equipment
62. Save this value to %TOTALDAMAGE
63. If user posesses [VERGE OF DARKNESS], set BLIND flag in %STATUSINFLICT
64. Goto ---Loop Skip---
65. So much was skipped in a quickening that this is really necessary. Yeah :)
Wow, that seems very thorough to me, and in a careful read-through, I can't really find any particular holes or flaws in it. What about the rest of you?
The project might be on somewhat of a hiatus, as Iambian's laptop is suffering from technical difficulties. (which is more or less his coding environment)
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
» Goto page Previous  1, 2, 3, 4, 5, 6  Next
» View previous topic :: View next topic  
Page 2 of 6
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement