Subject: Re: [stella] 1 cycle! From: Andrew Towers <mariofrog@xxxxxxxxxxx> Date: Tue, 18 Mar 2003 11:02:10 +1100 |
Of course indirect LDAs in rom eat up cycles much faster than indexed zero-page ones, and since the kernel has no WSYNCs, I have to adjust it every time.. and ended up with one cycle in excess that I don't seem to be able to get rid of!
You could split the level data across 7 tables in rom (level headers in one table, 6 level columns in the other 6 tables). This way you can eliminate the indirect loads and most of the DEYs, put one table in each page, and there could potentially be 256 rows across all levels.
; --- Load pointers with next row of level data (50 cycles) LDY LevelDataPtr ; 3 ; Unrolling loop to save some cycles... LDA LevelData0,Y ; 4 STA ptr0 ; 3 LDA LevelData1,Y ; 4 STA ptr1 ; 3 LDA LevelData2,Y ; 4 STA ptr2 ; 3 LDA LevelData3,Y ; 4 STA ptr3 ; 3 LDA LevelData4,Y ; 4 STA ptr4 ; 3 LDA LevelData5,Y ; 4 STA ptr5 ; 3 DEY ; 2 adjust for next row STY LevelDataPtr ; 3 ; ---
This will save you 16 (!) cycles and a couple of bytes of ram, which IMHO more than makes up for the awkward rom layout ;)
---------------------------------------------------------------------------------------------- Archives (includes files) at http://www.biglist.com/lists/stella/archives/ Unsub & more at http://www.biglist.com/lists/stella/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [stella] 1 cycle!, Fabrizio Zavagli | Thread | Re: [stella] 1 cycle!, Dennis Debro |
Re: [stella] 1 cycle!, Manuel Polik | Date | Re: [stella] 1 cycle!, Manuel Polik |
Month |