Login [Register]
Don't have an account? Register now to chat, post, use our tools, and much more.
After a little while programming random projects, I have created a new program, which is used to aid in the creation of tilesets and tilemaps for use in making games written in ICE compiler language. TileMapE: tileset and tilemap editor for the TI-84+CE! Look for it under TI-84+CE Assembly graphics!

Please notify me of any bugs, questions or comments in this thread, and I will try to answer them ASAP. Smile

Version 1.7.1 is now in the achives!
Fixed fillRect in Tilemap editing
Improved README.

If you want to make tilemap-based games, and you know ICE, then this program is for you!
New program I made today:
-CRYPT-ICE
this program is used for enciphering text. Written in ICE, it is very fast.
It takes a key, in Str3, and enciphers Str1.
It will only encipher uppercase letters, leaving other characters untouched.
So if Str3="HE" and Str1="AABB", then Str2 will be "HEIF"
The 1st letter of Str3 will encipher the 1st letter of Str1, then the 2nd will the 2nd, and so on so forth, until the end of Str1, repeating Str3 as much as needed.

It is in the archives!
https://www.cemetech.net/programs/index.php?mode=file&id=1789
So, I present a new program I have been working on for at least a day now, nearly complete:
NOVELLA reader
This program reads choose-your-own adventure novels!
The reader is complete, although I am very likely to add more features in the near future.
The writer program is not yet complete (hardly even started), but the data files are not hard to make, see below for formatting.

3b header_length
(header_length)b header_data
Jump table (see fig.1)
3b null (000000h)
Pages (see fig.2)

fig.1
3b pointer_to_page_start
//pointer is from the beginning of the file
//repeat as needed
//pages start at zero, and increment by 1

fig.2
Each line begins with a control byte.
01: text line (displays text until next null)
02: page link (3b page number, then displays the following text until null)
04: PrintChar (1b char)
05: Display embedded image (1b scale (x/y are upper/lower nibble, x+1/y+1), sprite data)
06: reset indent
07: indent (1b amount)
08: Display external image (8b appvar name, 3b file offset, 1b scale)

Screenshots:
Page link functionality test.

Ebedded image functionality test

External image functionality test
Awesome! I used to love CYOA novels. Are there pre-existing eBook versions of these novels or will you have to convert them to your format? Have you thought about any kind of data compression?
tr1p1ea wrote:
Awesome! I used to love CYOA novels.


I still do Razz

Can't wait for the release! Keep it up!
tr1p1ea wrote:
Awesome! I used to love CYOA novels. Are there pre-existing eBook versions of these novels or will you have to convert them to your format? Have you thought about any kind of data compression?

Data compression, not really... but in my most recent iteration (still not released yet) I added a function for printing a line from any point in the data file, very useful for duplicate lines.
Also I changed all of the file offsets to 2b instead of 3b, so that saves bytes as well.
I added an 8b mandatory header, so that you can't just open random files Razz

"NOVAFILE" (8b)
2b header_length
(header_length)b header_data (see fig.3)
Jump_table (see fig.1)
2b null (0x0000)
Pages (see fig.2)

fig.1
2b pointer_to_page_start
//pointer is from the beginning of the file
//repeat as needed
//pages start at zero, and increment by 1

fig.2
Each line begins with a control byte. (codes are in hex)
01: text line (displays text until next null)
02: page link (2b page number, then displays the following text until null)
04: PrintChar (1b char)
05: Display embedded image (1b scale (x/y are upper/lower nibble, x+1/y+1), sprite data)
06: reset indent
07: indent (1b amount)
08: Display external image (2b file offset, 1b scale)
10: skip bytes (2b amount)(useful for embedding strings, for use later)
11: print string from offset (2b offset)(useful for using 10)
12: print string from external file (2b offset)(uses 13 to set the file)
13: set external text data file (8b name)
14: set external image data file (8b name)
15: set save file (8b name, 2b offset)
16: save current page index to save file (only uses 2b of the save file)
17: goto page in data file (creates file if it does not exist, resizes it if it is too short)
FF: end of page (only when used as a control byte)

fig.3
//the header length is divided by two into two sections
Title + 0x00
Author + 0x00


And I am finally almost done the editor; however this editor doesn't edit the already existing files, instead it builds them from a 'source' file. (to avoid uneccesary reallocation in the temp file, when you need to edit a page that is not the current)

To answer your question about formatting, yes, it will need to be converted, as the text does not automatically word-wrap as it draws. Also, this format does not amalgomate all the byes into one 'chunk'. (like an e-book) Instead, it uses a jump table and links to other pages.

I am actually writing a CYOA novel at the moment. (Idk if it will be allowed here, due to mature content) It is of the survival horror genre, if that clarifies a little bit; the only mature content is the thrill of the wording.

I'm happy you're exited! Very Happy
It really helps to know that my programming isn't going to gather dust on the shelves of the Archives! Laughing Very Happy Very Happy Very Happy

EDIT: The novel I am writing is not mature, at least as compared to modern FPSs

EDIT2:
New control codes:
12: print string from external file (2b offset)(uses 13 to set the file)
13: set external text data file (8b name)
14: set external image data file (8b name)
15: set save file (8b name, 2b offset)
16: save current page index to save file (only uses 2b of the save file)
17: goto page in data file (creates file if it does not exist, resizes it if it is too short)

Edited control codes:
08: now uses 14 to set the file. Saves bytes.

New Screenshots:
Re-did external image test

Added external text test (also so happens to test an external image)


EDIT3
Archives pending!
Ok, so I know that there are already a ton of programs that I would like to be developing, but this idea caught my eye.
I have decided to make an escape-the-room program, that would interpret a data file similarily to NovellaReader's method, just with a lot of added functionality.
I have already whipped up some code, but it is not much different than NovellaReader. The jump table is the same, as well as much of the control codes; but with a few major differences: all of the images are external, as well as much of the text, and there is a code for a tiled background (drawing the same sprite across the entire screen). The selection system is also different, it instead uses an item selection system (left/right chooses cursor positions from a list); and currently allows for 16 choices, but of course I can add many more.
(The item selection system selects from a list of screen coordinates)

So that brings me to an aesthetical question: should I implement this selection system into NovellaReader, or should I leave it with f1-f5 selection?
With the new selection system, there could be much more than 5 possible choices, although at the expense of easy selection.
With the f1-f5 selection, there can be only 5 choices, unless I implement more keys; which would come at the expense of user-friendliness.

Furthermore, I have been having way too much trouble with making the editor for NovellaReader /me is clueless as to why, and by extension, this new program; so I have decided to forego making one.
I will release enough documentation to write the files using ICE. I hope that this doesn't cause too much trouble in terms of the user's ability to write such files, but I'm sure it will... so I will continue to try to make the editor, or at least a converter, for NovellaReader.

The name "NovellaReader" is not the final name, it was just something I came up with in a pinch, to serve for the time being.
  
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
Page 2 of 2
» All times are GMT - 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