oompa loompa
I AM THE GOVERNATOR
"Git 'Er Dun!"
Posts: 1,301
|
Post by oompa loompa on Dec 25, 2007 16:27:56 GMT -5
Meery Christmas everyone! Today, I've decided to release v1.00 of the BasiEgaXorz compiler. Some of it is still incomplete, and I know there are a few bugs that still exist. Feel free to download it from devster.monkeeh.com/sega/basiegaxorz/basiegaxorz100.exeThis is the basiegaxorz version that everyone has been waiting for! It supports user defined subs/functions, and multidimensional arrays. I have not updated the website for this update. For now, this is for the good forum users. Future revisions will be released to fix the examples, and fix some bugs. enjoy !
|
|
|
Post by Mairtrus on Dec 25, 2007 17:45:16 GMT -5
Merry Christmas to you too, Devster . Wow , finally, the new version of BasiEgaXorz, long-awaited by all your fans (myself included). It's really great. I have been doing some tests and new commands work really well, especially the subs / function defined by the user. Possibly in the future you could add routines to store data in external files, and so keep scores, savegames, and so on.EDIT: Stupid, stupid me You has added the functions WriteP and ReadP. I love you, man. ¡¡Merry Christmas to all!! .
|
|
mdk137
Moldy Popcorn
Posts: 36
|
Post by mdk137 on Dec 25, 2007 18:09:39 GMT -5
Merry Christmas to you Devster and everybody!!! Finally a new version of the Basiegaxorz!!! ;D Thanks for the great Christmas present!!!
|
|
|
Post by Tom Maneiro on Dec 26, 2007 10:39:39 GMT -5
Is there a manual ;D Checked... Where in the world are the 32X functions? I want to code my anime slideshow now! Time to do some serious coding there! Expect some bugreports later, and enjoy the X-Mas!
|
|
oompa loompa
I AM THE GOVERNATOR
"Git 'Er Dun!"
Posts: 1,301
|
Post by oompa loompa on Dec 27, 2007 0:31:18 GMT -5
Okay, I have a 32x section for the document typed up I already found bugs in this release. Like, Galaxian will crash when playing the second level. I think that bug has been around for a while already (?). Level 1 of galaxian was never suppose to be colored blue also, it was suppose to be white . Anyways, I have a revision version already made up - we'll see if other bugs are still around Also, if anyone has downloaded v1.00, message here! I want to know how many people are already using the latest and greatest compiler
|
|
zephyr
Burger Head
Delphi & Turbo Pascal Coder
Posts: 22
|
Post by zephyr on Dec 27, 2007 3:33:52 GMT -5
Merry Christmas to everybody!!! I'am waiting it... I download it now!!! Thank's for new version!!! Its time for REAL CODING!! PS: wait for new demo/game from me soon...
|
|
|
Post by Tom Maneiro on Dec 27, 2007 15:23:21 GMT -5
OH, NO!!! PLACAMASTER is BROKEN on BEX 1.0!!! Steps to reproduce the bug: - Boot the "game" and hit START - Pick a plate type - Hit A for a random plate, or B for a customized one (and put your text!) - You will see a blank plate (of the selected type), and... - BOOM! "68K Illegal Instruction (START:reset)"Time to debug that beast! UPDATE: The bug seems to be in a gosub/return called inside a loop: the first time it works, but crashes just after the return! Here is the piece of code where my program dies: 'PLACAMASTER.bex line 1727 'una vez cargada y configurada la plantilla 'la mostramos en pantalla ink 1 drawtilesinc 256, 4, 6, 32, 16 'Ahora dibujaremos el serial de la placa 'usando la fuente de letras grandes ink 2 setgfxplane scroll_a for i = 0 to 6 [b]gosub loadletra [i]'it dies here, just after the "return" on "loadletra", line 2063[/i][/b] drawtilesinc 768 + (i * 32), (i * 4) + 6, 10, 4, 8 next ink 0 return
UPDATE 2: CrazyBus still compiles and runs fine, although you need to disable label checks on options (otherwise, it will not compile due to "missing labels"). Oh, the "No-SNASM68k when BEX is in drive C but project is in drive E" bug is still there.... and the workaround is still the same: load the file, exit BEX, load the file again from "Recent files".
|
|
oompa loompa
I AM THE GOVERNATOR
"Git 'Er Dun!"
Posts: 1,301
|
Post by oompa loompa on Dec 27, 2007 15:49:14 GMT -5
i'm debugging it too, and it looks like something overwrote the return address in the stack
i'll be working on the compiler + some other genesis things all day today
|
|
|
Post by Tom Maneiro on Dec 27, 2007 15:51:34 GMT -5
Stack overflow/trashing? Sounds like a security bug in the *nix world
|
|
oompa loompa
I AM THE GOVERNATOR
"Git 'Er Dun!"
Posts: 1,301
|
Post by oompa loompa on Dec 27, 2007 16:01:38 GMT -5
the bug is in: ldltr = asc(mid$(placa$, i, 1)) edit: in the new compiler, the compiler has the ability to turn strings into an array of bytes. eg: ldtr=placa$(i) is the equivalent to the above line of code. if you add one more dimmension to a string data type, the compiler will treat it as an array of bytes, which makes it easy to access the individual characters, without having to use mid$ every time i dunno if this is documented? i think i spent a long time making a seperate multidimmensional arrays section in the document, but i dunno if i addressed the "byte" data type array. this is definitely not "ANSI" BASIC , it will only work in basiegaxorz edit #2: okay, i fixed the bug with the mid$ function messing up the stack. the fix will be released in the next revision
|
|
|
Post by Tom Maneiro on Dec 27, 2007 16:22:53 GMT -5
in the new compiler, the compiler has the ability to turn strings into an array of bytes. eg: ldtr=placa$(i) is the equivalent to the above line of code. if you add one more dimmension to a string data type, the compiler will treat it as an array of bytes, which makes it easy to access the individual characters, without having to use mid$ every time Sweet! That's very handy when working with strings, like in C or Java ;D After all strings are just arrays of bytes. Anyway, since BEX now supports subs/functions, i will rewrite PLACAMASTER to take advantage of that (hopefully this will lead to not-so-messy code ;D)
|
|
oompa loompa
I AM THE GOVERNATOR
"Git 'Er Dun!"
Posts: 1,301
|
Post by oompa loompa on Dec 27, 2007 17:06:27 GMT -5
fixed the current drive bug in the next revision
|
|
|
Post by Mairtrus on Dec 27, 2007 17:29:17 GMT -5
I have a question about the Fake Variables: When I try to compile the example that comes with BEX v1.00, I get an error message that says (among other things) "[...] or a label (label checking must be enabled in options to do this)". My question is, how to fuck can I solve this? I tried everything and I can not achieve that compile the ROM.
|
|
|
Post by Tom Maneiro on Dec 27, 2007 18:04:54 GMT -5
Hit F7-> click "Compiler Options", untick "Disable line number/label checking" (the first checkbox on that page). Hit OK, and you're done. EDIT: it has NO effect! It seems to be an error in the code:
Error message on 0.26: Line 10: Variable Address value cannot be 0, and has to be an integer/long constant
Error message on 1.00: Line 10: Invalid variable offset location! Expecting @ or * for current data location, or a label (label checking must be enabled in options to do this)
The offending line 10 on examples/fake_variables.bex:
dim a(2) as string*4 at pop
Ah, PLACAMASTER is fixed, thanks... although there is still some room for optimizations.
|
|
oompa loompa
I AM THE GOVERNATOR
"Git 'Er Dun!"
Posts: 1,301
|
Post by oompa loompa on Dec 27, 2007 18:25:15 GMT -5
Hit F7-> click "Compiler Options", untick "Disable line number/label checking" (the first checkbox on that page). Hit OK, and you're done. EDIT: it has NO effect! It seems to be an error in the code: Error message on 0.26: Line 10: Variable Address value cannot be 0, and has to be an integer/long constantError message on 1.00: Line 10: Invalid variable offset location! Expecting @ or * for current data location, or a label (label checking must be enabled in options to do this)The offending line 10 on examples/fake_variables.bex: dim a(2) as string*4 at pop It compiles okay for me. The "disable begining line numbers/labels check" in the compiler options in the options dialog has to be unticked. It won't work in v0.26, since this is a v1.00 feature. fake variables don't really work well for strings, as this example shows. for those that are wondering what fake variables do, fake varaibles transform data statements into variables (that can't be written to, though). this is great for accessing memory in an array style, and it doesn't use up any ram. this doesn't work very well with strings because all your strings in a data statement have to be the same length, and exactly the same size as the variable. i was planning to release the command, datastr, which would set the size of your strings to be exactly like the variable, but it is hard to implement, since i need to create a way to interpret single characters in the data statement. datastr should be out in the next revision. other than that, use fake variables with integer, and long data types, or be very careful with sizes when using with strings
|
|