Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Xeda112358

Pages: [1] 2 3 ... 312
1
News / Grammer 2.51 released!
« on: February 15, 2020, 05:41:25 pm »
After seven years, Grammer was revived with a new update! In fact, since then, there have been three more major updates, including today's Grammer 2.51.0.0.

After losing the source code in 2013, Grammer progress died, but then in 2016 Hans Burch(ticalc) recovered the source code, presumably by disassembling the last binary and comparing it to an old source file. I didn't actually get to working on Grammer again until late 2018, but since that it has had fairly steady updates. I first documented, reorganized, and cleaned up the code, then put it up on GitHub. I started adding features and managed to rope in @NonstickAtom785 into the action with bug reports, improved documentation, and recently some bug fixes.

In the past 16 months, there have been many updates and modifications to expand Grammer's abilities. With these new updates, Grammer has now graduated up from a 1-page app to a 2-page app (16384 bytes vs. 32768 bytes), but the updates are (hopefully) worth it!

Here is a quick summary of added features since the 2012 update.
  • Grammer now has a real main menu! Instead of just showing one entry at a time, now you can scroll through programs with a real scrollable menu.
       
  • Grammer now has support for single-precision floating point math, including the basic operations, as well as exponentials, logarithms, trig, inverse trig, and more! Keep in mind, Grammer is intended to use 16-bit integer math, so it's a bit convoluted to use floats:
  • Grammer has an external module system, which means that specialty routines can be added to extend the language. For example, Yeong has created a textbox module which can be useful for game dialog!
  • Grayscale is not backwards compatible. Grayscale is now 4-level gray, instead of 3-level. Grayscale now takes color from both buffers, so BOTH buffers must have a black pixel to appear black (before, there was a black buffer and a gray buffer, where a black pixel in the former would override the latter).
  • Input and Menu routines have been significantly modified, with Input being the most obvious. In place of highlighting the entered text, a blinking cursor is displayed, making it more obvious that input is desired from the user. On the programming end, you can now relocate the Input buffer and size. So now if you want to have the user enter a name of up to 8 bytes, you can point the input buffer to where you want the string written, and set the size to 8. The Menu( routine now has scrolling, and internally it is more memory friendly, allowing more options. An entirely new Menu(' routine allows the programmer to generate menu items using a subroutine. This could be really useful for game menus where, say, an inventory menu is prone to changing.
  • Grammer officially has stack support!
  • You can now save and restore variables within a ▶Nom(...End block, which is useful for subroutines.
  • Pt-Off( finally supports big sprites!
Spoiler For More updates:
  • The source code has been cleaned up significantly and put on GitHub.
  • RecallPic now works on archived picture variables.
  • pxl-Test(' was removed and replaced with an equivalent rectangle method.
  • Rectangle clipping now works in all directions!
  • Line drawing now has real clipping!
  • The solve( now includes port commands, and relocation of where the vars are stored.
  • L (the list L), can be used to execute specific lines of code.
  • Text( now supports displaying signed numbers via the Fix command, as well as floating point numbers.
  • ▶Dec converts a string to a float, useful for user input.
  • Param can be used to read a list of parameters passed to a subroutine.
  • Param' and Param° push to and pop from a stack, respectively, where Pmt_Bgn points to the start of the stack and Pmt_End points to the end of the stack.
  • Circle( has 9 new methods, all with different fill options (much like the rectangle routines).
  • Variable-width fonts have a more sensible format, and the fonts are ported to work with DrDnar's Monochrome Font Editor. The font files are included with the downloads so you can use them as templates for your own fonts.

Download the latest Grammer v2.51!


2
Grammer / Re: Latest Grammer Updates
« on: February 15, 2020, 11:07:47 am »
Grammer v2.51.0.0
Time for 2.51 !

The GitHub page is getting a lot more documentation, thanks to @NonstickAtom785 (both in documenting and bugging me to document stuff).

Bug Fixes:
  • Fixed bug with Param
  • Fixed bugs with Input
  • Fixed bug with PauseIf. This was allowing un-breakable infinite loops!
  • Fixed bugs with Archive/Unarchive (and similar bugs). These could cause crashes.
  • Fixed bugs with archiving in the main menu
  • Fixed bug with empty strings
  • Fixed bug with ending quotes on strings!
  • Fixed Omnicalc/Batlib fonts
  • Fixed bug with not implementing screen invert :|

Updates:
  • Optimized Dispgraph
  • Added new display methods that allow overlaying or masking multiple buffers
  • Added smooth-scrolling tilemap routines! This is long overdue; I reserved space for more tilemap commands and it took 8 years to actually do it >_>
  • Reimplemented degree token to temporarily set a buffer
  • Added TI-OS fonts to the text routines (request)
  • Added support for archived fonts (but not Grammer's variable-width format fonts :/)
  • The menu routine font is no longer hard-coded, so you can use custom fonts!
  • Menu(' now has a mode to support multiple headers, so you can make menus where you press left/right to go to the next menu.
  • Updated variable-width font at request to look like it used to.
  • Reimplemented ' option for the Menu( command.
  • Added DS<( to complement IS>( (nonstickatom)
  • Recreated the program launcher. This is an assembly program that calls the Grammer parser to parse code (caled prgmG250).

Here's a screenshot implementing the smooth-scrolling tilemap commands and new DispGraph techniques:



In news related to Grammer updates, this might be the last major update for a while; life is about to get very busy for me. If all goes according to plan, this "busy" might be longterm :)

EDIT: Forgot to add the files >_>

3
Grammer / Re: Grammer 2-The APP
« on: February 01, 2020, 10:42:28 am »
@NonstickAtom785 : You were looking for this I think.

When I updated Grammer to 2.50, I declined to make a program launcher thing. (I used to supply an assembly program that could be used to either run a Grammer program, or execute in-line Grammer code.)

I had fun with creating this .gif showing that you can basically mix Grammer code inside a BASIC program (aside: The other way around is more difficult):


For compatibility reasons, I renamed the assembly program to prgmG250.
Code: [Select]
Inputs:
    - Ans is a string: Then it is the name of the Grammer program to execute.
    - Ans is not a string: Then the code following Asm(prgmG250 is executed as Grammer code up to a Stop,
      then it continues as TI-BASIC code.

So, some things to consider: I know when I make Grammer programs, I put subroutines after the Stop. If you tried to in-line one of those programs this way, the TI-BASIC parser would pick up at the subroutines, almost certainly causing an error! Instead, you'll want to reorganize your code like:
Code: [Select]
  <TI-BASIC code>

Asm(prgmG250
  <Grammer code>
Goto Lbl "Stop
  <subroutines>

.Stop
Stop

  <TI-BASIC code>


Basically, just make sure that the Stop that your Grammer code reaches comes right before where you want the TI-BASIC parser to pick up. In the example gif, the program I ran had no subroutines, so I didn't ave to worry about the structure.

A final note, prgmG250 should be compatible with at least v2.50.0.2 and after. I didn't check 2.50.0.0 and 2.50.0.1, but it should work with those, too.

4
TI-BASIC / Re: New-style Program Editor for TI-83+?
« on: January 30, 2020, 09:03:21 am »
Oh, those were the easy parts. I was saying the hard part was the graphical part :P I already have tokenizing and stuff working for a few teat cases, like when you type the letters for Line(, it convert to the TI-BASIC Line( token and it has special tokens for Axe, and I could easily make "Text('" show up as the single token "TextNum " for Grammer mode :P

5
TI-BASIC / Re: New-style Program Editor for TI-83+?
« on: January 30, 2020, 08:46:41 am »
Honestly, the most difficult part for me has been just displaying the content efficiently, and scrolling accordingly. The other difficult part (that I was able to do) is creating the routines for moving around memory to insert/delete/overwrite. All the fancy stuff like tokenizing (i.e., turning the text "Line(" into the "Line(" token) and re-tokenizing (i.e. displaying "WLine(" as "WhiteLine(") are pretty easy, but tedious. Making menus is difficult, but I already have some pretty general-purpose menu routines, so that is also just tedious.

6
TI-BASIC / Re: New-style Program Editor for TI-83+?
« on: January 29, 2020, 04:42:07 pm »
Well, in the same way I kind of hacked the 8x8 fonts, I ended up having to make a custom routine and had to mess with the stack pointer to bypass the OS drawing routine. You could do it with a small-font, but it would be hell to write the code for it :|

7
TI-BASIC / Re: New-style Program Editor for TI-83+?
« on: January 29, 2020, 03:26:56 pm »
Also a question for the "pro's". Would it be possible to write a font hook that makes the whole OS run on small font? That would be quite entertaining and also very useful.

It would be quite difficult, probably. The font hooks  only ask for the data and expect it to be in a specific format. I had to do some very convoluted things in Batlib to enable 8-pixel wide fonts. Basically, text drawn with the large font (that the OS naturally uses) is drawn only to the LCD and not to the graph screen, and the LCD supports a 6-bit and 8-bit mode.

It is doable, it would just be difficult.

8
TI-BASIC / Re: New-style Program Editor for TI-83+?
« on: January 26, 2020, 10:15:48 pm »
Well, that is quite strange. Did you make sure to change it to $48 and add in the four spaces at the end of the name to make it eight bytes?

EDIT: Also, yeah, it is far from a release; it is fairly unstable and likes to crash especially if you go off-screen

9
TI-BASIC / Re: New-style Program Editor for TI-83+?
« on: January 26, 2020, 09:04:58 am »
Oh, yes,the current release of spasm-ng has a bug with the name field. @NonstickAtom785 was working on compiling the fixed fixed version, so maybe he'll be able to upload a spasm.exe this week?

If you want to get it to compile in the meantime, you can open src/TIDE.z80 and edit line 5 to be:
Code: [Select]
.db $80,$48, "TIDE    "
The bug is that spasm is expecting the name field to be $80,$48 (which means an 8-byte name), but it is actually allowed to be $80,$4x. There is a version that has this bug fixed and hasn't been merged yet:
https://github.com/alberthdev/spasm-ng/tree/feature/app-name-var-size

Otherwise, the bin/ folder has an already compiled .8xk (but that doesn't help you if you want to play with modifying the code :P)

10
TI-BASIC / Re: New-style Program Editor for TI-83+?
« on: January 24, 2020, 07:44:11 am »
Both @E37 and I have made efforts to, but mine is not mature enough to really be useful: https://github.com/Zeda/TIDE

E37 may have added more to this project since the last update, but I'm not sure.

11
News / Re: Super Star Hero, A Futuristic Action-RPG For Windows
« on: January 18, 2020, 11:48:37 am »
I don't play RPGs much, but damn is that a good soundtrack.

12
TI Z80 / [Grammer] Another Tilemap Editor!
« on: January 18, 2020, 11:02:09 am »
Hi!

With @NonstickAtom785's talk of making an RPG in Grammer, I decided that I should finally add in smooth-scrolling tilemap support in Grammer (finally). Anyways, I went with a more standard format, so we need a new tilemap editor, and I like how this one has turned out:


The controls are listed in the readme, and I've included a sample set of files (spritesheet+tilemap+config).I've also included a map viewer, prgmTILEMAP:

That is not documented, but use [ *] to use 15MHz mode, and [/] to use 6MHz mode (default). It uses the same data as the map editor, so it loads the same tilemap and spritesheet that you were working on.

13
Grammer / Re: Grammer 2-The APP
« on: January 18, 2020, 11:01:45 am »
Wow, lots of updates to report:

The GitHub page is getting a lot more documentation, thanks to @NonstickAtom785 (both in documenting and bugging me to document stuff).

Bug Fixes:
  • Fixed bug with Param
  • Fixed bugs with Input
  • Fixed bug with PauseIf. This was allowing un-breakable infinite loops!
  • Fixed bugs with Archive/Unarchive (and similar bugs). These could cause crashes.
  • Fixed bugs with archiving in the main menu
  • Fixed bug with empty strings
  • Fixed bug with ending quotes on strings!
  • Fixed Omnicalc/Batlib fonts
  • Fixed bug with not implementing screen invert :|

Updates:
  • Optimized Dispgraph
  • Added new display methods that allow overlaying or masking multiple buffers
  • Added smooth-scrolling tilemap routines! This is long overdue; I reserved space for more tilemap commands and it took 8 years to actually do it >_>
  • Reimplemented degree token to temporarily set a buffer
  • Added TI-OS fonts to the text routines (request)
  • Updated variable-width font at request to look like it used to.
  • Reimplemented ' option for the Menu( command.
  • Added DS<( to complement IS>( (nonstickatom)

We are now up to version 2.50.9.4 :)
You can find documentation on the GitHub, but I'll attach the .8xk

EDIT: Here's a screenshot implementing the smooth-scrolling tilemap commands and new DispGraph techniques:

14
Axe / Re: Is There a way to paste varibles to the home screen
« on: January 16, 2020, 12:29:25 pm »
Oh, yeah, I'm not sure exactly how to do that, sorry. Evidently it is feasible, but you'd probably need a bit of assembly to do it.

15
Axe / Re: Is There a way to paste varibles to the home screen
« on: January 15, 2020, 12:56:32 pm »
I'm confused about what you want. You just want to draw the text, like the Output( command in TI-BASIC ?

Pages: [1] 2 3 ... 312