how about an option for Nemesis compression in LoadTiles (would obsolete kramlib nemesis compression) I have gotten NemDec to work in the current release, so why not add an extra parameter like NEM for NemDec to be called. TSDC would allow graphics to be compressed, or SGTD can be linked with Nemesis.dll and the output have an optional Compress option
Here are some new features for the next version of BasiEgaXorz:
A code tester. The tester will display RAM, registers, and even stuff like VRAM, VSRAM and CRAM, and a screen window, basically everything you really need when programming a Sega Genesis game, and have its own built-in all-purpose emulator. You can modify and add code as you are testing it, as well as color-code any registers. To add code, just simply type it in, and after you type ".b", ".w", or ".l", it should automatically tab to 8 characters (or you can choose the tab length). The code and registers are always there, but CRAM, VRAM, VSRAM, etc. can be hidden if needed; additionally, you can view the sequence of the last instructions executed (similar to the NES FCEUD emulator). When you get to a place where you would need to wait for a VBlank or HBlank, there should be some buttons on there to click on, so you can get out of there easily.
Commenting by putting a ";" could automatically put spaces up to a certain point, then putting the ";", and you can choose where the comment-tab point goes.
Code folding should also be possible, as well as a VDP calculator and many other features. Another feature would be adding decorative bars (solid colors or designs) with text in any large font, be it text or Sega-Genesis-style graphics (such as the Gaslight-like font in Sonic 2 for the Sega Genesis and more), to separate the sections of your code. The individual sections can be used for code folding, and each data set or subroutine can be made into a single [+]/[-] code folder, and you can color each of your sections. For instance, a section with math routines might look like:
1 MATH ROUTINES [+] Multiply_32 ($004B8E) [+] Divide_32 [+] Multiply_64 [+] Divide_64 [+] Sine [+] Cosine [+] Tangent
The "1" would be bigger than the characters. You can use any font, or make your own font using Sega-Genesis-style characters (like the Gaslight-like Title Card font in Sonic 2 for the Sega Genesis). Another thing, the Math Routines header above might be encased in a long, thick colored bar of your choice, like, for example, a blue one. You get to pick the RGB values for each of these routines (24-bit True Color or 9-bit Sega Genesis format). You could also use patterns, stored as GIFs or PNGs for example. You can add lines (of various styles) in between sections of a subroutine to make it easier to understand.
When you click one of those [+] symbols, the code appears, and you can have the "Asm" and "End Asm" put there automatically if you choose. The "($004B8E)" is just an example; it is the ROM address of the routines. This will be updated every time you compile the ROM. You can compile individual routines temporarily for debugging using the code tester.
You could also make a display of RAM addresses (variables) and ROM addresses (labels), which you can copy to a clipboard.
There could also be a feature to "commonize" code; after compiling, if a certain amount of contiguous code is exactly or essentially the same, it could be "commonized" into one piece of code ending in an RTS.
You could also configure the $200-byte header, as you wish, with a gray dialog box at the very beginning of the BasiEgaXorz file. You could also make your own tilesets and have them display as tilesets or hex, and you can use the four different kinds of compression and decompression (Kosinski, Nemesis, Enigma, and Saxman). In the image editor, you can edit individual tiles or put them together, and you could swap color indices (usually if you import graphics, you might want to change their color indices in their 16-color palette).
BEX uses ':s for comments. The section systems would mean WAY much work for DevSter. You can edit the header with an specific OPTION. You can link to emulators and there's an button on the IDE to run the emulator such as Gens KMod. BEX already optimizes code. (Use the ASM output option and look at your basic.s file) ROM viewer/sections with adresses would probably be hard to implement and even it succeed, it will be slow. (having to recompile and assemble each time you made an edit) Variable viewer display already exist.' And if you want bars: '=============================================================== Your suggestions are fantasy.. And for adding code while testing it, it would crash (remember the PC)
I doubt some of your suggestions are possible... Too much work for DevSter. Remember that BasiEgaXorz is an BASIC compiler, not an assembly editor.
Post by oompa loompa on Apr 22, 2010 13:28:05 GMT -5
Yes, I already have a lot on my plate to work with
You can make very decent stuff without all those features - I mean "back in the days", people use to do it all the time. I still use a plain old text editor with Yellow/Blue colors to do all my assembly coding
I haven't even touched the source, or hooked up my dev computer to work on BEX. I was in the middle of a new ImaGenesis on my main computer, and then paused it for a little bit
To start off, you could just do the code tester, which could just be a separate application, and as for adding code, if you would go past the end of the code, it would just stop there; when you add more code while using the code tester, it will automatically compile and it can continue. For adding comments, you can add the ' or ; symbols; you can choose the point where the tab would go to. To add labels, you can put things such as @1, @2, etc., or a label name. You can make it output the code like it would appear in BasiEgaXorz (similar to the way it works in ImaGenesis), be it in Basic or Assembly format, which you can copy to the clipboard and paste in your BasiEgaXorz project.
I agree with open source, would help things. Not to mention ImaGenesis, that thing just keeps giving out completely wrong palettes and screws up my tiles no matter what all the time. Really needs an update since there's no other alternatives out there at the moment, that I know of anyway.
Suggestion: DrawTiles with 16 bit integer support Reasons: DrawTiles as it is cannot use all 1343 available tiles as opposed to the DrawTile or ReadTile command. Since DrawTiles is robust enough to use different sets of tiles to draw this limits its potential greatly. Limiting it to the first 256 tiles also means you'll be fighting with the ASCII font for useable tiles. Workaround: Allow "palettes" of tiles such that palette 2 would have tiles from 256-511.
I really, really don't want to recreate the DrawTiles command wtih a huge, complicated for .. next loop. I don't think I could duplicate all the features (much less the speed) anyway
Last Edit: Jun 26, 2011 14:24:31 GMT -5 by theloon
Post by memorydump on Jul 19, 2011 22:55:47 GMT -5
Hey devster, I'm just wondering, are there plans to ever release another version of BEX with more features?
I know you probably have other projects plus are busy in real life, so I understand how there hasn't been a new one YET, but I'm just wondering if you do at least intend to try to get to it someday, or are you satisfied with the compiler staying in its present state and anyone wanting more moving on to C or ASM?
here are my suggestions: BLOAD command (like the Apple II counterpart, but instead for sega cd games, loads a a file off of a cd like a data command) example: BLOAD Level1.bin
ON ... GOSUB ..., ... (that is an old basic classic, a branch that dynamically branches to a subroutine based on what the output of a variable is, i.e if it is one, branch off to the first label in the command, if it is 2, use the second one, ...) example: ON GameScreen& GOTO SegaScreen, TitleScreen, PasswordScreen, Demo, Level the asm way to do the exact same thing is this:
ON ... GOTO ..., ... (just like the ON ... GOSUB thing above, but with GOTO instead) example: ON ItemType GOTO ExtraLife, Heart, TenPoints
allow reload/restore to use offsets, i.e. Foo+5 meaning to move the data pointer 5 elements over from the label itself, very useful when loading level init data since you no longer need to allocate an array in memory and waste space. example: RESTORE Song+MusicOffset%
WHILE...WEND if you dont have that one already, please add it, that allows loops that continue while a condition is true. example: WHILE Lives > 0 GOSUB Level WEND GOTO GameOver
BREAK command that leaves a loop on command. useful if a variable that is not the loop's main variable is set to a certain value and you need to exit the loop because of that. should function a lot like the RETURN command, just for loops.