Author Topic: TIBiC/GO  (Read 23597 times)

0 Members and 1 Guest are viewing this topic.

Offline TsukasaZX

  • LV6 Super Member (Next: 500)
  • ******
  • Posts: 415
  • Rating: +46/-3
  • Never Gonna Give You Up!
    • View Profile
TIBiC/GO
« on: April 29, 2011, 04:49:08 pm »
TI Basic in C with Gaming Orientation (TIBiC/GO)

TIBiC/GO is a C library that provides a TI-BASIC style "API" for game programmers. TIBiC/GO creates a setting that most TI-BASIC programmers will find quite familiar, and includes facsimiles of both TI-BASIC functions and powerful graphical functions found in xLIB and Celtic. However, it's not just straight up TI-BASIC-on-PC. TIBiC/GO adds a little extra "oomph" to the mix by allowing richly multi-color graphics, "permanent" data storage, the brilliance of sound, and much more.

There's actually a really good reason for this. As you know, working with TI-BASIC is a *great* way to get your feet wet in the programming pool. However, TI-BASIC is exactly that: basic. Real-world applicable programming languages are, quite honestly, nothing like TI-BASIC. They may share the same general procedural structure but TI-BASIC and languages like C or Java are worlds apart. Suffice it to say, it wouldn't be strange for somebody transitioning from calculator to computer programming to have a bit of a struggle adjusting. TIBiC/GO is designed to provide a sort of "training wheel" layer between TI-BASIC and ANSI C that gives programmers the comfort of TI-BASIC, a good taste of C, and the ability to go beyond TI-BASIC and into the world of true C programming whenever they want.

Originally just a concept, an idea, I'm actually going to be working on this alongside Yume (I'll be focusing on Yume more right now but during the summer I'll be splitting my focus 50-50 give or take). So far, I can confirm this for functionality:

 - Akin to TI-BASIC, you will have access to 26 numeric variables, 10 string variables, 10 lists, and 10 matrices with having to hassle with declaration and initialization.

 - Variables (or, more accurately, memory-allocated pointers) will be dynamically managed with simple function calls so the user never has to hassle with memory allocation. A simple function call frees all allocated memory at the end.

 - You are NOT limited to the presets and can easily add your own. You may, however, have to do any scope or memory management yourself the hard way.

 - Users have access to TIBiC/GO facsimiles of TI-BASIC functions like text(), Horizontal, Pxl-On(), Pxl-Off(), and Pxl-Change(); facsimiles of xLIB and Celtic functions like sprite drawing and tilemapping; and much more

 - Easily integrate color and even sound into programs to go above and beyond!
IRC EFNet | Nick Su-Hime | Chan #omnimaga, #unss, #cemetech
Yumé - 100% Complete!
Yumé 2: Rika's Story - 10%
 - Hiatus until summertime
Yumé: The Eternal Dreams - 50%
 - World and events
TIBiC/GO C Library - N%

"Alenda lux ubi orta libertas" - Let learning be cherished where liberty has arisen.

  ▲
▲ ▲ Triforce!

Offline Munchor

  • LV13 Extreme Addict (Next: 9001)
  • *************
  • Posts: 6199
  • Rating: +295/-121
  • Code Recycler
    • View Profile
Re: TIBiC/GO
« Reply #1 on: April 29, 2011, 04:52:13 pm »
O.O Allegro, right? This is an awesome project in my view. I hope we can write TIBiC/GO modules using C, that'd be cool.

This is one of those TI-Basic on PC projects, never saw one finished, so I'm hoping this one can go far :D

Offline TsukasaZX

  • LV6 Super Member (Next: 500)
  • ******
  • Posts: 415
  • Rating: +46/-3
  • Never Gonna Give You Up!
    • View Profile
Re: TIBiC/GO
« Reply #2 on: April 29, 2011, 05:14:07 pm »
Yeah, I'll be using Allegro for the graphical aspects. I could write the graphical routines from scratch but then this library would take >9000 years to finish :P
I'll definitely be getting this finished and I think I can finish it in one summer assuming I have very few interruptions.

Also, for those wondering, my primary inspiration for TIBiC/GO was porting epic TI-8x+ games to the PC and playing them without needing an emulator and perhaps even upgrading their graphics and giving them sound. I also had an idea for a Steam-like application that let you browse these games, download and play them, and even submit your own. I call it GECGEAR (Graphically Enhanced Calculator Game Emulating Application for Retrogaming).
« Last Edit: April 29, 2011, 05:14:59 pm by TsukasaZX »
IRC EFNet | Nick Su-Hime | Chan #omnimaga, #unss, #cemetech
Yumé - 100% Complete!
Yumé 2: Rika's Story - 10%
 - Hiatus until summertime
Yumé: The Eternal Dreams - 50%
 - World and events
TIBiC/GO C Library - N%

"Alenda lux ubi orta libertas" - Let learning be cherished where liberty has arisen.

  ▲
▲ ▲ Triforce!

