Author Topic: PicArc library ?  (Read 4402 times)

0 Members and 1 Guest are viewing this topic.

Offline persalteas

  • LV5 Advanced (Next: 300)
  • *****
  • Posts: 231
  • Rating: +44/-4
  • z80 poweeer
    • View Profile
    • Tout-82
PicArc library ?
« on: February 07, 2012, 04:04:50 am »
Bonjour,

Je suis a fond dans les langages dérivés du Basic en ce moment (Xlib, Celtic, Omnicalc etc...) et j'ai vu plusieurs fois des citations de "PicArc"  dans Celtic.


Certaines fonctions de Celtic sont des fonctions permettant d'utiliser PicArc. Mais je ne trouve nul part d'info sur PicArc, que ce soit Google ou TI Calc.  ???
(la seule chose qu'on trouve c'est que Doors CS7 peut gérer PicArc.)

Est-ce que quelqu'un a déjà utilisé PicArc ?

Si oui, ou l'avz vous trouvé, et avec quelle doc ?

Merci.


Offline persalteas

  • LV5 Advanced (Next: 300)
  • *****
  • Posts: 231
  • Rating: +44/-4
  • z80 poweeer
    • View Profile
    • Tout-82
Re: PicArc library ?
« Reply #1 on: February 07, 2012, 06:05:15 am »
réponse donnée par Lionel Debroux et lambian ici: http://tiplanet.org/forum/viewtopic.php?f=12&t=8753&p=120425#p120422

Au cas ou quelqu'un cherche aussi.

Et le lien de la Doc qu'il m'a donné (United TI) : http://www.unitedti.org/forum/index.php?showtopic=5406&st=0&p=84080&hl=picarc&fromsearch=1&#entry84080


Offline Iambian

  • Coder Of Tomorrow
  • LV8 Addict (Next: 1000)
  • ********
  • Posts: 739
  • Rating: +216/-3
  • Cherry Flavoured Nommer of Fishies
    • View Profile
Re: PicArc library ?
« Reply #2 on: February 08, 2012, 04:24:23 pm »
Ce poste est traduit de l'anglais vers le français en utilisant "Google Translate".

Les informations concernant l'utilisation de l'extension de l'application PicArc Celtic III peut être trouvé dans le fichier de documentation. Une copie en anglais de qui est dans le codebox ci-dessous.

Une version stand-alone de PicArc peut être trouvé à l'URL ci-dessous. Les instructions sont également en anglais. S'il vous plaît trouver quelqu'un qui peut traduire les instructions pour vous. Je n'ai pas confiance la traduction assez pour donner des instructions appropriées.

Gardez à l'esprit que la base de données produite par la version autonome n'est pas compatible avec la base de données que Celtic III produit.

http://cadan.57o9.org/picarc5.zip

