Re: [stella] Qb: v1.00 (alpha #1)

Subject: Re: [stella] Qb: v1.00 (alpha #1)
From: Manuel Polik <manuel.polik@xxxxxxxxxxx>
Date: Wed, 28 Feb 2001 11:33:15 +0100
Hi Andrew!

some little improvements & suggestions:

- Nextlevel -
Replace:
        lda level
        and #%11111

        clc
        adc #1
        cmp #30
        beq Unchange            ; maxed out
        sta NL_temp
with:
        lda level
        and #%11111
	tax
	inx
        cpx #30
        beq Unchange            ; maxed out
        stx NL_temp
-- saves 1 byte --
****************************************************************
- Rearrange Owned -
Replace:
Owned   ldx CM_CubeIndex
        ldy CM_Direction

        sec                     ; fail
        rts
with:
Owned   sec                     ; fail
Owned2	ldx CM_CubeIndex
        ldy CM_Direction
        rts
-- gains nothing, see below --

- Rearrange end of CheckMove -
Replace:
        ldy CM_Direction
        ldx CM_CubeIndex
with:
	jsr Owned2
-- saves another byte! --
****************************************************************
I found something special more often in the kernel:
        bcs .MBDraw2            ; 2(3)

        nop                     ; 2
        nop                     ; 2
        sec                     ; 2
        bcs .skipMBDraw2        ; 3
It is of course intended for timing here, but:
        bcs .MBDraw2            ; 2(3)

        nop                     ; 2
        nop                     ; 2
	nop
        bcc .skipMBDraw2        ; 3
Might come in handy if you ever want to replace the NOPs here with
something more productive
****************************************************************
All of your AI routines

AIInit
AINormal 
AILock 
KillPlayer
CorpseInit
CorpseNormal
CorpseDeathwatch
LurkInit
LurkNormal
LurkHatch
FruitInit
FruitNormal
PointsInit
PointsNormal
ShifterInit
ShifterNormal
AITossOff
AIJump
AILand
TwoShoesNormal
HunterNormal

should just fit into one page, you should check that (You can force it
at least by just jumping out of the page in very large one's like
AILock). Now you can change your tables and deal with bytes instead of
words, saving you lot's of data _and_ code!
****************************************************************
You can gain quite a few bytes by rearranging your sprite data here &
there, for example:

Digit1  .byte %00001100         ;      **
        .byte %00001100         ;      **
        .byte %00001100         ;      **
        .byte %00001100         ;      **
        .byte %00001100         ;      **
        .byte %00101100         ;    * **
        .byte %00011100         ;     ***

Digit4  .byte %00001100         ;      **
        .byte %00001100         ;      **
        .byte %11111110         ;  *******
        .byte %10001100         ;  *   **
        .byte %01001100         ;   *  **
        .byte %00101100         ;    * **
        .byte %00011100         ;     ***
        .byte %00001100         ;      **

Another byte saved!
****************************************************************
BeginGame
Replace:
        lda #0
        ldx #2
ClScore sta PlayerScore,x               ; score = 0
        dex
        bpl ClScore
with:
lda #$00
sta playereScore
sta playrescore+1
sta playrescore+2

Another byte saved!
****************************************************************


Uh... Oh... feeling dizzy now
Hope it helps a bit (byte :-))

Greetings,
	Manuel

-
Archives (includes files) at http://www.biglist.com/lists/stella/archives/
Unsub & more at http://www.biglist.com/lists/stella/

Current Thread