Offline Freyaday

  • The One And Only Serial Time Killing Catboy-Capoeirista-Ballerino
  • LV10 31337 u53r (Next: 2000)
  • **********
  • Posts: 1970
  • Rating: +128/-15
  • I put on my robe and pixel hat...
    • View Profile
Re: TIBiC/GO
« Reply #3 on: April 29, 2011, 05:16:08 pm »
Sweetness!
In other news, Frey continues kicking unprecedented levels of ass.
Proud member of LF#N--Lolis For #9678B6 Names


I'm a performer at heart; I stole it last week.
My Artwork!

Offline TsukasaZX

  • LV6 Super Member (Next: 500)
  • ******
  • Posts: 415
  • Rating: +46/-3
  • Never Gonna Give You Up!
    • View Profile
Re: TIBiC/GO
« Reply #4 on: April 29, 2011, 08:04:43 pm »
Well, I guess if Freyaday thinks it's "sweetness" I *have* to finish it now ;)

I'm thinking 192x128 pixels as the standard window size (2x a typical TI-8x+ screen resolution). What do y'all think?
IRC EFNet | Nick Su-Hime | Chan #omnimaga, #unss, #cemetech
Yumé - 100% Complete!
Yumé 2: Rika's Story - 10%
 - Hiatus until summertime
Yumé: The Eternal Dreams - 50%
 - World and events
TIBiC/GO C Library - N%

"Alenda lux ubi orta libertas" - Let learning be cherished where liberty has arisen.

  ▲
▲ ▲ Triforce!

Offline Munchor

  • LV13 Extreme Addict (Next: 9001)
  • *************
  • Posts: 6199
  • Rating: +295/-121
  • Code Recycler
    • View Profile
Re: TIBiC/GO
« Reply #5 on: April 30, 2011, 04:53:35 am »
Well, I guess if Freyaday thinks it's "sweetness" I *have* to finish it now ;)

I'm thinking 192x128 pixels as the standard window size (2x a typical TI-8x+ screen resolution). What do y'all think?

I agree with such values for the resolution. How many colours? Or is it not limited as in 16million?

Offline TsukasaZX

  • LV6 Super Member (Next: 500)
  • ******
  • Posts: 415
  • Rating: +46/-3
  • Never Gonna Give You Up!
    • View Profile
