As this Cemetech news article states, gCn via direct USB is not far from finished. Soon we wont have to have an Arduino microcontroller board or a custom AVR USBHID bridge to connect to the internet via gcn.
Due to current events and a few situations that have sprung up the staff at Omnimaga would like to remind the members of three things. 1) With the recent upsurge in new forum members using different calculator brands, starting TI vs Casio vs HP or programming language wars is not allowed and can lead to a ban 2) Omnimaga does not support attacks on other sites, and any discussion of plans of attack on another site on either the forum or IRC is immature, and extremely discouraged, and will simply tarnish the reputation of the initiator community-wide. Not only that but action will be taken against those who use Omnimaga for these plans. 3) Omnimaga will not be responsible for what incidents occur on other sites, and whenever possible, such matter should be discussed on the respective site. Thank you for your time members, remember that we are striving to build an environment free of any hostility for all. You are a key part of building this environment, and it would be a shame to have to lose any of you to ensure it's continued existence.
EeeZor is back, this time actual episodes are now being pumped out. Instead of doing the live broadcasting EeeZor is now focusing on pre-recording and using it's website to inform you. EeeZor is now in official partnership with Omnimaga. This partnership means that EeeZor will post links to news reported by Omnimaga and gives a link and advertising to it in each video.
EeeZor and Omnimaga are sister organizations, so while they operate independently they also work for the benefit of the other. EeeZor, while it does have comments on it's news articles, no competitive forum will be made, and Omnimaga will post links to the official episodes of EeeZor.
EeeZor will be aired almost every weekend and news articles will be written as often as possible on the official site. If you are interested in joining the team just contact Eeems via PM and he can consider your application. Enjoy!
My site, formerly Future history, now EeeZor that use to be located at http://future_history.freehostia.com has been relocated to http://eeezor.ec3club.tk/ Please update your bookmarks accordingly if you use any of my resources which may or may not include copies of asm in 28 days, my z80 conversion tools, and many more. I also host the source to almost all my projects there so feel free to browse the http://eeezor.ec3club.tk/vgopher.php?path=./Files directory
Please help me optimize! Here are some of the routines I've made, let me know of any optimizations I could make Thanks! Keep in mind that I use some special defines, so if you want to know what something does, feel free to ask
;draws a menu based on a table. MenuRoutine: call Flushkey call tobackbuff;store to backbuffer to save screen push hl;store input rectangle(5,4,75,61,0) \ rectangle(4,5,76,60,0);clear the box beneath the menu largeSprite(4,4,9,57,MenuImg);draw the menu item pop hl;recall the input ld a,6;set ld (penCol),a;x and ld (penRow),a;y loc call DrawWrappedString;draw it ld a,(hl);get value ld b,a;store to b for loop ld c,b;current selected position inc hl;increase to the string ld a,11;store the correct location ld (penRow),a;to y menudisploop: ld a,16;set ld (penCol),a;x ld a,(penRow);get y add a,6;go to newline ld (penRow),a;store y call DrawWrappedString;draw it djnz menudisploop;loop until b is 0 ld b,c;store amount of items back to b ld c,0;set c to first item menukeyloop: call menupickdraw;draw the menu selector lcdupdate;update the screen call Pause;wait until key is pressed call menupickdraw;erase the menu selector cp 04h;up key jr z,menuup cp 01h;down key jr z,menudown cp 0Fh;clear key jr z,menucancel cp 36h;2nd key jr z,_ cp 09h;enter key jr nz,menukeyloop _call frombackbuff;restore original screen ld a,c;check to see if c is the first item or a;skip next loop if so jr z,menujump ld b,c;b is the selected item menucancel: inc hl;increase to inc hl;the next item in the jump list djnz menucancel;repeat until at the right item menujump: call Flushkey ld a,(hl);store the value of the first part into a inc hl;increate to the second half of the address ld h,(hl);store the second part to h ld l,a;and the first to l jp (hl);jump now to the address in hl menudown: ld a,c;get the current item inc a;increase it cp b;if it is the max jr z,menukeyloop;skip next step inc c;otherwise actually increase it jr menukeyloop;then jump back menuup: ld a,c;get current item cp 0;if it is zero jr z,menukeyloop;do nothing to it dec c;otherwise decrease it jr menukeyloop;then jump back menupickdraw: push bc;don't want to effect push af;all the registers push hl;so lets push them onto the stack ld a,6;lets now set the correct x location call menusetl;and y ld b,8;and height ld ix,menupicker;and give it the right sprite call IPutSprite;draw it now! pop hl;and now we restore pop af;all the registers pop bc;back to normal that we need ret;routine done! menusetl: push af;protect af ld a,c;because we are puttin the current item into it or a;checking if it is zero jr z,++_;if so jump forward two xor a;otherwise set a to zero for some math push bc;protect current bc ld b,c;load c into b _: add a,6;add 6 to a until done with b djnz -_;loop de loop pop bc;lets get the original b back _: add a,16;add the standard 16 offset ld l,a;store it all to e pop af;reset a ret;done setting e
;outputs the string in HL at penCol and penRow and wraps it on the screen. It also allows for manual newlines with \n DrawWrappedString: ld a, (hl) inc hl cp '\n' jr z, WrapLine cp '\r' jr z, WrapPage cp '\t' jr z,Tab or a ret z b_call _VPutMap ld a,(penCol) cp 92 jr nc,WrapLine jr DrawWrappedString Tab: ld a,(penCol) add a,6 ld (penCol),a cp 55 call nc,Newline jr DrawWrappedString WrapLine: call Newline jr DrawWrappedString WrapPage: lcdupdate call pause clearlcd homeup jr DrawWrappedString
;newline, wrapps screen if necessary ;preserves af Newline: push af xor a ld (penCol),a ld a,(penRow) add a, 6 cp 55 jr nc,NewLine_top ld (penRow),a pop af ret NewLine_top: xor a ld (penRow),a pop af ret
This evening, two days of Python coding paid off, as a CALCnet-enabled TI-83+ connected to a globalCALCnet (gCn) bridge successfully joined and conversed on the EfNet IRC channel #cemetech. As mentioned previously, the gCn project allows CALCnet 2.2 networks to be joined across the internet; by pretending to be another CALCnet 2.2 network, the gCn bridge enables IRC users to chat with real calculators and vice versa. The calculator side is handled by the CALCnet Chat client written by Merthsoft and with CALCnet networki ng routines written by yours truly; the Python 'gcnirc' program connects to the gCn metahub and pretends to be another calculator running Chat. However, it also connects to IRC, and formats messages from each medium to be passed to the other. In the coming days and weeks, this bridge will be fine-tuned, additional progress and debugging of Chat will occur, and arguably most importantly, the Arduino drivers for CALCnet communication will be fine-tuned to massage out some occasional bottlenecks that keep frames (packets) jammed at the device. Please feel free to post with thoughts, suggestions, and discussions of your projects that you think should run over gCn!
;Monospaced text ;inputs: penRow=y, penCol=x, hl=pointer to null (0) terminated text DrawMonospaceString: ld a, (hl) inc hl cp '\n' jr z, monoWrapLine cp '\r' jr z, monoWrapLine cp '\t' jr z,monoTab or a ret z push af ld a,(penCol) ld b,a pop af push bc b_call _VPutMap pop bc ld a,b add a,6 ld (penCol),a cp 92 jr nc,monoWrapLine jr DrawMonospaceString monoTab: ld a,(penCol) add a,12 ld (penCol),a cp 55 call nc,Newline jr DrawMonospaceString monoWrapLine: call Newline jr DrawMonospaceString ;newline, wrapps screen if necessary ;preserves af Newline: push af xor a ld (penCol),a ld a,(penRow) add a, 6 cp 55 jr nc,NewLine_top ld (penRow),a pop af ret NewLine_top: xor a ld (penRow),a pop af retIt also parses \n and \r as a newline, which it wraps to the top of the screen if you go off the edge. \t is replaced with a double space as well. Hope some people find this useful (Oh and credit goes to SirCmpwn because I got a bunch of the code from KOS, but it is modified for TI-OS's font and to make it monospaced. I use this in TBP for text input)
Ok, so since I haven't really posted a writeup on what the story behind "The Blue Platform" is all about I'll make one now
Spoiler For "Writeup":
The world of the Blue Platform is split up into platforms rising up out of the darkness that is the ground, where no light penetrates. There are 9 platforms. Each is a different colour, and there are nine in all. In ascending order of importance they are: Black, White, Grey, Brown, Green, Yellow, Purple, Red and Blue. Each Platform is ruled over by a mage who is named after their platforms colour (ie: Black Mage, White Mage, etc). Each mage has different magic, based on their colour. The mages protect against the dark of the surface world using their magic to hold it off, but on day, the blue mage, the most powerful mage fails and the darkness infects his platform. This darkness infects all and changes them into monsters of the dark. One by one the platforms fall until it begins to encroach on the smallest platform, the weakest, the Black platform. Your task as the Black Mage is to protect your platform, but since you don't have the strength anymore you must journey to the next platform, the White platform and ask the White Mage for help. You do not know yet that the other platforms have fallen, but they have. Each time you, a living mage steps on a platform you gain the magic of the fallen mage. You must defeat the darkness and free all the platforms by defeating all their former protectors, and maybe even the ruler of the darkness himself.
So right now my plans for the game-play are as follows:
Quote
10 worlds
Platformer movement
RPG based fighting
Random encounters
Cut scenes between levels
Boss battles
Massive magic animations
Health/Mana is limited to 99 and you can't get a higher max but your attacks can become more effective
The Nspire POTY has opened on Ticalc.org. If you have a Nspire, please vote for your favorite program in the sidebar! This is the first year that the Nspire has had a POTY so go vote now!
Ok, so working on The Blue Platform, my menu routine stopped working, even though I hadn't touched it. what happens is that, when I go past the second menu item it just quits, but when I debug I can't seem to figure out why. So I'm going to the community for support, here is the program with a di \ halt right after a keypress, so to figure out how this happens, load it in an emulator, run it and press down, it will just do what I'm showing in the screenshot. Here is the code http://eeems.pastebin.com/bcaWfMt2
EDIT: ok, found where the error is happening, call menusete, when it is called for the second time after pressing down (to draw the new hand thing, first is to erase it) instead of calling the correct routine it just crashes out of the program, no idea why.
menupickdraw: push bc;don't want to effect push af;all the registers push hl;so lets push them onto the stack ld a,6;lets now set the correct x location ;-------------------------------------------------------------------------------------- call menusete;and y<<---------HERE ;-------------------------------------------------------------------------------------- ld b,8;and width ld ix,menupicker;and give it the right sprite call putSprite8xb;draw it now! pop hl;and now we restore pop af;all the registers pop bc;back to normal that we need ret;routine done!
Please post what type of Linux you use and/or what other OS you use This is to find out what OS representation we have so we know what OS's we need to put our main effort into having Oasis work on. Thanks
So as I develop this assembler I will need lots of debugging to help me, as well as people to assemble for different platforms. Right now Linux and Mac OS X are covered, and pretty soon Windows will be too, but it will be nice to have more just in case. I've tested this on Linux, and it has been tested on Mac OS X by Graphmastur, and so far all is in the green Instructions on how to get a copy of the source for yourself can be found here. If anybody wants to join the team and help keep compatibility as I work on the project, or help will the actual coding, please let me know right away.
Currently I'm working on the first pass, and any help or tips with my code would be much appreciated. This is coded in C++ and my main parsing is using a vector<string> and using a character by character check to break (easy to use a two character check by just checking one ahead in a single character check, or more if you need to check for more).