CodeWalrus

Development => Calculators => Calc Projects, Programming & Tutorials => Topic started by: Snektron on April 14, 2015, 05:19:41 PM

Title: [TI 84+/83+] DovahCalc
Post by: Snektron on April 14, 2015, 05:19:41 PM
This morning i got the idea to make a font hook that replaces letters with their Dovahzul equivalent:
(http://img.codewalr.us/Dovahcalc.png)
(http://img.codewalr.us/dovahmenu.png)

It has a few changes, though:
- Since the dragon language has no c, the sprite is the same as 'k' with a minor change
- Things like 'Ah', which normally is 1 letter in the dragon language, is now just 'a' and 'h'

Also this was more of a quick experiment, so i made only a quick menu, without fancy moving parts.
(if you press one of the keys for the menu, it will enable/disable, just no action is shown)

EDIT: i wanted to have an alphabet here, but it doesnt seem to show pictures from ClrHome
Title: Re: DovahCalc
Post by: CKH4 on April 14, 2015, 06:33:20 PM
Very cool but I suggest that you add a quick escape feature in case anyone gets lost.
Title: Re: DovahCalc
Post by: Dream of Omnimaga on April 14, 2015, 08:00:13 PM
Interesting. I never heard of that Dovahzul thing before. Do you think it could be made as a separate font so that people with Omnicalc and other apps supporting fonts can use it without the program?

Also since this looks like a standalone hook program, I wonder how hard it would be to port it to the CSE so that people can have custom fonts (hint: New FF:MF graphics? :P) and if it would be possible to make the hook chain with DCSE?
Title: Re: [TI 84+/83+] DovahCalc
Post by: Snektron on April 14, 2015, 08:26:24 PM
Quote from: CKH4 on April 14, 2015, 06:33:20 PM
Very cool but I suggest that you add a quick escape feature in case anyone gets lost.
Well it's kind of a joke things, so yeah :P (and that's why i made the menu a picture; so you can still read the options even when the hook is active (and i was lazy))

Quote from: DJ Omnimaga on April 14, 2015, 08:00:13 PM
Interesting. I never heard of that Dovahzul thing before. Do you think it could be made as a separate font so that people with Omnicalc and other apps supporting fonts can use it without the program?
Probably, but i don't use Omnicalc myself and it'd require me to learn how to add fonts to omnicalc. Though i'd be happy to give someone the letter sprite data file (it's in the source (in the download) anyway).

Quote from: DJ Omnimaga on April 14, 2015, 08:00:13 PM
Also since this looks like a standalone hook program, I wonder how hard it would be to port it to the CSE so that people can have custom fonts (hint: New FF:MF graphics? :P) and if it would be possible to make the hook chain with DCSE?
That may be quite a good idea and the hook code would be the same on the CSE, i only need to make some minor changes to the lookup and ofcourse the sprites itself. Maybe even add some kind of parser hook to allow sprites to be registered via basic? that would be quite awesome O.O
Title: Re: DovahCalc
Post by: CKH4 on April 14, 2015, 08:37:09 PM
I'm so proud of myself because I found a bug, pressing ² ^-1 makes a giant gap.
Title: Re: [TI 84+/83+] DovahCalc
Post by: Snektron on April 14, 2015, 08:46:37 PM
Yeah there are some more tokens. when you use the '^' with mathprint allmost everything explodes. Not quite sure why this happens.
Anyway thanks for notifying, i will look at it tomorrow :)
Title: Re: DovahCalc
Post by: Dream of Omnimaga on April 14, 2015, 10:15:42 PM
Quote from: Cumred_Snektron on April 14, 2015, 08:26:24 PM
Quote from: CKH4 on April 14, 2015, 06:33:20 PM
Very cool but I suggest that you add a quick escape feature in case anyone gets lost.
Well it's kind of a joke things, so yeah :P (and that's why i made the menu a picture; so you can still read the options even when the hook is active (and i was lazy))

