Join us on Discord!
You can help CodeWalrus stay online by donating here.

The future of 84+CE app dev and opinions on hacking

Started by Dream of Omnimaga, May 26, 2016, 07:32:10 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Dream of Omnimaga

So there is an important topic on Cemetech because DrDnar wants to open the CE to third party flash app dev by force, Ndless style, and wants the opinions of mature and long time community members to see if he should bother and how it should be done.  He didn't post elsewhere because most long-time members are already active on Cemetech but since some of you have been around long enough but rarely go there I thought I would inform you in case you want to share your views to him in the topic or PM. Even if you don't post then you can still read and maybe vote to the poll there:

https://www.cemetech.net/forum/viewtopic.php?t=12813

I posted this in the staff board since he only posts on Cemetech about that issue but if you feel this needs to be public then feel free to move the topic.
  • Calculators owned: TI-82 Advanced Edition Python TI-84+ TI-84+CSE TI-84+CE TI-84+CEP TI-86 TI-89T cfx-9940GT fx-7400G+ fx 1.0+ fx-9750G+ fx-9860G fx-CG10 HP 49g+ HP 39g+ HP 39gs (bricked) HP 39gII HP Prime G1 HP Prime G2 Sharp EL-9600C
  • Consoles, mobile devices and vintage computers owned: Huawei P30 Lite, Moto G 5G, Nintendo 64 (broken), Playstation, Wii U

Yuki

I'd make this public. In Canada, jailbreaking a device to run alternative software is a form of circumventing digital locks for the purpose of software interoperability (which is what we're doing here) is perfectly legal. In the United States, I do believe it's also legal. Look at Apple, we're pretty much in the same situation, and Ndless too, if there's a Ndless we can definitely do something similar on the CE. So the worst that can happen is TI putting even more locks to prevent this (which would probably be unlocked eventually, but still we want to avoid playing cat and mouse with TI) and/or your warranty being voided.

EDIT: Wait, nevermind. In the US, at least. But we could definitely propose an amendment to the DMCA act.
  • Calculators owned: TI-83+ (dead?), Casio Prizm (also dead???)
  • Consoles, mobile devices and vintage computers owned: A lot
Read Zarmina!
YUKI-CHAAAANNNN
In the beginning there was walrii. In the end there will be walrii. All hail our supreme leader :walrii: --Snektron

if you wanna throw money at me and/or CodeWalrus monthly it's here

Dream of Omnimaga

If you check the Cemetech topic, the legality of jailbreaking is not the main issue being discussed, though. The issue right now is what would be the consequences of opening the TI-83PCE and TI-84+CE to third-party Flash APPS by force (eg by releasing an OS patch allowing unsigned APPS to be installed). Some people feel that being able to do what we want with our CE is our right, but others fear that if we circumvent TI protections then they will retaliate by blocking ASM and C entirely. I think DrDnar first wants to persuade TI to release the APP signing key, though, and only take action if he gets no reply.


In summary, do we risk getting TI to retaliate by releasing a TI-84 Advanced CE, resulting into a cat and mouse game like with the Nspire? Or do we do what we want and hope that community members will use common sense (by not messing around with the exam mode, for example)?

So yeah if you don't post in the Cemetech thread I would at least recommend voting in their poll, though.
  • Calculators owned: TI-82 Advanced Edition Python TI-84+ TI-84+CSE TI-84+CE TI-84+CEP TI-86 TI-89T cfx-9940GT fx-7400G+ fx 1.0+ fx-9750G+ fx-9860G fx-CG10 HP 49g+ HP 39g+ HP 39gs (bricked) HP 39gII HP Prime G1 HP Prime G2 Sharp EL-9600C
  • Consoles, mobile devices and vintage computers owned: Huawei P30 Lite, Moto G 5G, Nintendo 64 (broken), Playstation, Wii U

ben_g

