Show Posts

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 - Quigibo

Pages: 1 ... 38 39 [40] 41 42 ... 135
586
The Axe Parser Project / Re: MAX SYMBOLS error
« on: January 08, 2011, 10:41:28 pm »
The program can count it for you.  If you have texts right after eachother, they are separated by zeros.  So using the length command in a loop, you can create a routine to get a pointer to the Nth line of text.

587
The Axe Parser Project / Re: MAX SYMBOLS error
« on: January 08, 2011, 10:27:20 pm »
Its actually 153 now.  Its because they fit conveniently onto one of the buffers since each entry is 5 bytes.  768/5 = 153.  I'm already using compression so it really isn't possible to compress anymore.  Of the 5 bytes, 2 are a pointer, and the last 3 hold 4 6-bit entries for the name and type of symbol.

I'm surprised you're getting this error, that's A LOT of symbols.  You can reduce the count by relative referencing.  Like instead of:
Code: [Select]
[1234]->Str1
[5678]->Str2
[9ABC]->Str3

Disp Str1,Str2,Str3

You can do:
Code: [Select]
[1234]->Str1
[5678]
[9ABC]

Disp Str1,Str1+2,Str1+4

Also, getting rid of Lbl's that you never actually use.

588
The Axe Parser Project / Re: On-calculator app signing
« on: January 08, 2011, 06:07:48 pm »
That's probably because of the bug in 0.4.7 that causes it to not update the length field.  This has been fixed for the patch.

589
The Axe Parser Project / Re: Bug Reports
« on: January 08, 2011, 03:56:58 pm »
Yeah, maybe I'll upload a patched version since it might still be another week before the stable release.  Not much new, mostly just working on axioms.  They are much much more sophisticated now.  When it reads your assembly command, it knows each z80 instruction opcode in order to advance through it and make auto-replacements for absolute jumps, calls, and even loads under the right circumstances.

590
The Axe Parser Project / Re: Features Wishlist
« on: January 08, 2011, 03:45:31 pm »
This might have been asked before, but it would be nice to be able to put code inline. That way, if you're only executing the routines once, you can save the 15 byte call.
First of all, the most you can save by making a call inline is 4 bytes.  3 For the call, and 1 for the ret.  But many of the routines are better optimized with conditional returns and so you would often save even less than that if you were able to save anything at all.  It's a little too small of a savings to justify the complexity of another pass I think.

Runer, I have no idea how I got those numbers.  My calculator says 1800 as well.  I think I might have been compensating for interrupts, but compensated the wrong way.  I'll change it.

591
The Axe Parser Project / Re: Bug Reports
« on: January 08, 2011, 03:37:58 pm »
Ok, I've fixed all the problems mentioned so far.

592
Axe / Re: Level Editor for Graviter
« on: January 08, 2011, 04:19:30 am »
My suggestion is to save the level data into an appvar and then read the appvar from your main program.  This increases your maximum code size and makes it really easy for you to add new levels and allows for users to eventually make their own level packs.

If you absolutely need to hardcode it into the program though, you can use the new >Hex command to create an ascii string, save it to the OS Str1 or something, and then use [2nd][Rcl] to import it into your source.

593
TI Z80 / Re: Eitrix for TI-84 Plus
« on: January 07, 2011, 08:36:05 pm »
Scanning the keys yourself is actually much faster than GetCSC.  But obviously scanning all the keys is always going to be slower than scanning a single key.

Code: [Select]
:Lbl KEY
:For(A,1,56)
:ReturnIf getkey(A)
:End
:Return 0

Calling this subroutine will give A the value of the current key being pressed or 0 if nothing is pressed.

Oh, and the actual slowdown for variable key detection is so small compared to Dispgraph or sprite drawing that I would consider it negligible.  It isn't much bigger either since it only needs to add the subroutine to the program once.

594
Axe / Re: Pause game
« on: January 07, 2011, 03:41:08 pm »
Couldn't you do L1->DispGraph to avoid that?  Or possibly Copy(L1,L6,768)?  Not entirely sure how APD works...

