This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
Messages - adrusi
1
« on: December 17, 2013, 09:06:33 pm »
I'm setting up WabbitEmu on mac and need to figure out how to create a rom image from an operating system file. The official documentation just suggests using the windows version to generation the image, but that's not going to work for me right now. I tried running the windows version with wine, but to no avail. I know I managed to do this once before, so it's possible, I just can't remember how. Help?
2
« on: June 19, 2013, 07:36:42 pm »
FORTH take some getting used to. Learning to manipulate the stack to do exactly what you want without pondering it for a couple minutes will require you to seriously dive into the language and do some real work in it. After that it's not too bad. In some ways forth is actually easier. For one thing, the language has relatively few operations and no pointer management.
Yes it does. Though not used nearly as often as in other languages, FORTH has variables, and they are used as pointers (declaring a variable defines a word that pushes the address of the variable to the stack, and you can manipulate it like any other number on the stack).
3
« on: June 19, 2013, 06:14:55 pm »
yeah, what I've been working on on and off for the past couple of days is getting code to compile for multiple targets: the standard ti provided OS, GlassOS and a simulator for posix systems (for debugging). Hopefully this will allow for a large audience, support glassos, and provide a framework for future developers wanting to take a similar approach.
4
« on: June 13, 2013, 04:51:23 pm »
I *think* Ahelper was saying there might be a way to get SDCC to output code that was compatible with TI-OS (is this what you mean by AOS?). I think if you release this as a GlassOS exclusive, your audience will be next to zero. IIRC, it can't be dual booted with TI-OS, and as far as I know, it is pretty far from a release. Nothing against GlassOS, but if anything, I'd suggest a dual release.
Yeah, I know. I'm fine with no audience. However, you bring up a good point with the dual release. with a bit of conditional compilation and a separate rel file, it should be possible to compile it for multiple targets.
5
« on: June 12, 2013, 10:23:16 pm »
If you write it in C on the computer, will you try to update the Axe version simultaneously too so we don't have to wait until the C version is completed before the calc version even starts being worked on?
Else, another idea could be to use SDCC (like AHelper is doing for his TI-84+ OS on Cemetech) so you can write the calc version in C as well. I heard that calc C is a bit slower, but nobody really ever tried making the same program in both calc languages to compare afterward.
I like that idea. I also like GlassOS, and I want to see it be successful. I'm considering developing isaac for GlassOS, to support it, even though that would mean a much smaller player base. If anyone sane is going to decide to switch to it, it's going to need to need some seed programs. However from what I've heard, the linking tool isn't building right now, or at least something is broken. I'll get in contact with ahelper to see if there's some work around or if I can help fix it. Sorry if this disappoints anyone wanting to see this project on AOS, but I think this is the direction I'll take the project.
6
« on: June 07, 2013, 04:48:48 pm »
Using an appvar (or any other variable but appvars are best since you can name them as you want and have them the size you want) is not really processor demanding. And you only need to provide its name once in the program since then it is repered by a pointer and no longer by its name (except if you lost that pointer and need to find it back). Here is an excellent tutorial about appvars (and external vars in general). Also, as StreetWalker said, when you need a lot of RAM, you don't really have the choice, you have to use those if you don't want you array to be in parts.
what I mean is that you can't really use GetCalc as malloc in situations like these: entity **collision(entity e) { entity **es = malloc(sizeof(entity *) * 16); int cursor = 0; for (int i = 0; i < num_entities; i++) if (collision_exists(entities[i], e)) { es[cursor++] = &entities[i]; } return es; } Which is the primary use of malloc in modern C. GetCalc is mainly used if you need persistant data (I don't), or if you need more ram than you can get away with statically allocating with Buff (I do). I suppose it's possible to use a hack and dynamically generate names for appvars, store the name somewhere in the pointed memory block, and free it with DelVar using that name, but that's inefficient and unrealistic. This is an off-topic discussion, and I feel like this isn't really the place for it.
7
« on: June 06, 2013, 05:00:27 pm »
In Axe you have getCalc which is equivalent to malloc.
but you can't use getCalc without providing a name for an OS var, right? That's not really practical for anything other than global arrays, and besides, it's best to avoid dynamic memory allocation if possible, I'm sure it's quite expensive on the calculators.
8
« on: June 06, 2013, 04:15:18 pm »
I'm thinking of writing it in C on computer first where it's a lot easier to make changes, then porting it to axe.
Lolwut ? This prolly isn't a good idea because Axe is way different than C.
Axe is missing a lot of higher-level features that C has, like types and structures, but the low-level features of C and Axe like program flow, arithmetic, and memory access make them quite similar. C is probably the most similar major programming language to Axe.
If you want to write something in C and later port it to Axe, just be careful not to rely too heavily on features that Axe doesn't support or that you can't easily enough mimic with your own code.
right, I'm thinking in axe, but writing in C. I'm not using stuff like malloc which don't exist in axe. It's all fixed length arrays and such. C just helps keep it organized, so I don't have to think about name conflicts at the same time as I think about algorithms and such (and I can see more of the code at once). I'm hosting the code on github in case anyone's interested. I'm trying to simulate the environment on calc as realistically as practical without using an emulator or something. Maybe some of the functions I write will be handy for others approaching an axe or asm project similarly. https://github.com/adrusi/Isaac
9
« on: June 05, 2013, 09:59:24 pm »
The Binding of Isaac is a game with an incredible amount of complexity; you should probably figure out each and every detail before you actually start working on the project. As for your mockups, you might do with making the hearts smaller, but it looks fine to me.
I'm thinking of writing it in C on computer first where it's a lot easier to make changes, then porting it to axe. As for the hearts, I'm a bit concerned that the playing area is too small. I initially wasn't showing the coin, bomb and key counts, figuring that I'd display them when some key is pressed. I ended up opting to reduce the size vertically too for the sake of odd-numbered sides. Otherwise it's harder to center the doors and make interesting room designs. If anyone has any other suggestions, it'd be great to have a better solution.
10
« on: June 04, 2013, 10:07:59 pm »
Maybe you could have preset rooms, but selected via a random number... So, if you have 13 room layouts, then each room could be assigned to a number? Not sure what calculator you're programming it for though. Also, have a number stored to memory, and after, say, 3 rooms or so, it would put the entry to the next level in a room that you have not entered. That eliminates the fact that you could just go into 1 room and find the way to the next level. Still though, not sure what calc your using.
Yeah, it will have 16 or 32 room presets, just like the original game has preset room configurations, but what I'm concerned about is arranging the rooms on the map of the floor. Every room has to be reachable, each floor has to have certain types of special rooms (item room, boss room, shop, maybe secret room). Some rooms also need to be placed specially on the map. The boss and item room have to share exactly one side with another room, secret rooms (if I implement them) can't block the way to the rest of the floor (there has to be a way to get from one side of the floor to the next without breaking into a secret room).
11
« on: June 04, 2013, 08:54:12 pm »
I'm planning on making a roguelike heavily inspired by The Binding Of Isaac.
There's going to be a lot fewer items, which will be mostly limited to stat upgrades. There will also be a lot fewer enemies, bosses, etc. There just isn't enough memory, and even if there were I'm not willing to implement anywhere near as many as the original game has.
I think I have a decent scheme for representing the map, where I can store each room in only 2 bytes. However, I'm not quite sure how to approach generating the map in a way that resembles the labyrinthine nature of the original game. Any suggestions?
Here's a picture of the interface as it currently stands.
Edit: This is for the z80 series calcs.
12
« on: June 04, 2013, 06:32:32 pm »
suggestion: make it auto-create the os pic vars on starting if they don't exist
other than that, nice update
Fixed. Just for the hell of it, I also included a executable compiled for no shell. I also made it a bit safer at the cost of long startup and exit times. It used to keep the OS picvars in RAM while the program was running, this of course makes ram clears during the program's execution a problem. Now it operates on a temporary buffer which is copied to and from archived picvars on startup and exit. Even with fast mem timings enabled, it can take upwards of 10 seconds (since if has to write to the archive). Personally I think it's worth it. The primary intention for the tool is making sprites for games, and if you loose your game's sprites, it might just ruin your day. Edit: the program prefixed with a theta is the Axe source, and the other one is the executable.
13
« on: June 04, 2013, 03:08:09 pm »
Update: - Added support for masks.
- The OS var "Pic7" must exist either in RAM or archive just like "Pic5" and "Pic6" or else it won't run.
- Press F5 to toggle the selected pixel in the mask, it will be marked with a + in the editing area and the actual mask sprite will be displayed above the grayscale sprite.
Using masks in Axe: First you have to load all the sprites into your executable, so:
[Pic5ʳ]→Pic0 [Pic6ʳ]→Pic1 [Pic7ʳ]→Pic2 Then I find it convenient to have a subroutine abstract the sprite drawing (and you can manually inline during profiling):
Lbl PTON r3*8→r3 Pt-And(r1, r2, r3+Pic2) Pt-And(r1, r2, r3+Pic2)ʳ Pt-On(r1, r2, r3+Pic0) Pt-On(r1, r2, r3+Pic0)ʳ Return
14
« on: May 30, 2013, 07:51:04 pm »
Sorry, I should have put this in the original post. It expects the OS vars "Pic3" and "Pic4" to be defined. If they're not it should display an error message, but it might have gotten erased immediately, I haven't tested that since I wrote that code yesterday when I started. The screen glitching out is probably it trying to display the undefined picvars.
Just do StorePic 3:StorePic 4 before running it. I guess the program should do that by itself, but whatever. It will work with the picvars from archive though.
The program file with the theta is the Axe source code and the other one is an actual runnable assembly program.
15
« on: May 30, 2013, 05:09:52 pm »
I made a little 4-level grayscale picture editor. It operates on the OS vars Pic3 (back buffer) and Pic4 (main buffer), which can both be either in ram or archive. It's nothing special, but it's (hopefully) the last little project I do before I make something a bit bigger and more unique. That said, it's a decent tool and might be nice if you want to doodle with something a bit more than the TIOS drawing tools. Controls: - F1, F2, F3 and F4 set the color to draw with. F1 is black and F4 is white. White is the default, which can be confusing since it looks like it's not drawing anything at first. I probably should have initialized it to black, but I'm lazy.
- 0 enters pixel mode, which sets the pixel under the cursor to the selected color when 2nd is held.
- 1 enters line mode, which draws lines of the specified color. Hit 2nd to set the endpoints. Hit mode to cancel a started line.
- 2 enters rectangle mode, which draws a filled rectangle. Hit 2nd to set the corners. Hit mode to cancel a started rectangle.
- Hold alpha to speed up cursor movements, useful when moving to the opposite side of the screen or if there's lag caused by drawing large lines or rectangles.
|