Re: TIBiC/GO
« Reply #6 on: April 30, 2011, 12:18:52 pm »
I'd say it's going to be pretty much true-color but I think, for simplicity's sake, I'll also include a handful of "preset" color options (e.g. "red" for #ff0000) for those who are hex code illiterate or only want a few simple colors.
IRC EFNet | Nick Su-Hime | Chan #omnimaga, #unss, #cemetech
Yumé - 100% Complete!
Yumé 2: Rika's Story - 10%
 - Hiatus until summertime
Yumé: The Eternal Dreams - 50%
 - World and events
TIBiC/GO C Library - N%

"Alenda lux ubi orta libertas" - Let learning be cherished where liberty has arisen.

  ▲
▲ ▲ Triforce!

Offline TsukasaZX

  • LV6 Super Member (Next: 500)
  • ******
  • Posts: 415
  • Rating: +46/-3
  • Never Gonna Give You Up!
    • View Profile
Re: TIBiC/GO
« Reply #7 on: May 02, 2011, 09:51:21 pm »
*bump*

Gonna start listing (confirmed?) graphical functions for the sake of my own memory and to enlighten any curious folks. At this point, color related arguments are purely speculative. I'm not sure if I want to have a single hex argument or 3 RGB arguments, hence the color argument's lack of type.

Horizontal ( int y_pixel [, line_color] ) :: draws a horizontal line at the specified pixel on the y axis in the specified color (or black if unspecified)
Vertical ( int x_pixel [, line_color] )  :: draws a vertical line at the specified pixel on the x axis in the specified color (or black if unspecified)
Line (int x_start , int y_start , int x_end , int y_end [, line_color] ) :: draws a line from (x_start, y_start) to (x_end, y_end) in the specified color (or black if unspecified)

Tilemap ( int matrix[][] , int size , source [, TBD extra arguments?] ) :: essentially a clone of the xLIB tilemapping routine. Gonna have to fudge with passing arguments from a parent function to Allegro child functions or something to see how it will work. The 'size' argument is the size of each tile side so you could put 8 for an 8x8 or 100 for a 100x100 if you so desired it.
IRC EFNet | Nick Su-Hime | Chan #omnimaga, #unss, #cemetech
Yumé - 100% Complete!
Yumé 2: Rika's Story - 10%
 - Hiatus until summertime
Yumé: The Eternal Dreams - 50%
 - World and events
TIBiC/GO C Library - N%

"Alenda lux ubi orta libertas" - Let learning be cherished where liberty has arisen.

  ▲
▲ ▲ Triforce!

Offline Freyaday

  • The One And Only Serial Time Killing Catboy-Capoeirista-Ballerino
  • LV10 31337 u53r (Next: 2000)
  • **********
  • Posts: 1970
  • Rating: +128/-15
  • I put on my robe and pixel hat...
    • View Profile
Re: TIBiC/GO
« Reply #8 on: May 02, 2011, 09:51:55 pm »
Don't forget to add error handling!
In other news, Frey continues kicking unprecedented levels of ass.
Proud member of LF#N--Lolis For #9678B6 Names


I'm a performer at heart; I stole it last week.
My Artwork!

Offline TsukasaZX

  • LV6 Super Member (Next: 500)
  • ******
  • Posts: 415
  • Rating: +46/-3
  • Never Gonna Give You Up!
    • View Profile
Re: TIBiC/GO
« Reply #9 on: May 02, 2011, 09:54:36 pm »
Oh, don't worry.

Code: [Select]
if (error) { alert_user_popup("You made a mistake you moron!"); }j/k

I can throw in some level of error handling but I think most syntactical error handling will be left to the compiler/debugger.
IRC EFNet | Nick Su-Hime | Chan #omnimaga, #unss, #cemetech
Yumé - 100% Complete!
Yumé 2: Rika's Story - 10%
 - Hiatus until summertime
Yumé: The Eternal Dreams - 50%
 - World and events
TIBiC/GO C Library - N%

"Alenda lux ubi orta libertas" - Let learning be cherished where liberty has arisen.

  ▲
▲ ▲ Triforce!

Offline Freyaday

  • The One And Only Serial Time Killing Catboy-Capoeirista-Ballerino
  • LV10 31337 u53r (Next: 2000)
  • **********
  • Posts: 1970
  • Rating: +128/-15
  • I put on my robe and pixel hat...
    • View Profile
Re: TIBiC/GO
« Reply #10 on: May 02, 2011, 09:55:49 pm »
Well, yeah. This isn't Python. :P
But I think everything other than syntax errors should be recoverable
In other news, Frey continues kicking unprecedented levels of ass.
Proud member of LF#N--Lolis For #9678B6 Names


I'm a performer at heart; I stole it last week.
My Artwork!

Offline TsukasaZX

  • LV6 Super Member (Next: 500)
  • ******
  • Posts: 415
  • Rating: +46/-3
  • Never Gonna Give You Up!
    • View Profile
Re: TIBiC/GO
« Reply #11 on: May 02, 2011, 10:56:53 pm »
Well, yeah. This isn't Python. :P
But I think everything other than syntax errors should be recoverable

Define "everything other". I can't think of anything at the moment.
IRC EFNet | Nick Su-Hime | Chan #omnimaga, #unss, #cemetech
Yumé - 100% Complete!
Yumé 2: Rika's Story - 10%
 - Hiatus until summertime
Yumé: The Eternal Dreams - 50%
 - World and events
TIBiC/GO C Library - N%

"Alenda lux ubi orta libertas" - Let learning be cherished where liberty has arisen.

  ▲
▲ ▲ Triforce!

Offline Freyaday

  • The One And Only Serial Time Killing Catboy-Capoeirista-Ballerino
  • LV10 31337 u53r (Next: 2000)
  • **********
  • Posts: 1970
  • Rating: +128/-15
  • I put on my robe and pixel hat...
    • View Profile
Re: TIBiC/GO
« Reply #12 on: May 02, 2011, 10:57:56 pm »
/0
Err:Data Type
Err: Invalid Dim
Err: Break :P
There's more, but I can't think of any atm
« Last Edit: May 02, 2011, 10:58:21 pm by Freyaday »
In other news, Frey continues kicking unprecedented levels of ass.
Proud member of LF#N--Lolis For #9678B6 Names


I'm a performer at heart; I stole it last week.
My Artwork!

Offline TsukasaZX

  • LV6 Super Member (Next: 500)
  • ******
  • Posts: 415
  • Rating: +46/-3
  • Never Gonna Give You Up!
    • View Profile
Re: TIBiC/GO
« Reply #13 on: May 03, 2011, 02:46:16 am »
/0
Err:Data Type
Err: Invalid Dim
Err: Break :P
There's more, but I can't think of any atm

Zero division and data type are something best left to the compiler/debugger I think.
Arrays of any sort don't really have maximum dimensions and always default to 1 element so there's really no such thing as an invalid dimension in C or TIBiC/GO.
Heh, break.

Really, the question would be more or less why bother? TIBiC/GO isn't a compiler. It's a library. You compile it with whatever your preferred compiler is (straight up GCC, minGW, Code::Blocks, MS Visual Studio, etc). Even if the library provided error detection, what exactly would you do once an error is detected?
IRC EFNet | Nick Su-Hime | Chan #omnimaga, #unss, #cemetech
Yumé - 100% Complete!
Yumé 2: Rika's Story - 10%
 - Hiatus until summertime
Yumé: The Eternal Dreams - 50%
 - World and events
TIBiC/GO C Library - N%

"Alenda lux ubi orta libertas" - Let learning be cherished where liberty has arisen.

  ▲
▲ ▲ Triforce!

Offline Munchor

  • LV13 Extreme Addict (Next: 9001)
  • *************
  • Posts: 6199
  • Rating: +295/-121
  • Code Recycler
    • View Profile
Re: TIBiC/GO
« Reply #14 on: May 03, 2011, 08:00:20 am »
Do we need Allegro?

!