Are the apps protected in the same way than on the 84+? If so, then it may be possible to bruteforce the keys in some way, since iirc this was already done once with the 84+ series. Then at least the apps would work on every device.

The calculator programming community is already quite small. I don't think requiring people to jailbreak their device to run popular software would be good for the community.

Dream of Omnimaga

From what I recall, the reason why apps required a signing key on the TI-83 Plus back in the days was because the TI-83+ SDK costed money and it was possible to sell Flash apps on TI website or elsewhere. Eventually, the SDK became free (I think around 2003 or 2004) so app development in the TI community became mainstream, but it was still possible to sell apps for money. This is also why TI instated an hardware restriction limiting 8xp ASM programs to 8 KB of executable code, to prevent people from recompiling paid apps into 8xp programs then offering them for free illegally.

IIRC on the CE the excuse for blocking community APPS and requiring a key that TI doesn't want to give was to prevent making programs that can tamper with the TI-83PCE and 84+CE-T exam LED, the PTT mode and TestGuard. Except that all of this can be done as much via 8xp programs, so I don't see their point.
  • Calculators owned: TI-82 Advanced Edition Python TI-84+ TI-84+CSE TI-84+CE TI-84+CEP TI-86 TI-89T cfx-9940GT fx-7400G+ fx 1.0+ fx-9750G+ fx-9860G fx-CG10 HP 49g+ HP 39g+ HP 39gs (bricked) HP 39gII HP Prime G1 HP Prime G2 Sharp EL-9600C
  • Consoles, mobile devices and vintage computers owned: Huawei P30 Lite, Moto G 5G, Nintendo 64 (broken), Playstation, Wii U

MateoConLechuga

#5
This is simply just a another faze where everyone wishes that they just had more. I believe the technical limitations of this haven't been made clear enough, so let me just post it here.

Cons:

1) Apps are inherently slower by at least 100%. This means that an a program runs about twice as fast as an application. This can be mitigated by copying code to ram, but what is the point if most shells already support this?
2) Apps include a 256 byte header, along with another fixed length header containing offsets to particular regions in the application, in addition to a gigantic relocation table. What a waste of space when you can store simple programs in the archive and run them.
3) The size of the data section for apps can be at most 4kb. With programs, this value only depends on the size of the program.
4) Apps have no advantage over user programs in terms of hooks; except in the extremely rare case where a garbage collect *may* change a single byte to a 0x83, which again is very, very, very unlikely.
5) Perhaps the most important one is that a jailbreak such as this would have to be based on every single OS version. Not only is this a pain to set up and manage, it simply isn't realistic. Asking TI to remove the validation for unsigned apps simply isn't going to happen, and it still requires users to use their respective OS jailbreak, unless you also have users update their OS.

Pros:

1) Apps are protected against RAM clears a little better, but shells also have features to keep programs in the archive so they aren't deleted
2) Apps can be run from the archive, which means you need very little free memory to run one
3) Apps can be limitless in size (< 2Mb), not bound by the 64Kb for user programs (For those who aren't aware, 8Kb was the allowed limit on older models)
4) Apps can use things such as OpenLib( and ExecLib( to expand functionality, although this is inherently slow

However, perhaps the largest factor that should be taken into account is that we don't know the consequences this. I personally feel that making apps is not worth it at all, simply because it would require a rewrite of the C toolchain setup, force us to use hacky things for popular software, and take way to much time to do correctly. Good luck to those who try though :)

Dream of Omnimaga

1) I didn't know that apps were slower. Do you mean the entire execution (eg a walking engine loop) is slower or just the loading in general such as when data needs to be accessed?
4) From what I remember, hooks installed by programs were not as stable, right? But from what I could see so far, I haven't heard of that issue in ages and I think some 83+ programs used hooks even if they were not apps. So I have to agree with you on this.
5) Yeah that's an issue. An hack would need to be updated every OS. Certain versions of Ndless were not even patched by TI when new OSes came out, yet a lot of work had to be spend finding the new memory addresses and stuff in order to allow Ndless to be compatible again. So inevitably, the same thing would happen with a TI-84+CE jailbreak