Quote from: DJ Omnimaga on April 14, 2015, 08:00:13 PM
Interesting. I never heard of that Dovahzul thing before. Do you think it could be made as a separate font so that people with Omnicalc and other apps supporting fonts can use it without the program?
Probably, but i don't use Omnicalc myself and it'd require me to learn how to add fonts to omnicalc. Though i'd be happy to give someone the letter sprite data file (it's in the source (in the download) anyway).

Quote from: DJ Omnimaga on April 14, 2015, 08:00:13 PM
Also since this looks like a standalone hook program, I wonder how hard it would be to port it to the CSE so that people can have custom fonts (hint: New FF:MF graphics? :P) and if it would be possible to make the hook chain with DCSE?
That may be quite a good idea and the hook code would be the same on the CSE, i only need to make some minor changes to the lookup and ofcourse the sprites itself. Maybe even add some kind of parser hook to allow sprites to be registered via basic? that would be quite awesome O.O
Ideally hook usage should be kept to a minimum, because almost everybody who play games have Doors CSE installed. Even with just a custom font I am worried that the font hook would overwrite Doors CSE hooks and either cause xLIBC/Celtic 2CSE and Homerun stuff to stop working or even freeze the calc. Basically, you would need to ensure there are no hook conflicts. Another issue is speed: Sometimes, parser hooks slows the calc down, so you would need to make sure that a custom font doesn't slow the calc down too much.
Title: Re: [TI 84+/83+] DovahCalc
Post by: Snektron on April 15, 2015, 10:09:13 AM
Yeah, but hooks are stored seperately and if you do some proper chaining (which isn't realyl hard, i just haven't implemented it yet) eveything should still work. Though people need to make sure not to get the hooks in some kind of loop, where hook A activates hook B and hook B activates hook A.
It would still be a cool parser hook though :)
Title: Re: DovahCalc
Post by: Duke "Tape" Eiyeron on April 15, 2015, 10:56:52 AM
Quote from: Cumred_Snektron on April 14, 2015, 05:19:41 PM
This morning i got the idea to make a font hook that replaces letters with their Dovahzul equivalent:
(http://img.codewalr.us/Dovahcalc.png)
(http://img.codewalr.us/dovahmenu.png)

It has a few changes, though:
- Since the dragon language has no c, the sprite is the same as 'k' with a minor change
- Things like 'Ah', which normally is 1 letter in the dragon language, is now just 'a' and 'h'

Also this was more of a quick experiment, so i made only a quick menu, without fancy moving parts.
(if you press one of the keys for the menu, it will enable/disable, just no action is shown)

EDIT: i wanted to have an alphabet here, but it doesnt seem to show pictures from ClrHome

Nice prank idea, I should find a way to do that silently and quickly on pal's calcs
Title: Re: DovahCalc
Post by: brentmaas on April 15, 2015, 02:44:12 PM
Quote from: Duke "Tape" Eiyeron on April 15, 2015, 10:56:52 AM
Nice prank idea, I should find a way to do that silently and quickly on pal's calcs
1. Take one identical-looking calc.
2. Switch pal's calc with the previously-mentioned calc, preferably without mr./ms./mrs. pal noticing.
3. Upload DovahClc to pal's calc and activate.
4. Repeat step 2 in reverse.
5. Preheat oven to 250° C.
6. Put victory cake in oven until it's about to catch fire.
7. Laugh whilst eating cake.

NOTE: forget about the cake in case of no nearby oven.
Title: Re: [TI 84+/83+] DovahCalc
Post by: Snektron on April 15, 2015, 03:43:39 PM
Don't forget to put in exam mode too while you're at it :P
Title: Re: [TI 84+/83+] DovahCalc
Post by: Snektron on April 15, 2015, 10:47:04 PM
So i've found the error of some characters not displaying correctly, i didn't handle some mode's in the hook as i should have. After i fixed that
I tried to implement hook chaining. After a few hours struggeling i think i finally got it, at least that's what happens in the debug. I test with Omnicalc to see
if chaining works. If i run the code step for step from the point of where i jump from my code, via some code copied to SaveSScreen, to Omnicalc's hook, i can see
that it indeed does jump to omnicalc's code. But it doesnt display any of their characters. (i installed some random font i found on omnicalc). Anyone got ideas of what i'm doing wrong here? (if you want to see some code just say so)
Title: Re: DovahCalc
Post by: Dream of Omnimaga on April 16, 2015, 03:31:43 AM
Actually which OS are you testing this on? Because the official version of Omnicalc doesn't run on MathPrint OSes. Same for xLIB. You should test with ZStart and DCS7 instead if you use 2.53/2.55MP. Or install OS 2.43.
Title: Re: DovahCalc
Post by: Duke "Tape" Eiyeron on April 16, 2015, 07:29:45 AM
Quote from: brentmaas on April 15, 2015, 02:44:12 PM
Quote from: Duke "Tape" Eiyeron on April 15, 2015, 10:56:52 AM
Nice prank idea, I should find a way to do that silently and quickly on pal's calcs
1. Take one identical-looking calc.
2. Switch pal's calc with the previously-mentioned calc, preferably without mr./ms./mrs. pal noticing.
3. Upload DovahClc to pal's calc and activate.
4. Repeat step 2 in reverse.
5. Preheat oven to 250° C.
6. Put victory cake in oven until it's about to catch fire.
7. Laugh whilst eating cake.

NOTE: forget about the cake in case of no nearby oven.

>ib4 the cake is a lie.

Yeah, that won't happen as I'm probably the only one who kept his calc now. (CS school)
Title: Re: DovahCalc
Post by: Snektron on April 16, 2015, 08:26:50 AM
Quote from: DJ Omnimaga on April 16, 2015, 03:31:43 AM
Actually which OS are you testing this on? Because the official version of Omnicalc doesn't run on MathPrint OSes. Same for xLIB. You should test with ZStart and DCS7 instead if you use 2.53/2.55MP. Or install OS 2.43.
Yeah i tested it with 2.55MP, though i can run Omnicalc and it's hook does work. But do ZStart and DCS7 have a font hook? else i might just copy my app and compile it under a different name (and change some sprites) to test it.
Title: Re: DovahCalc
Post by: Dream of Omnimaga on April 17, 2015, 11:27:22 AM
Oh do you use the special version of Omnicalc? If not then it's possible that ZStart fixed the issues that MP Oses had with Omnicalc/xLIB. And IIRC ZStart got a font hook but I don't know if it's supported by default. DCS7 lacks one.
Title: Re: [TI 84+/83+] DovahCalc
Post by: Snektron on April 17, 2015, 02:22:27 PM
I just got the most recent version of omnicalc. And i don't have ZStart or anything installed, just DovahCalc, omnicalc and some font. Also whats up with Cataloghelp?
if i run its hook with dovahcalc enabled it just clears the hook.
Title: Re: DovahCalc
Post by: Dream of Omnimaga on April 17, 2015, 04:19:52 PM
You might need to ask in a help topic. It seems strange... O.O
Title: Re: [TI 84+/83+] DovahCalc
Post by: Snektron on April 17, 2015, 05:48:54 PM
Update:
- fixed the small letters bug
- added hook chaining (now usable with omnicalc and such). Turns out the error i had earlier was i jumped 1 instruction before he hook to chain to (and some oter stuff).
   It works now, and i wrote a small chain utility included in the zip (source/DovahClc/HookChain.z80) so chaining will be easier for me in the future. It stores the 4 bytes of
   the previous hook in a defined location in ram, for faster lookup. It also stores an extra check byte to check if the data is still intact. (This utility can be used by anyone, if
   they want to).

Title: Re: DovahCalc
Post by: Dream of Omnimaga on April 18, 2015, 07:42:56 AM
Awesome to see a release. Do I need to install this and other apps in a specific order? I'll give this a try later. :)
Title: Re: [TI 84+/83+] DovahCalc
Post by: Snektron on April 18, 2015, 08:58:40 AM
Well, yeah since it chains, you need to install it later than any other fonthooks. For example if you use omnicalc, enable omnicalc's hooks first and then enable DovahCalc.
If you use apps without font hooks it doesn't really matter, since theyre not affected by eachother anyways :)
Title: Re: DovahCalc
Post by: Dream of Omnimaga on April 18, 2015, 06:14:33 PM
Ah ok, I guess it depends if your hook overwrites parts of DCS7 hooks then, since DCS7 uses over 9000 of them for Omnicalc+xLIB+Celtic+Homerun (unless I am missing something?)
Title: Re: DovahCalc
Post by: CKH4 on April 18, 2015, 06:48:39 PM
Quote from: DJ Omnimaga on April 18, 2015, 06:14:33 PM
over 9000
Lol.

Anyway good luck on getting the rest of it to work. Maybe you'll port it to be a zstart font which would save people with zstart 10000 ram.
Title: Re: DovahCalc
Post by: Snektron on April 18, 2015, 07:19:02 PM

Quote from: DJ Omnimaga on April 18, 2015, 06:14:33 PM
Ah ok, I guess it depends if your hook overwrites parts of DCS7 hooks then, since DCS7 uses over 9000 of them for Omnicalc+xLIB+Celtic+Homerun (unless I am missing something?)
Well it chains, not breaks. All hooks should still work :)
Title: Re: DovahCalc
Post by: 123outerme on April 18, 2015, 07:50:34 PM
Quote from: DJ Omnimaga on April 14, 2015, 08:00:13 PM
Interesting. I never heard of that Dovahzul thing before. Do you think it could be made as a separate font so that people with Omnicalc and other apps supporting fonts can use it without the program?

Also since this looks like a standalone hook program, I wonder how hard it would be to port it to the CSE so that people can have custom fonts (hint: New FF:MF graphics? :P) and if it would be possible to make the hook chain with DCSE?
This could be used to create custom sprites (replace a letter that you probably won't use like theta with a custom sprite for your character)
Title: Re: [TI 84+/83+] DovahCalc
Post by: Snektron on April 18, 2015, 08:45:13 PM
I'm actually developing a version for  the CSE. Maybe i'll do the letter replace thing later though, cause that'll defenitely be cool. Since i have t his chain hook utillity it'll also be possible to chain with DCSE, xLIB and celtic hooks. Though i made a small Java app to create the letter data, since the data layout is really weird and not at all doable by hand :/. Also i'd have to find a big enough place of ram that won't get violated (one of the ram pages?) since an appvar would be too slow :(
Title: Re: DovahCalc
Post by: Dream of Omnimaga on April 19, 2015, 06:19:16 PM
Quote from: 123outerme on April 18, 2015, 07:50:34 PM
Quote from: DJ Omnimaga on April 14, 2015, 08:00:13 PM
Interesting. I never heard of that Dovahzul thing before. Do you think it could be made as a separate font so that people with Omnicalc and other apps supporting fonts can use it without the program?

Also since this looks like a standalone hook program, I wonder how hard it would be to port it to the CSE so that people can have custom fonts (hint: New FF:MF graphics? :P) and if it would be possible to make the hook chain with DCSE?
This could be used to create custom sprites (replace a letter that you probably won't use like theta with a custom sprite for your character)
yeah that's what I had in mind, since it was done before on the 84+. Being able to use the font from archive and install it on game launch would be best, though.
Title: Re: [TI 84+/83+] DovahCalc
Post by: Snektron on April 19, 2015, 09:35:12 PM
I'd be cool, though xLIB (i think it's xLIB)  seems to not draw sprites via the tokenhook :/
Title: Re: DovahCalc
Post by: Dream of Omnimaga on April 19, 2015, 10:36:27 PM
Aw sorry to hear. I remember that DCSE had issues before that caused sprites to mess up the Output command. I wonder if that could be related?

One thing you could do is ask on Cemetech where you could place your font hook to ensure full functionality of Doors CSE, since, after all, Kerm is the one who made DCS. @tr1p1ea might be able to help, though, since he wrote xLIB, which is included in DCSE.