Code: [Select]
=================================================================== c009 ====
== CELTIC III PICARC EXTENDED COMMAND SET====================================
=========================================== uses the identity() token =======
=============================================================================
| Code/Name     | Command Description
-----------------------------------------------------------------------------
|00             | identity(0,"DATABASENAME",function,db_arg1,db_arg2)
|               |
|  DBQUERY1     | A nifty little function that allows many kinds of
|               | operations to take place with the PicArc database.
|               | The db_argument will vary depending on what you
|               | are going to do, but not by that much. Just read below.
|               |
|               | If function = ...
|               |
|               | 0 = Format this database. Just like anything that says
|               |     "FORMAT", you lose all preexisting data if that
|               |     file happens to already exist. This is not an undoable
|               |     action, so take care. If the file does not already
|               |     exist, it is created and then formatted. After you
|               |     use this command, you will be able to work around
|               |     with the file as a PicArc database. No arguments needed
|               |
|               | 1 = Append a picture file. db_arg1 will be the pic number
|               |     you want to refer to. For Pic1, argument will be
|               |     1, for Pic9, it'll be 9. For Pic0, it'll be 10. Keep
|               |     in mind that this command only appends Pic files. No
|               |     insertion is available, so be careful on the order of
|               |     Pic files you append.
|               |     
|               | 2 = Delete an entry. Starting at db_arg1 = 0, this command
|               |     removes the specified entry off of the database. This
|               |     command is NOT undoable, so exercise extreme caution.
|               |     
|               | 3 = Retrieves the number of entries in the database.
|               |
|               | 4 = Works just like function 1, except that this command
|               |     will attempt to compress the pic. It automatically
|               |     chooses the method of best compression so you'll always
|               |     get the smallest entry that the application is capable
|               |     of making, but using this command may be a little
|               |     slower than its counterpart. All the other commands
|               |     transparently decompresses compressed entries without
|               |     much of a speed loss.
|               |
|               | 5 = Copies the entry denoted by db_arg1 to the graph
|               |     buffer with the logic indicated by db_arg2.
|               |     0: REPLACE, no screen update.
|               |     1: AND,     no screen update.
|               |     2: OR,      no screen update.
|               |     3: XOR,     no screen update.
|               |     4: REPLACE, the screen is updated.
|               |     5: AND,     the screen is updated.
|               |     6: OR,      the screen is updated.
|               |     7: XOR,     the screen is updated.
|               |
|               | 6 = Copies an entry from the database as denoted by
|               |     db_arg1 (starting at zero) to a Pic file as denoted by
|               |     db_arg2. For example. to copy entry 6 of the database
|               |     "FOO" to Pic1, do the following:
|               |     identity(1,"FOO",6,6,1)
-----------------------------------------------------------------------------
|01             | identity(1,pic_number,function,[arg_1,arg_2...])
|               |
|  TOGGLEPIC    | This command takes Pic X (Pic0 = 10) and performs an action
|               | designated by a function number. If arg_1 = ...
|               |
|               | 0 = Copies Pic file to the graph buffer using logic method.
|               |     arg_1 specifies the Pic file
|               |     arg_2 specifies the logic code. The supported codes are
|               |
|               |     0: REPLACE, no screen update.
|               |     1: AND,     no screen update.
|               |     2: OR,      no screen update.
|               |     3: XOR,     no screen update.
|               |     4: REPLACE, the screen is updated.
|               |     5: AND,     the screen is updated.
|               |     6: OR,      the screen is updated.
|               |     7: XOR,     the screen is updated.
|               |
|               | 1 = Creates a new pic file using the contents of the
|               |     graph buffer. Any preexisting picture will be replaced.
|               | 2 = Swaps a pic file between archive and RAM. If it is now
|               |     in RAM, the output is 0, else it is some other number.
|               | 3 = Deletes a picture. This is not an undoable action,
|               |     so be cautious while using this function.
|               |
-----------------------------------------------------------------------------
|02             | identity(2,"GROUPFILENAME")
|               |
|  GETPICGROUP  | Outputs a list containing all the names of the pic files
|               | in the TI-OS group file. Each name is denoted by a number.
-----------------------------------------------------------------------------
|03             | identity(3,"GROUPFILENAME",pic_name_in_group)
|               |
|  EXTPICGROUP  | Copies a pic by name from the group and puts it into a pic
|               | file of its corresponding number. Any preexisting pic files
|               | are overwritten.
-----------------------------------------------------------------------------
|04             | identity(4,"BINSTR",xPos,yPos,Width,Height,StartX,EndX,
|               | SStartY,SEndY,Pic#,Logic,TileSize,Update_LCD,2ByteMode)
|  STRINGTILE   |
|               | See xLIB command "DrawTileMap" for information regarding
|               | the inputs. The only difference is that "Matrix_name" is
|               | replaced with "BINARYSTRING". For this, you supply a hex
|               | string converted to binary with the HEXTOBIN command.
|               | The Height and Width property of the command is used to
|               | provide a two-dimensional matrix feel to an inherently one-
|               | dimensional structure that is a string.
|               |
|               | If 2ByteMode is set to something other than 0, then the
|               | input string is considered words instead of bytes. This
|               | allows the user to use 4 hex ditgits (two bytes) per tile
|               | so up to 65536 different tiles can be accessed using this
|               | command.
|               |
|               | All other arguments function as they do with the xLIB
|               | command.
|               |
|               | As a developer, you should develop your tilemaps in hex
|               | and then use the HEXTOBIN command to convert it to the
|               | format required by this command. To edit this tilemap, you
|               | should use the EDIT1BYTE command while this tilemap is in
|               | its binary format.
|               |
|               | Note that any missing arguments will default to the value
|               | of zero (0) instead of 32 as in xLIB.
-----------------------------------------------------------------------------
|05             | identity(5,"HEXSTRING",x,y,w,h,logic,flip,update_lcd)
|               |
|  PUTSPRITE    | Works just like the xLIB command real(1,...) except that
|               | the Pic and the coordinates on that Pic file are not
|               | defined.
|               |
|               | Instead, a string consisting of hex digits is used to
|               | define the sprite as inline data. For example, if you
|               | wanted to draw a black 8*8 block at the top-left corner of
|               | the screen with XOR logic and drawn immediately...
|               |
|               | identity(5,"FFFFFFFFFFFFFFFF",0,0,1,8,3,0,1)
|               |
|               | Useful for those that want to display sprites without the
|               | use of bulky image files.
|               |
|               | For large sprites, each byte goes LEFT first, then DOWN,
|               | so specifying "80FF0180000180000180FF01" would relate to
|               | such a perfect box 3 bytes wide and 4 pixels down.
|               |
|               |
|               |
|               |
|               |
|               |
|               |
|               | Note that any missing arguments will default to the value
|               | of zero (0) instead of 32 as in xLIB.
-----------------------------------------------------------------------------
|06             | identity(6,shift_number_of_times,direction,screen_update)
|               |
|  SHIFTSCREEN  | Shifts the image on the graphbuffer a number of times in
|               | a direction indicated below.
|               |
|               |       left : 1
|               |      right : 2
|               |         up : 4
|               |    up-left : 5
|               |   up-right : 6
|               |       down : 8
|               |  down-left : 9
|               | down-right : 10
|               |
|               | If screen_update is zero, the screen will not update.
|               | Otherwise, it will update.
-----------------------------------------------------------------------------
|07             | identity(7,x_left,y_top,x_right,y_bottom,display_method)
|               |
|  DRAWBOX      | Draws a box which corners are (x_left,Y_top) and
|               | (x_right,y_bottom) using a specified display method.
|               |
|               | Since this display method code is not complete, let's say
|               | that it is xLIB-compatible with the drawshape command,
|               | minus three. Add 128 to this number and the screen will
|               | also be updated.
-----------------------------------------------------------------------------
|08             | identity(8,"HEXSTRING",Right,Down,LOGIC,UpdateLCD)
|               |
|  FILLMAP      | A command that fills the screen with the same 8 x 8 tiles
|               | as defined by 16 hex digits. Along with the right and
|               | down shift arguments, this command makes scrolling
|               | backgrounds far easier.
|               |
|               | The hexstring, as said before, is 16 digits long, 8 pairs
|               | which makes up an 8 by 8 pixel tile.
|               |
|               | The right and down arguments determine how many pixels
|               | the filled map should be shifted. You can either choose
|               | not to shift or shift in either direction up to 8 pixels.
|               | Since the routine does mod 8, you can actually have these
|               | numbers increment and decrement bounded by -65565 to 65535
|               | so you should not actually have to test for bounds save for
|               | those already mentioned.
|               |
|               | LOGIC applies a method used to write the tiles to the
|               | buffer. 0=overwrite ; 1=AND ; 2=OR ; 3=XOR
|               |
|               | If UpdateLCD is anything other than zero, the screen is
|               | updated with whatever was just written to the buffer.
|               |
|               | Additional note: The bounds are actually -99999 and 99999
|               | and it'll still function properly due to how the custom
|               | float to integer routine works. This "bug" is not likely
|               | to be fixed. It's not hurting anything. It's safe. No one
|               | is gonna wait at a menu for as long as it takes to cycle
|               | through the routine *that* many times.
-----------------------------------------------------------------------------
|09             | identity(9,x,y,w,h,Dir,Type,Repeat,LCD_update)
|               | ***NOT FULLY IMPLEMENTED YET***
|  BOXSHIFT     | This command shifts or rotates within a box-shaped area on
|               | the screen (and may be the whole screen if you want).
|               |
|               | x = top-left corner x, 0 thru 11. (each 8 pixels is a byte)
|               | y = top-left corner y, 0 thru 63.
|               | w = width of box object, 1 thru 12. Specifies byte widths.
|               | h = height of box object, 1 thru 64
|               |
|               | Dir : Each will have a basic direction followed by
|               |       what you must add to it in order to perform
|               |       a different type of shift.
|               |       left = 1
|               |      right = 2
|               |         up = 4
|               |    up-left = 5
|               |   up-right = 6
|               |       down = 8
|               |  down-left = 9
|               | down-right = 10
|               |
|               | Type: Determines what type of shifting is to take place
|               |       0 = Keep bit being shifted in
|               |       1 = Shift in a black bit (for black backgrounds)
|               |       2 = Shift in a white bit (for white backgrounds)
|               |       3 = Let bit that shifts out reappar on other side
|               |           (for scrolling backgrounds)
|               |
|               | Repeat: A number that repeats the shift operation as
|               |         many times as specified. Cannot be zero.
|               |
|               | LCD_update: If it is a number other than zero, the screen
|               |             is updated with the results.
|               |
|               | Notes: The routine does not perform clipping. All
|               |        coordinates and dimensions must remain onscreen.
|               |
|               | Tips: If you don't update the LCD, this command is real
|               |       useful for dynamically editing tilemaps by loading
|               |       them to the buffer, using this command to edit them,
|               |       then store them back to the pic file, all without the
|               |       buffer ever being updated. The procedure is fast
|               |       enough to be dismissed as a slight slowdown due to
|               |       the BASIC parser.
-----------------------------------------------------------------------------
|10             | identity(10,flag,[x,y],"TEXT")
|               |
|  DRAWTEXT     | Draws text to the graph screen with the coordinates x,y
|               | using the small font. The screen is NOT updated. If you
|               | wanted to updated it, you should've used the Text() command
|               | instead.
|               |
|               | If you omit the x,y coords, the text is drawn to the last
|               | coordinate the previous DRAWTEXT command ended up. Does not
|               | line-wrap. It's your duty to do that yourself.
|               |
|               | If you don't want the text to be modified in any way, set
|               | flag to zero. If you want to modify, you should do addition
|               | to the value using these numbers:
|               |
|               | +1 = Draw using large font.
|               | +2 = Erase 1 row of pixels below the small font base
|               | +4 = Invert text
|               | +8 = Hex string is used in place of text to use font map.
|               |      If you know the character's hex value, you can use it.
|               |      Advantage: Get chars you can't access any other way.
|               | +16= Update screen anyway. Just a throwback.
|               |
|               | Example: I want to use the large font AND invert text
|               |          at x=4 and y=8 using "THIS IS TEXT" as text.
|               | identity(10,0+1+4,4,8,"THIS IS TEXT")
|               | - or -
|               | identity(10,5,4,8,"THIS IS TEXT")
|               | [ note that the flags have been condensed ]
|               |
-----------------------------------------------------------------------------

Spoiler For version anglaise / English version:

This post is translated from English to French using "Google Translate".

Information regarding using the PicArc extension of the Celtic III app can be found in the documentation file. An English copy of that is in the codebox below.

A stand-alone version of PicArc can be found at the URL below. The instructions are also in English. Please find someone who can translate the instructions for you. I do not trust the translation enough to give proper instructions.

Keep in mind that the database produced by the standalone version is not compatible with the database that Celtic III produces.
A Cherry-Flavored Iambian draws near... what do you do? ...

Offline DJ Omnimaga

  • Former TI programmer
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55896
  • Rating: +3152/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • DJ Omnimaga Music
Re: PicArc library ?
« Reply #3 on: February 08, 2012, 10:36:42 pm »
En fait tantot Iambian voulais t'aider mais il ne comprennait pas ta question, à cause de Google Translate qui n'était pas fiable. D:

Mais en fait, si je me rapellait bien, PicArt faisait partie de Celtic III, donc l'info se trouver dans son Readme.txt.

EDIT wow ninja by 8 hours. (J'avais cet onglet ouvert depuis 4h cet après-midi et j'avais oublié de revérifier la date lol)
« Last Edit: February 08, 2012, 10:38:08 pm by DJ_O »

Offline persalteas

  • LV5 Advanced (Next: 300)
  • *****
  • Posts: 231
  • Rating: +44/-4
  • z80 poweeer
    • View Profile
    • Tout-82
Re: PicArc library ?
« Reply #4 on: February 09, 2012, 07:40:47 am »
C'est justement en étudiant le Readme de Celtic que je me suis posé la question.

Je suis en train d'apprendre Celtic III , et j'ai vu les allusions a PicArc sans comprendre ce que c'était.

C'est bon, maintenant :)

merci Iambian