For the pros:
3) Doesn't the CE also have an hard file size limit of 64 KB? I know the 84+ had an executable code limit of 8 KB, but program files that are archived could be up to 64 KB large and RAM ones could be up to 24 KB large. In other words, I don't think somebody could store 2 MB of sprite data in one single 8xp file on the CE, unless there is really no hard limit on file size. 64 KB of executable code is definitively way more than enough, though. And TI-BASIC doesn't have an executable code limit, so those who find 64 KB too restrictive can always use a mix of TI-BASIC and C programs where the BASIC ones are used to launch C programs when needed :P

4) I thought that OpenLib() and ExecLib() had bugs preventing them from working at all on the CSE and CE? I swear I read that somewhere before...


IMHO, I don't think having apps is absolutely necessary, considering we have more than enough freedom already. The main issue without apps is that casual calculator gamers have the tendency to whine about programs that uses more than 1 file and I was myself on the wrong end of such criticism in the past about my older calculator RPGs. They don't realize the limitations of the tools we use, so if someone was to make a TI-Boy CE emulator, for example, then get ready for people complaining that their Pokémon ROM is cluttering up their memory menu with over 16 appvars. And if the author decided to use sub-programs instead of appvars, then BASIC games that use CE Textlib and Sprites v3.x will run much slower because the calculator VAT will be clogged by hundreds of Gameboy ROM files. But it's more an minor annoyance, IMHO, because the game authors can always recommend users to have as less files on their calc as possible.
  • Calculators owned: TI-82 Advanced Edition Python TI-84+ TI-84+CSE TI-84+CE TI-84+CEP TI-86 TI-89T cfx-9940GT fx-7400G+ fx 1.0+ fx-9750G+ fx-9860G fx-CG10 HP 49g+ HP 39g+ HP 39gs (bricked) HP 39gII HP Prime G1 HP Prime G2 Sharp EL-9600C
  • Consoles, mobile devices and vintage computers owned: Huawei P30 Lite, Moto G 5G, Nintendo 64 (broken), Playstation, Wii U

MateoConLechuga

Entire program execution is slower. Also, OpenLib( and ExecLib( were fixed on the CE; along with all the bugs they used to have. (Which really makes me believe that they *will* eventually -- maybe not for at least a year or maybe 2 -- release some sort of SDK). Yes, 64Kb may seem really small when you have a ton of sprites; but 128 compressed 16x16 sprites only take up about 16kB. So size still really isn't that much of an issue, except for very large programs.

Dream of Omnimaga

Strange, I did not know that. I guess people have no choice to use apps on the older models due to crippled RAM, though. And nice to see that the OpenLib/ExecLib bugs were fixed. I personally have doubts about an SDK, though. If they do it then I think it will cost money or apps will need to be signed by TI themselves, as some sort of filter (eg they might refuse to sign apps that can be used for cheating, for instance).


As for size in some cases it can be a concern. For example, The Reign of Legends 3 was over 100 KB large, and that was with most maps being stored inside pictures (where each dungeon room of 10x8 tiles took 10 bytes of RAM) and sprites were monochrome. A color version would be exponentially larger, although not as much as Reuben Quest. If someone was to port that game to C then it would definitively have to be split into multiple files.
  • Calculators owned: TI-82 Advanced Edition Python TI-84+ TI-84+CSE TI-84+CE TI-84+CEP TI-86 TI-89T cfx-9940GT fx-7400G+ fx 1.0+ fx-9750G+ fx-9860G fx-CG10 HP 49g+ HP 39g+ HP 39gs (bricked) HP 39gII HP Prime G1 HP Prime G2 Sharp EL-9600C
  • Consoles, mobile devices and vintage computers owned: Huawei P30 Lite, Moto G 5G, Nintendo 64 (broken), Playstation, Wii U

Powered by EzPortal