595
ASM / Re: Assembler Directives
« on: January 06, 2011, 10:43:45 pm »
Hmm... I still have a strange problem.  The .db and .dw directives don't seem to be working.  It compiles with no errors, but I go to open the .lst file and even though the program counter is advancing correctly for the data, nothing is being outputted to the binary.  Here is an example:

Code: [Select]
   93 00:000A -  -  -  - 
   94 00:000A -  -  -  -
   95 00:000A -  -  -  -  .dw $6DBB
   96 00:000C -  -  -  - 
   97 00:000C -  -  -  -
   98 00:000C F3 -  -  -  di
   99 00:000D -  -  -  - 
  100 00:000D -  -  -  -  Loop:
  101 00:000D 3E -  -  -      ld a,1
  102 00:000F D3 -  -  -      out ($20),a
  103 00:0011 FD 21 -  -      ld iy,plotsScreen+384
  104 00:0015 21 -  -  -      ld hl,Length

The data directives aren't being added to the binary like the instructions are, I even checked the binary to make sure it wasn't just an output error with the list file, but they're not there either.

596
ASM / Re: Assembler Directives
« on: January 06, 2011, 09:16:52 pm »
Oh there was actually an error in the file... so weird TASM didn't pick it up.   One of the comments accidentally started with a colon instead of a semicolon.  Thanks for the suggestion about piping it, I forgot about that.  The errors really should be displayed at the end of the message though so you can see it in the terminal.  Should be working now.

597
ASM / Re: Assembler Directives
« on: January 06, 2011, 09:08:32 pm »
Ok, I'm trying out SPASM, but every time I try to compile, the entire "ti83plus.inc" file is highlighted in red but with no error message and the code and data sizes say 0.  What do I need to do to make my TASM z80 file SPASM compatible?

598
ASM / Assembler Directives
« on: January 06, 2011, 06:36:31 pm »
I am using TASM I think... or possibly SPASM.   The problem I am encountering is that the .org statement physically moves the code to that region instead of telling the compiler to reference all future labels from that origin.  Like for instance, if I do:

Code: [Select]
.org $0000
.dw  $F00D
.org $0000
.dw  $CAFE

The the first bytes of the executable will be $CAFE, but $F00D will be ignored.  Likewise, if I do:

Code: [Select]
.org $0000
.dw  $F00D
.org $9002
.dw  $CAFE

The first bytes will be $F00D, followed by $9000 zeros, and then $CAFE

What I would expect is that both should output just $F00D and then $CAFE as the origin should only tell the assembler what to do with labels and not to actually affect the compiled code.  Is there some other assembly directive or macro that behaves just like .org but doesn't physically move the code around?  I tried searching but I couldn't find one.

599
The Axe Parser Project / Re: Assembly Programmers - Help Axe Optimize!
« on: January 05, 2011, 10:59:54 pm »
 O.O How do you do this? You're a madman!

So I've never really used or knew what the rrd and rld instructions did.  I though thought they were some of those obscure instructions like daa, which they are, but I guess there are situations where you can use them, like with daa in the hex routine.  Awesome job there!  I can't believe I missed the push pop thing in the sprite rotation ones, that was embarrassing...  I really do like the getcalc ones, but it uses an inline self-reference.  I think because there's only one, I can easily replace it, but I'll have to make sure.   The inversion one is excellent as well.  I could have sworn I tried that same method before but couldn't get it the same size.

However, these are the concerns I have:  First, the sprite rotation commands, why did you move the ret to the middle of the routine?  It looks like that's just going to add more cycles since a conditional jr takes the same amount of cycles as a regular jr anyway.  Next, is it really a safe assumption that all ROM pages are between $7F and $FF for all current models and potentially future models?  And lastly, are you sure trying to modifying rom (unsuccessfully) has no potential side effects to things like flags and registers?

600
The Axe Parser Project / Re: Axe Parser
« on: January 05, 2011, 05:57:41 pm »
@calc84maniac: I dunno.  I think I tried unsuccessfully before, I'm using the LoadDEIndPaged bcall so I'm not sure if that's able to read from ram.  However, the file pointers are now dereferenceable so you are able to change or lookup the page number and pointer at any time.

Pages: 1 ... 38 39 [40] 41 42 ... 135