Jump to content

pseudografx

Members
  • Content Count

    898
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by pseudografx


  1. that's true with the different weapons... but at the moment... we have clubs, axes and swords... and Espire8 draw the warrior with handing the weapon on the other side... like in the game Barbarian.

     

    btw... i like it... now put a helm on top and we are nearly there...what i had in mind... the armor+helm could be done with one multicolour player...the other multicolour player could be the weapon and the missles are free for the hit indicator?

    And how about the hero himself? Will it be a software sprite? Btw. the hit indicator is quite poorly visible on my LCD (though this could be because of a slow response time, it's 3 years old now!). Moreover, because of the limitations you cannot display hits over 99 damage. Will this be enough in the later levels?

    Btw. the above screenshot shows the hero barehanded. When he holds a weapon, the player shape would be different.


  2. Ok, here is the armor concept. I don't think it's too useful, because in order to make the sprite detailed, you have to change more pixels than just add a new layer. It would be probably better to redraw the whole sprite for each armor class. Reagarding weapons, you have to keep in mind that different weapons are held in a different way. You cannot hold a staff the same way as an axe.

    post-6830-1183020280.png


  3. i think its better without floor texture... but my just 2 cents...

     

    if i have time tonight i will make some tests with your gfx and get a feeling on real tv set...

     

    have you thought about my suggestion regarding to use PM for Armor/weapon? so you have "naked" player and we put pms over so we can have different weapon gfx? (clubs, axe, swords...etc)

     

    i only need 1 PM right now for the hit indicator...so rest is free of usage...

    Yes, I was thinking about it but didn't have time to try pixeling anything. Perhaps today I may save a few more minutes to try. If you could come to ICQ, we could clarify things.


  4. good work! it's really up to you guys... i am open for everthing... i also prefer the more darker colour which espire8 did in his first attempt... anything more Esipire what you think? Espire's style is more adult comic like imho... so its just a matter of taste. and i like PGs different sized monsters like the scorpion etc...

     

    i like the spider web in the corner, too... but i also like to have a "pile" when a monster is dead... ;)

     

    btw. we are not bound on font boundaries (128 chars for the gfx)... as monster sprites will be copied from the monster bank into 4-8 sprite banks when the level generator is running... as each floor will have max of 8 (32 chars when using 2x2) different monster sprites there is no need to keep all data in one font wasting space which can be used for some other details...

    The new screenshot already uses a darker shade of red so perhaps here the floor wouldn't be so distracting. Especially when the enemies are moving or being animated. But I removed it on your request :).


  5. Some small improvements...

    Waiting for feedback :)

     

    Dude, awesome graphics! Is that Antic 4, 4(5) colors?

    Thanks for the kind words and yes, it's mode4. The orange colour can be replaced with the blue, so you can make monsters with different colours (for example if you want to have same class monsters with different level). At least this was what I had in mind when drawing these :)


  6. but i am not sure if a floor texture is good choice as it makes the whole scene "brighter" and you can not see the monsters and player good enough? emkay made some good point months ago that keeping the floor "empty" to keep that mood...

    Of course you may choose to leave the floor empty. The choice is yours :-)


  7. I remember some demos on the C64 that showed a 320x400 image or text (in a single screen). The trick was that the screen has to scroll in vertical direction and while scrolling showing the different scanlines were interlacing. The same trick should be easily doable with Atari. And analogically an image with 640x200 image should be viewable (with using horizontal scrolling). Dunno if these two could be combined to create a 640x400 screen.


  8. OK,

     

    what is a battery powered Laptop without internal drives?

    Not very useful.

     

    So this is my first mod to the new machine: a CF drive.

    I have some experience with the SIO2IDE interface and some

    of my machines are equipped with it. Nice thing is, it uses

    standard FAT filesystem, so its very easy to put new files onto it.

     

    More guts to follow...

    Good job, Beetle, looking forward to more updates :-)


  9. This looks to be a great magazine, quite a lot better than most of others I've seen so far. Can't wait to see the next issue :) It's cool that the XL/XE reviews are not of minor importance to the authors.


  10. Hi, I finally found some Turbo Basic documentation in English, so here it is:

     

    TURBO BASIC COMMAND LIST

     

    Compiled and Translated by Dave and Laura Yearke

    Adjusted for on-screen reading by Zdenek Eisenhammer

     

    This documentation is provided by the Western New York Atari Users Group and may be reprinted freely provided this credit is included.

     

    Turbo BASIC, in addition to offering 42 more commands and 22 more functions than Atari BASIC, gives the user 1603 more bytes of program space by "hiding" part of itself under the XL/XE's operating system. It also runs 3 times faster than Atari BASIC, includes most DOS commands, has advanced graphics and programming functions, and is insensitive to lower case or inverse characters for most commands.

     

    TURBO BASIC COMMANDS:

     

    Name Syntax Description

     

    disk i/o

    BLOAD BLOAD "D:name" Binary loads file name (DOS option L with /N).

    BRUN BRUN "D:name" Binary loads and runs file name (DOS option L).

    DELETE DELETE "D:name" Deletes the file name (DOS option D).

    DIR DIR Disk directory (DOS option A).

    DIR "Dn:*.*" Directory of drive n, note that wildcard extenders may be used.

    LOCK LOCK "D:name" Locks the file name (DOS option F).

    RENAME RENAME "D:old,new" Renames the file name (DOS option E).

    UNLOCK UNLOCK "D:name" Unlocks the file name (DOS option G).

     

    graphics

    CIRCLE CIRCLE x,y,r Plots a circle with center at x,y and radius r.

    CIRCLE x,y,r,r2 r2 is an optional "vertical radius" for true circles or ellipses.

    CLS CLS Clears the screen.

    CLS #6 Clear screen opened in channel 6.

    FCOLOR FCOLOR n Determines fill color.

    FILLTO FILLTO x,y A fill command analagous to the BASIC commands "POSITION x,y: XIO 18,#6,0,0,"S:"

    PAINT PAINT x,y Another type of fill command, this one is a recursive routine that will fill any closed object as long as x,y are inside it.

    TEXT TEXT x,y,a$ bit-blocks text in a$ at x,y.

     

    memory

    DPOKE DPOKE m,v Pokes location m,m+1 with 2-byte integer v (0 <= v <= 65535).

    MOVE MOVE m,m1,m2 Block transfer; moves m2 (number of bytes) from starting position m to new starting position m1.

    MOVE -MOVE m,m1,m2 Same as MOVE but copies starting with the last byte of the block.

    BPUT BPUT #n,adr,len Block Put; same FOR I=0 TO len-1:PUT #n,PEEK (adr+I):NEXT I

    BGET BGET #n,adr,len Block Get; same as FOR I=0 TO len-1:GET #N,A:POKE adr+I):NEXT I

    %PUT %PUT #n,a Until now, there was no convenient way to put numeric values onto disk or cassette files other than by using PRINT, which converted them to strings first, a slow and cumbersome process. %PUT puts the number to the device "as is," in 6-byte FP format.

    %GET %GET #n,A Get a number stored with %PUT from the device and store it in variable A. Again, this is much faster than using "INPUT #n, A".

     

    structured programming

    REPEAT REPEAT Start a REPEAT-UNTIL loop.

    UNTIL UNTIL <c> Terminate when condition <c> met.

    WHILE WHILE <c> Start a WHILE-WEND loop to end when condition <c> met.

    WEND WEND Terminate a WHILE-END loop.

    ELSE ELSE Optional extension for IF. The IF condition must not be followed by a "THEN", but terminated by end-of-line or colon.

    ENDIF ENDIF Ends an IF-ELSE-ENDIF or IF-ELSE condition. Note that this allows an IF condition to span more than one BASIC line, provided the "IF" statement is structured as shown in Note 4.

    DO DO Starts an "infinite" DO loop.

    LOOP LOOP Cycle back to the start of a DO loop.

    EXIT EXIT Exit a DO-LOOP loop.

    PROC PROC name Start definition of procedure.

    ENDPROC ENDPROC End definition of procedure.

    EXEC EXEC name Execute procedure name.

     

    general programming

    PAUSE PAUSE n Pause processing for n/50 seconds.

    RENUM RENUM n,i,j Renumber the program starting at line n, first number is i, increment is j. This function will handle GOTOs, TRAPs, and all other line references except those which involve variables or computed values.

    DEL DEL n,I Delete lines n-i.

    DUMP DUMP Display all variables and values. For numeric arrays, the numbers are the DIMed values plus one. For strings, the first number is the current LENgth of it and the second number is the DIMed size of it. DUMP also lists procedure names and labels with their line values.

    DUMP name DUMP to device name, such as "P:" or "D:DUMP.DAT".

    TRACE TRACE Trace program during execution.

    TRACE - Turns trace mode off (Default).

    DSOUND DSOUND n,f,d,v Form of SOUND which activates channel-pairing for increased frequency range.

    DSOUND Turns off all sounds.

    GO TO GO TO n Alternate form of GOTO.

    *L *L Turn line-indent on (Default).

    *L - Turns line-indent off.

    *F *F (or *F +) Special mode for FOR..NEXT loops which corrects a bug in Atari BASIC. Seems that in Atari BASIC, an "illegal" reverse loop like "FOR X=2 TO 1:PRINT X:NEXT X" will execute once even though the condition is met initially (X is already greater than 1). Turbo BASIC fixes this bug, but leaves it available for Atari BASIC programs which may take advantage of it.

    *F - Turns off the special FOR..NEXT mode to make Turbo BASIC act like Atari BASIC.

    *B *B (or *B +) Command which allows the break key to be trapped via the "TRAP" command within a program.

    *B - Turns off the special BREAK key mode.

    -- -- Special form of REM which puts 30 dashes in a program listing.

     

    line labels

    # # name Assigns the current line number to the label name. This is a convenient way to get around the problem of renumbering when using variables as line numbers. Labels can be thought of as a special form of variable, as they occupy the variable name table along with the "regular" variables. We also believe that the number of variables allowed has been increased from 128 to 256 to allow for the addition of these labels.

    GO# GO# name Analagous to the GOTO command.

     

    modifications

    CLOSE CLOSE Close channels 1-7.

    DIM DIM a(n) Will automatically assign a value of zero to all elements of the numeric array being dimensioned, and null characters to all elements of a string (The LEN is still variable, however, and initially zero).

    GET GET name Wait for a key press, assign the value to name. Same as "OPEN #7,4,0,"K:":GET #7,name:CLOSE #7".

    INPUT INPUT "text";a,b... Prints text as a prompt before asking for variable(s), same as Microsoft-BASIC.

    LIST LIST n, List program from line n to end.

    ON ON a EXEC n1,n2,... Variation of ON...GOSUB for procedures. N1, n2 and so on are names of procedures to be run.

    ON a GO# n1,n2,... Similar to ON...GOTO except that line labels are used instead of line numbers.

    POP POP This command now pops the runtime stack for all four types of loops.

    PUT PUT n Same as "PRINT CHR$(n)";

    RESTORE RESTORE #name Restores the data line indicated by the label name.

    RND RND Parentheses are no longer needed at the end of this command, but it will still work if they are there.

    SOUND SOUND Turn off all sounds.

    TRAP TRAP #name TRAPs to the line referenced by the label name.

     

     

    TURBO BASIC FUNCTIONS:

     

    arithmetic/logic

    HEX$ HEX$(n) Convert n to hex string.

    DEC DEC(a$) Convert hex string A$ to decimal.

    DIV n DIV I Integer quotient of n/i.

    MOD n MOD I Integer remainder of n/i.

    FRAC FRAC(a) Fractional part of a.

    TRUNC TRUNC(a) Truncates fractional part of a.

    RAND RAND(n) Generates random number 0-n.

    $ $nnnn Allows input of hexadecimal numbers, but they are converted to decimal. Ex: "FOR I=$0600 to $067F" => "FOR I=1536 to 1663".

    & n & I 8-bit Boolean AND.

    ! n ! I 8-bit Boolean OR.

    EXOR n EXOR I 8-bit Exclusive-OR.

     

    memory

    DPEEK DPEEK(m) Double-PEEK of m,m+1.

    TIME TIME Time of day(numeric).

    TIME$ TIME$ Time of day string, HHMMSS. Unfortunately, the time commands don't work properly because they were written for European Ataris which operate at 50 Hz, instead of 60 Hz like American ones, the net result being that they gain 12 minutes each hour.

    INKEY$ INKEY$ Returns last character typed.

    INSTR INSTR(x$,a$) Returns relative location of start of string A$ within X$ (returns 0 if not found). The match must be exact; strings with the same letters but differences in case or type (normal or inverse) will not be found.

    INSTR(x$,a$,i) i specifies the starting point of the search.

    UINSTR UINSTR(x$,a$) Same as INSTR, does not distinguish between case or inverse characters. Ex: UINSTR("HeLlO", "hello") returns 1.

    UINSTR (x$,a$,i) Specifies optional starting point.

    ERR ERR Value of last error number.

    ERL ERL Line last error occurred at.

     

    constants

    %0

    %1

    %2

    %3

     

    These four constants simply stand for the numbers 0-3, respectively. The difference with using these in a program is that "X=1" requires 10 bytes, whereas "X=%1" only needs 4 (numbers require 7 bytes, 6 for the number plus an identifier preceeding it. It is always a good practice to make variables for numbers that are used more than three times in a program).

     

    NOTES:

    1. Variable, Procedure and Label names may contain the underscore (_) character.

     

    2. To print a double-quote (") in a text string, use two of them together, instead of the Atari BASIC method of using CHR$(34). Ex: "TEST";CHR$(34);"TEXT" becomes "TEST""TEXT" in Turbo-BASIC, both of which produce the output => TEST"TEXT.

     

    3. Upon initial boot-up, TURBO-BASIC looks for a BASIC file named AUTORUN.BAS. If it finds an AUTORUN.BAS file, it will automatically load and run this file.

     

    4. Turbo-BASIC also prints out English descriptions of all errors, including several new ones for errors involving the new commands:

     

    Error - 22 ?NEST = Loops not properly nested.

    Error - 23 ?WHILE = WEND with no corresponding WHILE.

    Error - 24 ?REPEAT = UNTIL with no corresponding REPEAT.

    Error - 25 ?DO = LOOP with no corresponding DO.

    Error - 26 ?EXIT = EXIT is outside a loop.

    Error - 27 ?XPROC = Error executing PROC.

    Error - 28 ?EXEC = ENDPROC with no corresponding EXEC.

    Error - 29 ?PROC = Procedure does not exist.

    Error - 30 ?# = Label does not exist.

     

    Also, Error 15 has been expanded to include an UNTIL which relates to a REPEAT which has been deleted.

     

    4. A multi-line IF is constructed like this:

     

    10 IF X > 10

    20 PRINT X-10

    30 GO# TOO_BIG

    40 ELSE

    50 PRINT X

    60 GO# X_IS_OK

    70 ENDIF

     

    Note also the use of line labels in the GOTO statements.


  11. OK ... I give up making any new Hardsynth tunes and switch to Softsynth now ;-)

    Hi emkay, could you please include SAP files in your releases? I think now with new ASAP 1.0 and SAP 2.0 the emulation is getting even closer to the real thing so there is no reason to avoid SAP emulation.


  12. I see, but Lucasfilm didn't use any polygons even for the floor/ceiling/sky, etc., I think it's really something that just isn't needed and would take up too much unneccesary processing power, especially in a 1.79Mhz 8-bit processor that was never designed to do polygons. You are thinking with too modern of a mindset. You just need the fractal engine, and then pretty much "empty space" with background colors as was done by Lucasfilm. Fractal and sprite (player/missle) graphics is all that's needed, like Lucasfilm used. And by today's standards the Lucasfilm games are already slow enough frame-rate wise, you certainly don't need to take up more processing power for even one polygon for the "floor." You could just do a fractal engine which would be "upside-down" like in the Eidelon for interior environments and then "rightside up" like Koronis Rift or ROF for exterior environments. The Eidelon already has use of multiple "sprites" or software sprites or what ever they used for the characters and power orbs in-game, there were often several on-screen at one time, and the dragaons themselves were made so large by using multiple "sprites." It's plenty fast for an RPG engine on the 8-bit, as-is, includng the "sprites" for the characters or objects.

    Still there must have been used a technique to fill quite a large area with some colour. The Koronis Rift version of the engine even fills the more distant mountains with a different shade while RoF and Eidolon both only trace the contours of the moutains/walls (so you don't actually have to fill them up). Have you got any idea how the routine works if it's not some optimized implementation of floodfill?


  13. eidolon already has "monster fights" so you can have static pic like in AR when encounter a monster. and look what they have done in their animation engine... so definitly Eidolon is the way to go... but depends of course how many ram is left as i experienced how many ram you need for tables & texts & stats etc which are needed for a RPG ;)

    It's not that hard - you just have to come up with a solution that is optimized both in performance and small footprint ;-)


  14. That would really be something to implement the Lucasfilm engine into an RPG. IMHO the principle of the engine is drawing a polygon as a floor (or sky) and then add some lines as contours of the shapes (ie. walls in the caves or slopes in the mountains). I think the slowest part is drawing the filled polygon. Once you have the scenery, you can add enemies as software sprites (I'd suggest colouring them with underlay PMG).

    This procedure will also take quite a lot of CPU time, especially if you want to draw several enemies in one scene. You can save some CPU time with using narrow playfield (which would still keep the viewport big enough). Not only will you save a few CPU cycles per every scanline, but the area to be filled will be reduced. Also the drawing routines may benefit from the multiples of 32 bytes per line.

     

    It has absolutely NOTHING to do with polygons (Lucasfilm A8 engine(s)), they are done with FRACTAL technology engines.

    Of course I may be wrong, but this is how I would try to implement it (if I was into coding 3d engines). Could be reasonably fast, perhaps even faster than the actual Lucasfilm engine.


  15. That would really be something to implement the Lucasfilm engine into an RPG. IMHO the principle of the engine is drawing a polygon as a floor (or sky) and then add some lines as contours of the shapes (ie. walls in the caves or slopes in the mountains). I think the slowest part is drawing the filled polygon. Once you have the scenery, you can add enemies as software sprites (I'd suggest colouring them with underlay PMG).

    This procedure will also take quite a lot of CPU time, especially if you want to draw several enemies in one scene. You can save some CPU time with using narrow playfield (which would still keep the viewport big enough). Not only will you save a few CPU cycles per every scanline, but the area to be filled will be reduced. Also the drawing routines may benefit from the multiples of 32 bytes per line.


  16. Sorry, an open database is not that easy to create, since no Tracker is really using it.

     

    But, If you have some questions, please write them here. I'll try to answer and help if possible.

     

    Thanks! :D

    I experiment with Raster Tracker, make music in .mod and .mid format, and import this files on Raster.

     

    http://www.atariware.cl/archivos/index.php...%20instruments/

    http://www.atariware.cl/archivos/index.php?dir=musica/

     

    Interesting it would be to create a BD equivalent to all 128 MIDI's instruments for Raster Tracker.

    If you send me the midi bank in WAV for example, I can try to make all the instruments.


  17. Ok, here's the comparison of the mockups.

    First one uses full width without different-coloured cursor, the next is the narrow screen version with white cursor but quite small map window, and the last one is a compromise, with a bit wider map window and white cursor. I think this one should be doable quite easily (not sure if BASIC is fast enough to handle it, though).

    post-6830-1179836163_thumb.png post-6830-1179836173_thumb.png post-6830-1179836169_thumb.png

×
×
  • Create New...