Delta Emerald Project

This is the place where I will be sharing my progress on my project. There's a table of contents at the side if you didn't see it.

Before 2021

Early 2020 and 2019

So in the beginning, I saw that no one really made pkmn on the Ti 84 plus ce using Ti basic. So I thought, what if I made one? So I began learning how to code on the TI 84 plus ce. I already had experience with other programming languages. I looked at many resources, from Ti wiki to Cemetech. I created my first program, HELLOWOR.8xp.

HELLOWOR.8xp
:Disp "HELLO WORLD!"

And that was it. Then I moved on to a simple number guessing game, that I confusingly named: POKEMON0

POKEMON0.8xp
:ClrHome
:Disp "GUESS A NUMBER
:randInt(0,100→G
:prgmHELLOWOR
:Input "",U
:6→L
:While U≠G and L>0
:If U>G
:Disp "TOO LARGE DUMMY
:If U⟨G
:Disp "TOO SMALL IDIOT
:Input "TRY AGAIN",U
:L-1→L
:Disp L
:End
:Disp G
:Disp "CONGRATS
			

This code was a Ti Basic version of a number guessing game from the manning book. I later moved on to harder programs. All of this was made without a computer, just typing code with the calculator during my free time. I think I'll include the edited version of POKEMON MASTERS 3 later. After that, I searched for a real Pokemon game I could copy. Alas, I finally found one, it was Pokemon Red/Blue for the old Ti 84 without color. I anaylzed the program and looked at everything that seemed cool. I decided to find how to write the menu function, and later copied it to a new color version. This took me almost 2 months to do, since I didn't really have free time. I decided to start writing the story and make the map. I create the move function, which was nice. Now we have a dot that can travel the small map I made and enter different cities. I finished making Littleroot and Oldale town, as well as route 101. I added the start screen and dubed the game Pokemon Emerald Delta alpha v0.0.1

My next task was to finish working on all of the names of the items, Pokemon, and moves. I used a pokedex and converted all the letters to numbers. I finally decided to use 9 letter names with 0 for space. Then I worked on adding stats to the game. To conserve memory, I used stats/5. This took me almost half a year to complete. Adding the names of the 202 pokemon in emerald and the stats was tiring. I spent a lot of time debugging. I did this since in the beginning, I promised myself to create this program just by typing code into the calculator.

Around fall 2020, I realized this is unfesible. Plus, some of the bugs in alpha v0.3.0 (the current version) could only be fixed using assembly. I decided to use a computer to automate everything data-related. I began learning ez80 assembly for this. Now I've finished the map and learnset, move names, and a lot of other stuff. I think I'll give a run through of what's in each list. I don't know if this would encourage cheating or hacking the game. I mean, if I implement trading then this would already get out of hand. Whatever, if you cheat and win it doesn't feel good. It's bound to be deciphered once I make the program open source. I mean, animal crossing new horizons already had a save file hack a couple of weeks after it was released. The save file was encrypted and it was broken. I'll implement some basic anti-hacks for casual players and explain them in this website. It'll save the efforts of many who really want to cheat.

Late 2020

Ok I automated a lot of stuff. I think I made the learn sets correctly. I might add more moves. I don’t know what moves I should add thought. I’ve finally began to create a page in my website for this blog. I’m using Bootstrap. I don’t really know how do CSS. If you read up to here, you probably know I do more backend then frontend. It’s looking really nice.

Early 2020

Today I've decided to use c++ instead of Ti basic. I was doing benchmarks, and realized that I would need 1 sec per move. This is way too slow when compared to emulators that the wait time for each move is probably 100ms.

Spring 2021

Yeah, judging about the dates. It seems that I haven't touched this since a year. I'm in another grade now. Wow. Anyways. You actually can't use cpp for this. LOL So Instead I decided to use c because they support that. I haven't done much. It's hard fix stuff, its my first game with graphics using c. In fact, this is the first game I've made with graphics that's not written in scratch or python. Wow. I just realized I only made text based games. There's multiple changes to what I originally planned. I finally fixed the menu, it was hard. I decided to not make it scroll down too fast. You know when you press the down arrow it only scrolls down once, then after a couple seconds it begins to scroll down fast? I decided to make it scroll only once. Makes the program smaller.

Oh right. Guess what? remember about the crude drawing? I deleted it by accident. LOL whatever. I'm making a new one anyways. I should include shinies.

Late Autumn 2021

Decided to pick up the project after a long time. Took an hour to generate this: UZJZ9N7JZJ;J=JV9;FJJJJAF>F*K:JU:ZKZFJ[F5C]ZJ6JEC;NN8KNZFKZIFJJOFJ&YJEMFUKZ9[JFJHJNN:JJJJZDIJGJZVEVJJKGJJINN9 If you are bored, try to figure out what the that text means. It took me a day to figure out what it meant. Hint: type advantage. Anyways, I made a lot of progress and learned more c++. There's also shinies and all the data whatnot is all in. I'm just left with the map drawing, battling, and story. I'm almost done with damage calculation.

Early Winter 2021

Decided to take a break from this. You know why? Stupid memory alloc bs. I'm going to come back after I understand c++ better. I don't know how to have the sorta array of references in c++ just like java. You know what I mean?


Pokemon thing[6]; 
Pokemon toStore = Pokemon();
thing[0] = toStore; 
				
Also, weird memory not avaliable - null pointer reference error. Revamping whole system to use less memory. Maybe it will read correctly. Some example of my struggles

How to play

Since this is a calculator, there will be different controls.
Arrow keys – move in the map or menu
Enter – this is similar to the A button on a Gameboy advance. Use this to select
2nd Key – this is similar to the B button on a Gameboy advance. You should be able to go back. Pressing on this key in the map takes you to the menu.
y= Key – toggle running boots
graph Key –
Zoom Key – k ?

Limitations of the Game

Since I am making this on a simple TI 84 Plus CE, there will be many limitations to this game.

  1. Since we don’t have enough memory to store all the sprites, each Pokémon will be represented by their name, colored.
  2. The map will still include most of the locations in the original game, but minified. A crude drawing can be founded in… Some locations may be ORAS versions instead of the Emerald version.
  3. Poke blocks and Poke contests are not included in this game, nor are the berries used to make Poke blocks. Useful berries from later gens are included though.
  4. Not every trainer battle is included, nor is every building and interaction. A list of actions that aren’t included can be found in this section
  5. EV training, and eggs are not in this version of the game. Trading is not included in this version of the game.

  6. You can other differences between the original Emerald game and Delta Emerald in Here.

    Troubleshooting

    Crash

    If you experience a crash in the game causing an error, please do not panic. Press enter and connect your calculator to the computer using a data transfer program such as TI Connect. Transfer all lists that begin with P such as P1L.8xl, P2L.8xl, PBL.8xl, PB.8xl, PSL.8xl, etc. Depending on the crash, there may be different lists. Then transfer the list A.8xl, TEMP.8xl, and LISTSTR.8xl. Transfer all variables from A-Z. Take a screenshot of the graph screen and the home screen. Then send everything, by email, to wiitong0394703@gmail. In the email, please describe what you were doing and anything you did wrong. If you get ERR:MEMORY – see section: Why so slow?

    Regular Bug

    If you see something that doesn’t make sense or accidentally walked through walls, etc., you can report your problem to wiitong0394703@gmail. If you want, you can send me the same file listed in Crash by pressing the on button mid-game. Beware, this deletes your current save.

    Why so slow?

    Since we are using a calculator to run this program instead of a regular computer, there might be a lot of lag. Although I cut out many aspects, there are some things that might run slowly. If you got an ERR:MEMORY, then archive some of your programs before running. This game uses more RAM when running, as it unarchives some lists to access compressed data. Some of the lists, when unarchived, can take up to 10kb of memory each. This can take a long time. I fit everything in lists to reduce lag, since getting a value from a list is faster than getting from a string. This causes lag whenever the program tries to generate move names, although it tries to “cache” values when it gets values. Switching Pokémon can cause lag as well. If you are experiencing lag while moving in the overworld, then use running shoes. They make you faster. During planning, I tried to make everything as fast as possible, while also utilizing less memory. One of the slowest operations on this calculator is the '->' (STO) operator. This stores a value in a variable. I used it a lot in my program, some to shorten my code, or store in cache so I don't have to generate it again. I don't know how much branch prediction can slow down my program. I used many if statements, opting to use multiple IF statements instead of IF THEN ELSE IF THEN ELSE END END END statements to conserve memory, but it might make the program run a tad slower when its executing it many times in a loop. This info is now outdated, as I will be using C++ for coding now.

    Technical Requirements

    You need at least 120kb of Archive RAM and 50kb of RAM. You can check these values by pressing 2nd, +, and 2.
    "Arc Free" shows how much Archive RAM left that's avaliable on your calculator. "RAM" shows how much regular RAM is unused. This program modifies all letter variables, changes your graph screen, graph settings, and Y1, Y2, etc. values. This program also changes str1 variables. If you are using another program that relies on these values to save, then you might lose your save in another program. During execution, this program creates the Lists A, TEMP, LISTSTR, P1L, P2L, P3L, P4L, P5L, P6L, PB, PBL, PSL. If other programs also use these lists, then values might be modified. The dex data lists should not be changed and always archived.

    Differences between Pokèmon Emerald and POKEMON DELTA EMERALD

    This game is different from the original Emerald Game in many ways. First, here is a list of all the moves and the corresponding new effect. This is a list of the abilities that have been changed and their corresponding effects.