Trajed V0.18 by Genesis Project [web]
This archive is always to be found in a safe version at: http://dl.datalephant.net/trajed.rar System requirements: Tested on Windows XP SP3 32, min 1024x900 pix screen resolution. This is alpha software. If you decide to use this, you do so at you own risk. The author takes no liabilty for anything. ;---------------------------------------------------------------------------------- important note: i had to quickly write this during my c64 demo coding efforts. clearly: i know that my coding is suboptimal and that the logic and layout and overall usage of the language suck. i know there are some very unusual and complex ways to solve problems, that rather cause new problems than actually help. BUT. this works. and i had the idea first. and i made it happen. if you don´t like it, do not use it. simple. program name: trajed v1.08 c=64 hard scrolling trajectory editor program type: other platform demo tool creator: (c) 2012 by wertstahl ([email protected] || www.wertstahl.de) abstract: visually construct hard-scrolling methods and generate 6510 assembler speedcode for use on the commodore c64 (main target) system: sourcecode: blitzbasic (blitz3d) windows xp pro 32bit uses Blitz3D Filerequester (2.Update) by MPZ !!! ;---------------------------------------------------------------------------------- version history: v1.08 (build 12) minor changes prior to public release v1.08 (build 11) added an option to infuse an "AND #$0F" operation in the sourcecode or binary export, so that after every LDA $xxxx an AND#$0f will remove the high nybble, which is quite handy for multicolor color-ram scrolling. v1.07a (build 10) submenu behaviour simplified v1.07a (build 9) increased number of max instructions to 2250 v1.07a -- bugfix: memory access violation after loading a project fixed - note: v1.06a projects will not load correctly anymore. bugfix: field 0,0 would be empty after loading todo: field 0,0 cannot be clicked on after startup or loading. - workaround: start somewhere else. dox changed. v1.06a -- 1st fully functional release ;---------------------------------------------------------------------------------- introduction: Trajed was done for this: if you want to make some scrolling on the c64, you will typically first soft scroll the screen by manipulating either $D011 or $D016. and then, in case you use the very common and typical charset-scrolling, you want to hard scroll all the stuff on the screen one char in the direction you desire and then reset the soft scrolling position and start over with the soft scrolling. you can also want to only hardscroll every frame which is the same as softscrolling 8 pixels in hires or 4 in multicolor. for vertical, horizontal, diagonal or even mathematical sine, triangle whatever directions you can write simple routines that write you speedcode. because doing this by using loops is wasting raster time, which you don´t have that much of, because of all of the other fancy effects on the screen and so on. you can also want to scroll the color ram at $d800, for example. same as above. but what, if the scrolling trajectory you desire is, lets say, not easy to grasp by using math? what if you have so many different directions, you want to scroll parts of the screen in, that you would rather procrastinate a little more than even THINK about coding a new program. because i am such a lazy bastard and i totally suck at math, that is why i wrote this editor. you can now freely copy any cell on the screen anywhere. without math. without planning. just click the desired source and target (one after the other) and then export a nice sourcecode or binary. unrolled speedcode. ;---------------------------------------------------------------------------------- quickdocs: so. how does it work? if you´re on windows (tested on xp pro, 32 bit, sp3, 2gb ram, 1024x960 screen minimum): doubleclick the trajed.exe and after starting up, you should see the TRAJED screen, filled with blue squares and below that, the status display. you should have some good understanding of 6510 assembler and how scrolling works and just need to always remember this: work *backwards*. the scheme should always be: source1 target to source0, source2 target to source1... source3 target to source2... and so on. the editor will always auto toggle from setting sources to setting targets back and forth, so you just can click and pick your way through the screen. OFCOURSE: you should write down the "entry points" for new information and after each scroll write some new information (i.e. new byte of scrolltext, new byte of color) to respective entry points. an entry point is not something you will find in the editor. i just made this description up here, for explanatory reasons! _you_ must take care that your new data will be written on the screen. entry points are usually easy to spot since they are the only fields on the screen that you only READ of. (marked by the symbol that shows an arrow going up out of a circle (or two arrows if you have multiple reads from one field, in free logic mode). specific example: if you write a horizontal (right to left) one-lined text scroller, if you scroll in the line $0400, your "entry point" for new data, is usually the very right field of that line. (in that case it would be $0427). if you recreated this scroller in TRAJED, forementioned entry point would easily be to spot, since it is the last field you read from. (simple!) if you did it "wrong" for example, all the data will just pass very quickly to the very last position and you see no movement at all. really: write a normal horizontal scroller first, before you attempt to use this tool, or you will think that the editor is complicated. if you know all this: good. (it is actually really very very simple.) general keys: ;------------ press <h> for help (this is propably all you need to know). <LMB> sets a source and then a target. and then a source and a target. always in exchange. <RMB> will draw you some guides. these do nothing but are orientation-points. <DEL> will undo step by step till everything is gone. no undo for the guides. i thought it would be cool if the last action you finished would blink. thats why it does, so you can see where you were. <x> will flush all and you can start over. note: guides will stay. i thought that would be useful. (to really flush everything, just load the empty_default project). <esc> will attempt to quit with a "not yet saved" (if true) warning. if already saved, quits immedately. better dont rely on it. <o> will open a saved project <s> will save a project in a custom .traj format (guides are saved, too, base adress is not) editing logic: ;-------------- <l> (lowercase L) Switch editing "logic" this is an important function. if you want to create stuff that is of extended logic, you must switch the logic restrictions by pressing <l> certain order of operations does not make sense, but you could want to have it, so press <l> to toggle the mode. normally you would want to always give new data to certain fields to have some good visual movement action going on. but you could also want to just let everything loop around. its not among the logical things to do, so, first just work in the restricted mode, THEN press <l> to switch to free mode, place your commands wisely and after that i recommend you switch back by pressing <l> again, so you dont accidentally do things you wouldnt want to happen. there is a very nice diagram in the <h> help that explains what the logic does in detail. visual relocation: ;-------------- <SPACE> is one of the functions i love most, you can relocate your entire stuff here. imagine you aimed wrong in the beginning. and now you reach the border and see damn, i am out of center. just press space and move everything a little in the direction you desire. i _love_ it. export submenu: ;-------------- <g> will give you the export screen. press <t> to test your trajectory. you will see an image which is broken down into 24x24 pix, emulating the dimensions of the c64 screen and all the commands you set will scroll the picture around (hopefully). the picture you see can easily be replaced by editing the picture in the base directory of TRAJED, called "testarea960x600.png" WARNING: if that picture is not in the given name, size and file format, trajed won´t find it and will not start! 960x600 gives you 40x25 blocks of 24x24 pixels. some options will be displayed at the bottom of the screen. press <d> to toggle the data mode you desire for your exported code - preformatted cross-assembler text - plain 8bit binary !!C=64 loading bytes will NOT be included!! if you try to load this binary on the c64 with the regular kernel loader, it will most likely start loading to the zeropage or even worse! press <b> to set the base adress for your range of operation. this means: trajed code is ofcourse memory location independet. but you need to set the lowest adress of the screen, represented by the top left corner of the editor screen to tell trajed which part of the memory you want to scroll. examples: $0400 (c64 text base) $d800 (c64 color ram base) press <a> to toggle the AND #$0f infusion this will add two bytes after each three byte lda instruction, and is necessary for cases in which you want to read from the color ram. because if you do so, reading from $d800 will give you bus garbage in the high nybble, which can corrupt your multicolor mode dispay, if written back without being purged. so if you want to colorscroll and your screen is multicolor, set this function to ON. otherwise, for speed reasons, leave this OFF! press <w> to open the export dialog and write your file. ;---------------------------------------------------------------------------------- disclaimer/copyright/support/notes: I can only give very limited support for this. If you need support because you found a gnasty bug, you can write to [email protected] (usually i answer within an hour) This thing is written in Blitz Basic, Blitz3d, to be exact. You can ask me for the sourcecode. Please have fun with it, please feel free to use the results in any way you desire. TRAJED is freeware. Credits appreciated. Redistribution only if unchanged + completely free of charge. Redistribution only if the access to the archive is free. Inclusion in commercial products (software collections ect.) only by written permission. Sale strictly forbidden. Thanks to MPZ for publishing his system requester function on blitzbasic.com (c)2012 by Sebastian I. Hartmann aka Wertstahl (yes, from the band). ;----------------- EOF
[ back to the prod ]